This is an automated email from the ASF dual-hosted git repository. dbecker pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/impala.git
commit c2ef633c60aff6ce3bf0fcffb6fc0763a7fdd3ca Author: Riza Suminto <[email protected]> AuthorDate: Thu Jul 13 12:46:03 2023 -0700 IMPALA-12282: Refine correlation factor in AggregationNode IMPALA-11842 implement crude correlation factor calculation that simply include all grouping expression. This can be made more precise by excluding literal expression such as string literal or NULL literal that often comes up in ROLLUP query. Testing: - Pass TpcdsPlannerTest Change-Id: I4ffa9e82b83e7c0042bd918ac132668a47505688 Reviewed-on: http://gerrit.cloudera.org:8080/20194 Reviewed-by: Impala Public Jenkins <[email protected]> Tested-by: Impala Public Jenkins <[email protected]> --- common/thrift/ImpalaService.thrift | 4 +-- .../org/apache/impala/planner/AggregationNode.java | 11 ++++++-- .../queries/PlannerTest/tpcds/tpcds-q22.test | 32 +++++++++++----------- .../queries/PlannerTest/tpcds/tpcds-q67.test | 18 ++++++------ 4 files changed, 35 insertions(+), 30 deletions(-) diff --git a/common/thrift/ImpalaService.thrift b/common/thrift/ImpalaService.thrift index 726264079..0ab6be4cc 100644 --- a/common/thrift/ImpalaService.thrift +++ b/common/thrift/ImpalaService.thrift @@ -827,9 +827,9 @@ enum TImpalaQueryOptions { // Correlation factor that will be used to calculate a lower memory estimation of // aggregation node when the default memory estimation exceed - // LARGE_AGG_MEM_THRESHOLD. Given N as number of grouping expressions, + // LARGE_AGG_MEM_THRESHOLD. Given N as number of non-literal grouping expressions, // the final correlation factor is calculated as: - // corrFactor = AGG_MEM_CORRELATION_FACTOR ^ N + // corrFactor = AGG_MEM_CORRELATION_FACTOR ^ max(0, N - 1) // Valid values are in [0.0, 1.0]. Setting value 1.0 will result in an equal memory // estimate as the default estimation (no change). Default to 0.5. AGG_MEM_CORRELATION_FACTOR = 163 diff --git a/fe/src/main/java/org/apache/impala/planner/AggregationNode.java b/fe/src/main/java/org/apache/impala/planner/AggregationNode.java index dae282169..91eba6686 100644 --- a/fe/src/main/java/org/apache/impala/planner/AggregationNode.java +++ b/fe/src/main/java/org/apache/impala/planner/AggregationNode.java @@ -29,6 +29,7 @@ import org.apache.impala.analysis.CaseExpr; import org.apache.impala.analysis.CaseWhenClause; import org.apache.impala.analysis.Expr; import org.apache.impala.analysis.FunctionCallExpr; +import org.apache.impala.analysis.LiteralExpr; import org.apache.impala.analysis.MultiAggregateInfo; import org.apache.impala.analysis.MultiAggregateInfo.AggPhase; import org.apache.impala.analysis.NumericLiteral; @@ -676,10 +677,14 @@ public class AggregationNode extends PlanNode { estimatePerInstanceDataBytes(lowPerInstanceCardinality, inputCardinality)); Preconditions.checkState(lowPerInstanceDataBytes <= perInstanceDataBytes); - // Given N as number of grouping expressions, - // corrFactor = AGG_MEM_CORRELATION_FACTOR ^ N + // Given N as number of non-literal grouping expressions, + // corrFactor = AGG_MEM_CORRELATION_FACTOR ^ max(0, N - 1) + long nonLiteralExprCount = aggInfo.getGroupingExprs() + .stream() + .filter(e -> !(e instanceof LiteralExpr)) + .count(); double corrFactor = Math.pow(queryOptions.getAgg_mem_correlation_factor(), - aggInfo.getGroupingExprs().size()); + Math.max(0, nonLiteralExprCount - 1)); long resolvedPerInstanceDataBytes = lowPerInstanceDataBytes + Math.round(corrFactor * (perInstanceDataBytes - lowPerInstanceDataBytes)); if (LOG.isTraceEnabled() && perInstanceDataBytes > resolvedPerInstanceDataBytes) { diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds/tpcds-q22.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds/tpcds-q22.test index 264f6aeb9..948bd7f31 100644 --- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds/tpcds-q22.test +++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds/tpcds-q22.test @@ -20,9 +20,9 @@ order by qoh, i_product_name, i_brand, i_class, i_category limit 100; ---- PLAN Max Per-Host Resource Reservation: Memory=149.44MB Threads=5 -Per-Host Resource Estimates: Memory=2.88GB +Per-Host Resource Estimates: Memory=5.86GB F00:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1 -| Per-Host Resources: mem-estimate=2.88GB mem-reservation=149.44MB thread-reservation=5 runtime-filters-memory=3.00MB +| Per-Host Resources: mem-estimate=5.86GB mem-reservation=149.44MB thread-reservation=5 runtime-filters-memory=3.00MB PLAN-ROOT SINK | output exprs: CASE valid_tid(5,7,9,11,13) WHEN 5 THEN i_product_name WHEN 7 THEN i_product_name WHEN 9 THEN i_product_name WHEN 11 THEN i_product_name WHEN 13 THEN NULL END, CASE valid_tid(5,7,9,11,13) WHEN 5 THEN i_brand WHEN 7 THEN i_brand WHEN 9 THEN i_brand WHEN 11 THEN NULL WHEN 13 THEN NULL END, CASE valid_tid(5,7,9,11,13) WHEN 5 THEN i_class WHEN 7 THEN i_class WHEN 9 THEN NULL WHEN 11 THEN NULL WHEN 13 THEN NULL END, CASE valid_tid(5,7,9,11,13) WHEN 5 THEN i_category WHEN 7 TH [...] | mem-estimate=4.00MB mem-reservation=4.00MB spill-buffer=2.00MB thread-reservation=0 @@ -36,7 +36,7 @@ PLAN-ROOT SINK 08:AGGREGATE [FINALIZE] | output: aggif(valid_tid(5,7,9,11,13) IN (CAST(5 AS INT), CAST(7 AS INT), CAST(9 AS INT), CAST(11 AS INT), CAST(13 AS INT)), CASE valid_tid(5,7,9,11,13) WHEN CAST(5 AS INT) THEN avg(inv_quantity_on_hand) WHEN CAST(7 AS INT) THEN avg(inv_quantity_on_hand) WHEN CAST(9 AS INT) THEN avg(inv_quantity_on_hand) WHEN CAST(11 AS INT) THEN avg(inv_quantity_on_hand) WHEN CAST(13 AS INT) THEN avg(inv_quantity_on_hand) END) | group by: CASE valid_tid(5,7,9,11,13) WHEN CAST(5 AS INT) THEN i_product_name WHEN CAST(7 AS INT) THEN i_product_name WHEN CAST(9 AS INT) THEN i_product_name WHEN CAST(11 AS INT) THEN i_product_name WHEN CAST(13 AS INT) THEN NULL END, CASE valid_tid(5,7,9,11,13) WHEN CAST(5 AS INT) THEN i_brand WHEN CAST(7 AS INT) THEN i_brand WHEN CAST(9 AS INT) THEN i_brand WHEN CAST(11 AS INT) THEN NULL WHEN CAST(13 AS INT) THEN NULL END, CASE valid_tid(5,7,9,11,13) WHEN CAST(5 AS INT) THEN i_class [...] -| mem-estimate=571.64MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0 +| mem-estimate=631.29MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0 | tuple-ids=14 row-size=60B cardinality=35.25M | in pipelines: 08(GETNEXT), 07(OPEN) | @@ -56,7 +56,7 @@ PLAN-ROOT SINK | Class 4 | output: avg(CAST(inv_quantity_on_hand AS BIGINT)) | group by: NULL, NULL, NULL, NULL -| mem-estimate=2.32GB mem-reservation=112.44MB thread-reservation=0 +| mem-estimate=5.24GB mem-reservation=112.44MB thread-reservation=0 | tuple-ids=4N,6N,8N,10N,12N row-size=422B cardinality=35.25M | in pipelines: 07(GETNEXT), 00(OPEN) | @@ -129,7 +129,7 @@ PLAN-ROOT SINK in pipelines: 00(GETNEXT) ---- DISTRIBUTEDPLAN Max Per-Host Resource Reservation: Memory=288.82MB Threads=10 -Per-Host Resource Estimates: Memory=4.42GB +Per-Host Resource Estimates: Memory=5.67GB F05:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1 | Per-Host Resources: mem-estimate=4.02MB mem-reservation=4.00MB thread-reservation=1 PLAN-ROOT SINK @@ -144,7 +144,7 @@ PLAN-ROOT SINK | in pipelines: 09(GETNEXT) | F04:PLAN FRAGMENT [HASH(CASE valid_tid(4,6,8,10,12) WHEN 4 THEN murmur_hash(i_product_name) WHEN 6 THEN murmur_hash(i_product_name) WHEN 8 THEN murmur_hash(i_product_name) WHEN 10 THEN murmur_hash(i_product_name) WHEN 12 THEN murmur_hash(NULL) END,CASE valid_tid(4,6,8,10,12) WHEN 4 THEN murmur_hash(i_brand) WHEN 6 THEN murmur_hash(i_brand) WHEN 8 THEN murmur_hash(i_brand) WHEN 10 THEN murmur_hash(NULL) WHEN 12 THEN murmur_hash(NULL) END,CASE valid_tid(4,6,8,10,12) WHEN 4 THEN murmur_hash [...] -Per-Host Resources: mem-estimate=2.39GB mem-reservation=142.69MB thread-reservation=1 +Per-Host Resources: mem-estimate=2.77GB mem-reservation=142.69MB thread-reservation=1 09:TOP-N [LIMIT=100] | order by: aggif(valid_tid(5,7,9,11,13) IN (5, 7, 9, 11, 13), CASE valid_tid(5,7,9,11,13) WHEN 5 THEN avg(inv_quantity_on_hand) WHEN 7 THEN avg(inv_quantity_on_hand) WHEN 9 THEN avg(inv_quantity_on_hand) WHEN 11 THEN avg(inv_quantity_on_hand) WHEN 13 THEN avg(inv_quantity_on_hand) END) ASC, CASE valid_tid(5,7,9,11,13) WHEN 5 THEN i_product_name WHEN 7 THEN i_product_name WHEN 9 THEN i_product_name WHEN 11 THEN i_product_name WHEN 13 THEN NULL END ASC, CASE valid_tid(5,7,9,11,13) WHEN 5 [...] | mem-estimate=5.47KB mem-reservation=0B thread-reservation=0 @@ -154,7 +154,7 @@ Per-Host Resources: mem-estimate=2.39GB mem-reservation=142.69MB thread-reservat 08:AGGREGATE [FINALIZE] | output: aggif(valid_tid(5,7,9,11,13) IN (CAST(5 AS INT), CAST(7 AS INT), CAST(9 AS INT), CAST(11 AS INT), CAST(13 AS INT)), CASE valid_tid(5,7,9,11,13) WHEN CAST(5 AS INT) THEN avg(inv_quantity_on_hand) WHEN CAST(7 AS INT) THEN avg(inv_quantity_on_hand) WHEN CAST(9 AS INT) THEN avg(inv_quantity_on_hand) WHEN CAST(11 AS INT) THEN avg(inv_quantity_on_hand) WHEN CAST(13 AS INT) THEN avg(inv_quantity_on_hand) END) | group by: CASE valid_tid(5,7,9,11,13) WHEN CAST(5 AS INT) THEN i_product_name WHEN CAST(7 AS INT) THEN i_product_name WHEN CAST(9 AS INT) THEN i_product_name WHEN CAST(11 AS INT) THEN i_product_name WHEN CAST(13 AS INT) THEN NULL END, CASE valid_tid(5,7,9,11,13) WHEN CAST(5 AS INT) THEN i_brand WHEN CAST(7 AS INT) THEN i_brand WHEN CAST(9 AS INT) THEN i_brand WHEN CAST(11 AS INT) THEN NULL WHEN CAST(13 AS INT) THEN NULL END, CASE valid_tid(5,7,9,11,13) WHEN CAST(5 AS INT) THEN i_class [...] -| mem-estimate=533.82MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0 +| mem-estimate=555.64MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0 | tuple-ids=14 row-size=60B cardinality=35.25M | in pipelines: 08(GETNEXT), 14(OPEN) | @@ -174,7 +174,7 @@ Per-Host Resources: mem-estimate=2.39GB mem-reservation=142.69MB thread-reservat | Class 4 | output: avg:merge(inv_quantity_on_hand) | group by: NULL, NULL, NULL, NULL -| mem-estimate=1.87GB mem-reservation=108.69MB thread-reservation=0 +| mem-estimate=2.22GB mem-reservation=108.69MB thread-reservation=0 | tuple-ids=5N,7N,9N,11N,13N row-size=422B cardinality=35.25M | in pipelines: 14(GETNEXT), 00(OPEN) | @@ -184,7 +184,7 @@ Per-Host Resources: mem-estimate=2.39GB mem-reservation=142.69MB thread-reservat | in pipelines: 00(GETNEXT) | F00:PLAN FRAGMENT [RANDOM] hosts=2 instances=2 -Per-Host Resources: mem-estimate=1.90GB mem-reservation=140.62MB thread-reservation=2 runtime-filters-memory=3.00MB +Per-Host Resources: mem-estimate=2.78GB mem-reservation=140.62MB thread-reservation=2 runtime-filters-memory=3.00MB 07:AGGREGATE [STREAMING] | Class 0 | output: avg(CAST(inv_quantity_on_hand AS BIGINT)) @@ -201,7 +201,7 @@ Per-Host Resources: mem-estimate=1.90GB mem-reservation=140.62MB thread-reservat | Class 4 | output: avg(CAST(inv_quantity_on_hand AS BIGINT)) | group by: NULL, NULL, NULL, NULL -| mem-estimate=1.76GB mem-reservation=113.00MB thread-reservation=0 +| mem-estimate=2.64GB mem-reservation=113.00MB thread-reservation=0 | tuple-ids=4N,6N,8N,10N,12N row-size=422B cardinality=35.25M | in pipelines: 00(GETNEXT) | @@ -295,7 +295,7 @@ Per-Host Resources: mem-estimate=1.90GB mem-reservation=140.62MB thread-reservat in pipelines: 00(GETNEXT) ---- PARALLELPLANS Max Per-Host Resource Reservation: Memory=300.45MB Threads=9 -Per-Host Resource Estimates: Memory=4.26GB +Per-Host Resource Estimates: Memory=5.52GB F05:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1 | Per-Instance Resources: mem-estimate=4.02MB mem-reservation=4.00MB thread-reservation=1 PLAN-ROOT SINK @@ -310,7 +310,7 @@ PLAN-ROOT SINK | in pipelines: 09(GETNEXT) | F04:PLAN FRAGMENT [HASH(CASE valid_tid(4,6,8,10,12) WHEN 4 THEN murmur_hash(i_product_name) WHEN 6 THEN murmur_hash(i_product_name) WHEN 8 THEN murmur_hash(i_product_name) WHEN 10 THEN murmur_hash(i_product_name) WHEN 12 THEN murmur_hash(NULL) END,CASE valid_tid(4,6,8,10,12) WHEN 4 THEN murmur_hash(i_brand) WHEN 6 THEN murmur_hash(i_brand) WHEN 8 THEN murmur_hash(i_brand) WHEN 10 THEN murmur_hash(NULL) WHEN 12 THEN murmur_hash(NULL) END,CASE valid_tid(4,6,8,10,12) WHEN 4 THEN murmur_hash [...] -Per-Instance Resources: mem-estimate=2.39GB mem-reservation=142.69MB thread-reservation=1 +Per-Instance Resources: mem-estimate=2.77GB mem-reservation=142.69MB thread-reservation=1 09:TOP-N [LIMIT=100] | order by: aggif(valid_tid(5,7,9,11,13) IN (5, 7, 9, 11, 13), CASE valid_tid(5,7,9,11,13) WHEN 5 THEN avg(inv_quantity_on_hand) WHEN 7 THEN avg(inv_quantity_on_hand) WHEN 9 THEN avg(inv_quantity_on_hand) WHEN 11 THEN avg(inv_quantity_on_hand) WHEN 13 THEN avg(inv_quantity_on_hand) END) ASC, CASE valid_tid(5,7,9,11,13) WHEN 5 THEN i_product_name WHEN 7 THEN i_product_name WHEN 9 THEN i_product_name WHEN 11 THEN i_product_name WHEN 13 THEN NULL END ASC, CASE valid_tid(5,7,9,11,13) WHEN 5 [...] | mem-estimate=5.47KB mem-reservation=0B thread-reservation=0 @@ -320,7 +320,7 @@ Per-Instance Resources: mem-estimate=2.39GB mem-reservation=142.69MB thread-rese 08:AGGREGATE [FINALIZE] | output: aggif(valid_tid(5,7,9,11,13) IN (CAST(5 AS INT), CAST(7 AS INT), CAST(9 AS INT), CAST(11 AS INT), CAST(13 AS INT)), CASE valid_tid(5,7,9,11,13) WHEN CAST(5 AS INT) THEN avg(inv_quantity_on_hand) WHEN CAST(7 AS INT) THEN avg(inv_quantity_on_hand) WHEN CAST(9 AS INT) THEN avg(inv_quantity_on_hand) WHEN CAST(11 AS INT) THEN avg(inv_quantity_on_hand) WHEN CAST(13 AS INT) THEN avg(inv_quantity_on_hand) END) | group by: CASE valid_tid(5,7,9,11,13) WHEN CAST(5 AS INT) THEN i_product_name WHEN CAST(7 AS INT) THEN i_product_name WHEN CAST(9 AS INT) THEN i_product_name WHEN CAST(11 AS INT) THEN i_product_name WHEN CAST(13 AS INT) THEN NULL END, CASE valid_tid(5,7,9,11,13) WHEN CAST(5 AS INT) THEN i_brand WHEN CAST(7 AS INT) THEN i_brand WHEN CAST(9 AS INT) THEN i_brand WHEN CAST(11 AS INT) THEN NULL WHEN CAST(13 AS INT) THEN NULL END, CASE valid_tid(5,7,9,11,13) WHEN CAST(5 AS INT) THEN i_class [...] -| mem-estimate=533.82MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0 +| mem-estimate=555.64MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0 | tuple-ids=14 row-size=60B cardinality=35.25M | in pipelines: 08(GETNEXT), 14(OPEN) | @@ -340,7 +340,7 @@ Per-Instance Resources: mem-estimate=2.39GB mem-reservation=142.69MB thread-rese | Class 4 | output: avg:merge(inv_quantity_on_hand) | group by: NULL, NULL, NULL, NULL -| mem-estimate=1.87GB mem-reservation=108.69MB thread-reservation=0 +| mem-estimate=2.22GB mem-reservation=108.69MB thread-reservation=0 | tuple-ids=5N,7N,9N,11N,13N row-size=422B cardinality=35.25M | in pipelines: 14(GETNEXT), 00(OPEN) | @@ -351,7 +351,7 @@ Per-Instance Resources: mem-estimate=2.39GB mem-reservation=142.69MB thread-rese | F00:PLAN FRAGMENT [RANDOM] hosts=2 instances=2 Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB -Per-Instance Resources: mem-estimate=1.79GB mem-reservation=129.00MB thread-reservation=1 +Per-Instance Resources: mem-estimate=2.68GB mem-reservation=129.00MB thread-reservation=1 07:AGGREGATE [STREAMING] | Class 0 | output: avg(CAST(inv_quantity_on_hand AS BIGINT)) @@ -368,7 +368,7 @@ Per-Instance Resources: mem-estimate=1.79GB mem-reservation=129.00MB thread-rese | Class 4 | output: avg(CAST(inv_quantity_on_hand AS BIGINT)) | group by: NULL, NULL, NULL, NULL -| mem-estimate=1.76GB mem-reservation=113.00MB thread-reservation=0 +| mem-estimate=2.64GB mem-reservation=113.00MB thread-reservation=0 | tuple-ids=4N,6N,8N,10N,12N row-size=422B cardinality=35.25M | in pipelines: 00(GETNEXT) | diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds/tpcds-q67.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds/tpcds-q67.test index 1c81c16fe..4f90870f7 100644 --- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds/tpcds-q67.test +++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds/tpcds-q67.test @@ -42,9 +42,9 @@ order by i_category limit 100; ---- PLAN Max Per-Host Resource Reservation: Memory=251.75MB Threads=5 -Per-Host Resource Estimates: Memory=3.59GB +Per-Host Resource Estimates: Memory=4.19GB F00:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1 -| Per-Host Resources: mem-estimate=3.59GB mem-reservation=251.75MB thread-reservation=5 runtime-filters-memory=3.00MB +| Per-Host Resources: mem-estimate=4.19GB mem-reservation=251.75MB thread-reservation=5 runtime-filters-memory=3.00MB PLAN-ROOT SINK | output exprs: i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy, s_store_id, sumsales, rk | mem-estimate=4.00MB mem-reservation=4.00MB spill-buffer=2.00MB thread-reservation=0 @@ -81,7 +81,7 @@ PLAN-ROOT SINK 08:AGGREGATE [FINALIZE] | output: aggif(valid_tid(4,5,6,7,8,9,10,11,12) IN (CAST(4 AS INT), CAST(5 AS INT), CAST(6 AS INT), CAST(7 AS INT), CAST(8 AS INT), CAST(9 AS INT), CAST(10 AS INT), CAST(11 AS INT), CAST(12 AS INT)), CASE valid_tid(4,5,6,7,8,9,10,11,12) WHEN CAST(4 AS INT) THEN sum(coalesce(ss_sales_price * ss_quantity, 0)) WHEN CAST(5 AS INT) THEN sum(coalesce(ss_sales_price * ss_quantity, 0)) WHEN CAST(6 AS INT) THEN sum(coalesce(ss_sales_price * ss_quantity, 0)) WHEN CAST(7 AS INT) THEN sum(coalesce( [...] | group by: CASE valid_tid(4,5,6,7,8,9,10,11,12) WHEN CAST(4 AS INT) THEN i_category WHEN CAST(5 AS INT) THEN i_category WHEN CAST(6 AS INT) THEN i_category WHEN CAST(7 AS INT) THEN i_category WHEN CAST(8 AS INT) THEN i_category WHEN CAST(9 AS INT) THEN i_category WHEN CAST(10 AS INT) THEN i_category WHEN CAST(11 AS INT) THEN i_category WHEN CAST(12 AS INT) THEN NULL END, CASE valid_tid(4,5,6,7,8,9,10,11,12) WHEN CAST(4 AS INT) THEN i_class WHEN CAST(5 AS INT) THEN i_class WHEN CAST(6 A [...] -| mem-estimate=513.92MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0 +| mem-estimate=515.85MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0 | tuple-ids=13 row-size=92B cardinality=15.09M | in pipelines: 08(GETNEXT), 07(OPEN) | @@ -113,7 +113,7 @@ PLAN-ROOT SINK | Class 8 | output: sum(coalesce(ss_sales_price * CAST(ss_quantity AS DECIMAL(10,0)), CAST(0 AS DECIMAL(18,2)))) | group by: NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -| mem-estimate=3.08GB mem-reservation=210.75MB thread-reservation=0 +| mem-estimate=3.68GB mem-reservation=210.75MB thread-reservation=0 | tuple-ids=4N,5N,6N,7N,8N,9N,10N,11N,12N row-size=1.07KB cardinality=15.09M | in pipelines: 07(GETNEXT), 00(OPEN) | @@ -187,7 +187,7 @@ PLAN-ROOT SINK in pipelines: 00(GETNEXT) ---- DISTRIBUTEDPLAN Max Per-Host Resource Reservation: Memory=477.45MB Threads=11 -Per-Host Resource Estimates: Memory=6.58GB +Per-Host Resource Estimates: Memory=6.69GB F06:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1 | Per-Host Resources: mem-estimate=4.03MB mem-reservation=4.00MB thread-reservation=1 PLAN-ROOT SINK @@ -237,7 +237,7 @@ Per-Host Resources: mem-estimate=4.08MB mem-reservation=4.00MB thread-reservatio | in pipelines: 09(GETNEXT) | F04:PLAN FRAGMENT [HASH(CASE valid_tid(4,5,6,7,8,9,10,11,12) WHEN 4 THEN murmur_hash(i_category) WHEN 5 THEN murmur_hash(i_category) WHEN 6 THEN murmur_hash(i_category) WHEN 7 THEN murmur_hash(i_category) WHEN 8 THEN murmur_hash(i_category) WHEN 9 THEN murmur_hash(i_category) WHEN 10 THEN murmur_hash(i_category) WHEN 11 THEN murmur_hash(i_category) WHEN 12 THEN murmur_hash(NULL) END,CASE valid_tid(4,5,6,7,8,9,10,11,12) WHEN 4 THEN murmur_hash(i_class) WHEN 5 THEN murmur_hash(i_class) WHE [...] -Per-Host Resources: mem-estimate=3.26GB mem-reservation=243.81MB thread-reservation=1 +Per-Host Resources: mem-estimate=3.27GB mem-reservation=243.81MB thread-reservation=1 09:TOP-N | order by: CASE valid_tid(4,5,6,7,8,9,10,11,12) WHEN 4 THEN i_category WHEN 5 THEN i_category WHEN 6 THEN i_category WHEN 7 THEN i_category WHEN 8 THEN i_category WHEN 9 THEN i_category WHEN 10 THEN i_category WHEN 11 THEN i_category WHEN 12 THEN NULL END ASC NULLS LAST, aggif(valid_tid(4,5,6,7,8,9,10,11,12) IN (4, 5, 6, 7, 8, 9, 10, 11, 12), CASE valid_tid(4,5,6,7,8,9,10,11,12) WHEN 4 THEN sum(coalesce(ss_sales_price * ss_quantity, 0)) WHEN 5 THEN sum(coalesce(ss_sales_price * ss_quan [...] | limit with ties: 200 @@ -281,7 +281,7 @@ Per-Host Resources: mem-estimate=3.26GB mem-reservation=243.81MB thread-reservat | Class 8 | output: sum:merge(coalesce(ss_sales_price * ss_quantity, 0)) | group by: NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -| mem-estimate=2.77GB mem-reservation=209.81MB thread-reservation=0 +| mem-estimate=2.78GB mem-reservation=209.81MB thread-reservation=0 | tuple-ids=4N,5N,6N,7N,8N,9N,10N,11N,12N row-size=1.07KB cardinality=15.09M | in pipelines: 17(GETNEXT), 00(OPEN) | @@ -291,7 +291,7 @@ Per-Host Resources: mem-estimate=3.26GB mem-reservation=243.81MB thread-reservat | in pipelines: 00(GETNEXT) | F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3 -Per-Host Resources: mem-estimate=3.12GB mem-reservation=223.62MB thread-reservation=2 runtime-filters-memory=3.00MB +Per-Host Resources: mem-estimate=3.23GB mem-reservation=223.62MB thread-reservation=2 runtime-filters-memory=3.00MB 07:AGGREGATE [STREAMING] | Class 0 | output: sum(coalesce(ss_sales_price * CAST(ss_quantity AS DECIMAL(10,0)), CAST(0 AS DECIMAL(18,2)))) @@ -320,7 +320,7 @@ Per-Host Resources: mem-estimate=3.12GB mem-reservation=223.62MB thread-reservat | Class 8 | output: sum(coalesce(ss_sales_price * CAST(ss_quantity AS DECIMAL(10,0)), CAST(0 AS DECIMAL(18,2)))) | group by: NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -| mem-estimate=3.03GB mem-reservation=211.00MB thread-reservation=0 +| mem-estimate=3.14GB mem-reservation=211.00MB thread-reservation=0 | tuple-ids=4N,5N,6N,7N,8N,9N,10N,11N,12N row-size=1.07KB cardinality=15.09M | in pipelines: 00(GETNEXT) |
