diff --git a/babel/src/test/resources/sql/redshift.iq b/babel/src/test/resources/sql/redshift.iq index 517a87c2240..253e0355ddf 100755 --- a/babel/src/test/resources/sql/redshift.iq +++ b/babel/src/test/resources/sql/redshift.iq @@ -555,14 +555,14 @@ EMPNO, EXPR$1 !ok # SUM -select empno, sum(CAST(comm AS DECIMAL(12, 4))) over (order by empno rows unbounded preceding) from emp where deptno = 30 order by 1; +select empno, sum(comm) over (order by empno rows unbounded preceding) from emp where deptno = 30 order by 1; EMPNO, EXPR$1 -7499, 300.0000 -7521, 800.0000 -7654, 2200.0000 -7698, 2200.0000 -7844, 2200.0000 -7900, 2200.0000 +7499, 300.00 +7521, 800.00 +7654, 2200.00 +7698, 2200.00 +7844, 2200.00 +7900, 2200.00 !ok # VAR_POP 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 5b42c0bd84b..7f0bc645167 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 @@ -1868,7 +1868,7 @@ public static boolean isValidDecimalValue(@Nullable BigDecimal value, RelDataTyp case DECIMAL: final int intDigits = value.precision() - value.scale(); final int maxIntDigits = toType.getPrecision() - toType.getScale(); - return (intDigits <= maxIntDigits) && (value.scale() <= toType.getScale()); + return intDigits <= maxIntDigits; default: return true; } 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 61030d391f3..21c3996b470 100644 --- a/druid/src/test/java/org/apache/calcite/test/DruidAdapter2IT.java +++ b/druid/src/test/java/org/apache/calcite/test/DruidAdapter2IT.java @@ -1909,13 +1909,13 @@ private void checkGroupBySingleSortLimit(boolean approx) { + "end as b from \"foodmart\" group by \"store_state\" order by a desc"; final String postAggString = "'postAggregations':[{'type':'expression','name':'A'," + "'expression':'(\\'$f1\\' / \\'$f2\\')'},{'type':'expression','name':'B'," - + "'expression':'case_searched((\\'$f3\\' == 0),1,CAST(\\'$f3\\'"; + + "'expression':'case_searched((\\'$f3\\' == 0),1.0,CAST(\\'$f3\\'"; final String plan = "PLAN=" + "EnumerableInterpreter\n" + " DruidQuery(table=[[foodmart, foodmart]]," + " intervals=[[1900-01-09T00:00:00.000Z/2992-01-10T00:00:00.000Z]]," + " projects=[[$63, $90, $91, $89]], groups=[{0}], aggs=[[SUM($1), SUM($2), SUM($3)]]," - + " post_projects=[[$0, /($1, $2), CASE(=($3, 0), CAST(1:DECIMAL(19, 0)):DECIMAL(19, 0)," + + " post_projects=[[$0, /($1, $2), CASE(=($3, 0), 1.0:DECIMAL(19, 0)," + " CAST($3):DECIMAL(19, 0))]], sort0=[1], dir0=[DESC])\n"; CalciteAssert.AssertQuery q = sql(sqlQuery) .explainContains(plan) 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 a318747f46b..5d936ef9e52 100644 --- a/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java +++ b/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java @@ -2215,12 +2215,12 @@ private void checkGroupBySingleSortLimit(boolean approx) { + "from \"foodmart\" group by \"store_state\" order by a desc"; final String postAggString = "'postAggregations':[{'type':'expression','name':'A'," + "'expression':'(\\'$f1\\' / \\'$f2\\')'},{'type':'expression','name':'B'," - + "'expression':'case_searched((\\'$f3\\' == 0),1,CAST(\\'$f3\\'"; + + "'expression':'case_searched((\\'$f3\\' == 0),1.0,CAST(\\'$f3\\'"; final String plan = "DruidQuery(table=[[foodmart, foodmart]], intervals=[[1900-01-09T00:00:00.000Z/" + "2992-01-10T00:00:00.000Z]], projects=[[$63, $90, $91, $89]], groups=[{0}], " + "aggs=[[SUM($1), SUM($2), SUM($3)]], post_projects=[[$0, /($1, $2), " - + "CASE(=($3, 0), CAST(1:DECIMAL(19, 0)):DECIMAL(19, 0), " + + "CASE(=($3, 0), 1.0:DECIMAL(19, 0), " + "CAST($3):DECIMAL(19, 0))]], sort0=[1], dir0=[DESC])"; CalciteAssert.AssertQuery q = sql(sqlQuery, FOODMART) .explainContains(plan)