Merge "Merge branch 'gerrit/trinity' into 'master'"
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java
index 02f1f0e..302d4e0 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java
@@ -21,7 +21,6 @@
 import static org.apache.asterix.external.util.ExternalDataConstants.SUBPATH;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
@@ -912,14 +911,10 @@
     }
 
     private Expression translateProjectVarStar(Expression projectionExpr, SourceLocation sourceLoc) {
-        // var.* -> if_missing_or_null(to_object(var), {})
-        CallExpr toObjectExpr = new CallExpr(new FunctionSignature(BuiltinFunctions.TO_OBJECT),
+        CallExpr toObjectExpr = new CallExpr(new FunctionSignature(BuiltinFunctions.TO_OBJECT_VAR_STR),
                 Collections.singletonList(projectionExpr));
         toObjectExpr.setSourceLocation(sourceLoc);
-        CallExpr ifMissingOrNullExpr = new CallExpr(new FunctionSignature(BuiltinFunctions.IF_MISSING_OR_NULL),
-                Arrays.asList(toObjectExpr, new RecordConstructor(Collections.emptyList())));
-        ifMissingOrNullExpr.setSourceLocation(sourceLoc);
-        return ifMissingOrNullExpr;
+        return toObjectExpr;
     }
 
     private static boolean includeInSelectStar(VariableExpr varExpr) {
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.17.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.17.plan
index 578e272..1821d02 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.17.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-sql-sugar/distinct_mixed/distinct_mixed.17.plan
@@ -6,22 +6,22 @@
           -- ASSIGN  |PARTITIONED|
             -- STREAM_PROJECT  |PARTITIONED|
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                -- PRE_CLUSTERED_GROUP_BY[$$149]  |PARTITIONED|
+                -- PRE_CLUSTERED_GROUP_BY[$$156]  |PARTITIONED|
                         {
                           -- AGGREGATE  |LOCAL|
                             -- MICRO_PRE_SORTED_DISTINCT_BY  |LOCAL|
-                              -- MICRO_STABLE_SORT [$$115(ASC)]  |LOCAL|
+                              -- MICRO_STABLE_SORT [$$124(ASC)]  |LOCAL|
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                         }
                         {
                           -- AGGREGATE  |LOCAL|
                             -- MICRO_PRE_SORTED_DISTINCT_BY  |LOCAL|
-                              -- MICRO_STABLE_SORT [$$120(ASC)]  |LOCAL|
+                              -- MICRO_STABLE_SORT [$$129(ASC)]  |LOCAL|
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                         }
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    -- STABLE_SORT [$$149(ASC)]  |PARTITIONED|
-                      -- HASH_PARTITION_EXCHANGE [$$149]  |PARTITIONED|
+                    -- STABLE_SORT [$$156(ASC)]  |PARTITIONED|
+                      -- HASH_PARTITION_EXCHANGE [$$156]  |PARTITIONED|
                         -- NESTED_LOOP  |PARTITIONED|
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                             -- STREAM_PROJECT  |PARTITIONED|
@@ -54,22 +54,22 @@
           -- ASSIGN  |PARTITIONED|
             -- STREAM_PROJECT  |PARTITIONED|
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                -- PRE_CLUSTERED_GROUP_BY[$$150]  |PARTITIONED|
+                -- PRE_CLUSTERED_GROUP_BY[$$157]  |PARTITIONED|
                         {
                           -- AGGREGATE  |LOCAL|
                             -- MICRO_PRE_SORTED_DISTINCT_BY  |LOCAL|
-                              -- MICRO_STABLE_SORT [$$133(ASC)]  |LOCAL|
+                              -- MICRO_STABLE_SORT [$$142(ASC)]  |LOCAL|
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                         }
                         {
                           -- AGGREGATE  |LOCAL|
                             -- MICRO_PRE_SORTED_DISTINCT_BY  |LOCAL|
-                              -- MICRO_STABLE_SORT [$$138(ASC)]  |LOCAL|
+                              -- MICRO_STABLE_SORT [$$147(ASC)]  |LOCAL|
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                         }
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    -- STABLE_SORT [$$150(ASC)]  |PARTITIONED|
-                      -- HASH_PARTITION_EXCHANGE [$$150]  |PARTITIONED|
+                    -- STABLE_SORT [$$157(ASC)]  |PARTITIONED|
+                      -- HASH_PARTITION_EXCHANGE [$$157]  |PARTITIONED|
                         -- NESTED_LOOP  |PARTITIONED|
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                             -- STREAM_PROJECT  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue3316.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue3316.plan
index 1351492..a7234b3b6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue3316.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue3316.plan
@@ -2,13 +2,13 @@
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
     -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        -- STABLE_SORT [$$194(ASC)]  |PARTITIONED|
-          -- HASH_PARTITION_EXCHANGE [$$194]  |PARTITIONED|
+        -- STABLE_SORT [$$192(ASC)]  |PARTITIONED|
+          -- HASH_PARTITION_EXCHANGE [$$192]  |PARTITIONED|
             -- STREAM_PROJECT  |PARTITIONED|
               -- ASSIGN  |PARTITIONED|
                 -- STREAM_PROJECT  |PARTITIONED|
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    -- PRE_CLUSTERED_GROUP_BY[$$229]  |PARTITIONED|
+                    -- PRE_CLUSTERED_GROUP_BY[$$227]  |PARTITIONED|
                             {
                               -- AGGREGATE  |LOCAL|
                                 -- STREAM_SELECT  |LOCAL|
@@ -17,60 +17,60 @@
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                         -- STREAM_PROJECT  |PARTITIONED|
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            -- HYBRID_HASH_JOIN [$$229][$$390]  |PARTITIONED|
+                            -- HYBRID_HASH_JOIN [$$227][$$388]  |PARTITIONED|
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                -- PRE_CLUSTERED_GROUP_BY[$$195]  |PARTITIONED|
+                                -- PRE_CLUSTERED_GROUP_BY[$$193]  |PARTITIONED|
                                         {
                                           -- AGGREGATE  |LOCAL|
                                             -- STREAM_SELECT  |LOCAL|
                                               -- NESTED_TUPLE_SOURCE  |LOCAL|
                                         }
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    -- STABLE_SORT [$$195(ASC)]  |PARTITIONED|
+                                    -- STABLE_SORT [$$193(ASC)]  |PARTITIONED|
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                         -- STREAM_PROJECT  |PARTITIONED|
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            -- HYBRID_HASH_JOIN [$$195][$$242]  |PARTITIONED|
-                                              -- HASH_PARTITION_EXCHANGE [$$195]  |PARTITIONED|
+                                            -- HYBRID_HASH_JOIN [$$193][$$240]  |PARTITIONED|
+                                              -- HASH_PARTITION_EXCHANGE [$$193]  |PARTITIONED|
                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                   -- ASSIGN  |PARTITIONED|
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                       -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                              -- HASH_PARTITION_EXCHANGE [$$242]  |PARTITIONED|
+                                              -- HASH_PARTITION_EXCHANGE [$$240]  |PARTITIONED|
                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                   -- ASSIGN  |PARTITIONED|
                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        -- HYBRID_HASH_JOIN [$$128][$$201]  |PARTITIONED|
+                                                        -- HYBRID_HASH_JOIN [$$126][$$199]  |PARTITIONED|
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                               -- STREAM_SELECT  |PARTITIONED|
                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    -- PRE_CLUSTERED_GROUP_BY[$$227, $$196]  |PARTITIONED|
+                                                                    -- PRE_CLUSTERED_GROUP_BY[$$225, $$194]  |PARTITIONED|
                                                                             {
                                                                               -- AGGREGATE  |LOCAL|
                                                                                 -- STREAM_SELECT  |LOCAL|
                                                                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                             }
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        -- STABLE_SORT [$$227(ASC), $$196(ASC)]  |PARTITIONED|
+                                                                        -- STABLE_SORT [$$225(ASC), $$194(ASC)]  |PARTITIONED|
                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                -- HYBRID_HASH_JOIN [$$227, $$196][$$256, $$257]  |PARTITIONED|
-                                                                                  -- HASH_PARTITION_EXCHANGE [$$227, $$196]  |PARTITIONED|
+                                                                                -- HYBRID_HASH_JOIN [$$225, $$194][$$254, $$255]  |PARTITIONED|
+                                                                                  -- HASH_PARTITION_EXCHANGE [$$225, $$194]  |PARTITIONED|
                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                        -- HYBRID_HASH_JOIN [$$225][$$209]  |PARTITIONED|
+                                                                                        -- HYBRID_HASH_JOIN [$$223][$$207]  |PARTITIONED|
                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                               -- ASSIGN  |PARTITIONED|
                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                   -- REPLICATE  |PARTITIONED|
-                                                                                                    -- HASH_PARTITION_EXCHANGE [$$416]  |PARTITIONED|
+                                                                                                    -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                         -- ASSIGN  |PARTITIONED|
                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -82,7 +82,7 @@
                                                                                                                       -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                          -- HASH_PARTITION_EXCHANGE [$$209]  |PARTITIONED|
+                                                                                          -- HASH_PARTITION_EXCHANGE [$$207]  |PARTITIONED|
                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                               -- STREAM_SELECT  |PARTITIONED|
                                                                                                 -- ASSIGN  |PARTITIONED|
@@ -101,7 +101,7 @@
                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                             -- UNNEST  |PARTITIONED|
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                -- PRE_CLUSTERED_GROUP_BY[$$240, $$237]  |PARTITIONED|
+                                                                                                -- PRE_CLUSTERED_GROUP_BY[$$238, $$235]  |PARTITIONED|
                                                                                                         {
                                                                                                           -- AGGREGATE  |LOCAL|
                                                                                                             -- AGGREGATE  |LOCAL|
@@ -109,26 +109,26 @@
                                                                                                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                         }
                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                    -- STABLE_SORT [$$240(ASC), $$237(ASC)]  |PARTITIONED|
+                                                                                                    -- STABLE_SORT [$$238(ASC), $$235(ASC)]  |PARTITIONED|
                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                            -- HYBRID_HASH_JOIN [$$240, $$237][$$254, $$251]  |PARTITIONED|
+                                                                                                            -- HYBRID_HASH_JOIN [$$238, $$235][$$252, $$249]  |PARTITIONED|
                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                   -- ASSIGN  |PARTITIONED|
                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                       -- REPLICATE  |PARTITIONED|
-                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$427, $$428]  |PARTITIONED|
+                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$425, $$426]  |PARTITIONED|
                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                              -- HYBRID_HASH_JOIN [$$430][$$429]  |PARTITIONED|
+                                                                                                                              -- HYBRID_HASH_JOIN [$$428][$$427]  |PARTITIONED|
                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                     -- ASSIGN  |PARTITIONED|
                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                         -- REPLICATE  |PARTITIONED|
-                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$416]  |PARTITIONED|
+                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                               -- ASSIGN  |PARTITIONED|
                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -140,7 +140,7 @@
                                                                                                                                                             -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$429]  |PARTITIONED|
+                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$427]  |PARTITIONED|
                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                     -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -155,15 +155,15 @@
                                                                                                                                                         -- DATASOURCE_SCAN (test.collection1)  |PARTITIONED|
                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                              -- HASH_PARTITION_EXCHANGE [$$254, $$251]  |PARTITIONED|
+                                                                                                              -- HASH_PARTITION_EXCHANGE [$$252, $$249]  |PARTITIONED|
                                                                                                                 -- ASSIGN  |PARTITIONED|
                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                      -- HYBRID_HASH_JOIN [$$137][$$200]  |PARTITIONED|
+                                                                                                                      -- HYBRID_HASH_JOIN [$$135][$$198]  |PARTITIONED|
                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                              -- HYBRID_HASH_JOIN [$$245][$$212]  |PARTITIONED|
+                                                                                                                              -- HYBRID_HASH_JOIN [$$243][$$210]  |PARTITIONED|
                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                     -- ASSIGN  |PARTITIONED|
@@ -172,13 +172,13 @@
                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                -- HYBRID_HASH_JOIN [$$447][$$450]  |PARTITIONED|
+                                                                                                                                                -- HYBRID_HASH_JOIN [$$445][$$448]  |PARTITIONED|
                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                       -- ASSIGN  |PARTITIONED|
                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                           -- REPLICATE  |PARTITIONED|
-                                                                                                                                                            -- HASH_PARTITION_EXCHANGE [$$416]  |PARTITIONED|
+                                                                                                                                                            -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
                                                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                 -- ASSIGN  |PARTITIONED|
                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -190,7 +190,7 @@
                                                                                                                                                                               -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                  -- HASH_PARTITION_EXCHANGE [$$450]  |PARTITIONED|
+                                                                                                                                                  -- HASH_PARTITION_EXCHANGE [$$448]  |PARTITIONED|
                                                                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                       -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -205,7 +205,7 @@
                                                                                                                                                                           -- DATASOURCE_SCAN (test.collection1)  |PARTITIONED|
                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$212]  |PARTITIONED|
+                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$210]  |PARTITIONED|
                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                     -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                       -- ASSIGN  |PARTITIONED|
