This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 71070e9becbcd5eb633f693a774cb1fcc9a36d3e
Merge: 3b0a5b10a3 de0acbf578
Author: Michael Blow <[email protected]>
AuthorDate: Fri Jan 17 08:37:53 2025 -0500

    Merge branch 'gerrit/goldfish' into 'master'
    
    Change-Id: I65b6f845e9958fed620fffb78837ab07f1f03559

 .../pushdown/schema/ExpectedSchemaBuilder.java     | 75 ++++++++++++++++++++--
 .../asterix-app/data/hdfs/parquet/friends.json     |  1 +
 .../external_dataset/ExternalDatasetTestUtils.java |  1 +
 .../ASTERIXDB-3540/ASTERIXDB-3540.01.ddl.sqlpp     | 41 ++++++++++++
 .../ASTERIXDB-3540/ASTERIXDB-3540.02.query.sqlpp   | 26 ++++++++
 .../ASTERIXDB-3540/ASTERIXDB-3540.03.query.sqlpp   | 25 ++++++++
 .../query-ASTERIXDB-3538.1.ddl.sqlpp               | 67 +++++++++++++++++++
 .../query-ASTERIXDB-3538.2.update.sqlpp            | 31 +++++++++
 .../query-ASTERIXDB-3538.3.query.sqlpp             | 25 ++++++++
 .../query-ASTERIXDB-3538.4.query.sqlpp             | 25 ++++++++
 .../query-ASTERIXDB-3538.5.query.sqlpp             | 25 ++++++++
 .../query-ASTERIXDB-3538.6.query.sqlpp             | 24 +++++++
 .../parquet/ASTERIXDB-3540/ASTERIXDB-3540.02.plan  |  1 +
 .../parquet/ASTERIXDB-3540/ASTERIXDB-3540.03.adm   |  1 +
 .../query-ASTERIXDB-3538.3.plan                    | 20 ++++++
 .../query-ASTERIXDB-3538.4.adm                     |  8 +++
 .../query-ASTERIXDB-3538.5.plan                    | 35 ++++++++++
 .../query-ASTERIXDB-3538.6.adm                     |  4 ++
 .../query-ASTERIXDB-3538.3.plan                    | 20 ++++++
 .../query-ASTERIXDB-3538.5.plan                    | 35 ++++++++++
 .../query-ASTERIXDB-3538.3.plan                    | 20 ++++++
 .../query-ASTERIXDB-3538.5.plan                    | 35 ++++++++++
 .../src/test/resources/runtimets/sqlpp_queries.xml |  5 ++
 .../runtimets/testsuite_external_dataset_s3.xml    |  6 ++
 .../rules/RemoveUnusedAssignAndAggregateRule.java  |  4 ++
 .../dataflow/common/utils/FrameDebugUtils.java     |  2 +-
 26 files changed, 556 insertions(+), 6 deletions(-)

