You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu> on 2026/09/10 22:30:26 UTC
[L] Change in asterixdb[master]: [ASTERIXDB-3830][COMP] Enable hash-based COUNT(DISTINCT) by default
From Shahrzad Shirazi <sh...@ucr.edu>:
Shahrzad Shirazi has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21739?usp=email )
Change subject: [ASTERIXDB-3830][COMP] Enable hash-based COUNT(DISTINCT) by default
......................................................................
[ASTERIXDB-3830][COMP] Enable hash-based COUNT(DISTINCT) by default
Change-Id: I3abfe8c99e68959a20c1b0a7022b698dec75db30
---
M asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.15.plan
M asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.16.plan
M asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.3.plan
M asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.4.plan
M asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.8.plan
M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.10.plan
M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.14.plan
M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.9.plan
M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/cbo-join/computed-join-predicate.plan
M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q16.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm
M asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.020.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
15 files changed, 465 insertions(+), 461 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/39/21739/1
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.15.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.15.plan
index 46d05cb..5fbb4ac 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.15.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.15.plan
@@ -1,8 +1,8 @@
-distribute result [$$122]
+distribute result [$$139]
-- DISTRIBUTE_RESULT |LOCAL|
exchange
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- assign [$$122] <- [{"sum_distinct_x": $$123, "sum_y": $$124, "sum_distinct_z": $$125, "avg_distinct_x": $$126, "avg_distinct_y": $$127, "count_x": $$128, "count_distinct_y": $$129, "avg_z": $$130, "count_distinct_z": $$131}] project: [$$122]
+ assign [$$139] <- [{"sum_distinct_x": $$140, "sum_y": $$141, "sum_distinct_z": $$142, "avg_distinct_x": $$143, "avg_distinct_y": $$144, "count_x": $$145, "count_distinct_y": $$146, "avg_z": $$147, "count_distinct_z": $$148}] project: [$$139]
-- ASSIGN |LOCAL|
exchange
-- ONE_TO_ONE_EXCHANGE |LOCAL|
@@ -18,16 +18,16 @@
-- NESTED_LOOP |LOCAL|
exchange
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- aggregate [$$123, $$126] <- [agg-sql-sum($$141), agg-sql-avg($$141)]
+ aggregate [$$140, $$143] <- [agg-sql-sum($$158), agg-sql-avg($$158)]
-- AGGREGATE |LOCAL|
exchange
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- distinct ([$$141])
+ distinct ([$$158])
-- PRE_SORTED_DISTINCT_BY |LOCAL|
exchange
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- order (ASC, $$141)
- -- STABLE_SORT [$$141(ASC)] |LOCAL|
+ order (ASC, $$158)
+ -- STABLE_SORT [$$158(ASC)] |LOCAL|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
join (true)
@@ -42,14 +42,18 @@
-- REPLICATE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- replicate
- -- REPLICATE |UNPARTITIONED|
+ assign [$$158] <- [$$182] project: [$$158]
+ -- ASSIGN |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- unnest $$141 <- range(1, 5)
- -- UNNEST |UNPARTITIONED|
- empty-tuple-source
- -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
+ replicate
+ -- REPLICATE |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ unnest $$182 <- range(1, 5)
+ -- UNNEST |UNPARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
replicate
@@ -64,7 +68,7 @@
-- REPLICATE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- unnest $$142 <- range(6, 10)
+ unnest $$159 <- range(6, 10)
-- UNNEST |UNPARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
@@ -82,94 +86,100 @@
-- REPLICATE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- unnest $$143 <- range(11, 15)
+ unnest $$160 <- range(11, 15)
-- UNNEST |UNPARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
exchange
- -- ONE_TO_ONE_EXCHANGE |LOCAL|
- aggregate [$$124, $$128, $$130] <- [agg-global-sql-sum($$168), agg-sql-sum($$169), agg-global-sql-avg($$170)]
- -- AGGREGATE |LOCAL|
- aggregate [$$168, $$169, $$170] <- [agg-local-sql-sum($$154), agg-sql-count($$153), agg-local-sql-avg($$155)]
- -- AGGREGATE |LOCAL|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- join (true)
- -- NESTED_LOOP |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- join (true)
- -- NESTED_LOOP |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- assign [$$153] <- [$$141] project: [$$153]
- -- ASSIGN |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- replicate
- -- REPLICATE |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- replicate
- -- REPLICATE |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- unnest $$141 <- range(1, 5)
- -- UNNEST |UNPARTITIONED|
- empty-tuple-source
- -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- replicate
- -- REPLICATE |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- assign [$$154] <- [$$142] project: [$$154]
- -- ASSIGN |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- replicate
- -- REPLICATE |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- unnest $$142 <- range(6, 10)
- -- UNNEST |UNPARTITIONED|
- empty-tuple-source
- -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- assign [$$155] <- [$$167] project: [$$155]
- -- ASSIGN |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- replicate
- -- REPLICATE |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- assign [$$167] <- [$$143] project: [$$167]
- -- ASSIGN |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- replicate
- -- REPLICATE |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- unnest $$143 <- range(11, 15)
- -- UNNEST |UNPARTITIONED|
- empty-tuple-source
- -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ aggregate [$$141, $$145, $$146, $$147, $$148] <- [agg-sql-sum($$171), agg-sql-count($$170), agg-sql-count-distinct-hash($$171), agg-sql-avg($$172), agg-sql-count-distinct-hash($$172)]
+ -- AGGREGATE |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ join (true)
+ -- NESTED_LOOP |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ join (true)
+ -- NESTED_LOOP |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ assign [$$170] <- [$$158] project: [$$170]
+ -- ASSIGN |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ replicate
+ -- REPLICATE |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ assign [$$158] <- [$$182] project: [$$158]
+ -- ASSIGN |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ replicate
+ -- REPLICATE |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ unnest $$182 <- range(1, 5)
+ -- UNNEST |UNPARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ assign [$$171] <- [$$y] project: [$$171]
+ -- ASSIGN |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ replicate
+ -- REPLICATE |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ assign [$$y] <- [$$159] project: [$$y]
+ -- ASSIGN |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ replicate
+ -- REPLICATE |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ unnest $$159 <- range(6, 10)
+ -- UNNEST |UNPARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ assign [$$172] <- [$$184] project: [$$172]
+ -- ASSIGN |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ replicate
+ -- REPLICATE |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ assign [$$184] <- [$$160] project: [$$184]
+ -- ASSIGN |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ replicate
+ -- REPLICATE |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ unnest $$160 <- range(11, 15)
+ -- UNNEST |UNPARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- aggregate [$$125, $$131] <- [agg-sql-sum($$167), agg-sql-count($$167)]
+ aggregate [$$142] <- [agg-sql-sum($$184)]
-- AGGREGATE |LOCAL|
exchange
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- distinct ([$$167])
+ distinct ([$$184])
-- PRE_SORTED_DISTINCT_BY |LOCAL|
exchange
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- order (ASC, $$167)
- -- STABLE_SORT [$$167(ASC)] |LOCAL|
+ order (ASC, $$184)
+ -- STABLE_SORT [$$184(ASC)] |LOCAL|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
join (true)
@@ -184,15 +194,15 @@
-- REPLICATE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- assign [$$165] <- [$$141] project: []
- -- ASSIGN |UNPARTITIONED|
+ project ([])
+ -- STREAM_PROJECT |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
replicate
-- REPLICATE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- unnest $$141 <- range(1, 5)
+ unnest $$182 <- range(1, 5)
-- UNNEST |UNPARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
@@ -214,7 +224,7 @@
-- REPLICATE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- unnest $$142 <- range(6, 10)
+ unnest $$159 <- range(6, 10)
-- UNNEST |UNPARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
@@ -224,7 +234,7 @@
-- REPLICATE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- assign [$$167] <- [$$143] project: [$$167]
+ assign [$$184] <- [$$160] project: [$$184]
-- ASSIGN |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
@@ -232,13 +242,13 @@
-- REPLICATE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- unnest $$143 <- range(11, 15)
+ unnest $$160 <- range(11, 15)
-- UNNEST |UNPARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- aggregate [$$127, $$129] <- [agg-sql-avg($$y), agg-sql-count($$y)]
+ aggregate [$$144] <- [agg-sql-avg($$y)]
-- AGGREGATE |LOCAL|
exchange
-- ONE_TO_ONE_EXCHANGE |LOCAL|
@@ -266,40 +276,36 @@
-- REPLICATE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- assign [$$165] <- [$$141] project: []
- -- ASSIGN |UNPARTITIONED|
+ project ([])
+ -- STREAM_PROJECT |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
replicate
-- REPLICATE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- unnest $$141 <- range(1, 5)
+ unnest $$182 <- range(1, 5)
-- UNNEST |UNPARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- assign [$$y] <- [$$154] project: [$$y]
- -- ASSIGN |UNPARTITIONED|
+ replicate
+ -- REPLICATE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- replicate
- -- REPLICATE |UNPARTITIONED|
+ assign [$$y] <- [$$159] project: [$$y]
+ -- ASSIGN |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- assign [$$154] <- [$$142] project: [$$154]
- -- ASSIGN |UNPARTITIONED|
+ replicate
+ -- REPLICATE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- replicate
- -- REPLICATE |UNPARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- unnest $$142 <- range(6, 10)
- -- UNNEST |UNPARTITIONED|
- empty-tuple-source
- -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
+ unnest $$159 <- range(6, 10)
+ -- UNNEST |UNPARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
assign [] <- [] project: []
@@ -318,7 +324,7 @@
-- REPLICATE |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- unnest $$143 <- range(11, 15)
+ unnest $$160 <- range(11, 15)
-- UNNEST |UNPARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.16.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.16.plan
index 9e7a0b3..daab513 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.16.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.16.plan
@@ -1,13 +1,13 @@
-distribute result [$$145]
+distribute result [$$166]
-- DISTRIBUTE_RESULT |LOCAL|
exchange
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- assign [$$145] <- [{"g": $$g, "sum_distinct_x": $$146, "sum_y": $$147, "sum_distinct_z": $$148, "avg_distinct_x": $$149, "avg_distinct_y": $$150, "count_x": $$151, "count_distinct_y": $$152, "avg_z": $$153, "count_distinct_z": $$154}] project: [$$145]
+ assign [$$166] <- [{"g": $$g, "sum_distinct_x": $$167, "sum_y": $$168, "sum_distinct_z": $$169, "avg_distinct_x": $$170, "avg_distinct_y": $$171, "count_x": $$172, "count_distinct_y": $$173, "avg_z": $$174, "count_distinct_z": $$175}] project: [$$166]
-- ASSIGN |LOCAL|
exchange
-- ONE_TO_ONE_EXCHANGE |LOCAL|
group by ([$$g := $$g]) decor ([]) {
- aggregate [$$146, $$149] <- [agg-sql-sum($$x), agg-sql-avg($$x)]
+ aggregate [$$167, $$170] <- [agg-sql-sum($$x), agg-sql-avg($$x)]
-- AGGREGATE |LOCAL|
distinct ([$$x])
-- MICRO_PRE_SORTED_DISTINCT_BY |LOCAL|
@@ -19,15 +19,13 @@
-- NESTED_TUPLE_SOURCE |LOCAL|
}
{
- aggregate [$$147, $$151, $$153] <- [agg-global-sql-sum($$182), agg-sql-sum($$183), agg-global-sql-avg($$184)]
+ aggregate [$$168, $$172, $$173, $$174, $$175] <- [agg-sql-sum($$y), agg-sql-count($$x), agg-sql-count-distinct-hash($$y), agg-sql-avg($$z), agg-sql-count-distinct-hash($$z)]
-- AGGREGATE |LOCAL|
- aggregate [$$182, $$183, $$184] <- [agg-local-sql-sum($$y), agg-sql-count($$x), agg-local-sql-avg($$z)]
- -- AGGREGATE |LOCAL|
- nested tuple source
- -- NESTED_TUPLE_SOURCE |LOCAL|
+ nested tuple source
+ -- NESTED_TUPLE_SOURCE |LOCAL|
}
{
- aggregate [$$148, $$154] <- [agg-sql-sum($$z), agg-sql-count($$z)]
+ aggregate [$$169] <- [agg-sql-sum($$z)]
-- AGGREGATE |LOCAL|
distinct ([$$z])
-- MICRO_PRE_SORTED_DISTINCT_BY |LOCAL|
@@ -39,7 +37,7 @@
-- NESTED_TUPLE_SOURCE |LOCAL|
}
{
- aggregate [$$150, $$152] <- [agg-sql-avg($$y), agg-sql-count($$y)]
+ aggregate [$$171] <- [agg-sql-avg($$y)]
-- AGGREGATE |LOCAL|
distinct ([$$y])
-- MICRO_PRE_SORTED_DISTINCT_BY |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.3.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.3.plan
index 2007ceb..26cc6ef 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.3.plan
@@ -1,46 +1,38 @@
-distribute result [$$47]
+distribute result [$$54]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- assign [$$47] <- [{"count_distinct_x": $$50}] project: [$$47]
+ assign [$$54] <- [{"count_distinct_x": $$57}] project: [$$54]
-- ASSIGN |UNPARTITIONED|
- aggregate [$$50] <- [agg-sql-count(1)]
+ aggregate [$$57] <- [agg-sql-count-distinct-hash($$52)]
-- AGGREGATE |UNPARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$45(ASC) ] |PARTITIONED|
- distinct ([$$45])
- -- PRE_SORTED_DISTINCT_BY |PARTITIONED|
+ -- RANDOM_MERGE_EXCHANGE |PARTITIONED|
+ join (true)
+ -- NESTED_LOOP |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$45)
- -- STABLE_SORT [$$45(ASC)] |PARTITIONED|
+ assign [$$52] <- [$$x.getField(1)] project: [$$52]
+ -- ASSIGN |PARTITIONED|
+ project ([$$x])
+ -- STREAM_PROJECT |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ data-scan []<-[$$55, $$x] <- test.d1
+ -- DATASOURCE_SCAN |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ exchange
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ project ([])
+ -- STREAM_PROJECT |PARTITIONED|
exchange
- -- HASH_PARTITION_EXCHANGE [$$45] |PARTITIONED|
- join (true)
- -- NESTED_LOOP |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ data-scan []<-[$$56, $$y] <- test.d2
+ -- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$45] <- [$$x.getField(1)] project: [$$45]
- -- ASSIGN |PARTITIONED|
- project ([$$x])
- -- STREAM_PROJECT |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$48, $$x] <- test.d1
- -- DATASOURCE_SCAN |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- empty-tuple-source
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- exchange
- -- BROADCAST_EXCHANGE |PARTITIONED|
- project ([])
- -- STREAM_PROJECT |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$49, $$y] <- test.d2
- -- DATASOURCE_SCAN |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- empty-tuple-source
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.4.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.4.plan
index 3788451..2ba1dc5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.4.plan
@@ -1,46 +1,98 @@
-distribute result [$$56]
+distribute result [$$64]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- assign [$$56] <- [{"count_distinct_x": $$59, "sum_distinct_x": $$60}] project: [$$56]
+ assign [$$64] <- [{"count_distinct_x": $$67, "sum_distinct_x": $$68}] project: [$$64]
-- ASSIGN |UNPARTITIONED|
- aggregate [$$59, $$60] <- [agg-sql-count($$49), agg-sql-sum($$49)]
- -- AGGREGATE |UNPARTITIONED|
- exchange
- -- SORT_MERGE_EXCHANGE [$$49(ASC) ] |PARTITIONED|
- distinct ([$$49])
- -- PRE_SORTED_DISTINCT_BY |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$49)
- -- STABLE_SORT [$$49(ASC)] |PARTITIONED|
- exchange
- -- HASH_PARTITION_EXCHANGE [$$49] |PARTITIONED|
- join (true)
- -- NESTED_LOOP |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$49] <- [$$x.getField(1)] project: [$$49]
- -- ASSIGN |PARTITIONED|
- project ([$$x])
- -- STREAM_PROJECT |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ join (true)
+ -- NESTED_LOOP |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ aggregate [$$67] <- [agg-sql-count-distinct-hash($$72)]
+ -- AGGREGATE |UNPARTITIONED|
+ exchange
+ -- RANDOM_MERGE_EXCHANGE |PARTITIONED|
+ assign [$$72] <- [$$57] project: [$$72]
+ -- ASSIGN |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ replicate
+ -- REPLICATE |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ join (true)
+ -- NESTED_LOOP |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$57, $$x] <- test.d1
- -- DATASOURCE_SCAN |PARTITIONED|
+ assign [$$57] <- [$$x.getField(1)] project: [$$57]
+ -- ASSIGN |PARTITIONED|
+ project ([$$x])
+ -- STREAM_PROJECT |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ data-scan []<-[$$65, $$x] <- test.d1
+ -- DATASOURCE_SCAN |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ exchange
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ project ([])
+ -- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- empty-tuple-source
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- exchange
- -- BROADCAST_EXCHANGE |PARTITIONED|
- project ([])
- -- STREAM_PROJECT |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$58, $$y] <- test.d2
- -- DATASOURCE_SCAN |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- empty-tuple-source
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ data-scan []<-[$$66, $$y] <- test.d2
+ -- DATASOURCE_SCAN |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ aggregate [$$68] <- [agg-sql-sum($$57)]
+ -- AGGREGATE |UNPARTITIONED|
+ exchange
+ -- SORT_MERGE_EXCHANGE [$$57(ASC) ] |PARTITIONED|
+ distinct ([$$57])
+ -- PRE_SORTED_DISTINCT_BY |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ order (ASC, $$57)
+ -- STABLE_SORT [$$57(ASC)] |PARTITIONED|
+ exchange
+ -- HASH_PARTITION_EXCHANGE [$$57] |PARTITIONED|
+ replicate
+ -- REPLICATE |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ join (true)
+ -- NESTED_LOOP |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ assign [$$57] <- [$$x.getField(1)] project: [$$57]
+ -- ASSIGN |PARTITIONED|
+ project ([$$x])
+ -- STREAM_PROJECT |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ data-scan []<-[$$65, $$x] <- test.d1
+ -- DATASOURCE_SCAN |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ exchange
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ project ([])
+ -- STREAM_PROJECT |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ data-scan []<-[$$66, $$y] <- test.d2
+ -- DATASOURCE_SCAN |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.8.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.8.plan
index 9c9693d..ef06fa6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.8.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.8.plan
@@ -1,8 +1,8 @@
-distribute result [$$131]
+distribute result [$$148]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- assign [$$131] <- [{"sum_distinct_x": $$135, "sum_y": $$136, "sum_distinct_z": $$137, "avg_distinct_x": $$138, "avg_distinct_y": $$139, "count_x": $$140, "count_distinct_y": $$141, "avg_z": $$142, "count_distinct_z": $$143}] project: [$$131]
+ assign [$$148] <- [{"sum_distinct_x": $$152, "sum_y": $$153, "sum_distinct_z": $$154, "avg_distinct_x": $$155, "avg_distinct_y": $$156, "count_x": $$157, "count_distinct_y": $$158, "avg_z": $$159, "count_distinct_z": $$160}] project: [$$148]
-- ASSIGN |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
@@ -18,18 +18,18 @@
-- NESTED_LOOP |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- aggregate [$$135, $$138] <- [agg-sql-sum($$156), agg-sql-avg($$156)]
+ aggregate [$$152, $$155] <- [agg-sql-sum($$173), agg-sql-avg($$173)]
-- AGGREGATE |UNPARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$156(ASC) ] |PARTITIONED|
- distinct ([$$156])
+ -- SORT_MERGE_EXCHANGE [$$173(ASC) ] |PARTITIONED|
+ distinct ([$$173])
-- PRE_SORTED_DISTINCT_BY |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$156)
- -- STABLE_SORT [$$156(ASC)] |PARTITIONED|
+ order (ASC, $$173)
+ -- STABLE_SORT [$$173(ASC)] |PARTITIONED|
exchange
- -- HASH_PARTITION_EXCHANGE [$$156] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$173] |PARTITIONED|
join (true)
-- NESTED_LOOP |PARTITIONED|
exchange
@@ -42,9 +42,9 @@
-- REPLICATE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$156] <- [$$159.getField(1)] project: [$$156]
+ assign [$$173] <- [$$176.getField(1)] project: [$$173]
-- ASSIGN |PARTITIONED|
- project ([$$159])
+ project ([$$176])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -52,7 +52,7 @@
-- REPLICATE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$160, $$159] <- test.d1
+ data-scan []<-[$$177, $$176] <- test.d1
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -64,15 +64,15 @@
-- REPLICATE |PARTITIONED|
exchange
-- BROADCAST_EXCHANGE |PARTITIONED|
- assign [$$162, $$161] <- [$$180, $$179] project: []
- -- ASSIGN |PARTITIONED|
+ project ([])
+ -- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
replicate
-- REPLICATE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$180, $$179] <- test.d2
+ data-scan []<-[$$179, $$178] <- test.d2
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -84,7 +84,7 @@
-- REPLICATE |PARTITIONED|
exchange
-- BROADCAST_EXCHANGE |PARTITIONED|
- assign [$$164, $$163] <- [$$200, $$199] project: []
+ assign [$$181, $$180] <- [$$217, $$216] project: []
-- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -92,7 +92,7 @@
-- REPLICATE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$200, $$199] <- test.d3
+ data-scan []<-[$$217, $$216] <- test.d3
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -100,55 +100,29 @@
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- aggregate [$$136, $$140, $$142] <- [agg-global-sql-sum($$201), agg-sql-sum($$202), agg-global-sql-avg($$203)]
+ aggregate [$$153, $$157, $$158, $$159, $$160] <- [agg-sql-sum($$192), agg-sql-count($$191), agg-sql-count-distinct-hash($$192), agg-sql-avg($$193), agg-sql-count-distinct-hash($$193)]
-- AGGREGATE |UNPARTITIONED|
exchange
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- aggregate [$$201, $$202, $$203] <- [agg-local-sql-sum($$175), agg-sql-count($$174), agg-local-sql-avg($$176)]
- -- AGGREGATE |PARTITIONED|
+ join (true)
+ -- NESTED_LOOP |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
join (true)
-- NESTED_LOOP |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join (true)
- -- NESTED_LOOP |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$174] <- [$$156] project: [$$174]
- -- ASSIGN |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- replicate
- -- REPLICATE |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$156] <- [$$159.getField(1)] project: [$$156]
- -- ASSIGN |PARTITIONED|
- project ([$$159])
- -- STREAM_PROJECT |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- replicate
- -- REPLICATE |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$160, $$159] <- test.d1
- -- DATASOURCE_SCAN |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- empty-tuple-source
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ assign [$$191] <- [$$173] project: [$$191]
+ -- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
replicate
-- REPLICATE |PARTITIONED|
exchange
- -- BROADCAST_EXCHANGE |PARTITIONED|
- assign [$$175] <- [$$179.getField(1)] project: [$$175]
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ assign [$$173] <- [$$176.getField(1)] project: [$$173]
-- ASSIGN |PARTITIONED|
- project ([$$179])
+ project ([$$176])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -156,7 +130,7 @@
-- REPLICATE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$180, $$179] <- test.d2
+ data-scan []<-[$$177, $$176] <- test.d1
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -164,7 +138,7 @@
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$176] <- [$$194] project: [$$176]
+ assign [$$192] <- [$$111] project: [$$192]
-- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -172,36 +146,62 @@
-- REPLICATE |PARTITIONED|
exchange
-- BROADCAST_EXCHANGE |PARTITIONED|
- assign [$$194] <- [$$199.getField(1)] project: [$$194]
+ assign [$$111] <- [$$y.getField(1)] project: [$$111]
-- ASSIGN |PARTITIONED|
- project ([$$199])
- -- STREAM_PROJECT |PARTITIONED|
+ assign [$$150, $$y] <- [$$179, $$178] project: [$$y]
+ -- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
replicate
-- REPLICATE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$200, $$199] <- test.d3
+ data-scan []<-[$$179, $$178] <- test.d2
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ assign [$$193] <- [$$211] project: [$$193]
+ -- ASSIGN |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ replicate
+ -- REPLICATE |PARTITIONED|
+ exchange
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ assign [$$211] <- [$$216.getField(1)] project: [$$211]
+ -- ASSIGN |PARTITIONED|
+ project ([$$216])
+ -- STREAM_PROJECT |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ replicate
+ -- REPLICATE |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ data-scan []<-[$$217, $$216] <- test.d3
+ -- DATASOURCE_SCAN |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- aggregate [$$137, $$143] <- [agg-sql-sum($$194), agg-sql-count($$194)]
+ aggregate [$$154] <- [agg-sql-sum($$211)]
-- AGGREGATE |UNPARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$194(ASC) ] |PARTITIONED|
- distinct ([$$194])
+ -- SORT_MERGE_EXCHANGE [$$211(ASC) ] |PARTITIONED|
+ distinct ([$$211])
-- PRE_SORTED_DISTINCT_BY |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$194)
- -- STABLE_SORT [$$194(ASC)] |PARTITIONED|
+ order (ASC, $$211)
+ -- STABLE_SORT [$$211(ASC)] |PARTITIONED|
exchange
- -- HASH_PARTITION_EXCHANGE [$$194] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$211] |PARTITIONED|
join (true)
-- NESTED_LOOP |PARTITIONED|
exchange
@@ -214,7 +214,7 @@
-- REPLICATE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$196, $$195] <- [$$160, $$159] project: []
+ assign [$$213, $$212] <- [$$177, $$176] project: []
-- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -222,7 +222,7 @@
-- REPLICATE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$160, $$159] <- test.d1
+ data-scan []<-[$$177, $$176] <- test.d1
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -238,15 +238,15 @@
-- REPLICATE |PARTITIONED|
exchange
-- BROADCAST_EXCHANGE |PARTITIONED|
- assign [$$162, $$161] <- [$$180, $$179] project: []
- -- ASSIGN |PARTITIONED|
+ project ([])
+ -- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
replicate
-- REPLICATE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$180, $$179] <- test.d2
+ data-scan []<-[$$179, $$178] <- test.d2
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -258,9 +258,9 @@
-- REPLICATE |PARTITIONED|
exchange
-- BROADCAST_EXCHANGE |PARTITIONED|
- assign [$$194] <- [$$199.getField(1)] project: [$$194]
+ assign [$$211] <- [$$216.getField(1)] project: [$$211]
-- ASSIGN |PARTITIONED|
- project ([$$199])
+ project ([$$216])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -268,7 +268,7 @@
-- REPLICATE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$200, $$199] <- test.d3
+ data-scan []<-[$$217, $$216] <- test.d3
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -276,18 +276,18 @@
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- aggregate [$$139, $$141] <- [agg-sql-avg($$94), agg-sql-count($$94)]
+ aggregate [$$156] <- [agg-sql-avg($$111)]
-- AGGREGATE |UNPARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$94(ASC) ] |PARTITIONED|
- distinct ([$$94])
+ -- SORT_MERGE_EXCHANGE [$$111(ASC) ] |PARTITIONED|
+ distinct ([$$111])
-- PRE_SORTED_DISTINCT_BY |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$94)
- -- STABLE_SORT [$$94(ASC)] |PARTITIONED|
+ order (ASC, $$111)
+ -- STABLE_SORT [$$111(ASC)] |PARTITIONED|
exchange
- -- HASH_PARTITION_EXCHANGE [$$94] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$111] |PARTITIONED|
join (true)
-- NESTED_LOOP |PARTITIONED|
exchange
@@ -304,7 +304,7 @@
-- REPLICATE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$196, $$195] <- [$$160, $$159] project: []
+ assign [$$213, $$212] <- [$$177, $$176] project: []
-- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -312,7 +312,7 @@
-- REPLICATE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$160, $$159] <- test.d1
+ data-scan []<-[$$177, $$176] <- test.d1
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -320,30 +320,26 @@
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$94] <- [$$175] project: [$$94]
- -- ASSIGN |PARTITIONED|
+ replicate
+ -- REPLICATE |PARTITIONED|
exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- replicate
- -- REPLICATE |PARTITIONED|
- exchange
- -- BROADCAST_EXCHANGE |PARTITIONED|
- assign [$$175] <- [$$179.getField(1)] project: [$$175]
- -- ASSIGN |PARTITIONED|
- project ([$$179])
- -- STREAM_PROJECT |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ assign [$$111] <- [$$y.getField(1)] project: [$$111]
+ -- ASSIGN |PARTITIONED|
+ assign [$$150, $$y] <- [$$179, $$178] project: [$$y]
+ -- ASSIGN |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ replicate
+ -- REPLICATE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- replicate
- -- REPLICATE |PARTITIONED|
+ data-scan []<-[$$179, $$178] <- test.d2
+ -- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$180, $$179] <- test.d2
- -- DATASOURCE_SCAN |PARTITIONED|
- exchange
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- empty-tuple-source
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
assign [] <- [] project: []
@@ -354,7 +350,7 @@
-- REPLICATE |PARTITIONED|
exchange
-- BROADCAST_EXCHANGE |PARTITIONED|
- assign [$$164, $$163] <- [$$200, $$199] project: []
+ assign [$$181, $$180] <- [$$217, $$216] project: []
-- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -362,7 +358,7 @@
-- REPLICATE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$200, $$199] <- test.d3
+ data-scan []<-[$$217, $$216] <- test.d3
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.10.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.10.plan
index 6d59cf8..92c059b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.10.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.10.plan
@@ -1,19 +1,25 @@
-distribute result [$$89]
+distribute result [$$91]
-- DISTRIBUTE_RESULT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$89] <- [{"g": $$g, "count_distinct_x": $$92, "sum_distinct_x": $$93}] project: [$$89]
+ assign [$$91] <- [{"g": $$g, "count_distinct_x": $$94, "sum_distinct_x": $$95}] project: [$$91]
-- ASSIGN |PARTITIONED|
exchange
-- SORT_MERGE_EXCHANGE [$$g(ASC) ] |PARTITIONED|
group by ([$$g := $$g]) decor ([]) {
- aggregate [$$92, $$93] <- [agg-sql-count($$82), agg-sql-sum($$82)]
+ aggregate [$$94] <- [agg-sql-count-distinct-hash($$84)]
-- AGGREGATE |LOCAL|
- distinct ([$$82])
+ nested tuple source
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ {
+ aggregate [$$95] <- [agg-sql-sum($$84)]
+ -- AGGREGATE |LOCAL|
+ distinct ([$$84])
-- MICRO_PRE_SORTED_DISTINCT_BY |LOCAL|
- order (ASC, $$82)
- -- MICRO_STABLE_SORT [$$82(ASC)] |LOCAL|
- project ([$$82])
+ order (ASC, $$84)
+ -- MICRO_STABLE_SORT [$$84(ASC)] |LOCAL|
+ project ([$$84])
-- STREAM_PROJECT |LOCAL|
nested tuple source
-- NESTED_TUPLE_SOURCE |LOCAL|
@@ -33,13 +39,13 @@
-- NESTED_LOOP |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$82] <- [$$x.getField(1)] project: [$$82]
+ assign [$$84] <- [$$x.getField(1)] project: [$$84]
-- ASSIGN |PARTITIONED|
project ([$$x])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$90, $$x] <- test.d1
+ data-scan []<-[$$92, $$x] <- test.d1
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -51,7 +57,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$91, $$y] <- test.d2
+ data-scan []<-[$$93, $$y] <- test.d2
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.14.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.14.plan
index 21e98f4..32d92d2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.14.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.14.plan
@@ -1,49 +1,49 @@
-distribute result [$$166]
+distribute result [$$175]
-- DISTRIBUTE_RESULT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$166] <- [{"g": $$g, "sum_distinct_x": $$170, "sum_y": $$171, "sum_distinct_z": $$172, "avg_distinct_x": $$173, "avg_distinct_y": $$174, "count_x": $$175, "count_distinct_y": $$176, "avg_z": $$177, "count_distinct_z": $$178}] project: [$$166]
+ assign [$$175] <- [{"g": $$g, "sum_distinct_x": $$179, "sum_y": $$180, "sum_distinct_z": $$181, "avg_distinct_x": $$182, "avg_distinct_y": $$183, "count_x": $$184, "count_distinct_y": $$185, "avg_z": $$186, "count_distinct_z": $$187}] project: [$$175]
-- ASSIGN |PARTITIONED|
exchange
-- SORT_MERGE_EXCHANGE [$$g(ASC) ] |PARTITIONED|
group by ([$$g := $$g]) decor ([]) {
- aggregate [$$170, $$173] <- [agg-sql-sum($$124), agg-sql-avg($$124)]
+ aggregate [$$179, $$182] <- [agg-sql-sum($$133), agg-sql-avg($$133)]
-- AGGREGATE |LOCAL|
- distinct ([$$124])
+ distinct ([$$133])
-- MICRO_PRE_SORTED_DISTINCT_BY |LOCAL|
- order (ASC, $$124)
- -- MICRO_STABLE_SORT [$$124(ASC)] |LOCAL|
- project ([$$124])
+ order (ASC, $$133)
+ -- MICRO_STABLE_SORT [$$133(ASC)] |LOCAL|
+ project ([$$133])
-- STREAM_PROJECT |LOCAL|
nested tuple source
-- NESTED_TUPLE_SOURCE |LOCAL|
}
{
- aggregate [$$171, $$175, $$177] <- [agg-sql-sum($$129), agg-sql-count($$124), agg-sql-avg($$134)]
+ aggregate [$$180, $$184, $$185, $$186, $$187] <- [agg-sql-sum($$138), agg-sql-count($$133), agg-sql-count-distinct-hash($$138), agg-sql-avg($$143), agg-sql-count-distinct-hash($$143)]
-- AGGREGATE |LOCAL|
nested tuple source
-- NESTED_TUPLE_SOURCE |LOCAL|
}
{
- aggregate [$$172, $$178] <- [agg-sql-sum($$134), agg-sql-count($$134)]
+ aggregate [$$181] <- [agg-sql-sum($$143)]
-- AGGREGATE |LOCAL|
- distinct ([$$134])
+ distinct ([$$143])
-- MICRO_PRE_SORTED_DISTINCT_BY |LOCAL|
- order (ASC, $$134)
- -- MICRO_STABLE_SORT [$$134(ASC)] |LOCAL|
- project ([$$134])
+ order (ASC, $$143)
+ -- MICRO_STABLE_SORT [$$143(ASC)] |LOCAL|
+ project ([$$143])
-- STREAM_PROJECT |LOCAL|
nested tuple source
-- NESTED_TUPLE_SOURCE |LOCAL|
}
{
- aggregate [$$174, $$176] <- [agg-sql-avg($$129), agg-sql-count($$129)]
+ aggregate [$$183] <- [agg-sql-avg($$138)]
-- AGGREGATE |LOCAL|
- distinct ([$$129])
+ distinct ([$$138])
-- MICRO_PRE_SORTED_DISTINCT_BY |LOCAL|
- order (ASC, $$129)
- -- MICRO_STABLE_SORT [$$129(ASC)] |LOCAL|
- project ([$$129])
+ order (ASC, $$138)
+ -- MICRO_STABLE_SORT [$$138(ASC)] |LOCAL|
+ project ([$$138])
-- STREAM_PROJECT |LOCAL|
nested tuple source
-- NESTED_TUPLE_SOURCE |LOCAL|
@@ -67,13 +67,13 @@
-- NESTED_LOOP |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$124] <- [$$x.getField(1)] project: [$$124]
+ assign [$$133] <- [$$x.getField(1)] project: [$$133]
-- ASSIGN |PARTITIONED|
project ([$$x])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$167, $$x] <- test.d1
+ data-scan []<-[$$176, $$x] <- test.d1
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -81,13 +81,13 @@
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange
-- BROADCAST_EXCHANGE |PARTITIONED|
- assign [$$129] <- [$$y.getField(1)] project: [$$129]
+ assign [$$138] <- [$$y.getField(1)] project: [$$138]
-- ASSIGN |PARTITIONED|
project ([$$y])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$168, $$y] <- test.d2
+ data-scan []<-[$$177, $$y] <- test.d2
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -95,13 +95,13 @@
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange
-- BROADCAST_EXCHANGE |PARTITIONED|
- assign [$$134] <- [$$z.getField(1)] project: [$$134]
+ assign [$$143] <- [$$z.getField(1)] project: [$$143]
-- ASSIGN |PARTITIONED|
project ([$$z])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$169, $$z] <- test.d3
+ data-scan []<-[$$178, $$z] <- test.d3
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.9.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.9.plan
index 8b4c223..525f016 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.9.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.9.plan
@@ -1,22 +1,16 @@
-distribute result [$$80]
+distribute result [$$81]
-- DISTRIBUTE_RESULT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$80] <- [{"g": $$g, "count_distinct_x": $$83}] project: [$$80]
+ assign [$$81] <- [{"g": $$g, "count_distinct_x": $$84}] project: [$$81]
-- ASSIGN |PARTITIONED|
exchange
-- SORT_MERGE_EXCHANGE [$$g(ASC) ] |PARTITIONED|
group by ([$$g := $$g]) decor ([]) {
- aggregate [$$83] <- [agg-sql-count($$78)]
+ aggregate [$$84] <- [agg-sql-count-distinct-hash($$79)]
-- AGGREGATE |LOCAL|
- distinct ([$$78])
- -- MICRO_PRE_SORTED_DISTINCT_BY |LOCAL|
- order (ASC, $$78)
- -- MICRO_STABLE_SORT [$$78(ASC)] |LOCAL|
- project ([$$78])
- -- STREAM_PROJECT |LOCAL|
- nested tuple source
- -- NESTED_TUPLE_SOURCE |LOCAL|
+ nested tuple source
+ -- NESTED_TUPLE_SOURCE |LOCAL|
}
-- PRE_CLUSTERED_GROUP_BY[$$g] |PARTITIONED|
exchange
@@ -33,13 +27,13 @@
-- NESTED_LOOP |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$78] <- [$$x.getField(1)] project: [$$78]
+ assign [$$79] <- [$$x.getField(1)] project: [$$79]
-- ASSIGN |PARTITIONED|
project ([$$x])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$81, $$x] <- test.d1
+ data-scan []<-[$$82, $$x] <- test.d1
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -51,7 +45,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$82, $$y] <- test.d2
+ data-scan []<-[$$83, $$y] <- test.d2
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/cbo-join/computed-join-predicate.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/cbo-join/computed-join-predicate.plan
index 0ec68db..1212e73 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/cbo-join/computed-join-predicate.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/cbo-join/computed-join-predicate.plan
@@ -11,34 +11,10 @@
exchange [cardinality: 0.0, doc-size: -5.0, op-cost: 0.0, total-cost: 0.0]
-- RANGE_PARTITION_EXCHANGE [$$200(DESC), $$r_name(ASC), $$su_nationkey(ASC)] RANGE_MAP:{SPLIT:1} |PARTITIONED|
group by ([$$r_name := $$189; $$su_nationkey := $$192]) decor ([]) {
- aggregate [$$200] <- [agg-sql-sum($$175)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ aggregate [$$200, $$201, $$202] <- [agg-sql-sum($$175), agg-sql-count-distinct-hash($$191), agg-sql-count-distinct-hash($$186)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- AGGREGATE |LOCAL|
nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- NESTED_TUPLE_SOURCE |LOCAL|
- }
- {
- aggregate [$$201] <- [agg-sql-count($$191)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- AGGREGATE |LOCAL|
- distinct ([$$191]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- MICRO_PRE_SORTED_DISTINCT_BY |LOCAL|
- order (ASC, $$191) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- MICRO_STABLE_SORT [$$191(ASC)] |LOCAL|
- project ([$$191]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- STREAM_PROJECT |LOCAL|
- nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- {
- aggregate [$$202] <- [agg-sql-count($$186)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- AGGREGATE |LOCAL|
- distinct ([$$186]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- MICRO_PRE_SORTED_DISTINCT_BY |LOCAL|
- order (ASC, $$186) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- MICRO_STABLE_SORT [$$186(ASC)] |LOCAL|
- project ([$$186]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- STREAM_PROJECT |LOCAL|
- nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- NESTED_TUPLE_SOURCE |LOCAL|
} [cardinality: 0.0, doc-size: -5.0, op-cost: 0.0, total-cost: 0.0]
-- PRE_CLUSTERED_GROUP_BY[$$189, $$192] |PARTITIONED|
exchange [cardinality: 0.0, doc-size: -5.0, op-cost: 0.0, total-cost: 0.0]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q16.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q16.plan
index f727f57..19a8d5b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q16.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q16.plan
@@ -1,43 +1,35 @@
-distribute result [$$149] [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+distribute result [$$149] [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$149] <- [{"i_name": $$i_name, "brand": $#1, "i_price": $$i_price, "supplier_cnt": $$160}] project: [$$149] [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ assign [$$149] <- [{"i_name": $$i_name, "brand": $#1, "i_price": $$i_price, "supplier_cnt": $$160}] project: [$$149] [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- SORT_MERGE_EXCHANGE [$$160(DESC) ] |PARTITIONED|
- order (DESC, $$160) [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ order (DESC, $$160) [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- STABLE_SORT [$$160(DESC)] |PARTITIONED|
- exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
group by ([$$i_name := $$150; $#1 := $$151; $$i_price := $$152]) decor ([]) {
- aggregate [$$160] <- [agg-sql-count($$171)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ aggregate [$$160] <- [agg-sql-count-distinct-hash(numeric-mod(numeric-multiply($$164, $$165), 10000))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- AGGREGATE |LOCAL|
- distinct ([$$171]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- MICRO_PRE_SORTED_DISTINCT_BY |LOCAL|
- order (ASC, $$171) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- MICRO_STABLE_SORT [$$171(ASC)] |LOCAL|
- assign [$$171] <- [numeric-mod(numeric-multiply($$164, $$165), 10000)] project: [$$171] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- ASSIGN |LOCAL|
- project ([$$164, $$165]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- STREAM_PROJECT |LOCAL|
- nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- NESTED_TUPLE_SOURCE |LOCAL|
- } [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ } [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- PRE_CLUSTERED_GROUP_BY[$$150, $$151, $$152] |PARTITIONED|
- exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$150) (ASC, $$151) (ASC, $$152) [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ order (ASC, $$150) (ASC, $$151) (ASC, $$152) [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- STABLE_SORT [$$150(ASC), $$151(ASC), $$152(ASC)] |PARTITIONED|
- exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- HASH_PARTITION_EXCHANGE [$$150, $$151, $$152] |PARTITIONED|
- assign [$$151] <- [substring1($$153, 1, 3)] project: [$$164, $$165, $$150, $$151, $$152] [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ assign [$$151] <- [substring1($$153, 1, 3)] project: [$$164, $$165, $$150, $$151, $$152] [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- ASSIGN |PARTITIONED|
- select ($$132) project: [$$150, $$152, $$153, $$165, $$164] [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ select ($$132) project: [$$150, $$152, $$153, $$165, $$164] [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- STREAM_SELECT |PARTITIONED|
- project ([$$132, $$150, $$152, $$153, $$165, $$164]) [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ project ([$$132, $$150, $$152, $$153, $$165, $$164]) [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
group by ([$$167 := $$154; $$168 := $$155]) decor ([$$150; $$152; $$153; $$165 := $$159; $$164 := $$162]) {
aggregate [$$132] <- [empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
@@ -48,35 +40,35 @@
-- STREAM_PROJECT |LOCAL|
nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- NESTED_TUPLE_SOURCE |LOCAL|
- } [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ } [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- PRE_CLUSTERED_GROUP_BY[$$154, $$155] |PARTITIONED|
- exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$154) (ASC, $$155) [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ order (ASC, $$154) (ASC, $$155) [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- STABLE_SORT [$$154(ASC), $$155(ASC)] |PARTITIONED|
- exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$150, $$152, $$153, $$166, $$154, $$155, $$159, $$162]) [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ project ([$$150, $$152, $$153, $$166, $$154, $$155, $$159, $$162]) [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 1.500015E12]
+ exchange [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 0.0, total-cost: 6.2500500004499976E16]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join (eq($$158, $$159)) [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 5.00004E11, total-cost: 1.500015E12]
+ join (eq($$158, $$159)) [cardinality: 9.223372036854776E16, doc-size: -3.0, op-cost: 6.2500125001E16, total-cost: 6.2500500004499976E16]
-- HYBRID_HASH_JOIN [$$159][$$158] |PARTITIONED|
- exchange [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 1000000.0]
+ exchange [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 499992.37]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$166, $$154, $$159, $$162]) [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 1000000.0]
+ project ([$$166, $$154, $$159, $$162]) [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 499992.37]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 1000000.0]
+ exchange [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 499992.37]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left outer join (not(if-missing-or-null(neq(numeric-mod(numeric-multiply($$162, $$159), 10000), $$126), false))) [cardinality: 5.0E11, doc-size: -2.0, op-cost: 1.0E12, total-cost: 1.000006E12]
+ left outer join (not(if-missing-or-null(neq(numeric-mod(numeric-multiply($$162, $$159), 10000), $$126), false))) [cardinality: 5.0E11, doc-size: -2.0, op-cost: 3.75E11, total-cost: 3.7500199998474E11]
-- NESTED_LOOP |PARTITIONED|
- exchange [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 1000000.0]
+ exchange [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 499992.37]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$159, $$162] <- [$$s.getField("s_i_id"), $$s.getField("s_w_id")] project: [$$154, $$159, $$162] [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 1000000.0]
+ assign [$$159, $$162] <- [$$s.getField("s_i_id"), $$s.getField("s_w_id")] project: [$$154, $$159, $$162] [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 499992.37]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 1000000.0]
+ exchange [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 499992.37]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$154, $$s] <- test.stock [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 1000000.0]
+ data-scan []<-[$$154, $$s] <- test.stock [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 499992.37]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -86,7 +78,7 @@
-- BROADCAST_EXCHANGE |PARTITIONED|
assign [$$166] <- [true] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ASSIGN |PARTITIONED|
- select (like($$su.getField("su_comment"), "%Customer%Complaints%")) project: [$$126] [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 1000000.0]
+ select (like($$su.getField("su_comment"), "%Customer%Complaints%")) project: [$$126] [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 499992.37]
-- STREAM_SELECT |PARTITIONED|
assign [$$126] <- [$$su.getField("su_suppkey")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ASSIGN |PARTITIONED|
@@ -94,21 +86,21 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$156, $$su] <- test.supplier [cardinality: 1000000.0, doc-size: -1.0, op-cost: 1000000.0, total-cost: 1000000.0]
+ data-scan []<-[$$156, $$su] <- test.supplier [cardinality: 1000000.0, doc-size: -1.0, op-cost: 499992.37, total-cost: 499992.37]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- exchange [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 1000000.0]
+ exchange [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 499992.37]
-- BROADCAST_EXCHANGE |PARTITIONED|
- select (not(and(ge($$153, "zz"), lt($$153, "z{")))) [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 1000000.0]
+ select (not(and(ge($$153, "zz"), lt($$153, "z{")))) [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 499992.37]
-- STREAM_SELECT |PARTITIONED|
- assign [$$152, $$150, $$153, $$158] <- [$$i.getField("i_price"), $$i.getField("i_name"), $$i.getField("i_data"), $$i.getField("i_id")] project: [$$155, $$152, $$150, $$153, $$158] [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 1000000.0]
+ assign [$$152, $$150, $$153, $$158] <- [$$i.getField("i_price"), $$i.getField("i_name"), $$i.getField("i_data"), $$i.getField("i_id")] project: [$$155, $$152, $$150, $$153, $$158] [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 499992.37]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 1000000.0]
+ exchange [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 499992.37]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$155, $$i] <- test.item [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 1000000.0]
+ data-scan []<-[$$155, $$i] <- test.item [cardinality: 1000000.0, doc-size: -1.0, op-cost: 0.0, total-cost: 499992.37]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm
index 3f0ec8e..e4ef2d5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm
@@ -48,7 +48,7 @@
"cloud.storage.scheme" : "",
"cloud.storage.sweep.threshold.percentage" : 0.9,
"cloud.write.buffer.size" : 8388608,
- "compiler.aggregate.distinct.hash" : false,
+ "compiler.aggregate.distinct.hash" : true,
"compiler.aggregate.distinct.hash.memory" : 33554432,
"compiler\.arrayindex" : true,
"compiler.batch.lookup" : true,
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm
index 07aea4d..4c5abb5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm
@@ -48,7 +48,7 @@
"cloud.storage.scheme" : "",
"cloud.storage.sweep.threshold.percentage" : 0.9,
"cloud.write.buffer.size" : 8388608,
- "compiler.aggregate.distinct.hash" : false,
+ "compiler.aggregate.distinct.hash" : true,
"compiler.aggregate.distinct.hash.memory" : 33554432,
"compiler\.arrayindex" : true,
"compiler.batch.lookup" : true,
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm
index cdb4832..9ef0ac3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm
@@ -48,7 +48,7 @@
"cloud.storage.scheme" : "",
"cloud.storage.sweep.threshold.percentage" : 0.9,
"cloud.write.buffer.size" : 8388608,
- "compiler.aggregate.distinct.hash" : false,
+ "compiler.aggregate.distinct.hash" : true,
"compiler.aggregate.distinct.hash.memory" : 33554432,
"compiler\.arrayindex" : true,
"compiler.batch.lookup" : true,
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.020.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.020.plan
index f9e72f4..64b781e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.020.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.020.plan
@@ -1,47 +1,39 @@
-distribute result [$$66] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$75] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- assign [$$66] <- [{"count": $$69}] project: [$$66] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ assign [$$75] <- [{"count": $$78}] project: [$$75] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ASSIGN |UNPARTITIONED|
- aggregate [$$69] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ aggregate [$$78] <- [agg-sql-count-distinct-hash($$73)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
-- AGGREGATE |UNPARTITIONED|
exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- SORT_MERGE_EXCHANGE [$$64(ASC) ] |PARTITIONED|
- distinct ([$$64]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- PRE_SORTED_DISTINCT_BY |PARTITIONED|
- exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$64) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- STABLE_SORT [$$64(ASC)] |PARTITIONED|
- exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- HASH_PARTITION_EXCHANGE [$$64] |PARTITIONED|
- select (ge($$68, 3)) project: [$$64] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- STREAM_SELECT |PARTITIONED|
- project ([$$64, $$68]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- STREAM_PROJECT |PARTITIONED|
- subplan {
- aggregate [$$68] <- [agg-sql-sum($$52)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- AGGREGATE |LOCAL|
- assign [$$52] <- [$$i.getField("count")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- ASSIGN |LOCAL|
- unnest $$i <- scan-collection($$70) project: [$$i] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- UNNEST |LOCAL|
- project ([$$70]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- STREAM_PROJECT |LOCAL|
- nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- NESTED_TUPLE_SOURCE |LOCAL|
- } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- SUBPLAN |PARTITIONED|
- assign [$$64, $$70] <- [to-object-var-str($$t).getField(0), $$t.getField("a1")] project: [$$64, $$70] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- ASSIGN |PARTITIONED|
- project ([$$t]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$67, $$t] <- test.ColumnDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- DATASOURCE_SCAN |PARTITIONED|
- exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- RANDOM_MERGE_EXCHANGE |PARTITIONED|
+ select (ge($$77, 3)) project: [$$73] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- STREAM_SELECT |PARTITIONED|
+ project ([$$73, $$77]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- STREAM_PROJECT |PARTITIONED|
+ subplan {
+ aggregate [$$77] <- [agg-sql-sum($$61)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- AGGREGATE |LOCAL|
+ assign [$$61] <- [$$i.getField("count")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- ASSIGN |LOCAL|
+ unnest $$i <- scan-collection($$79) project: [$$i] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- UNNEST |LOCAL|
+ project ([$$79]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- STREAM_PROJECT |LOCAL|
+ nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- SUBPLAN |PARTITIONED|
+ assign [$$73, $$79] <- [to-object-var-str($$t).getField(0), $$t.getField("a1")] project: [$$73, $$79] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- ASSIGN |PARTITIONED|
+ project ([$$t]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- STREAM_PROJECT |PARTITIONED|
+ exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ data-scan []<-[$$76, $$t] <- test.ColumnDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- DATASOURCE_SCAN |PARTITIONED|
+ exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
index e7813b2..9b3cbb0 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
@@ -39,7 +39,7 @@
public static final boolean CBO_TEST_DEFAULT = false;
public static final boolean FORCE_JOIN_ORDER_DEFAULT = false;
public static final boolean REWRITE_DISJUNCTION_DEFAULT = false;
- public static final boolean AGGREGATE_DISTINCT_HASH_DEFAULT = false;
+ public static final boolean AGGREGATE_DISTINCT_HASH_DEFAULT = true;
public static final String QUERY_PLAN_SHAPE_ZIGZAG = "zigzag";
public static final String QUERY_PLAN_SHAPE_LEFTDEEP = "leftdeep";
public static final String QUERY_PLAN_SHAPE_RIGHTDEEP = "rightdeep";
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21739?usp=email
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I3abfe8c99e68959a20c1b0a7022b698dec75db30
Gerrit-Change-Number: 21739
Gerrit-PatchSet: 1
Gerrit-Owner: Shahrzad Shirazi <sh...@ucr.edu>