@@ -228,56 +228,56 @@
                                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
                                                             -- UNNEST  |UNPARTITIONED|
                                                               -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
-                              -- HASH_PARTITION_EXCHANGE [$$390]  |PARTITIONED|
+                              -- HASH_PARTITION_EXCHANGE [$$388]  |PARTITIONED|
                                 -- STREAM_PROJECT  |PARTITIONED|
                                   -- ASSIGN  |PARTITIONED|
                                     -- STREAM_PROJECT  |PARTITIONED|
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        -- HYBRID_HASH_JOIN [$$164][$$204]  |PARTITIONED|
+                                        -- HYBRID_HASH_JOIN [$$162][$$202]  |PARTITIONED|
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                             -- STREAM_PROJECT  |PARTITIONED|
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                -- HYBRID_HASH_JOIN [$$167][$$203]  |PARTITIONED|
+                                                -- HYBRID_HASH_JOIN [$$165][$$201]  |PARTITIONED|
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                       -- STREAM_SELECT  |PARTITIONED|
                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            -- PRE_CLUSTERED_GROUP_BY[$$258, $$198]  |PARTITIONED|
+                                                            -- PRE_CLUSTERED_GROUP_BY[$$256, $$196]  |PARTITIONED|
                                                                     {
                                                                       -- AGGREGATE  |LOCAL|
                                                                         -- STREAM_SELECT  |LOCAL|
                                                                           -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                     }
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                -- STABLE_SORT [$$258(ASC), $$198(ASC)]  |PARTITIONED|
+                                                                -- STABLE_SORT [$$256(ASC), $$196(ASC)]  |PARTITIONED|
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        -- HYBRID_HASH_JOIN [$$258, $$198][$$461, $$462]  |PARTITIONED|
-                                                                          -- HASH_PARTITION_EXCHANGE [$$258, $$198]  |PARTITIONED|
+                                                                        -- HYBRID_HASH_JOIN [$$256, $$196][$$459, $$460]  |PARTITIONED|
+                                                                          -- HASH_PARTITION_EXCHANGE [$$256, $$196]  |PARTITIONED|
                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                -- HYBRID_HASH_JOIN [$$262][$$216]  |PARTITIONED|
-                                                                                  -- HASH_PARTITION_EXCHANGE [$$262]  |PARTITIONED|
-                                                                                    -- PRE_CLUSTERED_GROUP_BY[$$259]  |PARTITIONED|
+                                                                                -- HYBRID_HASH_JOIN [$$260][$$214]  |PARTITIONED|
+                                                                                  -- HASH_PARTITION_EXCHANGE [$$260]  |PARTITIONED|
+                                                                                    -- PRE_CLUSTERED_GROUP_BY[$$257]  |PARTITIONED|
                                                                                             {
                                                                                               -- AGGREGATE  |LOCAL|
                                                                                                 -- STREAM_SELECT  |LOCAL|
                                                                                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                             }
                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                        -- STABLE_SORT [$$259(ASC)]  |PARTITIONED|
+                                                                                        -- STABLE_SORT [$$257(ASC)]  |PARTITIONED|
                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                -- HYBRID_HASH_JOIN [$$259][$$263]  |PARTITIONED|
+                                                                                                -- HYBRID_HASH_JOIN [$$257][$$261]  |PARTITIONED|
                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                       -- ASSIGN  |PARTITIONED|
                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                           -- REPLICATE  |PARTITIONED|
-                                                                                                            -- HASH_PARTITION_EXCHANGE [$$401]  |PARTITIONED|
+                                                                                                            -- HASH_PARTITION_EXCHANGE [$$399]  |PARTITIONED|
                                                                                                               -- REPLICATE  |PARTITIONED|
                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
@@ -286,40 +286,40 @@
                                                                                                                         -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                  -- HASH_PARTITION_EXCHANGE [$$263]  |PARTITIONED|
+                                                                                                  -- HASH_PARTITION_EXCHANGE [$$261]  |PARTITIONED|
                                                                                                     -- ASSIGN  |PARTITIONED|
                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                          -- HYBRID_HASH_JOIN [$$268][$$267]  |PARTITIONED|
+                                                                                                          -- HYBRID_HASH_JOIN [$$266][$$265]  |PARTITIONED|
                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                 -- STREAM_SELECT  |PARTITIONED|
                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                      -- PRE_CLUSTERED_GROUP_BY[$$270, $$272]  |PARTITIONED|
+                                                                                                                      -- PRE_CLUSTERED_GROUP_BY[$$268, $$270]  |PARTITIONED|
                                                                                                                               {
                                                                                                                                 -- AGGREGATE  |LOCAL|
                                                                                                                                   -- STREAM_SELECT  |LOCAL|
                                                                                                                                     -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                               }
                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                          -- STABLE_SORT [$$270(ASC), $$272(ASC)]  |PARTITIONED|
+                                                                                                                          -- STABLE_SORT [$$268(ASC), $$270(ASC)]  |PARTITIONED|
                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                  -- HYBRID_HASH_JOIN [$$270, $$272][$$280, $$281]  |PARTITIONED|
+                                                                                                                                  -- HYBRID_HASH_JOIN [$$268, $$270][$$278, $$279]  |PARTITIONED|
                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                         -- ASSIGN  |PARTITIONED|
                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                             -- REPLICATE  |PARTITIONED|
-                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$411, $$413]  |PARTITIONED|
+                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$409, $$411]  |PARTITIONED|
                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                    -- HYBRID_HASH_JOIN [$$416][$$417]  |PARTITIONED|
+                                                                                                                                                    -- HYBRID_HASH_JOIN [$$417][$$418]  |PARTITIONED|
                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                         -- REPLICATE  |PARTITIONED|
-                                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$416]  |PARTITIONED|
+                                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
                                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                               -- ASSIGN  |PARTITIONED|
                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -331,7 +331,7 @@
                                                                                                                                                                             -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
+                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$418]  |PARTITIONED|
                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                           -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                             -- ASSIGN  |PARTITIONED|
@@ -348,7 +348,7 @@
                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                               -- UNNEST  |PARTITIONED|
                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                  -- PRE_CLUSTERED_GROUP_BY[$$286, $$287]  |PARTITIONED|
+                                                                                                                                                  -- PRE_CLUSTERED_GROUP_BY[$$284, $$285]  |PARTITIONED|
                                                                                                                                                           {
                                                                                                                                                             -- AGGREGATE  |LOCAL|
                                                                                                                                                               -- AGGREGATE  |LOCAL|
@@ -356,26 +356,26 @@
                                                                                                                                                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                                                           }
                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                      -- STABLE_SORT [$$286(ASC), $$287(ASC)]  |PARTITIONED|
+                                                                                                                                                      -- STABLE_SORT [$$284(ASC), $$285(ASC)]  |PARTITIONED|
                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                              -- HYBRID_HASH_JOIN [$$286, $$287][$$296, $$297]  |PARTITIONED|
+                                                                                                                                                              -- HYBRID_HASH_JOIN [$$284, $$285][$$294, $$295]  |PARTITIONED|
                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                     -- ASSIGN  |PARTITIONED|
                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                         -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$427, $$428]  |PARTITIONED|
+                                                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$425, $$426]  |PARTITIONED|
                                                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                -- HYBRID_HASH_JOIN [$$430][$$429]  |PARTITIONED|
+                                                                                                                                                                                -- HYBRID_HASH_JOIN [$$428][$$427]  |PARTITIONED|
                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                       -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                           -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                            -- HASH_PARTITION_EXCHANGE [$$416]  |PARTITIONED|
+                                                                                                                                                                                            -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
                                                                                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                 -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -387,7 +387,7 @@
                                                                                                                                                                                                               -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                                                  -- HASH_PARTITION_EXCHANGE [$$429]  |PARTITIONED|
+                                                                                                                                                                                  -- HASH_PARTITION_EXCHANGE [$$427]  |PARTITIONED|
                                                                                                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                       -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -402,15 +402,15 @@
                                                                                                                                                                                                           -- DATASOURCE_SCAN (test.collection1)  |PARTITIONED|
                                                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$296, $$297]  |PARTITIONED|
+                                                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$294, $$295]  |PARTITIONED|
                                                                                                                                                                   -- ASSIGN  |PARTITIONED|
                                                                                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                        -- HYBRID_HASH_JOIN [$$304][$$303]  |PARTITIONED|
+                                                                                                                                                                        -- HYBRID_HASH_JOIN [$$302][$$301]  |PARTITIONED|
                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                -- HYBRID_HASH_JOIN [$$306][$$305]  |PARTITIONED|
+                                                                                                                                                                                -- HYBRID_HASH_JOIN [$$304][$$303]  |PARTITIONED|
                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                       -- ASSIGN  |PARTITIONED|
@@ -419,13 +419,13 @@
                                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                  -- HYBRID_HASH_JOIN [$$447][$$450]  |PARTITIONED|
+                                                                                                                                                                                                  -- HYBRID_HASH_JOIN [$$445][$$448]  |PARTITIONED|
                                                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                         -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                             -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$416]  |PARTITIONED|
+                                                                                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
                                                                                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                   -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -437,7 +437,7 @@
                                                                                                                                                                                                                                 -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                                                                    -- HASH_PARTITION_EXCHANGE [$$450]  |PARTITIONED|
+                                                                                                                                                                                                    -- HASH_PARTITION_EXCHANGE [$$448]  |PARTITIONED|
                                                                                                                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                         -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -457,7 +457,7 @@
                                                                                                                                                                                       -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                           -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                            -- HASH_PARTITION_EXCHANGE [$$446]  |PARTITIONED|
+                                                                                                                                                                                            -- HASH_PARTITION_EXCHANGE [$$444]  |PARTITIONED|
                                                                                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                 -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                                                   -- ASSIGN  |PARTITIONED|
@@ -478,7 +478,7 @@
                                                                                                             -- BROADCAST_EXCHANGE  |PARTITIONED|
                                                                                                               -- UNNEST  |UNPARTITIONED|
                                                                                                                 -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
-                                                                                  -- HASH_PARTITION_EXCHANGE [$$216]  |PARTITIONED|
+                                                                                  -- HASH_PARTITION_EXCHANGE [$$214]  |PARTITIONED|
                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                       -- ASSIGN  |PARTITIONED|
                                                                                         -- STREAM_PROJECT  |PARTITIONED|
@@ -496,7 +496,7 @@
                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                     -- UNNEST  |PARTITIONED|
                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                        -- PRE_CLUSTERED_GROUP_BY[$$329, $$328]  |PARTITIONED|
+                                                                                        -- PRE_CLUSTERED_GROUP_BY[$$327, $$326]  |PARTITIONED|
                                                                                                 {
                                                                                                   -- AGGREGATE  |LOCAL|
                                                                                                     -- AGGREGATE  |LOCAL|
@@ -504,34 +504,34 @@
                                                                                                         -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                 }
                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                            -- STABLE_SORT [$$329(ASC), $$328(ASC)]  |PARTITIONED|
+                                                                                            -- STABLE_SORT [$$327(ASC), $$326(ASC)]  |PARTITIONED|
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                    -- HYBRID_HASH_JOIN [$$329, $$328][$$400, $$399]  |PARTITIONED|
-                                                                                                      -- HASH_PARTITION_EXCHANGE [$$329, $$328]  |PARTITIONED|
+                                                                                                    -- HYBRID_HASH_JOIN [$$327, $$326][$$398, $$397]  |PARTITIONED|
+                                                                                                      -- HASH_PARTITION_EXCHANGE [$$327, $$326]  |PARTITIONED|
                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                            -- HYBRID_HASH_JOIN [$$322][$$321]  |PARTITIONED|
-                                                                                                              -- HASH_PARTITION_EXCHANGE [$$322]  |PARTITIONED|
-                                                                                                                -- PRE_CLUSTERED_GROUP_BY[$$330]  |PARTITIONED|
+                                                                                                            -- HYBRID_HASH_JOIN [$$320][$$319]  |PARTITIONED|
+                                                                                                              -- HASH_PARTITION_EXCHANGE [$$320]  |PARTITIONED|
+                                                                                                                -- PRE_CLUSTERED_GROUP_BY[$$328]  |PARTITIONED|
                                                                                                                         {
                                                                                                                           -- AGGREGATE  |LOCAL|
                                                                                                                             -- STREAM_SELECT  |LOCAL|
                                                                                                                               -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                         }
                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                    -- STABLE_SORT [$$330(ASC)]  |PARTITIONED|
+                                                                                                                    -- STABLE_SORT [$$328(ASC)]  |PARTITIONED|
                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                            -- HYBRID_HASH_JOIN [$$330][$$333]  |PARTITIONED|
+                                                                                                                            -- HYBRID_HASH_JOIN [$$328][$$331]  |PARTITIONED|
                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                   -- ASSIGN  |PARTITIONED|
                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                       -- REPLICATE  |PARTITIONED|
-                                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$401]  |PARTITIONED|
+                                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$399]  |PARTITIONED|
                                                                                                                                           -- REPLICATE  |PARTITIONED|
                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
