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"));

Reply via email to