This is an automated email from the ASF dual-hosted git repository.
michaelsmith pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/impala.git
The following commit(s) were added to refs/heads/master by this push:
new 0f53e3136 IMPALA-14429: Calcite planner: change mechanism for parsing
tinyint, smallint
0f53e3136 is described below
commit 0f53e31363dddad918c5f5cf103697b4624d9ede
Author: Steve Carlin <[email protected]>
AuthorDate: Wed Oct 22 17:37:31 2025 -0700
IMPALA-14429: Calcite planner: change mechanism for parsing tinyint,
smallint
Calcite and Impala have an inconsistency with datatypes for small integers.
Calcite will treat all integers that fit within an integer as an integer.
Impala treats integers more granularly, that is, '1' will be a tinyint and
'1872' will be a smallint. CALCITE-7120 has been filed within Calcite so
that eventually Calcite will be compatible with Impala.
For Calcite v1.37, the coercenodes module handles the inconsistency. This is
done after the RelNodes are created.
In Calcite 1.41, some code was added at the AST level that broke Impala
since it is too late to manipulate the fields after RelNode creation.
A new mechanism to handle the inconsistency has been added with this commit.
The internal Validator for Calcite calls 'deriveType' which derives the
proper
type and this method has been overriden.
At RexBuilder time (where the RexNodes for the RelNodes are created), the
makeLiteral method is overridden so that the proper type is created.
ImpalaRexBuilder derives from RexBuilder and provides this method.
A "postAnalysis_" variable within the ImpalaRexBuilder ensures that the
makeLiteral logic only gets applied at analysis time. At optimization time,
the Impala code knows the explicit type of the literal that is being
created, so the RelDataType of the parameter passed in is used.
Testing is already in place for this as we have tests for dealing with
different size constants. This commit is proactive to the upgrade to
1.41
Change-Id: I67b6f7711093a4b8488beee0893aea3c72239eb0
Reviewed-on: http://gerrit.cloudera.org:8080/23724
Reviewed-by: Michael Smith <[email protected]>
Tested-by: Michael Smith <[email protected]>
---
.../impala/calcite/operators/ImpalaRexBuilder.java | 77 ++++++++++++++++++++++
.../calcite/service/CalciteRelNodeConverter.java | 9 ++-
.../calcite/service/ImpalaSqlValidatorImpl.java | 31 +++++++++
.../calcite/analytic-rank-pushdown-calcite.test | 5 +-
.../PlannerTest/calcite_tpcds/tpcds-q33.test | 45 ++++++++-----
.../PlannerTest/calcite_tpcds/tpcds-q40.test | 6 +-
.../calcite_tpcds/tpcds-q43-verbose.test | 5 +-
.../PlannerTest/calcite_tpcds/tpcds-q43.test | 15 +++--
.../PlannerTest/calcite_tpcds/tpcds-q56.test | 45 ++++++++-----
.../PlannerTest/calcite_tpcds/tpcds-q60.test | 45 ++++++++-----
.../PlannerTest/calcite_tpcds/tpcds-q61.test | 60 ++++++++++-------
.../PlannerTest/calcite_tpcds/tpcds-q89.test | 6 +-
.../PlannerTest/calcite_tpcds/tpcds-q91.test | 15 +++--
13 files changed, 260 insertions(+), 104 deletions(-)
diff --git
a/java/calcite-planner/src/main/java/org/apache/impala/calcite/operators/ImpalaRexBuilder.java
b/java/calcite-planner/src/main/java/org/apache/impala/calcite/operators/ImpalaRexBuilder.java
new file mode 100644
index 000000000..3c210135d
--- /dev/null
+++
b/java/calcite-planner/src/main/java/org/apache/impala/calcite/operators/ImpalaRexBuilder.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.impala.calcite.operators;
+
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeFactory;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexLiteral;
+import org.apache.calcite.sql.type.SqlTypeName;
+import org.apache.calcite.sql.type.SqlTypeUtil;
+import org.apache.impala.calcite.type.ImpalaTypeConverter;
+
+import java.math.BigDecimal;
+
+/**
+ * Factory for row expressions.
+ *
+ * See the base class in Calcite for the details about RexBuilder. This
extension
+ * allows Impala to override functions that need extra work to make RexBuilder
+ * Impala compatible.
+ *
+ * This RexBuilder is used at RelNodeConverter time. The extra 'makeLiteral'
+ * method causes numbers like '3' to be created as a tinyint rather than a
+ * an int (see CALCITE-7120). We do not want to use this at optimization time.
+ * When we do constant folding, we want to create literals with the type that
+ * Impala provides, not the default type.
+ *
+ * For instance, take the expression '1 + 2'. At parsing time, we want the
+ * individual literals to be tinyints here. However, after constant folding,
+ * the '3' will be a smallint, as defined by the '+' coercing rules. So we
+ * want the provided 'smallint' type to be used for '3' and thus do not want
+ * to call the makeLiteral in this class.
+ *
+ */
+public class ImpalaRexBuilder extends RexBuilder {
+
+ private boolean postAnalysis_ = false;
+
+ public ImpalaRexBuilder(RelDataTypeFactory typeFactory) {
+ super(typeFactory);
+ }
+
+ public void setPostAnalysis() {
+ postAnalysis_ = true;
+ }
+
+ @Override
+ public RexLiteral makeLiteral(Comparable o, RelDataType type, SqlTypeName
typeName) {
+ // CALCITE-7120: Calcite always creates tinyint and smallint literals as
Integer, but
+ // Impala needs them as tinyints and smallints. This should only be done
during
+ // analysis and pre-optimization. At optimization time, the literal has
been analyzed
+ // and the type is explicitly set by the Impala caller. For instance, in
constant
+ // folding, if a '1 + 1' is folded to a '2', the '2' will be explicitly
set to a
+ // smallint rather than a tinyint because of the "+" operation.
+ if (!postAnalysis_) {
+ if (SqlTypeUtil.isExactNumeric(type) && o instanceof BigDecimal) {
+ BigDecimal bd0 = (BigDecimal) o;
+ type = ImpalaTypeConverter.getLiteralDataType(bd0, type);
+ }
+ }
+ return super.makeLiteral(o, type, typeName);
+ }
+}
diff --git
a/java/calcite-planner/src/main/java/org/apache/impala/calcite/service/CalciteRelNodeConverter.java
b/java/calcite-planner/src/main/java/org/apache/impala/calcite/service/CalciteRelNodeConverter.java
index 517ae8ac5..0a8c96faa 100644
---
a/java/calcite-planner/src/main/java/org/apache/impala/calcite/service/CalciteRelNodeConverter.java
+++
b/java/calcite-planner/src/main/java/org/apache/impala/calcite/service/CalciteRelNodeConverter.java
@@ -52,6 +52,7 @@ import org.apache.calcite.tools.FrameworkConfig;
import org.apache.calcite.tools.Frameworks;
import org.apache.calcite.tools.RelBuilder;
import org.apache.impala.calcite.operators.ImpalaConvertletTable;
+import org.apache.impala.calcite.operators.ImpalaRexBuilder;
import org.apache.impala.calcite.rules.ImpalaCoreRules;
import org.apache.impala.calcite.rules.ImpalaMQContext;
import org.apache.impala.calcite.rules.ImpalaRexExecutor;
@@ -85,6 +86,8 @@ public class CalciteRelNodeConverter implements CompilerStep {
private final CalciteCatalogReader reader_;
+ private final ImpalaRexBuilder rexBuilder_;
+
public CalciteRelNodeConverter(CalciteAnalysisResult analysisResult) {
this.typeFactory_ = analysisResult.getTypeFactory();
this.reader_ = analysisResult.getCatalogReader();
@@ -92,8 +95,8 @@ public class CalciteRelNodeConverter implements CompilerStep {
this.planner_ = new VolcanoPlanner(ImpalaCost.FACTORY, new
ImpalaMQContext());
planner_.addRelTraitDef(ConventionTraitDef.INSTANCE);
planner_.setExecutor(new RemoveUnraggedCharCastRexExecutor());
- cluster_ =
- RelOptCluster.create(planner_, new RexBuilder(typeFactory_));
+ this.rexBuilder_ = new ImpalaRexBuilder(typeFactory_);
+ cluster_ = RelOptCluster.create(planner_, this.rexBuilder_);
viewExpander_ = createViewExpander(
analysisResult.getSqlValidator().getCatalogReader().getRootSchema().plus());
cluster_.setMetadataProvider(ImpalaRelMetadataProvider.DEFAULT);
@@ -158,6 +161,8 @@ public class CalciteRelNodeConverter implements
CompilerStep {
RelDecorrelator.decorrelateQuery(subQueryRemovedPlan, relBuilder);
LogUtil.logDebug(decorrelatedPlan, "Plan after subquery decorrelation
phase");
+
+ rexBuilder_.setPostAnalysis();
return decorrelatedPlan;
}
diff --git
a/java/calcite-planner/src/main/java/org/apache/impala/calcite/service/ImpalaSqlValidatorImpl.java
b/java/calcite-planner/src/main/java/org/apache/impala/calcite/service/ImpalaSqlValidatorImpl.java
index 43e908979..f0e6a330f 100644
---
a/java/calcite-planner/src/main/java/org/apache/impala/calcite/service/ImpalaSqlValidatorImpl.java
+++
b/java/calcite-planner/src/main/java/org/apache/impala/calcite/service/ImpalaSqlValidatorImpl.java
@@ -20,6 +20,7 @@ package org.apache.impala.calcite.service;
import com.google.common.base.Preconditions;
import org.apache.calcite.prepare.RelOptTableImpl;
+import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rel.type.RelDataTypeFactory;
import org.apache.calcite.sql.validate.SqlNameMatcher;
import org.apache.calcite.sql.validate.SqlQualified;
@@ -35,17 +36,23 @@ import org.apache.calcite.sql.SqlOperatorTable;
import org.apache.calcite.sql.SqlCall;
import org.apache.calcite.sql.SqlFunction;
import org.apache.calcite.sql.SqlIdentifier;
+import org.apache.calcite.sql.SqlNode;
+import org.apache.calcite.sql.SqlNumericLiteral;
import org.apache.calcite.sql.SqlOperator;
+import org.apache.calcite.sql.SqlUtil;
import org.apache.impala.analysis.Analyzer;
import org.apache.impala.authorization.Privilege;
import org.apache.impala.calcite.schema.CalciteTable;
import org.apache.impala.calcite.schema.ImpalaViewTable;
+import org.apache.impala.calcite.type.ImpalaTypeConverter;
import org.apache.impala.catalog.BuiltinsDb;
import org.apache.impala.catalog.FeView;
import org.apache.impala.catalog.FeFsTable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.math.BigDecimal;
+
/**
* The ImpalaSqlValidatorImpl is responsible for registering column-level and
* function-level privilege requests in the given query. The methods in the
class will be
@@ -65,6 +72,30 @@ public class ImpalaSqlValidatorImpl extends SqlValidatorImpl
{
analyzer_ = analyzer;
}
+ /**
+ * Override of deriveType needed for IMPALA-14429 and
+ * CALCITE-7120.
+ *
+ * Calcite always treats numerics like '1' as an integer, whereas
+ * Impala treats this as a tinyint. So the derived type is overridden
+ * to produce Impala's derived type rather than Calcite's derived type.
+ */
+ @Override
+ public RelDataType deriveType(
+ SqlValidatorScope scope,
+ SqlNode operand) {
+ if (operand instanceof SqlNumericLiteral) {
+ SqlNumericLiteral numeric = (SqlNumericLiteral) operand;
+ if (numeric.isInteger()) {
+ RelDataType type = ImpalaTypeConverter.getLiteralDataType(
+ new BigDecimal(numeric.toValue()), null);
+ setValidatedNodeType(operand, type);
+ return type;
+ }
+ }
+ return super.deriveType(scope, operand);
+ }
+
@Override public void validateIdentifier(SqlIdentifier id, SqlValidatorScope
scope) {
super.validateIdentifier(id, scope);
// It is a bit inefficient to execute scope.fullyQualify() again because
this has
diff --git
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite/analytic-rank-pushdown-calcite.test
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite/analytic-rank-pushdown-calcite.test
index 24dc0c210..6fd556a9b 100644
---
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite/analytic-rank-pushdown-calcite.test
+++
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite/analytic-rank-pushdown-calcite.test
@@ -784,12 +784,9 @@ where rownum <= 20
PLAN-ROOT SINK
|
00:UNION
+| constant-operands=1
| row-size=16B cardinality=21
|
-|--05:UNION
-| constant-operands=1
-| row-size=12B cardinality=1
-|
04:SELECT
| predicates: row_number() <= 20
| row-size=31B cardinality=20
diff --git
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q33.test
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q33.test
index 33b11573c..ede162a46 100644
---
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q33.test
+++
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q33.test
@@ -161,12 +161,13 @@ PLAN-ROOT SINK
| |
| |--25:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=27 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 25(GETNEXT)
@@ -271,12 +272,13 @@ PLAN-ROOT SINK
| |
| |--15:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=15 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 15(GETNEXT)
@@ -375,12 +377,13 @@ PLAN-ROOT SINK
|
|--05:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address]
| HDFS partitions=1/1 files=1 size=307.36MB
-| predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| stored statistics:
| table: rows=15.00M size=307.36MB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.58M
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| tuple-ids=4 row-size=8B cardinality=2.43M cost=2571000
| in pipelines: 05(GETNEXT)
@@ -599,12 +602,13 @@ max-parallelism=60 segment-costs=[59409, 59409, 59409,
8325, 5176] cpu-compariso
| | max-parallelism=10 segment-costs=[2675761]
| | 25:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=27 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 25(GETNEXT)
@@ -793,12 +797,13 @@ max-parallelism=60 segment-costs=[59409, 59409, 59409,
8325, 5176] cpu-compariso
| | max-parallelism=10 segment-costs=[2675761]
| | 15:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=15 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 15(GETNEXT)
@@ -982,12 +987,13 @@ max-parallelism=60 segment-costs=[562543053, 207079]
cpu-comparison-result=60 [m
| max-parallelism=10 segment-costs=[2675761]
| 05:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| HDFS partitions=1/1 files=1 size=307.36MB
-| predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| stored statistics:
| table: rows=15.00M size=307.36MB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.58M
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| tuple-ids=4 row-size=8B cardinality=2.43M cost=2571000
| in pipelines: 05(GETNEXT)
@@ -1223,12 +1229,13 @@ max-parallelism=60 segment-costs=[59409, 59409, 59409,
8325, 5176] cpu-compariso
| | max-parallelism=10 segment-costs=[2675761]
| | 25:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=27 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 25(GETNEXT)
@@ -1417,12 +1424,13 @@ max-parallelism=60 segment-costs=[59409, 59409, 59409,
8325, 5176] cpu-compariso
| | max-parallelism=10 segment-costs=[2675761]
| | 15:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=15 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 15(GETNEXT)
@@ -1606,12 +1614,13 @@ max-parallelism=60 segment-costs=[562543053, 207079]
cpu-comparison-result=60 [m
| max-parallelism=10 segment-costs=[2675761]
| 05:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| HDFS partitions=1/1 files=1 size=307.36MB
-| predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| stored statistics:
| table: rows=15.00M size=307.36MB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.58M
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| tuple-ids=4 row-size=8B cardinality=2.43M cost=2571000
| in pipelines: 05(GETNEXT)
diff --git
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q40.test
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q40.test
index 8b564a027..9692e76ba 100644
---
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q40.test
+++
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q40.test
@@ -44,7 +44,7 @@ PLAN-ROOT SINK
| in pipelines: 10(GETNEXT), 09(OPEN)
|
09:AGGREGATE [FINALIZE]
-| output: sum(CASE WHEN tpcds_partitioned_parquet_snap.date_dim.d_date < DATE
'1999-02-02' THEN
CAST(subtract(tpcds_partitioned_parquet_snap.catalog_sales.cs_sales_price,
coalesce(tpcds_partitioned_parquet_snap.catalog_returns.cr_refunded_cash,
CAST(0 AS DECIMAL(7,2)))) AS DECIMAL(12,2)) ELSE CAST(0 AS DECIMAL(12,2)) END),
sum(CASE WHEN tpcds_partitioned_parquet_snap.date_dim.d_date >= DATE
'1999-02-02' THEN
CAST(subtract(tpcds_partitioned_parquet_snap.catalog_sales.cs_sales_price, coal
[...]
+| output: sum(CASE WHEN tpcds_partitioned_parquet_snap.date_dim.d_date < DATE
'1999-02-02' THEN
subtract(tpcds_partitioned_parquet_snap.catalog_sales.cs_sales_price,
coalesce(tpcds_partitioned_parquet_snap.catalog_returns.cr_refunded_cash,
CAST(0 AS DECIMAL(7,2)))) ELSE CAST(0 AS DECIMAL(8,2)) END), sum(CASE WHEN
tpcds_partitioned_parquet_snap.date_dim.d_date >= DATE '1999-02-02' THEN
subtract(tpcds_partitioned_parquet_snap.catalog_sales.cs_sales_price,
coalesce(tpcds_partitioned_parque [...]
| group by: tpcds_partitioned_parquet_snap.warehouse.w_state,
tpcds_partitioned_parquet_snap.item.i_item_id
| mem-estimate=197.86MB mem-reservation=34.00MB spill-buffer=2.00MB
thread-reservation=0
| tuple-ids=10 row-size=74B cardinality=2.41M cost=628267210
@@ -187,7 +187,7 @@ F02:PLAN FRAGMENT
[HASH(tpcds_partitioned_parquet_snap.catalog_sales.cs_item_sk,
Per-Instance Resources: mem-estimate=226.37MB mem-reservation=34.00MB
thread-reservation=1
max-parallelism=320 segment-costs=[3171158934, 1179595953]
cpu-comparison-result=210 [max(210 (self) vs 206 (sum children))]
09:AGGREGATE [STREAMING]
-| output: sum(CASE WHEN tpcds_partitioned_parquet_snap.date_dim.d_date < DATE
'1999-02-02' THEN
CAST(subtract(tpcds_partitioned_parquet_snap.catalog_sales.cs_sales_price,
coalesce(tpcds_partitioned_parquet_snap.catalog_returns.cr_refunded_cash,
CAST(0 AS DECIMAL(7,2)))) AS DECIMAL(12,2)) ELSE CAST(0 AS DECIMAL(12,2)) END),
sum(CASE WHEN tpcds_partitioned_parquet_snap.date_dim.d_date >= DATE
'1999-02-02' THEN
CAST(subtract(tpcds_partitioned_parquet_snap.catalog_sales.cs_sales_price, coal
[...]
+| output: sum(CASE WHEN tpcds_partitioned_parquet_snap.date_dim.d_date < DATE
'1999-02-02' THEN
subtract(tpcds_partitioned_parquet_snap.catalog_sales.cs_sales_price,
coalesce(tpcds_partitioned_parquet_snap.catalog_returns.cr_refunded_cash,
CAST(0 AS DECIMAL(7,2)))) ELSE CAST(0 AS DECIMAL(8,2)) END), sum(CASE WHEN
tpcds_partitioned_parquet_snap.date_dim.d_date >= DATE '1999-02-02' THEN
subtract(tpcds_partitioned_parquet_snap.catalog_sales.cs_sales_price,
coalesce(tpcds_partitioned_parque [...]
| group by: tpcds_partitioned_parquet_snap.warehouse.w_state,
tpcds_partitioned_parquet_snap.item.i_item_id
| mem-estimate=197.86MB mem-reservation=34.00MB spill-buffer=2.00MB
thread-reservation=0
| tuple-ids=10 row-size=74B cardinality=223.37M cost=1628893885
@@ -408,7 +408,7 @@ F02:PLAN FRAGMENT
[HASH(tpcds_partitioned_parquet_snap.catalog_sales.cs_item_sk,
Per-Instance Resources: mem-estimate=226.37MB mem-reservation=34.00MB
thread-reservation=1
max-parallelism=320 segment-costs=[3171158934, 1179595953]
cpu-comparison-result=210 [max(210 (self) vs 206 (sum children))]
09:AGGREGATE [STREAMING]
-| output: sum(CASE WHEN tpcds_partitioned_parquet_snap.date_dim.d_date < DATE
'1999-02-02' THEN
CAST(subtract(tpcds_partitioned_parquet_snap.catalog_sales.cs_sales_price,
coalesce(tpcds_partitioned_parquet_snap.catalog_returns.cr_refunded_cash,
CAST(0 AS DECIMAL(7,2)))) AS DECIMAL(12,2)) ELSE CAST(0 AS DECIMAL(12,2)) END),
sum(CASE WHEN tpcds_partitioned_parquet_snap.date_dim.d_date >= DATE
'1999-02-02' THEN
CAST(subtract(tpcds_partitioned_parquet_snap.catalog_sales.cs_sales_price, coal
[...]
+| output: sum(CASE WHEN tpcds_partitioned_parquet_snap.date_dim.d_date < DATE
'1999-02-02' THEN
subtract(tpcds_partitioned_parquet_snap.catalog_sales.cs_sales_price,
coalesce(tpcds_partitioned_parquet_snap.catalog_returns.cr_refunded_cash,
CAST(0 AS DECIMAL(7,2)))) ELSE CAST(0 AS DECIMAL(8,2)) END), sum(CASE WHEN
tpcds_partitioned_parquet_snap.date_dim.d_date >= DATE '1999-02-02' THEN
subtract(tpcds_partitioned_parquet_snap.catalog_sales.cs_sales_price,
coalesce(tpcds_partitioned_parque [...]
| group by: tpcds_partitioned_parquet_snap.warehouse.w_state,
tpcds_partitioned_parquet_snap.item.i_item_id
| mem-estimate=197.86MB mem-reservation=34.00MB spill-buffer=2.00MB
thread-reservation=0
| tuple-ids=10 row-size=74B cardinality=223.37M cost=1628893885
diff --git
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q43-verbose.test
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q43-verbose.test
index 5b546b64b..81bed0320 100644
---
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q43-verbose.test
+++
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q43-verbose.test
@@ -148,12 +148,13 @@ SumCost: cost-total=673 max-instances=1 adj-instances=1
cost/inst=673 #cons:#pro
| cost-total=54 max-instances=1 adj-instances=1 cost/inst=54
#cons:#prod=336:336 reduction=1.0 cost/cons=0.16071428 cost/prod=0.16071428
raw-cost=54.3753
03:SCAN HDFS [tpcds_partitioned_parquet_snap.store, RANDOM]
HDFS partitions=1/1 files=1 size=119.76KB
- predicates: CAST(tpcds_partitioned_parquet_snap.store.s_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
+ predicates: tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-6
AS DECIMAL(3,0)), tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
stored statistics:
table: rows=1.35K size=119.76KB
columns: all
extrapolated-rows=disabled max-scan-range-rows=1.35K
- parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.store.s_gmt_offset AS DECIMAL(12,2)) =
CAST(-6 AS DECIMAL(12,2)), tpcds_partitioned_parquet_snap.store.s_store_sk IS
NOT NULL
+ parquet statistics predicates:
tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-6 AS DECIMAL(3,0))
+ parquet dictionary predicates:
tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-6 AS DECIMAL(3,0)),
tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
file formats: [PARQUET]
mem-estimate=16.00MB mem-reservation=32.00KB thread-reservation=0
cost-total=619 max-instances=1 adj-instances=1 cost/inst=619
#cons:#prod=1350:336 reduction=4.017857 cost/cons=0.4585185 cost/prod=1.8422619
raw-cost=619.0092
diff --git
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q43.test
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q43.test
index 9639b8415..f8122e60a 100644
---
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q43.test
+++
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q43.test
@@ -51,12 +51,13 @@ PLAN-ROOT SINK
|
|--03:SCAN HDFS [tpcds_partitioned_parquet_snap.store]
| HDFS partitions=1/1 files=1 size=119.76KB
-| predicates: CAST(tpcds_partitioned_parquet_snap.store.s_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
+| predicates: tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-6
AS DECIMAL(3,0)), tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
| stored statistics:
| table: rows=1.35K size=119.76KB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.35K
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.store.s_gmt_offset AS DECIMAL(12,2)) =
CAST(-6 AS DECIMAL(12,2)), tpcds_partitioned_parquet_snap.store.s_store_sk IS
NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-6 AS DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-6 AS DECIMAL(3,0)),
tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
| mem-estimate=16.00MB mem-reservation=32.00KB thread-reservation=0
| tuple-ids=4 row-size=52B cardinality=336 cost=619
| in pipelines: 03(GETNEXT)
@@ -172,12 +173,13 @@ max-parallelism=310 segment-costs=[3058023158, 1710341]
cpu-comparison-result=12
| max-parallelism=1 segment-costs=[673]
| 03:SCAN HDFS [tpcds_partitioned_parquet_snap.store, RANDOM]
| HDFS partitions=1/1 files=1 size=119.76KB
-| predicates: CAST(tpcds_partitioned_parquet_snap.store.s_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
+| predicates: tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-6
AS DECIMAL(3,0)), tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
| stored statistics:
| table: rows=1.35K size=119.76KB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.35K
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.store.s_gmt_offset AS DECIMAL(12,2)) =
CAST(-6 AS DECIMAL(12,2)), tpcds_partitioned_parquet_snap.store.s_store_sk IS
NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-6 AS DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-6 AS DECIMAL(3,0)),
tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
| mem-estimate=16.00MB mem-reservation=32.00KB thread-reservation=0
| tuple-ids=4 row-size=52B cardinality=336 cost=619
| in pipelines: 03(GETNEXT)
@@ -310,12 +312,13 @@ max-parallelism=310 segment-costs=[3058023158, 1710341]
cpu-comparison-result=12
| max-parallelism=1 segment-costs=[673]
| 03:SCAN HDFS [tpcds_partitioned_parquet_snap.store, RANDOM]
| HDFS partitions=1/1 files=1 size=119.76KB
-| predicates: CAST(tpcds_partitioned_parquet_snap.store.s_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
+| predicates: tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-6
AS DECIMAL(3,0)), tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
| stored statistics:
| table: rows=1.35K size=119.76KB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.35K
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.store.s_gmt_offset AS DECIMAL(12,2)) =
CAST(-6 AS DECIMAL(12,2)), tpcds_partitioned_parquet_snap.store.s_store_sk IS
NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-6 AS DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-6 AS DECIMAL(3,0)),
tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
| mem-estimate=16.00MB mem-reservation=32.00KB thread-reservation=0
| tuple-ids=4 row-size=52B cardinality=336 cost=619
| in pipelines: 03(GETNEXT)
diff --git
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q56.test
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q56.test
index b5c316462..65c861052 100644
---
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q56.test
+++
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q56.test
@@ -155,12 +155,13 @@ PLAN-ROOT SINK
| |
| |--25:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=27 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 25(GETNEXT)
@@ -265,12 +266,13 @@ PLAN-ROOT SINK
| |
| |--15:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=15 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 15(GETNEXT)
@@ -369,12 +371,13 @@ PLAN-ROOT SINK
|
|--05:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address]
| HDFS partitions=1/1 files=1 size=307.36MB
-| predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| stored statistics:
| table: rows=15.00M size=307.36MB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.58M
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| tuple-ids=4 row-size=8B cardinality=2.43M cost=2571000
| in pipelines: 05(GETNEXT)
@@ -594,12 +597,13 @@ max-parallelism=60 segment-costs=[3009167, 1914295,
1228691, 1614300, 1290683] c
| | max-parallelism=10 segment-costs=[2675761]
| | 25:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=27 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 25(GETNEXT)
@@ -789,12 +793,13 @@ max-parallelism=60 segment-costs=[3009167, 1914295,
1228691, 1614300, 1290683] c
| | max-parallelism=10 segment-costs=[2675761]
| | 15:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=15 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 15(GETNEXT)
@@ -978,12 +983,13 @@ max-parallelism=60 segment-costs=[540745133, 13955253]
cpu-comparison-result=60
| max-parallelism=10 segment-costs=[2675761]
| 05:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| HDFS partitions=1/1 files=1 size=307.36MB
-| predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| stored statistics:
| table: rows=15.00M size=307.36MB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.58M
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| tuple-ids=4 row-size=8B cardinality=2.43M cost=2571000
| in pipelines: 05(GETNEXT)
@@ -1220,12 +1226,13 @@ max-parallelism=60 segment-costs=[3009167, 1914295,
1228691, 1614300, 1290683] c
| | max-parallelism=10 segment-costs=[2675761]
| | 25:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=27 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 25(GETNEXT)
@@ -1415,12 +1422,13 @@ max-parallelism=60 segment-costs=[3009167, 1914295,
1228691, 1614300, 1290683] c
| | max-parallelism=10 segment-costs=[2675761]
| | 15:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=15 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 15(GETNEXT)
@@ -1604,12 +1612,13 @@ max-parallelism=60 segment-costs=[540745133, 13955253]
cpu-comparison-result=60
| max-parallelism=10 segment-costs=[2675761]
| 05:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| HDFS partitions=1/1 files=1 size=307.36MB
-| predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| stored statistics:
| table: rows=15.00M size=307.36MB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.58M
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| tuple-ids=4 row-size=8B cardinality=2.43M cost=2571000
| in pipelines: 05(GETNEXT)
diff --git
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q60.test
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q60.test
index c9ba4e676..68bb86f24 100644
---
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q60.test
+++
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q60.test
@@ -164,12 +164,13 @@ PLAN-ROOT SINK
| |
| |--25:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=27 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 25(GETNEXT)
@@ -274,12 +275,13 @@ PLAN-ROOT SINK
| |
| |--15:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=15 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 15(GETNEXT)
@@ -378,12 +380,13 @@ PLAN-ROOT SINK
|
|--05:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address]
| HDFS partitions=1/1 files=1 size=307.36MB
-| predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| stored statistics:
| table: rows=15.00M size=307.36MB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.58M
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| tuple-ids=4 row-size=8B cardinality=2.43M cost=2571000
| in pipelines: 05(GETNEXT)
@@ -603,12 +606,13 @@ max-parallelism=60 segment-costs=[6819259, 4400373,
2635532, 1614300, 1290683] c
| | max-parallelism=10 segment-costs=[2675761]
| | 25:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=27 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 25(GETNEXT)
@@ -798,12 +802,13 @@ max-parallelism=60 segment-costs=[6819259, 4400373,
2635532, 1614300, 1290683] c
| | max-parallelism=10 segment-costs=[2675761]
| | 15:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=15 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 15(GETNEXT)
@@ -987,12 +992,13 @@ max-parallelism=60 segment-costs=[561638319, 35010096]
cpu-comparison-result=60
| max-parallelism=10 segment-costs=[2675761]
| 05:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| HDFS partitions=1/1 files=1 size=307.36MB
-| predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| stored statistics:
| table: rows=15.00M size=307.36MB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.58M
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| tuple-ids=4 row-size=8B cardinality=2.43M cost=2571000
| in pipelines: 05(GETNEXT)
@@ -1229,12 +1235,13 @@ max-parallelism=60 segment-costs=[6819259, 4400373,
2635532, 1614300, 1290683] c
| | max-parallelism=10 segment-costs=[2675761]
| | 25:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_1.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_1.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=27 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 25(GETNEXT)
@@ -1424,12 +1431,13 @@ max-parallelism=60 segment-costs=[6819259, 4400373,
2635532, 1614300, 1290683] c
| | max-parallelism=10 segment-costs=[2675761]
| | 15:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=15 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 15(GETNEXT)
@@ -1613,12 +1621,13 @@ max-parallelism=60 segment-costs=[561638319, 35010096]
cpu-comparison-result=60
| max-parallelism=10 segment-costs=[2675761]
| 05:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| HDFS partitions=1/1 files=1 size=307.36MB
-| predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| stored statistics:
| table: rows=15.00M size=307.36MB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.58M
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-5 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| tuple-ids=4 row-size=8B cardinality=2.43M cost=2571000
| in pipelines: 05(GETNEXT)
diff --git
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q61.test
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q61.test
index 0f7c6e5be..38dd18efa 100644
---
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q61.test
+++
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q61.test
@@ -88,12 +88,13 @@ PLAN-ROOT SINK
| | |
| | |--22:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address]
| | | HDFS partitions=1/1 files=1 size=307.36MB
-| | | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | | predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | | stored statistics:
| | | table: rows=15.00M size=307.36MB
| | | columns: all
| | | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0))
+| | | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | | tuple-ids=25 row-size=8B cardinality=2.43M cost=2571000
| | | in pipelines: 22(GETNEXT)
@@ -121,12 +122,13 @@ PLAN-ROOT SINK
| |
| |--19:SCAN HDFS [tpcds_partitioned_parquet_snap.store]
| | HDFS partitions=1/1 files=1 size=119.76KB
-| | predicates: CAST(tpcds_partitioned_parquet_snap.store_0.s_gmt_offset
AS DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.store_0.s_store_sk IS NOT NULL
+| | predicates: tpcds_partitioned_parquet_snap.store_0.s_gmt_offset =
CAST(-7 AS DECIMAL(3,0)), tpcds_partitioned_parquet_snap.store_0.s_store_sk IS
NOT NULL
| | stored statistics:
| | table: rows=1.35K size=119.76KB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.35K
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.store_0.s_gmt_offset AS DECIMAL(12,2)) =
CAST(-7 AS DECIMAL(12,2)), tpcds_partitioned_parquet_snap.store_0.s_store_sk IS
NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.store_0.s_gmt_offset = CAST(-7 AS DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.store_0.s_gmt_offset = CAST(-7 AS DECIMAL(3,0)),
tpcds_partitioned_parquet_snap.store_0.s_store_sk IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=16.00KB thread-reservation=0
| | tuple-ids=21 row-size=8B cardinality=336 cost=231
| | in pipelines: 19(GETNEXT)
@@ -212,12 +214,13 @@ PLAN-ROOT SINK
| |
| |--10:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=12 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 10(GETNEXT)
@@ -245,12 +248,13 @@ PLAN-ROOT SINK
|
|--07:SCAN HDFS [tpcds_partitioned_parquet_snap.store]
| HDFS partitions=1/1 files=1 size=119.76KB
-| predicates: CAST(tpcds_partitioned_parquet_snap.store.s_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
+| predicates: tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-7
AS DECIMAL(3,0)), tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
| stored statistics:
| table: rows=1.35K size=119.76KB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.35K
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.store.s_gmt_offset AS DECIMAL(12,2)) =
CAST(-7 AS DECIMAL(12,2)), tpcds_partitioned_parquet_snap.store.s_store_sk IS
NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-7 AS DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-7 AS DECIMAL(3,0)),
tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
| mem-estimate=16.00MB mem-reservation=16.00KB thread-reservation=0
| tuple-ids=8 row-size=8B cardinality=336 cost=231
| in pipelines: 07(GETNEXT)
@@ -440,12 +444,13 @@ PLAN-ROOT SINK
| | | max-parallelism=10 segment-costs=[5069764]
| | | 22:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | | HDFS partitions=1/1 files=1 size=307.36MB
-| | | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | | predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | | stored statistics:
| | | table: rows=15.00M size=307.36MB
| | | columns: all
| | | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0))
+| | | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | | tuple-ids=25 row-size=8B cardinality=2.43M cost=2571000
| | | in pipelines: 22(GETNEXT)
@@ -508,12 +513,13 @@ PLAN-ROOT SINK
| | max-parallelism=1 segment-costs=[245]
| | 19:SCAN HDFS [tpcds_partitioned_parquet_snap.store, RANDOM]
| | HDFS partitions=1/1 files=1 size=119.76KB
-| | predicates: CAST(tpcds_partitioned_parquet_snap.store_0.s_gmt_offset
AS DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.store_0.s_store_sk IS NOT NULL
+| | predicates: tpcds_partitioned_parquet_snap.store_0.s_gmt_offset =
CAST(-7 AS DECIMAL(3,0)), tpcds_partitioned_parquet_snap.store_0.s_store_sk IS
NOT NULL
| | stored statistics:
| | table: rows=1.35K size=119.76KB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.35K
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.store_0.s_gmt_offset AS DECIMAL(12,2)) =
CAST(-7 AS DECIMAL(12,2)), tpcds_partitioned_parquet_snap.store_0.s_store_sk IS
NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.store_0.s_gmt_offset = CAST(-7 AS DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.store_0.s_gmt_offset = CAST(-7 AS DECIMAL(3,0)),
tpcds_partitioned_parquet_snap.store_0.s_store_sk IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=16.00KB thread-reservation=0
| | tuple-ids=21 row-size=8B cardinality=336 cost=231
| | in pipelines: 19(GETNEXT)
@@ -682,12 +688,13 @@ max-parallelism=60 segment-costs=[585345192, 185]
cpu-comparison-result=77 [max(
| | max-parallelism=10 segment-costs=[5069764]
| | 10:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=12 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 10(GETNEXT)
@@ -741,12 +748,13 @@ max-parallelism=60 segment-costs=[585345192, 185]
cpu-comparison-result=77 [max(
| max-parallelism=1 segment-costs=[245]
| 07:SCAN HDFS [tpcds_partitioned_parquet_snap.store, RANDOM]
| HDFS partitions=1/1 files=1 size=119.76KB
-| predicates: CAST(tpcds_partitioned_parquet_snap.store.s_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
+| predicates: tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-7
AS DECIMAL(3,0)), tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
| stored statistics:
| table: rows=1.35K size=119.76KB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.35K
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.store.s_gmt_offset AS DECIMAL(12,2)) =
CAST(-7 AS DECIMAL(12,2)), tpcds_partitioned_parquet_snap.store.s_store_sk IS
NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-7 AS DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-7 AS DECIMAL(3,0)),
tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
| mem-estimate=16.00MB mem-reservation=16.00KB thread-reservation=0
| tuple-ids=8 row-size=8B cardinality=336 cost=231
| in pipelines: 07(GETNEXT)
@@ -987,12 +995,13 @@ PLAN-ROOT SINK
| | | max-parallelism=10 segment-costs=[5069764]
| | | 22:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | | HDFS partitions=1/1 files=1 size=307.36MB
-| | | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | | predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | | stored statistics:
| | | table: rows=15.00M size=307.36MB
| | | columns: all
| | | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk IS NOT NULL
+| | | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0))
+| | | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address_0.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address_0.ca_address_sk
IS NOT NULL
| | | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | | tuple-ids=25 row-size=8B cardinality=2.43M cost=2571000
| | | in pipelines: 22(GETNEXT)
@@ -1055,12 +1064,13 @@ PLAN-ROOT SINK
| | max-parallelism=1 segment-costs=[245]
| | 19:SCAN HDFS [tpcds_partitioned_parquet_snap.store, RANDOM]
| | HDFS partitions=1/1 files=1 size=119.76KB
-| | predicates: CAST(tpcds_partitioned_parquet_snap.store_0.s_gmt_offset
AS DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.store_0.s_store_sk IS NOT NULL
+| | predicates: tpcds_partitioned_parquet_snap.store_0.s_gmt_offset =
CAST(-7 AS DECIMAL(3,0)), tpcds_partitioned_parquet_snap.store_0.s_store_sk IS
NOT NULL
| | stored statistics:
| | table: rows=1.35K size=119.76KB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.35K
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.store_0.s_gmt_offset AS DECIMAL(12,2)) =
CAST(-7 AS DECIMAL(12,2)), tpcds_partitioned_parquet_snap.store_0.s_store_sk IS
NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.store_0.s_gmt_offset = CAST(-7 AS DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.store_0.s_gmt_offset = CAST(-7 AS DECIMAL(3,0)),
tpcds_partitioned_parquet_snap.store_0.s_store_sk IS NOT NULL
| | mem-estimate=16.00MB mem-reservation=16.00KB thread-reservation=0
| | tuple-ids=21 row-size=8B cardinality=336 cost=231
| | in pipelines: 19(GETNEXT)
@@ -1228,12 +1238,13 @@ max-parallelism=10 segment-costs=[23802542, 185]
cpu-comparison-result=90 [max(9
| | max-parallelism=10 segment-costs=[5069764]
| | 10:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-7 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=12 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 10(GETNEXT)
@@ -1296,12 +1307,13 @@ max-parallelism=80 segment-costs=[794436452]
| max-parallelism=1 segment-costs=[245]
| 07:SCAN HDFS [tpcds_partitioned_parquet_snap.store, RANDOM]
| HDFS partitions=1/1 files=1 size=119.76KB
-| predicates: CAST(tpcds_partitioned_parquet_snap.store.s_gmt_offset AS
DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
+| predicates: tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-7
AS DECIMAL(3,0)), tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
| stored statistics:
| table: rows=1.35K size=119.76KB
| columns: all
| extrapolated-rows=disabled max-scan-range-rows=1.35K
-| parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.store.s_gmt_offset AS DECIMAL(12,2)) =
CAST(-7 AS DECIMAL(12,2)), tpcds_partitioned_parquet_snap.store.s_store_sk IS
NOT NULL
+| parquet statistics predicates:
tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-7 AS DECIMAL(3,0))
+| parquet dictionary predicates:
tpcds_partitioned_parquet_snap.store.s_gmt_offset = CAST(-7 AS DECIMAL(3,0)),
tpcds_partitioned_parquet_snap.store.s_store_sk IS NOT NULL
| mem-estimate=16.00MB mem-reservation=16.00KB thread-reservation=0
| tuple-ids=8 row-size=8B cardinality=336 cost=231
| in pipelines: 07(GETNEXT)
diff --git
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q89.test
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q89.test
index f6ea6cc0a..ce8c4fee0 100644
---
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q89.test
+++
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q89.test
@@ -44,7 +44,7 @@ PLAN-ROOT SINK
| in pipelines: 11(GETNEXT), 08(OPEN)
|
10:SELECT
-| predicates: CASE WHEN
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price)) != CAST(0
AS DECIMAL(38,6)) THEN
divide(abs(subtract(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price),
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price)))),
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price))) ELSE NULL
END > CAST(0.1 AS DECIMAL(2,1))
+| predicates: CASE WHEN
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price)) != CAST(0
AS DECIMAL(3,0)) THEN
divide(abs(subtract(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price),
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price)))),
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price))) ELSE NULL
END > CAST(0.1 AS DECIMAL(2,1))
| mem-estimate=0B mem-reservation=0B thread-reservation=0
| tuple-ids=13,12 row-size=137B cardinality=298.51K cost=2985120
| in pipelines: 08(GETNEXT)
@@ -173,7 +173,7 @@ max-parallelism=10 segment-costs=[18890602, 9031203, 389]
cpu-comparison-result=
| in pipelines: 11(GETNEXT), 08(OPEN)
|
10:SELECT
-| predicates: CASE WHEN
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price)) != CAST(0
AS DECIMAL(38,6)) THEN
divide(abs(subtract(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price),
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price)))),
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price))) ELSE NULL
END > CAST(0.1 AS DECIMAL(2,1))
+| predicates: CASE WHEN
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price)) != CAST(0
AS DECIMAL(3,0)) THEN
divide(abs(subtract(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price),
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price)))),
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price))) ELSE NULL
END > CAST(0.1 AS DECIMAL(2,1))
| mem-estimate=0B mem-reservation=0B thread-reservation=0
| tuple-ids=13,12 row-size=137B cardinality=298.51K cost=2985120
| in pipelines: 08(GETNEXT)
@@ -377,7 +377,7 @@ max-parallelism=10 segment-costs=[18890602, 9031203, 389]
cpu-comparison-result=
| in pipelines: 11(GETNEXT), 08(OPEN)
|
10:SELECT
-| predicates: CASE WHEN
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price)) != CAST(0
AS DECIMAL(38,6)) THEN
divide(abs(subtract(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price),
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price)))),
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price))) ELSE NULL
END > CAST(0.1 AS DECIMAL(2,1))
+| predicates: CASE WHEN
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price)) != CAST(0
AS DECIMAL(3,0)) THEN
divide(abs(subtract(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price),
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price)))),
avg(sum(tpcds_partitioned_parquet_snap.store_sales.ss_sales_price))) ELSE NULL
END > CAST(0.1 AS DECIMAL(2,1))
| mem-estimate=0B mem-reservation=0B thread-reservation=0
| tuple-ids=13,12 row-size=137B cardinality=298.51K cost=2985120
| in pipelines: 08(GETNEXT)
diff --git
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q91.test
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q91.test
index 3ecb2f335..06c2d6740 100644
---
a/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q91.test
+++
b/testdata/workloads/functional-planner/queries/PlannerTest/calcite_tpcds/tpcds-q91.test
@@ -112,12 +112,13 @@ PLAN-ROOT SINK
| |
| |--06:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=8 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 06(GETNEXT)
@@ -374,12 +375,13 @@ max-parallelism=10 segment-costs=[15015105, 146771]
cpu-comparison-result=73 [ma
| | max-parallelism=10 segment-costs=[2675761]
| | 06:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=8 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 06(GETNEXT)
@@ -670,12 +672,13 @@ max-parallelism=10 segment-costs=[15015105, 146771]
cpu-comparison-result=73 [ma
| | max-parallelism=10 segment-costs=[2675761]
| | 06:SCAN HDFS [tpcds_partitioned_parquet_snap.customer_address, RANDOM]
| | HDFS partitions=1/1 files=1 size=307.36MB
-| | predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| | predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| | stored statistics:
| | table: rows=15.00M size=307.36MB
| | columns: all
| | extrapolated-rows=disabled max-scan-range-rows=1.58M
-| | parquet dictionary predicates:
CAST(tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset AS
DECIMAL(12,2)) = CAST(-6 AS DECIMAL(12,2)),
tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS NOT NULL
+| | parquet statistics predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0))
+| | parquet dictionary predicates:
tpcds_partitioned_parquet_snap.customer_address.ca_gmt_offset = CAST(-6 AS
DECIMAL(3,0)), tpcds_partitioned_parquet_snap.customer_address.ca_address_sk IS
NOT NULL
| | mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
| | tuple-ids=8 row-size=8B cardinality=2.43M cost=2571000
| | in pipelines: 06(GETNEXT)