@@ -540,40 +540,40 @@
                                                                                                                                                     -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$333]  |PARTITIONED|
+                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$331]  |PARTITIONED|
                                                                                                                                 -- ASSIGN  |PARTITIONED|
                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                      -- HYBRID_HASH_JOIN [$$338][$$337]  |PARTITIONED|
+                                                                                                                                      -- HYBRID_HASH_JOIN [$$336][$$335]  |PARTITIONED|
                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                             -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                  -- PRE_CLUSTERED_GROUP_BY[$$340, $$342]  |PARTITIONED|
+                                                                                                                                                  -- PRE_CLUSTERED_GROUP_BY[$$338, $$340]  |PARTITIONED|
                                                                                                                                                           {
                                                                                                                                                             -- AGGREGATE  |LOCAL|
                                                                                                                                                               -- STREAM_SELECT  |LOCAL|
                                                                                                                                                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                                                           }
                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                      -- STABLE_SORT [$$340(ASC), $$342(ASC)]  |PARTITIONED|
+                                                                                                                                                      -- STABLE_SORT [$$338(ASC), $$340(ASC)]  |PARTITIONED|
                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                              -- HYBRID_HASH_JOIN [$$340, $$342][$$350, $$351]  |PARTITIONED|
+                                                                                                                                                              -- HYBRID_HASH_JOIN [$$338, $$340][$$348, $$349]  |PARTITIONED|
                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                     -- ASSIGN  |PARTITIONED|
                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                         -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$411, $$413]  |PARTITIONED|
+                                                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$409, $$411]  |PARTITIONED|
                                                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                -- HYBRID_HASH_JOIN [$$416][$$417]  |PARTITIONED|
+                                                                                                                                                                                -- HYBRID_HASH_JOIN [$$417][$$418]  |PARTITIONED|
                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                     -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$416]  |PARTITIONED|
+                                                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
                                                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                           -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -585,7 +585,7 @@
                                                                                                                                                                                                         -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                                                  -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
+                                                                                                                                                                                  -- HASH_PARTITION_EXCHANGE [$$418]  |PARTITIONED|
                                                                                                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                       -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                                         -- ASSIGN  |PARTITIONED|
@@ -602,7 +602,7 @@
                                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                           -- UNNEST  |PARTITIONED|
                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                              -- PRE_CLUSTERED_GROUP_BY[$$356, $$357]  |PARTITIONED|
+                                                                                                                                                                              -- PRE_CLUSTERED_GROUP_BY[$$354, $$355]  |PARTITIONED|
                                                                                                                                                                                       {
                                                                                                                                                                                         -- AGGREGATE  |LOCAL|
                                                                                                                                                                                           -- AGGREGATE  |LOCAL|
@@ -610,26 +610,26 @@
                                                                                                                                                                                               -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                                                                                       }
                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                  -- STABLE_SORT [$$356(ASC), $$357(ASC)]  |PARTITIONED|
+                                                                                                                                                                                  -- STABLE_SORT [$$354(ASC), $$355(ASC)]  |PARTITIONED|
                                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                          -- HYBRID_HASH_JOIN [$$356, $$357][$$366, $$367]  |PARTITIONED|
+                                                                                                                                                                                          -- HYBRID_HASH_JOIN [$$354, $$355][$$364, $$365]  |PARTITIONED|
                                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                 -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                     -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$427, $$428]  |PARTITIONED|
+                                                                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$425, $$426]  |PARTITIONED|
                                                                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$430][$$429]  |PARTITIONED|
+                                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$428][$$427]  |PARTITIONED|
                                                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                   -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                       -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$416]  |PARTITIONED|
+                                                                                                                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
                                                                                                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                             -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -641,7 +641,7 @@
                                                                                                                                                                                                                                           -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$429]  |PARTITIONED|
+                                                                                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$427]  |PARTITIONED|
                                                                                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                   -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -656,15 +656,15 @@
                                                                                                                                                                                                                                       -- DATASOURCE_SCAN (test.collection1)  |PARTITIONED|
                                                                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                                                            -- HASH_PARTITION_EXCHANGE [$$366, $$367]  |PARTITIONED|
+                                                                                                                                                                                            -- HASH_PARTITION_EXCHANGE [$$364, $$365]  |PARTITIONED|
                                                                                                                                                                                               -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                    -- HYBRID_HASH_JOIN [$$374][$$373]  |PARTITIONED|
+                                                                                                                                                                                                    -- HYBRID_HASH_JOIN [$$372][$$371]  |PARTITIONED|
                                                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$376][$$375]  |PARTITIONED|
+                                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$374][$$373]  |PARTITIONED|
                                                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                   -- ASSIGN  |PARTITIONED|
@@ -673,13 +673,13 @@
                                                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                                              -- HYBRID_HASH_JOIN [$$447][$$450]  |PARTITIONED|
+                                                                                                                                                                                                                              -- HYBRID_HASH_JOIN [$$445][$$448]  |PARTITIONED|
                                                                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                                     -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                         -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$416]  |PARTITIONED|
+                                                                                                                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
                                                                                                                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                                               -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -691,7 +691,7 @@
                                                                                                                                                                                                                                                             -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$450]  |PARTITIONED|
+                                                                                                                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$448]  |PARTITIONED|
                                                                                                                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                                     -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -711,7 +711,7 @@
                                                                                                                                                                                                                   -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                       -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$446]  |PARTITIONED|
+                                                                                                                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$444]  |PARTITIONED|
                                                                                                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                             -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                                                                               -- ASSIGN  |PARTITIONED|
@@ -732,7 +732,7 @@
                                                                                                                                         -- BROADCAST_EXCHANGE  |PARTITIONED|
                                                                                                                                           -- UNNEST  |UNPARTITIONED|
                                                                                                                                             -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
-                                                                                                              -- HASH_PARTITION_EXCHANGE [$$321]  |PARTITIONED|
+                                                                                                              -- HASH_PARTITION_EXCHANGE [$$319]  |PARTITIONED|
                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                   -- ASSIGN  |PARTITIONED|
                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -747,35 +747,35 @@
                                                                                                                                       -- DATASOURCE_SCAN (test.collection1)  |PARTITIONED|
                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                      -- HASH_PARTITION_EXCHANGE [$$400, $$399]  |PARTITIONED|
+                                                                                                      -- HASH_PARTITION_EXCHANGE [$$398, $$397]  |PARTITIONED|
                                                                                                         -- ASSIGN  |PARTITIONED|
                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                              -- HYBRID_HASH_JOIN [$$174][$$202]  |PARTITIONED|
+                                                                                                              -- HYBRID_HASH_JOIN [$$172][$$200]  |PARTITIONED|
                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                      -- HYBRID_HASH_JOIN [$$393][$$218]  |PARTITIONED|
+                                                                                                                      -- HYBRID_HASH_JOIN [$$391][$$216]  |PARTITIONED|
                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                              -- HYBRID_HASH_JOIN [$$393][$$392]  |PARTITIONED|
-                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$393]  |PARTITIONED|
-                                                                                                                                  -- PRE_CLUSTERED_GROUP_BY[$$401]  |PARTITIONED|
+                                                                                                                              -- HYBRID_HASH_JOIN [$$391][$$390]  |PARTITIONED|
+                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$391]  |PARTITIONED|
+                                                                                                                                  -- PRE_CLUSTERED_GROUP_BY[$$399]  |PARTITIONED|
                                                                                                                                           {
                                                                                                                                             -- AGGREGATE  |LOCAL|
                                                                                                                                               -- STREAM_SELECT  |LOCAL|
                                                                                                                                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                                           }
                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                      -- STABLE_SORT [$$401(ASC)]  |PARTITIONED|
+                                                                                                                                      -- STABLE_SORT [$$399(ASC)]  |PARTITIONED|
                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                              -- HYBRID_HASH_JOIN [$$401][$$404]  |PARTITIONED|
+                                                                                                                                              -- HYBRID_HASH_JOIN [$$399][$$402]  |PARTITIONED|
                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                   -- REPLICATE  |PARTITIONED|
-                                                                                                                                                    -- HASH_PARTITION_EXCHANGE [$$401]  |PARTITIONED|
+                                                                                                                                                    -- HASH_PARTITION_EXCHANGE [$$399]  |PARTITIONED|
                                                                                                                                                       -- REPLICATE  |PARTITIONED|
                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
@@ -784,37 +784,37 @@
                                                                                                                                                                 -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$404]  |PARTITIONED|
+                                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$402]  |PARTITIONED|
                                                                                                                                                   -- ASSIGN  |PARTITIONED|
                                                                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                        -- HYBRID_HASH_JOIN [$$409][$$408]  |PARTITIONED|
+                                                                                                                                                        -- HYBRID_HASH_JOIN [$$407][$$406]  |PARTITIONED|
                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                               -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                    -- PRE_CLUSTERED_GROUP_BY[$$411, $$413]  |PARTITIONED|
+                                                                                                                                                                    -- PRE_CLUSTERED_GROUP_BY[$$409, $$411]  |PARTITIONED|
                                                                                                                                                                             {
                                                                                                                                                                               -- AGGREGATE  |LOCAL|
                                                                                                                                                                                 -- STREAM_SELECT  |LOCAL|
                                                                                                                                                                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                                                                             }
                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                        -- STABLE_SORT [$$411(ASC), $$413(ASC)]  |PARTITIONED|
+                                                                                                                                                                        -- STABLE_SORT [$$409(ASC), $$411(ASC)]  |PARTITIONED|
                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                -- HYBRID_HASH_JOIN [$$411, $$413][$$421, $$422]  |PARTITIONED|
+                                                                                                                                                                                -- HYBRID_HASH_JOIN [$$409, $$411][$$419, $$420]  |PARTITIONED|
                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                     -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$411, $$413]  |PARTITIONED|
+                                                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$409, $$411]  |PARTITIONED|
                                                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$416][$$417]  |PARTITIONED|
+                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$417][$$418]  |PARTITIONED|
                                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                 -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                                  -- HASH_PARTITION_EXCHANGE [$$416]  |PARTITIONED|
+                                                                                                                                                                                                  -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
                                                                                                                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                       -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -826,7 +826,7 @@
                                                                                                                                                                                                                     -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
+                                                                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$418]  |PARTITIONED|
                                                                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                   -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                                                     -- ASSIGN  |PARTITIONED|
@@ -843,7 +843,7 @@
                                                                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                             -- UNNEST  |PARTITIONED|
                                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                -- PRE_CLUSTERED_GROUP_BY[$$427, $$428]  |PARTITIONED|
+                                                                                                                                                                                                -- PRE_CLUSTERED_GROUP_BY[$$425, $$426]  |PARTITIONED|
                                                                                                                                                                                                         {
                                                                                                                                                                                                           -- AGGREGATE  |LOCAL|
                                                                                                                                                                                                             -- AGGREGATE  |LOCAL|
@@ -851,23 +851,23 @@
                                                                                                                                                                                                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                                                                                                         }
                                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                    -- STABLE_SORT [$$427(ASC), $$428(ASC)]  |PARTITIONED|
+                                                                                                                                                                                                    -- STABLE_SORT [$$425(ASC), $$426(ASC)]  |PARTITIONED|
                                                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$427, $$428][$$437, $$438]  |PARTITIONED|
+                                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$425, $$426][$$435, $$436]  |PARTITIONED|
                                                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                 -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                                                  -- HASH_PARTITION_EXCHANGE [$$427, $$428]  |PARTITIONED|
+                                                                                                                                                                                                                  -- HASH_PARTITION_EXCHANGE [$$425, $$426]  |PARTITIONED|
                                                                                                                                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                                        -- HYBRID_HASH_JOIN [$$430][$$429]  |PARTITIONED|
+                                                                                                                                                                                                                        -- HYBRID_HASH_JOIN [$$428][$$427]  |PARTITIONED|
                                                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                               -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                   -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                                                                    -- HASH_PARTITION_EXCHANGE [$$416]  |PARTITIONED|
+                                                                                                                                                                                                                                    -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
                                                                                                                                                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                                         -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -879,7 +879,7 @@
                                                                                                                                                                                                                                                       -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$429]  |PARTITIONED|
+                                                                                                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$427]  |PARTITIONED|
                                                                                                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                               -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -894,27 +894,27 @@
                                                                                                                                                                                                                                                   -- DATASOURCE_SCAN (test.collection1)  |PARTITIONED|
                                                                                                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$437, $$438]  |PARTITIONED|
+                                                                                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$435, $$436]  |PARTITIONED|
                                                                                                                                                                                                                 -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                                      -- HYBRID_HASH_JOIN [$$445][$$444]  |PARTITIONED|
+                                                                                                                                                                                                                      -- HYBRID_HASH_JOIN [$$443][$$442]  |PARTITIONED|
                                                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                                              -- HYBRID_HASH_JOIN [$$447][$$446]  |PARTITIONED|
+                                                                                                                                                                                                                              -- HYBRID_HASH_JOIN [$$445][$$444]  |PARTITIONED|
                                                                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                   -- REPLICATE  |PARTITIONED|
                                                                                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                                                          -- HYBRID_HASH_JOIN [$$447][$$450]  |PARTITIONED|
