Annotate interface SqlDialect.Handler (added in [CALCITE-1841]) as "experimental" until we settle [CALCITE-1913]
Allow annotation Experimental to apply to constructors. Also fix a couple of issues from [CALCITE-1947]: * Long(long) constructor is deprecated in JDK 1.9; * java.sql.Types.TIME_WITH_TIMEZONE dnd TIMESTAMP_WITH_TIMEZONE don't exist until JDK 1.8. Project: http://git-wip-us.apache.org/repos/asf/calcite/repo Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/67071b6b Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/67071b6b Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/67071b6b Branch: refs/heads/master Commit: 67071b6b0ba52eeb953badfff39fa10d85b80bf5 Parents: 1f04d55 Author: Julian Hyde <[email protected]> Authored: Fri Sep 8 13:09:48 2017 -0700 Committer: Julian Hyde <[email protected]> Committed: Fri Sep 8 15:05:11 2017 -0700 ---------------------------------------------------------------------- core/src/main/java/org/apache/calcite/sql/SqlDialect.java | 6 +++++- .../main/java/org/apache/calcite/sql/type/SqlTypeFamily.java | 4 ++-- core/src/test/java/org/apache/calcite/test/RexProgramTest.java | 2 +- .../java/org/apache/calcite/linq4j/function/Experimental.java | 3 ++- 4 files changed, 10 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/calcite/blob/67071b6b/core/src/main/java/org/apache/calcite/sql/SqlDialect.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/sql/SqlDialect.java b/core/src/main/java/org/apache/calcite/sql/SqlDialect.java index 306ed6e..6bc25ca 100644 --- a/core/src/main/java/org/apache/calcite/sql/SqlDialect.java +++ b/core/src/main/java/org/apache/calcite/sql/SqlDialect.java @@ -18,6 +18,7 @@ package org.apache.calcite.sql; import org.apache.calcite.avatica.util.DateTimeUtils; import org.apache.calcite.config.NullCollation; +import org.apache.calcite.linq4j.function.Experimental; import org.apache.calcite.rel.RelFieldCollation; import org.apache.calcite.sql.dialect.HsqldbHandler; import org.apache.calcite.sql.dialect.MssqlHandler; @@ -133,7 +134,7 @@ public class SqlDialect { NullCollation.HIGH, DEFAULT_HANDLER); } - @Deprecated // to be removed before 2.0 + /** Creates a SqlDialect with the default handler. */ public SqlDialect(DatabaseProduct databaseProduct, String databaseProductName, String identifierQuoteString, NullCollation nullCollation) { this(databaseProduct, databaseProductName, identifierQuoteString, @@ -151,6 +152,7 @@ public class SqlDialect { * @param nullCollation Whether NULL values appear first or last * @param handler Handler for un-parsing */ + @Experimental public SqlDialect(DatabaseProduct databaseProduct, String databaseProductName, String identifierQuoteString, NullCollation nullCollation, Handler handler) { @@ -717,12 +719,14 @@ public class SqlDialect { * * <p>Instances are stateless and therefore immutable. */ + @Experimental public interface Handler { void unparseCall(SqlWriter writer, SqlCall call, int leftPrec, int rightPrec); } /** Base class for dialect handlers. */ + @Experimental public static class BaseHandler implements Handler { public void unparseCall(SqlWriter writer, SqlCall call, int leftPrec, int rightPrec) { http://git-wip-us.apache.org/repos/asf/calcite/blob/67071b6b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java index af1733b..5501316 100644 --- a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java +++ b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java @@ -99,9 +99,9 @@ public enum SqlTypeFamily implements RelDataTypeFamily { .put(Types.DATE, DATE) .put(Types.TIME, TIME) - .put(Types.TIME_WITH_TIMEZONE, TIME) + .put(ExtraSqlTypes.TIME_WITH_TIMEZONE, TIME) .put(Types.TIMESTAMP, TIMESTAMP) - .put(Types.TIMESTAMP_WITH_TIMEZONE, TIMESTAMP) + .put(ExtraSqlTypes.TIMESTAMP_WITH_TIMEZONE, TIMESTAMP) .put(Types.BOOLEAN, BOOLEAN) .put(ExtraSqlTypes.REF_CURSOR, CURSOR) http://git-wip-us.apache.org/repos/asf/calcite/blob/67071b6b/core/src/test/java/org/apache/calcite/test/RexProgramTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/test/RexProgramTest.java b/core/src/test/java/org/apache/calcite/test/RexProgramTest.java index ccecc98..f82a265 100644 --- a/core/src/test/java/org/apache/calcite/test/RexProgramTest.java +++ b/core/src/test/java/org/apache/calcite/test/RexProgramTest.java @@ -125,7 +125,7 @@ public class RexProgramTest { this.map = ImmutableMap.<String, Object>of( Variable.TIME_ZONE.camelName, TimeZone.getTimeZone("America/Los_Angeles"), - Variable.CURRENT_TIMESTAMP.camelName, new Long(1311120000000L)); + Variable.CURRENT_TIMESTAMP.camelName, 1311120000000L); } public SchemaPlus getRootSchema() { http://git-wip-us.apache.org/repos/asf/calcite/blob/67071b6b/linq4j/src/main/java/org/apache/calcite/linq4j/function/Experimental.java ---------------------------------------------------------------------- diff --git a/linq4j/src/main/java/org/apache/calcite/linq4j/function/Experimental.java b/linq4j/src/main/java/org/apache/calcite/linq4j/function/Experimental.java index 630384d..768096d 100644 --- a/linq4j/src/main/java/org/apache/calcite/linq4j/function/Experimental.java +++ b/linq4j/src/main/java/org/apache/calcite/linq4j/function/Experimental.java @@ -20,6 +20,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PACKAGE; @@ -33,7 +34,7 @@ import static java.lang.annotation.ElementType.TYPE; * <p>And yes, it is flagged experimental. We may move it elsewhere in future, * when we re-think the maturity model. */ -@Target({PACKAGE, TYPE, FIELD, METHOD }) +@Target({PACKAGE, TYPE, FIELD, METHOD, CONSTRUCTOR }) @Retention(RetentionPolicy.SOURCE) @Experimental public @interface Experimental {