diff --cc 
asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
index 0000000000,1f2126c5c8..9e9db49aca
mode 000000,100644..100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
@@@ -1,0 -1,24 +1,20 @@@
+ distribute result [$$311] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- DISTRIBUTE_RESULT  |PARTITIONED|
+   exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -    project ([$$311]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
 -    -- STREAM_PROJECT  |PARTITIONED|
 -      assign [$$311] <- [{"id": $$345}] [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
 -      -- ASSIGN  |PARTITIONED|
 -        select (not(is-null($$345))) [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
 -        -- STREAM_SELECT  |PARTITIONED|
 -          project ([$$345]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++    assign [$$311] <- [{"id": $$345}] project: [$$311] [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
++    -- ASSIGN  |PARTITIONED|
++      select (not(is-null($$345))) [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
++      -- STREAM_SELECT  |PARTITIONED|
++        assign [$$345] <- [string-default-null($$s.getField("id"))] project: 
[$$345] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++        -- ASSIGN  |PARTITIONED|
++          project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+           -- STREAM_PROJECT  |PARTITIONED|
 -            assign [$$345] <- [string-default-null($$s.getField("id"))] 
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
 -            -- ASSIGN  |PARTITIONED|
 -              project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 
0.0]
 -              -- STREAM_PROJECT  |PARTITIONED|
++            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
++              data-scan []<-[$$314, $$s] <- test.dat1 [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
++              -- DATASOURCE_SCAN  |PARTITIONED|
+                 exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                  data-scan []<-[$$314, $$s] <- test.dat1 [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
 -                  -- DATASOURCE_SCAN  |PARTITIONED|
 -                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
 -                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
 -                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
++                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
++                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --cc 
asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
index 0000000000,2f074b771b..6f838fa1f8
mode 000000,100644..100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
@@@ -1,0 -1,41 +1,35 @@@
+ distribute result [$$317] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- DISTRIBUTE_RESULT  |PARTITIONED|
+   exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -    project ([$$317]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
 -    -- STREAM_PROJECT  |PARTITIONED|
 -      assign [$$317] <- [{"dat3": {"id": $$351, "a": 
string-default-null($$345), "d": int64-default-null($$318)}}] [cardinality: 
0.0, op-cost: 0.0, total-cost: 0.0]
 -      -- ASSIGN  |PARTITIONED|
 -        project ([$$351, $$345, $$318]) [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
++    assign [$$317] <- [{"dat3": {"id": $$351, "a": 
string-default-null($$345), "d": int64-default-null($$318)}}] project: [$$317] 
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++    -- ASSIGN  |PARTITIONED|
++      select (le($$318, get-item($$295, 0))) project: [$$351, $$345, $$318] 
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++      -- STREAM_SELECT  |PARTITIONED|
++        project ([$$351, $$345, $$318, $$295]) [cardinality: 0.0, op-cost: 
0.0, total-cost: 0.0]
+         -- STREAM_PROJECT  |PARTITIONED|
 -          select (le($$318, get-item($$295, 0))) [cardinality: 0.0, op-cost: 
0.0, total-cost: 0.0]
 -          -- STREAM_SELECT  |PARTITIONED|
 -            project ([$$351, $$345, $$318, $$295]) [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
 -            -- STREAM_PROJECT  |PARTITIONED|
 -              subplan {
 -                        aggregate [$$295] <- [listify($$330)] [cardinality: 
0.0, op-cost: 0.0, total-cost: 0.0]
 -                        -- AGGREGATE  |LOCAL|
 -                          aggregate [$$330] <- [agg-sql-count(1)] 
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
 -                          -- AGGREGATE  |LOCAL|
 -                            unnest $$333 <- scan-collection($$343) 
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
 -                            -- UNNEST  |LOCAL|
 -                              nested tuple source [cardinality: 0.0, op-cost: 
0.0, total-cost: 0.0]
 -                              -- NESTED_TUPLE_SOURCE  |LOCAL|
 -                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
 -              -- SUBPLAN  |PARTITIONED|
 -                select (not(is-null($$351))) [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
 -                -- STREAM_SELECT  |PARTITIONED|
 -                  project ([$$351, $$345, $$318, $$343]) [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
 -                  -- STREAM_PROJECT  |PARTITIONED|
 -                    assign [$$351, $$345, $$318, $$343] <- 
[string-default-null($$s.getField("id")), $$s.getField("a"), $$s.getField("d"), 
$$s.getField("e")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
 -                    -- ASSIGN  |PARTITIONED|
 -                      project ([$$s]) [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
 -                      -- STREAM_PROJECT  |PARTITIONED|
 -                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 
0.0]
 -                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                          data-scan []<-[$$319, $$s] <- test.dat1 
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
 -                          -- DATASOURCE_SCAN  |PARTITIONED|
 -                            exchange [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
 -                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                              empty-tuple-source [cardinality: 0.0, op-cost: 
0.0, total-cost: 0.0]
 -                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
++          subplan {
++                    aggregate [$$295] <- [listify($$330)] [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
++                    -- AGGREGATE  |LOCAL|
++                      aggregate [$$330] <- [agg-sql-count(1)] [cardinality: 
0.0, op-cost: 0.0, total-cost: 0.0]
++                      -- AGGREGATE  |LOCAL|
++                        unnest $$333 <- scan-collection($$343) [cardinality: 
0.0, op-cost: 0.0, total-cost: 0.0]
++                        -- UNNEST  |LOCAL|
++                          nested tuple source [cardinality: 0.0, op-cost: 
0.0, total-cost: 0.0]
++                          -- NESTED_TUPLE_SOURCE  |LOCAL|
++                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++          -- SUBPLAN  |PARTITIONED|
++            select (not(is-null($$351))) [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
++            -- STREAM_SELECT  |PARTITIONED|
++              assign [$$351, $$345, $$318, $$343] <- 
[string-default-null($$s.getField("id")), $$s.getField("a"), $$s.getField("d"), 
$$s.getField("e")] project: [$$351, $$345, $$318, $$343] [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
++              -- ASSIGN  |PARTITIONED|
++                project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 
0.0]
++                -- STREAM_PROJECT  |PARTITIONED|
++                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
++                    data-scan []<-[$$319, $$s] <- test.dat1 [cardinality: 
0.0, op-cost: 0.0, total-cost: 0.0]
++                    -- DATASOURCE_SCAN  |PARTITIONED|
++                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 
0.0]
++                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
++                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
++                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --cc 
asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
index 0000000000,dc43c42f98..8d2d305312
mode 000000,100644..100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
@@@ -1,0 -1,24 +1,20 @@@
+ distribute result [$$311] [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+ -- DISTRIBUTE_RESULT  |PARTITIONED|
+   exchange [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -    project ([$$311]) [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
 -    -- STREAM_PROJECT  |PARTITIONED|
 -      assign [$$311] <- [{"id": $$345}] [cardinality: 8.0, op-cost: 0.0, 
total-cost: 8.0]
 -      -- ASSIGN  |PARTITIONED|
 -        select (not(is-null($$345))) [cardinality: 8.0, op-cost: 0.0, 
total-cost: 8.0]
 -        -- STREAM_SELECT  |PARTITIONED|
 -          project ([$$345]) [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
++    assign [$$311] <- [{"id": $$345}] project: [$$311] [cardinality: 8.0, 
op-cost: 0.0, total-cost: 8.0]
++    -- ASSIGN  |PARTITIONED|
++      select (not(is-null($$345))) [cardinality: 8.0, op-cost: 0.0, 
total-cost: 8.0]
++      -- STREAM_SELECT  |PARTITIONED|
++        assign [$$345] <- [string-default-null($$s.getField("id"))] project: 
[$$345] [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
++        -- ASSIGN  |PARTITIONED|
++          project ([$$s]) [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+           -- STREAM_PROJECT  |PARTITIONED|
 -            assign [$$345] <- [string-default-null($$s.getField("id"))] 
[cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
 -            -- ASSIGN  |PARTITIONED|
 -              project ([$$s]) [cardinality: 8.0, op-cost: 0.0, total-cost: 
8.0]
 -              -- STREAM_PROJECT  |PARTITIONED|
 -                exchange [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
++            exchange [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
++            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
++              data-scan []<-[$$314, $$s] <- test.dat1 [cardinality: 8.0, 
op-cost: 8.0, total-cost: 8.0]
++              -- DATASOURCE_SCAN  |PARTITIONED|
++                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                  data-scan []<-[$$314, $$s] <- test.dat1 [cardinality: 8.0, 
op-cost: 8.0, total-cost: 8.0]
 -                  -- DATASOURCE_SCAN  |PARTITIONED|
 -                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
 -                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
 -                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
++                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
++                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --cc 
asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
index 0000000000,b9dda1938f..efa194b0c1
mode 000000,100644..100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
@@@ -1,0 -1,41 +1,35 @@@
+ distribute result [$$317] [cardinality: 4.0, op-cost: 0.0, total-cost: 8.0]
+ -- DISTRIBUTE_RESULT  |PARTITIONED|
+   exchange [cardinality: 4.0, op-cost: 0.0, total-cost: 8.0]
+   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -    project ([$$317]) [cardinality: 4.0, op-cost: 0.0, total-cost: 8.0]
 -    -- STREAM_PROJECT  |PARTITIONED|
 -      assign [$$317] <- [{"dat3": {"id": $$351, "a": 
string-default-null($$345), "d": int64-default-null($$318)}}] [cardinality: 
4.0, op-cost: 0.0, total-cost: 8.0]
 -      -- ASSIGN  |PARTITIONED|
 -        project ([$$351, $$345, $$318]) [cardinality: 4.0, op-cost: 0.0, 
total-cost: 8.0]
++    assign [$$317] <- [{"dat3": {"id": $$351, "a": 
string-default-null($$345), "d": int64-default-null($$318)}}] project: [$$317] 
[cardinality: 4.0, op-cost: 0.0, total-cost: 8.0]
++    -- ASSIGN  |PARTITIONED|
++      select (le($$318, get-item($$295, 0))) project: [$$351, $$345, $$318] 
[cardinality: 4.0, op-cost: 0.0, total-cost: 8.0]
++      -- STREAM_SELECT  |PARTITIONED|
++        project ([$$351, $$345, $$318, $$295]) [cardinality: 8.0, op-cost: 
0.0, total-cost: 8.0]
+         -- STREAM_PROJECT  |PARTITIONED|
 -          select (le($$318, get-item($$295, 0))) [cardinality: 4.0, op-cost: 
0.0, total-cost: 8.0]
 -          -- STREAM_SELECT  |PARTITIONED|
 -            project ([$$351, $$345, $$318, $$295]) [cardinality: 8.0, 
op-cost: 0.0, total-cost: 8.0]
 -            -- STREAM_PROJECT  |PARTITIONED|
 -              subplan {
 -                        aggregate [$$295] <- [listify($$330)] [cardinality: 
0.0, op-cost: 0.0, total-cost: 0.0]
 -                        -- AGGREGATE  |LOCAL|
 -                          aggregate [$$330] <- [agg-sql-count(1)] 
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
 -                          -- AGGREGATE  |LOCAL|
 -                            unnest $$333 <- scan-collection($$343) 
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
 -                            -- UNNEST  |LOCAL|
 -                              nested tuple source [cardinality: 0.0, op-cost: 
0.0, total-cost: 0.0]
 -                              -- NESTED_TUPLE_SOURCE  |LOCAL|
 -                     } [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
 -              -- SUBPLAN  |PARTITIONED|
 -                select (not(is-null($$351))) [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
 -                -- STREAM_SELECT  |PARTITIONED|
 -                  project ([$$351, $$345, $$318, $$343]) [cardinality: 8.0, 
op-cost: 0.0, total-cost: 8.0]
 -                  -- STREAM_PROJECT  |PARTITIONED|
 -                    assign [$$351, $$345, $$318, $$343] <- 
[string-default-null($$s.getField("id")), $$s.getField("a"), $$s.getField("d"), 
$$s.getField("e")] [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
 -                    -- ASSIGN  |PARTITIONED|
 -                      project ([$$s]) [cardinality: 8.0, op-cost: 0.0, 
total-cost: 8.0]
 -                      -- STREAM_PROJECT  |PARTITIONED|
 -                        exchange [cardinality: 8.0, op-cost: 0.0, total-cost: 
8.0]
 -                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                          data-scan []<-[$$319, $$s] <- test.dat1 
[cardinality: 8.0, op-cost: 8.0, total-cost: 8.0]
 -                          -- DATASOURCE_SCAN  |PARTITIONED|
 -                            exchange [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
 -                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                              empty-tuple-source [cardinality: 0.0, op-cost: 
0.0, total-cost: 0.0]
 -                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
++          subplan {
++                    aggregate [$$295] <- [listify($$330)] [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
++                    -- AGGREGATE  |LOCAL|
++                      aggregate [$$330] <- [agg-sql-count(1)] [cardinality: 
0.0, op-cost: 0.0, total-cost: 0.0]
++                      -- AGGREGATE  |LOCAL|
++                        unnest $$333 <- scan-collection($$343) [cardinality: 
0.0, op-cost: 0.0, total-cost: 0.0]
++                        -- UNNEST  |LOCAL|
++                          nested tuple source [cardinality: 0.0, op-cost: 
0.0, total-cost: 0.0]
++                          -- NESTED_TUPLE_SOURCE  |LOCAL|
++                 } [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
++          -- SUBPLAN  |PARTITIONED|
++            select (not(is-null($$351))) [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
++            -- STREAM_SELECT  |PARTITIONED|
++              assign [$$351, $$345, $$318, $$343] <- 
[string-default-null($$s.getField("id")), $$s.getField("a"), $$s.getField("d"), 
$$s.getField("e")] project: [$$351, $$345, $$318, $$343] [cardinality: 8.0, 
op-cost: 0.0, total-cost: 8.0]
++              -- ASSIGN  |PARTITIONED|
++                project ([$$s]) [cardinality: 8.0, op-cost: 0.0, total-cost: 
8.0]
++                -- STREAM_PROJECT  |PARTITIONED|
++                  exchange [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
++                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
++                    data-scan []<-[$$319, $$s] <- test.dat1 [cardinality: 
8.0, op-cost: 8.0, total-cost: 8.0]
++                    -- DATASOURCE_SCAN  |PARTITIONED|
++                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 
0.0]
++                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
++                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
++                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --cc 
asterixdb/asterix-app/src/test/resources/runtimets/results_column/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
index 0000000000,0000000000..34d76634f3
new file mode 100644
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
@@@ -1,0 -1,0 +1,20 @@@
++distribute result [$$311] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++-- DISTRIBUTE_RESULT  |PARTITIONED|
++  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
++    assign [$$311] <- [{"id": $$345}] project: [$$311] [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
++    -- ASSIGN  |PARTITIONED|
++      select (not(is-null($$345))) [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
++      -- STREAM_SELECT  |PARTITIONED|
++        assign [$$345] <- [string-default-null($$s.getField("id"))] project: 
[$$345] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++        -- ASSIGN  |PARTITIONED|
++          project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++          -- STREAM_PROJECT  |PARTITIONED|
++            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
++              data-scan []<-[$$314, $$s] <- test.dat1 project ({id:any}) 
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++              -- DATASOURCE_SCAN  |PARTITIONED|
++                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
++                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
++                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --cc 
asterixdb/asterix-app/src/test/resources/runtimets/results_column/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
index 0000000000,0000000000..c94e333e9a
new file mode 100644
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
@@@ -1,0 -1,0 +1,35 @@@
++distribute result [$$317] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++-- DISTRIBUTE_RESULT  |PARTITIONED|
++  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
++    assign [$$317] <- [{"dat3": {"id": $$351, "a": 
string-default-null($$345), "d": int64-default-null($$318)}}] project: [$$317] 
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++    -- ASSIGN  |PARTITIONED|
++      select (le($$318, get-item($$295, 0))) project: [$$351, $$345, $$318] 
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++      -- STREAM_SELECT  |PARTITIONED|
++        project ([$$351, $$345, $$318, $$295]) [cardinality: 0.0, op-cost: 
0.0, total-cost: 0.0]
++        -- STREAM_PROJECT  |PARTITIONED|
++          subplan {
++                    aggregate [$$295] <- [listify($$330)] [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
++                    -- AGGREGATE  |LOCAL|
++                      aggregate [$$330] <- [agg-sql-count(1)] [cardinality: 
0.0, op-cost: 0.0, total-cost: 0.0]
++                      -- AGGREGATE  |LOCAL|
++                        unnest $$333 <- scan-collection($$343) [cardinality: 
0.0, op-cost: 0.0, total-cost: 0.0]
++                        -- UNNEST  |LOCAL|
++                          nested tuple source [cardinality: 0.0, op-cost: 
0.0, total-cost: 0.0]
++                          -- NESTED_TUPLE_SOURCE  |LOCAL|
++                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++          -- SUBPLAN  |PARTITIONED|
++            select (not(is-null($$351))) [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
++            -- STREAM_SELECT  |PARTITIONED|
++              assign [$$351, $$345, $$318, $$343] <- 
[string-default-null($$s.getField("id")), $$s.getField("a"), $$s.getField("d"), 
$$s.getField("e")] project: [$$351, $$345, $$318, $$343] [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
++              -- ASSIGN  |PARTITIONED|
++                project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 
0.0]
++                -- STREAM_PROJECT  |PARTITIONED|
++                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
++                    data-scan []<-[$$319, $$s] <- test.dat1 project 
({a:any,d:any,e:[any],id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++                    -- DATASOURCE_SCAN  |PARTITIONED|
++                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 
0.0]
++                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
++                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, 
total-cost: 0.0]
++                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|

Reply via email to