+                                                                                                                                                                                                                                          -- HYBRID_HASH_JOIN [$$445][$$448]  |PARTITIONED|
                                                                                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                                                 -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                                     -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$416]  |PARTITIONED|
+                                                                                                                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
                                                                                                                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                                                           -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -926,7 +926,7 @@
                                                                                                                                                                                                                                                                         -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                                                                                                            -- HASH_PARTITION_EXCHANGE [$$450]  |PARTITIONED|
+                                                                                                                                                                                                                                            -- HASH_PARTITION_EXCHANGE [$$448]  |PARTITIONED|
                                                                                                                                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                                                 -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -943,7 +943,7 @@
                                                                                                                                                                                                                                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                                                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                   -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                                                                    -- HASH_PARTITION_EXCHANGE [$$446]  |PARTITIONED|
+                                                                                                                                                                                                                                    -- HASH_PARTITION_EXCHANGE [$$444]  |PARTITIONED|
                                                                                                                                                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                                         -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                                                                                           -- ASSIGN  |PARTITIONED|
@@ -964,7 +964,7 @@
                                                                                                                                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
                                                                                                                                                             -- UNNEST  |UNPARTITIONED|
                                                                                                                                                               -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
-                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$392]  |PARTITIONED|
+                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$390]  |PARTITIONED|
                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                     -- ASSIGN  |PARTITIONED|
                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -979,7 +979,7 @@
                                                                                                                                                         -- DATASOURCE_SCAN (test.collection1)  |PARTITIONED|
                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$218]  |PARTITIONED|
+                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$216]  |PARTITIONED|
                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                             -- ASSIGN  |PARTITIONED|
                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue3316.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue3316.plan
index 755f182..96df2d9 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue3316.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue3316.plan
@@ -2,13 +2,13 @@
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
     -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        -- STABLE_SORT [$$194(ASC)]  |PARTITIONED|
-          -- HASH_PARTITION_EXCHANGE [$$194]  |PARTITIONED|
+        -- STABLE_SORT [$$192(ASC)]  |PARTITIONED|
+          -- HASH_PARTITION_EXCHANGE [$$192]  |PARTITIONED|
             -- STREAM_PROJECT  |PARTITIONED|
               -- ASSIGN  |PARTITIONED|
                 -- STREAM_PROJECT  |PARTITIONED|
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    -- PRE_CLUSTERED_GROUP_BY[$$229]  |PARTITIONED|
+                    -- PRE_CLUSTERED_GROUP_BY[$$227]  |PARTITIONED|
                             {
                               -- AGGREGATE  |LOCAL|
                                 -- STREAM_SELECT  |LOCAL|
@@ -17,60 +17,60 @@
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                         -- STREAM_PROJECT  |PARTITIONED|
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            -- HYBRID_HASH_JOIN [$$229][$$390]  |PARTITIONED|
+                            -- HYBRID_HASH_JOIN [$$227][$$388]  |PARTITIONED|
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                -- PRE_CLUSTERED_GROUP_BY[$$195]  |PARTITIONED|
+                                -- PRE_CLUSTERED_GROUP_BY[$$193]  |PARTITIONED|
                                         {
                                           -- AGGREGATE  |LOCAL|
                                             -- STREAM_SELECT  |LOCAL|
                                               -- NESTED_TUPLE_SOURCE  |LOCAL|
                                         }
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    -- STABLE_SORT [$$195(ASC)]  |PARTITIONED|
+                                    -- STABLE_SORT [$$193(ASC)]  |PARTITIONED|
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                         -- STREAM_PROJECT  |PARTITIONED|
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            -- HYBRID_HASH_JOIN [$$195][$$242]  |PARTITIONED|
-                                              -- HASH_PARTITION_EXCHANGE [$$195]  |PARTITIONED|
+                                            -- HYBRID_HASH_JOIN [$$193][$$240]  |PARTITIONED|
+                                              -- HASH_PARTITION_EXCHANGE [$$193]  |PARTITIONED|
                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                   -- ASSIGN  |PARTITIONED|
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                       -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                              -- HASH_PARTITION_EXCHANGE [$$242]  |PARTITIONED|
+                                              -- HASH_PARTITION_EXCHANGE [$$240]  |PARTITIONED|
                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                   -- ASSIGN  |PARTITIONED|
                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        -- HYBRID_HASH_JOIN [$$128][$$201]  |PARTITIONED|
+                                                        -- HYBRID_HASH_JOIN [$$126][$$199]  |PARTITIONED|
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                               -- STREAM_SELECT  |PARTITIONED|
                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    -- PRE_CLUSTERED_GROUP_BY[$$227, $$196]  |PARTITIONED|
+                                                                    -- PRE_CLUSTERED_GROUP_BY[$$225, $$194]  |PARTITIONED|
                                                                             {
                                                                               -- AGGREGATE  |LOCAL|
                                                                                 -- STREAM_SELECT  |LOCAL|
                                                                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                             }
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        -- STABLE_SORT [$$227(ASC), $$196(ASC)]  |PARTITIONED|
+                                                                        -- STABLE_SORT [$$225(ASC), $$194(ASC)]  |PARTITIONED|
                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                -- HYBRID_HASH_JOIN [$$227, $$196][$$256, $$257]  |PARTITIONED|
-                                                                                  -- HASH_PARTITION_EXCHANGE [$$227, $$196]  |PARTITIONED|
+                                                                                -- HYBRID_HASH_JOIN [$$225, $$194][$$254, $$255]  |PARTITIONED|
+                                                                                  -- HASH_PARTITION_EXCHANGE [$$225, $$194]  |PARTITIONED|
                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                        -- HYBRID_HASH_JOIN [$$225][$$209]  |PARTITIONED|
+                                                                                        -- HYBRID_HASH_JOIN [$$223][$$207]  |PARTITIONED|
                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                               -- ASSIGN  |PARTITIONED|
                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                   -- REPLICATE  |PARTITIONED|
-                                                                                                    -- HASH_PARTITION_EXCHANGE [$$447]  |PARTITIONED|
+                                                                                                    -- HASH_PARTITION_EXCHANGE [$$445]  |PARTITIONED|
                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                         -- ASSIGN  |PARTITIONED|
                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -82,7 +82,7 @@
                                                                                                                       -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                          -- HASH_PARTITION_EXCHANGE [$$209]  |PARTITIONED|
+                                                                                          -- HASH_PARTITION_EXCHANGE [$$207]  |PARTITIONED|
                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                               -- STREAM_SELECT  |PARTITIONED|
                                                                                                 -- ASSIGN  |PARTITIONED|
@@ -101,34 +101,34 @@
                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                             -- UNNEST  |PARTITIONED|
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                -- PRE_CLUSTERED_GROUP_BY[$$240, $$237]  |PARTITIONED|
+                                                                                                -- PRE_CLUSTERED_GROUP_BY[$$238, $$235]  |PARTITIONED|
                                                                                                         {
                                                                                                           -- AGGREGATE  |LOCAL|
                                                                                                             -- AGGREGATE  |LOCAL|
                                                                                                               -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                         }
                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                    -- STABLE_SORT [$$240(ASC), $$237(ASC)]  |PARTITIONED|
-                                                                                                      -- HASH_PARTITION_EXCHANGE [$$240, $$237]  |PARTITIONED|
+                                                                                                    -- STABLE_SORT [$$238(ASC), $$235(ASC)]  |PARTITIONED|
+                                                                                                      -- HASH_PARTITION_EXCHANGE [$$238, $$235]  |PARTITIONED|
                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                            -- HYBRID_HASH_JOIN [$$251, $$231][$$237, $$230]  |PARTITIONED|
+                                                                                                            -- HYBRID_HASH_JOIN [$$249, $$229][$$235, $$228]  |PARTITIONED|
                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                    -- HYBRID_HASH_JOIN [$$245][$$244]  |PARTITIONED|
+                                                                                                                    -- HYBRID_HASH_JOIN [$$243][$$242]  |PARTITIONED|
                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                            -- HYBRID_HASH_JOIN [$$254][$$240]  |PARTITIONED|
+                                                                                                                            -- HYBRID_HASH_JOIN [$$252][$$238]  |PARTITIONED|
                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                    -- HYBRID_HASH_JOIN [$$212][$$245]  |PARTITIONED|
-                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$212]  |PARTITIONED|
+                                                                                                                                    -- HYBRID_HASH_JOIN [$$210][$$243]  |PARTITIONED|
+                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$210]  |PARTITIONED|
                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                            -- HYBRID_HASH_JOIN [$$137][$$200]  |PARTITIONED|
+                                                                                                                                            -- HYBRID_HASH_JOIN [$$135][$$198]  |PARTITIONED|
                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                   -- STREAM_SELECT  |PARTITIONED|
@@ -151,7 +151,7 @@
                                                                                                                                           -- ASSIGN  |PARTITIONED|
                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                               -- REPLICATE  |PARTITIONED|
-                                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$447]  |PARTITIONED|
+                                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$445]  |PARTITIONED|
                                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                     -- ASSIGN  |PARTITIONED|
                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -220,56 +220,56 @@
                                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
                                                             -- UNNEST  |UNPARTITIONED|
                                                               -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
-                              -- HASH_PARTITION_EXCHANGE [$$390]  |PARTITIONED|
+                              -- HASH_PARTITION_EXCHANGE [$$388]  |PARTITIONED|
                                 -- STREAM_PROJECT  |PARTITIONED|
                                   -- ASSIGN  |PARTITIONED|
                                     -- STREAM_PROJECT  |PARTITIONED|
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        -- HYBRID_HASH_JOIN [$$164][$$204]  |PARTITIONED|
+                                        -- HYBRID_HASH_JOIN [$$162][$$202]  |PARTITIONED|
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                             -- STREAM_PROJECT  |PARTITIONED|
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                -- HYBRID_HASH_JOIN [$$167][$$203]  |PARTITIONED|
+                                                -- HYBRID_HASH_JOIN [$$165][$$201]  |PARTITIONED|
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                       -- STREAM_SELECT  |PARTITIONED|
                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            -- PRE_CLUSTERED_GROUP_BY[$$258, $$198]  |PARTITIONED|
+                                                            -- PRE_CLUSTERED_GROUP_BY[$$256, $$196]  |PARTITIONED|
                                                                     {
                                                                       -- AGGREGATE  |LOCAL|
                                                                         -- STREAM_SELECT  |LOCAL|
                                                                           -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                     }
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                -- STABLE_SORT [$$258(ASC), $$198(ASC)]  |PARTITIONED|
+                                                                -- STABLE_SORT [$$256(ASC), $$196(ASC)]  |PARTITIONED|
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        -- HYBRID_HASH_JOIN [$$258, $$198][$$461, $$462]  |PARTITIONED|
-                                                                          -- HASH_PARTITION_EXCHANGE [$$258, $$198]  |PARTITIONED|
+                                                                        -- HYBRID_HASH_JOIN [$$256, $$196][$$459, $$460]  |PARTITIONED|
+                                                                          -- HASH_PARTITION_EXCHANGE [$$256, $$196]  |PARTITIONED|
                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                -- HYBRID_HASH_JOIN [$$262][$$216]  |PARTITIONED|
-                                                                                  -- HASH_PARTITION_EXCHANGE [$$262]  |PARTITIONED|
-                                                                                    -- PRE_CLUSTERED_GROUP_BY[$$259]  |PARTITIONED|
+                                                                                -- HYBRID_HASH_JOIN [$$260][$$214]  |PARTITIONED|
+                                                                                  -- HASH_PARTITION_EXCHANGE [$$260]  |PARTITIONED|
+                                                                                    -- PRE_CLUSTERED_GROUP_BY[$$257]  |PARTITIONED|
                                                                                             {
                                                                                               -- AGGREGATE  |LOCAL|
                                                                                                 -- STREAM_SELECT  |LOCAL|
                                                                                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                             }
                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                        -- STABLE_SORT [$$259(ASC)]  |PARTITIONED|
+                                                                                        -- STABLE_SORT [$$257(ASC)]  |PARTITIONED|
                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                -- HYBRID_HASH_JOIN [$$259][$$263]  |PARTITIONED|
+                                                                                                -- HYBRID_HASH_JOIN [$$257][$$261]  |PARTITIONED|
                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                       -- ASSIGN  |PARTITIONED|
                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                           -- REPLICATE  |PARTITIONED|
-                                                                                                            -- HASH_PARTITION_EXCHANGE [$$401]  |PARTITIONED|
+                                                                                                            -- HASH_PARTITION_EXCHANGE [$$399]  |PARTITIONED|
                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                 -- ASSIGN  |PARTITIONED|
                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -281,43 +281,43 @@
                                                                                                                               -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                  -- HASH_PARTITION_EXCHANGE [$$263]  |PARTITIONED|
+                                                                                                  -- HASH_PARTITION_EXCHANGE [$$261]  |PARTITIONED|
                                                                                                     -- ASSIGN  |PARTITIONED|
                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                          -- HYBRID_HASH_JOIN [$$268][$$267]  |PARTITIONED|
