From 20f94083b15424330b32826d925ff4f3469d91c3 Mon Sep 17 00:00:00 2001 From: m-selmi Date: Wed, 12 Feb 2025 18:45:06 +0100 Subject: [PATCH 1/2] use input column statistics for IF min/max statistics. Signed-off-by: m-selmi --- .../ExpressionStatisticCalculator.java | 6 ++++- .../ExpressionStatisticsCalculatorTest.java | 24 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/com/starrocks/sql/optimizer/statistics/ExpressionStatisticCalculator.java b/fe/fe-core/src/main/java/com/starrocks/sql/optimizer/statistics/ExpressionStatisticCalculator.java index 4860a7ec9f14f..7ab1bf1a4f27d 100644 --- a/fe/fe-core/src/main/java/com/starrocks/sql/optimizer/statistics/ExpressionStatisticCalculator.java +++ b/fe/fe-core/src/main/java/com/starrocks/sql/optimizer/statistics/ExpressionStatisticCalculator.java @@ -640,7 +640,11 @@ private ColumnStatistic multiaryExpressionCalculate(CallOperator callOperator, case FunctionSet.IF: distinctValues = childColumnStatisticList.get(1).getDistinctValuesCount() + childColumnStatisticList.get(2).getDistinctValuesCount(); - return new ColumnStatistic(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, 0, + double minValue = Math.min(childColumnStatisticList.get(1).getMinValue(), + childColumnStatisticList.get(2).getMinValue()); + double maxValue = Math.max(childColumnStatisticList.get(1).getMaxValue(), + childColumnStatisticList.get(2).getMaxValue()); + return new ColumnStatistic(minValue, maxValue, 0, callOperator.getType().getTypeSize(), distinctValues); // use child column statistics for now case FunctionSet.SUBSTRING: diff --git a/fe/fe-core/src/test/java/com/starrocks/sql/optimizer/statistics/ExpressionStatisticsCalculatorTest.java b/fe/fe-core/src/test/java/com/starrocks/sql/optimizer/statistics/ExpressionStatisticsCalculatorTest.java index 135c0b50b0125..6f3583cb97be7 100644 --- a/fe/fe-core/src/test/java/com/starrocks/sql/optimizer/statistics/ExpressionStatisticsCalculatorTest.java +++ b/fe/fe-core/src/test/java/com/starrocks/sql/optimizer/statistics/ExpressionStatisticsCalculatorTest.java @@ -632,4 +632,28 @@ public void testFromDays() { Assert.assertEquals(columnStatistic.getMaxValue(), 2.534021856E11, 0.001); Assert.assertEquals(columnStatistic.getMinValue(), -28800.0, 0.001); } + + @Test + public void testIF() { + ColumnRefOperator column = new ColumnRefOperator(1, Type.INT, "column", true); + BinaryPredicateOperator condition = new BinaryPredicateOperator(BinaryType.EQ, column, ConstantOperator.createInt(1)); + ColumnRefOperator left = new ColumnRefOperator(0, Type.INT, "left", true); + ColumnRefOperator right = new ColumnRefOperator(1, Type.INT, "right", true); + + ColumnStatistic columnStatistic = new ColumnStatistic(-300, 300, 0, 0, 300); + ColumnStatistic leftStatistic = new ColumnStatistic(-100, 100, 0, 0, 100); + ColumnStatistic rightStatistic = new ColumnStatistic(100, 200, 0, 0, 100); + + Statistics.Builder builder = Statistics.builder(); + builder.setOutputRowCount(300); + builder.addColumnStatistic(column, columnStatistic); + builder.addColumnStatistic(left, leftStatistic); + builder.addColumnStatistic(right, rightStatistic); + + CallOperator callOperator = new CallOperator(FunctionSet.IF, Type.INT, Lists.newArrayList(condition, left, right)); + ColumnStatistic ifStatistic = ExpressionStatisticCalculator.calculate(callOperator, builder.build()); + Assert.assertEquals(ifStatistic.getDistinctValuesCount(), 200, 0.001); + Assert.assertEquals(ifStatistic.getMaxValue(), 200, 0.001); + Assert.assertEquals(ifStatistic.getMinValue(), -100, 0.001); + } } From 18e182b6a9a7b15579b26b43e71d99eff588f5d1 Mon Sep 17 00:00:00 2001 From: m-selmi Date: Fri, 21 Feb 2025 10:52:21 +0100 Subject: [PATCH 2/2] update IF related estimations in tpch tests. Signed-off-by: m-selmi --- .../resources/sql/external/hive/tpch/q12.sql | 24 +++++++++---------- .../resources/sql/external/hive/tpch/q14.sql | 10 ++++---- .../resources/sql/external/hive/tpch/q8.sql | 20 ++++++++-------- .../resources/sql/tpch-histogram-cost/q12.sql | 24 +++++++++---------- .../resources/sql/tpch-histogram-cost/q14.sql | 10 ++++---- .../resources/sql/tpch-histogram-cost/q8.sql | 20 ++++++++-------- 6 files changed, 54 insertions(+), 54 deletions(-) diff --git a/fe/fe-core/src/test/resources/sql/external/hive/tpch/q12.sql b/fe/fe-core/src/test/resources/sql/external/hive/tpch/q12.sql index 88ab2835c6afa..257c5ec93283e 100644 --- a/fe/fe-core/src/test/resources/sql/external/hive/tpch/q12.sql +++ b/fe/fe-core/src/test/resources/sql/external/hive/tpch/q12.sql @@ -9,8 +9,8 @@ distribution type: GATHER cardinality: 2 column statistics: * l_shipmode-->[-Infinity, Infinity, 0.0, 10.0, 2.0] ESTIMATE -* sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE -* sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +* sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE +* sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE PLAN FRAGMENT 1(F03) @@ -24,8 +24,8 @@ OutPut Exchange Id: 10 | cardinality: 2 | column statistics: | * l_shipmode-->[-Infinity, Infinity, 0.0, 10.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE | 8:AGGREGATE (merge finalize) | aggregate: sum[([28: sum, BIGINT, true]); args: BIGINT; result: BIGINT; args nullable: true; result nullable: true], sum[([29: sum, BIGINT, true]); args: BIGINT; result: BIGINT; args nullable: true; result nullable: true] @@ -33,8 +33,8 @@ OutPut Exchange Id: 10 | cardinality: 2 | column statistics: | * l_shipmode-->[-Infinity, Infinity, 0.0, 10.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE | 7:EXCHANGE distribution type: SHUFFLE @@ -54,8 +54,8 @@ OutPut Exchange Id: 07 | cardinality: 2 | column statistics: | * l_shipmode-->[-Infinity, Infinity, 0.0, 10.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE | 5:Project | output columns: @@ -65,8 +65,8 @@ OutPut Exchange Id: 07 | cardinality: 6125233 | column statistics: | * l_shipmode-->[-Infinity, Infinity, 0.0, 10.0, 2.0] ESTIMATE -| * case-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE -| * case-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * case-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE +| * case-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE | 4:HASH JOIN | join op: INNER JOIN (BROADCAST) @@ -80,8 +80,8 @@ OutPut Exchange Id: 07 | * o_orderpriority-->[-Infinity, Infinity, 0.0, 15.0, 5.0] ESTIMATE | * l_orderkey-->[1.0, 6.0E8, 0.0, 8.0, 6125233.086195324] ESTIMATE | * l_shipmode-->[-Infinity, Infinity, 0.0, 10.0, 2.0] ESTIMATE -| * case-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE -| * case-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * case-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE +| * case-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE | |----3:EXCHANGE | distribution type: BROADCAST diff --git a/fe/fe-core/src/test/resources/sql/external/hive/tpch/q14.sql b/fe/fe-core/src/test/resources/sql/external/hive/tpch/q14.sql index e3fd1dd0201ad..c5401b4f7eb64 100644 --- a/fe/fe-core/src/test/resources/sql/external/hive/tpch/q14.sql +++ b/fe/fe-core/src/test/resources/sql/external/hive/tpch/q14.sql @@ -9,15 +9,15 @@ RESULT SINK | 30 <-> 100.00 * [28: sum, DECIMAL128(38,4), true] / [29: sum, DECIMAL128(38,4), true] | cardinality: 1 | column statistics: -| * expr-->[-Infinity, Infinity, 0.0, 16.0, 1.0] ESTIMATE +| * expr-->[0.0, 12942.348008385745, 0.0, 16.0, 1.0] ESTIMATE | 9:AGGREGATE (merge finalize) | aggregate: sum[([28: sum, DECIMAL128(38,4), true]); args: DECIMAL128; result: DECIMAL128(38,4); args nullable: true; result nullable: true], sum[([29: sum, DECIMAL128(38,4), true]); args: DECIMAL128; result: DECIMAL128(38,4); args nullable: true; result nullable: true] | cardinality: 1 | column statistics: -| * sum-->[-Infinity, Infinity, 0.0, 16.0, 1.0] ESTIMATE +| * sum-->[0.0, 104949.5, 0.0, 16.0, 1.0] ESTIMATE | * sum-->[810.9, 104949.5, 0.0, 16.0, 1.0] ESTIMATE -| * expr-->[-Infinity, Infinity, 0.0, 16.0, 1.0] ESTIMATE +| * expr-->[0.0, 12942.348008385745, 0.0, 16.0, 1.0] ESTIMATE | 8:EXCHANGE distribution type: GATHER @@ -33,7 +33,7 @@ OutPut Exchange Id: 08 | aggregate: sum[(if[(21: p_type LIKE 'PROMO%', [35: multiply, DECIMAL128(31,4), true], 0); args: BOOLEAN,DECIMAL128,DECIMAL128; result: DECIMAL128(31,4); args nullable: true; result nullable: true]); args: DECIMAL128; result: DECIMAL128(38,4); args nullable: true; result nullable: true], sum[([27: expr, DECIMAL128(31,4), true]); args: DECIMAL128; result: DECIMAL128(38,4); args nullable: true; result nullable: true] | cardinality: 1 | column statistics: -| * sum-->[-Infinity, Infinity, 0.0, 16.0, 1.0] ESTIMATE +| * sum-->[0.0, 104949.5, 0.0, 16.0, 1.0] ESTIMATE | * sum-->[810.9, 104949.5, 0.0, 16.0, 1.0] ESTIMATE | 6:Project @@ -65,7 +65,7 @@ OutPut Exchange Id: 08 | * l_discount-->[0.0, 0.1, 0.0, 8.0, 11.0] ESTIMATE | * p_partkey-->[1.0, 2.0E7, 0.0, 8.0, 6653885.645940593] ESTIMATE | * p_type-->[-Infinity, Infinity, 0.0, 25.0, 150.0] ESTIMATE -| * case-->[-Infinity, Infinity, 0.0, 16.0, 3736521.0] ESTIMATE +| * case-->[0.0, 104949.5, 0.0, 16.0, 3736521.0] ESTIMATE | * expr-->[810.9, 104949.5, 0.0, 16.0, 3736520.0] ESTIMATE | |----4:EXCHANGE diff --git a/fe/fe-core/src/test/resources/sql/external/hive/tpch/q8.sql b/fe/fe-core/src/test/resources/sql/external/hive/tpch/q8.sql index ec1e715dda394..694ef34a65799 100644 --- a/fe/fe-core/src/test/resources/sql/external/hive/tpch/q8.sql +++ b/fe/fe-core/src/test/resources/sql/external/hive/tpch/q8.sql @@ -9,9 +9,9 @@ distribution type: GATHER cardinality: 2 column statistics: * year-->[1995.0, 1996.0, 0.0, 2.0, 2.0] ESTIMATE -* sum-->[-Infinity, Infinity, 0.0, 16.0, 2.0] ESTIMATE +* sum-->[0.0, 104949.5, 0.0, 16.0, 2.0] ESTIMATE * sum-->[810.9, 104949.5, 0.0, 16.0, 2.0] ESTIMATE -* expr-->[-Infinity, Infinity, 0.0, 16.0, 2.0] ESTIMATE +* expr-->[0.0, 129.42348008385744, 0.0, 16.0, 2.0] ESTIMATE PLAN FRAGMENT 1(F19) @@ -25,9 +25,9 @@ OutPut Exchange Id: 38 | cardinality: 2 | column statistics: | * year-->[1995.0, 1996.0, 0.0, 2.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 16.0, 2.0] ESTIMATE +| * sum-->[0.0, 104949.5, 0.0, 16.0, 2.0] ESTIMATE | * sum-->[810.9, 104949.5, 0.0, 16.0, 2.0] ESTIMATE -| * expr-->[-Infinity, Infinity, 0.0, 16.0, 2.0] ESTIMATE +| * expr-->[0.0, 129.42348008385744, 0.0, 16.0, 2.0] ESTIMATE | 36:Project | output columns: @@ -36,7 +36,7 @@ OutPut Exchange Id: 38 | cardinality: 2 | column statistics: | * year-->[1995.0, 1996.0, 0.0, 2.0, 2.0] ESTIMATE -| * expr-->[-Infinity, Infinity, 0.0, 16.0, 2.0] ESTIMATE +| * expr-->[0.0, 129.42348008385744, 0.0, 16.0, 2.0] ESTIMATE | 35:AGGREGATE (merge finalize) | aggregate: sum[([65: sum, DECIMAL128(38,4), true]); args: DECIMAL128; result: DECIMAL128(38,4); args nullable: true; result nullable: true], sum[([64: sum, DECIMAL128(38,4), true]); args: DECIMAL128; result: DECIMAL128(38,4); args nullable: true; result nullable: true] @@ -44,9 +44,9 @@ OutPut Exchange Id: 38 | cardinality: 2 | column statistics: | * year-->[1995.0, 1996.0, 0.0, 2.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 16.0, 2.0] ESTIMATE +| * sum-->[0.0, 104949.5, 0.0, 16.0, 2.0] ESTIMATE | * sum-->[810.9, 104949.5, 0.0, 16.0, 2.0] ESTIMATE -| * expr-->[-Infinity, Infinity, 0.0, 16.0, 2.0] ESTIMATE +| * expr-->[0.0, 129.42348008385744, 0.0, 16.0, 2.0] ESTIMATE | 34:EXCHANGE distribution type: SHUFFLE @@ -66,7 +66,7 @@ OutPut Exchange Id: 34 | cardinality: 2 | column statistics: | * year-->[1995.0, 1996.0, 0.0, 2.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 16.0, 2.0] ESTIMATE +| * sum-->[0.0, 104949.5, 0.0, 16.0, 2.0] ESTIMATE | * sum-->[810.9, 104949.5, 0.0, 16.0, 2.0] ESTIMATE | 32:Project @@ -84,7 +84,7 @@ OutPut Exchange Id: 34 | column statistics: | * year-->[1995.0, 1996.0, 0.0, 2.0, 2.0] ESTIMATE | * expr-->[810.9, 104949.5, 0.0, 16.0, 242842.78223700626] ESTIMATE -| * case-->[-Infinity, Infinity, 0.0, 16.0, 242843.78223700626] ESTIMATE +| * case-->[0.0, 104949.5, 0.0, 16.0, 242843.78223700626] ESTIMATE | 31:HASH JOIN | join op: INNER JOIN (BROADCAST) @@ -102,7 +102,7 @@ OutPut Exchange Id: 34 | * r_regionkey-->[0.0, 4.0, 0.0, 4.0, 1.0] ESTIMATE | * year-->[1995.0, 1996.0, 0.0, 2.0, 2.0] ESTIMATE | * expr-->[810.9, 104949.5, 0.0, 16.0, 242842.78223700626] ESTIMATE -| * case-->[-Infinity, Infinity, 0.0, 16.0, 242843.78223700626] ESTIMATE +| * case-->[0.0, 104949.5, 0.0, 16.0, 242843.78223700626] ESTIMATE | |----30:EXCHANGE | distribution type: BROADCAST diff --git a/fe/fe-core/src/test/resources/sql/tpch-histogram-cost/q12.sql b/fe/fe-core/src/test/resources/sql/tpch-histogram-cost/q12.sql index d2989aa205287..f87d498ea7ea7 100644 --- a/fe/fe-core/src/test/resources/sql/tpch-histogram-cost/q12.sql +++ b/fe/fe-core/src/test/resources/sql/tpch-histogram-cost/q12.sql @@ -9,8 +9,8 @@ distribution type: GATHER cardinality: 2 column statistics: * L_SHIPMODE-->[-Infinity, Infinity, 0.0, 10.0, 2.0] ESTIMATE -* sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE -* sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +* sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE +* sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE PLAN FRAGMENT 1(F03) @@ -24,8 +24,8 @@ OutPut Exchange Id: 10 | cardinality: 2 | column statistics: | * L_SHIPMODE-->[-Infinity, Infinity, 0.0, 10.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE | 8:AGGREGATE (merge finalize) | aggregate: sum[([30: sum, BIGINT, true]); args: BIGINT; result: BIGINT; args nullable: true; result nullable: true], sum[([31: sum, BIGINT, true]); args: BIGINT; result: BIGINT; args nullable: true; result nullable: true] @@ -33,8 +33,8 @@ OutPut Exchange Id: 10 | cardinality: 2 | column statistics: | * L_SHIPMODE-->[-Infinity, Infinity, 0.0, 10.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE | 7:EXCHANGE distribution type: SHUFFLE @@ -54,8 +54,8 @@ OutPut Exchange Id: 07 | cardinality: 2 | column statistics: | * L_SHIPMODE-->[-Infinity, Infinity, 0.0, 10.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE | 5:Project | output columns: @@ -65,8 +65,8 @@ OutPut Exchange Id: 07 | cardinality: 6508504 | column statistics: | * L_SHIPMODE-->[-Infinity, Infinity, 0.0, 10.0, 2.0] ESTIMATE -| * case-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE -| * case-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * case-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE +| * case-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE | 4:HASH JOIN | join op: INNER JOIN (BUCKET_SHUFFLE) @@ -80,8 +80,8 @@ OutPut Exchange Id: 07 | * O_ORDERPRIORITY-->[-Infinity, Infinity, 0.0, 15.0, 5.0] ESTIMATE | * L_ORDERKEY-->[1.0, 6.0E8, 0.0, 8.0, 6508504.027934344] ESTIMATE | * L_SHIPMODE-->[-Infinity, Infinity, 0.0, 10.0, 2.0] ESTIMATE -| * case-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE -| * case-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * case-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE +| * case-->[0.0, 1.0, 0.0, 8.0, 2.0] ESTIMATE | |----3:EXCHANGE | distribution type: SHUFFLE diff --git a/fe/fe-core/src/test/resources/sql/tpch-histogram-cost/q14.sql b/fe/fe-core/src/test/resources/sql/tpch-histogram-cost/q14.sql index 2dd95a9c94887..b2436a4c8faf5 100644 --- a/fe/fe-core/src/test/resources/sql/tpch-histogram-cost/q14.sql +++ b/fe/fe-core/src/test/resources/sql/tpch-histogram-cost/q14.sql @@ -9,15 +9,15 @@ RESULT SINK | 32 <-> 100.0 * [30: sum, DOUBLE, true] / [31: sum, DOUBLE, true] | cardinality: 1 | column statistics: -| * expr-->[-Infinity, Infinity, 0.0, 8.0, 1.0] ESTIMATE +| * expr-->[0.0, 12942.348008385745, 0.0, 8.0, 1.0] ESTIMATE | 8:AGGREGATE (merge finalize) | aggregate: sum[([30: sum, DOUBLE, true]); args: DOUBLE; result: DOUBLE; args nullable: true; result nullable: true], sum[([31: sum, DOUBLE, true]); args: DOUBLE; result: DOUBLE; args nullable: true; result nullable: true] | cardinality: 1 | column statistics: -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 1.0] ESTIMATE +| * sum-->[0.0, 104949.5, 0.0, 8.0, 1.0] ESTIMATE | * sum-->[810.9, 104949.5, 0.0, 8.0, 1.0] ESTIMATE -| * expr-->[-Infinity, Infinity, 0.0, 8.0, 1.0] ESTIMATE +| * expr-->[0.0, 12942.348008385745, 0.0, 8.0, 1.0] ESTIMATE | 7:EXCHANGE distribution type: GATHER @@ -33,7 +33,7 @@ OutPut Exchange Id: 07 | aggregate: sum[(if[(22: P_TYPE LIKE 'PROMO%', [34: multiply, DOUBLE, false], 0.0); args: BOOLEAN,DOUBLE,DOUBLE; result: DOUBLE; args nullable: true; result nullable: true]); args: DOUBLE; result: DOUBLE; args nullable: true; result nullable: true], sum[([29: expr, DOUBLE, true]); args: DOUBLE; result: DOUBLE; args nullable: true; result nullable: true] | cardinality: 1 | column statistics: -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 1.0] ESTIMATE +| * sum-->[0.0, 104949.5, 0.0, 8.0, 1.0] ESTIMATE | * sum-->[810.9, 104949.5, 0.0, 8.0, 1.0] ESTIMATE | 5:Project @@ -62,7 +62,7 @@ OutPut Exchange Id: 07 | * L_DISCOUNT-->[0.0, 0.1, 0.0, 8.0, 11.0] ESTIMATE | * P_PARTKEY-->[1.0, 2.0E7, 0.0, 8.0, 7013946.675798152] ESTIMATE | * P_TYPE-->[-Infinity, Infinity, 0.0, 25.0, 150.0] ESTIMATE -| * case-->[-Infinity, Infinity, 0.0, 8.0, 932378.0] ESTIMATE +| * case-->[0.0, 104949.5, 0.0, 8.0, 932378.0] ESTIMATE | * expr-->[810.9, 104949.5, 0.0, 8.0, 932377.0] ESTIMATE | |----3:EXCHANGE diff --git a/fe/fe-core/src/test/resources/sql/tpch-histogram-cost/q8.sql b/fe/fe-core/src/test/resources/sql/tpch-histogram-cost/q8.sql index 028a995ea50a9..846ed768f629d 100644 --- a/fe/fe-core/src/test/resources/sql/tpch-histogram-cost/q8.sql +++ b/fe/fe-core/src/test/resources/sql/tpch-histogram-cost/q8.sql @@ -9,9 +9,9 @@ distribution type: GATHER cardinality: 2 column statistics: * year-->[1995.0, 1996.0, 0.0, 2.0, 2.0] ESTIMATE -* sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +* sum-->[0.0, 104949.5, 0.0, 8.0, 2.0] ESTIMATE * sum-->[810.9, 104949.5, 0.0, 8.0, 2.0] ESTIMATE -* expr-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +* expr-->[0.0, 129.42348008385744, 0.0, 8.0, 2.0] ESTIMATE PLAN FRAGMENT 1(F15) @@ -25,9 +25,9 @@ OutPut Exchange Id: 36 | cardinality: 2 | column statistics: | * year-->[1995.0, 1996.0, 0.0, 2.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 104949.5, 0.0, 8.0, 2.0] ESTIMATE | * sum-->[810.9, 104949.5, 0.0, 8.0, 2.0] ESTIMATE -| * expr-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * expr-->[0.0, 129.42348008385744, 0.0, 8.0, 2.0] ESTIMATE | 34:Project | output columns: @@ -36,7 +36,7 @@ OutPut Exchange Id: 36 | cardinality: 2 | column statistics: | * year-->[1995.0, 1996.0, 0.0, 2.0, 2.0] ESTIMATE -| * expr-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * expr-->[0.0, 129.42348008385744, 0.0, 8.0, 2.0] ESTIMATE | 33:AGGREGATE (merge finalize) | aggregate: sum[([72: sum, DOUBLE, true]); args: DOUBLE; result: DOUBLE; args nullable: true; result nullable: true], sum[([73: sum, DOUBLE, true]); args: DOUBLE; result: DOUBLE; args nullable: true; result nullable: true] @@ -44,9 +44,9 @@ OutPut Exchange Id: 36 | cardinality: 2 | column statistics: | * year-->[1995.0, 1996.0, 0.0, 2.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 104949.5, 0.0, 8.0, 2.0] ESTIMATE | * sum-->[810.9, 104949.5, 0.0, 8.0, 2.0] ESTIMATE -| * expr-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * expr-->[0.0, 129.42348008385744, 0.0, 8.0, 2.0] ESTIMATE | 32:EXCHANGE distribution type: SHUFFLE @@ -66,7 +66,7 @@ OutPut Exchange Id: 32 | cardinality: 2 | column statistics: | * year-->[1995.0, 1996.0, 0.0, 2.0, 2.0] ESTIMATE -| * sum-->[-Infinity, Infinity, 0.0, 8.0, 2.0] ESTIMATE +| * sum-->[0.0, 104949.5, 0.0, 8.0, 2.0] ESTIMATE | * sum-->[810.9, 104949.5, 0.0, 8.0, 2.0] ESTIMATE | 30:Project @@ -81,7 +81,7 @@ OutPut Exchange Id: 32 | column statistics: | * year-->[1995.0, 1996.0, 0.0, 2.0, 2.0] ESTIMATE | * expr-->[810.9, 104949.5, 0.0, 8.0, 264791.38809599995] ESTIMATE -| * case-->[-Infinity, Infinity, 0.0, 8.0, 264792.38809599995] ESTIMATE +| * case-->[0.0, 104949.5, 0.0, 8.0, 264792.38809599995] ESTIMATE | 29:HASH JOIN | join op: INNER JOIN (BROADCAST) @@ -99,7 +99,7 @@ OutPut Exchange Id: 32 | * R_REGIONKEY-->[0.0, 4.0, 0.0, 4.0, 1.0] ESTIMATE | * year-->[1995.0, 1996.0, 0.0, 2.0, 2.0] ESTIMATE | * expr-->[810.9, 104949.5, 0.0, 8.0, 264791.38809599995] ESTIMATE -| * case-->[-Infinity, Infinity, 0.0, 8.0, 264792.38809599995] ESTIMATE +| * case-->[0.0, 104949.5, 0.0, 8.0, 264792.38809599995] ESTIMATE | |----28:EXCHANGE | distribution type: BROADCAST