This is an automated email from the ASF dual-hosted git repository.
danny0405 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/master by this push:
new 16b22b1 [CALCITE-4240] SqlTypeUtil#getMaxPrecisionScaleDecimal
returns a decimal that with same precision and scale (Jiatao Tao)
16b22b1 is described below
commit 16b22b105dfcb3d95cc7af8eb54105f231d18cc9
Author: Jiatao Tao <[email protected]>
AuthorDate: Mon Sep 21 11:07:54 2020 +0800
[CALCITE-4240] SqlTypeUtil#getMaxPrecisionScaleDecimal returns a decimal
that with same precision and scale (Jiatao Tao)
The SqlTypeUtil#getMaxPrecisionScaleDecimal now returns decimal type with
max
precision and scale half of that.
Previously it returns DECIMAL(19, 19) which is invalid.
close apache/calcite#2161
---
.../org/apache/calcite/sql/type/SqlTypeUtil.java | 8 ++---
.../calcite/sql/test/SqlOperatorBaseTest.java | 34 +++++++++++-----------
.../apache/calcite/sql/type/SqlTypeUtilTest.java | 6 ++++
.../org/apache/calcite/test/SqlValidatorTest.java | 2 +-
.../org/apache/calcite/test/TypeCoercionTest.java | 12 ++++----
.../apache/calcite/test/SqlToRelConverterTest.xml | 2 +-
.../org/apache/calcite/test/TopDownOptTest.xml | 8 ++---
.../org/apache/calcite/test/DruidAdapter2IT.java | 7 ++---
.../org/apache/calcite/test/DruidAdapterIT.java | 7 ++---
9 files changed, 45 insertions(+), 41 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
index 825e9e2..f1cd62b 100644
--- a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
+++ b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
@@ -1702,13 +1702,13 @@ public abstract class SqlTypeUtil {
|| SqlTypeUtil.isBoolean(type);
}
- /** Returns a DECIMAL type with the maximum precision/scale for the current
+ /** Returns a DECIMAL type with the maximum precision for the current
* type system. */
public static RelDataType getMaxPrecisionScaleDecimal(RelDataTypeFactory
factory) {
int maxPrecision = factory.getTypeSystem().getMaxNumericPrecision();
- int maxScale = factory.getTypeSystem().getMaxNumericScale();
-
- return factory.createSqlType(SqlTypeName.DECIMAL, maxPrecision, maxScale);
+ // scale should not greater than precision.
+ int scale = maxPrecision / 2;
+ return factory.createSqlType(SqlTypeName.DECIMAL, maxPrecision, scale);
}
/**
diff --git
a/core/src/test/java/org/apache/calcite/sql/test/SqlOperatorBaseTest.java
b/core/src/test/java/org/apache/calcite/sql/test/SqlOperatorBaseTest.java
index ebf6e5c..ccf4e0c 100644
--- a/core/src/test/java/org/apache/calcite/sql/test/SqlOperatorBaseTest.java
+++ b/core/src/test/java/org/apache/calcite/sql/test/SqlOperatorBaseTest.java
@@ -3759,7 +3759,7 @@ public abstract class SqlOperatorBaseTest {
"'a' + ^- 'b'^ + 'c'",
"(?s)Cannot apply '-' to arguments of type '-<CHAR\\(1\\)>'.*",
false);
- tester.checkType("'a' + - 'b' + 'c'", "DECIMAL(19, 19) NOT NULL");
+ tester.checkType("'a' + - 'b' + 'c'", "DECIMAL(19, 9) NOT NULL");
tester.checkScalarExact("-1", "-1");
tester.checkScalarExact(
"-1.23",
@@ -5990,7 +5990,7 @@ public abstract class SqlOperatorBaseTest {
"^round('abc', 'def')^",
"Cannot apply 'ROUND' to arguments of type 'ROUND\\(<CHAR\\(3\\)>,
<CHAR\\(3\\)>\\)'\\. Supported form\\(s\\): 'ROUND\\(<NUMERIC>, <INTEGER>\\)'",
false);
- tester.checkType("round('abc', 'def')", "DECIMAL(19, 19) NOT NULL");
+ tester.checkType("round('abc', 'def')", "DECIMAL(19, 9) NOT NULL");
tester.checkScalar(
"round(42, -1)",
40,
@@ -6032,7 +6032,7 @@ public abstract class SqlOperatorBaseTest {
"^sign('abc')^",
"Cannot apply 'SIGN' to arguments of type 'SIGN\\(<CHAR\\(3\\)>\\)'\\.
Supported form\\(s\\): 'SIGN\\(<NUMERIC>\\)'",
false);
- tester.checkType("sign('abc')", "DECIMAL(19, 19) NOT NULL");
+ tester.checkType("sign('abc')", "DECIMAL(19, 9) NOT NULL");
tester.checkScalar(
"sign(1)",
1,
@@ -6162,7 +6162,7 @@ public abstract class SqlOperatorBaseTest {
"^truncate('abc', 'def')^",
"Cannot apply 'TRUNCATE' to arguments of type
'TRUNCATE\\(<CHAR\\(3\\)>, <CHAR\\(3\\)>\\)'\\. Supported form\\(s\\):
'TRUNCATE\\(<NUMERIC>, <INTEGER>\\)'",
false);
- tester.checkType("truncate('abc', 'def')", "DECIMAL(19, 19) NOT NULL");
+ tester.checkType("truncate('abc', 'def')", "DECIMAL(19, 9) NOT NULL");
tester.checkScalar(
"truncate(42, -1)",
40,
@@ -8520,7 +8520,7 @@ public abstract class SqlOperatorBaseTest {
"^sum('name')^",
"(?s)Cannot apply 'SUM' to arguments of type
'SUM\\(<CHAR\\(4\\)>\\)'\\. Supported form\\(s\\): 'SUM\\(<NUMERIC>\\)'.*",
false);
- tester.checkType("sum('name')", "DECIMAL(19, 19)");
+ tester.checkType("sum('name')", "DECIMAL(19, 9)");
checkAggType(tester, "sum(1)", "INTEGER NOT NULL");
checkAggType(tester, "sum(1.2)", "DECIMAL(19, 1) NOT NULL");
checkAggType(tester, "sum(DISTINCT 1.5)", "DECIMAL(19, 1) NOT NULL");
@@ -8536,7 +8536,7 @@ public abstract class SqlOperatorBaseTest {
"^sum(cast(null as varchar(2)))^",
"(?s)Cannot apply 'SUM' to arguments of type
'SUM\\(<VARCHAR\\(2\\)>\\)'\\. Supported form\\(s\\): 'SUM\\(<NUMERIC>\\)'.*",
false);
- tester.checkType("sum(cast(null as varchar(2)))", "DECIMAL(19, 19)");
+ tester.checkType("sum(cast(null as varchar(2)))", "DECIMAL(19, 9)");
final String[] values = {"0", "CAST(null AS INTEGER)", "2", "2"};
tester.checkAgg("sum(x)", values, 4, (double) 0);
Object result1 = -3;
@@ -8572,7 +8572,7 @@ public abstract class SqlOperatorBaseTest {
"^avg(cast(null as varchar(2)))^",
"(?s)Cannot apply 'AVG' to arguments of type
'AVG\\(<VARCHAR\\(2\\)>\\)'\\. Supported form\\(s\\): 'AVG\\(<NUMERIC>\\)'.*",
false);
- tester.checkType("avg(cast(null as varchar(2)))", "DECIMAL(19, 19)");
+ tester.checkType("avg(cast(null as varchar(2)))", "DECIMAL(19, 9)");
tester.checkType("AVG(CAST(NULL AS INTEGER))", "INTEGER");
checkAggType(tester, "AVG(DISTINCT 1.5)", "DECIMAL(2, 1) NOT NULL");
checkAggType(tester, "avg(1)", "INTEGER NOT NULL");
@@ -8597,7 +8597,7 @@ public abstract class SqlOperatorBaseTest {
"(?s)Cannot apply 'COVAR_POP' to arguments of type
'COVAR_POP\\(<VARCHAR\\(2\\)>, <VARCHAR\\(2\\)>\\)'\\. Supported form\\(s\\):
'COVAR_POP\\(<NUMERIC>, <NUMERIC>\\)'.*",
false);
tester.checkType("covar_pop(cast(null as varchar(2)),cast(null as
varchar(2)))",
- "DECIMAL(19, 19)");
+ "DECIMAL(19, 9)");
tester.checkType("covar_pop(CAST(NULL AS INTEGER),CAST(NULL AS INTEGER))",
"INTEGER");
checkAggType(tester, "covar_pop(1.5, 2.5)", "DECIMAL(2, 1) NOT NULL");
@@ -8619,7 +8619,7 @@ public abstract class SqlOperatorBaseTest {
"(?s)Cannot apply 'COVAR_SAMP' to arguments of type
'COVAR_SAMP\\(<VARCHAR\\(2\\)>, <VARCHAR\\(2\\)>\\)'\\. Supported form\\(s\\):
'COVAR_SAMP\\(<NUMERIC>, <NUMERIC>\\)'.*",
false);
tester.checkType("covar_samp(cast(null as varchar(2)),cast(null as
varchar(2)))",
- "DECIMAL(19, 19)");
+ "DECIMAL(19, 9)");
tester.checkType("covar_samp(CAST(NULL AS INTEGER),CAST(NULL AS INTEGER))",
"INTEGER");
checkAggType(tester, "covar_samp(1.5, 2.5)", "DECIMAL(2, 1) NOT NULL");
@@ -8641,7 +8641,7 @@ public abstract class SqlOperatorBaseTest {
"(?s)Cannot apply 'REGR_SXX' to arguments of type
'REGR_SXX\\(<VARCHAR\\(2\\)>, <VARCHAR\\(2\\)>\\)'\\. Supported form\\(s\\):
'REGR_SXX\\(<NUMERIC>, <NUMERIC>\\)'.*",
false);
tester.checkType("regr_sxx(cast(null as varchar(2)), cast(null as
varchar(2)))",
- "DECIMAL(19, 19)");
+ "DECIMAL(19, 9)");
tester.checkType("regr_sxx(CAST(NULL AS INTEGER), CAST(NULL AS INTEGER))",
"INTEGER");
checkAggType(tester, "regr_sxx(1.5, 2.5)", "DECIMAL(2, 1) NOT NULL");
@@ -8663,7 +8663,7 @@ public abstract class SqlOperatorBaseTest {
"(?s)Cannot apply 'REGR_SYY' to arguments of type
'REGR_SYY\\(<VARCHAR\\(2\\)>, <VARCHAR\\(2\\)>\\)'\\. Supported form\\(s\\):
'REGR_SYY\\(<NUMERIC>, <NUMERIC>\\)'.*",
false);
tester.checkType("regr_syy(cast(null as varchar(2)), cast(null as
varchar(2)))",
- "DECIMAL(19, 19)");
+ "DECIMAL(19, 9)");
tester.checkType("regr_syy(CAST(NULL AS INTEGER), CAST(NULL AS INTEGER))",
"INTEGER");
checkAggType(tester, "regr_syy(1.5, 2.5)", "DECIMAL(2, 1) NOT NULL");
@@ -8680,7 +8680,7 @@ public abstract class SqlOperatorBaseTest {
strictTester.checkFails("^stddev_pop(cast(null as varchar(2)))^",
"(?s)Cannot apply 'STDDEV_POP' to arguments of type
'STDDEV_POP\\(<VARCHAR\\(2\\)>\\)'\\. Supported form\\(s\\):
'STDDEV_POP\\(<NUMERIC>\\)'.*",
false);
- tester.checkType("stddev_pop(cast(null as varchar(2)))", "DECIMAL(19,
19)");
+ tester.checkType("stddev_pop(cast(null as varchar(2)))", "DECIMAL(19, 9)");
tester.checkType("stddev_pop(CAST(NULL AS INTEGER))", "INTEGER");
checkAggType(tester, "stddev_pop(DISTINCT 1.5)", "DECIMAL(2, 1) NOT NULL");
final String[] values = {"0", "CAST(null AS FLOAT)", "3", "3"};
@@ -8709,7 +8709,7 @@ public abstract class SqlOperatorBaseTest {
"^stddev_samp(cast(null as varchar(2)))^",
"(?s)Cannot apply 'STDDEV_SAMP' to arguments of type
'STDDEV_SAMP\\(<VARCHAR\\(2\\)>\\)'\\. Supported form\\(s\\):
'STDDEV_SAMP\\(<NUMERIC>\\)'.*",
false);
- tester.checkType("stddev_samp(cast(null as varchar(2)))", "DECIMAL(19,
19)");
+ tester.checkType("stddev_samp(cast(null as varchar(2)))", "DECIMAL(19,
9)");
tester.checkType("stddev_samp(CAST(NULL AS INTEGER))", "INTEGER");
checkAggType(tester, "stddev_samp(DISTINCT 1.5)", "DECIMAL(2, 1) NOT
NULL");
final String[] values = {"0", "CAST(null AS FLOAT)", "3", "3"};
@@ -8750,7 +8750,7 @@ public abstract class SqlOperatorBaseTest {
"^stddev(cast(null as varchar(2)))^",
"(?s)Cannot apply 'STDDEV' to arguments of type
'STDDEV\\(<VARCHAR\\(2\\)>\\)'\\. Supported form\\(s\\):
'STDDEV\\(<NUMERIC>\\)'.*",
false);
- tester.checkType("stddev(cast(null as varchar(2)))", "DECIMAL(19, 19)");
+ tester.checkType("stddev(cast(null as varchar(2)))", "DECIMAL(19, 9)");
tester.checkType("stddev(CAST(NULL AS INTEGER))", "INTEGER");
checkAggType(tester, "stddev(DISTINCT 1.5)", "DECIMAL(2, 1) NOT NULL");
final String[] values = {"0", "CAST(null AS FLOAT)", "3", "3"};
@@ -8778,7 +8778,7 @@ public abstract class SqlOperatorBaseTest {
"^var_pop(cast(null as varchar(2)))^",
"(?s)Cannot apply 'VAR_POP' to arguments of type
'VAR_POP\\(<VARCHAR\\(2\\)>\\)'\\. Supported form\\(s\\):
'VAR_POP\\(<NUMERIC>\\)'.*",
false);
- tester.checkType("var_pop(cast(null as varchar(2)))", "DECIMAL(19, 19)");
+ tester.checkType("var_pop(cast(null as varchar(2)))", "DECIMAL(19, 9)");
tester.checkType("var_pop(CAST(NULL AS INTEGER))", "INTEGER");
checkAggType(tester, "var_pop(DISTINCT 1.5)", "DECIMAL(2, 1) NOT NULL");
final String[] values = {"0", "CAST(null AS FLOAT)", "3", "3"};
@@ -8824,7 +8824,7 @@ public abstract class SqlOperatorBaseTest {
"^var_samp(cast(null as varchar(2)))^",
"(?s)Cannot apply 'VAR_SAMP' to arguments of type
'VAR_SAMP\\(<VARCHAR\\(2\\)>\\)'\\. Supported form\\(s\\):
'VAR_SAMP\\(<NUMERIC>\\)'.*",
false);
- tester.checkType("var_samp(cast(null as varchar(2)))", "DECIMAL(19, 19)");
+ tester.checkType("var_samp(cast(null as varchar(2)))", "DECIMAL(19, 9)");
tester.checkType("var_samp(CAST(NULL AS INTEGER))", "INTEGER");
checkAggType(tester, "var_samp(DISTINCT 1.5)", "DECIMAL(2, 1) NOT NULL");
final String[] values = {"0", "CAST(null AS FLOAT)", "3", "3"};
@@ -8868,7 +8868,7 @@ public abstract class SqlOperatorBaseTest {
"^variance(cast(null as varchar(2)))^",
"(?s)Cannot apply 'VARIANCE' to arguments of type
'VARIANCE\\(<VARCHAR\\(2\\)>\\)'\\. Supported form\\(s\\):
'VARIANCE\\(<NUMERIC>\\)'.*",
false);
- tester.checkType("variance(cast(null as varchar(2)))", "DECIMAL(19, 19)");
+ tester.checkType("variance(cast(null as varchar(2)))", "DECIMAL(19, 9)");
tester.checkType("variance(CAST(NULL AS INTEGER))", "INTEGER");
checkAggType(tester, "variance(DISTINCT 1.5)", "DECIMAL(2, 1) NOT NULL");
final String[] values = {"0", "CAST(null AS FLOAT)", "3", "3"};
diff --git
a/core/src/test/java/org/apache/calcite/sql/type/SqlTypeUtilTest.java
b/core/src/test/java/org/apache/calcite/sql/type/SqlTypeUtilTest.java
index 6e2ade3..06de5ec 100644
--- a/core/src/test/java/org/apache/calcite/sql/type/SqlTypeUtilTest.java
+++ b/core/src/test/java/org/apache/calcite/sql/type/SqlTypeUtilTest.java
@@ -184,6 +184,12 @@ class SqlTypeUtilTest {
assertThat(fieldTypeNames, is(Arrays.asList("INTEGER", "INTEGER")));
}
+ @Test public void testGetMaxPrecisionScaleDecimal() {
+ RelDataType decimal =
SqlTypeUtil.getMaxPrecisionScaleDecimal(f.typeFactory);
+ assertThat(decimal, is(f.typeFactory.createSqlType(SqlTypeName.DECIMAL,
19, 9)));
+ }
+
+
private RelDataType struct(RelDataType...relDataTypes) {
final RelDataTypeFactory.Builder builder = f.typeFactory.builder();
for (int i = 0; i < relDataTypes.length; i++) {
diff --git a/core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java
b/core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java
index 70c78f4..793120b 100644
--- a/core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java
+++ b/core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java
@@ -5635,7 +5635,7 @@ public class SqlValidatorTest extends
SqlValidatorTestCase {
.withTypeCoercion(false)
.fails("(?s)Cannot apply 'SUM' to arguments of type
'SUM\\(<VARCHAR\\(20\\)>\\)'\\. .*");
sql("select sum(ename), deptno from emp group by deptno")
- .type("RecordType(DECIMAL(19, 19) NOT NULL EXPR$0, INTEGER NOT NULL
DEPTNO) NOT NULL");
+ .type("RecordType(DECIMAL(19, 9) NOT NULL EXPR$0, INTEGER NOT NULL
DEPTNO) NOT NULL");
}
@Test void testSumTooManyArgs() {
diff --git a/core/src/test/java/org/apache/calcite/test/TypeCoercionTest.java
b/core/src/test/java/org/apache/calcite/test/TypeCoercionTest.java
index d70a5dc..9fff8c9 100644
--- a/core/src/test/java/org/apache/calcite/test/TypeCoercionTest.java
+++ b/core/src/test/java/org/apache/calcite/test/TypeCoercionTest.java
@@ -520,7 +520,7 @@ class TypeCoercionTest extends SqlValidatorTestCase {
+ "INTEGER NOT NULL EXPR$1, "
+ "INTEGER NOT NULL EXPR$2, "
+ "INTEGER NOT NULL EXPR$3, "
- + "DECIMAL(19, 19) "
+ + "DECIMAL(19, 9) "
+ "NOT NULL EXPR$4) NOT NULL");
expr("select abs(t1_varchar20) from t1").ok();
expr("select sum(t1_varchar20) from t1").ok();
@@ -545,16 +545,16 @@ class TypeCoercionTest extends SqlValidatorTestCase {
expr("'12.3'/cast(5 as double)")
.columnType("DOUBLE NOT NULL");
expr("'12.3'/5.1")
- .columnType("DECIMAL(19, 18) NOT NULL");
+ .columnType("DECIMAL(19, 8) NOT NULL");
expr("12.3/'5.1'")
- .columnType("DECIMAL(19, 0) NOT NULL");
+ .columnType("DECIMAL(19, 8) NOT NULL");
// test binary arithmetic with two strings.
expr("'12.3' + '5'")
- .columnType("DECIMAL(19, 19) NOT NULL");
+ .columnType("DECIMAL(19, 9) NOT NULL");
expr("'12.3' - '5'")
- .columnType("DECIMAL(19, 19) NOT NULL");
+ .columnType("DECIMAL(19, 9) NOT NULL");
expr("'12.3' * '5'")
- .columnType("DECIMAL(19, 19) NOT NULL");
+ .columnType("DECIMAL(19, 18) NOT NULL");
expr("'12.3' / '5'")
.columnType("DECIMAL(19, 0) NOT NULL");
}
diff --git
a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
index 7086234..430edab 100644
--- a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
+++ b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
@@ -3845,7 +3845,7 @@ LogicalProject(DEPTNO=[$7])
<Resource name="plan">
<![CDATA[
LogicalAggregate(group=[{}], EXPR$0=[SUM($0)])
- LogicalProject($f0=[0.1:DECIMAL(19, 19)])
+ LogicalProject($f0=[0.1:DECIMAL(19, 9)])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
diff --git a/core/src/test/resources/org/apache/calcite/test/TopDownOptTest.xml
b/core/src/test/resources/org/apache/calcite/test/TopDownOptTest.xml
index 76fa762..db646a6 100644
--- a/core/src/test/resources/org/apache/calcite/test/TopDownOptTest.xml
+++ b/core/src/test/resources/org/apache/calcite/test/TopDownOptTest.xml
@@ -183,11 +183,11 @@ join sales.bonus s on r.job=s.job and r.ename=s.ename]]>
<![CDATA[
LogicalProject(ENAME=[$0], JOB=[$1], EXPR$2=[$2], ENAME0=[$4], JOB0=[$5],
SAL=[$6], COMM=[$7])
LogicalJoin(condition=[AND(=($3, $8), =($0, $4))], joinType=[inner])
- LogicalProject(ENAME=[$0], JOB=[CAST($1):DECIMAL(19, 0) NOT NULL],
EXPR$2=[+($2, 1)], JOB0=[CAST(CAST($1):DECIMAL(19, 0) NOT NULL):DECIMAL(19, 19)
NOT NULL])
+ LogicalProject(ENAME=[$0], JOB=[CAST($1):DECIMAL(19, 0) NOT NULL],
EXPR$2=[+($2, 1)], JOB0=[CAST(CAST($1):DECIMAL(19, 0) NOT NULL):DECIMAL(19, 9)
NOT NULL])
LogicalAggregate(group=[{0, 1}], MAX_SAL=[MAX($2)])
LogicalProject(ENAME=[$1], JOB=[$2], SAL=[$5])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(ENAME=[$0], JOB=[$1], SAL=[$2], COMM=[$3],
JOB0=[CAST($1):DECIMAL(19, 19) NOT NULL])
+ LogicalProject(ENAME=[$0], JOB=[$1], SAL=[$2], COMM=[$3],
JOB0=[CAST($1):DECIMAL(19, 9) NOT NULL])
LogicalTableScan(table=[[CATALOG, SALES, BONUS]])
]]>
</Resource>
@@ -196,12 +196,12 @@ LogicalProject(ENAME=[$0], JOB=[$1], EXPR$2=[$2],
ENAME0=[$4], JOB0=[$5], SAL=[$
EnumerableProject(ENAME=[$0], JOB=[$1], EXPR$2=[$2], ENAME0=[$4], JOB0=[$5],
SAL=[$6], COMM=[$7])
EnumerableMergeJoin(condition=[AND(=($3, $8), =($0, $4))], joinType=[inner])
EnumerableSort(sort0=[$3], sort1=[$0], dir0=[ASC], dir1=[ASC])
- EnumerableProject(ENAME=[$0], JOB=[CAST($1):DECIMAL(19, 0) NOT NULL],
EXPR$2=[+($2, 1)], JOB0=[CAST(CAST($1):DECIMAL(19, 0) NOT NULL):DECIMAL(19, 19)
NOT NULL])
+ EnumerableProject(ENAME=[$0], JOB=[CAST($1):DECIMAL(19, 0) NOT NULL],
EXPR$2=[+($2, 1)], JOB0=[CAST(CAST($1):DECIMAL(19, 0) NOT NULL):DECIMAL(19, 9)
NOT NULL])
EnumerableSortedAggregate(group=[{1, 2}], MAX_SAL=[MAX($5)])
EnumerableSort(sort0=[$1], sort1=[$2], dir0=[ASC], dir1=[ASC])
EnumerableTableScan(table=[[CATALOG, SALES, EMP]])
EnumerableSort(sort0=[$4], sort1=[$0], dir0=[ASC], dir1=[ASC])
- EnumerableProject(ENAME=[$0], JOB=[$1], SAL=[$2], COMM=[$3],
JOB0=[CAST($1):DECIMAL(19, 19) NOT NULL])
+ EnumerableProject(ENAME=[$0], JOB=[$1], SAL=[$2], COMM=[$3],
JOB0=[CAST($1):DECIMAL(19, 9) NOT NULL])
EnumerableTableScan(table=[[CATALOG, SALES, BONUS]])
]]>
</Resource>
diff --git a/druid/src/test/java/org/apache/calcite/test/DruidAdapter2IT.java
b/druid/src/test/java/org/apache/calcite/test/DruidAdapter2IT.java
index 1c91608..0904ca2 100644
--- a/druid/src/test/java/org/apache/calcite/test/DruidAdapter2IT.java
+++ b/druid/src/test/java/org/apache/calcite/test/DruidAdapter2IT.java
@@ -3276,10 +3276,9 @@ public class DruidAdapter2IT {
sql(sql).runs().queryContains(
new DruidChecker(
false,
- "\"filter\":{"
- + "\"type\":\"expression\","
- + "\"expression\":\"(CAST(\\\"product_id\\\", 'DOUBLE') ==
16.0)\""
- + "}"));
+
"\"filter\":{\"type\":\"bound\",\"dimension\":\"product_id\",\"lower\":\"16.0\","
+ + "\"lowerStrict\":false,\"upper\":\"16.0\","
+ + "\"upperStrict\":false,\"ordering\":\"numeric\"}"));
}
@Test void testTrigonometryMathFunctions() {
diff --git a/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
b/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
index 265f0ee..c172b84 100644
--- a/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
+++ b/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
@@ -3904,10 +3904,9 @@ public class DruidAdapterIT {
sql(sql, FOODMART).runs().queryContains(
new DruidChecker(
false,
- "\"filter\":{"
- + "\"type\":\"expression\","
- + "\"expression\":\"(CAST(\\\"product_id\\\", 'DOUBLE') ==
16.0)\""
- + "}"));
+
"\"filter\":{\"type\":\"bound\",\"dimension\":\"product_id\",\"lower\":\"16.0\","
+ + "\"lowerStrict\":false,\"upper\":\"16.0\","
+ + "\"upperStrict\":false,\"ordering\":\"numeric\"}"));
}
@Test void testTrigonometryMathFunctions() {