+                                                                                                          -- HYBRID_HASH_JOIN [$$266][$$265]  |PARTITIONED|
                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                 -- STREAM_SELECT  |PARTITIONED|
                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                      -- PRE_CLUSTERED_GROUP_BY[$$270, $$272]  |PARTITIONED|
+                                                                                                                      -- PRE_CLUSTERED_GROUP_BY[$$268, $$270]  |PARTITIONED|
                                                                                                                               {
                                                                                                                                 -- AGGREGATE  |LOCAL|
                                                                                                                                   -- STREAM_SELECT  |LOCAL|
                                                                                                                                     -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                               }
                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                          -- STABLE_SORT [$$270(ASC), $$272(ASC)]  |PARTITIONED|
+                                                                                                                          -- STABLE_SORT [$$268(ASC), $$270(ASC)]  |PARTITIONED|
                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                  -- HYBRID_HASH_JOIN [$$270, $$272][$$280, $$281]  |PARTITIONED|
+                                                                                                                                  -- HYBRID_HASH_JOIN [$$268, $$270][$$278, $$279]  |PARTITIONED|
                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                         -- ASSIGN  |PARTITIONED|
                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                             -- REPLICATE  |PARTITIONED|
-                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$411, $$413]  |PARTITIONED|
+                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$409, $$411]  |PARTITIONED|
                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                    -- HYBRID_HASH_JOIN [$$416][$$417]  |PARTITIONED|
+                                                                                                                                                    -- HYBRID_HASH_JOIN [$$417][$$418]  |PARTITIONED|
                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                           -- ASSIGN  |PARTITIONED|
                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                               -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$447]  |PARTITIONED|
+                                                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$445]  |PARTITIONED|
                                                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                     -- ASSIGN  |PARTITIONED|
                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -329,7 +329,7 @@
                                                                                                                                                                                   -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
+                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$418]  |PARTITIONED|
                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                           -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                             -- ASSIGN  |PARTITIONED|
@@ -346,34 +346,34 @@
                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                               -- UNNEST  |PARTITIONED|
                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                  -- PRE_CLUSTERED_GROUP_BY[$$286, $$287]  |PARTITIONED|
+                                                                                                                                                  -- PRE_CLUSTERED_GROUP_BY[$$284, $$285]  |PARTITIONED|
                                                                                                                                                           {
                                                                                                                                                             -- AGGREGATE  |LOCAL|
                                                                                                                                                               -- AGGREGATE  |LOCAL|
                                                                                                                                                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                                                           }
                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                      -- STABLE_SORT [$$286(ASC), $$287(ASC)]  |PARTITIONED|
-                                                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$286, $$287]  |PARTITIONED|
+                                                                                                                                                      -- STABLE_SORT [$$284(ASC), $$285(ASC)]  |PARTITIONED|
+                                                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$284, $$285]  |PARTITIONED|
                                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                              -- HYBRID_HASH_JOIN [$$297, $$289][$$287, $$288]  |PARTITIONED|
+                                                                                                                                                              -- HYBRID_HASH_JOIN [$$295, $$287][$$285, $$286]  |PARTITIONED|
                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                      -- HYBRID_HASH_JOIN [$$306][$$309]  |PARTITIONED|
+                                                                                                                                                                      -- HYBRID_HASH_JOIN [$$304][$$307]  |PARTITIONED|
                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                              -- HYBRID_HASH_JOIN [$$296][$$286]  |PARTITIONED|
+                                                                                                                                                                              -- HYBRID_HASH_JOIN [$$294][$$284]  |PARTITIONED|
                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                      -- HYBRID_HASH_JOIN [$$305][$$306]  |PARTITIONED|
-                                                                                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$305]  |PARTITIONED|
+                                                                                                                                                                                      -- HYBRID_HASH_JOIN [$$303][$$304]  |PARTITIONED|
+                                                                                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$303]  |PARTITIONED|
                                                                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                              -- HYBRID_HASH_JOIN [$$304][$$303]  |PARTITIONED|
+                                                                                                                                                                                              -- HYBRID_HASH_JOIN [$$302][$$301]  |PARTITIONED|
                                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                     -- ASSIGN  |PARTITIONED|
@@ -399,7 +399,7 @@
                                                                                                                                                                                             -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                 -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                                  -- HASH_PARTITION_EXCHANGE [$$447]  |PARTITIONED|
+                                                                                                                                                                                                  -- HASH_PARTITION_EXCHANGE [$$445]  |PARTITIONED|
                                                                                                                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                       -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -468,7 +468,7 @@
                                                                                                             -- BROADCAST_EXCHANGE  |PARTITIONED|
                                                                                                               -- UNNEST  |UNPARTITIONED|
                                                                                                                 -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
-                                                                                  -- HASH_PARTITION_EXCHANGE [$$216]  |PARTITIONED|
+                                                                                  -- HASH_PARTITION_EXCHANGE [$$214]  |PARTITIONED|
                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                       -- ASSIGN  |PARTITIONED|
                                                                                         -- STREAM_PROJECT  |PARTITIONED|
@@ -486,7 +486,7 @@
                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                     -- UNNEST  |PARTITIONED|
                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                        -- PRE_CLUSTERED_GROUP_BY[$$329, $$328]  |PARTITIONED|
+                                                                                        -- PRE_CLUSTERED_GROUP_BY[$$327, $$326]  |PARTITIONED|
                                                                                                 {
                                                                                                   -- AGGREGATE  |LOCAL|
                                                                                                     -- AGGREGATE  |LOCAL|
@@ -494,34 +494,34 @@
                                                                                                         -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                 }
                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                            -- STABLE_SORT [$$329(ASC), $$328(ASC)]  |PARTITIONED|
+                                                                                            -- STABLE_SORT [$$327(ASC), $$326(ASC)]  |PARTITIONED|
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                    -- HYBRID_HASH_JOIN [$$329, $$328][$$400, $$399]  |PARTITIONED|
-                                                                                                      -- HASH_PARTITION_EXCHANGE [$$329, $$328]  |PARTITIONED|
+                                                                                                    -- HYBRID_HASH_JOIN [$$327, $$326][$$398, $$397]  |PARTITIONED|
+                                                                                                      -- HASH_PARTITION_EXCHANGE [$$327, $$326]  |PARTITIONED|
                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                            -- HYBRID_HASH_JOIN [$$322][$$321]  |PARTITIONED|
-                                                                                                              -- HASH_PARTITION_EXCHANGE [$$322]  |PARTITIONED|
-                                                                                                                -- PRE_CLUSTERED_GROUP_BY[$$330]  |PARTITIONED|
+                                                                                                            -- HYBRID_HASH_JOIN [$$320][$$319]  |PARTITIONED|
+                                                                                                              -- HASH_PARTITION_EXCHANGE [$$320]  |PARTITIONED|
+                                                                                                                -- PRE_CLUSTERED_GROUP_BY[$$328]  |PARTITIONED|
                                                                                                                         {
                                                                                                                           -- AGGREGATE  |LOCAL|
                                                                                                                             -- STREAM_SELECT  |LOCAL|
                                                                                                                               -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                         }
                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                    -- STABLE_SORT [$$330(ASC)]  |PARTITIONED|
+                                                                                                                    -- STABLE_SORT [$$328(ASC)]  |PARTITIONED|
                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                            -- HYBRID_HASH_JOIN [$$330][$$333]  |PARTITIONED|
+                                                                                                                            -- HYBRID_HASH_JOIN [$$328][$$331]  |PARTITIONED|
                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                   -- ASSIGN  |PARTITIONED|
                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                       -- REPLICATE  |PARTITIONED|
-                                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$401]  |PARTITIONED|
+                                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$399]  |PARTITIONED|
                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                             -- ASSIGN  |PARTITIONED|
                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -533,43 +533,43 @@
                                                                                                                                                           -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$333]  |PARTITIONED|
+                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$331]  |PARTITIONED|
                                                                                                                                 -- ASSIGN  |PARTITIONED|
                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                      -- HYBRID_HASH_JOIN [$$338][$$337]  |PARTITIONED|
+                                                                                                                                      -- HYBRID_HASH_JOIN [$$336][$$335]  |PARTITIONED|
                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                             -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                  -- PRE_CLUSTERED_GROUP_BY[$$340, $$342]  |PARTITIONED|
+                                                                                                                                                  -- PRE_CLUSTERED_GROUP_BY[$$338, $$340]  |PARTITIONED|
                                                                                                                                                           {
                                                                                                                                                             -- AGGREGATE  |LOCAL|
                                                                                                                                                               -- STREAM_SELECT  |LOCAL|
                                                                                                                                                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                                                           }
                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                      -- STABLE_SORT [$$340(ASC), $$342(ASC)]  |PARTITIONED|
+                                                                                                                                                      -- STABLE_SORT [$$338(ASC), $$340(ASC)]  |PARTITIONED|
                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                              -- HYBRID_HASH_JOIN [$$340, $$342][$$350, $$351]  |PARTITIONED|
+                                                                                                                                                              -- HYBRID_HASH_JOIN [$$338, $$340][$$348, $$349]  |PARTITIONED|
                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                     -- ASSIGN  |PARTITIONED|
                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                         -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$411, $$413]  |PARTITIONED|
+                                                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$409, $$411]  |PARTITIONED|
                                                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                -- HYBRID_HASH_JOIN [$$416][$$417]  |PARTITIONED|
+                                                                                                                                                                                -- HYBRID_HASH_JOIN [$$417][$$418]  |PARTITIONED|
                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                       -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                           -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                            -- HASH_PARTITION_EXCHANGE [$$447]  |PARTITIONED|
+                                                                                                                                                                                            -- HASH_PARTITION_EXCHANGE [$$445]  |PARTITIONED|
                                                                                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                 -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -581,7 +581,7 @@
                                                                                                                                                                                                               -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                                                  -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
+                                                                                                                                                                                  -- HASH_PARTITION_EXCHANGE [$$418]  |PARTITIONED|
                                                                                                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                       -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                                         -- ASSIGN  |PARTITIONED|
@@ -598,34 +598,34 @@
                                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                           -- UNNEST  |PARTITIONED|
                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                              -- PRE_CLUSTERED_GROUP_BY[$$356, $$357]  |PARTITIONED|
+                                                                                                                                                                              -- PRE_CLUSTERED_GROUP_BY[$$354, $$355]  |PARTITIONED|
                                                                                                                                                                                       {
                                                                                                                                                                                         -- AGGREGATE  |LOCAL|
                                                                                                                                                                                           -- AGGREGATE  |LOCAL|
                                                                                                                                                                                             -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                                                                                       }
                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                  -- STABLE_SORT [$$356(ASC), $$357(ASC)]  |PARTITIONED|
-                                                                                                                                                                                    -- HASH_PARTITION_EXCHANGE [$$356, $$357]  |PARTITIONED|
+                                                                                                                                                                                  -- STABLE_SORT [$$354(ASC), $$355(ASC)]  |PARTITIONED|
+                                                                                                                                                                                    -- HASH_PARTITION_EXCHANGE [$$354, $$355]  |PARTITIONED|
                                                                                                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                          -- HYBRID_HASH_JOIN [$$367, $$359][$$357, $$358]  |PARTITIONED|
+                                                                                                                                                                                          -- HYBRID_HASH_JOIN [$$365, $$357][$$355, $$356]  |PARTITIONED|
                                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                  -- HYBRID_HASH_JOIN [$$376][$$379]  |PARTITIONED|
+                                                                                                                                                                                                  -- HYBRID_HASH_JOIN [$$374][$$377]  |PARTITIONED|
                                                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                          -- HYBRID_HASH_JOIN [$$366][$$356]  |PARTITIONED|
+                                                                                                                                                                                                          -- HYBRID_HASH_JOIN [$$364][$$354]  |PARTITIONED|
                                                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                                  -- HYBRID_HASH_JOIN [$$375][$$376]  |PARTITIONED|
-                                                                                                                                                                                                                    -- HASH_PARTITION_EXCHANGE [$$375]  |PARTITIONED|
+                                                                                                                                                                                                                  -- HYBRID_HASH_JOIN [$$373][$$374]  |PARTITIONED|
+                                                                                                                                                                                                                    -- HASH_PARTITION_EXCHANGE [$$373]  |PARTITIONED|
                                                                                                                                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                                          -- HYBRID_HASH_JOIN [$$374][$$373]  |PARTITIONED|
+                                                                                                                                                                                                                          -- HYBRID_HASH_JOIN [$$372][$$371]  |PARTITIONED|
                                                                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                                 -- ASSIGN  |PARTITIONED|
@@ -651,7 +651,7 @@
                                                                                                                                                                                                                         -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                             -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$447]  |PARTITIONED|
+                                                                                                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$445]  |PARTITIONED|
                                                                                                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                                   -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -720,7 +720,7 @@
                                                                                                                                         -- BROADCAST_EXCHANGE  |PARTITIONED|
                                                                                                                                           -- UNNEST  |UNPARTITIONED|
                                                                                                                                             -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
