diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystem.java b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystem.java index 5becafc2b74b..c9d6186747be 100644 --- a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystem.java +++ b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystem.java @@ -96,53 +96,29 @@ public interface RelDataTypeSystem { * * @deprecated Replaced by {@link #getMaxScale}(DECIMAL). * - *
From Calcite release 1.38 onwards, instead of calling this method, you - * should call {@code getMaxScale(DECIMAL)}. + *
Instead of calling this method, you should call + * {@code getMaxScale(DECIMAL)}. * - *
In Calcite release 1.38, if you wish to change the maximum - * scale of {@link SqlTypeName#DECIMAL} values, you should do two things: - * - *
In Calcite release 1.39, Calcite will cease calling this method, - * and will remove the override of the method in - * {@link RelDataTypeSystemImpl}. You should remove all calls to - * and overrides of this method. */ - @Deprecated // calcite will cease calling in 1.39, and removed before 2.0 + *
If you wish to change the maximum scale of {@link SqlTypeName#DECIMAL} + * values, override the {@link #getMaxScale(SqlTypeName)} method, + * changing its behavior for {@code DECIMAL}. */ + @Deprecated // to be removed before 2.0 default int getMaxNumericScale() { - return 19; + return getMaxScale(SqlTypeName.DECIMAL); } /** Returns the maximum precision of a NUMERIC or DECIMAL type. * Default value is 19. * - * @deprecated Replaced by {@link #getMaxScale}(DECIMAL). + * @deprecated Replaced by {@link #getMaxPrecision}(DECIMAL). * - *
From Calcite release 1.38 onwards, instead of calling this method, you - * should call {@code getMaxPrecision(DECIMAL)}. - * - *
In Calcite release 1.38, if you wish to change the maximum - * precision of {@link SqlTypeName#DECIMAL} values, you should do two things: - * - *
Instead of calling this method, you should call + * {@code getMaxPrecision(DECIMAL)}. * - *
In Calcite release 1.39, Calcite will cease calling this method, - * and will remove the override of the method in - * {@link RelDataTypeSystemImpl}. You should remove all calls to - * and overrides of this method. */ - @Deprecated // calcite will cease calling in 1.39, and removed before 2.0 + *
If you wish to change the maximum precision of {@link SqlTypeName#DECIMAL} + * values, override the {@link #getMaxPrecision(SqlTypeName)} method, + * changing its behavior for {@code DECIMAL}. */ + @Deprecated // to be removed before 2.0 default int getMaxNumericPrecision() { return getMaxPrecision(SqlTypeName.DECIMAL); } diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystemImpl.java b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystemImpl.java index b5eceedccefd..50d66f5e5f9c 100644 --- a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystemImpl.java +++ b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystemImpl.java @@ -46,8 +46,7 @@ public abstract class RelDataTypeSystemImpl implements RelDataTypeSystem { @Override public int getMaxScale(SqlTypeName typeName) { switch (typeName) { case DECIMAL: - // from 1.39, this will be 'return 19;' - return getMaxNumericScale(); + return 19; case INTERVAL_YEAR: case INTERVAL_YEAR_MONTH: case INTERVAL_MONTH: @@ -107,8 +106,7 @@ public abstract class RelDataTypeSystemImpl implements RelDataTypeSystem { case VARBINARY: return RelDataType.PRECISION_NOT_SPECIFIED; case DECIMAL: - // from 1.39, this will be 'return getMaxPrecision(typeName);' - return getMaxNumericPrecision(); + return getMaxPrecision(typeName); case INTERVAL_YEAR: case INTERVAL_YEAR_MONTH: case INTERVAL_MONTH: @@ -187,8 +185,7 @@ public abstract class RelDataTypeSystemImpl implements RelDataTypeSystem { @Override public int getMaxPrecision(SqlTypeName typeName) { switch (typeName) { case DECIMAL: - // from 1.39, this will be 'return 19;' - return getMaxNumericPrecision(); + return 19; case VARCHAR: case CHAR: return 65536; @@ -262,13 +259,13 @@ public abstract class RelDataTypeSystemImpl implements RelDataTypeSystem { } @SuppressWarnings("deprecation") - @Override public int getMaxNumericScale() { - return 19; + @Override public final int getMaxNumericScale() { + return getMaxScale(SqlTypeName.DECIMAL); } @SuppressWarnings("deprecation") - @Override public int getMaxNumericPrecision() { - return 19; + @Override public final int getMaxNumericPrecision() { + return getMaxPrecision(SqlTypeName.DECIMAL); } @Override public RoundingMode roundingMode() { diff --git a/core/src/main/java/org/apache/calcite/sql/dialect/ClickHouseSqlDialect.java b/core/src/main/java/org/apache/calcite/sql/dialect/ClickHouseSqlDialect.java index 884bb81261f8..f33e49bb51d8 100644 --- a/core/src/main/java/org/apache/calcite/sql/dialect/ClickHouseSqlDialect.java +++ b/core/src/main/java/org/apache/calcite/sql/dialect/ClickHouseSqlDialect.java @@ -69,10 +69,6 @@ public class ClickHouseSqlDialect extends SqlDialect { return super.getMaxScale(typeName); } } - - @Override public int getMaxNumericScale() { - return getMaxScale(SqlTypeName.DECIMAL); - } }; public static final SqlDialect.Context DEFAULT_CONTEXT = SqlDialect.EMPTY_CONTEXT diff --git a/core/src/main/java/org/apache/calcite/sql/dialect/DuckDBSqlDialect.java b/core/src/main/java/org/apache/calcite/sql/dialect/DuckDBSqlDialect.java index e7d3333ba3c0..75b4dcc65388 100644 --- a/core/src/main/java/org/apache/calcite/sql/dialect/DuckDBSqlDialect.java +++ b/core/src/main/java/org/apache/calcite/sql/dialect/DuckDBSqlDialect.java @@ -54,10 +54,6 @@ public class DuckDBSqlDialect extends SqlDialect { return super.getMaxScale(typeName); } } - - @Override public int getMaxNumericScale() { - return getMaxScale(SqlTypeName.DECIMAL); - } }; public static final SqlDialect.Context DEFAULT_CONTEXT = SqlDialect.EMPTY_CONTEXT diff --git a/core/src/main/java/org/apache/calcite/sql/dialect/PhoenixSqlDialect.java b/core/src/main/java/org/apache/calcite/sql/dialect/PhoenixSqlDialect.java index 85bc64a89e9d..c3cebb92ae42 100644 --- a/core/src/main/java/org/apache/calcite/sql/dialect/PhoenixSqlDialect.java +++ b/core/src/main/java/org/apache/calcite/sql/dialect/PhoenixSqlDialect.java @@ -55,10 +55,6 @@ public class PhoenixSqlDialect extends SqlDialect { return super.getMaxScale(typeName); } } - - @Override public int getMaxNumericScale() { - return getMaxScale(SqlTypeName.DECIMAL); - } }; public static final SqlDialect.Context DEFAULT_CONTEXT = SqlDialect.EMPTY_CONTEXT diff --git a/core/src/main/java/org/apache/calcite/sql/dialect/PrestoSqlDialect.java b/core/src/main/java/org/apache/calcite/sql/dialect/PrestoSqlDialect.java index cd1aa5f5ec33..1d8479aa5811 100644 --- a/core/src/main/java/org/apache/calcite/sql/dialect/PrestoSqlDialect.java +++ b/core/src/main/java/org/apache/calcite/sql/dialect/PrestoSqlDialect.java @@ -84,10 +84,6 @@ public class PrestoSqlDialect extends SqlDialect { return super.getMaxScale(typeName); } } - - @Override public int getMaxNumericScale() { - return getMaxScale(SqlTypeName.DECIMAL); - } }; public static final Context DEFAULT_CONTEXT = SqlDialect.EMPTY_CONTEXT diff --git a/core/src/main/java/org/apache/calcite/sql/dialect/RedshiftSqlDialect.java b/core/src/main/java/org/apache/calcite/sql/dialect/RedshiftSqlDialect.java index 0875826a253a..7caf2ab2be24 100644 --- a/core/src/main/java/org/apache/calcite/sql/dialect/RedshiftSqlDialect.java +++ b/core/src/main/java/org/apache/calcite/sql/dialect/RedshiftSqlDialect.java @@ -49,10 +49,6 @@ public class RedshiftSqlDialect extends SqlDialect { } } - @Override public int getMaxNumericPrecision() { - return getMaxPrecision(SqlTypeName.DECIMAL); - } - @Override public int getMaxScale(SqlTypeName typeName) { switch (typeName) { case DECIMAL: @@ -61,10 +57,6 @@ public class RedshiftSqlDialect extends SqlDialect { return super.getMaxScale(typeName); } } - - @Override public int getMaxNumericScale() { - return getMaxScale(SqlTypeName.DECIMAL); - } }; public static final SqlDialect.Context DEFAULT_CONTEXT = SqlDialect.EMPTY_CONTEXT diff --git a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java index 43e855592422..75cc30d27367 100644 --- a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java +++ b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java @@ -11380,10 +11380,6 @@ Sql withPostgresqlModifiedDecimalTypeSystem() { new PostgresqlSqlDialect(PostgresqlSqlDialect.DEFAULT_CONTEXT .withDataTypeSystem( new RelDataTypeSystemImpl() { - @Override public int getMaxNumericScale() { - return getMaxScale(SqlTypeName.DECIMAL); - } - @Override public int getMaxScale(SqlTypeName typeName) { switch (typeName) { case DECIMAL: @@ -11393,10 +11389,6 @@ Sql withPostgresqlModifiedDecimalTypeSystem() { } } - @Override public int getMaxNumericPrecision() { - return getMaxPrecision(SqlTypeName.DECIMAL); - } - @Override public int getMaxPrecision(SqlTypeName typeName) { switch (typeName) { case DECIMAL: diff --git a/core/src/test/java/org/apache/calcite/sql/type/RelDataTypeSystemTest.java b/core/src/test/java/org/apache/calcite/sql/type/RelDataTypeSystemTest.java index f21779f2c10a..2a96292eade8 100644 --- a/core/src/test/java/org/apache/calcite/sql/type/RelDataTypeSystemTest.java +++ b/core/src/test/java/org/apache/calcite/sql/type/RelDataTypeSystemTest.java @@ -127,15 +127,15 @@ private static final class CustomTypeSystem extends RelDataTypeSystemImpl { return type1; } - @Override public int getMaxNumericPrecision() { - return 38; - } - @Override public int getMaxPrecision(SqlTypeName typeName) { - if (typeName == SqlTypeName.TIMESTAMP) { + switch (typeName) { + case DECIMAL: + return 38; + case TIMESTAMP: return CUSTOM_MAX_TIMESTAMP_PRECISION; + default: + return super.getMaxPrecision(typeName); } - return super.getMaxPrecision(typeName); } } @@ -209,10 +209,6 @@ static class Fixture extends SqlTypeFixture { * Custom type system class that overrides the default max precision and max scale. */ final class CustomTypeSystem extends RelDataTypeSystemImpl { - @Override public int getMaxNumericPrecision() { - return getMaxPrecision(SqlTypeName.DECIMAL); - } - @Override public int getMaxPrecision(SqlTypeName typeName) { switch (typeName) { case DECIMAL: @@ -222,10 +218,6 @@ final class CustomTypeSystem extends RelDataTypeSystemImpl { } } - @Override public int getMaxNumericScale() { - return getMaxScale(SqlTypeName.DECIMAL); - } - @Override public int getMaxScale(SqlTypeName typeName) { switch (typeName) { case DECIMAL: diff --git a/core/src/test/java/org/apache/calcite/tools/FrameworksTest.java b/core/src/test/java/org/apache/calcite/tools/FrameworksTest.java index ed93b27c3da9..b413cc8b0125 100644 --- a/core/src/test/java/org/apache/calcite/tools/FrameworksTest.java +++ b/core/src/test/java/org/apache/calcite/tools/FrameworksTest.java @@ -530,11 +530,6 @@ public static class HiveLikeTypeSystem extends RelDataTypeSystemImpl { private HiveLikeTypeSystem() {} - @Override public int getMaxNumericPrecision() { - assert super.getMaxNumericPrecision() == 19; - return getMaxPrecision(SqlTypeName.DECIMAL); - } - @Override public int getMaxPrecision(SqlTypeName typeName) { switch (typeName) { case DECIMAL: @@ -550,11 +545,6 @@ private HiveLikeTypeSystem() {} public static class HiveLikeTypeSystem2 extends RelDataTypeSystemImpl { public HiveLikeTypeSystem2() {} - @Override public int getMaxNumericPrecision() { - assert super.getMaxNumericPrecision() == 19; - return getMaxPrecision(SqlTypeName.DECIMAL); - } - @Override public int getMaxPrecision(SqlTypeName typeName) { switch (typeName) { case DECIMAL: