This is an automated email from the ASF dual-hosted git repository. jhyde pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/calcite.git
commit f82028f4b983707bd9af3d9ba73820ef2431e971 Author: Julian Hyde <[email protected]> AuthorDate: Mon Feb 13 17:37:49 2023 -0800 TryThreadLocal values are now not-null by default --- core/src/main/java/org/apache/calcite/prepare/Prepare.java | 7 +++---- core/src/main/java/org/apache/calcite/util/TryThreadLocal.java | 8 +++++++- core/src/test/java/org/apache/calcite/test/JdbcTest.java | 4 ++-- core/src/test/java/org/apache/calcite/util/UtilTest.java | 3 ++- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/org/apache/calcite/prepare/Prepare.java b/core/src/main/java/org/apache/calcite/prepare/Prepare.java index 03c2dd07b6..f884f02ca7 100644 --- a/core/src/main/java/org/apache/calcite/prepare/Prepare.java +++ b/core/src/main/java/org/apache/calcite/prepare/Prepare.java @@ -100,7 +100,7 @@ public abstract class Prepare { protected @MonotonicNonNull RelDataType parameterRowType; // temporary. for testing. - public static final TryThreadLocal<@Nullable Boolean> THREAD_TRIM = + public static final TryThreadLocal<Boolean> THREAD_TRIM = TryThreadLocal.of(false); /** Temporary, until @@ -110,7 +110,7 @@ public abstract class Prepare { * <p>The default is false, meaning do not expand queries during sql-to-rel, * but a few tests override and set it to true. After CALCITE-1045 * is fixed, remove those overrides and use false everywhere. */ - public static final TryThreadLocal<@Nullable Boolean> THREAD_EXPAND = + public static final TryThreadLocal<Boolean> THREAD_EXPAND = TryThreadLocal.of(false); // temporary. for testing. @@ -119,8 +119,7 @@ public abstract class Prepare { protected Prepare(CalcitePrepare.Context context, CatalogReader catalogReader, Convention resultConvention) { - assert context != null; - this.context = context; + this.context = requireNonNull(context, "context"); this.catalogReader = catalogReader; this.resultConvention = resultConvention; } diff --git a/core/src/main/java/org/apache/calcite/util/TryThreadLocal.java b/core/src/main/java/org/apache/calcite/util/TryThreadLocal.java index ac58e2bcf3..9b5ee2024e 100644 --- a/core/src/main/java/org/apache/calcite/util/TryThreadLocal.java +++ b/core/src/main/java/org/apache/calcite/util/TryThreadLocal.java @@ -20,12 +20,14 @@ import org.checkerframework.checker.nullness.qual.Nullable; import java.util.function.Supplier; +import static org.apache.calcite.linq4j.Nullness.castNonNull; + /** * Thread-local variable that returns a handle that can be closed. * * @param <T> Value type */ -public class TryThreadLocal<@Nullable T> extends ThreadLocal<T> { +public class TryThreadLocal<T> extends ThreadLocal<@Nullable T> { private final T initialValue; /** Creates a TryThreadLocal. @@ -48,6 +50,10 @@ public class TryThreadLocal<@Nullable T> extends ThreadLocal<T> { return initialValue; } + @Override public T get() { + return castNonNull(super.get()); + } + /** Assigns the value as {@code value} for the current thread. * Returns a {@link Memo} which, when closed, will assign the value * back to the previous value. */ diff --git a/core/src/test/java/org/apache/calcite/test/JdbcTest.java b/core/src/test/java/org/apache/calcite/test/JdbcTest.java index d54a9224a0..5c4f1a2ace 100644 --- a/core/src/test/java/org/apache/calcite/test/JdbcTest.java +++ b/core/src/test/java/org/apache/calcite/test/JdbcTest.java @@ -8157,7 +8157,7 @@ public class JdbcTest { /** Factory for EMP and DEPT tables. */ public static class EmpDeptTableFactory implements TableFactory<Table> { - public static final TryThreadLocal<List<Employee>> THREAD_COLLECTION = + public static final TryThreadLocal<@Nullable List<Employee>> THREAD_COLLECTION = TryThreadLocal.of(null); public Table create( @@ -8253,7 +8253,7 @@ public class JdbcTest { /** Mock driver that a given {@link Handler}. */ public static class HandlerDriver extends org.apache.calcite.jdbc.Driver { - private static final TryThreadLocal<Handler> HANDLERS = + private static final TryThreadLocal<@Nullable Handler> HANDLERS = TryThreadLocal.of(null); public HandlerDriver() { diff --git a/core/src/test/java/org/apache/calcite/util/UtilTest.java b/core/src/test/java/org/apache/calcite/util/UtilTest.java index ffef53867f..399bf70399 100644 --- a/core/src/test/java/org/apache/calcite/util/UtilTest.java +++ b/core/src/test/java/org/apache/calcite/util/UtilTest.java @@ -2345,7 +2345,8 @@ class UtilTest { memo1.close(); assertThat(local1.get(), is("foo")); - final TryThreadLocal<String> local2 = TryThreadLocal.of(null); + final TryThreadLocal<@org.checkerframework.checker.nullness.qual.Nullable String> local2 = + TryThreadLocal.of(null); assertThat(local2.get(), nullValue()); TryThreadLocal.Memo memo2 = local2.push("a"); assertThat(local2.get(), is("a"));