-                                                                                                              -- HASH_PARTITION_EXCHANGE [$$321]  |PARTITIONED|
+                                                                                                              -- HASH_PARTITION_EXCHANGE [$$319]  |PARTITIONED|
                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                   -- ASSIGN  |PARTITIONED|
                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -735,35 +735,35 @@
                                                                                                                                       -- DATASOURCE_SCAN (test.collection1)  |PARTITIONED|
                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                      -- HASH_PARTITION_EXCHANGE [$$400, $$399]  |PARTITIONED|
+                                                                                                      -- HASH_PARTITION_EXCHANGE [$$398, $$397]  |PARTITIONED|
                                                                                                         -- ASSIGN  |PARTITIONED|
                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                              -- HYBRID_HASH_JOIN [$$174][$$202]  |PARTITIONED|
+                                                                                                              -- HYBRID_HASH_JOIN [$$172][$$200]  |PARTITIONED|
                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                      -- HYBRID_HASH_JOIN [$$393][$$218]  |PARTITIONED|
+                                                                                                                      -- HYBRID_HASH_JOIN [$$391][$$216]  |PARTITIONED|
                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                              -- HYBRID_HASH_JOIN [$$393][$$392]  |PARTITIONED|
-                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$393]  |PARTITIONED|
-                                                                                                                                  -- PRE_CLUSTERED_GROUP_BY[$$401]  |PARTITIONED|
+                                                                                                                              -- HYBRID_HASH_JOIN [$$391][$$390]  |PARTITIONED|
+                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$391]  |PARTITIONED|
+                                                                                                                                  -- PRE_CLUSTERED_GROUP_BY[$$399]  |PARTITIONED|
                                                                                                                                           {
                                                                                                                                             -- AGGREGATE  |LOCAL|
                                                                                                                                               -- STREAM_SELECT  |LOCAL|
                                                                                                                                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                                           }
                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                      -- STABLE_SORT [$$401(ASC)]  |PARTITIONED|
+                                                                                                                                      -- STABLE_SORT [$$399(ASC)]  |PARTITIONED|
                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                              -- HYBRID_HASH_JOIN [$$401][$$404]  |PARTITIONED|
+                                                                                                                                              -- HYBRID_HASH_JOIN [$$399][$$402]  |PARTITIONED|
                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                   -- REPLICATE  |PARTITIONED|
-                                                                                                                                                    -- HASH_PARTITION_EXCHANGE [$$401]  |PARTITIONED|
+                                                                                                                                                    -- HASH_PARTITION_EXCHANGE [$$399]  |PARTITIONED|
                                                                                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                         -- ASSIGN  |PARTITIONED|
                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -775,40 +775,40 @@
                                                                                                                                                                       -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$404]  |PARTITIONED|
+                                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$402]  |PARTITIONED|
                                                                                                                                                   -- ASSIGN  |PARTITIONED|
                                                                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                        -- HYBRID_HASH_JOIN [$$409][$$408]  |PARTITIONED|
+                                                                                                                                                        -- HYBRID_HASH_JOIN [$$407][$$406]  |PARTITIONED|
                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                               -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                    -- PRE_CLUSTERED_GROUP_BY[$$411, $$413]  |PARTITIONED|
+                                                                                                                                                                    -- PRE_CLUSTERED_GROUP_BY[$$409, $$411]  |PARTITIONED|
                                                                                                                                                                             {
                                                                                                                                                                               -- AGGREGATE  |LOCAL|
                                                                                                                                                                                 -- STREAM_SELECT  |LOCAL|
                                                                                                                                                                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                                                                             }
                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                        -- STABLE_SORT [$$411(ASC), $$413(ASC)]  |PARTITIONED|
+                                                                                                                                                                        -- STABLE_SORT [$$409(ASC), $$411(ASC)]  |PARTITIONED|
                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                -- HYBRID_HASH_JOIN [$$411, $$413][$$421, $$422]  |PARTITIONED|
+                                                                                                                                                                                -- HYBRID_HASH_JOIN [$$409, $$411][$$419, $$420]  |PARTITIONED|
                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                     -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$411, $$413]  |PARTITIONED|
+                                                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$409, $$411]  |PARTITIONED|
                                                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$416][$$417]  |PARTITIONED|
+                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$417][$$418]  |PARTITIONED|
                                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                   -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                       -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$447]  |PARTITIONED|
+                                                                                                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$445]  |PARTITIONED|
                                                                                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                             -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -820,7 +820,7 @@
                                                                                                                                                                                                                           -- DATASOURCE_SCAN (test.collection0)  |PARTITIONED|
                                                                                                                                                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$417]  |PARTITIONED|
+                                                                                                                                                                                              -- HASH_PARTITION_EXCHANGE [$$418]  |PARTITIONED|
                                                                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                   -- STREAM_SELECT  |PARTITIONED|
                                                                                                                                                                                                     -- ASSIGN  |PARTITIONED|
@@ -837,34 +837,34 @@
                                                                                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                             -- UNNEST  |PARTITIONED|
                                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                -- PRE_CLUSTERED_GROUP_BY[$$427, $$428]  |PARTITIONED|
+                                                                                                                                                                                                -- PRE_CLUSTERED_GROUP_BY[$$425, $$426]  |PARTITIONED|
                                                                                                                                                                                                         {
                                                                                                                                                                                                           -- AGGREGATE  |LOCAL|
                                                                                                                                                                                                             -- AGGREGATE  |LOCAL|
                                                                                                                                                                                                               -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                                                                                                                                                         }
                                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                    -- STABLE_SORT [$$427(ASC), $$428(ASC)]  |PARTITIONED|
-                                                                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$427, $$428]  |PARTITIONED|
+                                                                                                                                                                                                    -- STABLE_SORT [$$425(ASC), $$426(ASC)]  |PARTITIONED|
+                                                                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$425, $$426]  |PARTITIONED|
                                                                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$438, $$430][$$428, $$429]  |PARTITIONED|
+                                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$436, $$428][$$426, $$427]  |PARTITIONED|
                                                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                                    -- HYBRID_HASH_JOIN [$$447][$$450]  |PARTITIONED|
+                                                                                                                                                                                                                    -- HYBRID_HASH_JOIN [$$445][$$448]  |PARTITIONED|
                                                                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$437][$$427]  |PARTITIONED|
+                                                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$435][$$425]  |PARTITIONED|
                                                                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                                                    -- HYBRID_HASH_JOIN [$$446][$$447]  |PARTITIONED|
-                                                                                                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$446]  |PARTITIONED|
+                                                                                                                                                                                                                                    -- HYBRID_HASH_JOIN [$$444][$$445]  |PARTITIONED|
+                                                                                                                                                                                                                                      -- HASH_PARTITION_EXCHANGE [$$444]  |PARTITIONED|
                                                                                                                                                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$445][$$444]  |PARTITIONED|
+                                                                                                                                                                                                                                            -- HYBRID_HASH_JOIN [$$443][$$442]  |PARTITIONED|
                                                                                                                                                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                                 -- REPLICATE  |PARTITIONED|
                                                                                                                                                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -884,7 +884,7 @@
                                                                                                                                                                                                                                                   -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
                                                                                                                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                                                                                                         -- REPLICATE  |PARTITIONED|
-                                                                                                                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$447]  |PARTITIONED|
+                                                                                                                                                                                                                                          -- HASH_PARTITION_EXCHANGE [$$445]  |PARTITIONED|
                                                                                                                                                                                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                                                                                                                               -- ASSIGN  |PARTITIONED|
                                                                                                                                                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -944,7 +944,7 @@
                                                                                                                                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
                                                                                                                                                             -- UNNEST  |UNPARTITIONED|
                                                                                                                                                               -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
-                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$392]  |PARTITIONED|
+                                                                                                                                -- HASH_PARTITION_EXCHANGE [$$390]  |PARTITIONED|
                                                                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                                     -- ASSIGN  |PARTITIONED|
                                                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -959,7 +959,7 @@
                                                                                                                                                         -- DATASOURCE_SCAN (test.collection1)  |PARTITIONED|
                                                                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$218]  |PARTITIONED|
+                                                                                                                        -- HASH_PARTITION_EXCHANGE [$$216]  |PARTITIONED|
                                                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                                                             -- ASSIGN  |PARTITIONED|
                                                                                                                               -- STREAM_PROJECT  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.1.ddl.sqlpp
new file mode 100644
index 0000000..f18ac2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.1.ddl.sqlpp
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * Description: This test case is to verify the fix for ASTERIXDB-3419
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+create type dt1 as {__id: uuid};
+
+create dataset users_channels1(dt1) PRIMARY KEY __id AUTOGENERATED;
+
+create view users_channel (__id string, name string, user_id string) DEFAULT NULL AS SELECT __id, name, user_id FROM `users_channels1`;
+
+create view users_channel_with_pk (__id string, name string, user_id string) DEFAULT NULL PRIMARY KEY (__id) NOT ENFORCED AS SELECT __id, name, user_id FROM `users_channels1`;
+
+create view users_channel_with_nulls (__id string, name string, user_id string) DEFAULT NULL AS SELECT __id, name, user_id FROM [null, {"name":"aa"}, null, {"user_id":"AA"}] `users_channels1`;
+
+
+create type dt4 as {
+     n: int
+};
+
+create type dt3 as {
+     a: int, b: dt4
+};
+
+create type dt2 as {
+    id: string,
+    y: string,
+    x: dt3?
+};
+
+create dataset  col(dt2) primary key id;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.2.update.sqlpp
new file mode 100644
index 0000000..4e19b3a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.2.update.sqlpp
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+use test;
+
+insert into users_channels1
+([
+    {
+      "name": "John",
+      "user_id": "AWXSI"
+    },
+    {
+      "name": "Sarah",
+      "user_id": "SSAw"
+    },
+    {
+      "name": "Mike"
+    },
+    {
+       "user_id": "AWXSI"
+    },
+    {
+    }
+]);
+
+
+upsert into col [
+    {"id": "1", "y":"yval1", "x": {"a": 1, "b": {"n": 2}}},
+    {"id": "2", "y": "yval2", "x": null}
+]
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.3.query.sqlpp
new file mode 100644
index 0000000..bb954ff
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.3.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * Description: This test case is to verify the fix for ASTERIXDB-3419
+ */
+
+use test;
+
+select users_channel.* from users_channel where user_id="AWXSI" order by if_null(name, "A");
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.4.query.sqlpp
new file mode 100644
index 0000000..e1a56eb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.4.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * Description: This test case is to verify the fix for ASTERIXDB-3419
+ */
+
+use test;
+
+select users_channel.* from users_channel order by if_null(user_id, "A"), if_null(name, "A");
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.5.query.sqlpp
new file mode 100644
index 0000000..a623bcf
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.5.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * Description: This test case is to verify the fix for ASTERIXDB-3419
+ */
+
+use test;
+
+select users_channel_with_pk.* from users_channel_with_pk  order by if_null(user_id, "A"), if_null(name, "A");
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.6.query.sqlpp
new file mode 100644
index 0000000..c0da1c9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.6.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * Description: This test case is to verify the fix for ASTERIXDB-3419
+ */
+
+use test;
+
+select x.* from [null, {"val":1}] x;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.7.query.sqlpp
new file mode 100644
index 0000000..2e78c08
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.7.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * Description: This test case is to verify the fix for ASTERIXDB-3419
+ */
+
+use test;
+
+select users_channel_with_nulls.* from users_channel_with_nulls;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.8.query.sqlpp
new file mode 100644
index 0000000..ac568ce
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.8.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * Description: This test case is to verify the fix for ASTERIXDB-3419
+ */
+
+use test;
+
+select t.* from (select col.x as t from col) as t;
\ No newline at end of file
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 e370904..b06cd7b 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,49 +1,49 @@
-distribute result [$$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$66] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
   exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    project ([$$68]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$66]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |UNPARTITIONED|
-      assign [$$68] <- [{"count": $$71}] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$66] <- [{"count": $$69}] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |UNPARTITIONED|
-        aggregate [$$71] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        aggregate [$$69] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- AGGREGATE  |UNPARTITIONED|
           exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- SORT_MERGE_EXCHANGE [$$66(ASC) ]  |PARTITIONED|
