From 0a7c7a62b58290c0ef6d9d4e5260047be873fe86 Mon Sep 17 00:00:00 2001 From: "Mateusz \"Serafin\" Gajewski" Date: Fri, 11 Oct 2024 14:45:25 +0200 Subject: [PATCH 1/3] Remove Nonnull annotations --- .../src/main/java/io/trino/client/JsonResultRows.java | 5 ++--- .../src/main/java/io/trino/client/RawQueryData.java | 3 +-- .../src/main/java/io/trino/client/ResultRows.java | 4 +--- .../src/main/java/io/trino/client/StatementClient.java | 3 +-- .../src/main/java/io/trino/client/StatementClientV1.java | 2 -- .../src/test/java/io/trino/jdbc/TestAsyncResultIterator.java | 2 -- .../src/main/java/io/trino/sql/planner/LogicalPlanner.java | 2 -- .../src/main/java/io/trino/util/FastutilSetHelper.java | 2 -- .../src/main/java/io/trino/orc/reader/MapColumnReader.java | 3 --- 9 files changed, 5 insertions(+), 21 deletions(-) diff --git a/client/trino-client/src/main/java/io/trino/client/JsonResultRows.java b/client/trino-client/src/main/java/io/trino/client/JsonResultRows.java index 32572ca3f6adb..5e0834c8ae663 100644 --- a/client/trino-client/src/main/java/io/trino/client/JsonResultRows.java +++ b/client/trino-client/src/main/java/io/trino/client/JsonResultRows.java @@ -20,7 +20,6 @@ import com.google.common.collect.AbstractIterator; import com.google.common.io.Closer; import io.trino.client.JsonDecodingUtils.TypeDecoder; -import jakarta.annotation.Nonnull; import org.gaul.modernizer_maven_annotations.SuppressModernizer; import java.io.IOException; @@ -141,7 +140,7 @@ public static ResultRows forJsonParser(JsonParser parser, List columns) { return new ResultRows() { @Override - public @Nonnull Iterator> iterator() + public Iterator> iterator() { try { return new RowWiseIterator(parser, createTypeDecoders(columns)); @@ -157,7 +156,7 @@ public static ResultRows forInputStream(InputStream stream, TypeDecoder[] decode { return new ResultRows() { @Override - public @Nonnull Iterator> iterator() + public Iterator> iterator() { try { return new RowWiseIterator(stream, decoders); diff --git a/client/trino-client/src/main/java/io/trino/client/RawQueryData.java b/client/trino-client/src/main/java/io/trino/client/RawQueryData.java index 5f2aebd3d6356..d090102a515c6 100644 --- a/client/trino-client/src/main/java/io/trino/client/RawQueryData.java +++ b/client/trino-client/src/main/java/io/trino/client/RawQueryData.java @@ -13,7 +13,6 @@ */ package io.trino.client; -import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import java.util.List; @@ -35,7 +34,7 @@ private RawQueryData(Iterable> values) this.iterable = values == null ? null : unmodifiableIterable(values); } - public @Nonnull Iterable> getIterable() + public Iterable> getIterable() { checkState(iterable != null, "cannot return a null iterable"); return iterable; diff --git a/client/trino-client/src/main/java/io/trino/client/ResultRows.java b/client/trino-client/src/main/java/io/trino/client/ResultRows.java index 213b9c5ac46fa..9a73644f72b8e 100644 --- a/client/trino-client/src/main/java/io/trino/client/ResultRows.java +++ b/client/trino-client/src/main/java/io/trino/client/ResultRows.java @@ -13,8 +13,6 @@ */ package io.trino.client; -import jakarta.annotation.Nonnull; - import java.util.Iterator; import java.util.List; @@ -36,7 +34,7 @@ public boolean isNull() } @Override - public @Nonnull Iterator> iterator() + public Iterator> iterator() { return emptyIterator(); } diff --git a/client/trino-client/src/main/java/io/trino/client/StatementClient.java b/client/trino-client/src/main/java/io/trino/client/StatementClient.java index 03adbbe27cfc7..816196f9f0b1c 100644 --- a/client/trino-client/src/main/java/io/trino/client/StatementClient.java +++ b/client/trino-client/src/main/java/io/trino/client/StatementClient.java @@ -13,7 +13,6 @@ */ package io.trino.client; -import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import java.io.Closeable; @@ -45,7 +44,7 @@ public interface StatementClient // For backward compatibility and migration path QueryData currentData(); - @Nonnull ResultRows currentRows(); + ResultRows currentRows(); QueryStatusInfo finalStatusInfo(); diff --git a/client/trino-client/src/main/java/io/trino/client/StatementClientV1.java b/client/trino-client/src/main/java/io/trino/client/StatementClientV1.java index c5e8972e5b66a..a1b73e5cb7392 100644 --- a/client/trino-client/src/main/java/io/trino/client/StatementClientV1.java +++ b/client/trino-client/src/main/java/io/trino/client/StatementClientV1.java @@ -22,7 +22,6 @@ import com.google.errorprone.annotations.ThreadSafe; import io.airlift.units.Duration; import io.trino.client.spooling.SegmentLoader; -import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import okhttp3.Call; import okhttp3.Headers; @@ -255,7 +254,6 @@ public QueryStatusInfo currentStatusInfo() } @Override - @Nonnull public ResultRows currentRows() { checkState(isRunning(), "current position is not valid (cursor past end)"); diff --git a/client/trino-jdbc/src/test/java/io/trino/jdbc/TestAsyncResultIterator.java b/client/trino-jdbc/src/test/java/io/trino/jdbc/TestAsyncResultIterator.java index 179ff13dc584b..dd41950adfd63 100644 --- a/client/trino-jdbc/src/test/java/io/trino/jdbc/TestAsyncResultIterator.java +++ b/client/trino-jdbc/src/test/java/io/trino/jdbc/TestAsyncResultIterator.java @@ -24,7 +24,6 @@ import io.trino.client.StatementClient; import io.trino.client.StatementStats; import io.trino.client.Warning; -import jakarta.annotation.Nonnull; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; @@ -174,7 +173,6 @@ public QueryData currentData() } @Override - @Nonnull public ResultRows currentRows() { return queryData.get(); diff --git a/core/trino-main/src/main/java/io/trino/sql/planner/LogicalPlanner.java b/core/trino-main/src/main/java/io/trino/sql/planner/LogicalPlanner.java index fd108f522d4ae..d46fc3883d394 100644 --- a/core/trino-main/src/main/java/io/trino/sql/planner/LogicalPlanner.java +++ b/core/trino-main/src/main/java/io/trino/sql/planner/LogicalPlanner.java @@ -110,7 +110,6 @@ import io.trino.tracing.ScopedSpan; import io.trino.tracing.TrinoAttributes; import io.trino.type.UnknownType; -import jakarta.annotation.Nonnull; import java.util.AbstractMap.SimpleImmutableEntry; import java.util.ArrayList; @@ -301,7 +300,6 @@ public Plan plan(Analysis analysis, Stage stage, boolean collectPlanStatistics) return new Plan(root, statsAndCosts); } - @Nonnull private PlanNode runOptimizer(PlanNode root, TableStatsProvider tableStatsProvider, PlanOptimizer optimizer) { PlanNode result; diff --git a/core/trino-main/src/main/java/io/trino/util/FastutilSetHelper.java b/core/trino-main/src/main/java/io/trino/util/FastutilSetHelper.java index c2f5cbe356e46..87f213c5ca537 100644 --- a/core/trino-main/src/main/java/io/trino/util/FastutilSetHelper.java +++ b/core/trino-main/src/main/java/io/trino/util/FastutilSetHelper.java @@ -37,7 +37,6 @@ import it.unimi.dsi.fastutil.longs.LongOpenCustomHashSet; import it.unimi.dsi.fastutil.longs.LongOpenHashSet; import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet; -import jakarta.annotation.Nonnull; import java.lang.invoke.MethodHandle; import java.math.BigInteger; @@ -159,7 +158,6 @@ public boolean contains(long value) } @Override - @Nonnull public LongIterator iterator() { PrimitiveIterator.OfInt iterator = bitmask.stream().iterator(); diff --git a/lib/trino-orc/src/main/java/io/trino/orc/reader/MapColumnReader.java b/lib/trino-orc/src/main/java/io/trino/orc/reader/MapColumnReader.java index e9663a3bd8dd1..33fc86bbd684c 100644 --- a/lib/trino-orc/src/main/java/io/trino/orc/reader/MapColumnReader.java +++ b/lib/trino-orc/src/main/java/io/trino/orc/reader/MapColumnReader.java @@ -29,7 +29,6 @@ import io.trino.spi.type.MapType; import io.trino.spi.type.Type; import it.unimi.dsi.fastutil.ints.IntArrayList; -import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import java.io.IOException; @@ -65,12 +64,10 @@ public class MapColumnReader private int readOffset; private int nextBatchSize; - @Nonnull private InputStreamSource presentStreamSource = missingStreamSource(BooleanInputStream.class); @Nullable private BooleanInputStream presentStream; - @Nonnull private InputStreamSource lengthStreamSource = missingStreamSource(LongInputStream.class); @Nullable private LongInputStream lengthStream; From b6cfd21bb61c358289c60c04bc30dc72bbf7fa54 Mon Sep 17 00:00:00 2001 From: "Mateusz \"Serafin\" Gajewski" Date: Fri, 11 Oct 2024 14:49:48 +0200 Subject: [PATCH 2/3] Ban nullable annotations --- pom.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pom.xml b/pom.xml index 849bb7efef1ea..750b79161a100 100644 --- a/pom.xml +++ b/pom.xml @@ -2534,6 +2534,20 @@ org.testng.asserts.** + + Trino assumes non-nullness by default, otherwise it's marked as @Nullable + + jakarta.annotation.Nonnull + org.jetbrains.annotations.NotNull + + + io.trino.cache.ElementTypesAreNonnullByDefault + + jakarta.annotation.Nonnull + + Extending Guava's API + + com.google.api.client.util.Preconditions From 58255a4780a9719cdc46d1c06cbabf177dab2607 Mon Sep 17 00:00:00 2001 From: "Mateusz \"Serafin\" Gajewski" Date: Fri, 11 Oct 2024 16:38:34 +0200 Subject: [PATCH 3/3] Simplify returned value --- .../java/io/trino/client/JsonResultRows.java | 33 +++++++------------ 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/client/trino-client/src/main/java/io/trino/client/JsonResultRows.java b/client/trino-client/src/main/java/io/trino/client/JsonResultRows.java index 5e0834c8ae663..d61bfe19f86f9 100644 --- a/client/trino-client/src/main/java/io/trino/client/JsonResultRows.java +++ b/client/trino-client/src/main/java/io/trino/client/JsonResultRows.java @@ -26,7 +26,6 @@ import java.io.InputStream; import java.io.UncheckedIOException; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import static com.fasterxml.jackson.core.JsonParser.Feature.AUTO_CLOSE_SOURCE; @@ -138,32 +137,24 @@ private void close() public static ResultRows forJsonParser(JsonParser parser, List columns) { - return new ResultRows() { - @Override - public Iterator> iterator() - { - try { - return new RowWiseIterator(parser, createTypeDecoders(columns)); - } - catch (IOException e) { - throw new UncheckedIOException(e); - } + return () -> { + try { + return new RowWiseIterator(parser, createTypeDecoders(columns)); + } + catch (IOException e) { + throw new UncheckedIOException(e); } }; } public static ResultRows forInputStream(InputStream stream, TypeDecoder[] decoders) { - return new ResultRows() { - @Override - public Iterator> iterator() - { - try { - return new RowWiseIterator(stream, decoders); - } - catch (IOException e) { - throw new UncheckedIOException(e); - } + return () -> { + try { + return new RowWiseIterator(stream, decoders); + } + catch (IOException e) { + throw new UncheckedIOException(e); } }; }