-            distinct ([$$66]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          -- SORT_MERGE_EXCHANGE [$$64(ASC) ]  |PARTITIONED|
+            distinct ([$$64]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
               exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (ASC, $$66) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- STABLE_SORT [$$66(ASC)]  |PARTITIONED|
+                order (ASC, $$64) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                -- STABLE_SORT [$$64(ASC)]  |PARTITIONED|
                   exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- HASH_PARTITION_EXCHANGE [$$66]  |PARTITIONED|
-                    project ([$$66]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  -- HASH_PARTITION_EXCHANGE [$$64]  |PARTITIONED|
+                    project ([$$64]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      select (ge($$70, 3)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (ge($$68, 3)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        project ([$$66, $$70]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$64, $$68]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
                           subplan {
-                                    aggregate [$$70] <- [agg-sql-sum($$52)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    aggregate [$$68] <- [agg-sql-sum($$52)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- AGGREGATE  |LOCAL|
                                       assign [$$52] <- [$$i.getField("count")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |LOCAL|
-                                        unnest $$i <- scan-collection($$72) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        unnest $$i <- scan-collection($$70) [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|
-                            project ([$$66, $$72]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$64, $$70]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              assign [$$66, $$72] <- [if-missing-or-null(to-object($$t), cast({  })).getField(0), $$t.getField("a1")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$64, $$70] <- [to-object-var-str($$t).getField(0), $$t.getField("a1")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
                                 project ([$$t]) [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 []<-[$$69, $$t] <- test.ColumnDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    data-scan []<-[$$67, $$t] <- test.ColumnDataset [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|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.021.plan
index e370904..b06cd7b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.021.plan
@@ -1,49 +1,49 @@
-distribute result [$$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$66] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
   exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    project ([$$68]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$66]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |UNPARTITIONED|
-      assign [$$68] <- [{"count": $$71}] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$66] <- [{"count": $$69}] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |UNPARTITIONED|
-        aggregate [$$71] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        aggregate [$$69] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- AGGREGATE  |UNPARTITIONED|
           exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- SORT_MERGE_EXCHANGE [$$66(ASC) ]  |PARTITIONED|
-            distinct ([$$66]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          -- SORT_MERGE_EXCHANGE [$$64(ASC) ]  |PARTITIONED|
+            distinct ([$$64]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
               exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (ASC, $$66) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- STABLE_SORT [$$66(ASC)]  |PARTITIONED|
+                order (ASC, $$64) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                -- STABLE_SORT [$$64(ASC)]  |PARTITIONED|
                   exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- HASH_PARTITION_EXCHANGE [$$66]  |PARTITIONED|
-                    project ([$$66]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  -- HASH_PARTITION_EXCHANGE [$$64]  |PARTITIONED|
+                    project ([$$64]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      select (ge($$70, 3)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (ge($$68, 3)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        project ([$$66, $$70]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$64, $$68]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
                           subplan {
-                                    aggregate [$$70] <- [agg-sql-sum($$52)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    aggregate [$$68] <- [agg-sql-sum($$52)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- AGGREGATE  |LOCAL|
                                       assign [$$52] <- [$$i.getField("count")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |LOCAL|
-                                        unnest $$i <- scan-collection($$72) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        unnest $$i <- scan-collection($$70) [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|
-                            project ([$$66, $$72]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$64, $$70]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              assign [$$66, $$72] <- [if-missing-or-null(to-object($$t), cast({  })).getField(0), $$t.getField("a1")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$64, $$70] <- [to-object-var-str($$t).getField(0), $$t.getField("a1")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
                                 project ([$$t]) [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 []<-[$$69, $$t] <- test.ColumnDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    data-scan []<-[$$67, $$t] <- test.ColumnDataset [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|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.3.jsonl b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.3.jsonl
new file mode 100644
index 0000000..1897644
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.3.jsonl
@@ -0,0 +1,2 @@
+{ "__id": "R{.*}", "name": null, "user_id": "AWXSI" }
+{ "__id": "R{.*}", "name": "John", "user_id": "AWXSI" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.4.jsonl b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.4.jsonl
new file mode 100644
index 0000000..88b77b6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.4.jsonl
@@ -0,0 +1,5 @@
+{ "__id": "R{.*}", "name": null, "user_id": null }
+{ "__id": "R{.*}", "name": "Mike", "user_id": null }
+{ "__id": "R{.*}", "name": null, "user_id": "AWXSI" }
+{ "__id": "R{.*}", "name": "John", "user_id": "AWXSI" }
+{ "__id": "R{.*}", "name": "Sarah", "user_id": "SSAw" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.5.jsonl b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.5.jsonl
new file mode 100644
index 0000000..88b77b6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.5.jsonl
@@ -0,0 +1,5 @@
+{ "__id": "R{.*}", "name": null, "user_id": null }
+{ "__id": "R{.*}", "name": "Mike", "user_id": null }
+{ "__id": "R{.*}", "name": null, "user_id": "AWXSI" }
+{ "__id": "R{.*}", "name": "John", "user_id": "AWXSI" }
+{ "__id": "R{.*}", "name": "Sarah", "user_id": "SSAw" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.6.adm
new file mode 100644
index 0000000..5cd8375
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.6.adm
@@ -0,0 +1,2 @@
+{  }
+{ "val": 1 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.7.adm
new file mode 100644
index 0000000..7541d23
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.7.adm
@@ -0,0 +1,4 @@
+{ "__id": null, "name": null, "user_id": null }
+{ "__id": null, "name": "aa", "user_id": null }
+{ "__id": null, "name": null, "user_id": null }
+{ "__id": null, "name": null, "user_id": "AA" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.8.adm
new file mode 100644
index 0000000..c7bb5e2
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3419/query-ASTERIXDB-3419.8.adm
@@ -0,0 +1,2 @@
+{ "t": null }
+{ "t": { "a": 1, "b": { "n": 2 } } }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.020.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.020.plan
index 4e264fa..2ada1fb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.020.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.020.plan
@@ -1,49 +1,49 @@
-distribute result [$$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$66] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
   exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    project ([$$68]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+    project ([$$66]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- STREAM_PROJECT  |UNPARTITIONED|
-      assign [$$68] <- [{"count": $$71}] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+      assign [$$66] <- [{"count": $$69}] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- ASSIGN  |UNPARTITIONED|
-        aggregate [$$71] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+        aggregate [$$69] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- AGGREGATE  |UNPARTITIONED|
           exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
-          -- SORT_MERGE_EXCHANGE [$$66(ASC) ]  |PARTITIONED|
-            distinct ([$$66]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+          -- SORT_MERGE_EXCHANGE [$$64(ASC) ]  |PARTITIONED|
+            distinct ([$$64]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
               exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (ASC, $$66) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
-                -- STABLE_SORT [$$66(ASC)]  |PARTITIONED|
+                order (ASC, $$64) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                -- STABLE_SORT [$$64(ASC)]  |PARTITIONED|
                   exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
-                  -- HASH_PARTITION_EXCHANGE [$$66]  |PARTITIONED|
-                    project ([$$66]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                  -- HASH_PARTITION_EXCHANGE [$$64]  |PARTITIONED|
+                    project ([$$64]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      select (ge($$70, 3)) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                      select (ge($$68, 3)) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        project ([$$66, $$70]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                        project ([$$64, $$68]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
                         -- STREAM_PROJECT  |PARTITIONED|
                           subplan {
-                                    aggregate [$$70] <- [agg-sql-sum($$52)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    aggregate [$$68] <- [agg-sql-sum($$52)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- AGGREGATE  |LOCAL|
                                       assign [$$52] <- [$$i.getField("count")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |LOCAL|
-                                        unnest $$i <- scan-collection($$72) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        unnest $$i <- scan-collection($$70) [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: 2.0, op-cost: 0.0, total-cost: 2.0]
                           -- SUBPLAN  |PARTITIONED|
-                            project ([$$66, $$72]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                            project ([$$64, $$70]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              assign [$$66, $$72] <- [if-missing-or-null(to-object($$t), cast({  })).getField(0), $$t.getField("a1")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                              assign [$$64, $$70] <- [to-object-var-str($$t).getField(0), $$t.getField("a1")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
                               -- ASSIGN  |PARTITIONED|
                                 project ([$$t]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
                                 -- STREAM_PROJECT  |PARTITIONED|
                                   exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    data-scan []<-[$$69, $$t] <- test.ColumnDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                                    data-scan []<-[$$67, $$t] <- test.ColumnDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
                                     -- DATASOURCE_SCAN  |PARTITIONED|
                                       exchange [cardinality: 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_cbo/column/pushdown/other-pushdowns/other-pushdowns.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.021.plan
index 4e264fa..2ada1fb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.021.plan
@@ -1,49 +1,49 @@
-distribute result [$$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$66] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
   exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    project ([$$68]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+    project ([$$66]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- STREAM_PROJECT  |UNPARTITIONED|
-      assign [$$68] <- [{"count": $$71}] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+      assign [$$66] <- [{"count": $$69}] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- ASSIGN  |UNPARTITIONED|
-        aggregate [$$71] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+        aggregate [$$69] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- AGGREGATE  |UNPARTITIONED|
           exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
-          -- SORT_MERGE_EXCHANGE [$$66(ASC) ]  |PARTITIONED|
-            distinct ([$$66]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+          -- SORT_MERGE_EXCHANGE [$$64(ASC) ]  |PARTITIONED|
+            distinct ([$$64]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
               exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (ASC, $$66) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
-                -- STABLE_SORT [$$66(ASC)]  |PARTITIONED|
+                order (ASC, $$64) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                -- STABLE_SORT [$$64(ASC)]  |PARTITIONED|
                   exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
-                  -- HASH_PARTITION_EXCHANGE [$$66]  |PARTITIONED|
-                    project ([$$66]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                  -- HASH_PARTITION_EXCHANGE [$$64]  |PARTITIONED|
+                    project ([$$64]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      select (ge($$70, 3)) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                      select (ge($$68, 3)) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        project ([$$66, $$70]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                        project ([$$64, $$68]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
                         -- STREAM_PROJECT  |PARTITIONED|
                           subplan {
-                                    aggregate [$$70] <- [agg-sql-sum($$52)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    aggregate [$$68] <- [agg-sql-sum($$52)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- AGGREGATE  |LOCAL|
                                       assign [$$52] <- [$$i.getField("count")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |LOCAL|
-                                        unnest $$i <- scan-collection($$72) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        unnest $$i <- scan-collection($$70) [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: 2.0, op-cost: 0.0, total-cost: 2.0]
                           -- SUBPLAN  |PARTITIONED|
-                            project ([$$66, $$72]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                            project ([$$64, $$70]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              assign [$$66, $$72] <- [if-missing-or-null(to-object($$t), cast({  })).getField(0), $$t.getField("a1")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                              assign [$$64, $$70] <- [to-object-var-str($$t).getField(0), $$t.getField("a1")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
                               -- ASSIGN  |PARTITIONED|
                                 project ([$$t]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
                                 -- STREAM_PROJECT  |PARTITIONED|
                                   exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    data-scan []<-[$$69, $$t] <- test.ColumnDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                                    data-scan []<-[$$67, $$t] <- test.ColumnDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
                                     -- DATASOURCE_SCAN  |PARTITIONED|
                                       exchange [cardinality: 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/sqlpp_queries.xml b/asterixdb/asterix-app/src/test/resources/runtimets/sqlpp_queries.xml
index 040b3ca..afb829e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/sqlpp_queries.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/sqlpp_queries.xml
@@ -7391,6 +7391,11 @@
         <output-dir compare="Text">query-ASTERIXDB-3415</output-dir>
       </compilation-unit>
     </test-case>
+    <test-case FilePath="misc">
+      <compilation-unit name="query-ASTERIXDB-3419">
+        <output-dir compare="Text">query-ASTERIXDB-3419</output-dir>
+      </compilation-unit>
+    </test-case>
   </test-group>
   <test-group name="multipart-dataverse">
     <test-case FilePath="multipart-dataverse">
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
index d7e9210..21b8b60 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
@@ -138,6 +138,7 @@
 import org.apache.asterix.om.typecomputer.impl.ToDoubleTypeComputer;
 import org.apache.asterix.om.typecomputer.impl.ToNumberTypeComputer;
 import org.apache.asterix.om.typecomputer.impl.ToObjectTypeComputer;
+import org.apache.asterix.om.typecomputer.impl.ToObjectVarStrTypeComputer;
 import org.apache.asterix.om.typecomputer.impl.TreatAsTypeComputer;
 import org.apache.asterix.om.typecomputer.impl.UnaryBinaryInt64TypeComputer;
 import org.apache.asterix.om.typecomputer.impl.UniformInputTypeComputer;
@@ -1263,6 +1264,7 @@
     public static final FunctionIdentifier TO_DOUBLE = FunctionConstants.newAsterix("to-double", 1);
     public static final FunctionIdentifier TO_NUMBER = FunctionConstants.newAsterix("to-number", 1);
     public static final FunctionIdentifier TO_OBJECT = FunctionConstants.newAsterix("to-object", 1);
+    public static final FunctionIdentifier TO_OBJECT_VAR_STR = FunctionConstants.newAsterix("to-object-var-str", 1);
     public static final FunctionIdentifier TO_STRING = FunctionConstants.newAsterix("to-string", 1);
 
     public static final FunctionIdentifier TREAT_AS_INTEGER = FunctionConstants.newAsterix("treat-as-integer", 1);
@@ -1529,6 +1531,7 @@
         addFunction(TO_DOUBLE, ToDoubleTypeComputer.INSTANCE, true);
         addFunction(TO_NUMBER, ToNumberTypeComputer.INSTANCE, true);
         addFunction(TO_OBJECT, ToObjectTypeComputer.INSTANCE, true);
+        addPrivateFunction(TO_OBJECT_VAR_STR, ToObjectVarStrTypeComputer.INSTANCE, true);
         addFunction(TO_STRING, AStringTypeComputer.INSTANCE_NULLABLE, true);
 
         addPrivateFunction(TREAT_AS_INTEGER, TreatAsTypeComputer.INSTANCE_INTEGER, true);
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ToObjectVarStrTypeComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ToObjectVarStrTypeComputer.java
new file mode 100644
index 0000000..2d67029
--- /dev/null
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ToObjectVarStrTypeComputer.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.om.typecomputer.impl;
+
+import java.util.List;
+
+import org.apache.asterix.om.pointables.base.DefaultOpenFieldType;
+import org.apache.asterix.om.typecomputer.base.IResultTypeComputer;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.IAType;
+import org.apache.asterix.om.types.TypeHelper;
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
+
+public class ToObjectVarStrTypeComputer implements IResultTypeComputer {
+    public static final ToObjectVarStrTypeComputer INSTANCE = new ToObjectVarStrTypeComputer();
+
+    private ToObjectVarStrTypeComputer() {
+    }
+
+    @Override
+    public IAType computeType(ILogicalExpression expression, IVariableTypeEnvironment env,
+            IMetadataProvider<?, ?> metadataProvider) throws AlgebricksException {
+        AbstractFunctionCallExpression fce = (AbstractFunctionCallExpression) expression;
+
+        List<Mutable<ILogicalExpression>> arguments = fce.getArguments();
+        ILogicalExpression arg = arguments.get(0).getValue();
+        IAType inputType = (IAType) env.getType(arg);
+        IAType knownInputType = TypeComputeUtils.getActualType(inputType);
+        if (TypeHelper.canBeUnknown(inputType) || knownInputType.getTypeTag() != ATypeTag.OBJECT) {
+            return DefaultOpenFieldType.NESTED_OPEN_RECORD_TYPE;
+        } else {
+            return knownInputType;
+        }
+    }
+}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/TypeComputeUtils.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/TypeComputeUtils.java
index 94fb998..77b4c04 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/TypeComputeUtils.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/TypeComputeUtils.java
@@ -187,7 +187,7 @@
         return actualTypes;
     }
 
-    private static boolean[] isUnknownableType(IAType... inputTypes) {
+    public static boolean[] isUnknownableType(IAType... inputTypes) {
         boolean[] unknownable = new boolean[inputTypes.length];
         for (int index = 0; index < unknownable.length; ++index) {
             IAType type = inputTypes[index];
diff --git a/asterixdb/asterix-om/src/test/java/org/apache/asterix/test/om/typecomputer/TypeComputerTest.java b/asterixdb/asterix-om/src/test/java/org/apache/asterix/test/om/typecomputer/TypeComputerTest.java
index 07f2021..cbcb8b3 100644
--- a/asterixdb/asterix-om/src/test/java/org/apache/asterix/test/om/typecomputer/TypeComputerTest.java
+++ b/asterixdb/asterix-om/src/test/java/org/apache/asterix/test/om/typecomputer/TypeComputerTest.java
@@ -43,6 +43,7 @@
 import org.apache.asterix.om.typecomputer.impl.RecordAddFieldsTypeComputer;
 import org.apache.asterix.om.typecomputer.impl.RecordMergeTypeComputer;
 import org.apache.asterix.om.typecomputer.impl.RecordRemoveFieldsTypeComputer;
+import org.apache.asterix.om.typecomputer.impl.ToObjectVarStrTypeComputer;
 import org.apache.asterix.om.types.ATypeTag;
 import org.apache.asterix.om.types.AUnionType;
 import org.apache.asterix.om.types.BuiltinType;
@@ -169,9 +170,8 @@
                 ATypeTag typeTag = resultType.getTypeTag();
 
                 // Result should be ANY, Missable or Nullable
-                Assert.assertTrue(typeTag == ATypeTag.ANY
-                        || (typeTag == ATypeTag.UNION && ((AUnionType) resultType).isNullableType()
-                                || ((AUnionType) resultType).isMissableType()));
+                Assert.assertTrue(typeTag == ATypeTag.ANY || (typeTag == ATypeTag.UNION
+                        && (((AUnionType) resultType).isNullableType() || ((AUnionType) resultType).isMissableType())));
             }
         }
     }
@@ -198,6 +198,7 @@
         differentBehaviorFunctions.add(RecordMergeTypeComputer.class.getSimpleName());
         differentBehaviorFunctions.add(BooleanOrMissingTypeComputer.class.getSimpleName());
         differentBehaviorFunctions.add(LocalSingleVarStatisticsTypeComputer.class.getSimpleName());
+        differentBehaviorFunctions.add(ToObjectVarStrTypeComputer.class.getSimpleName());
     }
 
     /**
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ToObjectVarStrDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ToObjectVarStrDescriptor.java
new file mode 100644
index 0000000..6b72fc9
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ToObjectVarStrDescriptor.java
@@ -0,0 +1,152 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.evaluators.functions;
+
+import static org.apache.asterix.om.pointables.base.DefaultOpenFieldType.NESTED_OPEN_RECORD_TYPE;
+
+import java.io.DataOutput;
+
+import org.apache.asterix.builders.RecordBuilder;
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.om.functions.IFunctionTypeInferer;
+import org.apache.asterix.om.pointables.ARecordVisitablePointable;
+import org.apache.asterix.om.pointables.base.IVisitablePointable;
+import org.apache.asterix.om.pointables.cast.ACastVisitor;
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.IAType;
+import org.apache.asterix.om.types.TypeHelper;
+import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import org.apache.asterix.runtime.functions.FunctionTypeInferers;
+import org.apache.hyracks.algebricks.common.utils.Triple;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IEvaluatorContext;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.VoidPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+
+public class ToObjectVarStrDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+
+    private static final long serialVersionUID = 1L;
+    private ARecordType argType;
+    private ARecordType outType;
+
+    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+        @Override
+        public IFunctionDescriptor createFunctionDescriptor() {
+            return new ToObjectVarStrDescriptor();
+        }
+
+        @Override
+        public IFunctionTypeInferer createFunctionTypeInferer() {
+            return new FunctionTypeInferers.ToObjectVarStrTypeInferer();
+        }
+    };
+
+    @Override
+    public void setImmutableStates(Object... states) {
+        outType = (ARecordType) states[0];
+        if (((IAType) states[1]).getTypeTag() == ATypeTag.OBJECT) {
+            argType = (ARecordType) states[1];
+        } else {
+            argType = NESTED_OPEN_RECORD_TYPE;
+        }
+    }
+
+    @Override
+    public IScalarEvaluatorFactory createEvaluatorFactory(final IScalarEvaluatorFactory[] args) {
+        return new IScalarEvaluatorFactory() {
+            private static final long serialVersionUID = 1L;
+
+            @Override
+            public IScalarEvaluator createScalarEvaluator(final IEvaluatorContext ctx) throws HyracksDataException {
+                return new ToObjectVarStrEvaluator(ctx);
+            }
+
+            final class ToObjectVarStrEvaluator implements IScalarEvaluator {
+
+                private final IPointable arg0 = new VoidPointable();
+                private final ArrayBackedValueStorage emptyRecStorage = new ArrayBackedValueStorage();
+                private final DataOutput emptyRecOut = emptyRecStorage.getDataOutput();
+                private final IScalarEvaluator eval0;
+                private final ARecordVisitablePointable argRec;
+                private final boolean castRequired;
+                private ACastVisitor castVisitor;
+                private Triple<IVisitablePointable, IAType, Boolean> castVisitorArg;
+                private boolean wroteEmpty;
+
+                private ToObjectVarStrEvaluator(final IEvaluatorContext ctx) throws HyracksDataException {
+                    eval0 = args[0].createScalarEvaluator(ctx);
+                    if (!TypeHelper.isFullyOpen(argType) && TypeHelper.isFullyOpen(outType)) {
+                        castRequired = true;
+                        argRec = new ARecordVisitablePointable(argType);
+                        ARecordVisitablePointable openRec = new ARecordVisitablePointable(NESTED_OPEN_RECORD_TYPE);
+                        castVisitor = new ACastVisitor();
+                        castVisitorArg = new Triple<>(openRec, openRec.getInputRecordType(), Boolean.FALSE);
+                    } else {
+                        castRequired = false;
+                        argRec = null;
+                    }
+                }
+
+                @Override
+                public void evaluate(IFrameTupleReference tuple, IPointable resultPointable)
+                        throws HyracksDataException {
+                    eval0.evaluate(tuple, arg0);
+                    if (arg0.getByteArray()[arg0.getStartOffset()] == ATypeTag.SERIALIZED_RECORD_TYPE_TAG) {
+                        if (castRequired) {
+                            argRec.set(arg0);
+                            argRec.accept(castVisitor, castVisitorArg);
+                            resultPointable.set(castVisitorArg.first);
+                        } else {
+                            resultPointable.set(arg0);
+                        }
+                    } else {
+                        writeEmpty();
+                        resultPointable.set(emptyRecStorage);
+                    }
+                }
+
+                private void writeEmpty() throws HyracksDataException {
+                    if (!wroteEmpty) {
+                        wroteEmpty = true;
+                        emptyRecStorage.reset();
+                        RecordBuilder openRecordBuilder = new RecordBuilder();
+                        openRecordBuilder.reset(NESTED_OPEN_RECORD_TYPE);
+                        openRecordBuilder.init();
+                        openRecordBuilder.write(emptyRecOut, true);
+                    }
+
+                }
+            }
+        };
+    }
+
+    @Override
+    public FunctionIdentifier getIdentifier() {
+        return BuiltinFunctions.TO_OBJECT_VAR_STR;
+    }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
index 4149e1c..214c8a0 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
@@ -511,6 +511,7 @@
 import org.apache.asterix.runtime.evaluators.functions.ToDoubleDescriptor;
 import org.apache.asterix.runtime.evaluators.functions.ToNumberDescriptor;
 import org.apache.asterix.runtime.evaluators.functions.ToObjectDescriptor;
+import org.apache.asterix.runtime.evaluators.functions.ToObjectVarStrDescriptor;
 import org.apache.asterix.runtime.evaluators.functions.ToStringDescriptor;
 import org.apache.asterix.runtime.evaluators.functions.TreatAsIntegerDescriptor;
 import org.apache.asterix.runtime.evaluators.functions.UUIDDescriptor;
@@ -1323,6 +1324,7 @@
         fc.add(ToDoubleDescriptor.FACTORY);
         fc.add(ToNumberDescriptor.FACTORY);
         fc.add(ToObjectDescriptor.FACTORY);
+        fc.add(ToObjectVarStrDescriptor.FACTORY);
         fc.add(ToStringDescriptor.FACTORY);
 
         fc.add(TreatAsIntegerDescriptor.FACTORY);
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionTypeInferers.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionTypeInferers.java
index 731a880..67c5ee3 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionTypeInferers.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionTypeInferers.java
@@ -393,4 +393,16 @@
         }
         return argsTypes;
     }
+
+    public static final class ToObjectVarStrTypeInferer implements IFunctionTypeInferer {
+        @Override
+        public void infer(ILogicalExpression expr, IFunctionDescriptor fd, IVariableTypeEnvironment context,
+                CompilerProperties compilerProps) throws AlgebricksException {
+            AbstractFunctionCallExpression f = (AbstractFunctionCallExpression) expr;
+            List<Mutable<ILogicalExpression>> args = f.getArguments();
+            fd.setImmutableStates(context.getType(expr),
+                    TypeComputeUtils.getActualType((IAType) context.getType(args.get(0).getValue())));
+        }
+
+    }
 }
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SelectOperator.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SelectOperator.java
index 3bcf29c..2d2910f 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SelectOperator.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SelectOperator.java
@@ -129,9 +129,24 @@
             return env;
         }
         AbstractFunctionCallExpression f1 = (AbstractFunctionCallExpression) condition.getValue();
-        if (!f1.getFunctionIdentifier().equals(AlgebricksBuiltinFunctions.NOT)) {
+        if (f1.getFunctionIdentifier().equals(AlgebricksBuiltinFunctions.AND)) {
+            for (Mutable<ILogicalExpression> a1 : f1.getArguments()) {
+                if (a1.getValue().getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
+                    computeMissableNullAble(env, (AbstractFunctionCallExpression) a1.getValue());
+                }
+            }
             return env;
         }
+        if (f1.getFunctionIdentifier().equals(AlgebricksBuiltinFunctions.NOT)) {
+            computeMissableNullAble(env, f1);
+        }
+        return env;
+    }
+
+    private void computeMissableNullAble(PropagatingTypeEnvironment env, AbstractFunctionCallExpression f1) {
+        if (!f1.getFunctionIdentifier().equals(AlgebricksBuiltinFunctions.NOT)) {
+            return;
+        }
         ILogicalExpression a1 = f1.getArguments().get(0).getValue();
         if (a1.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
             AbstractFunctionCallExpression f2 = (AbstractFunctionCallExpression) a1;
@@ -142,7 +157,6 @@
                 extractFunctionArgVarInto(f2, env.getNonNullableVariables());
             }
         }
-        return env;
     }
 
     @Override