[ASTERIXDB-1753][SQL] Disable auto-plural for group-by.

- user model changes: do not perform auto-scalar-to-plural
  transition for variables that are defined prior to a group-by
  group clause after the group-by clause.
- storage format changes: no
- interface changes: no

details:
- migrated existing test queries that use auto-plural;
- added a negative test query.

Change-Id: I5d6383fc7453fe7537fc291c3483708b59df3871
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1860
Reviewed-by: Dmitry Lychagin <dmitry.lychagin@couchbase.com>
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
BAD: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate/constant-gby-agg.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate/constant-gby-agg.plan
index d6399f7..26601ba 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate/constant-gby-agg.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate/constant-gby-agg.plan
@@ -3,13 +3,13 @@
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          -- SORT_GROUP_BY[$$20]  |PARTITIONED|
+          -- SORT_GROUP_BY[$$18]  |PARTITIONED|
                   {
                     -- AGGREGATE  |LOCAL|
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
                   }
-            -- HASH_PARTITION_EXCHANGE [$$20]  |PARTITIONED|
-              -- SORT_GROUP_BY[$$16]  |PARTITIONED|
+            -- HASH_PARTITION_EXCHANGE [$$18]  |PARTITIONED|
+              -- SORT_GROUP_BY[$$14]  |PARTITIONED|
                       {
                         -- AGGREGATE  |LOCAL|
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1806.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1806.plan
index 7ea82a1..ad30823 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1806.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1806.plan
@@ -3,13 +3,13 @@
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
         -- SORT_MERGE_EXCHANGE [$$l_returnflag(ASC), $$l_linestatus(ASC) ]  |PARTITIONED|
-          -- SORT_GROUP_BY[$$98, $$99]  |PARTITIONED|
+          -- SORT_GROUP_BY[$$96, $$97]  |PARTITIONED|
                   {
                     -- AGGREGATE  |LOCAL|
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
                   }
-            -- HASH_PARTITION_EXCHANGE [$$98, $$99]  |PARTITIONED|
-              -- SORT_GROUP_BY[$$66, $$67]  |PARTITIONED|
+            -- HASH_PARTITION_EXCHANGE [$$96, $$97]  |PARTITIONED|
+              -- SORT_GROUP_BY[$$64, $$65]  |PARTITIONED|
                       {
                         -- AGGREGATE  |LOCAL|
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/exists.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/exists.plan
index 3b92cdd..3f47dac 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/exists.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/exists.plan
@@ -3,13 +3,13 @@
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
         -- SORT_MERGE_EXCHANGE [$$cntrycode(ASC) ]  |PARTITIONED|
-          -- SORT_GROUP_BY[$$82]  |PARTITIONED|
+          -- SORT_GROUP_BY[$$78]  |PARTITIONED|
                   {
                     -- AGGREGATE  |LOCAL|
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
                   }
-            -- HASH_PARTITION_EXCHANGE [$$82]  |PARTITIONED|
-              -- SORT_GROUP_BY[$$59]  |PARTITIONED|
+            -- HASH_PARTITION_EXCHANGE [$$78]  |PARTITIONED|
+              -- SORT_GROUP_BY[$$55]  |PARTITIONED|
                       {
                         -- AGGREGATE  |LOCAL|
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
@@ -21,25 +21,25 @@
                         -- STREAM_SELECT  |PARTITIONED|
                           -- STREAM_PROJECT  |PARTITIONED|
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              -- SORT_GROUP_BY[$$79]  |PARTITIONED|
+                              -- SORT_GROUP_BY[$$75]  |PARTITIONED|
                                       {
                                         -- AGGREGATE  |LOCAL|
                                           -- NESTED_TUPLE_SOURCE  |LOCAL|
                                       }
-                                -- HASH_PARTITION_EXCHANGE [$$79]  |PARTITIONED|
-                                  -- PRE_CLUSTERED_GROUP_BY[$$73]  |PARTITIONED|
+                                -- HASH_PARTITION_EXCHANGE [$$75]  |PARTITIONED|
+                                  -- PRE_CLUSTERED_GROUP_BY[$$69]  |PARTITIONED|
                                           {
                                             -- AGGREGATE  |LOCAL|
                                               -- STREAM_SELECT  |LOCAL|
                                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                                           }
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      -- STABLE_SORT [$$73(ASC)]  |PARTITIONED|
+                                      -- STABLE_SORT [$$69(ASC)]  |PARTITIONED|
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                           -- STREAM_PROJECT  |PARTITIONED|
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              -- HYBRID_HASH_JOIN [$$68][$$65]  |PARTITIONED|
-                                                -- HASH_PARTITION_EXCHANGE [$$68]  |PARTITIONED|
+                                              -- HYBRID_HASH_JOIN [$$64][$$61]  |PARTITIONED|
+                                                -- HASH_PARTITION_EXCHANGE [$$64]  |PARTITIONED|
                                                   -- ASSIGN  |PARTITIONED|
                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -66,7 +66,7 @@
                                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                -- HASH_PARTITION_EXCHANGE [$$65]  |PARTITIONED|
+                                                -- HASH_PARTITION_EXCHANGE [$$61]  |PARTITIONED|
                                                   -- ASSIGN  |PARTITIONED|
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/not_exists.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/not_exists.plan
index 06257a1..311ab6d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/not_exists.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/not_exists.plan
@@ -3,13 +3,13 @@
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
         -- SORT_MERGE_EXCHANGE [$$cntrycode(ASC) ]  |PARTITIONED|
-          -- SORT_GROUP_BY[$$83]  |PARTITIONED|
+          -- SORT_GROUP_BY[$$79]  |PARTITIONED|
                   {
                     -- AGGREGATE  |LOCAL|
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
                   }
-            -- HASH_PARTITION_EXCHANGE [$$83]  |PARTITIONED|
-              -- SORT_GROUP_BY[$$60]  |PARTITIONED|
+            -- HASH_PARTITION_EXCHANGE [$$79]  |PARTITIONED|
+              -- SORT_GROUP_BY[$$56]  |PARTITIONED|
                       {
                         -- AGGREGATE  |LOCAL|
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
@@ -21,25 +21,25 @@
                         -- STREAM_SELECT  |PARTITIONED|
                           -- STREAM_PROJECT  |PARTITIONED|
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              -- SORT_GROUP_BY[$$80]  |PARTITIONED|
+                              -- SORT_GROUP_BY[$$76]  |PARTITIONED|
                                       {
                                         -- AGGREGATE  |LOCAL|
                                           -- NESTED_TUPLE_SOURCE  |LOCAL|
                                       }
-                                -- HASH_PARTITION_EXCHANGE [$$80]  |PARTITIONED|
-                                  -- PRE_CLUSTERED_GROUP_BY[$$74]  |PARTITIONED|
+                                -- HASH_PARTITION_EXCHANGE [$$76]  |PARTITIONED|
+                                  -- PRE_CLUSTERED_GROUP_BY[$$70]  |PARTITIONED|
                                           {
                                             -- AGGREGATE  |LOCAL|
                                               -- STREAM_SELECT  |LOCAL|
                                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                                           }
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      -- STABLE_SORT [$$74(ASC)]  |PARTITIONED|
+                                      -- STABLE_SORT [$$70(ASC)]  |PARTITIONED|
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                           -- STREAM_PROJECT  |PARTITIONED|
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              -- HYBRID_HASH_JOIN [$$69][$$66]  |PARTITIONED|
-                                                -- HASH_PARTITION_EXCHANGE [$$69]  |PARTITIONED|
+                                              -- HYBRID_HASH_JOIN [$$65][$$62]  |PARTITIONED|
+                                                -- HASH_PARTITION_EXCHANGE [$$65]  |PARTITIONED|
                                                   -- ASSIGN  |PARTITIONED|
                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -66,7 +66,7 @@
                                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                -- HASH_PARTITION_EXCHANGE [$$66]  |PARTITIONED|
+                                                -- HASH_PARTITION_EXCHANGE [$$62]  |PARTITIONED|
                                                   -- ASSIGN  |PARTITIONED|
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1580.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1580.plan
index d3669c4..78d1566 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1580.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1580.plan
@@ -4,21 +4,21 @@
       -- STREAM_PROJECT  |PARTITIONED|
         -- ASSIGN  |PARTITIONED|
           -- STREAM_PROJECT  |PARTITIONED|
-            -- SORT_MERGE_EXCHANGE [$$69(ASC) ]  |PARTITIONED|
+            -- SORT_MERGE_EXCHANGE [$$59(ASC) ]  |PARTITIONED|
               -- STREAM_LIMIT  |PARTITIONED|
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  -- STABLE_SORT [topK: 100] [$$69(ASC)]  |PARTITIONED|
+                  -- STABLE_SORT [topK: 100] [$$59(ASC)]  |PARTITIONED|
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                       -- STREAM_PROJECT  |PARTITIONED|
                         -- STREAM_SELECT  |PARTITIONED|
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            -- SORT_GROUP_BY[$$79]  |PARTITIONED|
+                            -- SORT_GROUP_BY[$$69]  |PARTITIONED|
                                     {
                                       -- AGGREGATE  |LOCAL|
                                         -- NESTED_TUPLE_SOURCE  |LOCAL|
                                     }
-                              -- HASH_PARTITION_EXCHANGE [$$79]  |PARTITIONED|
-                                -- SORT_GROUP_BY[$$57]  |PARTITIONED|
+                              -- HASH_PARTITION_EXCHANGE [$$69]  |PARTITIONED|
+                                -- SORT_GROUP_BY[$$47]  |PARTITIONED|
                                         {
                                           -- AGGREGATE  |LOCAL|
                                             -- NESTED_TUPLE_SOURCE  |LOCAL|
@@ -26,33 +26,33 @@
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                     -- STREAM_PROJECT  |PARTITIONED|
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        -- HYBRID_HASH_JOIN [$$61][$$64]  |PARTITIONED|
-                                          -- HASH_PARTITION_EXCHANGE [$$61]  |PARTITIONED|
+                                        -- HYBRID_HASH_JOIN [$$51][$$54]  |PARTITIONED|
+                                          -- HASH_PARTITION_EXCHANGE [$$51]  |PARTITIONED|
                                             -- STREAM_PROJECT  |PARTITIONED|
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                -- HYBRID_HASH_JOIN [$$70][$$63]  |PARTITIONED|
-                                                  -- HASH_PARTITION_EXCHANGE [$$70]  |PARTITIONED|
+                                                -- HYBRID_HASH_JOIN [$$60][$$53]  |PARTITIONED|
+                                                  -- HASH_PARTITION_EXCHANGE [$$60]  |PARTITIONED|
                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        -- HYBRID_HASH_JOIN [$$60][$$75]  |PARTITIONED|
-                                                          -- HASH_PARTITION_EXCHANGE [$$60]  |PARTITIONED|
+                                                        -- HYBRID_HASH_JOIN [$$50][$$65]  |PARTITIONED|
+                                                          -- HASH_PARTITION_EXCHANGE [$$50]  |PARTITIONED|
                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                -- HYBRID_HASH_JOIN [$$59][$$73]  |PARTITIONED|
+                                                                -- HYBRID_HASH_JOIN [$$49][$$63]  |PARTITIONED|
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                     -- ASSIGN  |PARTITIONED|
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                         -- DATASOURCE_SCAN  |PARTITIONED|
                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                  -- HASH_PARTITION_EXCHANGE [$$73]  |PARTITIONED|
+                                                                  -- HASH_PARTITION_EXCHANGE [$$63]  |PARTITIONED|
                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                       -- ASSIGN  |PARTITIONED|
                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                           -- DATASOURCE_SCAN  |PARTITIONED|
                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                          -- HASH_PARTITION_EXCHANGE [$$75]  |PARTITIONED|
+                                                          -- HASH_PARTITION_EXCHANGE [$$65]  |PARTITIONED|
                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                               -- ASSIGN  |PARTITIONED|
                                                                 -- STREAM_PROJECT  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581-correlated.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581-correlated.plan
index 9c17663..5ac6b62 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581-correlated.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581-correlated.plan
@@ -8,7 +8,7 @@
               -- ASSIGN  |PARTITIONED|
                 -- STREAM_PROJECT  |PARTITIONED|
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    -- PRE_CLUSTERED_GROUP_BY[$$101]  |PARTITIONED|
+                    -- PRE_CLUSTERED_GROUP_BY[$$95]  |PARTITIONED|
                             {
                               -- AGGREGATE  |LOCAL|
                                 -- AGGREGATE  |LOCAL|
@@ -18,13 +18,13 @@
                                         -- NESTED_TUPLE_SOURCE  |LOCAL|
                             }
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        -- STABLE_SORT [$$101(ASC)]  |PARTITIONED|
+                        -- STABLE_SORT [$$95(ASC)]  |PARTITIONED|
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                             -- STREAM_PROJECT  |PARTITIONED|
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                -- HYBRID_HASH_JOIN [$$101][$$102]  |PARTITIONED|
-                                  -- HASH_PARTITION_EXCHANGE [$$101]  |PARTITIONED|
-                                    -- PRE_CLUSTERED_GROUP_BY[$$89]  |PARTITIONED|
+                                -- HYBRID_HASH_JOIN [$$95][$$96]  |PARTITIONED|
+                                  -- HASH_PARTITION_EXCHANGE [$$95]  |PARTITIONED|
+                                    -- PRE_CLUSTERED_GROUP_BY[$$83]  |PARTITIONED|
                                             {
                                               -- AGGREGATE  |LOCAL|
                                                 -- AGGREGATE  |LOCAL|
@@ -34,13 +34,13 @@
                                                         -- NESTED_TUPLE_SOURCE  |LOCAL|
                                             }
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        -- STABLE_SORT [$$89(ASC)]  |PARTITIONED|
+                                        -- STABLE_SORT [$$83(ASC)]  |PARTITIONED|
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                             -- STREAM_PROJECT  |PARTITIONED|
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                -- HYBRID_HASH_JOIN [$$89][$$90]  |PARTITIONED|
-                                                  -- HASH_PARTITION_EXCHANGE [$$89]  |PARTITIONED|
-                                                    -- PRE_CLUSTERED_GROUP_BY[$$69]  |PARTITIONED|
+                                                -- HYBRID_HASH_JOIN [$$83][$$84]  |PARTITIONED|
+                                                  -- HASH_PARTITION_EXCHANGE [$$83]  |PARTITIONED|
+                                                    -- PRE_CLUSTERED_GROUP_BY[$$63]  |PARTITIONED|
                                                             {
                                                               -- AGGREGATE  |LOCAL|
                                                                 -- AGGREGATE  |LOCAL|
@@ -50,7 +50,7 @@
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            -- HYBRID_HASH_JOIN [$$69][$$79]  |PARTITIONED|
+                                                            -- HYBRID_HASH_JOIN [$$63][$$73]  |PARTITIONED|
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                   -- ASSIGN  |PARTITIONED|
@@ -71,7 +71,7 @@
                                                                   -- ASSIGN  |PARTITIONED|
                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                       -- REPLICATE  |PARTITIONED|
-                                                                        -- HASH_PARTITION_EXCHANGE [$$126]  |PARTITIONED|
+                                                                        -- HASH_PARTITION_EXCHANGE [$$120]  |PARTITIONED|
                                                                           -- ASSIGN  |PARTITIONED|
                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                               -- ASSIGN  |PARTITIONED|
@@ -83,23 +83,23 @@
                                                                                           -- DATASOURCE_SCAN  |PARTITIONED|
                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                  -- HASH_PARTITION_EXCHANGE [$$90]  |PARTITIONED|
+                                                  -- HASH_PARTITION_EXCHANGE [$$84]  |PARTITIONED|
                                                     -- ASSIGN  |PARTITIONED|
                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          -- HYBRID_HASH_JOIN [$$83][$$82]  |PARTITIONED|
+                                                          -- HYBRID_HASH_JOIN [$$77][$$76]  |PARTITIONED|
                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                 -- ASSIGN  |PARTITIONED|
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                     -- REPLICATE  |PARTITIONED|
-                                                                      -- HASH_PARTITION_EXCHANGE [$$120]  |PARTITIONED|
+                                                                      -- HASH_PARTITION_EXCHANGE [$$114]  |PARTITIONED|
                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                           -- ASSIGN  |PARTITIONED|
                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                               -- STREAM_SELECT  |PARTITIONED|
                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                  -- PRE_CLUSTERED_GROUP_BY[$$125]  |PARTITIONED|
+                                                                                  -- PRE_CLUSTERED_GROUP_BY[$$119]  |PARTITIONED|
                                                                                           {
                                                                                             -- AGGREGATE  |LOCAL|
                                                                                               -- AGGREGATE  |LOCAL|
@@ -109,7 +109,7 @@
                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                          -- HYBRID_HASH_JOIN [$$125][$$126]  |PARTITIONED|
+                                                                                          -- HYBRID_HASH_JOIN [$$119][$$120]  |PARTITIONED|
                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                               -- REPLICATE  |PARTITIONED|
                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -119,7 +119,7 @@
                                                                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                               -- REPLICATE  |PARTITIONED|
-                                                                                                -- HASH_PARTITION_EXCHANGE [$$126]  |PARTITIONED|
+                                                                                                -- HASH_PARTITION_EXCHANGE [$$120]  |PARTITIONED|
                                                                                                   -- ASSIGN  |PARTITIONED|
                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
                                                                                                       -- ASSIGN  |PARTITIONED|
@@ -131,7 +131,7 @@
                                                                                                                   -- DATASOURCE_SCAN  |PARTITIONED|
                                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                            -- HASH_PARTITION_EXCHANGE [$$82]  |PARTITIONED|
+                                                            -- HASH_PARTITION_EXCHANGE [$$76]  |PARTITIONED|
                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                 -- ASSIGN  |PARTITIONED|
                                                                   -- STREAM_PROJECT  |PARTITIONED|
@@ -144,13 +144,13 @@
                                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                  -- HASH_PARTITION_EXCHANGE [$$102]  |PARTITIONED|
+                                  -- HASH_PARTITION_EXCHANGE [$$96]  |PARTITIONED|
                                     -- ASSIGN  |PARTITIONED|
                                       -- STREAM_PROJECT  |PARTITIONED|
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          -- HYBRID_HASH_JOIN [$$85][$$84]  |PARTITIONED|
-                                            -- HASH_PARTITION_EXCHANGE [$$85]  |PARTITIONED|
-                                              -- PRE_CLUSTERED_GROUP_BY[$$103]  |PARTITIONED|
+                                          -- HYBRID_HASH_JOIN [$$79][$$78]  |PARTITIONED|
+                                            -- HASH_PARTITION_EXCHANGE [$$79]  |PARTITIONED|
+                                              -- PRE_CLUSTERED_GROUP_BY[$$97]  |PARTITIONED|
                                                       {
                                                         -- AGGREGATE  |LOCAL|
                                                           -- AGGREGATE  |LOCAL|
@@ -159,18 +159,18 @@
                                                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                       }
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  -- STABLE_SORT [$$103(ASC)]  |PARTITIONED|
+                                                  -- STABLE_SORT [$$97(ASC)]  |PARTITIONED|
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          -- HYBRID_HASH_JOIN [$$103][$$106]  |PARTITIONED|
-                                                            -- HASH_PARTITION_EXCHANGE [$$103]  |PARTITIONED|
+                                                          -- HYBRID_HASH_JOIN [$$97][$$100]  |PARTITIONED|
+                                                            -- HASH_PARTITION_EXCHANGE [$$97]  |PARTITIONED|
                                                               -- STREAM_PROJECT  |PARTITIONED|
                                                                 -- STREAM_SELECT  |PARTITIONED|
                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                     -- ASSIGN  |PARTITIONED|
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        -- PRE_CLUSTERED_GROUP_BY[$$107]  |PARTITIONED|
+                                                                        -- PRE_CLUSTERED_GROUP_BY[$$101]  |PARTITIONED|
                                                                                 {
                                                                                   -- AGGREGATE  |LOCAL|
                                                                                     -- AGGREGATE  |LOCAL|
@@ -180,7 +180,7 @@
                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                -- HYBRID_HASH_JOIN [$$107][$$108]  |PARTITIONED|
+                                                                                -- HYBRID_HASH_JOIN [$$101][$$102]  |PARTITIONED|
                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                     -- REPLICATE  |PARTITIONED|
                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -198,7 +198,7 @@
                                                                                       -- ASSIGN  |PARTITIONED|
                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                           -- REPLICATE  |PARTITIONED|
-                                                                                            -- HASH_PARTITION_EXCHANGE [$$126]  |PARTITIONED|
+                                                                                            -- HASH_PARTITION_EXCHANGE [$$120]  |PARTITIONED|
                                                                                               -- ASSIGN  |PARTITIONED|
                                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                                   -- ASSIGN  |PARTITIONED|
@@ -210,20 +210,20 @@
                                                                                                               -- DATASOURCE_SCAN  |PARTITIONED|
                                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                            -- HASH_PARTITION_EXCHANGE [$$106]  |PARTITIONED|
+                                                            -- HASH_PARTITION_EXCHANGE [$$100]  |PARTITIONED|
                                                               -- ASSIGN  |PARTITIONED|
                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    -- HYBRID_HASH_JOIN [$$120][$$119]  |PARTITIONED|
+                                                                    -- HYBRID_HASH_JOIN [$$114][$$113]  |PARTITIONED|
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                         -- REPLICATE  |PARTITIONED|
-                                                                          -- HASH_PARTITION_EXCHANGE [$$120]  |PARTITIONED|
+                                                                          -- HASH_PARTITION_EXCHANGE [$$114]  |PARTITIONED|
                                                                             -- STREAM_PROJECT  |PARTITIONED|
                                                                               -- ASSIGN  |PARTITIONED|
                                                                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                   -- STREAM_SELECT  |PARTITIONED|
                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                      -- PRE_CLUSTERED_GROUP_BY[$$125]  |PARTITIONED|
+                                                                                      -- PRE_CLUSTERED_GROUP_BY[$$119]  |PARTITIONED|
                                                                                               {
                                                                                                 -- AGGREGATE  |LOCAL|
                                                                                                   -- AGGREGATE  |LOCAL|
@@ -233,7 +233,7 @@
                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                           -- STREAM_PROJECT  |PARTITIONED|
                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                              -- HYBRID_HASH_JOIN [$$125][$$126]  |PARTITIONED|
+                                                                                              -- HYBRID_HASH_JOIN [$$119][$$120]  |PARTITIONED|
                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                   -- REPLICATE  |PARTITIONED|
                                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -243,7 +243,7 @@
                                                                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                   -- REPLICATE  |PARTITIONED|
-                                                                                                    -- HASH_PARTITION_EXCHANGE [$$126]  |PARTITIONED|
+                                                                                                    -- HASH_PARTITION_EXCHANGE [$$120]  |PARTITIONED|
                                                                                                       -- ASSIGN  |PARTITIONED|
                                                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                                                           -- ASSIGN  |PARTITIONED|
@@ -255,7 +255,7 @@
                                                                                                                       -- DATASOURCE_SCAN  |PARTITIONED|
                                                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                      -- HASH_PARTITION_EXCHANGE [$$119]  |PARTITIONED|
+                                                                      -- HASH_PARTITION_EXCHANGE [$$113]  |PARTITIONED|
                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                           -- ASSIGN  |PARTITIONED|
                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -266,7 +266,7 @@
                                                                                       -- DATASOURCE_SCAN  |PARTITIONED|
                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                            -- HASH_PARTITION_EXCHANGE [$$84]  |PARTITIONED|
+                                            -- HASH_PARTITION_EXCHANGE [$$78]  |PARTITIONED|
                                               -- STREAM_PROJECT  |PARTITIONED|
                                                 -- ASSIGN  |PARTITIONED|
                                                   -- STREAM_PROJECT  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581.plan
index 70948fb..14b31eb 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581.plan
@@ -16,7 +16,7 @@
                 -- STREAM_PROJECT  |PARTITIONED|
                   -- ASSIGN  |PARTITIONED|
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- PRE_CLUSTERED_GROUP_BY[$$98]  |PARTITIONED|
+                      -- PRE_CLUSTERED_GROUP_BY[$$92]  |PARTITIONED|
                               {
                                 -- AGGREGATE  |LOCAL|
                                   -- AGGREGATE  |LOCAL|
@@ -26,13 +26,13 @@
                                           -- NESTED_TUPLE_SOURCE  |LOCAL|
                               }
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          -- STABLE_SORT [$$98(ASC)]  |PARTITIONED|
+                          -- STABLE_SORT [$$92(ASC)]  |PARTITIONED|
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                               -- STREAM_PROJECT  |PARTITIONED|
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  -- HYBRID_HASH_JOIN [$$98][$$99]  |PARTITIONED|
-                                    -- HASH_PARTITION_EXCHANGE [$$98]  |PARTITIONED|
-                                      -- PRE_CLUSTERED_GROUP_BY[$$36]  |PARTITIONED|
+                                  -- HYBRID_HASH_JOIN [$$92][$$93]  |PARTITIONED|
+                                    -- HASH_PARTITION_EXCHANGE [$$92]  |PARTITIONED|
+                                      -- PRE_CLUSTERED_GROUP_BY[$$32]  |PARTITIONED|
                                               {
                                                 -- AGGREGATE  |LOCAL|
                                                   -- AGGREGATE  |LOCAL|
@@ -42,17 +42,17 @@
                                                           -- NESTED_TUPLE_SOURCE  |LOCAL|
                                               }
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          -- STABLE_SORT [$$36(ASC)]  |PARTITIONED|
+                                          -- STABLE_SORT [$$32(ASC)]  |PARTITIONED|
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                               -- STREAM_PROJECT  |PARTITIONED|
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  -- HYBRID_HASH_JOIN [$$36][$$91]  |PARTITIONED|
+                                                  -- HYBRID_HASH_JOIN [$$32][$$85]  |PARTITIONED|
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                       -- STREAM_PROJECT  |PARTITIONED|
                                                         -- ASSIGN  |PARTITIONED|
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                             -- REPLICATE  |PARTITIONED|
-                                                              -- HASH_PARTITION_EXCHANGE [$$100]  |PARTITIONED|
+                                                              -- HASH_PARTITION_EXCHANGE [$$94]  |PARTITIONED|
                                                                 -- STREAM_PROJECT  |UNPARTITIONED|
                                                                   -- ASSIGN  |UNPARTITIONED|
                                                                     -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
@@ -70,7 +70,7 @@
                                                                                             -- DATASOURCE_SCAN  |PARTITIONED|
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                    -- HASH_PARTITION_EXCHANGE [$$91]  |PARTITIONED|
+                                                    -- HASH_PARTITION_EXCHANGE [$$85]  |PARTITIONED|
                                                       -- ASSIGN  |PARTITIONED|
                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                           -- STREAM_SELECT  |PARTITIONED|
@@ -101,7 +101,7 @@
                                                                                                             -- DATASOURCE_SCAN  |PARTITIONED|
                                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                    -- HASH_PARTITION_EXCHANGE [$$99]  |PARTITIONED|
+                                    -- HASH_PARTITION_EXCHANGE [$$93]  |PARTITIONED|
                                       -- ASSIGN  |PARTITIONED|
                                         -- STREAM_PROJECT  |PARTITIONED|
                                           -- STREAM_SELECT  |PARTITIONED|
@@ -115,7 +115,7 @@
                                                           -- STREAM_SELECT  |PARTITIONED|
                                                             -- ASSIGN  |PARTITIONED|
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                -- PRE_CLUSTERED_GROUP_BY[$$100]  |PARTITIONED|
+                                                                -- PRE_CLUSTERED_GROUP_BY[$$94]  |PARTITIONED|
                                                                         {
                                                                           -- AGGREGATE  |LOCAL|
                                                                             -- AGGREGATE  |LOCAL|
@@ -124,14 +124,14 @@
                                                                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
                                                                         }
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    -- STABLE_SORT [$$100(ASC)]  |PARTITIONED|
+                                                                    -- STABLE_SORT [$$94(ASC)]  |PARTITIONED|
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                         -- STREAM_PROJECT  |PARTITIONED|
                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                            -- HYBRID_HASH_JOIN [$$100][$$101]  |PARTITIONED|
+                                                                            -- HYBRID_HASH_JOIN [$$94][$$95]  |PARTITIONED|
                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                 -- REPLICATE  |PARTITIONED|
-                                                                                  -- HASH_PARTITION_EXCHANGE [$$100]  |PARTITIONED|
+                                                                                  -- HASH_PARTITION_EXCHANGE [$$94]  |PARTITIONED|
                                                                                     -- STREAM_PROJECT  |UNPARTITIONED|
                                                                                       -- ASSIGN  |UNPARTITIONED|
                                                                                         -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
@@ -149,7 +149,7 @@
                                                                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
                                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                              -- HASH_PARTITION_EXCHANGE [$$101]  |PARTITIONED|
+                                                                              -- HASH_PARTITION_EXCHANGE [$$95]  |PARTITIONED|
                                                                                 -- ASSIGN  |PARTITIONED|
                                                                                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                     -- STREAM_SELECT  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping.plan
index 57ca6ce..655b2f5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping.plan
@@ -3,13 +3,13 @@
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
         -- SORT_MERGE_EXCHANGE [$$l_shipmode(ASC) ]  |PARTITIONED|
-          -- SORT_GROUP_BY[$$95]  |PARTITIONED|
+          -- SORT_GROUP_BY[$$91]  |PARTITIONED|
                   {
                     -- AGGREGATE  |LOCAL|
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
                   }
-            -- HASH_PARTITION_EXCHANGE [$$95]  |PARTITIONED|
-              -- SORT_GROUP_BY[$$77]  |PARTITIONED|
+            -- HASH_PARTITION_EXCHANGE [$$91]  |PARTITIONED|
+              -- SORT_GROUP_BY[$$73]  |PARTITIONED|
                       {
                         -- AGGREGATE  |LOCAL|
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
@@ -17,12 +17,12 @@
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   -- STREAM_PROJECT  |PARTITIONED|
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- HYBRID_HASH_JOIN [$$77][$$84]  |PARTITIONED|
+                      -- HYBRID_HASH_JOIN [$$73][$$80]  |PARTITIONED|
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                           -- STREAM_PROJECT  |PARTITIONED|
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              -- HYBRID_HASH_JOIN [$$86][$$81]  |PARTITIONED|
-                                -- HASH_PARTITION_EXCHANGE [$$86]  |PARTITIONED|
+                              -- HYBRID_HASH_JOIN [$$82][$$77]  |PARTITIONED|
+                                -- HASH_PARTITION_EXCHANGE [$$82]  |PARTITIONED|
                                   -- STREAM_PROJECT  |PARTITIONED|
                                     -- STREAM_SELECT  |PARTITIONED|
                                       -- ASSIGN  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_broadcast.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_broadcast.plan
index 40c1c55..8fd10f5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_broadcast.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_broadcast.plan
@@ -3,13 +3,13 @@
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
         -- SORT_MERGE_EXCHANGE [$$l_shipmode(ASC) ]  |PARTITIONED|
-          -- SORT_GROUP_BY[$$95]  |PARTITIONED|
+          -- SORT_GROUP_BY[$$91]  |PARTITIONED|
                   {
                     -- AGGREGATE  |LOCAL|
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
                   }
-            -- HASH_PARTITION_EXCHANGE [$$95]  |PARTITIONED|
-              -- SORT_GROUP_BY[$$77]  |PARTITIONED|
+            -- HASH_PARTITION_EXCHANGE [$$91]  |PARTITIONED|
+              -- SORT_GROUP_BY[$$73]  |PARTITIONED|
                       {
                         -- AGGREGATE  |LOCAL|
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
@@ -17,11 +17,11 @@
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   -- STREAM_PROJECT  |PARTITIONED|
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- HYBRID_HASH_JOIN [$$77][$$84]  |PARTITIONED|
+                      -- HYBRID_HASH_JOIN [$$73][$$80]  |PARTITIONED|
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                           -- STREAM_PROJECT  |PARTITIONED|
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              -- HYBRID_HASH_JOIN [$$85][$$81]  |PARTITIONED|
+                              -- HYBRID_HASH_JOIN [$$81][$$77]  |PARTITIONED|
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                   -- STREAM_PROJECT  |PARTITIONED|
                                     -- STREAM_SELECT  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/denorm-cust-order.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/denorm-cust-order.ast
index 543f691..a517304 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/denorm-cust-order.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/denorm-cust-order.ast
@@ -46,9 +46,7 @@
     FunctionCall Metadata.resolve@-1[
       LiteralExpr [STRING] [cust]
       Variable [ Name=$cid ]
-      Variable [ Name=$o ]
       Variable [ Name=#1 ]
-      Variable [ Name=$c ]
     ]
   )
   (
@@ -71,7 +69,11 @@
   (
     LiteralExpr [STRING] [orders]
     :
-    Variable [ Name=$o ]
+    FunctionCall Metadata.resolve@-1[
+      LiteralExpr [STRING] [o]
+      Variable [ Name=$cid ]
+      Variable [ Name=#1 ]
+    ]
   )
 ]
 ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inlined_q18_large_volume_customer.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inlined_q18_large_volume_customer.ast
index 1cbf8c5..cab13e2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inlined_q18_large_volume_customer.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inlined_q18_large_volume_customer.ast
@@ -87,7 +87,9 @@
           Field=l_quantity
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          FunctionCall Metadata.dataset@1[
+            LiteralExpr [STRING] [l]
+          ]
           AS Variable [ Name=$j ]
         ]
       )
@@ -124,7 +126,9 @@
               Field=l_quantity
             ]
             ]
-            FROM [              Variable [ Name=$l ]
+            FROM [              FunctionCall Metadata.dataset@1[
+                LiteralExpr [STRING] [l]
+              ]
               AS Variable [ Name=$i ]
             ]
           )
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nest_aggregate.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nest_aggregate.ast
index e40b06c..56a5172 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nest_aggregate.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nest_aggregate.ast
@@ -176,7 +176,9 @@
               Field=o_totalprice
             ]
             ]
-            FROM [              Variable [ Name=$orders ]
+            FROM [              FunctionCall Metadata.dataset@1[
+                LiteralExpr [STRING] [orders]
+              ]
               AS Variable [ Name=$o ]
             ]
           )
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orderby-desc-using-gby.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orderby-desc-using-gby.ast
index d50f774..5c200bb 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orderby-desc-using-gby.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orderby-desc-using-gby.ast
@@ -36,7 +36,6 @@
       LiteralExpr [STRING] [age]
       Variable [ Name=$name ]
       Variable [ Name=#1 ]
-      Variable [ Name=$c ]
     ]
   )
 ]
@@ -65,7 +64,6 @@
     LiteralExpr [STRING] [age]
     Variable [ Name=$name ]
     Variable [ Name=#1 ]
-    Variable [ Name=$c ]
   ]
   ASC
 
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orders-aggreg.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orders-aggreg.ast
index 422ca7b..2c44738 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orders-aggreg.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orders-aggreg.ast
@@ -23,7 +23,11 @@
     LiteralExpr [STRING] [ordpercust]
     :
     FunctionCall orders-aggreg.count@1[
-      Variable [ Name=$o ]
+      FunctionCall Metadata.resolve@-1[
+        LiteralExpr [STRING] [o]
+        Variable [ Name=$cid ]
+        Variable [ Name=#1 ]
+      ]
     ]
   )
   (
@@ -37,7 +41,9 @@
           Field=total
         ]
         ]
-        FROM [          Variable [ Name=$o ]
+        FROM [          FunctionCall Metadata.dataset@1[
+            LiteralExpr [STRING] [o]
+          ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -54,7 +60,9 @@
           Field=total
         ]
         ]
-        FROM [          Variable [ Name=$o ]
+        FROM [          FunctionCall Metadata.dataset@1[
+            LiteralExpr [STRING] [o]
+          ]
           AS Variable [ Name=$i ]
         ]
       )
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q01_pricing_summary_report_nt.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q01_pricing_summary_report_nt.ast
index 92fe1f6..aa7ccbd 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q01_pricing_summary_report_nt.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q01_pricing_summary_report_nt.ast
@@ -45,7 +45,9 @@
           Field=l_quantity
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          FunctionCall Metadata.dataset@1[
+            LiteralExpr [STRING] [l]
+          ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -62,7 +64,9 @@
           Field=l_extendedprice
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          FunctionCall Metadata.dataset@1[
+            LiteralExpr [STRING] [l]
+          ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -90,7 +94,9 @@
           ]
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          FunctionCall Metadata.dataset@1[
+            LiteralExpr [STRING] [l]
+          ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -127,7 +133,9 @@
           ]
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          FunctionCall Metadata.dataset@1[
+            LiteralExpr [STRING] [l]
+          ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -144,7 +152,9 @@
           Field=l_quantity
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          FunctionCall Metadata.dataset@1[
+            LiteralExpr [STRING] [l]
+          ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -161,7 +171,9 @@
           Field=l_extendedprice
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          FunctionCall Metadata.dataset@1[
+            LiteralExpr [STRING] [l]
+          ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -178,7 +190,9 @@
           Field=l_discount
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          FunctionCall Metadata.dataset@1[
+            LiteralExpr [STRING] [l]
+          ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -188,7 +202,12 @@
     LiteralExpr [STRING] [count_order]
     :
     FunctionCall tpch.count@1[
-      Variable [ Name=$l ]
+      FunctionCall Metadata.resolve@-1[
+        LiteralExpr [STRING] [l]
+        Variable [ Name=$l_linestatus ]
+        Variable [ Name=$l_returnflag ]
+        Variable [ Name=#1 ]
+      ]
     ]
   )
 ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q03_shipping_priority.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q03_shipping_priority.ast
index 368f4c2..7d54130 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q03_shipping_priority.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q03_shipping_priority.ast
@@ -192,7 +192,9 @@
         ]
       ]
       ]
-      FROM [        Variable [ Name=$l ]
+      FROM [        FunctionCall Metadata.dataset@1[
+          LiteralExpr [STRING] [l]
+        ]
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q05_local_supplier_volume.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q05_local_supplier_volume.ast
index 2c40155..a220cf6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q05_local_supplier_volume.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q05_local_supplier_volume.ast
@@ -413,7 +413,9 @@
         ]
       ]
       ]
-      FROM [        Variable [ Name=$o1 ]
+      FROM [        FunctionCall Metadata.dataset@1[
+          LiteralExpr [STRING] [o1]
+        ]
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue550.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue550.ast
index e5a516d..38c25da 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue550.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue550.ast
@@ -161,7 +161,9 @@
       SELECT ELEMENT [
       Variable [ Name=$srec ]
       ]
-      FROM [        Variable [ Name=$s ]
+      FROM [        FunctionCall Metadata.dataset@1[
+          LiteralExpr [STRING] [s]
+        ]
         AS Variable [ Name=$srec ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue562.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue562.ast
index 10f53bb..b588daa 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue562.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue562.ast
@@ -227,7 +227,11 @@
     LiteralExpr [STRING] [numcust]
     :
     FunctionCall tpch.count@1[
-      Variable [ Name=$ct ]
+      FunctionCall Metadata.resolve@-1[
+        LiteralExpr [STRING] [ct]
+        Variable [ Name=$cntrycode ]
+        Variable [ Name=#1 ]
+      ]
     ]
   )
   (
@@ -241,7 +245,9 @@
           Field=c_acctbal
         ]
         ]
-        FROM [          Variable [ Name=$ct ]
+        FROM [          FunctionCall Metadata.dataset@1[
+            LiteralExpr [STRING] [ct]
+          ]
           AS Variable [ Name=$i ]
         ]
       )
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue697.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue697.ast
index e028ef8..c733869 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue697.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue697.ast
@@ -25,7 +25,9 @@
           Field=value
         ]
         ]
-        FROM [          Variable [ Name=$i ]
+        FROM [          FunctionCall Metadata.dataset@1[
+            LiteralExpr [STRING] [i]
+          ]
           AS Variable [ Name=$j ]
         ]
         Where
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue785.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue785.ast
index fb94b42..8dc0e87 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue785.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue785.ast
@@ -194,7 +194,9 @@
             Field=o_totalprice
           ]
           ]
-          FROM [            Variable [ Name=$orders ]
+          FROM [            FunctionCall Metadata.dataset@1[
+              LiteralExpr [STRING] [orders]
+            ]
             AS Variable [ Name=$o ]
           ]
         )
@@ -231,7 +233,9 @@
         )
       ]
       ]
-      FROM [        Variable [ Name=$x ]
+      FROM [        FunctionCall Metadata.dataset@1[
+          LiteralExpr [STRING] [x]
+        ]
         AS Variable [ Name=$y ]
       ]
       Orderby
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue810-2.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue810-2.ast
index 8b9e4b9..c75e253 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue810-2.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue810-2.ast
@@ -104,7 +104,9 @@
       Field=l_discount
     ]
     ]
-    FROM [      Variable [ Name=$l ]
+    FROM [      FunctionCall Metadata.dataset@1[
+        LiteralExpr [STRING] [l]
+      ]
       AS Variable [ Name=$i ]
     ]
     Where
@@ -123,7 +125,9 @@
     SELECT ELEMENT [
     Variable [ Name=$i ]
     ]
-    FROM [      Variable [ Name=$l ]
+    FROM [      FunctionCall Metadata.dataset@1[
+        LiteralExpr [STRING] [l]
+      ]
       AS Variable [ Name=$i ]
     ]
     Where
@@ -165,7 +169,9 @@
       ]
     ]
     ]
-    FROM [      Variable [ Name=$l ]
+    FROM [      FunctionCall Metadata.dataset@1[
+        LiteralExpr [STRING] [l]
+      ]
       AS Variable [ Name=$i ]
     ]
   )
@@ -189,7 +195,9 @@
       ]
     ]
     ]
-    FROM [      Variable [ Name=$l ]
+    FROM [      FunctionCall Metadata.dataset@1[
+        LiteralExpr [STRING] [l]
+      ]
       AS Variable [ Name=$i ]
     ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue810.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue810.ast
index a7dec25..612bbfa 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue810.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue810.ast
@@ -87,7 +87,9 @@
     SELECT ELEMENT [
     Variable [ Name=$m ]
     ]
-    FROM [      Variable [ Name=$l ]
+    FROM [      FunctionCall Metadata.dataset@1[
+        LiteralExpr [STRING] [l]
+      ]
       AS Variable [ Name=$m ]
     ]
     Where
@@ -106,7 +108,9 @@
     SELECT ELEMENT [
     Variable [ Name=$a ]
     ]
-    FROM [      Variable [ Name=$l ]
+    FROM [      FunctionCall Metadata.dataset@1[
+        LiteralExpr [STRING] [l]
+      ]
       AS Variable [ Name=$a ]
     ]
     Where
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/2.ast b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/2.ast
index 5471490..9e50f02 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/2.ast
+++ b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/2.ast
@@ -94,7 +94,6 @@
             FunctionCall Metadata.resolve@-1[
               LiteralExpr [STRING] [es]
               Variable [ Name=#4 ]
-              Variable [ Name=$e ]
               Variable [ Name=$sponsor ]
               Variable [ Name=$sig_sponsorship_count ]
               Variable [ Name=$chapter_name ]
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias.ast b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias.ast
index 0fdf31a..aadad7e 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias.ast
+++ b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias.ast
@@ -3,12 +3,22 @@
 FunctionCall null.sqrt@1[
   OperatorExpr [
     FieldAccessor [
-      Variable [ Name=$t ]
+      FunctionCall Metadata.resolve@-1[
+        LiteralExpr [STRING] [t]
+        Variable [ Name=$u ]
+        Variable [ Name=$root ]
+        Variable [ Name=#1 ]
+      ]
       Field=a
     ]
     *
     FieldAccessor [
-      Variable [ Name=$t ]
+      FunctionCall Metadata.resolve@-1[
+        LiteralExpr [STRING] [t]
+        Variable [ Name=$u ]
+        Variable [ Name=$root ]
+        Variable [ Name=#1 ]
+      ]
       Field=b
     ]
   ]
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias2.ast b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias2.ast
index 78238d1..9cf8d6f 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias2.ast
+++ b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias2.ast
@@ -6,7 +6,6 @@
       FunctionCall Metadata.resolve@-1[
         LiteralExpr [STRING] [t]
         Variable [ Name=$u ]
-        Variable [ Name=$root ]
         Variable [ Name=#1 ]
         Variable [ Name=$id ]
       ]
@@ -17,7 +16,6 @@
       FunctionCall Metadata.resolve@-1[
         LiteralExpr [STRING] [t]
         Variable [ Name=$u ]
-        Variable [ Name=$root ]
         Variable [ Name=#1 ]
         Variable [ Name=$id ]
       ]
@@ -47,13 +45,22 @@
 Let Variable [ Name=$u ]
   :=
   FieldAccessor [
-    Variable [ Name=$root ]
+    FunctionCall Metadata.resolve@-1[
+      LiteralExpr [STRING] [root]
+      Variable [ Name=#1 ]
+      Variable [ Name=$id ]
+    ]
     Field=time
   ]
  HAVING
   OperatorExpr [
     FieldAccessor [
-      Variable [ Name=$root ]
+      FunctionCall Metadata.resolve@-1[
+        LiteralExpr [STRING] [root]
+        Variable [ Name=$u ]
+        Variable [ Name=#1 ]
+        Variable [ Name=$id ]
+      ]
       Field=orders
     ]
     >
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias3.ast b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias3.ast
index 9bf4094..92fcd53 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias3.ast
+++ b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias3.ast
@@ -7,12 +7,22 @@
     FunctionCall null.sqrt@1[
       OperatorExpr [
         FieldAccessor [
-          Variable [ Name=$t ]
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [t]
+            Variable [ Name=$u ]
+            Variable [ Name=$root ]
+            Variable [ Name=#1 ]
+          ]
           Field=a
         ]
         *
         FieldAccessor [
-          Variable [ Name=$t ]
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [t]
+            Variable [ Name=$u ]
+            Variable [ Name=$root ]
+            Variable [ Name=#1 ]
+          ]
           Field=b
         ]
       ]
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/nestedFLWOGR3.ast b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/nestedFLWOGR3.ast
index af44c39..9c4682d 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/nestedFLWOGR3.ast
+++ b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/nestedFLWOGR3.ast
@@ -94,7 +94,6 @@
             FunctionCall Metadata.resolve@-1[
               LiteralExpr [STRING] [es]
               Variable [ Name=#4 ]
-              Variable [ Name=$e ]
               Variable [ Name=$sponsor ]
               Variable [ Name=$sig_sponsorship_count ]
               Variable [ Name=$chapter_name ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/big-object/big_object_groupby/big_object_groupby.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/big-object/big_object_groupby/big_object_groupby.3.query.sqlpp
index 641b8e6..b5388a9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/big-object/big_object_groupby/big_object_groupby.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/big-object/big_object_groupby/big_object_groupby.3.query.sqlpp
@@ -26,8 +26,9 @@
 use test;
 
 
-select element {'partkey':partkey,'lines':i}
+select element {'partkey':partkey,'lines': (from g select value i) }
 from  Line as i
 group by i.l_partkey as partkey
+group as g
 order by partkey
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at02/at02.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at02/at02.3.query.sqlpp
index 3c6be99..82e458f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at02/at02.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at02/at02.3.query.sqlpp
@@ -28,14 +28,15 @@
 select element {'group':g,'item':(
         select element {'num':p,'mid':a.`message-id`}
         from  (
-            select element ii
-            from  m as ii
-            order by ii.`message-id`
+            select element ii.m
+            from  gr as ii
+            order by ii.m.`message-id`
         ) as a at p
     )}
 from  FacebookUsers as u,
       FacebookMessages as m
-where (u.id = m.`author-id`)
+where u.id = m.`author-id`
 group by u.id as g
+group as gr
 order by g
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at03/at03.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at03/at03.3.query.sqlpp
index 44ecea4..51b8ff8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at03/at03.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at03/at03.3.query.sqlpp
@@ -28,15 +28,16 @@
 select element {'user-since':fus,'users':(
         select element {'num':ip,'name':f.name}
         from  (
-            select element i1
-            from  i as i1
-            order by i1.name
+            select element i1.i
+            from  g as i1
+            order by i1.i.name
         ) as f at ip
     )}
 from  (
     select element fb
     from  FacebookUsers as fb
 ) as i
-group by test.`get-year`(i.`user-since`) as fus
+group by `get-year`(i.`user-since`) as fus
+group as g
 order by fus
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at04/at04.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at04/at04.3.query.sqlpp
index cbe542a..bb97545 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at04/at04.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at04/at04.3.query.sqlpp
@@ -28,9 +28,9 @@
 select element {'o_custkey':ckey,'users':(
         select element {'num':ip,'orderkey':f.o_orderkey}
         from  (
-            select element i1
-            from  i as i1
-            order by i1.o_orderkey
+            select element i1.i
+            from  g as i1
+            order by i1.i.o_orderkey
         ) as f at ip
     )}
 from  (
@@ -38,6 +38,7 @@
     from  Orders as o
 ) as i
 group by i.o_custkey as ckey
+group as g
 order by ckey
 limit 3
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at05/at05.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at05/at05.3.query.sqlpp
index 7905776..86318a9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at05/at05.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/at05/at05.3.query.sqlpp
@@ -27,16 +27,17 @@
 
 select element si
 from
-    ( select element {'xx':xx,'x':x,'uid':uid}
+    ( select element {'xx':xx,'x': (from g select value g.x),'uid':uid}
       from  Orders as x
-      where (x.o_custkey < 4)
+      where x.o_custkey < 4
       group by x.o_custkey as uid
-      with  xx as (
+      group as g
+      let  xx = (
             select element {'uid':uid,'seq':i,'item':y.o_orderkey}
             from  (
-                select element xxx
-                from  x as xxx
-                order by xxx.o_orderkey
+                select element xxx.x
+                from  g as xxx
+                order by xxx.x.o_orderkey
             ) as y at i
         )
       order by uid
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/query-ASTERIXDB-883/query-ASTERIXDB-883.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/query-ASTERIXDB-883/query-ASTERIXDB-883.2.update.sqlpp
index f288510..a29e59b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/query-ASTERIXDB-883/query-ASTERIXDB-883.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/query-ASTERIXDB-883/query-ASTERIXDB-883.2.update.sqlpp
@@ -25,7 +25,8 @@
 insert into tmp(
   from page_views as t
   group by t.user
+  group as g
   select value {
-     "groups": t
+     "groups": (select value g.t from g)
   }
 );
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/query-issue550/query-issue550.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/query-issue550/query-issue550.3.query.sqlpp
index 33c7947..9969f77 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/query-issue550/query-issue550.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/flwor/query-issue550/query-issue550.3.query.sqlpp
@@ -25,9 +25,10 @@
 
 with  sample as {{{'r':1,'uid':'1a2b','t':datetime('2000-01-01T01:00:00'),'event':'e1'},{'r':2,'uid':'1a2b','t':datetime('2000-01-01T01:01:00'),'event':'e2'},{'r':3,'uid':'3c4d','t':datetime('2000-01-01T01:02:00'),'event':'e1'},{'r':4,'uid':'3c4d','t':datetime('2000-01-01T01:03:00'),'event':'e3'},{'r':5,'uid':'1a2b','t':datetime('2000-01-01T01:04:00'),'event':'e1'},{'r':6,'uid':'1a2b','t':datetime('2000-01-01T01:05:00'),'event':'e4'}}}
 select element {'u':u,'recs':(
-        select element srec
-        from  s as srec
+        select element srec.s
+        from  g as srec
     )}
 from  sample as s
 group by s.uid as u
+group as g
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-01-error/core-01-error.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-01-error/core-01-error.1.ddl.sqlpp
new file mode 100644
index 0000000..7cb4811
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-01-error/core-01-error.1.ddl.sqlpp
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+
+DROP DATAVERSE gby IF EXISTS;
+CREATE DATAVERSE gby;
+
+USE gby;
+
+CREATE TYPE EmpType AS {
+  name : string
+}
+
+CREATE DATASET Employee(EmpType) PRIMARY KEY name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-01-error/core-01-error.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-01-error/core-01-error.2.update.sqlpp
new file mode 100644
index 0000000..a3c4c35
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-01-error/core-01-error.2.update.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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 gby;
+
+INSERT INTO Employee (
+  [
+   { 'name': 'Bill',
+     'deptno': 'K55',
+     'salary': 2000 },
+
+   { 'name': 'Fred',
+     'deptno': 'K55',
+     'salary': 3000 }
+  ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-01-error/core-01-error.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-01-error/core-01-error.3.query.sqlpp
new file mode 100644
index 0000000..56b042c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-01-error/core-01-error.3.query.sqlpp
@@ -0,0 +1,29 @@
+/*
+ * 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 gby;
+
+
+FROM Employee e
+GROUP BY e.deptno AS deptno
+SELECT ELEMENT {
+  'deptno': deptno,
+  'avgpay': coll_avg( (FROM e AS i SELECT ELEMENT i.salary) ),
+  'workers': (FROM e AS i SELECT ELEMENT  {'name': i.name, 'salary': i.salary})
+};
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-02-error/core-02-error.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-02-error/core-02-error.1.ddl.sqlpp
new file mode 100644
index 0000000..7cb4811
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-02-error/core-02-error.1.ddl.sqlpp
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+
+DROP DATAVERSE gby IF EXISTS;
+CREATE DATAVERSE gby;
+
+USE gby;
+
+CREATE TYPE EmpType AS {
+  name : string
+}
+
+CREATE DATASET Employee(EmpType) PRIMARY KEY name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-02-error/core-02-error.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-02-error/core-02-error.2.update.sqlpp
new file mode 100644
index 0000000..a3c4c35
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-02-error/core-02-error.2.update.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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 gby;
+
+INSERT INTO Employee (
+  [
+   { 'name': 'Bill',
+     'deptno': 'K55',
+     'salary': 2000 },
+
+   { 'name': 'Fred',
+     'deptno': 'K55',
+     'salary': 3000 }
+  ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-02-error/core-02-error.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-02-error/core-02-error.3.query.sqlpp
new file mode 100644
index 0000000..b752fe0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/core-02-error/core-02-error.3.query.sqlpp
@@ -0,0 +1,30 @@
+/*
+ * 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 gby;
+
+
+FROM Employee e
+GROUP BY e.deptno AS deptno
+GROUP AS g(e as f)
+SELECT ELEMENT {
+  'deptno': deptno,
+  'avgpay': coll_avg( (FROM f AS i SELECT ELEMENT i.salary) ),
+  'workers': (FROM f AS i SELECT ELEMENT  {'name': i.name, 'salary': i.salary})
+};
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/having-2/having-2.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/having-2/having-2.3.query.sqlpp
index 7522795..8600077 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/having-2/having-2.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/having-2/having-2.3.query.sqlpp
@@ -23,6 +23,6 @@
     JOIN Incentive i ON e.job_category = i.job_category
     JOIN SuperStars s ON e.id = s.id
 GROUP BY e.department_id GROUP AS g
-HAVING coll_count( ( SELECT VALUE e FROM g) )>0
+HAVING coll_count( ( SELECT VALUE g.e FROM g) )>0
 SELECT e.department_id as deptId, SUM(e.salary + i.bonus) AS star_cost;
 
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/sugar-01-negative/sugar-01-negative.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/sugar-01-negative/sugar-01-negative.3.query.sqlpp
index e278914..2bc83ef 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/sugar-01-negative/sugar-01-negative.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/sugar-01-negative/sugar-01-negative.3.query.sqlpp
@@ -23,5 +23,5 @@
 // cannot be used like a SQL-92 sugar, e.g., AVG. Its input must be a collection.
 FROM Employee e
 GROUP BY e.deptno AS deptno GROUP AS g
-SELECT deptno AS deptno, COLL_AVG(e.salary) AS avgpay,
+SELECT deptno AS deptno, COLL_AVG(g.e.salary) AS avgpay,
        (SELECT i.e.name AS name, i.e.salary AS salary FROM g AS i) AS workers;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/sugar-04-2/sugar-04-2.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/sugar-04-2/sugar-04-2.3.query.sqlpp
index 4ba84b7..3852109 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/sugar-04-2/sugar-04-2.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/sugar-04-2/sugar-04-2.3.query.sqlpp
@@ -22,10 +22,11 @@
 FROM  Employee e, Incentive i
 WHERE e.job_category = i.job_category
 GROUP BY e.department_id
+GROUP AS g
 SELECT e.department_id AS deptId,
-     (  FROM i AS i
-        SELECT i.job_category AS category, i.bonus AS bonus
-        ORDER BY i.bonus DESC LIMIT 3
+     (  FROM g AS g
+        SELECT g.i.job_category AS category, g.i.bonus AS bonus
+        ORDER BY g.i.bonus DESC LIMIT 3
       ) AS job_category_details
 ORDER BY deptId DESC;
 
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/sugar-04/sugar-04.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/sugar-04/sugar-04.3.query.sqlpp
index d8fb8c9..abc02ea 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/sugar-04/sugar-04.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/sugar-04/sugar-04.3.query.sqlpp
@@ -22,10 +22,11 @@
 FROM  Employee e, Incentive i
 WHERE e.job_category = i.job_category
 GROUP BY e.department_id AS deptId
+GROUP AS g
 SELECT deptId AS deptId,
-     (  FROM i AS i
-        SELECT i.job_category AS category, i.bonus AS bonus
-        ORDER BY i.bonus DESC LIMIT 3
+     (  FROM g AS g
+        SELECT g.i.job_category AS category, g.i.bonus AS bonus
+        ORDER BY g.i.bonus DESC LIMIT 3
       ) AS job_category_details
 ORDER BY deptId DESC;
 
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hdfs/hdfs_02/hdfs_02.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hdfs/hdfs_02/hdfs_02.3.query.sqlpp
index ef54a7e..358eeda 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hdfs/hdfs_02/hdfs_02.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hdfs/hdfs_02/hdfs_02.3.query.sqlpp
@@ -26,9 +26,10 @@
 use test;
 
 
-select element {'word':tok,'count':test.coll_count(token)}
+select element {'word':tok,'count':test.coll_count(( from g select value token ))}
 from  TextDataset as line,
       test.`word-tokens`(line.content) as token
 group by token as tok
+group as g
 order by tok
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hdfs/hdfs_03/hdfs_03.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hdfs/hdfs_03/hdfs_03.3.query.sqlpp
index da1ffb5..fb67e5b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hdfs/hdfs_03/hdfs_03.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hdfs/hdfs_03/hdfs_03.3.query.sqlpp
@@ -28,9 +28,10 @@
 use test;
 
 
-select element {'word':tok,'count':test.coll_count(token)}
+select element {'word':tok,'count':test.coll_count((from g select value token))}
 from  TextDataset as line,
       test.`word-tokens`(line.content) as token
 group by token as tok
+group as g
 order by tok
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hdfs/hdfs_shortcircuit/hdfs_shortcircuit.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hdfs/hdfs_shortcircuit/hdfs_shortcircuit.3.query.sqlpp
index 3fe03f1..998dd43 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hdfs/hdfs_shortcircuit/hdfs_shortcircuit.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hdfs/hdfs_shortcircuit/hdfs_shortcircuit.3.query.sqlpp
@@ -27,9 +27,10 @@
 use test;
 
 
-select element {'word':tok,'count':test.coll_count(token)}
+select element {'word':tok,'count':test.coll_count((from g select value token))}
 from  TextDataset as line,
       test.`word-tokens`(line.content) as token
 group by token as tok
+group as g
 order by tok
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hints/issue_251_dataset_hint_6/issue_251_dataset_hint_6.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hints/issue_251_dataset_hint_6/issue_251_dataset_hint_6.3.query.sqlpp
index 97e4186..b889ba9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hints/issue_251_dataset_hint_6/issue_251_dataset_hint_6.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/hints/issue_251_dataset_hint_6/issue_251_dataset_hint_6.3.query.sqlpp
@@ -27,9 +27,10 @@
 use test;
 
 
-select element {'word':tok,'count':test.coll_count(token)}
+select element {'word':tok,'count':test.coll_count((from g select value token))}
 from  TextDataset as line,
       test.`word-tokens`(line.content) as token
 group by token as tok
+group as g
 order by tok
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/groupby-orderby-count/groupby-orderby-count.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/groupby-orderby-count/groupby-orderby-count.3.query.sqlpp
index ea20ddf..075bfb8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/groupby-orderby-count/groupby-orderby-count.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/groupby-orderby-count/groupby-orderby-count.3.query.sqlpp
@@ -20,9 +20,10 @@
 use twitter;
 
 
-select element {'word':tok,'count':twitter.coll_count(token)}
+select element {'word':tok,'count':twitter.coll_count(( from g select value token ))}
 from  TwitterData as t,
-      twitter.`word-tokens`(t.text) as token
+      `word-tokens`(t.text) as token
 group by token as tok
-order by twitter.coll_count(token) desc,tok
+group as g
+order by coll_count(( from g select value token )) desc,tok
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-closed/query-issue456/query-issue456.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-closed/query-issue456/query-issue456.3.query.sqlpp
index 5eb9a68..341481a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-closed/query-issue456/query-issue456.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-closed/query-issue456/query-issue456.3.query.sqlpp
@@ -26,9 +26,10 @@
 use test;
 
 
-select element [x.int_m,test.count(id)]
+select element [x.int_m, coll_count(( from g select value x ))]
 from  DataOpen as x
-with  id as x.id
+let id = x.id
 group by x.int_m
+group as g
 order by x.int_m
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/semistructured/count-nullable/count-nullable.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/semistructured/count-nullable/count-nullable.3.query.sqlpp
index 7102a14..9705de5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/semistructured/count-nullable/count-nullable.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/semistructured/count-nullable/count-nullable.3.query.sqlpp
@@ -20,8 +20,9 @@
 use test;
 
 
-select element {'custage':age,'count':test.coll_count(c)}
+select element {'custage':age,'count': coll_count(( from g select value c))}
 from  Customers as c
 group by c.age as age
+group as g
 order by age
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.3.query.sqlpp
index feaa109..63442c4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.3.query.sqlpp
@@ -22,10 +22,11 @@
 
 select element {'cell':c,'count':num}
 from  TwitterData as t
-with  keywords as 'Allergies',
-      region as test.polygon('\n\t33.80503407287759,-126.41235263538363 \n\t44.9090773200516,-126.41235263538363 \n\t44.9090773200516,-87.65258701038363 \n\t33.80503407287759,-87.65258701038363')
-where (test.`spatial-intersect`(t.loc,region) and (t.time > test.datetime('2011-05-15T00:00:00Z')) and (t.time < test.datetime('2011-05-16T23:59:59Z')) and test.contains(t.text,keywords))
-group by test.`spatial-cell`(t.loc,test.`create-point`(24.5,-125.5),3.0,3.0) as c
-with  num as test.coll_count(t)
+let  keywords = 'Allergies',
+      region = polygon('\n\t33.80503407287759,-126.41235263538363 \n\t44.9090773200516,-126.41235263538363 \n\t44.9090773200516,-87.65258701038363 \n\t33.80503407287759,-87.65258701038363')
+where (`spatial-intersect`(t.loc,region) and (t.time > datetime('2011-05-15T00:00:00Z')) and (t.time < datetime('2011-05-16T23:59:59Z')) and contains(t.text,keywords))
+group by `spatial-cell`(t.loc,`create-point`(24.5,-125.5),3.0,3.0) as c
+group as g
+let num = coll_count((from g select value t))
 order by num
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/spatial/cell-aggregation/cell-aggregation.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/spatial/cell-aggregation/cell-aggregation.3.query.sqlpp
index 7d7cfc8..eac020a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/spatial/cell-aggregation/cell-aggregation.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/spatial/cell-aggregation/cell-aggregation.3.query.sqlpp
@@ -23,8 +23,9 @@
 with  grid as (
       select element {'cell':c,'count':num}
       from  MyData as o
-      group by test.`spatial-cell`(o.loc,test.`create-point`(0.0,0.0),5.0,5.0) as c
-      with  num as test.coll_count(o)
+      group by `spatial-cell`(o.loc, `create-point`(0.0,0.0),5.0,5.0) as c
+      group as g
+      let  num = coll_count(( from g select value o ))
       order by num
   )
 select element g
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temp-dataset/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temp-dataset/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp
index 1d4cc5b..4a5eae4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temp-dataset/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temp-dataset/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp
@@ -27,28 +27,15 @@
 
 set `import-private-functions` `true`;
 
-select element {'l_returnflag':l_returnflag,'l_linestatus':l_linestatus,'sum_qty':tpch.coll_sum((
-        select element i.l_quantity
-        from  l as i
-    )),'sum_base_price':tpch.coll_sum((
-        select element i.l_extendedprice
-        from  l as i
-    )),'sum_disc_price':tpch.coll_sum((
-        select element (i.l_extendedprice * (1 - i.l_discount))
-        from  l as i
-    )),'sum_charge':tpch.coll_sum((
-        select element (i.l_extendedprice * (1 - i.l_discount) * (1 + i.l_tax))
-        from  l as i
-    )),'ave_qty':tpch.coll_avg((
-        select element i.l_quantity
-        from  l as i
-    )),'ave_price':tpch.coll_avg((
-        select element i.l_extendedprice
-        from  l as i
-    )),'ave_disc':tpch.coll_avg((
-        select element i.l_discount
-        from  l as i
-    )),'count_order':tpch.coll_count(l)}
+select element {'l_returnflag':l_returnflag,'l_linestatus':l_linestatus,
+    'sum_qty': sum(l.l_quantity),
+    'sum_base_price': sum(l.l_extendedprice),
+    'sum_disc_price': sum(l.l_extendedprice * (1 - l.l_discount)),
+    'sum_charge': sum(l.l_extendedprice * (1 - l.l_discount) * (1 + l.l_tax)),
+    'ave_qty': avg(l.l_quantity),
+    'ave_price': avg(l.l_extendedprice),
+    'ave_disc': avg(l.l_discount),
+    'count_order': count(*)}
 from  LineItem as l
 where (l.l_shipdate <= '1998-09-02')
 /* +hash */
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.query.sqlpp
index 40fcaea..07fa4fa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.query.sqlpp
@@ -26,12 +26,13 @@
 
 select element {'tbin':gen0.bin,'interval':itv,'overlap':test.`get-overlapping-interval`(gen0.bin,itv)}
 from
-    ( select element {'bin':bin,'i':i}
+    ( select element {'bin':bin,'i': (from g select value i) }
       from (select element i from tsdata as i order by i.time) as i,
             test.`overlap-bins`(test.`interval-start-from-time`(i.time,i.duration),test.time('00:00:00'),test.`day_time_duration`('PT1H30M')) as j
       group by j as bin
+      group as g
       order by `get-interval-start`(bin)
     ) as gen0,
     gen0.i as x
-with itv as test.`interval-start-from-time`(x.time,x.duration)
+let itv = test.`interval-start-from-time`(x.time,x.duration)
 order by test.`get-interval-start`(gen0.bin);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.query.sqlpp
index 941ecbc..ce3159a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.query.sqlpp
@@ -24,16 +24,19 @@
 use test;
 
 
-select element {'timebin':bin,'count':count(i2),'total_ms':coll_sum((
-        select element `ms_from_day_time_duration`(`duration-from-interval`(`get-overlapping-interval`(bin,i3.interval)))
-        from  i2 as i3
+select element {'timebin':bin,
+    'count':count((select value 1 from g)),
+    'total_ms':coll_sum((
+        select element
+        `ms_from_day_time_duration`(`duration-from-interval`(`get-overlapping-interval`(bin, g.i2.interval)))
+        from g
     ))}
 from  (
     select element {'interval':`interval-start-from-time`(i1.time,i1.duration)}
     from  tsdata as i1
     order by i1.time
-) as i2,
-      `overlap-bins`(i2.interval,time('00:00:00'),`day_time_duration`('PT1H30M')) as j
+) as i2, `overlap-bins`(i2.interval,time('00:00:00'),`day_time_duration`('PT1H30M')) as j
 group by j as bin
+group as g
 order by `get-interval-start`(bin)
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/query-ASTERIXDB-1063.23.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/query-ASTERIXDB-1063.23.query.sqlpp
index c6afab6..0cad34a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/query-ASTERIXDB-1063.23.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/query-ASTERIXDB-1063.23.query.sqlpp
@@ -19,12 +19,13 @@
 use TinySocial;
 
 select h as `hour`,
-       count(t) as `count`,
+       count(*) as `count`,
        (
-         select min as `minute`, count(k) as `sum`
-         from t as k
-         group by `get-minute`(k.`send-time`) as min
+         select min as `minute`, count(*) as `sum`
+         from g as k
+         group by `get-minute`(k.t.`send-time`) as min
          order by min
        ) as `finer`
 from TweetMessages as t
-group by `get-hour`(t.`send-time`) as h;
+group by `get-hour`(t.`send-time`) as h
+group as g;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.15.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.15.query.sqlpp
index feec968..598d509 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.15.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.15.query.sqlpp
@@ -23,7 +23,7 @@
 use TinySocial;
 
 
-select element {'user':uid,'count':TinySocial.count(t)}
+select element {'user':uid,'count':TinySocial.count(*)}
 from  TweetMessages as t
 group by t.user.`screen-name` as uid
 order by uid
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.16.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.16.query.sqlpp
index f275bc4..3d114fb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.16.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.16.query.sqlpp
@@ -23,7 +23,7 @@
 use TinySocial;
 
 
-select element {'user':uid,'count':TinySocial.count(t)}
+select element {'user':uid,'count':TinySocial.count(*)}
 from  TweetMessages as t
 /* +hash */
 group by t.user.`screen-name` as uid
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.17.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.17.query.sqlpp
index 8ad2c9f..c81a86e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.17.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.17.query.sqlpp
@@ -26,7 +26,7 @@
 select element {'user':uid,'count':c}
 from  TweetMessages as t
 group by t.user.`screen-name` as uid
-with  c as TinySocial.count(t)
+with  c as TinySocial.count(*)
 order by c,uid desc
 limit 3
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/query-ASTERIXDB-1063.23.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/query-ASTERIXDB-1063.23.query.sqlpp
index c6afab6..8ba39bc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/query-ASTERIXDB-1063.23.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/query-ASTERIXDB-1063.23.query.sqlpp
@@ -19,12 +19,14 @@
 use TinySocial;
 
 select h as `hour`,
-       count(t) as `count`,
+       count(*) as `count`,
        (
-         select min as `minute`, count(k) as `sum`
-         from t as k
-         group by `get-minute`(k.`send-time`) as min
+         select min as `minute`, count(*) as `sum`
+         from g as k
+         group by `get-minute`(k.t.`send-time`) as min
          order by min
        ) as `finer`
 from TweetMessages as t
-group by `get-hour`(t.`send-time`) as h;
+group by `get-hour`(t.`send-time`) as h
+group as g
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.15.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.15.query.sqlpp
index feec968..598d509 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.15.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.15.query.sqlpp
@@ -23,7 +23,7 @@
 use TinySocial;
 
 
-select element {'user':uid,'count':TinySocial.count(t)}
+select element {'user':uid,'count':TinySocial.count(*)}
 from  TweetMessages as t
 group by t.user.`screen-name` as uid
 order by uid
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.16.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.16.query.sqlpp
index f275bc4..3d114fb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.16.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.16.query.sqlpp
@@ -23,7 +23,7 @@
 use TinySocial;
 
 
-select element {'user':uid,'count':TinySocial.count(t)}
+select element {'user':uid,'count':TinySocial.count(*)}
 from  TweetMessages as t
 /* +hash */
 group by t.user.`screen-name` as uid
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.17.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.17.query.sqlpp
index 8ad2c9f..f1c82e3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.17.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.17.query.sqlpp
@@ -26,7 +26,7 @@
 select element {'user':uid,'count':c}
 from  TweetMessages as t
 group by t.user.`screen-name` as uid
-with  c as TinySocial.count(t)
+let  c = TinySocial.count(*)
 order by c,uid desc
 limit 3
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpcds/q24a/q24a.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpcds/q24a/q24a.3.query.sqlpp
index 1286f34..9456961 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpcds/q24a/q24a.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpcds/q24a/q24a.3.query.sqlpp
@@ -65,6 +65,6 @@
 GROUP BY c_last_name
         ,c_first_name
         ,s_store_name
-HAVING paid > (SELECT value (0.05*avg(netpaid))
-                                 FROM ssales)[0]
+GROUP AS g
+HAVING paid > (SELECT value 0.05*avg(g.ssales.netpaid) FROM g)[0]
 ;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpcds/q24b/q24b.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpcds/q24b/q24b.3.query.sqlpp
index 07fa88f..0c80d1d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpcds/q24b/q24b.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpcds/q24b/q24b.3.query.sqlpp
@@ -65,6 +65,6 @@
 GROUP BY c_last_name
         ,c_first_name
         ,s_store_name
-HAVING SUM(netpaid) > (SELECT value (0.05*avg(netpaid))
-                           FROM ssales)[0]
+GROUP AS g
+HAVING paid > (SELECT value 0.05*avg(g.ssales.netpaid) FROM g)[0]
 ;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp
index ae276b5..e42ce21 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp
@@ -19,34 +19,34 @@
 
 use tpch;
 
+set hash_merge "true"
 
-set `import-private-functions` `true`;
-
-select element {'l_returnflag':l_returnflag,'l_linestatus':l_linestatus,'sum_qty':tpch.coll_sum((
-        select element i.l_quantity
-        from  l as i
-    )),'sum_base_price':tpch.coll_sum((
-        select element i.l_extendedprice
-        from  l as i
-    )),'sum_disc_price':tpch.coll_sum((
-        select element (i.l_extendedprice * (1 - i.l_discount))
-        from  l as i
-    )),'sum_charge':tpch.coll_sum((
-        select element (i.l_extendedprice * (1 - i.l_discount) * (1 + i.l_tax))
-        from  l as i
-    )),'ave_qty':tpch.coll_avg((
-        select element i.l_quantity
-        from  l as i
-    )),'ave_price':tpch.coll_avg((
-        select element i.l_extendedprice
-        from  l as i
-    )),'ave_disc':tpch.coll_avg((
-        select element i.l_discount
-        from  l as i
-    )),'count_order':tpch.count(l)}
+select element {'l_returnflag':l_returnflag,'l_linestatus':l_linestatus,'sum_qty':COLL_SUM((
+        select element i.l.l_quantity
+        from  g as i
+    )),'sum_base_price':COLL_SUM((
+        select element i.l.l_extendedprice
+        from  g as i
+    )),'sum_disc_price':COLL_SUM((
+        select element (i.l.l_extendedprice * (1 - i.l.l_discount))
+        from  g as i
+    )),'sum_charge':COLL_SUM((
+        select element (i.l.l_extendedprice * (1 - i.l.l_discount) * (1 + i.l.l_tax))
+        from  g as i
+    )),'ave_qty':COLL_AVG((
+        select element i.l.l_quantity
+        from  g as i
+    )),'ave_price':COLL_AVG((
+        select element i.l.l_extendedprice
+        from g as i
+    )),'ave_disc':COLL_AVG((
+        select element i.l.l_discount
+        from  g as i
+    )),'count_order':COLL_COUNT(( from g select value l ))}
 from  LineItem as l
 where (l.l_shipdate <= '1998-09-02')
 /* +hash */
 group by l.l_returnflag as l_returnflag,l.l_linestatus as l_linestatus
+group as g
 order by l_returnflag,l_linestatus
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.query.sqlpp
index cbb55c4..24180d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.query.sqlpp
@@ -45,9 +45,9 @@
 };
 declare function tmp2() {
 (
-    select element {'p_partkey':p_partkey,'ps_min_supplycost':tpch.coll_min((
-            select element i.ps_supplycost
-            from  pssrn as i
+    select element {'p_partkey':p_partkey,'ps_min_supplycost':COLL_MIN((
+            select element i.pssrn.ps_supplycost
+            from  g as i
         ))}
     from  Part as p,
           (
@@ -69,6 +69,7 @@
     where p.p_partkey = pssrn.p_partkey and p.p_type like '%BRASS'
     /* +hash */
     group by pssrn.p_partkey as p_partkey
+    group as g
 )
 };
 select element {'s_acctbal':t1.s_acctbal,'s_name':t1.s_name,'n_name':t1.n_name,'p_partkey':t1.p_partkey,'p_mfgr':t1.p_mfgr,'s_address':t1.s_address,'s_phone':t1.s_phone,'s_comment':t1.s_comment}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q03_shipping_priority_nt/q03_shipping_priority_nt.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q03_shipping_priority_nt/q03_shipping_priority_nt.3.query.sqlpp
index bddbb53..f076d71 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q03_shipping_priority_nt/q03_shipping_priority_nt.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q03_shipping_priority_nt/q03_shipping_priority_nt.3.query.sqlpp
@@ -27,9 +27,10 @@
 where (((c.c_mktsegment = 'BUILDING') and (c.c_custkey = o.o_custkey)) and ((l.l_orderkey = o.o_orderkey) and (o.o_orderdate < '1995-03-15') and (l.l_shipdate > '1995-03-15')))
 /* +hash */
 group by l.l_orderkey as l_orderkey,o.o_orderdate as o_orderdate,o.o_shippriority as o_shippriority
-with  revenue as tpch.coll_sum((
+group as g
+let  revenue = COLL_SUM((
       select element (i.l_extendedprice * (1 - i.l_discount))
-      from  l as i
+      from (from g select value l) as i
   ))
 order by revenue desc,o_orderdate
 limit 10
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q04_order_priority/q04_order_priority.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q04_order_priority/q04_order_priority.3.query.sqlpp
index 5293499..81c19c9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q04_order_priority/q04_order_priority.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q04_order_priority/q04_order_priority.3.query.sqlpp
@@ -27,7 +27,7 @@
     where (l.l_commitdate < l.l_receiptdate)
 )
 };
-select element {'order_priority':o_orderpriority,'count':COLL_COUNT(o)}
+select element {'order_priority':o_orderpriority,'count': count(*)}
 from  Orders as o,
       tpch.tmp() as t
 where ((o.o_orderkey = t.o_orderkey) and (o.o_orderdate >= '1993-07-01') and (o.o_orderdate < '1993-10-01'))
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q05_local_supplier_volume/q05_local_supplier_volume.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q05_local_supplier_volume/q05_local_supplier_volume.3.query.sqlpp
index 9050001..b82242e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q05_local_supplier_volume/q05_local_supplier_volume.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q05_local_supplier_volume/q05_local_supplier_volume.3.query.sqlpp
@@ -46,9 +46,10 @@
 where ((c.c_nationkey = o1.s_nationkey) and (c.c_custkey = o1.o_custkey))
 /* +hash */
 group by o1.n_name as n_name
-with  revenue as tpch.coll_sum((
+group as g
+let revenue = COLL_SUM((
       select element (i.l_extendedprice * (1 - i.l_discount))
-      from  o1 as i
+      from  (from g select value o1) as i
   ))
 order by revenue desc
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q06_forecast_revenue_change/q06_forecast_revenue_change.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q06_forecast_revenue_change/q06_forecast_revenue_change.3.query.sqlpp
index 94ee1cd..b35e791 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q06_forecast_revenue_change/q06_forecast_revenue_change.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q06_forecast_revenue_change/q06_forecast_revenue_change.3.query.sqlpp
@@ -24,4 +24,4 @@
 from  LineItem as l
 where l.l_shipdate >= '1994-01-01' and l.l_shipdate < '1995-01-01' and l.l_discount >= 0.05
   and l.l_discount <= 0.07 and l.l_quantity < 24
-;
+;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q07_volume_shipping/q07_volume_shipping.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q07_volume_shipping/q07_volume_shipping.3.query.sqlpp
index deeec6b..b6344b2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q07_volume_shipping/q07_volume_shipping.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q07_volume_shipping/q07_volume_shipping.3.query.sqlpp
@@ -49,9 +49,10 @@
 with  l_year0 as tpch.`get-year`(locs.l_shipdate)
 where ((locs.c_nationkey = t.c_nationkey) and (locs.s_nationkey = t.s_nationkey))
 group by t.supp_nation as supp_nation,t.cust_nation as cust_nation,l_year0 as l_year
-with  revenue as tpch.coll_sum((
-      select element (i.l_extendedprice * (1 - i.l_discount))
-      from  locs as i
+group as g
+let  revenue = COLL_SUM((
+      select element (i.locs.l_extendedprice * (1 - i.locs.l_discount))
+      from  g as i
   ))
 order by supp_nation,cust_nation,l_year
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q08_national_market_share/q08_national_market_share.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q08_national_market_share/q08_national_market_share.3.query.sqlpp
index a8b4bac..3aea572 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q08_national_market_share/q08_national_market_share.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q08_national_market_share/q08_national_market_share.3.query.sqlpp
@@ -21,11 +21,11 @@
 
 
 select element {'year':year,'mkt_share':(tpch.coll_sum((
-          select element case when i.s_name = 'BRAZIL' then i.revenue else 0.0 end
-          from  t as i
+          select element case when i.t.s_name = 'BRAZIL' then i.t.revenue else 0.0 end
+          from  g as i
       )) / tpch.coll_sum((
-          select element i.revenue
-          from  t as i
+          select element i.t.revenue
+          from  g as i
       )))}
 from  (
     select element {'year':o_year,'revenue':(slnrcop.l_extendedprice * (1 - slnrcop.l_discount)),'s_name':n2.n_name}
@@ -65,5 +65,6 @@
     where (slnrcop.s_nationkey = n2.n_nationkey)
 ) as t
 group by t.year as year
+group as g
 order by year
-;
+;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q09_product_type_profit_nt/q09_product_type_profit_nt.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q09_product_type_profit_nt/q09_product_type_profit_nt.3.query.sqlpp
index aa5ccf7..6dfd5af 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q09_product_type_profit_nt/q09_product_type_profit_nt.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q09_product_type_profit_nt/q09_product_type_profit_nt.3.query.sqlpp
@@ -21,8 +21,8 @@
 
 
 select element {'nation':nation,'o_year':o_year,'sum_profit':COLL_SUM((
-        select element pr.amount
-        from  profit as pr
+        select element pr.profit.amount
+        from  g as pr
     ))}
 from  (
     select element {'nation':l3.n_name,'o_year':o_year,'amount':amount}
@@ -48,10 +48,11 @@
         ) as l2
         where (tpch.contains(p.p_name,'green') and (p.p_partkey = l2.l_partkey))
     ) as l3
-    with  amount as ((l3.l_extendedprice * (1 - l3.l_discount)) - (l3.ps_supplycost * l3.l_quantity)),
-          o_year as tpch.`get-year`(o.o_orderdate)
+    let  amount = ((l3.l_extendedprice * (1 - l3.l_discount)) - (l3.ps_supplycost * l3.l_quantity)),
+          o_year = tpch.`get-year`(o.o_orderdate)
     where (o.o_orderkey = l3.l_orderkey)
 ) as profit
 group by profit.nation as nation,profit.o_year as o_year
+group as g
 order by nation,o_year desc
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q10_returned_item/q10_returned_item.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q10_returned_item/q10_returned_item.3.query.sqlpp
index cce248c..6038d15 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q10_returned_item/q10_returned_item.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q10_returned_item/q10_returned_item.3.query.sqlpp
@@ -34,9 +34,10 @@
     where ((l.l_orderkey = ocn.o_orderkey) and (l.l_selectflag = 'R'))
 ) as locn
 group by locn.c_custkey as c_custkey,locn.c_name as c_name,locn.c_acctbal as c_acctbal,locn.c_phone as c_phone,locn.n_name as n_name,locn.c_address as c_address,locn.c_comment as c_comment
-with  revenue as COLL_SUM((
+group as g
+let revenue = COLL_SUM((
       select element (i.l_extendedprice * (1 - i.l_discount))
-      from  locn as i
+      from  (from g select value locn) as i
   ))
 order by revenue desc
 limit 20
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q10_returned_item_int64/q10_returned_item_int64.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q10_returned_item_int64/q10_returned_item_int64.3.query.sqlpp
index cce248c..3a6ac4a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q10_returned_item_int64/q10_returned_item_int64.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q10_returned_item_int64/q10_returned_item_int64.3.query.sqlpp
@@ -34,9 +34,10 @@
     where ((l.l_orderkey = ocn.o_orderkey) and (l.l_selectflag = 'R'))
 ) as locn
 group by locn.c_custkey as c_custkey,locn.c_name as c_name,locn.c_acctbal as c_acctbal,locn.c_phone as c_phone,locn.n_name as n_name,locn.c_address as c_address,locn.c_comment as c_comment
-with  revenue as COLL_SUM((
+group as g
+let  revenue = COLL_SUM((
       select element (i.l_extendedprice * (1 - i.l_discount))
-      from  locn as i
+      from  (from g select value locn) as i
   ))
 order by revenue desc
 limit 20
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q11_important_stock/q11_important_stock.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q11_important_stock/q11_important_stock.3.query.sqlpp
index 073835c..2fb8110 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q11_important_stock/q11_important_stock.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q11_important_stock/q11_important_stock.3.query.sqlpp
@@ -20,32 +20,33 @@
 use tpch;
 
 
-with  sum as tpch.coll_sum((
+with  sum as COLL_SUM((
       select element (ps.ps_supplycost * ps.ps_availqty)
       from  Partsupp as ps,
             (
           select element {'s_suppkey':s.s_suppkey}
           from  Supplier as s,
                 Nation as n
-          where (s.s_nationkey = n.n_nationkey)
+          where s.s_nationkey = n.n_nationkey
       ) as sn
-      where (ps.ps_suppkey = sn.s_suppkey)
+      where ps.ps_suppkey = sn.s_suppkey
   ))
 select element {'partkey':t1.ps_partkey,'part_value':t1.part_value}
 from  (
-    select element {'ps_partkey':ps_partkey,'part_value':tpch.coll_sum((
-            select element (i.ps_supplycost * i.ps_availqty)
-            from  ps as i
+    select element {'ps_partkey':ps_partkey,'part_value':COLL_SUM((
+            select element (i.ps.ps_supplycost * i.ps.ps_availqty)
+            from  g as i
         ))}
     from  Partsupp as ps,
           (
         select element {'s_suppkey':s.s_suppkey}
         from  Supplier as s,
               Nation as n
-        where (s.s_nationkey = n.n_nationkey)
+        where s.s_nationkey = n.n_nationkey
     ) as sn
-    where (ps.ps_suppkey = sn.s_suppkey)
+    where ps.ps_suppkey = sn.s_suppkey
     group by ps.ps_partkey as ps_partkey
+    group as g
 ) as t1
 where (t1.part_value > (sum * 0.00001))
 order by t1.part_value desc
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q12_shipping/q12_shipping.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q12_shipping/q12_shipping.3.query.sqlpp
index c576c6c..a98ec6e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q12_shipping/q12_shipping.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q12_shipping/q12_shipping.3.query.sqlpp
@@ -19,23 +19,23 @@
 
 use tpch;
 
-
 select element {'l_shipmode':l_shipmode,'high_line_count':tpch.coll_sum((
-        select element case i.o_orderpriority = '1-URGENT' or i.o_orderpriority = '2-HIGH'
+        select element case i.o.o_orderpriority = '1-URGENT' or i.o.o_orderpriority = '2-HIGH'
                        when true then 1
                        when false then 0
                        end
-        from  o as i
+        from  g as i
     )),'low_line_count':tpch.coll_sum((
-        select element case i.o_orderpriority = '1-URGENT' or i.o_orderpriority = '2-HIGH'
+        select element case i.o.o_orderpriority = '1-URGENT' or i.o.o_orderpriority = '2-HIGH'
                        when true then 0
                        when false then 1
                        end
-        from  o as i
+        from  g as i
     ))}
 from  LineItem as l,
       Orders as o
 where ((o.o_orderkey = l.l_orderkey) and (l.l_commitdate < l.l_receiptdate) and (l.l_shipdate < l.l_commitdate) and (l.l_receiptdate >= '1994-01-01') and (l.l_receiptdate < '1995-01-01') and ((l.l_shipmode = 'MAIL') or (l.l_shipmode = 'SHIP')))
 group by l.l_shipmode as l_shipmode
+group as g
 order by l_shipmode
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q13_customer_distribution/q13_customer_distribution.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q13_customer_distribution/q13_customer_distribution.3.query.sqlpp
index 24f4f46..4823a39 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q13_customer_distribution/q13_customer_distribution.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q13_customer_distribution/q13_customer_distribution.3.query.sqlpp
@@ -24,9 +24,9 @@
 
 select element {'c_count':c_count,'custdist':custdist}
 from  (
-    select element {'c_custkey':c_custkey,'c_count':tpch.coll_sum((
+    select element {'c_custkey':c_custkey,'c_count':COLL_SUM((
             select element i.o_orderkey_count
-            from  co as i
+            from (select value co from g2) as i
         ))}
     from  (
         select element {'c_custkey':c.c_custkey,'o_orderkey_count':coll_count((
@@ -37,8 +37,10 @@
         from  Customer as c
     ) as co
     group by co.c_custkey as c_custkey
+    group as g2
 ) as gco
 group by gco.c_count as c_count
-with  custdist as tpch.count(gco)
+group as g
+let  custdist = count(( select value gco from g ))
 order by custdist desc,c_count desc
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q14_promotion_effect/q14_promotion_effect.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q14_promotion_effect/q14_promotion_effect.3.query.sqlpp
index 445da07..2ec6a9c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q14_promotion_effect/q14_promotion_effect.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q14_promotion_effect/q14_promotion_effect.3.query.sqlpp
@@ -20,19 +20,16 @@
 use tpch;
 
 
-select element (100.0 * tpch.coll_sum((
-      select element case i.p_type like 'PROMO%'
-                     when true then i.l_extendedprice * (1 - i.l_discount)
-                     when false then 0.0
-                     end
-      from  lp as i
-  )) / tpch.coll_sum((
+select element (100.0 * COLL_SUM((
+      select element case i.p_type like 'PROMO%' when true then i.l_extendedprice * (1 - i.l_discount) else 0.0 end
+      from (from g select value lp) as i
+  )) / COLL_SUM((
       select element (i.l_extendedprice * (1 - i.l_discount))
-      from  lp as i
+      from (from g select value lp) as i
   )))
 from  LineItem as l,
       Part as p
 let lp = {'p_type': p.p_type, 'l_extendedprice': l.l_extendedprice, 'l_discount': l.l_discount}
-where ((l.l_partkey = p.p_partkey) and (l.l_shipdate >= '1995-09-01') and (l.l_shipdate < '1995-10-01'))
-group by 1 as t group as g(lp as lp)
-;
+where l.l_partkey = p.p_partkey and l.l_shipdate >= '1995-09-01' and l.l_shipdate < '1995-10-01'
+group by 1 as t
+group as g(lp as lp);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q15_top_supplier/q15_top_supplier.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q15_top_supplier/q15_top_supplier.3.query.sqlpp
index fdc4fcc..acd8537 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q15_top_supplier/q15_top_supplier.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q15_top_supplier/q15_top_supplier.3.query.sqlpp
@@ -22,21 +22,22 @@
 
 declare function revenue() {
 (
-    select element {'supplier_no':l_suppkey,'total_revenue':tpch.coll_sum((
-            select element (i.l_extendedprice * (1 - i.l_discount))
-            from  l as i
+    select element {'supplier_no':l_suppkey,'total_revenue':COLL_SUM((
+            select element (i.l.l_extendedprice * (1 - i.l.l_discount))
+            from g as i
         ))}
     from  LineItem as l
-    where ((l.l_shipdate >= '1996-01-01') and (l.l_shipdate < '1996-04-01'))
+    where l.l_shipdate >= '1996-01-01' and l.l_shipdate < '1996-04-01'
     group by l.l_suppkey as l_suppkey
+    group as g
 )
 };
-with  m as tpch.coll_max((
+with  m as COLL_MAX((
       select element r2.total_revenue
-      from  tpch.revenue() as r2
+      from  revenue() as r2
   ))
 select element {'s_suppkey':s.s_suppkey,'s_name':s.s_name,'s_address':s.s_address,'s_phone':s.s_phone,'total_revenue':r.total_revenue}
 from  Supplier as s,
       tpch.revenue() as r
-where ((s.s_suppkey = r.supplier_no) and (r.total_revenue < (m + 0.000000001)) and (r.total_revenue > (m - 0.000000001)))
+where s.s_suppkey = r.supplier_no and r.total_revenue < (m + 0.000000001) and r.total_revenue > (m - 0.000000001)
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.query.sqlpp
index 131c8a0..47dc549 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.query.sqlpp
@@ -41,9 +41,10 @@
     group by t.p_brand as p_brand1,t.p_type as p_type1,t.p_size as p_size1,t.ps_suppkey as ps_suppkey1
 ) as t2
 group by t2.p_brand as p_brand,t2.p_type as p_type,t2.p_size as p_size
-with  supplier_cnt as coll_count((
+group as g
+let  supplier_cnt = COLL_COUNT((
       select element i.ps_suppkey
-      from  t2 as i
+      from  (from g select value t2) as i
   ))
 order by supplier_cnt desc,p_brand,p_type,p_size
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q17_large_gby_variant/q17_large_gby_variant.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q17_large_gby_variant/q17_large_gby_variant.3.query.sqlpp
index 2e057d7..f22d29e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q17_large_gby_variant/q17_large_gby_variant.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q17_large_gby_variant/q17_large_gby_variant.3.query.sqlpp
@@ -20,38 +20,40 @@
 use tpch;
 
 
-select element {'t_partkey':l_partkey,'t_count':tpch.count(l),'t_avg_quantity':(0.2 * tpch.coll_avg((
+select element {'t_partkey':l_partkey,'t_count':COLL_COUNT((from g select value l)),
+    't_avg_quantity':(0.2 * COLL_AVG((
           select element i.l_quantity
-          from  l as i
-      ))),'t_max_suppkey':tpch.coll_max((
+          from  (from g select value l) as i
+    ))),'t_max_suppkey':COLL_MAX((
         select element i.l_suppkey
-        from  l as i
-    )),'t_max_linenumber':tpch.coll_max((
+        from  (from g select value l) as i
+    )),'t_max_linenumber':COLL_MAX((
         select element i.l_linenumber
-        from  l as i
-    )),'t_avg_extendedprice':tpch.coll_avg((
+        from  (from g select value l) as i
+    )),'t_avg_extendedprice':COLL_AVG((
         select element i.l_extendedprice
-        from  l as i
-    )),'t_avg_discount':tpch.coll_avg((
+        from  (from g select value l) as i
+    )),'t_avg_discount':COLL_AVG((
         select element i.l_discount
-        from  l as i
-    )),'t_avg_tax':tpch.coll_avg((
+        from  (from g select value l) as i
+    )),'t_avg_tax':COLL_AVG((
         select element i.l_tax
-        from  l as i
-    )),'t_max_shipdate':tpch.coll_max((
+        from  (from g select value l) as i
+    )),'t_max_shipdate':COLL_MAX((
         select element i.l_shipdate
-        from  l as i
-    )),'t_min_commitdate':tpch.coll_min((
+        from  (from g select value l) as i
+    )),'t_min_commitdate':COLL_MIN((
         select element i.l_commitdate
-        from  l as i
-    )),'t_min_receiptdate':tpch.coll_min((
+        from  (from g select value l) as i
+    )),'t_min_receiptdate':COLL_MIN((
         select element i.l_receiptdate
-        from  l as i
-    )),'t_max_comment':tpch.coll_max((
+        from  (from g select value l) as i
+    )),'t_max_comment':COLL_MAX((
         select element i.l_comment
-        from  l as i
+        from  (from g select value l) as i
     ))}
 from  LineItem as l
 group by l.l_partkey as l_partkey
+group as g
 order by l_partkey
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.query.sqlpp
index 2f48cf3..010d03a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.query.sqlpp
@@ -22,19 +22,20 @@
 
 declare function tmp() {
 (
-    select element {'t_partkey':l_partkey,'t_avg_quantity':(0.2 * COLL_AVG((
+    select element {'t_partkey':l_partkey,'t_avg_quantity':(0.2 * tpch.coll_avg((
               select element i.l_quantity
-              from  l as i
+              from  (from g select value l) as i
           )))}
     from  LineItem as l
     group by l.l_partkey as l_partkey
+    group as g
 )
 };
 
-select element (COLL_SUM((
+select element (coll_sum((
       select element l.l_extendedprice
-      from  LineItem as l,
-            Part as p,
-            tpch.tmp() as t
-      where (((p.p_partkey = l.l_partkey) and (p.p_container = 'MED BOX')) and ((l.l_partkey = t.t_partkey) and (l.l_quantity < t.t_avg_quantity)))
+      from  tmp() as t,
+            LineItem as l,
+            Part as p
+      where p.p_partkey = l.l_partkey and p.p_container = 'MED BOX' and l.l_partkey = t.t_partkey and l.l_quantity < t.t_avg_quantity
   )) / 7.0);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q18_large_volume_customer/q18_large_volume_customer.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q18_large_volume_customer/q18_large_volume_customer.3.query.sqlpp
index 5215013..1a11819 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q18_large_volume_customer/q18_large_volume_customer.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q18_large_volume_customer/q18_large_volume_customer.3.query.sqlpp
@@ -20,23 +20,27 @@
 use tpch;
 
 
-select element {'c_name':c_name,'c_custkey':c_custkey,'o_orderkey':o_orderkey,'o_orderdate':o_orderdate,'o_totalprice':o_totalprice,'sum_quantity':COLL_SUM((
+select element {'c_name':c_name,'c_custkey':c_custkey,'o_orderkey':o_orderkey,'o_orderdate':o_orderdate,'o_totalprice':o_totalprice,'sum_quantity':tpch.coll_sum((
         select element j.l_quantity
-        from  l as j
+        from  (from g select value l) as j
     ))}
 from  Customer as c,
       Orders as o,
       (
-    select element {'l_orderkey':l_orderkey,'t_sum_quantity':COLL_SUM((
+    select element {'l_orderkey':l_orderkey,'t_sum_quantity':tpch.coll_sum((
             select element i.l_quantity
-            from  l as i
+            from  (select value l from g2) as i
         ))}
     from  LineItem as l
     group by l.l_orderkey as l_orderkey
+    group as g2
 ) as t,
       LineItem as l
-where ((c.c_custkey = o.o_custkey) and ((o.o_orderkey = t.l_orderkey) and (t.t_sum_quantity > 30)) and (l.l_orderkey = o.o_orderkey))
-group by c.c_name as c_name,c.c_custkey as c_custkey,o.o_orderkey as o_orderkey,o.o_orderdate as o_orderdate,o.o_totalprice as o_totalprice
+where c.c_custkey = o.o_custkey and o.o_orderkey = t.l_orderkey and t.t_sum_quantity > 30
+      and l.l_orderkey = t.l_orderkey
+group by c.c_name as c_name,c.c_custkey as c_custkey,o.o_orderkey as o_orderkey,o.o_orderdate as o_orderdate,
+         o.o_totalprice as o_totalprice
+group as g
 order by o_totalprice desc,o_orderdate
 limit 100
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q19_discounted_revenue/q19_discounted_revenue.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q19_discounted_revenue/q19_discounted_revenue.3.query.sqlpp
index 9057ccb..df4e276 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q19_discounted_revenue/q19_discounted_revenue.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q19_discounted_revenue/q19_discounted_revenue.3.query.sqlpp
@@ -22,7 +22,7 @@
 
 set `import-private-functions` `true`;
 
-select element coll_sum((
+select element COLL_SUM((
     select element (l.l_extendedprice * (1 - l.l_discount))
     from  LineItem as l,
           Part as p
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q20_potential_part_promotion/q20_potential_part_promotion.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q20_potential_part_promotion/q20_potential_part_promotion.3.query.sqlpp
index 82e38bf..2355162 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q20_potential_part_promotion/q20_potential_part_promotion.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q20_potential_part_promotion/q20_potential_part_promotion.3.query.sqlpp
@@ -24,12 +24,13 @@
 from  (
     select distinct element {'ps_suppkey':pst1.ps_suppkey}
     from  (
-        select element {'l_partkey':l_partkey,'l_suppkey':l_suppkey,'sum_quantity':(0.5 * tpch.coll_sum((
+        select element {'l_partkey':l_partkey,'l_suppkey':l_suppkey,'sum_quantity':(0.5 * COLL_SUM((
                   select element i.l_quantity
-                  from  l as i
+                  from  (from g select value l) as i
               )))}
         from  LineItem as l
         group by l.l_partkey as l_partkey,l.l_suppkey as l_suppkey
+        group as g
     ) as t2,
           (
         select element {'ps_suppkey':ps.ps_suppkey,'ps_partkey':ps.ps_partkey,'ps_availqty':ps.ps_availqty}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.query.sqlpp
index 578d72e..3963de0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.query.sqlpp
@@ -22,12 +22,12 @@
 
 declare function tmp1() {
 (
-    select element {'l_orderkey':l_orderkey,'count_suppkey':COLL_COUNT((
+    select element {'l_orderkey':l_orderkey,'count_suppkey':coll_count((
             select element i.l_suppkey
-            from  l2 as i
-        )),'max_suppkey':tpch.coll_max((
+            from  (from g1 select value g1.l2) as i
+        )),'max_suppkey': coll_max((
             select element i.l_suppkey
-            from  l2 as i
+            from  (from g1 select value g1.l2) as i
         ))}
     from  (
         select element {'l_orderkey':l_orderkey1,'l_suppkey':l_suppkey1}
@@ -35,16 +35,17 @@
         group by l.l_orderkey as l_orderkey1,l.l_suppkey as l_suppkey1
     ) as l2
     group by l2.l_orderkey as l_orderkey
+    group as g1
 )
 };
 declare function tmp2() {
 (
-    select element {'l_orderkey':l_orderkey,'count_suppkey':COLL_COUNT((
+    select element {'l_orderkey':l_orderkey,'count_suppkey':coll_count((
             select element i.l_suppkey
-            from  l2 as i
-        )),'max_suppkey':COLL_MAX((
+            from  (from g2 select value g2.l2) as i
+        )),'max_suppkey': coll_max((
             select element i.l_suppkey
-            from  l2 as i
+            from  (from g2 select value g2.l2) as i
         ))}
     from  (
         select element {'l_orderkey':l_orderkey1,'l_suppkey':l_suppkey1}
@@ -53,28 +54,30 @@
         group by l.l_orderkey as l_orderkey1,l.l_suppkey as l_suppkey1
     ) as l2
     group by l2.l_orderkey as l_orderkey
+    group as g2
 )
 };
 select element {'s_name':s_name,'numwait':numwait}
 from  (
     select element {'s_name':t3.s_name,'l_suppkey':t3.l_suppkey,'l_orderkey':t2.l_orderkey,'count_suppkey':t2.count_suppkey,'max_suppkey':t2.max_suppkey}
     from  (
-        select element {'s_name':ns.s_name,'l_orderkey':t1.l_orderkey,'l_suppkey':l.l_suppkey}
-        from  LineItem as l,
-              (
-            select element {'s_name':s.s_name,'s_suppkey':s.s_suppkey}
-            from  Nation as n,
-                  Supplier as s
-            where (s.s_nationkey = n.n_nationkey)
-        ) as ns,
-              Orders as o,
-              tpch.tmp1() as t1
-        where (((ns.s_suppkey = l.l_suppkey) and (l.l_receiptdate > l.l_commitdate)) and (o.o_orderkey = l.l_orderkey) and (l.l_orderkey = t1.l_orderkey))
+            select element {'s_name':ns.s_name,'l_orderkey':t1.l_orderkey,'l_suppkey':l.l_suppkey}
+            from  LineItem as l,
+                  (
+                        select element {'s_name':s.s_name,'s_suppkey':s.s_suppkey}
+                        from  Nation as n,
+                        Supplier as s
+                        where s.s_nationkey = n.n_nationkey
+                   ) as ns,
+                   Orders as o,
+                   tpch.tmp1() as t1
+            where ns.s_suppkey = l.l_suppkey and l.l_receiptdate > l.l_commitdate and o.o_orderkey = l.l_orderkey and l.l_orderkey = t1.l_orderkey
     ) as t3,
-          tpch.tmp2() as t2
-    where ((t2.count_suppkey >= 0) and (t3.l_orderkey = t2.l_orderkey))
+      tpch.tmp2() as t2
+    where t2.count_suppkey >= 0 and t3.l_orderkey = t2.l_orderkey
 ) as t4
 group by t4.s_name as s_name
-with  numwait as COLL_COUNT(t4)
+group as g
+let  numwait = count(( from g select value t4 ))
 order by numwait desc,s_name
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q22_global_sales_opportunity/q22_global_sales_opportunity.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q22_global_sales_opportunity/q22_global_sales_opportunity.3.query.sqlpp
index 328c753..bdd7323 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q22_global_sales_opportunity/q22_global_sales_opportunity.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/q22_global_sales_opportunity/q22_global_sales_opportunity.3.query.sqlpp
@@ -22,7 +22,7 @@
 
 declare function q22_customer_tmp() {
 (
-    select element {'c_acctbal':c.c_acctbal,'c_custkey':c.c_custkey,'cntrycode':tpch.substring(c.c_phone,1,2)}
+    select element {'c_acctbal':c.c_acctbal,'c_custkey':c.c_custkey,'cntrycode':SUBSTR(c.c_phone,1,2)}
     from  Customer as c
 )
 };
@@ -31,12 +31,13 @@
       from  Customer as c
       where (c.c_acctbal > 0.0)
   ))
-select element {'cntrycode':cntrycode,'numcust':tpch.count(ct),'totacctbal':tpch.coll_sum((
+select element {'cntrycode':cntrycode,'numcust':COLL_COUNT(( from g select value ct )),'totacctbal':COLL_SUM((
         select element i.c_acctbal
-        from  ct as i
+        from  (from g select value ct) as i
     ))}
 from  tpch.q22_customer_tmp() as ct
 where (ct.c_acctbal > avg)
 group by ct.cntrycode as cntrycode
+group as g
 order by cntrycode
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue601/query-issue601.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue601/query-issue601.3.query.sqlpp
index 86568ca..3f3a50a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue601/query-issue601.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue601/query-issue601.3.query.sqlpp
@@ -17,7 +17,7 @@
  * under the License.
  */
 /*
- * Description  : This test case is to verify the fix from issue601
+ * Description  : This test case is to verify the fix for issue601
  * https://code.google.com/p/asterixdb/issues/detail?id=601
  * Expected Res : SUCCESS
  * Date         : 10th Oct 2014
@@ -26,8 +26,9 @@
 use tpch;
 
 
-select element {'l_linenumber':l_linenumber,'count_order':COLL_COUNT(l)}
+select element {'l_linenumber':l.l_linenumber,'count_order': count((from g select value g))}
 from  LineItem as l
-group by l.l_linenumber as l_linenumber
-order by l_linenumber
+group by l.l_linenumber
+group as g
+order by l.l_linenumber
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue638/query-issue638.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue638/query-issue638.3.query.sqlpp
index 3507b9f..46a278c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue638/query-issue638.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue638/query-issue638.3.query.sqlpp
@@ -17,7 +17,7 @@
  * under the License.
  */
 /*
- * Description  : This test case is to verify the fix from issue638
+ * Description  : This test case is to verify the fix for issue638
  * https://code.google.com/p/asterixdb/issues/detail?id=638
  * Expected Res : SUCCESS
  * Date         : 24th Oct. 2014
@@ -26,9 +26,9 @@
 use tpch;
 
 
-select element {'nation':nation,'o_year':o_year,'sum_profit':COLL_SUM((
-        select element pr.amount
-        from  profit as pr
+select element {'nation':nation,'o_year':o_year,'sum_profit':tpch.coll_sum((
+        select element g.profit.amount
+        from  g
     ))}
 from  (
     select element {'nation':l3.n_name,'o_year':o_year,'amount':amount}
@@ -52,12 +52,13 @@
             ) as l1
             where ((ps.ps_suppkey = l1.l_suppkey) and (ps.ps_partkey = l1.l_partkey))
         ) as l2
-        where (CONTAINS(p.p_name,'green') and (p.p_partkey = l2.l_partkey))
+        where (tpch.contains(p.p_name,'green') and (p.p_partkey = l2.l_partkey))
     ) as l3
     with  amount as ((l3.l_extendedprice * (1 - l3.l_discount)) - (l3.ps_supplycost * l3.l_quantity)),
           o_year as tpch.`get-year`(o.o_orderdate)
     where (o.o_orderkey = l3.l_orderkey)
 ) as profit
 group by profit.nation as nation,profit.o_year as o_year
+group as g
 order by nation,o_year desc
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue785-2/query-issue785-2.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue785-2/query-issue785-2.3.query.sqlpp
index d07b004..7a40cec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue785-2/query-issue785-2.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue785-2/query-issue785-2.3.query.sqlpp
@@ -17,7 +17,7 @@
  * under the License.
  */
 /*
- * Description  : This test case is to verify the fix from issue785
+ * Description  : This test case is to verify the fix for issue785
  * https://code.google.com/p/asterixdb/issues/detail?id=785
  * Expected Res : SUCCESS
  * Date         : 2nd Oct. 2014
@@ -27,30 +27,32 @@
 
 
 with  t as (
-      select element {'n_nationkey':nation.n_nationkey,'n_name':nation.n_name}
-      from  Nation as nation,
+       select element {'n_nationkey':nation.n_nationkey,'n_name':nation.n_name}
+       from  Nation as nation,
             SelectedNation as sn
-      where (nation.n_nationkey = sn.n_nationkey)
-  ),
+       where nation.n_nationkey = sn.n_nationkey
+      ),
       X as (
       select element {'nation_key':nation_key,'order_date':orderdate,'sum_price':sum}
       from  t as n,
             Customer as customer,
             Orders as orders
-      where ((orders.o_custkey = customer.c_custkey) and (customer.c_nationkey = n.n_nationkey))
+      where orders.o_custkey = customer.c_custkey and customer.c_nationkey = n.n_nationkey
       group by orders.o_orderdate as orderdate,n.n_nationkey as nation_key
-      with  sum as COLL_SUM((
-            select element o.o_totalprice
-            from  orders as o
-        ))
+      group as g2
+      let  sum = coll_sum((
+            select element g2.orders.o_totalprice
+            from g2
+      ))
   )
-select element {'nation_key':x.nation_key,'sum_price':(
-        select element {'orderdate':y.order_date,'sum_price':y.sum_price}
-        from  x as y
-        order by y.sum_price desc
+select element {'nation_key':nation_key,'sum_price':(
+        select element {'orderdate':g.x.order_date,'sum_price': g.x.sum_price}
+        from  g
+        order by g.x.sum_price desc
         limit 3
     )}
 from  X as x
-group by x.nation_key
-order by x.nation_key
+group by x.nation_key as nation_key
+group as g
+order by nation_key
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue785/query-issue785.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue785/query-issue785.3.query.sqlpp
index 02edeea..6c7d7bd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue785/query-issue785.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue785/query-issue785.3.query.sqlpp
@@ -17,7 +17,7 @@
  * under the License.
  */
 /*
- * Description  : This test case is to verify the fix from issue785
+ * Description  : This test case is to verify the fix for issue785
  * https://code.google.com/p/asterixdb/issues/detail?id=785
  * Expected Res : SUCCESS
  * Date         : 2nd Oct. 2014
@@ -26,28 +26,32 @@
 use tpch;
 
 
-select element {'nation_key':x.nation_key,'sum_price':(
-        select element {'orderdate':od,'sum_price':sum}
-        from  x as i
-        group by i.order_date as od
-        with  sum as COLL_SUM((
-              select element s.sum_price
-              from  i as s
+select element {'nation_key':nation_key,'sum_price':(
+        select element {'orderdate': od,'sum_price':sum}
+        from  g as i
+        group by i.x.order_date as od
+        group as g2
+        let sum = coll_sum((
+              select element g2.i.x.sum_price
+              from g2
           ))
         order by sum desc
         limit 3
     )}
 from  (
-    select element {'nation_key':nation_key,'order_date':orderdate,'sum_price':COLL_SUM((
-            select element o.o_totalprice
-            from  orders as o
-        ))}
+    select element {'nation_key':nation_key,'order_date':orderdate,
+                    'sum_price': coll_sum((
+                        select value g3.orders.o_totalprice
+                        from g3
+                    ))}
     from  Nation as n,
           Customer as customer,
           Orders as orders
-    where ((orders.o_custkey = customer.c_custkey) and (customer.c_nationkey = n.n_nationkey))
+    where orders.o_custkey = customer.c_custkey and customer.c_nationkey = n.n_nationkey
     group by orders.o_orderdate as orderdate,n.n_nationkey as nation_key
+    group as g3
 ) as x
-group by x.nation_key
-order by x.nation_key
+group by x.nation_key as nation_key
+group as g
+order by nation_key
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue786/query-issue786.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue786/query-issue786.3.query.sqlpp
index 7098a55..8d37f4d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue786/query-issue786.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-like/query-issue786/query-issue786.3.query.sqlpp
@@ -17,7 +17,7 @@
  * under the License.
  */
 /*
- * Description  : This test case is to verify the fix from issue786
+ * Description  : This test case is to verify the fix for issue786
  * https://code.google.com/p/asterixdb/issues/detail?id=786
  * Expected Res : SUCCESS
  * Date         : 10th Oct. 2014
@@ -30,16 +30,17 @@
         select element {'order_date':orderdate,'sum_price':sum}
         from  Orders as orders,
               Customer as customer
-        where ((orders.o_custkey = customer.c_custkey) and (customer.c_nationkey = nation.n_nationkey))
+        where orders.o_custkey = customer.c_custkey and customer.c_nationkey = nation.n_nationkey
         group by orders.o_orderdate as orderdate
-        with  sum as COLL_SUM((
-              select element o.o_totalprice
-              from  orders as o
-          ))
+        group as g
+        let  sum = coll_sum((
+              select element g.orders.o_totalprice
+              from g
+        ))
         order by sum desc
         limit 3
     )}
 from  Nation as nation,
       SelectedNation as sn
-where (nation.n_nationkey = sn.sn_nationkey)
+where nation.n_nationkey = sn.sn_nationkey
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue785-2/query-issue785-2.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue785-2/query-issue785-2.3.query.sqlpp
index 7f17b7a..9254656 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue785-2/query-issue785-2.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue785-2/query-issue785-2.3.query.sqlpp
@@ -43,12 +43,13 @@
 
 SELECT nation_key,
        (
-            SELECT order_date AS orderdate, sum_price
-            FROM  X // the X here refers to implicit variable X defined in the outer FROM.
+            SELECT g.X.order_date AS orderdate, g.X.sum_price
+            FROM  g // the X here refers to implicit variable X defined in the outer FROM.
             ORDER BY sum_price desc
             LIMIT 3
         ) AS sum_price
 FROM  X
 GROUP BY nation_key
+GROUP AS g
 ORDER BY nation_key
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue785/query-issue785.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue785/query-issue785.3.query.sqlpp
index c775c9a..8d4460a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue785/query-issue785.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue785/query-issue785.3.query.sqlpp
@@ -29,7 +29,7 @@
 SELECT  nation_key,
         (
             SELECT od AS orderdate,  sum_price
-            FROM x
+            FROM (FROM g SELECT VALUE g.x) x
             GROUP BY order_date AS od
             LET sum_price = sum(sum_price)
             ORDER BY sum_price desc
@@ -44,5 +44,6 @@
         GROUP BY o_orderdate as orderdate, n_nationkey as nation_key
 ) AS x
 GROUP BY nation_key
+GROUP AS g
 ORDER BY nation_key
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue810-2/query-issue810-2.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue810-2/query-issue810-2.3.query.sqlpp
index e361e74..fc9c64d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue810-2/query-issue810-2.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue810-2/query-issue810-2.3.query.sqlpp
@@ -34,11 +34,12 @@
 WHERE l_shipdate <= '1998-09-02'
 /* +hash */
 GROUP BY l_returnflag, l_linestatus
-WITH  cheaps AS (
-      SELECT ELEMENT l
-      FROM  l
-      WHERE l_discount > 0.05
+GROUP AS g
+LET  cheaps = (
+      SELECT ELEMENT l.l
+      FROM  g AS l
+      WHERE l.l.l_discount > 0.05
   ),
-total_charges AS sum(l_extendedprice * (1 - l_discount) * (1 + l_tax))
+total_charges = sum(l_extendedprice * (1 - l_discount) * (1 + l_tax))
 ORDER BY l_returnflag,l_linestatus
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue810-3/query-issue810-3.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue810-3/query-issue810-3.3.query.sqlpp
index d8c9222..5186119 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue810-3/query-issue810-3.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue810-3/query-issue810-3.3.query.sqlpp
@@ -36,14 +36,15 @@
 WHERE l_shipdate <= '1998-09-02'
 /* +hash */
 GROUP BY l_returnflag, l_linestatus
+GROUP AS g
 WITH  expensives AS (
       SELECT ELEMENT l_discount
-      FROM  l
+      FROM  (FROM g SELECT VALUE l) l
       WHERE l_discount <= 0.05
       ),
 cheaps as (
       SELECT ELEMENT l
-      FROM  l
+      FROM  (FROM g SELECT VALUE l) l
       WHERE l_discount > 0.05
   ),
 sum_disc_prices AS sum(l_extendedprice * (1 - l_discount)),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue810/query-issue810.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue810/query-issue810.3.query.sqlpp
index cf9582a..cb1b00f8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue810/query-issue810.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql-sugar/query-issue810/query-issue810.3.query.sqlpp
@@ -34,15 +34,16 @@
 WHERE l_shipdate <= '1998-09-02'
 /* +hash */
 GROUP BY l_returnflag, l_linestatus
+GROUP AS g
 LET  cheap = (
-      SELECT ELEMENT l
-      FROM l
-      WHERE l_discount > 0.05
+      SELECT ELEMENT g.l
+      FROM g
+      WHERE g.l.l_discount > 0.05
 ),
 expensive = (
-      SELECT ELEMENT l
-      FROM l
-      WHERE l_discount <= 0.05
+      SELECT ELEMENT g.l
+      FROM g
+      WHERE g.l.l_discount <= 0.05
 )
 ORDER BY l_returnflag,l_linestatus
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue785-2/query-issue785-2.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue785-2/query-issue785-2.3.query.sqlpp
index 864f97b..eaa9369 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue785-2/query-issue785-2.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue785-2/query-issue785-2.3.query.sqlpp
@@ -44,11 +44,12 @@
 SELECT x.nation_key As nation_key,
        (
             SELECT y.order_date AS orderdate, y.sum_price As sum_price
-            FROM  x AS y
+            FROM  (FROM g SELECT VALUE x) AS y
             ORDER BY y.sum_price desc
             LIMIT 3
         ) AS sum_price
 FROM  X AS x
 GROUP BY x.nation_key
+GROUP AS g
 ORDER BY x.nation_key
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue785/query-issue785.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue785/query-issue785.3.query.sqlpp
index 7cdce6d..4283a19 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue785/query-issue785.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue785/query-issue785.3.query.sqlpp
@@ -29,9 +29,9 @@
 SELECT  x.nation_key AS nation_key,
         (
             SELECT od AS orderdate, sum_price AS sum_price
-            FROM x as i
+            FROM (FROM g SELECT VALUE x) as i
             GROUP BY i.order_date AS od
-            WITH sum_price AS sum(i.sum_price)
+            LET sum_price = sum(i.sum_price)
             ORDER BY sum_price desc
             LIMIT 3
         ) AS sum_price
@@ -44,5 +44,6 @@
         GROUP BY orders.o_orderdate as orderdate,n.n_nationkey as nation_key
 ) AS x
 GROUP BY x.nation_key
+GROUP AS g
 ORDER BY x.nation_key
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue810-2/query-issue810-2.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue810-2/query-issue810-2.3.query.sqlpp
index af3421f..bfd62c9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue810-2/query-issue810-2.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue810-2/query-issue810-2.3.query.sqlpp
@@ -34,11 +34,12 @@
 WHERE l.l_shipdate <= '1998-09-02'
 /* +hash */
 GROUP BY l.l_returnflag AS l_returnflag,l.l_linestatus AS l_linestatus
-WITH  cheaps AS (
-      SELECT ELEMENT m
-      FROM  l AS m
-      WHERE m.l_discount > 0.05
+GROUP AS g
+LET  cheaps = (
+      SELECT ELEMENT m.l
+      FROM  g AS m
+      WHERE m.l.l_discount > 0.05
   ),
-total_charges AS sum(l.l_extendedprice * (1 - l.l_discount) * (1 + l.l_tax))
+total_charges = sum(l.l_extendedprice * (1 - l.l_discount) * (1 + l.l_tax))
 ORDER BY l_returnflag,l_linestatus
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue810-3/query-issue810-3.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue810-3/query-issue810-3.3.query.sqlpp
index dbb9b88..3ee3a31 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue810-3/query-issue810-3.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue810-3/query-issue810-3.3.query.sqlpp
@@ -36,17 +36,18 @@
 WHERE l.l_shipdate <= '1998-09-02'
 /* +hash */
 GROUP BY l.l_returnflag AS l_returnflag,l.l_linestatus AS l_linestatus
-WITH  expensives AS (
-      SELECT ELEMENT i.l_discount
-      FROM  l AS i
-      WHERE i.l_discount <= 0.05
+GROUP AS g
+LET  expensives = (
+      SELECT ELEMENT i.l.l_discount
+      FROM  g AS i
+      WHERE i.l.l_discount <= 0.05
       ),
-cheaps as (
-      SELECT ELEMENT i
-      FROM  l AS i
-      WHERE i.l_discount > 0.05
+cheaps = (
+      SELECT ELEMENT i.l
+      FROM  g AS i
+      WHERE i.l.l_discount > 0.05
   ),
-sum_disc_prices AS sum(l.l_extendedprice * (1 - l.l_discount)),
-total_charges AS sum(l.l_extendedprice * (1 - l.l_discount) * (1 + l.l_tax))
+sum_disc_prices = sum(l.l_extendedprice * (1 - l.l_discount)),
+total_charges = sum(l.l_extendedprice * (1 - l.l_discount) * (1 + l.l_tax))
 ORDER BY l_returnflag,l_linestatus
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue810/query-issue810.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue810/query-issue810.3.query.sqlpp
index fc80184..17e37b3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue810/query-issue810.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-sql/query-issue810/query-issue810.3.query.sqlpp
@@ -34,14 +34,15 @@
 WHERE l.l_shipdate <= '1998-09-02'
 /* +hash */
 GROUP BY l.l_returnflag AS l_returnflag,l.l_linestatus AS l_linestatus
-with  cheap as (
+GROUP AS g
+LET  cheap = (
       SELECT ELEMENT m
-      FROM l AS m
+      FROM (FROM g SELECT VALUE l) AS m
       WHERE m.l_discount > 0.05
 ),
-expensive AS (
+expensive = (
       SELECT ELEMENT a
-      FROM l AS a
+      FROM (FROM g SELECT VALUE l) AS a
       WHERE a.l_discount <= 0.05
 )
 ORDER BY l_returnflag,l_linestatus
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/nest_aggregate/nest_aggregate.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/nest_aggregate/nest_aggregate.3.query.sqlpp
index 8efcb7f..389a35d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/nest_aggregate/nest_aggregate.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/nest_aggregate/nest_aggregate.3.query.sqlpp
@@ -30,11 +30,12 @@
         select element {'order_date':orderdate,'sum_price':sum}
         from  Orders as orders,
               Customer as customer
-        where ((orders.o_custkey = customer.c_custkey) and (customer.c_nationkey = nation.n_nationkey))
+        where orders.o_custkey = customer.c_custkey and customer.c_nationkey = nation.n_nationkey
         group by orders.o_orderdate as orderdate
-        with  sum as tpch.coll_sum((
-              select element o.o_totalprice
-              from  orders as o
+        group as g
+        let  sum = coll_sum((
+              select element g.orders.o_totalprice
+              from  g
           ))
         order by sum
         limit 3
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/nest_aggregate2/nest_aggregate2.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/nest_aggregate2/nest_aggregate2.3.query.sqlpp
index 1b70f0e..e137e9f9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/nest_aggregate2/nest_aggregate2.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/nest_aggregate2/nest_aggregate2.3.query.sqlpp
@@ -32,9 +32,10 @@
               Customer as customer
         where ((orders.o_custkey = customer.c_custkey) and (customer.c_nationkey = nation.n_nationkey))
         group by orders.o_orderdate as orderdate
-        with  sum as tpch.coll_sum((
-              select element o.o_totalprice
-              from  orders as o
+        group as g
+        let  sum = tpch.coll_sum((
+              select element g.orders.o_totalprice
+              from  g
           ))
         order by sum
         limit 3
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp
index ae276b5..e42ce21 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp
@@ -19,34 +19,34 @@
 
 use tpch;
 
+set hash_merge "true"
 
-set `import-private-functions` `true`;
-
-select element {'l_returnflag':l_returnflag,'l_linestatus':l_linestatus,'sum_qty':tpch.coll_sum((
-        select element i.l_quantity
-        from  l as i
-    )),'sum_base_price':tpch.coll_sum((
-        select element i.l_extendedprice
-        from  l as i
-    )),'sum_disc_price':tpch.coll_sum((
-        select element (i.l_extendedprice * (1 - i.l_discount))
-        from  l as i
-    )),'sum_charge':tpch.coll_sum((
-        select element (i.l_extendedprice * (1 - i.l_discount) * (1 + i.l_tax))
-        from  l as i
-    )),'ave_qty':tpch.coll_avg((
-        select element i.l_quantity
-        from  l as i
-    )),'ave_price':tpch.coll_avg((
-        select element i.l_extendedprice
-        from  l as i
-    )),'ave_disc':tpch.coll_avg((
-        select element i.l_discount
-        from  l as i
-    )),'count_order':tpch.count(l)}
+select element {'l_returnflag':l_returnflag,'l_linestatus':l_linestatus,'sum_qty':COLL_SUM((
+        select element i.l.l_quantity
+        from  g as i
+    )),'sum_base_price':COLL_SUM((
+        select element i.l.l_extendedprice
+        from  g as i
+    )),'sum_disc_price':COLL_SUM((
+        select element (i.l.l_extendedprice * (1 - i.l.l_discount))
+        from  g as i
+    )),'sum_charge':COLL_SUM((
+        select element (i.l.l_extendedprice * (1 - i.l.l_discount) * (1 + i.l.l_tax))
+        from  g as i
+    )),'ave_qty':COLL_AVG((
+        select element i.l.l_quantity
+        from  g as i
+    )),'ave_price':COLL_AVG((
+        select element i.l.l_extendedprice
+        from g as i
+    )),'ave_disc':COLL_AVG((
+        select element i.l.l_discount
+        from  g as i
+    )),'count_order':COLL_COUNT(( from g select value l ))}
 from  LineItem as l
 where (l.l_shipdate <= '1998-09-02')
 /* +hash */
 group by l.l_returnflag as l_returnflag,l.l_linestatus as l_linestatus
+group as g
 order by l_returnflag,l_linestatus
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.query.sqlpp
index cbb55c4..24180d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.query.sqlpp
@@ -45,9 +45,9 @@
 };
 declare function tmp2() {
 (
-    select element {'p_partkey':p_partkey,'ps_min_supplycost':tpch.coll_min((
-            select element i.ps_supplycost
-            from  pssrn as i
+    select element {'p_partkey':p_partkey,'ps_min_supplycost':COLL_MIN((
+            select element i.pssrn.ps_supplycost
+            from  g as i
         ))}
     from  Part as p,
           (
@@ -69,6 +69,7 @@
     where p.p_partkey = pssrn.p_partkey and p.p_type like '%BRASS'
     /* +hash */
     group by pssrn.p_partkey as p_partkey
+    group as g
 )
 };
 select element {'s_acctbal':t1.s_acctbal,'s_name':t1.s_name,'n_name':t1.n_name,'p_partkey':t1.p_partkey,'p_mfgr':t1.p_mfgr,'s_address':t1.s_address,'s_phone':t1.s_phone,'s_comment':t1.s_comment}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q03_shipping_priority_nt/q03_shipping_priority_nt.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q03_shipping_priority_nt/q03_shipping_priority_nt.3.query.sqlpp
index bddbb53..f076d71 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q03_shipping_priority_nt/q03_shipping_priority_nt.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q03_shipping_priority_nt/q03_shipping_priority_nt.3.query.sqlpp
@@ -27,9 +27,10 @@
 where (((c.c_mktsegment = 'BUILDING') and (c.c_custkey = o.o_custkey)) and ((l.l_orderkey = o.o_orderkey) and (o.o_orderdate < '1995-03-15') and (l.l_shipdate > '1995-03-15')))
 /* +hash */
 group by l.l_orderkey as l_orderkey,o.o_orderdate as o_orderdate,o.o_shippriority as o_shippriority
-with  revenue as tpch.coll_sum((
+group as g
+let  revenue = COLL_SUM((
       select element (i.l_extendedprice * (1 - i.l_discount))
-      from  l as i
+      from (from g select value l) as i
   ))
 order by revenue desc,o_orderdate
 limit 10
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q05_local_supplier_volume/q05_local_supplier_volume.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q05_local_supplier_volume/q05_local_supplier_volume.3.query.sqlpp
index 9050001..b82242e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q05_local_supplier_volume/q05_local_supplier_volume.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q05_local_supplier_volume/q05_local_supplier_volume.3.query.sqlpp
@@ -46,9 +46,10 @@
 where ((c.c_nationkey = o1.s_nationkey) and (c.c_custkey = o1.o_custkey))
 /* +hash */
 group by o1.n_name as n_name
-with  revenue as tpch.coll_sum((
+group as g
+let revenue = COLL_SUM((
       select element (i.l_extendedprice * (1 - i.l_discount))
-      from  o1 as i
+      from  (from g select value o1) as i
   ))
 order by revenue desc
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q06_forecast_revenue_change/q06_forecast_revenue_change.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q06_forecast_revenue_change/q06_forecast_revenue_change.3.query.sqlpp
index e1012b1..b960393 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q06_forecast_revenue_change/q06_forecast_revenue_change.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q06_forecast_revenue_change/q06_forecast_revenue_change.3.query.sqlpp
@@ -20,7 +20,7 @@
 use tpch;
 
 
-{'revenue':tpch.coll_sum((
+{'revenue':COLL_SUM((
     select element (l.l_extendedprice * l.l_discount)
     from  LineItem as l
     where ((l.l_shipdate >= '1994-01-01') and (l.l_shipdate < '1995-01-01') and (l.l_discount >= 0.05) and (l.l_discount <= 0.07) and (l.l_quantity < 24))
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q07_volume_shipping/q07_volume_shipping.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q07_volume_shipping/q07_volume_shipping.3.query.sqlpp
index deeec6b..b6344b2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q07_volume_shipping/q07_volume_shipping.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q07_volume_shipping/q07_volume_shipping.3.query.sqlpp
@@ -49,9 +49,10 @@
 with  l_year0 as tpch.`get-year`(locs.l_shipdate)
 where ((locs.c_nationkey = t.c_nationkey) and (locs.s_nationkey = t.s_nationkey))
 group by t.supp_nation as supp_nation,t.cust_nation as cust_nation,l_year0 as l_year
-with  revenue as tpch.coll_sum((
-      select element (i.l_extendedprice * (1 - i.l_discount))
-      from  locs as i
+group as g
+let  revenue = COLL_SUM((
+      select element (i.locs.l_extendedprice * (1 - i.locs.l_discount))
+      from  g as i
   ))
 order by supp_nation,cust_nation,l_year
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q08_national_market_share/q08_national_market_share.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q08_national_market_share/q08_national_market_share.3.query.sqlpp
index b9b739d..ce12ffd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q08_national_market_share/q08_national_market_share.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q08_national_market_share/q08_national_market_share.3.query.sqlpp
@@ -20,12 +20,12 @@
 use tpch;
 
 
-select element {'year':year,'mkt_share':(tpch.coll_sum((
+select element {'year':year,'mkt_share':(COLL_SUM((
           select element case i.s_name = 'BRAZIL' when true then i.revenue when false then 0.0 end
-          from  t as i
-      )) / tpch.coll_sum((
+          from  (from g select value t) as i
+      )) / COLL_SUM((
           select element i.revenue
-          from  t as i
+          from  (from g select value t) as i
       )))}
 from  (
     select element {'year':o_year,'revenue':(slnrcop.l_extendedprice * (1 - slnrcop.l_discount)),'s_name':n2.n_name}
@@ -65,5 +65,6 @@
     where (slnrcop.s_nationkey = n2.n_nationkey)
 ) as t
 group by t.year as year
+group as g
 order by year
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q09_product_type_profit_nt/q09_product_type_profit_nt.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q09_product_type_profit_nt/q09_product_type_profit_nt.3.query.sqlpp
index 0f56186..f469707 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q09_product_type_profit_nt/q09_product_type_profit_nt.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q09_product_type_profit_nt/q09_product_type_profit_nt.3.query.sqlpp
@@ -22,7 +22,7 @@
 
 select element {'nation':nation,'o_year':o_year,'sum_profit':tpch.coll_sum((
         select element pr.amount
-        from  profit as pr
+        from (from g select value profit) as pr
     ))}
 from  (
     select element {'nation':l3.n_name,'o_year':o_year,'amount':amount}
@@ -53,5 +53,6 @@
     where (o.o_orderkey = l3.l_orderkey)
 ) as profit
 group by profit.nation as nation,profit.o_year as o_year
+group as g
 order by nation,o_year desc
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q10_returned_item/q10_returned_item.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q10_returned_item/q10_returned_item.3.query.sqlpp
index 7278f81..e48e264 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q10_returned_item/q10_returned_item.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q10_returned_item/q10_returned_item.3.query.sqlpp
@@ -34,9 +34,10 @@
     where ((l.l_orderkey = ocn.o_orderkey) and (l.l_returnflag = 'R'))
 ) as locn
 group by locn.c_custkey as c_custkey,locn.c_name as c_name,locn.c_acctbal as c_acctbal,locn.c_phone as c_phone,locn.n_name as n_name,locn.c_address as c_address,locn.c_comment as c_comment
-with  revenue as tpch.coll_sum((
-      select element (i.l_extendedprice * (1 - i.l_discount))
-      from  locn as i
+group as g
+let revenue = coll_sum((
+      select element (i.locn.l_extendedprice * (1 - i.locn.l_discount))
+      from  g as i
   ))
 order by revenue desc
 limit 20
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q10_returned_item_int64/q10_returned_item_int64.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q10_returned_item_int64/q10_returned_item_int64.3.query.sqlpp
index 7278f81..e48e264 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q10_returned_item_int64/q10_returned_item_int64.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q10_returned_item_int64/q10_returned_item_int64.3.query.sqlpp
@@ -34,9 +34,10 @@
     where ((l.l_orderkey = ocn.o_orderkey) and (l.l_returnflag = 'R'))
 ) as locn
 group by locn.c_custkey as c_custkey,locn.c_name as c_name,locn.c_acctbal as c_acctbal,locn.c_phone as c_phone,locn.n_name as n_name,locn.c_address as c_address,locn.c_comment as c_comment
-with  revenue as tpch.coll_sum((
-      select element (i.l_extendedprice * (1 - i.l_discount))
-      from  locn as i
+group as g
+let revenue = coll_sum((
+      select element (i.locn.l_extendedprice * (1 - i.locn.l_discount))
+      from  g as i
   ))
 order by revenue desc
 limit 20
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q11_important_stock/q11_important_stock.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q11_important_stock/q11_important_stock.3.query.sqlpp
index 073835c..2fb8110 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q11_important_stock/q11_important_stock.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q11_important_stock/q11_important_stock.3.query.sqlpp
@@ -20,32 +20,33 @@
 use tpch;
 
 
-with  sum as tpch.coll_sum((
+with  sum as COLL_SUM((
       select element (ps.ps_supplycost * ps.ps_availqty)
       from  Partsupp as ps,
             (
           select element {'s_suppkey':s.s_suppkey}
           from  Supplier as s,
                 Nation as n
-          where (s.s_nationkey = n.n_nationkey)
+          where s.s_nationkey = n.n_nationkey
       ) as sn
-      where (ps.ps_suppkey = sn.s_suppkey)
+      where ps.ps_suppkey = sn.s_suppkey
   ))
 select element {'partkey':t1.ps_partkey,'part_value':t1.part_value}
 from  (
-    select element {'ps_partkey':ps_partkey,'part_value':tpch.coll_sum((
-            select element (i.ps_supplycost * i.ps_availqty)
-            from  ps as i
+    select element {'ps_partkey':ps_partkey,'part_value':COLL_SUM((
+            select element (i.ps.ps_supplycost * i.ps.ps_availqty)
+            from  g as i
         ))}
     from  Partsupp as ps,
           (
         select element {'s_suppkey':s.s_suppkey}
         from  Supplier as s,
               Nation as n
-        where (s.s_nationkey = n.n_nationkey)
+        where s.s_nationkey = n.n_nationkey
     ) as sn
-    where (ps.ps_suppkey = sn.s_suppkey)
+    where ps.ps_suppkey = sn.s_suppkey
     group by ps.ps_partkey as ps_partkey
+    group as g
 ) as t1
 where (t1.part_value > (sum * 0.00001))
 order by t1.part_value desc
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q12_shipping/q12_shipping.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q12_shipping/q12_shipping.3.query.sqlpp
index 395279b..e8097c0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q12_shipping/q12_shipping.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q12_shipping/q12_shipping.3.query.sqlpp
@@ -17,25 +17,25 @@
  * under the License.
  */
 
-use tpch;
-
+use tpch
 
 select element {'l_shipmode':l_shipmode,'high_line_count':tpch.coll_sum((
         select element case
-                        when i.o_orderpriority = '1-URGENT' or i.o_orderpriority = '2-HIGH' then 1
+                        when i.o.o_orderpriority = '1-URGENT' or i.o.o_orderpriority = '2-HIGH' then 1
                         else 0
                         end
-        from  o as i
+        from  g as i
     )),'low_line_count':tpch.coll_sum((
         select element case
-                         when i.o_orderpriority = '1-URGENT' or i.o_orderpriority = '2-HIGH' then 0
+                         when i.o.o_orderpriority = '1-URGENT' or i.o.o_orderpriority = '2-HIGH' then 0
                          else 1
                         end
-        from  o as i
+        from  g as i
     ))}
 from  LineItem as l,
       Orders as o
 where ((o.o_orderkey = l.l_orderkey) and (l.l_commitdate < l.l_receiptdate) and (l.l_shipdate < l.l_commitdate) and (l.l_receiptdate >= '1994-01-01') and (l.l_receiptdate < '1995-01-01') and ((l.l_shipmode = 'MAIL') or (l.l_shipmode = 'SHIP')))
 group by l.l_shipmode as l_shipmode
+group as g
 order by l_shipmode
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q13_customer_distribution/q13_customer_distribution.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q13_customer_distribution/q13_customer_distribution.3.query.sqlpp
index 24f4f46..4823a39 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q13_customer_distribution/q13_customer_distribution.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q13_customer_distribution/q13_customer_distribution.3.query.sqlpp
@@ -24,9 +24,9 @@
 
 select element {'c_count':c_count,'custdist':custdist}
 from  (
-    select element {'c_custkey':c_custkey,'c_count':tpch.coll_sum((
+    select element {'c_custkey':c_custkey,'c_count':COLL_SUM((
             select element i.o_orderkey_count
-            from  co as i
+            from (select value co from g2) as i
         ))}
     from  (
         select element {'c_custkey':c.c_custkey,'o_orderkey_count':coll_count((
@@ -37,8 +37,10 @@
         from  Customer as c
     ) as co
     group by co.c_custkey as c_custkey
+    group as g2
 ) as gco
 group by gco.c_count as c_count
-with  custdist as tpch.count(gco)
+group as g
+let  custdist = count(( select value gco from g ))
 order by custdist desc,c_count desc
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q14_promotion_effect/q14_promotion_effect.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q14_promotion_effect/q14_promotion_effect.3.query.sqlpp
index c20b6ae..864793d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q14_promotion_effect/q14_promotion_effect.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q14_promotion_effect/q14_promotion_effect.3.query.sqlpp
@@ -19,20 +19,19 @@
 
 use tpch;
 
-
 select element (100.0 * tpch.coll_sum((
       select element case
-                       when i.p_type like 'PROMO%' then i.l_extendedprice * (1 - i.l_discount)
+                       when i.lp.p_type like 'PROMO%' then i.lp.l_extendedprice * (1 - i.lp.l_discount)
                        else 0.0
                      end
-      from  lp as i
+      from  g as i
   )) / tpch.coll_sum((
-      select element (i.l_extendedprice * (1 - i.l_discount))
-      from  lp as i
+      select element (i.lp.l_extendedprice * (1 - i.lp.l_discount))
+      from  g as i
   )))
 from  LineItem as l,
       Part as p
 let lp = {'p_type': p.p_type, 'l_extendedprice': l.l_extendedprice, 'l_discount': l.l_discount}
 where ((l.l_partkey = p.p_partkey) and (l.l_shipdate >= '1995-09-01') and (l.l_shipdate < '1995-10-01'))
 group by 1 as t group as g(lp as lp)
-;
+;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q15_top_supplier/q15_top_supplier.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q15_top_supplier/q15_top_supplier.3.query.sqlpp
index fdc4fcc..acd8537 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q15_top_supplier/q15_top_supplier.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q15_top_supplier/q15_top_supplier.3.query.sqlpp
@@ -22,21 +22,22 @@
 
 declare function revenue() {
 (
-    select element {'supplier_no':l_suppkey,'total_revenue':tpch.coll_sum((
-            select element (i.l_extendedprice * (1 - i.l_discount))
-            from  l as i
+    select element {'supplier_no':l_suppkey,'total_revenue':COLL_SUM((
+            select element (i.l.l_extendedprice * (1 - i.l.l_discount))
+            from g as i
         ))}
     from  LineItem as l
-    where ((l.l_shipdate >= '1996-01-01') and (l.l_shipdate < '1996-04-01'))
+    where l.l_shipdate >= '1996-01-01' and l.l_shipdate < '1996-04-01'
     group by l.l_suppkey as l_suppkey
+    group as g
 )
 };
-with  m as tpch.coll_max((
+with  m as COLL_MAX((
       select element r2.total_revenue
-      from  tpch.revenue() as r2
+      from  revenue() as r2
   ))
 select element {'s_suppkey':s.s_suppkey,'s_name':s.s_name,'s_address':s.s_address,'s_phone':s.s_phone,'total_revenue':r.total_revenue}
 from  Supplier as s,
       tpch.revenue() as r
-where ((s.s_suppkey = r.supplier_no) and (r.total_revenue < (m + 0.000000001)) and (r.total_revenue > (m - 0.000000001)))
+where s.s_suppkey = r.supplier_no and r.total_revenue < (m + 0.000000001) and r.total_revenue > (m - 0.000000001)
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.query.sqlpp
index 131c8a0..47dc549 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.query.sqlpp
@@ -41,9 +41,10 @@
     group by t.p_brand as p_brand1,t.p_type as p_type1,t.p_size as p_size1,t.ps_suppkey as ps_suppkey1
 ) as t2
 group by t2.p_brand as p_brand,t2.p_type as p_type,t2.p_size as p_size
-with  supplier_cnt as coll_count((
+group as g
+let  supplier_cnt = COLL_COUNT((
       select element i.ps_suppkey
-      from  t2 as i
+      from  (from g select value t2) as i
   ))
 order by supplier_cnt desc,p_brand,p_type,p_size
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q17_large_gby_variant/q17_large_gby_variant.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q17_large_gby_variant/q17_large_gby_variant.3.query.sqlpp
index 2e057d7..f22d29e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q17_large_gby_variant/q17_large_gby_variant.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q17_large_gby_variant/q17_large_gby_variant.3.query.sqlpp
@@ -20,38 +20,40 @@
 use tpch;
 
 
-select element {'t_partkey':l_partkey,'t_count':tpch.count(l),'t_avg_quantity':(0.2 * tpch.coll_avg((
+select element {'t_partkey':l_partkey,'t_count':COLL_COUNT((from g select value l)),
+    't_avg_quantity':(0.2 * COLL_AVG((
           select element i.l_quantity
-          from  l as i
-      ))),'t_max_suppkey':tpch.coll_max((
+          from  (from g select value l) as i
+    ))),'t_max_suppkey':COLL_MAX((
         select element i.l_suppkey
-        from  l as i
-    )),'t_max_linenumber':tpch.coll_max((
+        from  (from g select value l) as i
+    )),'t_max_linenumber':COLL_MAX((
         select element i.l_linenumber
-        from  l as i
-    )),'t_avg_extendedprice':tpch.coll_avg((
+        from  (from g select value l) as i
+    )),'t_avg_extendedprice':COLL_AVG((
         select element i.l_extendedprice
-        from  l as i
-    )),'t_avg_discount':tpch.coll_avg((
+        from  (from g select value l) as i
+    )),'t_avg_discount':COLL_AVG((
         select element i.l_discount
-        from  l as i
-    )),'t_avg_tax':tpch.coll_avg((
+        from  (from g select value l) as i
+    )),'t_avg_tax':COLL_AVG((
         select element i.l_tax
-        from  l as i
-    )),'t_max_shipdate':tpch.coll_max((
+        from  (from g select value l) as i
+    )),'t_max_shipdate':COLL_MAX((
         select element i.l_shipdate
-        from  l as i
-    )),'t_min_commitdate':tpch.coll_min((
+        from  (from g select value l) as i
+    )),'t_min_commitdate':COLL_MIN((
         select element i.l_commitdate
-        from  l as i
-    )),'t_min_receiptdate':tpch.coll_min((
+        from  (from g select value l) as i
+    )),'t_min_receiptdate':COLL_MIN((
         select element i.l_receiptdate
-        from  l as i
-    )),'t_max_comment':tpch.coll_max((
+        from  (from g select value l) as i
+    )),'t_max_comment':COLL_MAX((
         select element i.l_comment
-        from  l as i
+        from  (from g select value l) as i
     ))}
 from  LineItem as l
 group by l.l_partkey as l_partkey
+group as g
 order by l_partkey
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.query.sqlpp
index ddbbecc..010d03a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.query.sqlpp
@@ -24,16 +24,17 @@
 (
     select element {'t_partkey':l_partkey,'t_avg_quantity':(0.2 * tpch.coll_avg((
               select element i.l_quantity
-              from  l as i
+              from  (from g select value l) as i
           )))}
     from  LineItem as l
     group by l.l_partkey as l_partkey
+    group as g
 )
 };
 
-select element (tpch.coll_sum((
+select element (coll_sum((
       select element l.l_extendedprice
-      from  tpch.tmp() as t,
+      from  tmp() as t,
             LineItem as l,
             Part as p
       where p.p_partkey = l.l_partkey and p.p_container = 'MED BOX' and l.l_partkey = t.t_partkey and l.l_quantity < t.t_avg_quantity
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q18_large_volume_customer/q18_large_volume_customer.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q18_large_volume_customer/q18_large_volume_customer.3.query.sqlpp
index e0976a0..1a11819 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q18_large_volume_customer/q18_large_volume_customer.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q18_large_volume_customer/q18_large_volume_customer.3.query.sqlpp
@@ -22,21 +22,25 @@
 
 select element {'c_name':c_name,'c_custkey':c_custkey,'o_orderkey':o_orderkey,'o_orderdate':o_orderdate,'o_totalprice':o_totalprice,'sum_quantity':tpch.coll_sum((
         select element j.l_quantity
-        from  l as j
+        from  (from g select value l) as j
     ))}
 from  Customer as c,
       Orders as o,
       (
     select element {'l_orderkey':l_orderkey,'t_sum_quantity':tpch.coll_sum((
             select element i.l_quantity
-            from  l as i
+            from  (select value l from g2) as i
         ))}
     from  LineItem as l
     group by l.l_orderkey as l_orderkey
+    group as g2
 ) as t,
       LineItem as l
-where ((c.c_custkey = o.o_custkey) and (o.o_orderkey = t.l_orderkey) and (t.t_sum_quantity > 30) and (l.l_orderkey = t.l_orderkey))
-group by c.c_name as c_name,c.c_custkey as c_custkey,o.o_orderkey as o_orderkey,o.o_orderdate as o_orderdate,o.o_totalprice as o_totalprice
+where c.c_custkey = o.o_custkey and o.o_orderkey = t.l_orderkey and t.t_sum_quantity > 30
+      and l.l_orderkey = t.l_orderkey
+group by c.c_name as c_name,c.c_custkey as c_custkey,o.o_orderkey as o_orderkey,o.o_orderdate as o_orderdate,
+         o.o_totalprice as o_totalprice
+group as g
 order by o_totalprice desc,o_orderdate
 limit 100
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q19_discounted_revenue/q19_discounted_revenue.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q19_discounted_revenue/q19_discounted_revenue.3.query.sqlpp
index 9057ccb..df4e276 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q19_discounted_revenue/q19_discounted_revenue.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q19_discounted_revenue/q19_discounted_revenue.3.query.sqlpp
@@ -22,7 +22,7 @@
 
 set `import-private-functions` `true`;
 
-select element coll_sum((
+select element COLL_SUM((
     select element (l.l_extendedprice * (1 - l.l_discount))
     from  LineItem as l,
           Part as p
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q20_potential_part_promotion/q20_potential_part_promotion.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q20_potential_part_promotion/q20_potential_part_promotion.3.query.sqlpp
index 82e38bf..2355162 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q20_potential_part_promotion/q20_potential_part_promotion.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q20_potential_part_promotion/q20_potential_part_promotion.3.query.sqlpp
@@ -24,12 +24,13 @@
 from  (
     select distinct element {'ps_suppkey':pst1.ps_suppkey}
     from  (
-        select element {'l_partkey':l_partkey,'l_suppkey':l_suppkey,'sum_quantity':(0.5 * tpch.coll_sum((
+        select element {'l_partkey':l_partkey,'l_suppkey':l_suppkey,'sum_quantity':(0.5 * COLL_SUM((
                   select element i.l_quantity
-                  from  l as i
+                  from  (from g select value l) as i
               )))}
         from  LineItem as l
         group by l.l_partkey as l_partkey,l.l_suppkey as l_suppkey
+        group as g
     ) as t2,
           (
         select element {'ps_suppkey':ps.ps_suppkey,'ps_partkey':ps.ps_partkey,'ps_availqty':ps.ps_availqty}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.query.sqlpp
index 3ccb9b8..3963de0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.query.sqlpp
@@ -24,10 +24,10 @@
 (
     select element {'l_orderkey':l_orderkey,'count_suppkey':coll_count((
             select element i.l_suppkey
-            from  l2 as i
-        )),'max_suppkey':tpch.coll_max((
+            from  (from g1 select value g1.l2) as i
+        )),'max_suppkey': coll_max((
             select element i.l_suppkey
-            from  l2 as i
+            from  (from g1 select value g1.l2) as i
         ))}
     from  (
         select element {'l_orderkey':l_orderkey1,'l_suppkey':l_suppkey1}
@@ -35,16 +35,17 @@
         group by l.l_orderkey as l_orderkey1,l.l_suppkey as l_suppkey1
     ) as l2
     group by l2.l_orderkey as l_orderkey
+    group as g1
 )
 };
 declare function tmp2() {
 (
     select element {'l_orderkey':l_orderkey,'count_suppkey':coll_count((
             select element i.l_suppkey
-            from  l2 as i
-        )),'max_suppkey':tpch.coll_max((
+            from  (from g2 select value g2.l2) as i
+        )),'max_suppkey': coll_max((
             select element i.l_suppkey
-            from  l2 as i
+            from  (from g2 select value g2.l2) as i
         ))}
     from  (
         select element {'l_orderkey':l_orderkey1,'l_suppkey':l_suppkey1}
@@ -53,6 +54,7 @@
         group by l.l_orderkey as l_orderkey1,l.l_suppkey as l_suppkey1
     ) as l2
     group by l2.l_orderkey as l_orderkey
+    group as g2
 )
 };
 select element {'s_name':s_name,'numwait':numwait}
@@ -65,16 +67,17 @@
                         select element {'s_name':s.s_name,'s_suppkey':s.s_suppkey}
                         from  Nation as n,
                         Supplier as s
-                        where (s.s_nationkey = n.n_nationkey)
+                        where s.s_nationkey = n.n_nationkey
                    ) as ns,
                    Orders as o,
                    tpch.tmp1() as t1
             where ns.s_suppkey = l.l_suppkey and l.l_receiptdate > l.l_commitdate and o.o_orderkey = l.l_orderkey and l.l_orderkey = t1.l_orderkey
     ) as t3,
       tpch.tmp2() as t2
-    where ((t2.count_suppkey >= 0) and (t3.l_orderkey = t2.l_orderkey))
+    where t2.count_suppkey >= 0 and t3.l_orderkey = t2.l_orderkey
 ) as t4
 group by t4.s_name as s_name
-with  numwait as tpch.count(t4)
+group as g
+let  numwait = count(( from g select value t4 ))
 order by numwait desc,s_name
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q22_global_sales_opportunity/q22_global_sales_opportunity.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q22_global_sales_opportunity/q22_global_sales_opportunity.3.query.sqlpp
index 328c753..bdd7323 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q22_global_sales_opportunity/q22_global_sales_opportunity.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q22_global_sales_opportunity/q22_global_sales_opportunity.3.query.sqlpp
@@ -22,7 +22,7 @@
 
 declare function q22_customer_tmp() {
 (
-    select element {'c_acctbal':c.c_acctbal,'c_custkey':c.c_custkey,'cntrycode':tpch.substring(c.c_phone,1,2)}
+    select element {'c_acctbal':c.c_acctbal,'c_custkey':c.c_custkey,'cntrycode':SUBSTR(c.c_phone,1,2)}
     from  Customer as c
 )
 };
@@ -31,12 +31,13 @@
       from  Customer as c
       where (c.c_acctbal > 0.0)
   ))
-select element {'cntrycode':cntrycode,'numcust':tpch.count(ct),'totacctbal':tpch.coll_sum((
+select element {'cntrycode':cntrycode,'numcust':COLL_COUNT(( from g select value ct )),'totacctbal':COLL_SUM((
         select element i.c_acctbal
-        from  ct as i
+        from  (from g select value ct) as i
     ))}
 from  tpch.q22_customer_tmp() as ct
 where (ct.c_acctbal > avg)
 group by ct.cntrycode as cntrycode
+group as g
 order by cntrycode
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue562/query-issue562.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue562/query-issue562.3.query.sqlpp
index eaac9ce..dc54947 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue562/query-issue562.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue562/query-issue562.3.query.sqlpp
@@ -30,26 +30,27 @@
 (
     select element {'c_acctbal':c.c_acctbal,'c_custkey':c.c_custkey,'cntrycode':phone_substr}
     from  Customer as c
-    with  phone_substr as tpch.substring(c.c_phone,1,2)
+    let  phone_substr = tpch.substring(c.c_phone,1,2)
     where ((phone_substr = '13') or (phone_substr = '31') or (phone_substr = '23') or (phone_substr = '29') or (phone_substr = '30') or (phone_substr = '18') or (phone_substr = '17'))
 )
 };
 with  avg as tpch.coll_avg((
       select element c.c_acctbal
       from  Customer as c
-      with  phone_substr as tpch.substring(c.c_phone,1,2)
+      let  phone_substr = tpch.substring(c.c_phone,1,2)
       where ((c.c_acctbal > 0.0) and ((phone_substr = '13') or (phone_substr = '31') or (phone_substr = '23') or (phone_substr = '29') or (phone_substr = '30') or (phone_substr = '18') or (phone_substr = '17')))
   ))
 select element {'cntrycode':cntrycode,'numcust':tpch.count(ct),'totacctbal':tpch.coll_sum((
         select element i.c_acctbal
-        from  ct as i
+        from  (from g select value ct) as i
     ))}
 from  tpch.q22_customer_tmp() as ct
 where (coll_count((
     select element o
     from  Orders as o
-    where (ct.c_custkey = o.o_custkey)
+    where ct.c_custkey = o.o_custkey
 )) = 0)
 group by ct.cntrycode as cntrycode
+group as g
 order by cntrycode
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue601/query-issue601.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue601/query-issue601.3.query.sqlpp
index 4613e75..3f3a50a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue601/query-issue601.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue601/query-issue601.3.query.sqlpp
@@ -26,8 +26,9 @@
 use tpch;
 
 
-select element {'l_linenumber':l.l_linenumber,'count_order':tpch.count(l)}
+select element {'l_linenumber':l.l_linenumber,'count_order': count((from g select value g))}
 from  LineItem as l
 group by l.l_linenumber
+group as g
 order by l.l_linenumber
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue785-2/query-issue785-2.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue785-2/query-issue785-2.3.query.sqlpp
index a694e97..7a40cec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue785-2/query-issue785-2.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue785-2/query-issue785-2.3.query.sqlpp
@@ -27,30 +27,32 @@
 
 
 with  t as (
-      select element {'n_nationkey':nation.n_nationkey,'n_name':nation.n_name}
-      from  Nation as nation,
+       select element {'n_nationkey':nation.n_nationkey,'n_name':nation.n_name}
+       from  Nation as nation,
             SelectedNation as sn
-      where (nation.n_nationkey = sn.n_nationkey)
-  ),
+       where nation.n_nationkey = sn.n_nationkey
+      ),
       X as (
       select element {'nation_key':nation_key,'order_date':orderdate,'sum_price':sum}
       from  t as n,
             Customer as customer,
             Orders as orders
-      where ((orders.o_custkey = customer.c_custkey) and (customer.c_nationkey = n.n_nationkey))
+      where orders.o_custkey = customer.c_custkey and customer.c_nationkey = n.n_nationkey
       group by orders.o_orderdate as orderdate,n.n_nationkey as nation_key
-      with  sum as tpch.coll_sum((
-            select element o.o_totalprice
-            from  orders as o
-        ))
+      group as g2
+      let  sum = coll_sum((
+            select element g2.orders.o_totalprice
+            from g2
+      ))
   )
-select element {'nation_key':x.nation_key,'sum_price':(
-        select element {'orderdate':y.order_date,'sum_price':y.sum_price}
-        from  x as y
-        order by y.sum_price desc
+select element {'nation_key':nation_key,'sum_price':(
+        select element {'orderdate':g.x.order_date,'sum_price': g.x.sum_price}
+        from  g
+        order by g.x.sum_price desc
         limit 3
     )}
 from  X as x
-group by x.nation_key
-order by x.nation_key
+group by x.nation_key as nation_key
+group as g
+order by nation_key
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue785/query-issue785.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue785/query-issue785.3.query.sqlpp
index 214a7c2..6c7d7bd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue785/query-issue785.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue785/query-issue785.3.query.sqlpp
@@ -26,28 +26,32 @@
 use tpch;
 
 
-select element {'nation_key':x.nation_key,'sum_price':(
-        select element {'orderdate':od,'sum_price':sum}
-        from  x as i
-        group by i.order_date as od
-        with  sum as tpch.coll_sum((
-              select element s.sum_price
-              from  i as s
+select element {'nation_key':nation_key,'sum_price':(
+        select element {'orderdate': od,'sum_price':sum}
+        from  g as i
+        group by i.x.order_date as od
+        group as g2
+        let sum = coll_sum((
+              select element g2.i.x.sum_price
+              from g2
           ))
         order by sum desc
         limit 3
     )}
 from  (
-    select element {'nation_key':nation_key,'order_date':orderdate,'sum_price':tpch.coll_sum((
-            select element o.o_totalprice
-            from  orders as o
-        ))}
+    select element {'nation_key':nation_key,'order_date':orderdate,
+                    'sum_price': coll_sum((
+                        select value g3.orders.o_totalprice
+                        from g3
+                    ))}
     from  Nation as n,
           Customer as customer,
           Orders as orders
-    where ((orders.o_custkey = customer.c_custkey) and (customer.c_nationkey = n.n_nationkey))
+    where orders.o_custkey = customer.c_custkey and customer.c_nationkey = n.n_nationkey
     group by orders.o_orderdate as orderdate,n.n_nationkey as nation_key
+    group as g3
 ) as x
-group by x.nation_key
-order by x.nation_key
+group by x.nation_key as nation_key
+group as g
+order by nation_key
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue786/query-issue786.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue786/query-issue786.3.query.sqlpp
index 37e3c92..8d37f4d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue786/query-issue786.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue786/query-issue786.3.query.sqlpp
@@ -30,16 +30,17 @@
         select element {'order_date':orderdate,'sum_price':sum}
         from  Orders as orders,
               Customer as customer
-        where ((orders.o_custkey = customer.c_custkey) and (customer.c_nationkey = nation.n_nationkey))
+        where orders.o_custkey = customer.c_custkey and customer.c_nationkey = nation.n_nationkey
         group by orders.o_orderdate as orderdate
-        with  sum as tpch.coll_sum((
-              select element o.o_totalprice
-              from  orders as o
-          ))
+        group as g
+        let  sum = coll_sum((
+              select element g.orders.o_totalprice
+              from g
+        ))
         order by sum desc
         limit 3
     )}
 from  Nation as nation,
       SelectedNation as sn
-where (nation.n_nationkey = sn.sn_nationkey)
+where nation.n_nationkey = sn.sn_nationkey
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue810-2/query-issue810-2.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue810-2/query-issue810-2.3.query.sqlpp
index d75ea7b..38ba16f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue810-2/query-issue810-2.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue810-2/query-issue810-2.3.query.sqlpp
@@ -31,14 +31,15 @@
 where (l.l_shipdate <= '1998-09-02')
 /* +hash */
 group by l.l_returnflag as l_returnflag,l.l_linestatus as l_linestatus
+group as g
 with  cheaps as (
-      select element m
-      from  l as m
-      where (m.l_discount > 0.05)
+      select element m.l
+      from  g as m
+      where (m.l.l_discount > 0.05)
   ),
       charges as (
-      select element (a.l_extendedprice * (1 - a.l_discount) * (1 + a.l_tax))
-      from  l as a
+      select element (a.l.l_extendedprice * (1 - a.l.l_discount) * (1 + a.l.l_tax))
+      from  g as a
   )
 order by l_returnflag,l_linestatus
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue810-3/query-issue810-3.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue810-3/query-issue810-3.3.query.sqlpp
index f2656ee..555437a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue810-3/query-issue810-3.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue810-3/query-issue810-3.3.query.sqlpp
@@ -31,23 +31,24 @@
 where (l.l_shipdate <= '1998-09-02')
 /* +hash */
 group by l.l_returnflag as l_returnflag,l.l_linestatus as l_linestatus
-with  expensives as (
-      select element i.l_discount
-      from  l as i
-      where (i.l_discount <= 0.05)
+group as g
+let expensives = (
+      select element i.l.l_discount
+      from  g as i
+      where (i.l.l_discount <= 0.05)
   ),
-      cheaps as (
-      select element i
-      from  l as i
-      where (i.l_discount > 0.05)
+      cheaps = (
+      select element i.l
+      from  g as i
+      where (i.l.l_discount > 0.05)
   ),
-      charges as (
-      select element (i.l_extendedprice * (1 - i.l_discount) * (1 + i.l_tax))
-      from  l as i
+      charges = (
+      select element (i.l.l_extendedprice * (1 - i.l.l_discount) * (1 + i.l.l_tax))
+      from g as i
   ),
-      disc_prices as (
-      select element (i.l_extendedprice * (1 - i.l_discount))
-      from  l as i
+      disc_prices = (
+      select element (i.l.l_extendedprice * (1 - i.l.l_discount))
+      from g as i
   )
 order by l_returnflag,l_linestatus
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue810/query-issue810.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue810/query-issue810.3.query.sqlpp
index f4638f2..6877db8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue810/query-issue810.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue810/query-issue810.3.query.sqlpp
@@ -31,15 +31,16 @@
 where (l.l_shipdate <= '1998-09-02')
 /* +hash */
 group by l.l_returnflag as l_returnflag,l.l_linestatus as l_linestatus
-with  cheap as (
-      select element m
-      from  l as m
-      where (m.l_discount > 0.05)
+group as g
+let  cheap = (
+      select element m.l
+      from  g as m
+      where (m.l.l_discount > 0.05)
   ),
-      expensive as (
-      select element a
-      from  l as a
-      where (a.l_discount <= 0.05)
+      expensive = (
+      select element a.l
+      from  g as a
+      where (a.l.l_discount <= 0.05)
   )
 order by l_returnflag,l_linestatus
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue827/query-issue827.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue827/query-issue827.3.query.sqlpp
index e735107..c488ab1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue827/query-issue827.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/query-issue827/query-issue827.3.query.sqlpp
@@ -26,10 +26,10 @@
 use tpch;
 
 
-{'count_cheaps':coll_count((
+{'count_cheaps': coll_count((
     select element l.l_quantity
     from  LineItem as l
-)),'count_expensives':tpch.coll_sum((
+)),'count_expensives': coll_sum((
     select element e
     from  (
         select element l.l_extendedprice
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/nest_aggregate/nest_aggregate.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/nest_aggregate/nest_aggregate.3.query.sqlpp
index 8efcb7f..389a35d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/nest_aggregate/nest_aggregate.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/nest_aggregate/nest_aggregate.3.query.sqlpp
@@ -30,11 +30,12 @@
         select element {'order_date':orderdate,'sum_price':sum}
         from  Orders as orders,
               Customer as customer
-        where ((orders.o_custkey = customer.c_custkey) and (customer.c_nationkey = nation.n_nationkey))
+        where orders.o_custkey = customer.c_custkey and customer.c_nationkey = nation.n_nationkey
         group by orders.o_orderdate as orderdate
-        with  sum as tpch.coll_sum((
-              select element o.o_totalprice
-              from  orders as o
+        group as g
+        let  sum = coll_sum((
+              select element g.orders.o_totalprice
+              from  g
           ))
         order by sum
         limit 3
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/nest_aggregate2/nest_aggregate2.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/nest_aggregate2/nest_aggregate2.3.query.sqlpp
index 1b70f0e..e137e9f9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/nest_aggregate2/nest_aggregate2.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/nest_aggregate2/nest_aggregate2.3.query.sqlpp
@@ -32,9 +32,10 @@
               Customer as customer
         where ((orders.o_custkey = customer.c_custkey) and (customer.c_nationkey = nation.n_nationkey))
         group by orders.o_orderdate as orderdate
-        with  sum as tpch.coll_sum((
-              select element o.o_totalprice
-              from  orders as o
+        group as g
+        let  sum = tpch.coll_sum((
+              select element g.orders.o_totalprice
+              from  g
           ))
         order by sum
         limit 3
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp
index 9ac57fd..e42ce21 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.query.sqlpp
@@ -22,30 +22,31 @@
 set hash_merge "true"
 
 select element {'l_returnflag':l_returnflag,'l_linestatus':l_linestatus,'sum_qty':COLL_SUM((
-        select element i.l_quantity
-        from  l as i
+        select element i.l.l_quantity
+        from  g as i
     )),'sum_base_price':COLL_SUM((
-        select element i.l_extendedprice
-        from  l as i
+        select element i.l.l_extendedprice
+        from  g as i
     )),'sum_disc_price':COLL_SUM((
-        select element (i.l_extendedprice * (1 - i.l_discount))
-        from  l as i
+        select element (i.l.l_extendedprice * (1 - i.l.l_discount))
+        from  g as i
     )),'sum_charge':COLL_SUM((
-        select element (i.l_extendedprice * (1 - i.l_discount) * (1 + i.l_tax))
-        from  l as i
+        select element (i.l.l_extendedprice * (1 - i.l.l_discount) * (1 + i.l.l_tax))
+        from  g as i
     )),'ave_qty':COLL_AVG((
-        select element i.l_quantity
-        from  l as i
+        select element i.l.l_quantity
+        from  g as i
     )),'ave_price':COLL_AVG((
-        select element i.l_extendedprice
-        from  l as i
+        select element i.l.l_extendedprice
+        from g as i
     )),'ave_disc':COLL_AVG((
-        select element i.l_discount
-        from  l as i
-    )),'count_order':COLL_COUNT(l)}
+        select element i.l.l_discount
+        from  g as i
+    )),'count_order':COLL_COUNT(( from g select value l ))}
 from  LineItem as l
 where (l.l_shipdate <= '1998-09-02')
 /* +hash */
 group by l.l_returnflag as l_returnflag,l.l_linestatus as l_linestatus
+group as g
 order by l_returnflag,l_linestatus
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.query.sqlpp
index f6ad005..24180d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.query.sqlpp
@@ -46,8 +46,8 @@
 declare function tmp2() {
 (
     select element {'p_partkey':p_partkey,'ps_min_supplycost':COLL_MIN((
-            select element i.ps_supplycost
-            from  pssrn as i
+            select element i.pssrn.ps_supplycost
+            from  g as i
         ))}
     from  Part as p,
           (
@@ -69,6 +69,7 @@
     where p.p_partkey = pssrn.p_partkey and p.p_type like '%BRASS'
     /* +hash */
     group by pssrn.p_partkey as p_partkey
+    group as g
 )
 };
 select element {'s_acctbal':t1.s_acctbal,'s_name':t1.s_name,'n_name':t1.n_name,'p_partkey':t1.p_partkey,'p_mfgr':t1.p_mfgr,'s_address':t1.s_address,'s_phone':t1.s_phone,'s_comment':t1.s_comment}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q03_shipping_priority_nt/q03_shipping_priority_nt.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q03_shipping_priority_nt/q03_shipping_priority_nt.3.query.sqlpp
index ef0d15d..f076d71 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q03_shipping_priority_nt/q03_shipping_priority_nt.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q03_shipping_priority_nt/q03_shipping_priority_nt.3.query.sqlpp
@@ -27,9 +27,10 @@
 where (((c.c_mktsegment = 'BUILDING') and (c.c_custkey = o.o_custkey)) and ((l.l_orderkey = o.o_orderkey) and (o.o_orderdate < '1995-03-15') and (l.l_shipdate > '1995-03-15')))
 /* +hash */
 group by l.l_orderkey as l_orderkey,o.o_orderdate as o_orderdate,o.o_shippriority as o_shippriority
-with  revenue as COLL_SUM((
+group as g
+let  revenue = COLL_SUM((
       select element (i.l_extendedprice * (1 - i.l_discount))
-      from  l as i
+      from (from g select value l) as i
   ))
 order by revenue desc,o_orderdate
 limit 10
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q05_local_supplier_volume/q05_local_supplier_volume.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q05_local_supplier_volume/q05_local_supplier_volume.3.query.sqlpp
index f30ccbe..b82242e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q05_local_supplier_volume/q05_local_supplier_volume.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q05_local_supplier_volume/q05_local_supplier_volume.3.query.sqlpp
@@ -46,9 +46,10 @@
 where ((c.c_nationkey = o1.s_nationkey) and (c.c_custkey = o1.o_custkey))
 /* +hash */
 group by o1.n_name as n_name
-with  revenue as COLL_SUM((
+group as g
+let revenue = COLL_SUM((
       select element (i.l_extendedprice * (1 - i.l_discount))
-      from  o1 as i
+      from  (from g select value o1) as i
   ))
 order by revenue desc
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q07_volume_shipping/q07_volume_shipping.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q07_volume_shipping/q07_volume_shipping.3.query.sqlpp
index eacf03d..b6344b2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q07_volume_shipping/q07_volume_shipping.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q07_volume_shipping/q07_volume_shipping.3.query.sqlpp
@@ -49,9 +49,10 @@
 with  l_year0 as tpch.`get-year`(locs.l_shipdate)
 where ((locs.c_nationkey = t.c_nationkey) and (locs.s_nationkey = t.s_nationkey))
 group by t.supp_nation as supp_nation,t.cust_nation as cust_nation,l_year0 as l_year
-with  revenue as COLL_SUM((
-      select element (i.l_extendedprice * (1 - i.l_discount))
-      from  locs as i
+group as g
+let  revenue = COLL_SUM((
+      select element (i.locs.l_extendedprice * (1 - i.locs.l_discount))
+      from  g as i
   ))
 order by supp_nation,cust_nation,l_year
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q08_national_market_share/q08_national_market_share.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q08_national_market_share/q08_national_market_share.3.query.sqlpp
index 70b59e0..ce12ffd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q08_national_market_share/q08_national_market_share.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q08_national_market_share/q08_national_market_share.3.query.sqlpp
@@ -22,10 +22,10 @@
 
 select element {'year':year,'mkt_share':(COLL_SUM((
           select element case i.s_name = 'BRAZIL' when true then i.revenue when false then 0.0 end
-          from  t as i
+          from  (from g select value t) as i
       )) / COLL_SUM((
           select element i.revenue
-          from  t as i
+          from  (from g select value t) as i
       )))}
 from  (
     select element {'year':o_year,'revenue':(slnrcop.l_extendedprice * (1 - slnrcop.l_discount)),'s_name':n2.n_name}
@@ -65,5 +65,6 @@
     where (slnrcop.s_nationkey = n2.n_nationkey)
 ) as t
 group by t.year as year
+group as g
 order by year
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q09_product_type_profit_nt/q09_product_type_profit_nt.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q09_product_type_profit_nt/q09_product_type_profit_nt.3.query.sqlpp
index 0f56186..f469707 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q09_product_type_profit_nt/q09_product_type_profit_nt.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q09_product_type_profit_nt/q09_product_type_profit_nt.3.query.sqlpp
@@ -22,7 +22,7 @@
 
 select element {'nation':nation,'o_year':o_year,'sum_profit':tpch.coll_sum((
         select element pr.amount
-        from  profit as pr
+        from (from g select value profit) as pr
     ))}
 from  (
     select element {'nation':l3.n_name,'o_year':o_year,'amount':amount}
@@ -53,5 +53,6 @@
     where (o.o_orderkey = l3.l_orderkey)
 ) as profit
 group by profit.nation as nation,profit.o_year as o_year
+group as g
 order by nation,o_year desc
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q10_returned_item/q10_returned_item.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q10_returned_item/q10_returned_item.3.query.sqlpp
index 7278f81..e48e264 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q10_returned_item/q10_returned_item.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q10_returned_item/q10_returned_item.3.query.sqlpp
@@ -34,9 +34,10 @@
     where ((l.l_orderkey = ocn.o_orderkey) and (l.l_returnflag = 'R'))
 ) as locn
 group by locn.c_custkey as c_custkey,locn.c_name as c_name,locn.c_acctbal as c_acctbal,locn.c_phone as c_phone,locn.n_name as n_name,locn.c_address as c_address,locn.c_comment as c_comment
-with  revenue as tpch.coll_sum((
-      select element (i.l_extendedprice * (1 - i.l_discount))
-      from  locn as i
+group as g
+let revenue = coll_sum((
+      select element (i.locn.l_extendedprice * (1 - i.locn.l_discount))
+      from  g as i
   ))
 order by revenue desc
 limit 20
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q10_returned_item_int64/q10_returned_item_int64.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q10_returned_item_int64/q10_returned_item_int64.3.query.sqlpp
index 7278f81..e48e264 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q10_returned_item_int64/q10_returned_item_int64.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q10_returned_item_int64/q10_returned_item_int64.3.query.sqlpp
@@ -34,9 +34,10 @@
     where ((l.l_orderkey = ocn.o_orderkey) and (l.l_returnflag = 'R'))
 ) as locn
 group by locn.c_custkey as c_custkey,locn.c_name as c_name,locn.c_acctbal as c_acctbal,locn.c_phone as c_phone,locn.n_name as n_name,locn.c_address as c_address,locn.c_comment as c_comment
-with  revenue as tpch.coll_sum((
-      select element (i.l_extendedprice * (1 - i.l_discount))
-      from  locn as i
+group as g
+let revenue = coll_sum((
+      select element (i.locn.l_extendedprice * (1 - i.locn.l_discount))
+      from  g as i
   ))
 order by revenue desc
 limit 20
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q11_important_stock/q11_important_stock.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q11_important_stock/q11_important_stock.3.query.sqlpp
index 6956c4b..2fb8110 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q11_important_stock/q11_important_stock.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q11_important_stock/q11_important_stock.3.query.sqlpp
@@ -27,25 +27,26 @@
           select element {'s_suppkey':s.s_suppkey}
           from  Supplier as s,
                 Nation as n
-          where (s.s_nationkey = n.n_nationkey)
+          where s.s_nationkey = n.n_nationkey
       ) as sn
-      where (ps.ps_suppkey = sn.s_suppkey)
+      where ps.ps_suppkey = sn.s_suppkey
   ))
 select element {'partkey':t1.ps_partkey,'part_value':t1.part_value}
 from  (
     select element {'ps_partkey':ps_partkey,'part_value':COLL_SUM((
-            select element (i.ps_supplycost * i.ps_availqty)
-            from  ps as i
+            select element (i.ps.ps_supplycost * i.ps.ps_availqty)
+            from  g as i
         ))}
     from  Partsupp as ps,
           (
         select element {'s_suppkey':s.s_suppkey}
         from  Supplier as s,
               Nation as n
-        where (s.s_nationkey = n.n_nationkey)
+        where s.s_nationkey = n.n_nationkey
     ) as sn
-    where (ps.ps_suppkey = sn.s_suppkey)
+    where ps.ps_suppkey = sn.s_suppkey
     group by ps.ps_partkey as ps_partkey
+    group as g
 ) as t1
 where (t1.part_value > (sum * 0.00001))
 order by t1.part_value desc
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q12_shipping/q12_shipping.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q12_shipping/q12_shipping.3.query.sqlpp
index 58d0c9e..fa54051 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q12_shipping/q12_shipping.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q12_shipping/q12_shipping.3.query.sqlpp
@@ -21,16 +21,19 @@
 
 
 select element {'l_shipmode':l_shipmode,'high_line_count':COLL_SUM((
-        select element 
+        select element
             CASE i.o_orderpriority = '1-URGENT' OR i.o_orderpriority = '2-HIGH' WHEN true THEN 1 WHEN false THEN 0 END
-        from  o as i
+        from  (select value o from g) as i
     )),'low_line_count':COLL_SUM((
         select element case when i.o_orderpriority = '1-URGENT' OR i.o_orderpriority = '2-HIGH' then 0 else 1 end
-        from  o as i
+        from (select value o from g) as i
     ))}
 from  LineItem as l,
       Orders as o
-where ((o.o_orderkey = l.l_orderkey) and (l.l_commitdate < l.l_receiptdate) and (l.l_shipdate < l.l_commitdate) and (l.l_receiptdate >= '1994-01-01') and (l.l_receiptdate < '1995-01-01') and ((l.l_shipmode = 'MAIL') or (l.l_shipmode = 'SHIP')))
+where o.o_orderkey = l.l_orderkey and l.l_commitdate < l.l_receiptdate and l.l_shipdate < l.l_commitdate
+      and l.l_receiptdate >= '1994-01-01' and l.l_receiptdate < '1995-01-01'
+      and (l.l_shipmode = 'MAIL' or l.l_shipmode = 'SHIP')
 group by l.l_shipmode as l_shipmode
+group as g
 order by l_shipmode
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q13_customer_distribution/q13_customer_distribution.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q13_customer_distribution/q13_customer_distribution.3.query.sqlpp
index e68fcc4..4823a39 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q13_customer_distribution/q13_customer_distribution.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q13_customer_distribution/q13_customer_distribution.3.query.sqlpp
@@ -26,7 +26,7 @@
 from  (
     select element {'c_custkey':c_custkey,'c_count':COLL_SUM((
             select element i.o_orderkey_count
-            from  co as i
+            from (select value co from g2) as i
         ))}
     from  (
         select element {'c_custkey':c.c_custkey,'o_orderkey_count':coll_count((
@@ -37,8 +37,10 @@
         from  Customer as c
     ) as co
     group by co.c_custkey as c_custkey
+    group as g2
 ) as gco
 group by gco.c_count as c_count
-with  custdist as tpch.count(gco)
+group as g
+let  custdist = count(( select value gco from g ))
 order by custdist desc,c_count desc
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q14_promotion_effect/q14_promotion_effect.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q14_promotion_effect/q14_promotion_effect.3.query.sqlpp
index 89ade9d..2ec6a9c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q14_promotion_effect/q14_promotion_effect.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q14_promotion_effect/q14_promotion_effect.3.query.sqlpp
@@ -22,14 +22,14 @@
 
 select element (100.0 * COLL_SUM((
       select element case i.p_type like 'PROMO%' when true then i.l_extendedprice * (1 - i.l_discount) else 0.0 end
-      from  lp as i
+      from (from g select value lp) as i
   )) / COLL_SUM((
       select element (i.l_extendedprice * (1 - i.l_discount))
-      from  lp as i
+      from (from g select value lp) as i
   )))
 from  LineItem as l,
       Part as p
 let lp = {'p_type': p.p_type, 'l_extendedprice': l.l_extendedprice, 'l_discount': l.l_discount}
-where ((l.l_partkey = p.p_partkey) and (l.l_shipdate >= '1995-09-01') and (l.l_shipdate < '1995-10-01'))
+where l.l_partkey = p.p_partkey and l.l_shipdate >= '1995-09-01' and l.l_shipdate < '1995-10-01'
 group by 1 as t
 group as g(lp as lp);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q15_top_supplier/q15_top_supplier.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q15_top_supplier/q15_top_supplier.3.query.sqlpp
index 70b5d38..acd8537 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q15_top_supplier/q15_top_supplier.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q15_top_supplier/q15_top_supplier.3.query.sqlpp
@@ -23,20 +23,21 @@
 declare function revenue() {
 (
     select element {'supplier_no':l_suppkey,'total_revenue':COLL_SUM((
-            select element (i.l_extendedprice * (1 - i.l_discount))
-            from  l as i
+            select element (i.l.l_extendedprice * (1 - i.l.l_discount))
+            from g as i
         ))}
     from  LineItem as l
-    where ((l.l_shipdate >= '1996-01-01') and (l.l_shipdate < '1996-04-01'))
+    where l.l_shipdate >= '1996-01-01' and l.l_shipdate < '1996-04-01'
     group by l.l_suppkey as l_suppkey
+    group as g
 )
 };
 with  m as COLL_MAX((
       select element r2.total_revenue
-      from  tpch.revenue() as r2
+      from  revenue() as r2
   ))
 select element {'s_suppkey':s.s_suppkey,'s_name':s.s_name,'s_address':s.s_address,'s_phone':s.s_phone,'total_revenue':r.total_revenue}
 from  Supplier as s,
       tpch.revenue() as r
-where ((s.s_suppkey = r.supplier_no) and (r.total_revenue < (m + 0.000000001)) and (r.total_revenue > (m - 0.000000001)))
+where s.s_suppkey = r.supplier_no and r.total_revenue < (m + 0.000000001) and r.total_revenue > (m - 0.000000001)
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.query.sqlpp
index 0cdbcfd..47dc549 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.query.sqlpp
@@ -41,9 +41,10 @@
     group by t.p_brand as p_brand1,t.p_type as p_type1,t.p_size as p_size1,t.ps_suppkey as ps_suppkey1
 ) as t2
 group by t2.p_brand as p_brand,t2.p_type as p_type,t2.p_size as p_size
-with  supplier_cnt as COLL_COUNT((
+group as g
+let  supplier_cnt = COLL_COUNT((
       select element i.ps_suppkey
-      from  t2 as i
+      from  (from g select value t2) as i
   ))
 order by supplier_cnt desc,p_brand,p_type,p_size
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q17_large_gby_variant/q17_large_gby_variant.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q17_large_gby_variant/q17_large_gby_variant.3.query.sqlpp
index d39c75a..f22d29e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q17_large_gby_variant/q17_large_gby_variant.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q17_large_gby_variant/q17_large_gby_variant.3.query.sqlpp
@@ -20,38 +20,40 @@
 use tpch;
 
 
-select element {'t_partkey':l_partkey,'t_count':COLL_COUNT(l),'t_avg_quantity':(0.2 * COLL_AVG((
+select element {'t_partkey':l_partkey,'t_count':COLL_COUNT((from g select value l)),
+    't_avg_quantity':(0.2 * COLL_AVG((
           select element i.l_quantity
-          from  l as i
-      ))),'t_max_suppkey':COLL_MAX((
+          from  (from g select value l) as i
+    ))),'t_max_suppkey':COLL_MAX((
         select element i.l_suppkey
-        from  l as i
+        from  (from g select value l) as i
     )),'t_max_linenumber':COLL_MAX((
         select element i.l_linenumber
-        from  l as i
+        from  (from g select value l) as i
     )),'t_avg_extendedprice':COLL_AVG((
         select element i.l_extendedprice
-        from  l as i
+        from  (from g select value l) as i
     )),'t_avg_discount':COLL_AVG((
         select element i.l_discount
-        from  l as i
+        from  (from g select value l) as i
     )),'t_avg_tax':COLL_AVG((
         select element i.l_tax
-        from  l as i
+        from  (from g select value l) as i
     )),'t_max_shipdate':COLL_MAX((
         select element i.l_shipdate
-        from  l as i
+        from  (from g select value l) as i
     )),'t_min_commitdate':COLL_MIN((
         select element i.l_commitdate
-        from  l as i
+        from  (from g select value l) as i
     )),'t_min_receiptdate':COLL_MIN((
         select element i.l_receiptdate
-        from  l as i
+        from  (from g select value l) as i
     )),'t_max_comment':COLL_MAX((
         select element i.l_comment
-        from  l as i
+        from  (from g select value l) as i
     ))}
 from  LineItem as l
 group by l.l_partkey as l_partkey
+group as g
 order by l_partkey
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.query.sqlpp
index ddbbecc..010d03a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.query.sqlpp
@@ -24,16 +24,17 @@
 (
     select element {'t_partkey':l_partkey,'t_avg_quantity':(0.2 * tpch.coll_avg((
               select element i.l_quantity
-              from  l as i
+              from  (from g select value l) as i
           )))}
     from  LineItem as l
     group by l.l_partkey as l_partkey
+    group as g
 )
 };
 
-select element (tpch.coll_sum((
+select element (coll_sum((
       select element l.l_extendedprice
-      from  tpch.tmp() as t,
+      from  tmp() as t,
             LineItem as l,
             Part as p
       where p.p_partkey = l.l_partkey and p.p_container = 'MED BOX' and l.l_partkey = t.t_partkey and l.l_quantity < t.t_avg_quantity
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q18_large_volume_customer/q18_large_volume_customer.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q18_large_volume_customer/q18_large_volume_customer.3.query.sqlpp
index e0976a0..1a11819 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q18_large_volume_customer/q18_large_volume_customer.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q18_large_volume_customer/q18_large_volume_customer.3.query.sqlpp
@@ -22,21 +22,25 @@
 
 select element {'c_name':c_name,'c_custkey':c_custkey,'o_orderkey':o_orderkey,'o_orderdate':o_orderdate,'o_totalprice':o_totalprice,'sum_quantity':tpch.coll_sum((
         select element j.l_quantity
-        from  l as j
+        from  (from g select value l) as j
     ))}
 from  Customer as c,
       Orders as o,
       (
     select element {'l_orderkey':l_orderkey,'t_sum_quantity':tpch.coll_sum((
             select element i.l_quantity
-            from  l as i
+            from  (select value l from g2) as i
         ))}
     from  LineItem as l
     group by l.l_orderkey as l_orderkey
+    group as g2
 ) as t,
       LineItem as l
-where ((c.c_custkey = o.o_custkey) and (o.o_orderkey = t.l_orderkey) and (t.t_sum_quantity > 30) and (l.l_orderkey = t.l_orderkey))
-group by c.c_name as c_name,c.c_custkey as c_custkey,o.o_orderkey as o_orderkey,o.o_orderdate as o_orderdate,o.o_totalprice as o_totalprice
+where c.c_custkey = o.o_custkey and o.o_orderkey = t.l_orderkey and t.t_sum_quantity > 30
+      and l.l_orderkey = t.l_orderkey
+group by c.c_name as c_name,c.c_custkey as c_custkey,o.o_orderkey as o_orderkey,o.o_orderdate as o_orderdate,
+         o.o_totalprice as o_totalprice
+group as g
 order by o_totalprice desc,o_orderdate
 limit 100
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q20_potential_part_promotion/q20_potential_part_promotion.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q20_potential_part_promotion/q20_potential_part_promotion.3.query.sqlpp
index 2bc3b25..2355162 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q20_potential_part_promotion/q20_potential_part_promotion.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q20_potential_part_promotion/q20_potential_part_promotion.3.query.sqlpp
@@ -26,10 +26,11 @@
     from  (
         select element {'l_partkey':l_partkey,'l_suppkey':l_suppkey,'sum_quantity':(0.5 * COLL_SUM((
                   select element i.l_quantity
-                  from  l as i
+                  from  (from g select value l) as i
               )))}
         from  LineItem as l
         group by l.l_partkey as l_partkey,l.l_suppkey as l_suppkey
+        group as g
     ) as t2,
           (
         select element {'ps_suppkey':ps.ps_suppkey,'ps_partkey':ps.ps_partkey,'ps_availqty':ps.ps_availqty}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.query.sqlpp
index 3ccb9b8..3963de0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.query.sqlpp
@@ -24,10 +24,10 @@
 (
     select element {'l_orderkey':l_orderkey,'count_suppkey':coll_count((
             select element i.l_suppkey
-            from  l2 as i
-        )),'max_suppkey':tpch.coll_max((
+            from  (from g1 select value g1.l2) as i
+        )),'max_suppkey': coll_max((
             select element i.l_suppkey
-            from  l2 as i
+            from  (from g1 select value g1.l2) as i
         ))}
     from  (
         select element {'l_orderkey':l_orderkey1,'l_suppkey':l_suppkey1}
@@ -35,16 +35,17 @@
         group by l.l_orderkey as l_orderkey1,l.l_suppkey as l_suppkey1
     ) as l2
     group by l2.l_orderkey as l_orderkey
+    group as g1
 )
 };
 declare function tmp2() {
 (
     select element {'l_orderkey':l_orderkey,'count_suppkey':coll_count((
             select element i.l_suppkey
-            from  l2 as i
-        )),'max_suppkey':tpch.coll_max((
+            from  (from g2 select value g2.l2) as i
+        )),'max_suppkey': coll_max((
             select element i.l_suppkey
-            from  l2 as i
+            from  (from g2 select value g2.l2) as i
         ))}
     from  (
         select element {'l_orderkey':l_orderkey1,'l_suppkey':l_suppkey1}
@@ -53,6 +54,7 @@
         group by l.l_orderkey as l_orderkey1,l.l_suppkey as l_suppkey1
     ) as l2
     group by l2.l_orderkey as l_orderkey
+    group as g2
 )
 };
 select element {'s_name':s_name,'numwait':numwait}
@@ -65,16 +67,17 @@
                         select element {'s_name':s.s_name,'s_suppkey':s.s_suppkey}
                         from  Nation as n,
                         Supplier as s
-                        where (s.s_nationkey = n.n_nationkey)
+                        where s.s_nationkey = n.n_nationkey
                    ) as ns,
                    Orders as o,
                    tpch.tmp1() as t1
             where ns.s_suppkey = l.l_suppkey and l.l_receiptdate > l.l_commitdate and o.o_orderkey = l.l_orderkey and l.l_orderkey = t1.l_orderkey
     ) as t3,
       tpch.tmp2() as t2
-    where ((t2.count_suppkey >= 0) and (t3.l_orderkey = t2.l_orderkey))
+    where t2.count_suppkey >= 0 and t3.l_orderkey = t2.l_orderkey
 ) as t4
 group by t4.s_name as s_name
-with  numwait as tpch.count(t4)
+group as g
+let  numwait = count(( from g select value t4 ))
 order by numwait desc,s_name
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q22_global_sales_opportunity/q22_global_sales_opportunity.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q22_global_sales_opportunity/q22_global_sales_opportunity.3.query.sqlpp
index 274adbc..bdd7323 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q22_global_sales_opportunity/q22_global_sales_opportunity.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/q22_global_sales_opportunity/q22_global_sales_opportunity.3.query.sqlpp
@@ -31,12 +31,13 @@
       from  Customer as c
       where (c.c_acctbal > 0.0)
   ))
-select element {'cntrycode':cntrycode,'numcust':COLL_COUNT(ct),'totacctbal':COLL_SUM((
+select element {'cntrycode':cntrycode,'numcust':COLL_COUNT(( from g select value ct )),'totacctbal':COLL_SUM((
         select element i.c_acctbal
-        from  ct as i
+        from  (from g select value ct) as i
     ))}
 from  tpch.q22_customer_tmp() as ct
 where (ct.c_acctbal > avg)
 group by ct.cntrycode as cntrycode
+group as g
 order by cntrycode
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue562/query-issue562.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue562/query-issue562.3.query.sqlpp
index eaac9ce..dc54947 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue562/query-issue562.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue562/query-issue562.3.query.sqlpp
@@ -30,26 +30,27 @@
 (
     select element {'c_acctbal':c.c_acctbal,'c_custkey':c.c_custkey,'cntrycode':phone_substr}
     from  Customer as c
-    with  phone_substr as tpch.substring(c.c_phone,1,2)
+    let  phone_substr = tpch.substring(c.c_phone,1,2)
     where ((phone_substr = '13') or (phone_substr = '31') or (phone_substr = '23') or (phone_substr = '29') or (phone_substr = '30') or (phone_substr = '18') or (phone_substr = '17'))
 )
 };
 with  avg as tpch.coll_avg((
       select element c.c_acctbal
       from  Customer as c
-      with  phone_substr as tpch.substring(c.c_phone,1,2)
+      let  phone_substr = tpch.substring(c.c_phone,1,2)
       where ((c.c_acctbal > 0.0) and ((phone_substr = '13') or (phone_substr = '31') or (phone_substr = '23') or (phone_substr = '29') or (phone_substr = '30') or (phone_substr = '18') or (phone_substr = '17')))
   ))
 select element {'cntrycode':cntrycode,'numcust':tpch.count(ct),'totacctbal':tpch.coll_sum((
         select element i.c_acctbal
-        from  ct as i
+        from  (from g select value ct) as i
     ))}
 from  tpch.q22_customer_tmp() as ct
 where (coll_count((
     select element o
     from  Orders as o
-    where (ct.c_custkey = o.o_custkey)
+    where ct.c_custkey = o.o_custkey
 )) = 0)
 group by ct.cntrycode as cntrycode
+group as g
 order by cntrycode
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue601/query-issue601.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue601/query-issue601.3.query.sqlpp
index 4613e75..3f3a50a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue601/query-issue601.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue601/query-issue601.3.query.sqlpp
@@ -26,8 +26,9 @@
 use tpch;
 
 
-select element {'l_linenumber':l.l_linenumber,'count_order':tpch.count(l)}
+select element {'l_linenumber':l.l_linenumber,'count_order': count((from g select value g))}
 from  LineItem as l
 group by l.l_linenumber
+group as g
 order by l.l_linenumber
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue638/query-issue638.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue638/query-issue638.3.query.sqlpp
index 6da0192..46a278c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue638/query-issue638.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue638/query-issue638.3.query.sqlpp
@@ -27,8 +27,8 @@
 
 
 select element {'nation':nation,'o_year':o_year,'sum_profit':tpch.coll_sum((
-        select element pr.amount
-        from  profit as pr
+        select element g.profit.amount
+        from  g
     ))}
 from  (
     select element {'nation':l3.n_name,'o_year':o_year,'amount':amount}
@@ -59,5 +59,6 @@
     where (o.o_orderkey = l3.l_orderkey)
 ) as profit
 group by profit.nation as nation,profit.o_year as o_year
+group as g
 order by nation,o_year desc
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue785-2/query-issue785-2.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue785-2/query-issue785-2.3.query.sqlpp
index 7141505..7a40cec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue785-2/query-issue785-2.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue785-2/query-issue785-2.3.query.sqlpp
@@ -27,30 +27,32 @@
 
 
 with  t as (
-      select element {'n_nationkey':nation.n_nationkey,'n_name':nation.n_name}
-      from  Nation as nation,
+       select element {'n_nationkey':nation.n_nationkey,'n_name':nation.n_name}
+       from  Nation as nation,
             SelectedNation as sn
-      where (nation.n_nationkey = sn.n_nationkey)
-  ),
+       where nation.n_nationkey = sn.n_nationkey
+      ),
       X as (
       select element {'nation_key':nation_key,'order_date':orderdate,'sum_price':sum}
       from  t as n,
             Customer as customer,
             Orders as orders
-      where ((orders.o_custkey = customer.c_custkey) and (customer.c_nationkey = n.n_nationkey))
+      where orders.o_custkey = customer.c_custkey and customer.c_nationkey = n.n_nationkey
       group by orders.o_orderdate as orderdate,n.n_nationkey as nation_key
-      with  sum as tpch.coll_sum((
-            select element o.o_totalprice
-            from  orders as o
-        ))
+      group as g2
+      let  sum = coll_sum((
+            select element g2.orders.o_totalprice
+            from g2
+      ))
   )
 select element {'nation_key':nation_key,'sum_price':(
-        select element {'orderdate':y.order_date,'sum_price':y.sum_price}
-        from  x as y
-        order by y.sum_price desc
+        select element {'orderdate':g.x.order_date,'sum_price': g.x.sum_price}
+        from  g
+        order by g.x.sum_price desc
         limit 3
     )}
 from  X as x
 group by x.nation_key as nation_key
+group as g
 order by nation_key
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue785/query-issue785.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue785/query-issue785.3.query.sqlpp
index 1f5e8e3..6c7d7bd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue785/query-issue785.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue785/query-issue785.3.query.sqlpp
@@ -27,27 +27,31 @@
 
 
 select element {'nation_key':nation_key,'sum_price':(
-        select element {'orderdate':od,'sum_price':sum}
-        from  x as i
-        group by i.order_date as od
-        with  sum as tpch.coll_sum((
-              select element s.sum_price
-              from  i as s
+        select element {'orderdate': od,'sum_price':sum}
+        from  g as i
+        group by i.x.order_date as od
+        group as g2
+        let sum = coll_sum((
+              select element g2.i.x.sum_price
+              from g2
           ))
         order by sum desc
         limit 3
     )}
 from  (
-    select element {'nation_key':nation_key,'order_date':orderdate,'sum_price':tpch.coll_sum((
-            select element o.o_totalprice
-            from  orders as o
-        ))}
+    select element {'nation_key':nation_key,'order_date':orderdate,
+                    'sum_price': coll_sum((
+                        select value g3.orders.o_totalprice
+                        from g3
+                    ))}
     from  Nation as n,
           Customer as customer,
           Orders as orders
-    where ((orders.o_custkey = customer.c_custkey) and (customer.c_nationkey = n.n_nationkey))
+    where orders.o_custkey = customer.c_custkey and customer.c_nationkey = n.n_nationkey
     group by orders.o_orderdate as orderdate,n.n_nationkey as nation_key
+    group as g3
 ) as x
 group by x.nation_key as nation_key
+group as g
 order by nation_key
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue786/query-issue786.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue786/query-issue786.3.query.sqlpp
index 37e3c92..8d37f4d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue786/query-issue786.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue786/query-issue786.3.query.sqlpp
@@ -30,16 +30,17 @@
         select element {'order_date':orderdate,'sum_price':sum}
         from  Orders as orders,
               Customer as customer
-        where ((orders.o_custkey = customer.c_custkey) and (customer.c_nationkey = nation.n_nationkey))
+        where orders.o_custkey = customer.c_custkey and customer.c_nationkey = nation.n_nationkey
         group by orders.o_orderdate as orderdate
-        with  sum as tpch.coll_sum((
-              select element o.o_totalprice
-              from  orders as o
-          ))
+        group as g
+        let  sum = coll_sum((
+              select element g.orders.o_totalprice
+              from g
+        ))
         order by sum desc
         limit 3
     )}
 from  Nation as nation,
       SelectedNation as sn
-where (nation.n_nationkey = sn.sn_nationkey)
+where nation.n_nationkey = sn.sn_nationkey
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue810-2/query-issue810-2.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue810-2/query-issue810-2.3.query.sqlpp
index d75ea7b..38ba16f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue810-2/query-issue810-2.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue810-2/query-issue810-2.3.query.sqlpp
@@ -31,14 +31,15 @@
 where (l.l_shipdate <= '1998-09-02')
 /* +hash */
 group by l.l_returnflag as l_returnflag,l.l_linestatus as l_linestatus
+group as g
 with  cheaps as (
-      select element m
-      from  l as m
-      where (m.l_discount > 0.05)
+      select element m.l
+      from  g as m
+      where (m.l.l_discount > 0.05)
   ),
       charges as (
-      select element (a.l_extendedprice * (1 - a.l_discount) * (1 + a.l_tax))
-      from  l as a
+      select element (a.l.l_extendedprice * (1 - a.l.l_discount) * (1 + a.l.l_tax))
+      from  g as a
   )
 order by l_returnflag,l_linestatus
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue810-3/query-issue810-3.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue810-3/query-issue810-3.3.query.sqlpp
index f2656ee..f25f99d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue810-3/query-issue810-3.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue810-3/query-issue810-3.3.query.sqlpp
@@ -31,23 +31,24 @@
 where (l.l_shipdate <= '1998-09-02')
 /* +hash */
 group by l.l_returnflag as l_returnflag,l.l_linestatus as l_linestatus
-with  expensives as (
+group as g
+let expensives = (
       select element i.l_discount
-      from  l as i
+      from  (from g select value l) as i
       where (i.l_discount <= 0.05)
   ),
-      cheaps as (
+      cheaps = (
       select element i
-      from  l as i
+      from  (from g select value l) as i
       where (i.l_discount > 0.05)
   ),
-      charges as (
+      charges = (
       select element (i.l_extendedprice * (1 - i.l_discount) * (1 + i.l_tax))
-      from  l as i
+      from  (from g select value l)  as i
   ),
-      disc_prices as (
+      disc_prices = (
       select element (i.l_extendedprice * (1 - i.l_discount))
-      from  l as i
+      from  (from g select value l)  as i
   )
 order by l_returnflag,l_linestatus
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue810/query-issue810.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue810/query-issue810.3.query.sqlpp
index f4638f2..6877db8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue810/query-issue810.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue810/query-issue810.3.query.sqlpp
@@ -31,15 +31,16 @@
 where (l.l_shipdate <= '1998-09-02')
 /* +hash */
 group by l.l_returnflag as l_returnflag,l.l_linestatus as l_linestatus
-with  cheap as (
-      select element m
-      from  l as m
-      where (m.l_discount > 0.05)
+group as g
+let  cheap = (
+      select element m.l
+      from  g as m
+      where (m.l.l_discount > 0.05)
   ),
-      expensive as (
-      select element a
-      from  l as a
-      where (a.l_discount <= 0.05)
+      expensive = (
+      select element a.l
+      from  g as a
+      where (a.l.l_discount <= 0.05)
   )
 order by l_returnflag,l_linestatus
 ;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue827/query-issue827.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue827/query-issue827.3.query.sqlpp
index e735107..c488ab1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue827/query-issue827.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch/query-issue827/query-issue827.3.query.sqlpp
@@ -26,10 +26,10 @@
 use tpch;
 
 
-{'count_cheaps':coll_count((
+{'count_cheaps': coll_count((
     select element l.l_quantity
     from  LineItem as l
-)),'count_expensives':tpch.coll_sum((
+)),'count_expensives': coll_sum((
     select element e
     from  (
         select element l.l_extendedprice
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.adm
index 055512a..6463d6d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.adm
@@ -1,44 +1,44 @@
-distribute result [$$19]
+distribute result [$$17]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
   exchange
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$19])
+    project ([$$17])
     -- STREAM_PROJECT  |PARTITIONED|
-      assign [$$19] <- [{"deptId": $#1, "star_cost": $$22}]
+      assign [$$17] <- [{"deptId": $#1, "star_cost": $$20}]
       -- ASSIGN  |PARTITIONED|
         exchange
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          group by ([$#1 := $$27]) decor ([]) {
-                    aggregate [$$22] <- [agg-sql-sum($$26)]
+          group by ([$#1 := $$25]) decor ([]) {
+                    aggregate [$$20] <- [agg-sql-sum($$24)]
                     -- AGGREGATE  |LOCAL|
                       nested tuple source
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
                  }
-          -- SORT_GROUP_BY[$$27]  |PARTITIONED|
+          -- SORT_GROUP_BY[$$25]  |PARTITIONED|
             exchange
-            -- HASH_PARTITION_EXCHANGE [$$27]  |PARTITIONED|
-              group by ([$$27 := $$20]) decor ([]) {
-                        aggregate [$$26] <- [agg-local-sql-sum($$17)]
+            -- HASH_PARTITION_EXCHANGE [$$25]  |PARTITIONED|
+              group by ([$$25 := $$18]) decor ([]) {
+                        aggregate [$$24] <- [agg-local-sql-sum($$15)]
                         -- AGGREGATE  |LOCAL|
                           nested tuple source
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
                      }
-              -- SORT_GROUP_BY[$$20]  |PARTITIONED|
+              -- SORT_GROUP_BY[$$18]  |PARTITIONED|
                 exchange
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$17, $$20])
+                  project ([$$18, $$15])
                   -- STREAM_PROJECT  |PARTITIONED|
-                    assign [$$20] <- [substring($$24.getField("department_id"), 1)]
+                    assign [$$18] <- [substring($$22.getField("department_id"), 1)]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$17, $$24])
+                      project ([$$22, $$15])
                       -- STREAM_PROJECT  |PARTITIONED|
-                        assign [$$17, $$24] <- [$$e.getField("salary"), $$e.getField("dept")]
+                        assign [$$15, $$22] <- [$$e.getField("salary"), $$e.getField("dept")]
                         -- ASSIGN  |PARTITIONED|
                           project ([$$e])
                           -- STREAM_PROJECT  |PARTITIONED|
                             exchange
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$21, $$e] <- gby.Employee
+                              data-scan []<-[$$19, $$e] <- gby.Employee
                               -- DATASOURCE_SCAN  |PARTITIONED|
                                 exchange
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.adm
index d7f1893..864391b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.adm
@@ -1,40 +1,40 @@
-distribute result [$$18]
+distribute result [$$16]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
   exchange
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$18])
+    project ([$$16])
     -- STREAM_PROJECT  |PARTITIONED|
-      assign [$$18] <- [{"deptId": $#1, "star_cost": $$21}]
+      assign [$$16] <- [{"deptId": $#1, "star_cost": $$19}]
       -- ASSIGN  |PARTITIONED|
         exchange
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          group by ([$#1 := $$25]) decor ([]) {
-                    aggregate [$$21] <- [agg-sql-sum($$24)]
+          group by ([$#1 := $$23]) decor ([]) {
+                    aggregate [$$19] <- [agg-sql-sum($$22)]
                     -- AGGREGATE  |LOCAL|
                       nested tuple source
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
                  }
-          -- SORT_GROUP_BY[$$25]  |PARTITIONED|
+          -- SORT_GROUP_BY[$$23]  |PARTITIONED|
             exchange
-            -- HASH_PARTITION_EXCHANGE [$$25]  |PARTITIONED|
-              group by ([$$25 := $$19]) decor ([]) {
-                        aggregate [$$24] <- [agg-local-sql-sum($$16)]
+            -- HASH_PARTITION_EXCHANGE [$$23]  |PARTITIONED|
+              group by ([$$23 := $$17]) decor ([]) {
+                        aggregate [$$22] <- [agg-local-sql-sum($$14)]
                         -- AGGREGATE  |LOCAL|
                           nested tuple source
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
                      }
-              -- SORT_GROUP_BY[$$19]  |PARTITIONED|
+              -- SORT_GROUP_BY[$$17]  |PARTITIONED|
                 exchange
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$16, $$19])
+                  project ([$$17, $$14])
                   -- STREAM_PROJECT  |PARTITIONED|
-                    assign [$$19, $$16] <- [substring($$e.getField(1), 1), $$e.getField(2)]
+                    assign [$$17, $$14] <- [substring($$e.getField(1), 1), $$e.getField(2)]
                     -- ASSIGN  |PARTITIONED|
                       project ([$$e])
                       -- STREAM_PROJECT  |PARTITIONED|
                         exchange
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$20, $$e] <- gby.Employee
+                          data-scan []<-[$$18, $$e] <- gby.Employee
                           -- DATASOURCE_SCAN  |PARTITIONED|
                             exchange
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_groupby/big_object_groupby.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_groupby/big_object_groupby.3.ast
index 885385d..1b4831f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_groupby/big_object_groupby.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_groupby/big_object_groupby.3.ast
@@ -10,7 +10,18 @@
   (
     LiteralExpr [STRING] [lines]
     :
-    Variable [ Name=$i ]
+    (
+      SELECT ELEMENT [
+      FunctionCall Metadata.resolve@-1[
+        LiteralExpr [STRING] [i]
+        Variable [ Name=$partkey ]
+        Variable [ Name=$g ]
+      ]
+      ]
+      FROM [        Variable [ Name=$g ]
+        AS Variable [ Name=$g ]
+      ]
+    )
   )
 ]
 ]
@@ -26,7 +37,7 @@
     Variable [ Name=$i ]
     Field=l_partkey
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     i:=Variable [ Name=$i ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at02/at02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at02/at02.3.ast
index 755ff18..e97fefb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at02/at02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at02/at02.3.ast
@@ -30,14 +30,20 @@
       ]
       FROM [        (
           SELECT ELEMENT [
-          Variable [ Name=$ii ]
+          FieldAccessor [
+            Variable [ Name=$ii ]
+            Field=m
           ]
-          FROM [            Variable [ Name=$m ]
+          ]
+          FROM [            Variable [ Name=$gr ]
             AS Variable [ Name=$ii ]
           ]
           Orderby
             FieldAccessor [
-              Variable [ Name=$ii ]
+              FieldAccessor [
+                Variable [ Name=$ii ]
+                Field=m
+              ]
               Field=message-id
             ]
             ASC
@@ -80,7 +86,7 @@
     Variable [ Name=$u ]
     Field=id
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$gr ]
   (
     u:=Variable [ Name=$u ]
     m:=Variable [ Name=$m ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at03/at03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at03/at03.3.ast
index 426052c..78388da 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at03/at03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at03/at03.3.ast
@@ -30,14 +30,20 @@
       ]
       FROM [        (
           SELECT ELEMENT [
-          Variable [ Name=$i1 ]
+          FieldAccessor [
+            Variable [ Name=$i1 ]
+            Field=i
           ]
-          FROM [            Variable [ Name=$i ]
+          ]
+          FROM [            Variable [ Name=$g ]
             AS Variable [ Name=$i1 ]
           ]
           Orderby
             FieldAccessor [
-              Variable [ Name=$i1 ]
+              FieldAccessor [
+                Variable [ Name=$i1 ]
+                Field=i
+              ]
               Field=name
             ]
             ASC
@@ -72,7 +78,7 @@
       Field=user-since
     ]
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     i:=Variable [ Name=$i ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at04/at04.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at04/at04.3.ast
index 1efc828..e99b1b6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at04/at04.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at04/at04.3.ast
@@ -30,14 +30,20 @@
       ]
       FROM [        (
           SELECT ELEMENT [
-          Variable [ Name=$i1 ]
+          FieldAccessor [
+            Variable [ Name=$i1 ]
+            Field=i
           ]
-          FROM [            Variable [ Name=$i ]
+          ]
+          FROM [            Variable [ Name=$g ]
             AS Variable [ Name=$i1 ]
           ]
           Orderby
             FieldAccessor [
-              Variable [ Name=$i1 ]
+              FieldAccessor [
+                Variable [ Name=$i1 ]
+                Field=i
+              ]
               Field=o_orderkey
             ]
             ASC
@@ -70,7 +76,7 @@
     Variable [ Name=$i ]
     Field=o_custkey
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     i:=Variable [ Name=$i ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at05/at05.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at05/at05.3.ast
index 12ed5fa..33ebf91 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at05/at05.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at05/at05.3.ast
@@ -14,7 +14,17 @@
       (
         LiteralExpr [STRING] [x]
         :
-        Variable [ Name=$x ]
+        (
+          SELECT ELEMENT [
+          FieldAccessor [
+            Variable [ Name=$g ]
+            Field=x
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
       )
       (
         LiteralExpr [STRING] [uid]
@@ -44,7 +54,7 @@
         Variable [ Name=$x ]
         Field=o_custkey
       ]
-      GROUP AS Variable [ Name=#1 ]
+      GROUP AS Variable [ Name=$g ]
       (
         x:=Variable [ Name=$x ]
       )
@@ -76,14 +86,20 @@
         ]
         FROM [          (
             SELECT ELEMENT [
-            Variable [ Name=$xxx ]
+            FieldAccessor [
+              Variable [ Name=$xxx ]
+              Field=x
             ]
-            FROM [              Variable [ Name=$x ]
+            ]
+            FROM [              Variable [ Name=$g ]
               AS Variable [ Name=$xxx ]
             ]
             Orderby
               FieldAccessor [
-                Variable [ Name=$xxx ]
+                FieldAccessor [
+                  Variable [ Name=$xxx ]
+                  Field=x
+                ]
                 Field=o_orderkey
               ]
               ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at06/at06.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at06/at06.3.ast
index d913c8b..11063f7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at06/at06.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at06/at06.3.ast
@@ -55,7 +55,11 @@
         LiteralExpr [STRING] [partkey]
         :
         FieldAccessor [
-          Variable [ Name=$i ]
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [i]
+            Variable [ Name=$g ]
+            Variable [ Name=$l_partkey ]
+          ]
           Field=l_partkey
         ]
       )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/query-issue550/query-issue550.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/query-issue550/query-issue550.3.ast
index e5a516d..41a157e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/query-issue550/query-issue550.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/query-issue550/query-issue550.3.ast
@@ -159,9 +159,12 @@
     :
     (
       SELECT ELEMENT [
-      Variable [ Name=$srec ]
+      FieldAccessor [
+        Variable [ Name=$srec ]
+        Field=s
       ]
-      FROM [        Variable [ Name=$s ]
+      ]
+      FROM [        Variable [ Name=$g ]
         AS Variable [ Name=$srec ]
       ]
     )
@@ -178,7 +181,7 @@
     Variable [ Name=$s ]
     Field=uid
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     s:=Variable [ Name=$s ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_02/hdfs_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_02/hdfs_02.3.ast
index f1ac649..ba6fb25 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_02/hdfs_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_02/hdfs_02.3.ast
@@ -11,7 +11,18 @@
     LiteralExpr [STRING] [count]
     :
     FunctionCall test.count@1[
-      Variable [ Name=$token ]
+      (
+        SELECT ELEMENT [
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [token]
+          Variable [ Name=$g ]
+          Variable [ Name=$tok ]
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
     ]
   )
 ]
@@ -33,7 +44,7 @@
   Variable [ Name=$tok ]
   :=
   Variable [ Name=$token ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     line:=Variable [ Name=$line ]
     token:=Variable [ Name=$token ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_03/hdfs_03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_03/hdfs_03.3.ast
index f1ac649..ba6fb25 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_03/hdfs_03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_03/hdfs_03.3.ast
@@ -11,7 +11,18 @@
     LiteralExpr [STRING] [count]
     :
     FunctionCall test.count@1[
-      Variable [ Name=$token ]
+      (
+        SELECT ELEMENT [
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [token]
+          Variable [ Name=$g ]
+          Variable [ Name=$tok ]
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
     ]
   )
 ]
@@ -33,7 +44,7 @@
   Variable [ Name=$tok ]
   :=
   Variable [ Name=$token ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     line:=Variable [ Name=$line ]
     token:=Variable [ Name=$token ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_shortcircuit/hdfs_shortcircuit.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_shortcircuit/hdfs_shortcircuit.3.ast
index f1ac649..ba6fb25 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_shortcircuit/hdfs_shortcircuit.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_shortcircuit/hdfs_shortcircuit.3.ast
@@ -11,7 +11,18 @@
     LiteralExpr [STRING] [count]
     :
     FunctionCall test.count@1[
-      Variable [ Name=$token ]
+      (
+        SELECT ELEMENT [
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [token]
+          Variable [ Name=$g ]
+          Variable [ Name=$tok ]
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
     ]
   )
 ]
@@ -33,7 +44,7 @@
   Variable [ Name=$tok ]
   :=
   Variable [ Name=$token ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     line:=Variable [ Name=$line ]
     token:=Variable [ Name=$token ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hints/issue_251_dataset_hint_6/issue_251_dataset_hint_6.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hints/issue_251_dataset_hint_6/issue_251_dataset_hint_6.3.ast
index f1ac649..ba6fb25 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hints/issue_251_dataset_hint_6/issue_251_dataset_hint_6.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hints/issue_251_dataset_hint_6/issue_251_dataset_hint_6.3.ast
@@ -11,7 +11,18 @@
     LiteralExpr [STRING] [count]
     :
     FunctionCall test.count@1[
-      Variable [ Name=$token ]
+      (
+        SELECT ELEMENT [
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [token]
+          Variable [ Name=$g ]
+          Variable [ Name=$tok ]
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
     ]
   )
 ]
@@ -33,7 +44,7 @@
   Variable [ Name=$tok ]
   :=
   Variable [ Name=$token ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     line:=Variable [ Name=$line ]
     token:=Variable [ Name=$token ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/groupby-orderby-count/groupby-orderby-count.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/groupby-orderby-count/groupby-orderby-count.3.ast
index 259f96d..03f3620 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/groupby-orderby-count/groupby-orderby-count.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/groupby-orderby-count/groupby-orderby-count.3.ast
@@ -11,7 +11,18 @@
     LiteralExpr [STRING] [count]
     :
     FunctionCall twitter.count@1[
-      Variable [ Name=$token ]
+      (
+        SELECT ELEMENT [
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [token]
+          Variable [ Name=$g ]
+          Variable [ Name=$tok ]
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
     ]
   )
 ]
@@ -33,7 +44,7 @@
   Variable [ Name=$tok ]
   :=
   Variable [ Name=$token ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     t:=Variable [ Name=$t ]
     token:=Variable [ Name=$token ]
@@ -41,7 +52,18 @@
 
 Orderby
   FunctionCall twitter.count@1[
-    Variable [ Name=$token ]
+    (
+      SELECT ELEMENT [
+      FunctionCall Metadata.resolve@-1[
+        LiteralExpr [STRING] [token]
+        Variable [ Name=$g ]
+        Variable [ Name=$tok ]
+      ]
+      ]
+      FROM [        Variable [ Name=$g ]
+        AS Variable [ Name=$g ]
+      ]
+    )
   ]
   DESC
   Variable [ Name=$tok ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-issue456/query-issue456.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-issue456/query-issue456.3.ast
index 035e97e..25b5f82 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-issue456/query-issue456.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-issue456/query-issue456.3.ast
@@ -6,19 +6,13 @@
     Variable [ Name=$x ]
     Field=int_m
   ]
-  FunctionCall test.sql-count@1[
+  FunctionCall test.count@1[
     (
       SELECT ELEMENT [
-      FunctionCall Metadata.resolve@-1[
-        LiteralExpr [STRING] [id]
-        Variable [ Name=$int_m ]
-        Variable [ Name=$x ]
-        Variable [ Name=#1 ]
-        Variable [ Name=#2 ]
+      Variable [ Name=$x ]
       ]
-      ]
-      FROM [        Variable [ Name=#1 ]
-        AS Variable [ Name=#2 ]
+      FROM [        Variable [ Name=$g ]
+        AS Variable [ Name=$g ]
       ]
     )
   ]
@@ -42,7 +36,7 @@
     Variable [ Name=$x ]
     Field=int_m
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     x:=Variable [ Name=$x ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/semistructured/count-nullable/count-nullable.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/semistructured/count-nullable/count-nullable.3.ast
index 5d1a417..d2e89aa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/semistructured/count-nullable/count-nullable.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/semistructured/count-nullable/count-nullable.3.ast
@@ -11,7 +11,18 @@
     LiteralExpr [STRING] [count]
     :
     FunctionCall test.count@1[
-      Variable [ Name=$c ]
+      (
+        SELECT ELEMENT [
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [c]
+          Variable [ Name=$g ]
+          Variable [ Name=$age ]
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
     ]
   )
 ]
@@ -28,7 +39,7 @@
     Variable [ Name=$c ]
     Field=age
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     c:=Variable [ Name=$c ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.3.ast
index 91e9410..6cdd575 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.3.ast
@@ -86,7 +86,7 @@
     LiteralExpr [DOUBLE] [3.0]
     LiteralExpr [DOUBLE] [3.0]
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     t:=Variable [ Name=$t ]
   )
@@ -94,7 +94,14 @@
 Let Variable [ Name=$num ]
   :=
   FunctionCall test.count@1[
-    Variable [ Name=$t ]
+    (
+      SELECT ELEMENT [
+      Variable [ Name=$t ]
+      ]
+      FROM [        Variable [ Name=$g ]
+        AS Variable [ Name=$g ]
+      ]
+    )
   ]
 Orderby
   Variable [ Name=$num ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation/cell-aggregation.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation/cell-aggregation.3.ast
index 6f827cf..08850a7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation/cell-aggregation.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation/cell-aggregation.3.ast
@@ -37,7 +37,7 @@
         LiteralExpr [DOUBLE] [5.0]
         LiteralExpr [DOUBLE] [5.0]
       ]
-      GROUP AS Variable [ Name=#1 ]
+      GROUP AS Variable [ Name=$g ]
       (
         o:=Variable [ Name=$o ]
       )
@@ -45,7 +45,18 @@
     Let Variable [ Name=$num ]
       :=
       FunctionCall test.count@1[
-        Variable [ Name=$o ]
+        (
+          SELECT ELEMENT [
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [o]
+            Variable [ Name=$g ]
+            Variable [ Name=$c ]
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
       ]
     Orderby
       Variable [ Name=$num ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temp-dataset/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temp-dataset/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.ast
index 815615d..39fb48b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temp-dataset/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temp-dataset/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.ast
@@ -16,16 +16,19 @@
   (
     LiteralExpr [STRING] [sum_qty]
     :
-    FunctionCall tpch.sum@1[
+    FunctionCall tpch.sql-sum@1[
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=#2 ]
+            Field=l
+          ]
           Field=l_quantity
         ]
         ]
-        FROM [          Variable [ Name=$l ]
-          AS Variable [ Name=$i ]
+        FROM [          Variable [ Name=#1 ]
+          AS Variable [ Name=#2 ]
         ]
       )
     ]
@@ -33,16 +36,19 @@
   (
     LiteralExpr [STRING] [sum_base_price]
     :
-    FunctionCall tpch.sum@1[
+    FunctionCall tpch.sql-sum@1[
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=#3 ]
+            Field=l
+          ]
           Field=l_extendedprice
         ]
         ]
-        FROM [          Variable [ Name=$l ]
-          AS Variable [ Name=$i ]
+        FROM [          Variable [ Name=#1 ]
+          AS Variable [ Name=#3 ]
         ]
       )
     ]
@@ -50,12 +56,15 @@
   (
     LiteralExpr [STRING] [sum_disc_price]
     :
-    FunctionCall tpch.sum@1[
+    FunctionCall tpch.sql-sum@1[
       (
         SELECT ELEMENT [
         OperatorExpr [
           FieldAccessor [
-            Variable [ Name=$i ]
+            FieldAccessor [
+              Variable [ Name=#4 ]
+              Field=l
+            ]
             Field=l_extendedprice
           ]
           *
@@ -63,14 +72,17 @@
             LiteralExpr [LONG] [1]
             -
             FieldAccessor [
-              Variable [ Name=$i ]
+              FieldAccessor [
+                Variable [ Name=#4 ]
+                Field=l
+              ]
               Field=l_discount
             ]
           ]
         ]
         ]
-        FROM [          Variable [ Name=$l ]
-          AS Variable [ Name=$i ]
+        FROM [          Variable [ Name=#1 ]
+          AS Variable [ Name=#4 ]
         ]
       )
     ]
@@ -78,12 +90,15 @@
   (
     LiteralExpr [STRING] [sum_charge]
     :
-    FunctionCall tpch.sum@1[
+    FunctionCall tpch.sql-sum@1[
       (
         SELECT ELEMENT [
         OperatorExpr [
           FieldAccessor [
-            Variable [ Name=$i ]
+            FieldAccessor [
+              Variable [ Name=#5 ]
+              Field=l
+            ]
             Field=l_extendedprice
           ]
           *
@@ -91,7 +106,10 @@
             LiteralExpr [LONG] [1]
             -
             FieldAccessor [
-              Variable [ Name=$i ]
+              FieldAccessor [
+                Variable [ Name=#5 ]
+                Field=l
+              ]
               Field=l_discount
             ]
           ]
@@ -100,14 +118,17 @@
             LiteralExpr [LONG] [1]
             +
             FieldAccessor [
-              Variable [ Name=$i ]
+              FieldAccessor [
+                Variable [ Name=#5 ]
+                Field=l
+              ]
               Field=l_tax
             ]
           ]
         ]
         ]
-        FROM [          Variable [ Name=$l ]
-          AS Variable [ Name=$i ]
+        FROM [          Variable [ Name=#1 ]
+          AS Variable [ Name=#5 ]
         ]
       )
     ]
@@ -115,16 +136,19 @@
   (
     LiteralExpr [STRING] [ave_qty]
     :
-    FunctionCall tpch.avg@1[
+    FunctionCall tpch.sql-avg@1[
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=#6 ]
+            Field=l
+          ]
           Field=l_quantity
         ]
         ]
-        FROM [          Variable [ Name=$l ]
-          AS Variable [ Name=$i ]
+        FROM [          Variable [ Name=#1 ]
+          AS Variable [ Name=#6 ]
         ]
       )
     ]
@@ -132,16 +156,19 @@
   (
     LiteralExpr [STRING] [ave_price]
     :
-    FunctionCall tpch.avg@1[
+    FunctionCall tpch.sql-avg@1[
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=#7 ]
+            Field=l
+          ]
           Field=l_extendedprice
         ]
         ]
-        FROM [          Variable [ Name=$l ]
-          AS Variable [ Name=$i ]
+        FROM [          Variable [ Name=#1 ]
+          AS Variable [ Name=#7 ]
         ]
       )
     ]
@@ -149,16 +176,19 @@
   (
     LiteralExpr [STRING] [ave_disc]
     :
-    FunctionCall tpch.avg@1[
+    FunctionCall tpch.sql-avg@1[
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=#8 ]
+            Field=l
+          ]
           Field=l_discount
         ]
         ]
-        FROM [          Variable [ Name=$l ]
-          AS Variable [ Name=$i ]
+        FROM [          Variable [ Name=#1 ]
+          AS Variable [ Name=#8 ]
         ]
       )
     ]
@@ -166,8 +196,15 @@
   (
     LiteralExpr [STRING] [count_order]
     :
-    FunctionCall tpch.count@1[
-      Variable [ Name=$l ]
+    FunctionCall tpch.sql-count@1[
+      (
+        SELECT ELEMENT [
+        LiteralExpr [LONG] [1]
+        ]
+        FROM [          Variable [ Name=#1 ]
+          AS Variable [ Name=#9 ]
+        ]
+      )
     ]
   )
 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.ast
index cf3af4c..155bef0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.ast
@@ -39,7 +39,18 @@
       (
         LiteralExpr [STRING] [i]
         :
-        Variable [ Name=$i ]
+        (
+          SELECT ELEMENT [
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [i]
+            Variable [ Name=$g ]
+            Variable [ Name=$bin ]
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
       )
     ]
     ]
@@ -86,7 +97,7 @@
       Variable [ Name=$bin ]
       :=
       Variable [ Name=$j ]
-      GROUP AS Variable [ Name=#1 ]
+      GROUP AS Variable [ Name=$g ]
       (
         i:=Variable [ Name=$i ]
         j:=Variable [ Name=$j ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.ast
index 7d10b8d..bebf050 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.ast
@@ -13,13 +13,17 @@
     FunctionCall test.sql-count@1[
       (
         SELECT ELEMENT [
-        FieldAccessor [
-          Variable [ Name=#2 ]
-          Field=i2
+        (
+          SELECT ELEMENT [
+          LiteralExpr [LONG] [1]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
         ]
-        ]
-        FROM [          Variable [ Name=#1 ]
-          AS Variable [ Name=#2 ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=#1 ]
         ]
       )
     ]
@@ -35,15 +39,18 @@
             FunctionCall test.get-overlapping-interval@2[
               Variable [ Name=$bin ]
               FieldAccessor [
-                Variable [ Name=$i3 ]
+                FieldAccessor [
+                  Variable [ Name=$g ]
+                  Field=i2
+                ]
                 Field=interval
               ]
             ]
           ]
         ]
         ]
-        FROM [          Variable [ Name=$i2 ]
-          AS Variable [ Name=$i3 ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
         ]
       )
     ]
@@ -102,7 +109,7 @@
   Variable [ Name=$bin ]
   :=
   Variable [ Name=$j ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     i2:=Variable [ Name=$i2 ]
     j:=Variable [ Name=$j ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.15.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.15.ast
index c65459c..a21a8c7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.15.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.15.ast
@@ -13,10 +13,7 @@
     FunctionCall TinySocial.sql-count@1[
       (
         SELECT ELEMENT [
-        FieldAccessor [
-          Variable [ Name=#2 ]
-          Field=t
-        ]
+        LiteralExpr [LONG] [1]
         ]
         FROM [          Variable [ Name=#1 ]
           AS Variable [ Name=#2 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.16.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.16.ast
index c65459c..a21a8c7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.16.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.16.ast
@@ -13,10 +13,7 @@
     FunctionCall TinySocial.sql-count@1[
       (
         SELECT ELEMENT [
-        FieldAccessor [
-          Variable [ Name=#2 ]
-          Field=t
-        ]
+        LiteralExpr [LONG] [1]
         ]
         FROM [          Variable [ Name=#1 ]
           AS Variable [ Name=#2 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.17.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.17.ast
index 31e278b..c5a07ba 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.17.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.17.ast
@@ -39,10 +39,7 @@
   FunctionCall TinySocial.sql-count@1[
     (
       SELECT ELEMENT [
-      FieldAccessor [
-        Variable [ Name=#2 ]
-        Field=t
-      ]
+      LiteralExpr [LONG] [1]
       ]
       FROM [        Variable [ Name=#1 ]
         AS Variable [ Name=#2 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.23.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.23.ast
index 73652a0..1c36b20 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.23.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.23.ast
@@ -6,13 +6,10 @@
 FunctionCall TinySocial.sql-count@1[
   (
     SELECT ELEMENT [
-    FieldAccessor [
-      Variable [ Name=#4 ]
-      Field=t
+    LiteralExpr [LONG] [1]
     ]
-    ]
-    FROM [      Variable [ Name=#1 ]
-      AS Variable [ Name=#4 ]
+    FROM [      Variable [ Name=$g ]
+      AS Variable [ Name=#3 ]
     ]
   )
 ]
@@ -24,19 +21,16 @@
   FunctionCall TinySocial.sql-count@1[
     (
       SELECT ELEMENT [
-      FieldAccessor [
-        Variable [ Name=#3 ]
-        Field=k
+      LiteralExpr [LONG] [1]
       ]
-      ]
-      FROM [        Variable [ Name=#2 ]
-        AS Variable [ Name=#3 ]
+      FROM [        Variable [ Name=#1 ]
+        AS Variable [ Name=#2 ]
       ]
     )
   ]
   sum
   ]
-  FROM [    Variable [ Name=$t ]
+  FROM [    Variable [ Name=$g ]
     AS Variable [ Name=$k ]
   ]
   Groupby
@@ -44,11 +38,14 @@
     :=
     FunctionCall TinySocial.get-minute@1[
       FieldAccessor [
-        Variable [ Name=$k ]
+        FieldAccessor [
+          Variable [ Name=$k ]
+          Field=t
+        ]
         Field=send-time
       ]
     ]
-    GROUP AS Variable [ Name=#2 ]
+    GROUP AS Variable [ Name=#1 ]
     (
       k:=Variable [ Name=$k ]
     )
@@ -74,7 +71,7 @@
       Field=send-time
     ]
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     t:=Variable [ Name=$t ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.26.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.26.ast
index f94d3dc..0027ad97 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.26.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.26.ast
@@ -2,7 +2,11 @@
 Query:
 SELECT [
 FieldAccessor [
-  Variable [ Name=$employment ]
+  FunctionCall Metadata.resolve@-1[
+    LiteralExpr [STRING] [employment]
+    Variable [ Name=#1 ]
+    Variable [ Name=$organization-name ]
+  ]
   Field=organization-name
 ]
 organization
@@ -122,7 +126,11 @@
 
 Orderby
   FieldAccessor [
-    Variable [ Name=$employment ]
+    FunctionCall Metadata.resolve@-1[
+      LiteralExpr [STRING] [employment]
+      Variable [ Name=#1 ]
+      Variable [ Name=$organization-name ]
+    ]
     Field=organization-name
   ]
   ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.15.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.15.ast
index c65459c..a21a8c7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.15.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.15.ast
@@ -13,10 +13,7 @@
     FunctionCall TinySocial.sql-count@1[
       (
         SELECT ELEMENT [
-        FieldAccessor [
-          Variable [ Name=#2 ]
-          Field=t
-        ]
+        LiteralExpr [LONG] [1]
         ]
         FROM [          Variable [ Name=#1 ]
           AS Variable [ Name=#2 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.16.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.16.ast
index c65459c..a21a8c7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.16.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.16.ast
@@ -13,10 +13,7 @@
     FunctionCall TinySocial.sql-count@1[
       (
         SELECT ELEMENT [
-        FieldAccessor [
-          Variable [ Name=#2 ]
-          Field=t
-        ]
+        LiteralExpr [LONG] [1]
         ]
         FROM [          Variable [ Name=#1 ]
           AS Variable [ Name=#2 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.17.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.17.ast
index 31e278b..c5a07ba 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.17.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.17.ast
@@ -39,10 +39,7 @@
   FunctionCall TinySocial.sql-count@1[
     (
       SELECT ELEMENT [
-      FieldAccessor [
-        Variable [ Name=#2 ]
-        Field=t
-      ]
+      LiteralExpr [LONG] [1]
       ]
       FROM [        Variable [ Name=#1 ]
         AS Variable [ Name=#2 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.23.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.23.ast
index 73652a0..1c36b20 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.23.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.23.ast
@@ -6,13 +6,10 @@
 FunctionCall TinySocial.sql-count@1[
   (
     SELECT ELEMENT [
-    FieldAccessor [
-      Variable [ Name=#4 ]
-      Field=t
+    LiteralExpr [LONG] [1]
     ]
-    ]
-    FROM [      Variable [ Name=#1 ]
-      AS Variable [ Name=#4 ]
+    FROM [      Variable [ Name=$g ]
+      AS Variable [ Name=#3 ]
     ]
   )
 ]
@@ -24,19 +21,16 @@
   FunctionCall TinySocial.sql-count@1[
     (
       SELECT ELEMENT [
-      FieldAccessor [
-        Variable [ Name=#3 ]
-        Field=k
+      LiteralExpr [LONG] [1]
       ]
-      ]
-      FROM [        Variable [ Name=#2 ]
-        AS Variable [ Name=#3 ]
+      FROM [        Variable [ Name=#1 ]
+        AS Variable [ Name=#2 ]
       ]
     )
   ]
   sum
   ]
-  FROM [    Variable [ Name=$t ]
+  FROM [    Variable [ Name=$g ]
     AS Variable [ Name=$k ]
   ]
   Groupby
@@ -44,11 +38,14 @@
     :=
     FunctionCall TinySocial.get-minute@1[
       FieldAccessor [
-        Variable [ Name=$k ]
+        FieldAccessor [
+          Variable [ Name=$k ]
+          Field=t
+        ]
         Field=send-time
       ]
     ]
-    GROUP AS Variable [ Name=#2 ]
+    GROUP AS Variable [ Name=#1 ]
     (
       k:=Variable [ Name=$k ]
     )
@@ -74,7 +71,7 @@
       Field=send-time
     ]
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     t:=Variable [ Name=$t ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.ast
index 64187f1..a665305 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.ast
@@ -1,5 +1,5 @@
 DataverseUse tpch
-Set import-private-functions=true
+Set hash_merge=true
 Query:
 SELECT ELEMENT [
 RecordConstructor [
@@ -20,11 +20,14 @@
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=l
+          ]
           Field=l_quantity
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -37,11 +40,14 @@
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=l
+          ]
           Field=l_extendedprice
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -55,7 +61,10 @@
         SELECT ELEMENT [
         OperatorExpr [
           FieldAccessor [
-            Variable [ Name=$i ]
+            FieldAccessor [
+              Variable [ Name=$i ]
+              Field=l
+            ]
             Field=l_extendedprice
           ]
           *
@@ -63,13 +72,16 @@
             LiteralExpr [LONG] [1]
             -
             FieldAccessor [
-              Variable [ Name=$i ]
+              FieldAccessor [
+                Variable [ Name=$i ]
+                Field=l
+              ]
               Field=l_discount
             ]
           ]
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -83,7 +95,10 @@
         SELECT ELEMENT [
         OperatorExpr [
           FieldAccessor [
-            Variable [ Name=$i ]
+            FieldAccessor [
+              Variable [ Name=$i ]
+              Field=l
+            ]
             Field=l_extendedprice
           ]
           *
@@ -91,7 +106,10 @@
             LiteralExpr [LONG] [1]
             -
             FieldAccessor [
-              Variable [ Name=$i ]
+              FieldAccessor [
+                Variable [ Name=$i ]
+                Field=l
+              ]
               Field=l_discount
             ]
           ]
@@ -100,13 +118,16 @@
             LiteralExpr [LONG] [1]
             +
             FieldAccessor [
-              Variable [ Name=$i ]
+              FieldAccessor [
+                Variable [ Name=$i ]
+                Field=l
+              ]
               Field=l_tax
             ]
           ]
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -119,11 +140,14 @@
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=l
+          ]
           Field=l_quantity
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -136,11 +160,14 @@
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=l
+          ]
           Field=l_extendedprice
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -153,11 +180,14 @@
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=l
+          ]
           Field=l_discount
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -166,16 +196,18 @@
   (
     LiteralExpr [STRING] [count_order]
     :
-    FunctionCall tpch.sql-count@1[
+    FunctionCall tpch.count@1[
       (
         SELECT ELEMENT [
-        FieldAccessor [
-          Variable [ Name=#2 ]
-          Field=l
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [l]
+          Variable [ Name=$g ]
+          Variable [ Name=$l_linestatus ]
+          Variable [ Name=$l_returnflag ]
         ]
         ]
-        FROM [          Variable [ Name=#1 ]
-          AS Variable [ Name=#2 ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
         ]
       )
     ]
@@ -209,7 +241,7 @@
     Variable [ Name=$l ]
     Field=l_linestatus
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     l:=Variable [ Name=$l ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast
index 72ac671..63795d3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast
@@ -341,11 +341,14 @@
           (
             SELECT ELEMENT [
             FieldAccessor [
-              Variable [ Name=$i ]
+              FieldAccessor [
+                Variable [ Name=$i ]
+                Field=pssrn
+              ]
               Field=ps_supplycost
             ]
             ]
-            FROM [              Variable [ Name=$pssrn ]
+            FROM [              Variable [ Name=$g ]
               AS Variable [ Name=$i ]
             ]
           )
@@ -605,6 +608,7 @@
         Variable [ Name=$pssrn ]
         Field=p_partkey
       ]
+      GROUP AS Variable [ Name=$g ]
 
   )
 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q03_shipping_priority_nt/q03_shipping_priority_nt.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q03_shipping_priority_nt/q03_shipping_priority_nt.3.ast
index 47d5a97..b99d828 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q03_shipping_priority_nt/q03_shipping_priority_nt.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q03_shipping_priority_nt/q03_shipping_priority_nt.3.ast
@@ -115,7 +115,7 @@
     Variable [ Name=$o ]
     Field=o_shippriority
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     c:=Variable [ Name=$c ]
     o:=Variable [ Name=$o ]
@@ -143,7 +143,20 @@
         ]
       ]
       ]
-      FROM [        Variable [ Name=$l ]
+      FROM [        (
+          SELECT ELEMENT [
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [l]
+            Variable [ Name=$o_shippriority ]
+            Variable [ Name=$g ]
+            Variable [ Name=$o_orderdate ]
+            Variable [ Name=$l_orderkey ]
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q04_order_priority/q04_order_priority.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q04_order_priority/q04_order_priority.3.ast
index 6d2ab55..e9a9ccf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q04_order_priority/q04_order_priority.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q04_order_priority/q04_order_priority.3.ast
@@ -42,8 +42,15 @@
   (
     LiteralExpr [STRING] [count]
     :
-    FunctionCall tpch.count@1[
-      Variable [ Name=$o ]
+    FunctionCall tpch.sql-count@1[
+      (
+        SELECT ELEMENT [
+        LiteralExpr [LONG] [1]
+        ]
+        FROM [          Variable [ Name=#1 ]
+          AS Variable [ Name=#2 ]
+        ]
+      )
     ]
   )
 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q05_local_supplier_volume/q05_local_supplier_volume.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q05_local_supplier_volume/q05_local_supplier_volume.3.ast
index 5ee4bfe..61eb892 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q05_local_supplier_volume/q05_local_supplier_volume.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q05_local_supplier_volume/q05_local_supplier_volume.3.ast
@@ -297,7 +297,7 @@
     Variable [ Name=$o1 ]
     Field=n_name
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     c:=Variable [ Name=$c ]
     o1:=Variable [ Name=$o1 ]
@@ -324,7 +324,18 @@
         ]
       ]
       ]
-      FROM [        Variable [ Name=$o1 ]
+      FROM [        (
+          SELECT ELEMENT [
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [o1]
+            Variable [ Name=$g ]
+            Variable [ Name=$n_name ]
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q07_volume_shipping/q07_volume_shipping.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q07_volume_shipping/q07_volume_shipping.3.ast
index cc99aab..27f24e5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q07_volume_shipping/q07_volume_shipping.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q07_volume_shipping/q07_volume_shipping.3.ast
@@ -365,7 +365,7 @@
   Variable [ Name=$l_year ]
   :=
   Variable [ Name=$l_year0 ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     locs:=Variable [ Name=$locs ]
     t:=Variable [ Name=$t ]
@@ -378,7 +378,10 @@
       SELECT ELEMENT [
       OperatorExpr [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=locs
+          ]
           Field=l_extendedprice
         ]
         *
@@ -386,13 +389,16 @@
           LiteralExpr [LONG] [1]
           -
           FieldAccessor [
-            Variable [ Name=$i ]
+            FieldAccessor [
+              Variable [ Name=$i ]
+              Field=locs
+            ]
             Field=l_discount
           ]
         ]
       ]
       ]
-      FROM [        Variable [ Name=$locs ]
+      FROM [        Variable [ Name=$g ]
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q08_national_market_share/q08_national_market_share.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q08_national_market_share/q08_national_market_share.3.ast
index 1292f1a..e34438b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q08_national_market_share/q08_national_market_share.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q08_national_market_share/q08_national_market_share.3.ast
@@ -18,14 +18,20 @@
 
           WHEN               OperatorExpr [
                 FieldAccessor [
-                  Variable [ Name=$i ]
+                  FieldAccessor [
+                    Variable [ Name=$i ]
+                    Field=t
+                  ]
                   Field=s_name
                 ]
                 =
                 LiteralExpr [STRING] [BRAZIL]
               ]
           THEN               FieldAccessor [
-                Variable [ Name=$i ]
+                FieldAccessor [
+                  Variable [ Name=$i ]
+                  Field=t
+                ]
                 Field=revenue
               ]
 
@@ -33,7 +39,7 @@
 
           END
           ]
-          FROM [            Variable [ Name=$t ]
+          FROM [            Variable [ Name=$g ]
             AS Variable [ Name=$i ]
           ]
         )
@@ -43,11 +49,14 @@
         (
           SELECT ELEMENT [
           FieldAccessor [
-            Variable [ Name=$i ]
+            FieldAccessor [
+              Variable [ Name=$i ]
+              Field=t
+            ]
             Field=revenue
           ]
           ]
-          FROM [            Variable [ Name=$t ]
+          FROM [            Variable [ Name=$g ]
             AS Variable [ Name=$i ]
           ]
         )
@@ -469,7 +478,7 @@
     Variable [ Name=$t ]
     Field=year
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     t:=Variable [ Name=$t ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast
index bce73f5..e95c448 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast
@@ -19,11 +19,14 @@
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$pr ]
+          FieldAccessor [
+            Variable [ Name=$pr ]
+            Field=profit
+          ]
           Field=amount
         ]
         ]
-        FROM [          Variable [ Name=$profit ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$pr ]
         ]
       )
@@ -431,7 +434,7 @@
     Variable [ Name=$profit ]
     Field=o_year
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     profit:=Variable [ Name=$profit ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q10_returned_item/q10_returned_item.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q10_returned_item/q10_returned_item.3.ast
index da3761f..6835f7c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q10_returned_item/q10_returned_item.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q10_returned_item/q10_returned_item.3.ast
@@ -328,7 +328,7 @@
     Variable [ Name=$locn ]
     Field=c_comment
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     locn:=Variable [ Name=$locn ]
   )
@@ -354,7 +354,24 @@
         ]
       ]
       ]
-      FROM [        Variable [ Name=$locn ]
+      FROM [        (
+          SELECT ELEMENT [
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [locn]
+            Variable [ Name=$c_address ]
+            Variable [ Name=$g ]
+            Variable [ Name=$c_name ]
+            Variable [ Name=$c_phone ]
+            Variable [ Name=$c_acctbal ]
+            Variable [ Name=$n_name ]
+            Variable [ Name=$c_custkey ]
+            Variable [ Name=$c_comment ]
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q10_returned_item_int64/q10_returned_item_int64.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q10_returned_item_int64/q10_returned_item_int64.3.ast
index da3761f..6835f7c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q10_returned_item_int64/q10_returned_item_int64.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q10_returned_item_int64/q10_returned_item_int64.3.ast
@@ -328,7 +328,7 @@
     Variable [ Name=$locn ]
     Field=c_comment
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     locn:=Variable [ Name=$locn ]
   )
@@ -354,7 +354,24 @@
         ]
       ]
       ]
-      FROM [        Variable [ Name=$locn ]
+      FROM [        (
+          SELECT ELEMENT [
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [locn]
+            Variable [ Name=$c_address ]
+            Variable [ Name=$g ]
+            Variable [ Name=$c_name ]
+            Variable [ Name=$c_phone ]
+            Variable [ Name=$c_acctbal ]
+            Variable [ Name=$n_name ]
+            Variable [ Name=$c_custkey ]
+            Variable [ Name=$c_comment ]
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q11_important_stock/q11_important_stock.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q11_important_stock/q11_important_stock.3.ast
index 8de0c01..a42b74b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q11_important_stock/q11_important_stock.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q11_important_stock/q11_important_stock.3.ast
@@ -110,17 +110,23 @@
             SELECT ELEMENT [
             OperatorExpr [
               FieldAccessor [
-                Variable [ Name=$i ]
+                FieldAccessor [
+                  Variable [ Name=$i ]
+                  Field=ps
+                ]
                 Field=ps_supplycost
               ]
               *
               FieldAccessor [
-                Variable [ Name=$i ]
+                FieldAccessor [
+                  Variable [ Name=$i ]
+                  Field=ps
+                ]
                 Field=ps_availqty
               ]
             ]
             ]
-            FROM [              Variable [ Name=$ps ]
+            FROM [              Variable [ Name=$g ]
               AS Variable [ Name=$i ]
             ]
           )
@@ -190,7 +196,7 @@
         Variable [ Name=$ps ]
         Field=ps_partkey
       ]
-      GROUP AS Variable [ Name=#1 ]
+      GROUP AS Variable [ Name=$g ]
       (
         ps:=Variable [ Name=$ps ]
         sn:=Variable [ Name=$sn ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q12_shipping/q12_shipping.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q12_shipping/q12_shipping.3.ast
index edd1cd8..087019a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q12_shipping/q12_shipping.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q12_shipping/q12_shipping.3.ast
@@ -16,7 +16,10 @@
         CASE            OperatorExpr [
               OperatorExpr [
                 FieldAccessor [
-                  Variable [ Name=$i ]
+                  FieldAccessor [
+                    Variable [ Name=$i ]
+                    Field=o
+                  ]
                   Field=o_orderpriority
                 ]
                 =
@@ -25,7 +28,10 @@
               or
               OperatorExpr [
                 FieldAccessor [
-                  Variable [ Name=$i ]
+                  FieldAccessor [
+                    Variable [ Name=$i ]
+                    Field=o
+                  ]
                   Field=o_orderpriority
                 ]
                 =
@@ -43,7 +49,7 @@
 
         END
         ]
-        FROM [          Variable [ Name=$o ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -58,7 +64,10 @@
         CASE            OperatorExpr [
               OperatorExpr [
                 FieldAccessor [
-                  Variable [ Name=$i ]
+                  FieldAccessor [
+                    Variable [ Name=$i ]
+                    Field=o
+                  ]
                   Field=o_orderpriority
                 ]
                 =
@@ -67,7 +76,10 @@
               or
               OperatorExpr [
                 FieldAccessor [
-                  Variable [ Name=$i ]
+                  FieldAccessor [
+                    Variable [ Name=$i ]
+                    Field=o
+                  ]
                   Field=o_orderpriority
                 ]
                 =
@@ -85,7 +97,7 @@
 
         END
         ]
-        FROM [          Variable [ Name=$o ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -186,7 +198,7 @@
     Variable [ Name=$l ]
     Field=l_shipmode
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     l:=Variable [ Name=$l ]
     o:=Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q13_customer_distribution/q13_customer_distribution.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q13_customer_distribution/q13_customer_distribution.3.ast
index 4ab59b1..98f7a37 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q13_customer_distribution/q13_customer_distribution.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q13_customer_distribution/q13_customer_distribution.3.ast
@@ -34,7 +34,18 @@
               Field=o_orderkey_count
             ]
             ]
-            FROM [              Variable [ Name=$co ]
+            FROM [              (
+                SELECT ELEMENT [
+                FunctionCall Metadata.resolve@-1[
+                  LiteralExpr [STRING] [co]
+                  Variable [ Name=$g2 ]
+                  Variable [ Name=$c_custkey ]
+                ]
+                ]
+                FROM [                  Variable [ Name=$g2 ]
+                  AS Variable [ Name=$g2 ]
+                ]
+              )
               AS Variable [ Name=$i ]
             ]
           )
@@ -112,7 +123,7 @@
         Variable [ Name=$co ]
         Field=c_custkey
       ]
-      GROUP AS Variable [ Name=#1 ]
+      GROUP AS Variable [ Name=$g2 ]
       (
         co:=Variable [ Name=$co ]
       )
@@ -127,7 +138,7 @@
     Variable [ Name=$gco ]
     Field=c_count
   ]
-  GROUP AS Variable [ Name=#2 ]
+  GROUP AS Variable [ Name=$g ]
   (
     gco:=Variable [ Name=$gco ]
   )
@@ -137,13 +148,20 @@
   FunctionCall tpch.sql-count@1[
     (
       SELECT ELEMENT [
-      FieldAccessor [
-        Variable [ Name=#3 ]
-        Field=gco
+      (
+        SELECT ELEMENT [
+        FieldAccessor [
+          Variable [ Name=#1 ]
+          Field=gco
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
       ]
-      ]
-      FROM [        Variable [ Name=#2 ]
-        AS Variable [ Name=#3 ]
+      FROM [        Variable [ Name=$g ]
+        AS Variable [ Name=#1 ]
       ]
     )
   ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q14_promotion_effect/q14_promotion_effect.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q14_promotion_effect/q14_promotion_effect.3.ast
index ed68ae8..d108e83 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q14_promotion_effect/q14_promotion_effect.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q14_promotion_effect/q14_promotion_effect.3.ast
@@ -33,14 +33,24 @@
             ]
           ]
 
-      WHEN           LiteralExpr [FALSE]
-      THEN           LiteralExpr [DOUBLE] [0.0]
-
-      ELSE           LiteralExpr [NULL]
+      ELSE           LiteralExpr [DOUBLE] [0.0]
 
       END
       ]
-      FROM [        Variable [ Name=$lp ]
+      FROM [        (
+          SELECT ELEMENT [
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [lp]
+            Variable [ Name=$g ]
+            Variable [ Name=$l ]
+            Variable [ Name=$p ]
+            Variable [ Name=$t ]
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
         AS Variable [ Name=$i ]
       ]
     )
@@ -65,7 +75,20 @@
         ]
       ]
       ]
-      FROM [        Variable [ Name=$lp ]
+      FROM [        (
+          SELECT ELEMENT [
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [lp]
+            Variable [ Name=$g ]
+            Variable [ Name=$l ]
+            Variable [ Name=$p ]
+            Variable [ Name=$t ]
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q15_top_supplier/q15_top_supplier.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q15_top_supplier/q15_top_supplier.3.ast
index 0645c36..d4c9bb5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q15_top_supplier/q15_top_supplier.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q15_top_supplier/q15_top_supplier.3.ast
@@ -16,7 +16,10 @@
             SELECT ELEMENT [
             OperatorExpr [
               FieldAccessor [
-                Variable [ Name=$i ]
+                FieldAccessor [
+                  Variable [ Name=$i ]
+                  Field=l
+                ]
                 Field=l_extendedprice
               ]
               *
@@ -24,13 +27,16 @@
                 LiteralExpr [LONG] [1]
                 -
                 FieldAccessor [
-                  Variable [ Name=$i ]
+                  FieldAccessor [
+                    Variable [ Name=$i ]
+                    Field=l
+                  ]
                   Field=l_discount
                 ]
               ]
             ]
             ]
-            FROM [              Variable [ Name=$l ]
+            FROM [              Variable [ Name=$g ]
               AS Variable [ Name=$i ]
             ]
           )
@@ -68,6 +74,7 @@
         Variable [ Name=$l ]
         Field=l_suppkey
       ]
+      GROUP AS Variable [ Name=$g ]
 
   )
 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.ast
index aef4422..c6ea4fa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.ast
@@ -324,7 +324,7 @@
     Variable [ Name=$t2 ]
     Field=p_size
   ]
-  GROUP AS Variable [ Name=#2 ]
+  GROUP AS Variable [ Name=$g ]
   (
     t2:=Variable [ Name=$t2 ]
   )
@@ -339,7 +339,20 @@
         Field=ps_suppkey
       ]
       ]
-      FROM [        Variable [ Name=$t2 ]
+      FROM [        (
+          SELECT ELEMENT [
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [t2]
+            Variable [ Name=$g ]
+            Variable [ Name=$p_brand ]
+            Variable [ Name=$p_size ]
+            Variable [ Name=$p_type ]
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q17_large_gby_variant/q17_large_gby_variant.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q17_large_gby_variant/q17_large_gby_variant.3.ast
index e184f80..11cb25f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q17_large_gby_variant/q17_large_gby_variant.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q17_large_gby_variant/q17_large_gby_variant.3.ast
@@ -10,16 +10,17 @@
   (
     LiteralExpr [STRING] [t_count]
     :
-    FunctionCall tpch.sql-count@1[
+    FunctionCall tpch.count@1[
       (
         SELECT ELEMENT [
-        FieldAccessor [
-          Variable [ Name=#2 ]
-          Field=l
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [l]
+          Variable [ Name=$g ]
+          Variable [ Name=$l_partkey ]
         ]
         ]
-        FROM [          Variable [ Name=#1 ]
-          AS Variable [ Name=#2 ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
         ]
       )
     ]
@@ -38,7 +39,18 @@
             Field=l_quantity
           ]
           ]
-          FROM [            Variable [ Name=$l ]
+          FROM [            (
+              SELECT ELEMENT [
+              FunctionCall Metadata.resolve@-1[
+                LiteralExpr [STRING] [l]
+                Variable [ Name=$g ]
+                Variable [ Name=$l_partkey ]
+              ]
+              ]
+              FROM [                Variable [ Name=$g ]
+                AS Variable [ Name=$g ]
+              ]
+            )
             AS Variable [ Name=$i ]
           ]
         )
@@ -56,7 +68,18 @@
           Field=l_suppkey
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -73,7 +96,18 @@
           Field=l_linenumber
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -90,7 +124,18 @@
           Field=l_extendedprice
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -107,7 +152,18 @@
           Field=l_discount
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -124,7 +180,18 @@
           Field=l_tax
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -141,7 +208,18 @@
           Field=l_shipdate
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -158,7 +236,18 @@
           Field=l_commitdate
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -175,7 +264,18 @@
           Field=l_receiptdate
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -192,7 +292,18 @@
           Field=l_comment
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -212,7 +323,7 @@
     Variable [ Name=$l ]
     Field=l_partkey
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     l:=Variable [ Name=$l ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.ast
index b8874cd..8e55967 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.ast
@@ -22,7 +22,14 @@
                 Field=l_quantity
               ]
               ]
-              FROM [                Variable [ Name=$l ]
+              FROM [                (
+                  SELECT ELEMENT [
+                  Variable [ Name=$l ]
+                  ]
+                  FROM [                    Variable [ Name=$g ]
+                    AS Variable [ Name=$g ]
+                  ]
+                )
                 AS Variable [ Name=$i ]
               ]
             )
@@ -41,6 +48,7 @@
         Variable [ Name=$l ]
         Field=l_partkey
       ]
+      GROUP AS Variable [ Name=$g ]
 
   )
 }
@@ -56,7 +64,11 @@
         Field=l_extendedprice
       ]
       ]
-      FROM [        FunctionCall Metadata.dataset@1[
+      FROM [        FunctionCall tpch.tmp@0[
+        ]
+        AS Variable [ Name=$t ]
+,
+        FunctionCall Metadata.dataset@1[
           LiteralExpr [STRING] [LineItem]
         ]
         AS Variable [ Name=$l ]
@@ -65,59 +77,51 @@
           LiteralExpr [STRING] [Part]
         ]
         AS Variable [ Name=$p ]
-,
-        FunctionCall tpch.tmp@0[
-        ]
-        AS Variable [ Name=$t ]
       ]
       Where
         OperatorExpr [
           OperatorExpr [
-            OperatorExpr [
-              FieldAccessor [
-                Variable [ Name=$p ]
-                Field=p_partkey
-              ]
-              =
-              FieldAccessor [
-                Variable [ Name=$l ]
-                Field=l_partkey
-              ]
+            FieldAccessor [
+              Variable [ Name=$p ]
+              Field=p_partkey
             ]
-            and
-            OperatorExpr [
-              FieldAccessor [
-                Variable [ Name=$p ]
-                Field=p_container
-              ]
-              =
-              LiteralExpr [STRING] [MED BOX]
+            =
+            FieldAccessor [
+              Variable [ Name=$l ]
+              Field=l_partkey
             ]
           ]
           and
           OperatorExpr [
-            OperatorExpr [
-              FieldAccessor [
-                Variable [ Name=$l ]
-                Field=l_partkey
-              ]
-              =
-              FieldAccessor [
-                Variable [ Name=$t ]
-                Field=t_partkey
-              ]
+            FieldAccessor [
+              Variable [ Name=$p ]
+              Field=p_container
             ]
-            and
-            OperatorExpr [
-              FieldAccessor [
-                Variable [ Name=$l ]
-                Field=l_quantity
-              ]
-              <
-              FieldAccessor [
-                Variable [ Name=$t ]
-                Field=t_avg_quantity
-              ]
+            =
+            LiteralExpr [STRING] [MED BOX]
+          ]
+          and
+          OperatorExpr [
+            FieldAccessor [
+              Variable [ Name=$l ]
+              Field=l_partkey
+            ]
+            =
+            FieldAccessor [
+              Variable [ Name=$t ]
+              Field=t_partkey
+            ]
+          ]
+          and
+          OperatorExpr [
+            FieldAccessor [
+              Variable [ Name=$l ]
+              Field=l_quantity
+            ]
+            <
+            FieldAccessor [
+              Variable [ Name=$t ]
+              Field=t_avg_quantity
             ]
           ]
         ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q18_large_volume_customer/q18_large_volume_customer.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q18_large_volume_customer/q18_large_volume_customer.3.ast
index 1e4ac7b..6bb9429 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q18_large_volume_customer/q18_large_volume_customer.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q18_large_volume_customer/q18_large_volume_customer.3.ast
@@ -38,7 +38,22 @@
           Field=l_quantity
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$o_orderdate ]
+              Variable [ Name=$c_name ]
+              Variable [ Name=$o_orderkey ]
+              Variable [ Name=$o_totalprice ]
+              Variable [ Name=$c_custkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$j ]
         ]
       )
@@ -75,7 +90,20 @@
               Field=l_quantity
             ]
             ]
-            FROM [              Variable [ Name=$l ]
+            FROM [              (
+                SELECT ELEMENT [
+                FunctionCall Metadata.resolve@-1[
+                  LiteralExpr [STRING] [l]
+                  Variable [ Name=$o ]
+                  Variable [ Name=$l_orderkey ]
+                  Variable [ Name=$g2 ]
+                  Variable [ Name=$c ]
+                ]
+                ]
+                FROM [                  Variable [ Name=$g2 ]
+                  AS Variable [ Name=$g2 ]
+                ]
+              )
               AS Variable [ Name=$i ]
             ]
           )
@@ -95,7 +123,7 @@
         Variable [ Name=$l ]
         Field=l_orderkey
       ]
-      GROUP AS Variable [ Name=#1 ]
+      GROUP AS Variable [ Name=$g2 ]
       (
         l:=Variable [ Name=$l ]
       )
@@ -123,37 +151,35 @@
     ]
     and
     OperatorExpr [
-      OperatorExpr [
-        FieldAccessor [
-          Variable [ Name=$o ]
-          Field=o_orderkey
-        ]
-        =
-        FieldAccessor [
-          Variable [ Name=$t ]
-          Field=l_orderkey
-        ]
+      FieldAccessor [
+        Variable [ Name=$o ]
+        Field=o_orderkey
       ]
-      and
-      OperatorExpr [
-        FieldAccessor [
-          Variable [ Name=$t ]
-          Field=t_sum_quantity
-        ]
-        >
-        LiteralExpr [LONG] [30]
+      =
+      FieldAccessor [
+        Variable [ Name=$t ]
+        Field=l_orderkey
       ]
     ]
     and
     OperatorExpr [
       FieldAccessor [
+        Variable [ Name=$t ]
+        Field=t_sum_quantity
+      ]
+      >
+      LiteralExpr [LONG] [30]
+    ]
+    and
+    OperatorExpr [
+      FieldAccessor [
         Variable [ Name=$l ]
         Field=l_orderkey
       ]
       =
       FieldAccessor [
-        Variable [ Name=$o ]
-        Field=o_orderkey
+        Variable [ Name=$t ]
+        Field=l_orderkey
       ]
     ]
   ]
@@ -188,7 +214,7 @@
     Variable [ Name=$o ]
     Field=o_totalprice
   ]
-  GROUP AS Variable [ Name=#2 ]
+  GROUP AS Variable [ Name=$g ]
   (
     c:=Variable [ Name=$c ]
     o:=Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q20_potential_part_promotion/q20_potential_part_promotion.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q20_potential_part_promotion/q20_potential_part_promotion.3.ast
index 9993401..88f61d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q20_potential_part_promotion/q20_potential_part_promotion.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q20_potential_part_promotion/q20_potential_part_promotion.3.ast
@@ -60,7 +60,19 @@
                     Field=l_quantity
                   ]
                   ]
-                  FROM [                    Variable [ Name=$l ]
+                  FROM [                    (
+                      SELECT ELEMENT [
+                      FunctionCall Metadata.resolve@-1[
+                        LiteralExpr [STRING] [l]
+                        Variable [ Name=$l_suppkey ]
+                        Variable [ Name=$g ]
+                        Variable [ Name=$l_partkey ]
+                      ]
+                      ]
+                      FROM [                        Variable [ Name=$g ]
+                        AS Variable [ Name=$g ]
+                      ]
+                    )
                     AS Variable [ Name=$i ]
                   ]
                 )
@@ -87,7 +99,7 @@
             Variable [ Name=$l ]
             Field=l_suppkey
           ]
-          GROUP AS Variable [ Name=#1 ]
+          GROUP AS Variable [ Name=$g ]
           (
             l:=Variable [ Name=$l ]
           )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast
index 0d5ca25..51bdde2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast
@@ -19,7 +19,17 @@
               Field=l_suppkey
             ]
             ]
-            FROM [              Variable [ Name=$l2 ]
+            FROM [              (
+                SELECT ELEMENT [
+                FieldAccessor [
+                  Variable [ Name=$g1 ]
+                  Field=l2
+                ]
+                ]
+                FROM [                  Variable [ Name=$g1 ]
+                  AS Variable [ Name=$g1 ]
+                ]
+              )
               AS Variable [ Name=$i ]
             ]
           )
@@ -36,7 +46,17 @@
               Field=l_suppkey
             ]
             ]
-            FROM [              Variable [ Name=$l2 ]
+            FROM [              (
+                SELECT ELEMENT [
+                FieldAccessor [
+                  Variable [ Name=$g1 ]
+                  Field=l2
+                ]
+                ]
+                FROM [                  Variable [ Name=$g1 ]
+                  AS Variable [ Name=$g1 ]
+                ]
+              )
               AS Variable [ Name=$i ]
             ]
           )
@@ -86,6 +106,7 @@
         Variable [ Name=$l2 ]
         Field=l_orderkey
       ]
+      GROUP AS Variable [ Name=$g1 ]
 
   )
 }
@@ -110,7 +131,17 @@
               Field=l_suppkey
             ]
             ]
-            FROM [              Variable [ Name=$l2 ]
+            FROM [              (
+                SELECT ELEMENT [
+                FieldAccessor [
+                  Variable [ Name=$g2 ]
+                  Field=l2
+                ]
+                ]
+                FROM [                  Variable [ Name=$g2 ]
+                  AS Variable [ Name=$g2 ]
+                ]
+              )
               AS Variable [ Name=$i ]
             ]
           )
@@ -127,7 +158,17 @@
               Field=l_suppkey
             ]
             ]
-            FROM [              Variable [ Name=$l2 ]
+            FROM [              (
+                SELECT ELEMENT [
+                FieldAccessor [
+                  Variable [ Name=$g2 ]
+                  Field=l2
+                ]
+                ]
+                FROM [                  Variable [ Name=$g2 ]
+                  AS Variable [ Name=$g2 ]
+                ]
+              )
               AS Variable [ Name=$i ]
             ]
           )
@@ -189,6 +230,7 @@
         Variable [ Name=$l2 ]
         Field=l_orderkey
       ]
+      GROUP AS Variable [ Name=$g2 ]
 
   )
 }
@@ -345,28 +387,26 @@
         Where
           OperatorExpr [
             OperatorExpr [
-              OperatorExpr [
-                FieldAccessor [
-                  Variable [ Name=$ns ]
-                  Field=s_suppkey
-                ]
-                =
-                FieldAccessor [
-                  Variable [ Name=$l ]
-                  Field=l_suppkey
-                ]
+              FieldAccessor [
+                Variable [ Name=$ns ]
+                Field=s_suppkey
               ]
-              and
-              OperatorExpr [
-                FieldAccessor [
-                  Variable [ Name=$l ]
-                  Field=l_receiptdate
-                ]
-                >
-                FieldAccessor [
-                  Variable [ Name=$l ]
-                  Field=l_commitdate
-                ]
+              =
+              FieldAccessor [
+                Variable [ Name=$l ]
+                Field=l_suppkey
+              ]
+            ]
+            and
+            OperatorExpr [
+              FieldAccessor [
+                Variable [ Name=$l ]
+                Field=l_receiptdate
+              ]
+              >
+              FieldAccessor [
+                Variable [ Name=$l ]
+                Field=l_commitdate
               ]
             ]
             and
@@ -434,15 +474,32 @@
     Variable [ Name=$t4 ]
     Field=s_name
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     t4:=Variable [ Name=$t4 ]
   )
 
 Let Variable [ Name=$numwait ]
   :=
-  FunctionCall tpch.count@1[
-    Variable [ Name=$t4 ]
+  FunctionCall tpch.sql-count@1[
+    (
+      SELECT ELEMENT [
+      (
+        SELECT ELEMENT [
+        FieldAccessor [
+          Variable [ Name=#1 ]
+          Field=t4
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
+      ]
+      FROM [        Variable [ Name=$g ]
+        AS Variable [ Name=#1 ]
+      ]
+    )
   ]
 Orderby
   Variable [ Name=$numwait ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast
index cab2a8f..1ca3eb5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast
@@ -76,16 +76,17 @@
   (
     LiteralExpr [STRING] [numcust]
     :
-    FunctionCall tpch.sql-count@1[
+    FunctionCall tpch.count@1[
       (
         SELECT ELEMENT [
-        FieldAccessor [
-          Variable [ Name=#2 ]
-          Field=ct
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [ct]
+          Variable [ Name=$g ]
+          Variable [ Name=$cntrycode ]
         ]
         ]
-        FROM [          Variable [ Name=#1 ]
-          AS Variable [ Name=#2 ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
         ]
       )
     ]
@@ -101,7 +102,18 @@
           Field=c_acctbal
         ]
         ]
-        FROM [          Variable [ Name=$ct ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [ct]
+              Variable [ Name=$g ]
+              Variable [ Name=$cntrycode ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -129,7 +141,7 @@
     Variable [ Name=$ct ]
     Field=cntrycode
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     ct:=Variable [ Name=$ct ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue601/query-issue601.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue601/query-issue601.3.ast
index 6da2337..d12032a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue601/query-issue601.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue601/query-issue601.3.ast
@@ -5,13 +5,34 @@
   (
     LiteralExpr [STRING] [l_linenumber]
     :
-    Variable [ Name=$l_linenumber ]
+    FieldAccessor [
+      FunctionCall Metadata.resolve@-1[
+        LiteralExpr [STRING] [l]
+        Variable [ Name=$g ]
+        Variable [ Name=$l_linenumber ]
+      ]
+      Field=l_linenumber
+    ]
   )
   (
     LiteralExpr [STRING] [count_order]
     :
-    FunctionCall tpch.count@1[
-      Variable [ Name=$l ]
+    FunctionCall tpch.sql-count@1[
+      (
+        SELECT ELEMENT [
+        (
+          SELECT ELEMENT [
+          Variable [ Name=$g ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=#1 ]
+        ]
+      )
     ]
   )
 ]
@@ -28,12 +49,19 @@
     Variable [ Name=$l ]
     Field=l_linenumber
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     l:=Variable [ Name=$l ]
   )
 
 Orderby
-  Variable [ Name=$l_linenumber ]
+  FieldAccessor [
+    FunctionCall Metadata.resolve@-1[
+      LiteralExpr [STRING] [l]
+      Variable [ Name=$g ]
+      Variable [ Name=$l_linenumber ]
+    ]
+    Field=l_linenumber
+  ]
   ASC
 
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue638/query-issue638.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue638/query-issue638.3.ast
index bce73f5..14ed390 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue638/query-issue638.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue638/query-issue638.3.ast
@@ -19,12 +19,15 @@
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$pr ]
+          FieldAccessor [
+            Variable [ Name=$g ]
+            Field=profit
+          ]
           Field=amount
         ]
         ]
-        FROM [          Variable [ Name=$profit ]
-          AS Variable [ Name=$pr ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
         ]
       )
     ]
@@ -431,7 +434,7 @@
     Variable [ Name=$profit ]
     Field=o_year
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     profit:=Variable [ Name=$profit ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue785-2/query-issue785-2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue785-2/query-issue785-2.3.ast
index b56a7bc..f4cb736 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue785-2/query-issue785-2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue785-2/query-issue785-2.3.ast
@@ -120,7 +120,7 @@
         Variable [ Name=$n ]
         Field=n_nationkey
       ]
-      GROUP AS Variable [ Name=#1 ]
+      GROUP AS Variable [ Name=$g2 ]
       (
         n:=Variable [ Name=$n ]
         customer:=Variable [ Name=$customer ]
@@ -133,12 +133,15 @@
         (
           SELECT ELEMENT [
           FieldAccessor [
-            Variable [ Name=$o ]
+            FieldAccessor [
+              Variable [ Name=$g2 ]
+              Field=orders
+            ]
             Field=o_totalprice
           ]
           ]
-          FROM [            Variable [ Name=$orders ]
-            AS Variable [ Name=$o ]
+          FROM [            Variable [ Name=$g2 ]
+            AS Variable [ Name=$g2 ]
           ]
         )
       ]
@@ -148,10 +151,7 @@
   (
     LiteralExpr [STRING] [nation_key]
     :
-    FieldAccessor [
-      Variable [ Name=$x ]
-      Field=nation_key
-    ]
+    Variable [ Name=$nation_key ]
   )
   (
     LiteralExpr [STRING] [sum_price]
@@ -163,7 +163,10 @@
           LiteralExpr [STRING] [orderdate]
           :
           FieldAccessor [
-            Variable [ Name=$y ]
+            FieldAccessor [
+              Variable [ Name=$g ]
+              Field=x
+            ]
             Field=order_date
           ]
         )
@@ -171,18 +174,24 @@
           LiteralExpr [STRING] [sum_price]
           :
           FieldAccessor [
-            Variable [ Name=$y ]
+            FieldAccessor [
+              Variable [ Name=$g ]
+              Field=x
+            ]
             Field=sum_price
           ]
         )
       ]
       ]
-      FROM [        Variable [ Name=$x ]
-        AS Variable [ Name=$y ]
+      FROM [        Variable [ Name=$g ]
+        AS Variable [ Name=$g ]
       ]
       Orderby
         FieldAccessor [
-          Variable [ Name=$y ]
+          FieldAccessor [
+            Variable [ Name=$g ]
+            Field=x
+          ]
           Field=sum_price
         ]
         DESC
@@ -203,15 +212,12 @@
     Variable [ Name=$x ]
     Field=nation_key
   ]
-  GROUP AS Variable [ Name=#2 ]
+  GROUP AS Variable [ Name=$g ]
   (
     x:=Variable [ Name=$x ]
   )
 
 Orderby
-  FieldAccessor [
-    Variable [ Name=$x ]
-    Field=nation_key
-  ]
+  Variable [ Name=$nation_key ]
   ASC
 
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue785/query-issue785.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue785/query-issue785.3.ast
index 59669e3..a3643c5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue785/query-issue785.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue785/query-issue785.3.ast
@@ -5,10 +5,7 @@
   (
     LiteralExpr [STRING] [nation_key]
     :
-    FieldAccessor [
-      Variable [ Name=$x ]
-      Field=nation_key
-    ]
+    Variable [ Name=$nation_key ]
   )
   (
     LiteralExpr [STRING] [sum_price]
@@ -28,17 +25,20 @@
         )
       ]
       ]
-      FROM [        Variable [ Name=$x ]
+      FROM [        Variable [ Name=$g ]
         AS Variable [ Name=$i ]
       ]
       Groupby
         Variable [ Name=$od ]
         :=
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=x
+          ]
           Field=order_date
         ]
-        GROUP AS Variable [ Name=#3 ]
+        GROUP AS Variable [ Name=$g2 ]
         (
           i:=Variable [ Name=$i ]
         )
@@ -49,12 +49,18 @@
           (
             SELECT ELEMENT [
             FieldAccessor [
-              Variable [ Name=$s ]
+              FieldAccessor [
+                FieldAccessor [
+                  Variable [ Name=$g2 ]
+                  Field=i
+                ]
+                Field=x
+              ]
               Field=sum_price
             ]
             ]
-            FROM [              Variable [ Name=$i ]
-              AS Variable [ Name=$s ]
+            FROM [              Variable [ Name=$g2 ]
+              AS Variable [ Name=$g2 ]
             ]
           )
         ]
@@ -88,12 +94,15 @@
           (
             SELECT ELEMENT [
             FieldAccessor [
-              Variable [ Name=$o ]
+              FieldAccessor [
+                Variable [ Name=$g3 ]
+                Field=orders
+              ]
               Field=o_totalprice
             ]
             ]
-            FROM [              Variable [ Name=$orders ]
-              AS Variable [ Name=$o ]
+            FROM [              Variable [ Name=$g3 ]
+              AS Variable [ Name=$g3 ]
             ]
           )
         ]
@@ -154,7 +163,7 @@
         Variable [ Name=$n ]
         Field=n_nationkey
       ]
-      GROUP AS Variable [ Name=#1 ]
+      GROUP AS Variable [ Name=$g3 ]
       (
         n:=Variable [ Name=$n ]
         customer:=Variable [ Name=$customer ]
@@ -171,15 +180,12 @@
     Variable [ Name=$x ]
     Field=nation_key
   ]
-  GROUP AS Variable [ Name=#2 ]
+  GROUP AS Variable [ Name=$g ]
   (
     x:=Variable [ Name=$x ]
   )
 
 Orderby
-  FieldAccessor [
-    Variable [ Name=$x ]
-    Field=nation_key
-  ]
+  Variable [ Name=$nation_key ]
   ASC
 
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue786/query-issue786.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue786/query-issue786.3.ast
index 5908531..78d629d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue786/query-issue786.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue786/query-issue786.3.ast
@@ -79,7 +79,7 @@
           Variable [ Name=$orders ]
           Field=o_orderdate
         ]
-        GROUP AS Variable [ Name=#1 ]
+        GROUP AS Variable [ Name=$g ]
         (
           orders:=Variable [ Name=$orders ]
           customer:=Variable [ Name=$customer ]
@@ -91,12 +91,15 @@
           (
             SELECT ELEMENT [
             FieldAccessor [
-              Variable [ Name=$o ]
+              FieldAccessor [
+                Variable [ Name=$g ]
+                Field=orders
+              ]
               Field=o_totalprice
             ]
             ]
-            FROM [              Variable [ Name=$orders ]
-              AS Variable [ Name=$o ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
             ]
           )
         ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/nest_aggregate/nest_aggregate.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/nest_aggregate/nest_aggregate.3.ast
index 0207a57..f851571 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/nest_aggregate/nest_aggregate.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/nest_aggregate/nest_aggregate.3.ast
@@ -79,7 +79,7 @@
           Variable [ Name=$orders ]
           Field=o_orderdate
         ]
-        GROUP AS Variable [ Name=#1 ]
+        GROUP AS Variable [ Name=$g ]
         (
           orders:=Variable [ Name=$orders ]
           customer:=Variable [ Name=$customer ]
@@ -91,12 +91,15 @@
           (
             SELECT ELEMENT [
             FieldAccessor [
-              Variable [ Name=$o ]
+              FieldAccessor [
+                Variable [ Name=$g ]
+                Field=orders
+              ]
               Field=o_totalprice
             ]
             ]
-            FROM [              Variable [ Name=$orders ]
-              AS Variable [ Name=$o ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
             ]
           )
         ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.ast
index 54fe3f5..a665305 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q01_pricing_summary_report_nt/q01_pricing_summary_report_nt.3.ast
@@ -20,11 +20,14 @@
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=l
+          ]
           Field=l_quantity
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -37,11 +40,14 @@
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=l
+          ]
           Field=l_extendedprice
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -55,7 +61,10 @@
         SELECT ELEMENT [
         OperatorExpr [
           FieldAccessor [
-            Variable [ Name=$i ]
+            FieldAccessor [
+              Variable [ Name=$i ]
+              Field=l
+            ]
             Field=l_extendedprice
           ]
           *
@@ -63,13 +72,16 @@
             LiteralExpr [LONG] [1]
             -
             FieldAccessor [
-              Variable [ Name=$i ]
+              FieldAccessor [
+                Variable [ Name=$i ]
+                Field=l
+              ]
               Field=l_discount
             ]
           ]
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -83,7 +95,10 @@
         SELECT ELEMENT [
         OperatorExpr [
           FieldAccessor [
-            Variable [ Name=$i ]
+            FieldAccessor [
+              Variable [ Name=$i ]
+              Field=l
+            ]
             Field=l_extendedprice
           ]
           *
@@ -91,7 +106,10 @@
             LiteralExpr [LONG] [1]
             -
             FieldAccessor [
-              Variable [ Name=$i ]
+              FieldAccessor [
+                Variable [ Name=$i ]
+                Field=l
+              ]
               Field=l_discount
             ]
           ]
@@ -100,13 +118,16 @@
             LiteralExpr [LONG] [1]
             +
             FieldAccessor [
-              Variable [ Name=$i ]
+              FieldAccessor [
+                Variable [ Name=$i ]
+                Field=l
+              ]
               Field=l_tax
             ]
           ]
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -119,11 +140,14 @@
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=l
+          ]
           Field=l_quantity
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -136,11 +160,14 @@
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=l
+          ]
           Field=l_extendedprice
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -153,11 +180,14 @@
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=l
+          ]
           Field=l_discount
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          Variable [ Name=$g ]
           AS Variable [ Name=$i ]
         ]
       )
@@ -167,7 +197,19 @@
     LiteralExpr [STRING] [count_order]
     :
     FunctionCall tpch.count@1[
-      Variable [ Name=$l ]
+      (
+        SELECT ELEMENT [
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [l]
+          Variable [ Name=$g ]
+          Variable [ Name=$l_linestatus ]
+          Variable [ Name=$l_returnflag ]
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
     ]
   )
 ]
@@ -199,7 +241,7 @@
     Variable [ Name=$l ]
     Field=l_linestatus
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     l:=Variable [ Name=$l ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast
index 72ac671..63795d3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast
@@ -341,11 +341,14 @@
           (
             SELECT ELEMENT [
             FieldAccessor [
-              Variable [ Name=$i ]
+              FieldAccessor [
+                Variable [ Name=$i ]
+                Field=pssrn
+              ]
               Field=ps_supplycost
             ]
             ]
-            FROM [              Variable [ Name=$pssrn ]
+            FROM [              Variable [ Name=$g ]
               AS Variable [ Name=$i ]
             ]
           )
@@ -605,6 +608,7 @@
         Variable [ Name=$pssrn ]
         Field=p_partkey
       ]
+      GROUP AS Variable [ Name=$g ]
 
   )
 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q03_shipping_priority_nt/q03_shipping_priority_nt.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q03_shipping_priority_nt/q03_shipping_priority_nt.3.ast
index 47d5a97..b99d828 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q03_shipping_priority_nt/q03_shipping_priority_nt.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q03_shipping_priority_nt/q03_shipping_priority_nt.3.ast
@@ -115,7 +115,7 @@
     Variable [ Name=$o ]
     Field=o_shippriority
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     c:=Variable [ Name=$c ]
     o:=Variable [ Name=$o ]
@@ -143,7 +143,20 @@
         ]
       ]
       ]
-      FROM [        Variable [ Name=$l ]
+      FROM [        (
+          SELECT ELEMENT [
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [l]
+            Variable [ Name=$o_shippriority ]
+            Variable [ Name=$g ]
+            Variable [ Name=$o_orderdate ]
+            Variable [ Name=$l_orderkey ]
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q05_local_supplier_volume/q05_local_supplier_volume.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q05_local_supplier_volume/q05_local_supplier_volume.3.ast
index 5ee4bfe..61eb892 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q05_local_supplier_volume/q05_local_supplier_volume.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q05_local_supplier_volume/q05_local_supplier_volume.3.ast
@@ -297,7 +297,7 @@
     Variable [ Name=$o1 ]
     Field=n_name
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     c:=Variable [ Name=$c ]
     o1:=Variable [ Name=$o1 ]
@@ -324,7 +324,18 @@
         ]
       ]
       ]
-      FROM [        Variable [ Name=$o1 ]
+      FROM [        (
+          SELECT ELEMENT [
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [o1]
+            Variable [ Name=$g ]
+            Variable [ Name=$n_name ]
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q07_volume_shipping/q07_volume_shipping.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q07_volume_shipping/q07_volume_shipping.3.ast
index cc99aab..27f24e5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q07_volume_shipping/q07_volume_shipping.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q07_volume_shipping/q07_volume_shipping.3.ast
@@ -365,7 +365,7 @@
   Variable [ Name=$l_year ]
   :=
   Variable [ Name=$l_year0 ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     locs:=Variable [ Name=$locs ]
     t:=Variable [ Name=$t ]
@@ -378,7 +378,10 @@
       SELECT ELEMENT [
       OperatorExpr [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=locs
+          ]
           Field=l_extendedprice
         ]
         *
@@ -386,13 +389,16 @@
           LiteralExpr [LONG] [1]
           -
           FieldAccessor [
-            Variable [ Name=$i ]
+            FieldAccessor [
+              Variable [ Name=$i ]
+              Field=locs
+            ]
             Field=l_discount
           ]
         ]
       ]
       ]
-      FROM [        Variable [ Name=$locs ]
+      FROM [        Variable [ Name=$g ]
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q08_national_market_share/q08_national_market_share.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q08_national_market_share/q08_national_market_share.3.ast
index 53bdb44..6e434b4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q08_national_market_share/q08_national_market_share.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q08_national_market_share/q08_national_market_share.3.ast
@@ -36,7 +36,18 @@
 
           END
           ]
-          FROM [            Variable [ Name=$t ]
+          FROM [            (
+              SELECT ELEMENT [
+              FunctionCall Metadata.resolve@-1[
+                LiteralExpr [STRING] [t]
+                Variable [ Name=$g ]
+                Variable [ Name=$year ]
+              ]
+              ]
+              FROM [                Variable [ Name=$g ]
+                AS Variable [ Name=$g ]
+              ]
+            )
             AS Variable [ Name=$i ]
           ]
         )
@@ -50,7 +61,18 @@
             Field=revenue
           ]
           ]
-          FROM [            Variable [ Name=$t ]
+          FROM [            (
+              SELECT ELEMENT [
+              FunctionCall Metadata.resolve@-1[
+                LiteralExpr [STRING] [t]
+                Variable [ Name=$g ]
+                Variable [ Name=$year ]
+              ]
+              ]
+              FROM [                Variable [ Name=$g ]
+                AS Variable [ Name=$g ]
+              ]
+            )
             AS Variable [ Name=$i ]
           ]
         )
@@ -472,7 +494,7 @@
     Variable [ Name=$t ]
     Field=year
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     t:=Variable [ Name=$t ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast
index 3ee115a..84700db 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast
@@ -23,7 +23,19 @@
           Field=amount
         ]
         ]
-        FROM [          Variable [ Name=$profit ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [profit]
+              Variable [ Name=$g ]
+              Variable [ Name=$nation ]
+              Variable [ Name=$o_year ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$pr ]
         ]
       )
@@ -431,7 +443,7 @@
     Variable [ Name=$profit ]
     Field=o_year
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     profit:=Variable [ Name=$profit ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q10_returned_item/q10_returned_item.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q10_returned_item/q10_returned_item.3.ast
index d755261..8662a53 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q10_returned_item/q10_returned_item.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q10_returned_item/q10_returned_item.3.ast
@@ -328,7 +328,7 @@
     Variable [ Name=$locn ]
     Field=c_comment
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     locn:=Variable [ Name=$locn ]
   )
@@ -340,7 +340,10 @@
       SELECT ELEMENT [
       OperatorExpr [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=locn
+          ]
           Field=l_extendedprice
         ]
         *
@@ -348,13 +351,16 @@
           LiteralExpr [LONG] [1]
           -
           FieldAccessor [
-            Variable [ Name=$i ]
+            FieldAccessor [
+              Variable [ Name=$i ]
+              Field=locn
+            ]
             Field=l_discount
           ]
         ]
       ]
       ]
-      FROM [        Variable [ Name=$locn ]
+      FROM [        Variable [ Name=$g ]
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q10_returned_item_int64/q10_returned_item_int64.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q10_returned_item_int64/q10_returned_item_int64.3.ast
index d755261..8662a53 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q10_returned_item_int64/q10_returned_item_int64.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q10_returned_item_int64/q10_returned_item_int64.3.ast
@@ -328,7 +328,7 @@
     Variable [ Name=$locn ]
     Field=c_comment
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     locn:=Variable [ Name=$locn ]
   )
@@ -340,7 +340,10 @@
       SELECT ELEMENT [
       OperatorExpr [
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=locn
+          ]
           Field=l_extendedprice
         ]
         *
@@ -348,13 +351,16 @@
           LiteralExpr [LONG] [1]
           -
           FieldAccessor [
-            Variable [ Name=$i ]
+            FieldAccessor [
+              Variable [ Name=$i ]
+              Field=locn
+            ]
             Field=l_discount
           ]
         ]
       ]
       ]
-      FROM [        Variable [ Name=$locn ]
+      FROM [        Variable [ Name=$g ]
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q11_important_stock/q11_important_stock.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q11_important_stock/q11_important_stock.3.ast
index 8de0c01..a42b74b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q11_important_stock/q11_important_stock.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q11_important_stock/q11_important_stock.3.ast
@@ -110,17 +110,23 @@
             SELECT ELEMENT [
             OperatorExpr [
               FieldAccessor [
-                Variable [ Name=$i ]
+                FieldAccessor [
+                  Variable [ Name=$i ]
+                  Field=ps
+                ]
                 Field=ps_supplycost
               ]
               *
               FieldAccessor [
-                Variable [ Name=$i ]
+                FieldAccessor [
+                  Variable [ Name=$i ]
+                  Field=ps
+                ]
                 Field=ps_availqty
               ]
             ]
             ]
-            FROM [              Variable [ Name=$ps ]
+            FROM [              Variable [ Name=$g ]
               AS Variable [ Name=$i ]
             ]
           )
@@ -190,7 +196,7 @@
         Variable [ Name=$ps ]
         Field=ps_partkey
       ]
-      GROUP AS Variable [ Name=#1 ]
+      GROUP AS Variable [ Name=$g ]
       (
         ps:=Variable [ Name=$ps ]
         sn:=Variable [ Name=$sn ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q12_shipping/q12_shipping.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q12_shipping/q12_shipping.3.ast
index fa86271..1a5c510 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q12_shipping/q12_shipping.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q12_shipping/q12_shipping.3.ast
@@ -43,7 +43,18 @@
 
         END
         ]
-        FROM [          Variable [ Name=$o ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [o]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_shipmode ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -82,7 +93,18 @@
 
         END
         ]
-        FROM [          Variable [ Name=$o ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [o]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_shipmode ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -183,7 +205,7 @@
     Variable [ Name=$l ]
     Field=l_shipmode
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     l:=Variable [ Name=$l ]
     o:=Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q13_customer_distribution/q13_customer_distribution.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q13_customer_distribution/q13_customer_distribution.3.ast
index 4ab59b1..98f7a37 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q13_customer_distribution/q13_customer_distribution.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q13_customer_distribution/q13_customer_distribution.3.ast
@@ -34,7 +34,18 @@
               Field=o_orderkey_count
             ]
             ]
-            FROM [              Variable [ Name=$co ]
+            FROM [              (
+                SELECT ELEMENT [
+                FunctionCall Metadata.resolve@-1[
+                  LiteralExpr [STRING] [co]
+                  Variable [ Name=$g2 ]
+                  Variable [ Name=$c_custkey ]
+                ]
+                ]
+                FROM [                  Variable [ Name=$g2 ]
+                  AS Variable [ Name=$g2 ]
+                ]
+              )
               AS Variable [ Name=$i ]
             ]
           )
@@ -112,7 +123,7 @@
         Variable [ Name=$co ]
         Field=c_custkey
       ]
-      GROUP AS Variable [ Name=#1 ]
+      GROUP AS Variable [ Name=$g2 ]
       (
         co:=Variable [ Name=$co ]
       )
@@ -127,7 +138,7 @@
     Variable [ Name=$gco ]
     Field=c_count
   ]
-  GROUP AS Variable [ Name=#2 ]
+  GROUP AS Variable [ Name=$g ]
   (
     gco:=Variable [ Name=$gco ]
   )
@@ -137,13 +148,20 @@
   FunctionCall tpch.sql-count@1[
     (
       SELECT ELEMENT [
-      FieldAccessor [
-        Variable [ Name=#3 ]
-        Field=gco
+      (
+        SELECT ELEMENT [
+        FieldAccessor [
+          Variable [ Name=#1 ]
+          Field=gco
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
       ]
-      ]
-      FROM [        Variable [ Name=#2 ]
-        AS Variable [ Name=#3 ]
+      FROM [        Variable [ Name=$g ]
+        AS Variable [ Name=#1 ]
       ]
     )
   ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q14_promotion_effect/q14_promotion_effect.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q14_promotion_effect/q14_promotion_effect.3.ast
index e52e659..d108e83 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q14_promotion_effect/q14_promotion_effect.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q14_promotion_effect/q14_promotion_effect.3.ast
@@ -37,7 +37,20 @@
 
       END
       ]
-      FROM [        Variable [ Name=$lp ]
+      FROM [        (
+          SELECT ELEMENT [
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [lp]
+            Variable [ Name=$g ]
+            Variable [ Name=$l ]
+            Variable [ Name=$p ]
+            Variable [ Name=$t ]
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
         AS Variable [ Name=$i ]
       ]
     )
@@ -62,7 +75,20 @@
         ]
       ]
       ]
-      FROM [        Variable [ Name=$lp ]
+      FROM [        (
+          SELECT ELEMENT [
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [lp]
+            Variable [ Name=$g ]
+            Variable [ Name=$l ]
+            Variable [ Name=$p ]
+            Variable [ Name=$t ]
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q15_top_supplier/q15_top_supplier.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q15_top_supplier/q15_top_supplier.3.ast
index 0645c36..d4c9bb5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q15_top_supplier/q15_top_supplier.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q15_top_supplier/q15_top_supplier.3.ast
@@ -16,7 +16,10 @@
             SELECT ELEMENT [
             OperatorExpr [
               FieldAccessor [
-                Variable [ Name=$i ]
+                FieldAccessor [
+                  Variable [ Name=$i ]
+                  Field=l
+                ]
                 Field=l_extendedprice
               ]
               *
@@ -24,13 +27,16 @@
                 LiteralExpr [LONG] [1]
                 -
                 FieldAccessor [
-                  Variable [ Name=$i ]
+                  FieldAccessor [
+                    Variable [ Name=$i ]
+                    Field=l
+                  ]
                   Field=l_discount
                 ]
               ]
             ]
             ]
-            FROM [              Variable [ Name=$l ]
+            FROM [              Variable [ Name=$g ]
               AS Variable [ Name=$i ]
             ]
           )
@@ -68,6 +74,7 @@
         Variable [ Name=$l ]
         Field=l_suppkey
       ]
+      GROUP AS Variable [ Name=$g ]
 
   )
 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.ast
index aef4422..c6ea4fa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q16_parts_supplier_relationship/q16_parts_supplier_relationship.3.ast
@@ -324,7 +324,7 @@
     Variable [ Name=$t2 ]
     Field=p_size
   ]
-  GROUP AS Variable [ Name=#2 ]
+  GROUP AS Variable [ Name=$g ]
   (
     t2:=Variable [ Name=$t2 ]
   )
@@ -339,7 +339,20 @@
         Field=ps_suppkey
       ]
       ]
-      FROM [        Variable [ Name=$t2 ]
+      FROM [        (
+          SELECT ELEMENT [
+          FunctionCall Metadata.resolve@-1[
+            LiteralExpr [STRING] [t2]
+            Variable [ Name=$g ]
+            Variable [ Name=$p_brand ]
+            Variable [ Name=$p_size ]
+            Variable [ Name=$p_type ]
+          ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
         AS Variable [ Name=$i ]
       ]
     )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q17_large_gby_variant/q17_large_gby_variant.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q17_large_gby_variant/q17_large_gby_variant.3.ast
index c5ed1ef..11cb25f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q17_large_gby_variant/q17_large_gby_variant.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q17_large_gby_variant/q17_large_gby_variant.3.ast
@@ -11,7 +11,18 @@
     LiteralExpr [STRING] [t_count]
     :
     FunctionCall tpch.count@1[
-      Variable [ Name=$l ]
+      (
+        SELECT ELEMENT [
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [l]
+          Variable [ Name=$g ]
+          Variable [ Name=$l_partkey ]
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
     ]
   )
   (
@@ -28,7 +39,18 @@
             Field=l_quantity
           ]
           ]
-          FROM [            Variable [ Name=$l ]
+          FROM [            (
+              SELECT ELEMENT [
+              FunctionCall Metadata.resolve@-1[
+                LiteralExpr [STRING] [l]
+                Variable [ Name=$g ]
+                Variable [ Name=$l_partkey ]
+              ]
+              ]
+              FROM [                Variable [ Name=$g ]
+                AS Variable [ Name=$g ]
+              ]
+            )
             AS Variable [ Name=$i ]
           ]
         )
@@ -46,7 +68,18 @@
           Field=l_suppkey
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -63,7 +96,18 @@
           Field=l_linenumber
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -80,7 +124,18 @@
           Field=l_extendedprice
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -97,7 +152,18 @@
           Field=l_discount
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -114,7 +180,18 @@
           Field=l_tax
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -131,7 +208,18 @@
           Field=l_shipdate
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -148,7 +236,18 @@
           Field=l_commitdate
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -165,7 +264,18 @@
           Field=l_receiptdate
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -182,7 +292,18 @@
           Field=l_comment
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$l_partkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -202,7 +323,7 @@
     Variable [ Name=$l ]
     Field=l_partkey
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     l:=Variable [ Name=$l ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q18_large_volume_customer/q18_large_volume_customer.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q18_large_volume_customer/q18_large_volume_customer.3.ast
index a6eebfd..6bb9429 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q18_large_volume_customer/q18_large_volume_customer.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q18_large_volume_customer/q18_large_volume_customer.3.ast
@@ -38,7 +38,22 @@
           Field=l_quantity
         ]
         ]
-        FROM [          Variable [ Name=$l ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [l]
+              Variable [ Name=$g ]
+              Variable [ Name=$o_orderdate ]
+              Variable [ Name=$c_name ]
+              Variable [ Name=$o_orderkey ]
+              Variable [ Name=$o_totalprice ]
+              Variable [ Name=$c_custkey ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$j ]
         ]
       )
@@ -75,7 +90,20 @@
               Field=l_quantity
             ]
             ]
-            FROM [              Variable [ Name=$l ]
+            FROM [              (
+                SELECT ELEMENT [
+                FunctionCall Metadata.resolve@-1[
+                  LiteralExpr [STRING] [l]
+                  Variable [ Name=$o ]
+                  Variable [ Name=$l_orderkey ]
+                  Variable [ Name=$g2 ]
+                  Variable [ Name=$c ]
+                ]
+                ]
+                FROM [                  Variable [ Name=$g2 ]
+                  AS Variable [ Name=$g2 ]
+                ]
+              )
               AS Variable [ Name=$i ]
             ]
           )
@@ -95,7 +123,7 @@
         Variable [ Name=$l ]
         Field=l_orderkey
       ]
-      GROUP AS Variable [ Name=#1 ]
+      GROUP AS Variable [ Name=$g2 ]
       (
         l:=Variable [ Name=$l ]
       )
@@ -186,7 +214,7 @@
     Variable [ Name=$o ]
     Field=o_totalprice
   ]
-  GROUP AS Variable [ Name=#2 ]
+  GROUP AS Variable [ Name=$g ]
   (
     c:=Variable [ Name=$c ]
     o:=Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q20_potential_part_promotion/q20_potential_part_promotion.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q20_potential_part_promotion/q20_potential_part_promotion.3.ast
index 9993401..88f61d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q20_potential_part_promotion/q20_potential_part_promotion.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q20_potential_part_promotion/q20_potential_part_promotion.3.ast
@@ -60,7 +60,19 @@
                     Field=l_quantity
                   ]
                   ]
-                  FROM [                    Variable [ Name=$l ]
+                  FROM [                    (
+                      SELECT ELEMENT [
+                      FunctionCall Metadata.resolve@-1[
+                        LiteralExpr [STRING] [l]
+                        Variable [ Name=$l_suppkey ]
+                        Variable [ Name=$g ]
+                        Variable [ Name=$l_partkey ]
+                      ]
+                      ]
+                      FROM [                        Variable [ Name=$g ]
+                        AS Variable [ Name=$g ]
+                      ]
+                    )
                     AS Variable [ Name=$i ]
                   ]
                 )
@@ -87,7 +99,7 @@
             Variable [ Name=$l ]
             Field=l_suppkey
           ]
-          GROUP AS Variable [ Name=#1 ]
+          GROUP AS Variable [ Name=$g ]
           (
             l:=Variable [ Name=$l ]
           )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast
index cd588d6..51bdde2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast
@@ -19,7 +19,17 @@
               Field=l_suppkey
             ]
             ]
-            FROM [              Variable [ Name=$l2 ]
+            FROM [              (
+                SELECT ELEMENT [
+                FieldAccessor [
+                  Variable [ Name=$g1 ]
+                  Field=l2
+                ]
+                ]
+                FROM [                  Variable [ Name=$g1 ]
+                  AS Variable [ Name=$g1 ]
+                ]
+              )
               AS Variable [ Name=$i ]
             ]
           )
@@ -36,7 +46,17 @@
               Field=l_suppkey
             ]
             ]
-            FROM [              Variable [ Name=$l2 ]
+            FROM [              (
+                SELECT ELEMENT [
+                FieldAccessor [
+                  Variable [ Name=$g1 ]
+                  Field=l2
+                ]
+                ]
+                FROM [                  Variable [ Name=$g1 ]
+                  AS Variable [ Name=$g1 ]
+                ]
+              )
               AS Variable [ Name=$i ]
             ]
           )
@@ -86,6 +106,7 @@
         Variable [ Name=$l2 ]
         Field=l_orderkey
       ]
+      GROUP AS Variable [ Name=$g1 ]
 
   )
 }
@@ -110,7 +131,17 @@
               Field=l_suppkey
             ]
             ]
-            FROM [              Variable [ Name=$l2 ]
+            FROM [              (
+                SELECT ELEMENT [
+                FieldAccessor [
+                  Variable [ Name=$g2 ]
+                  Field=l2
+                ]
+                ]
+                FROM [                  Variable [ Name=$g2 ]
+                  AS Variable [ Name=$g2 ]
+                ]
+              )
               AS Variable [ Name=$i ]
             ]
           )
@@ -127,7 +158,17 @@
               Field=l_suppkey
             ]
             ]
-            FROM [              Variable [ Name=$l2 ]
+            FROM [              (
+                SELECT ELEMENT [
+                FieldAccessor [
+                  Variable [ Name=$g2 ]
+                  Field=l2
+                ]
+                ]
+                FROM [                  Variable [ Name=$g2 ]
+                  AS Variable [ Name=$g2 ]
+                ]
+              )
               AS Variable [ Name=$i ]
             ]
           )
@@ -189,6 +230,7 @@
         Variable [ Name=$l2 ]
         Field=l_orderkey
       ]
+      GROUP AS Variable [ Name=$g2 ]
 
   )
 }
@@ -432,7 +474,7 @@
     Variable [ Name=$t4 ]
     Field=s_name
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     t4:=Variable [ Name=$t4 ]
   )
@@ -442,13 +484,20 @@
   FunctionCall tpch.sql-count@1[
     (
       SELECT ELEMENT [
-      FieldAccessor [
-        Variable [ Name=#2 ]
-        Field=t4
+      (
+        SELECT ELEMENT [
+        FieldAccessor [
+          Variable [ Name=#1 ]
+          Field=t4
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
       ]
-      ]
-      FROM [        Variable [ Name=#1 ]
-        AS Variable [ Name=#2 ]
+      FROM [        Variable [ Name=$g ]
+        AS Variable [ Name=#1 ]
       ]
     )
   ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast
index b7ff109..1ca3eb5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast
@@ -77,7 +77,18 @@
     LiteralExpr [STRING] [numcust]
     :
     FunctionCall tpch.count@1[
-      Variable [ Name=$ct ]
+      (
+        SELECT ELEMENT [
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [ct]
+          Variable [ Name=$g ]
+          Variable [ Name=$cntrycode ]
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
     ]
   )
   (
@@ -91,7 +102,18 @@
           Field=c_acctbal
         ]
         ]
-        FROM [          Variable [ Name=$ct ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [ct]
+              Variable [ Name=$g ]
+              Variable [ Name=$cntrycode ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -119,7 +141,7 @@
     Variable [ Name=$ct ]
     Field=cntrycode
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     ct:=Variable [ Name=$ct ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue562/query-issue562.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue562/query-issue562.3.ast
index cac889b..a77edfe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue562/query-issue562.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue562/query-issue562.3.ast
@@ -183,12 +183,12 @@
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=#2 ]
+          Variable [ Name=#1 ]
           Field=ct
         ]
         ]
-        FROM [          Variable [ Name=#1 ]
-          AS Variable [ Name=#2 ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=#1 ]
         ]
       )
     ]
@@ -204,7 +204,18 @@
           Field=c_acctbal
         ]
         ]
-        FROM [          Variable [ Name=$ct ]
+        FROM [          (
+            SELECT ELEMENT [
+            FunctionCall Metadata.resolve@-1[
+              LiteralExpr [STRING] [ct]
+              Variable [ Name=$g ]
+              Variable [ Name=$cntrycode ]
+            ]
+            ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
+            ]
+          )
           AS Variable [ Name=$i ]
         ]
       )
@@ -252,7 +263,7 @@
     Variable [ Name=$ct ]
     Field=cntrycode
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     ct:=Variable [ Name=$ct ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue601/query-issue601.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue601/query-issue601.3.ast
index 35785dd..d12032a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue601/query-issue601.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue601/query-issue601.3.ast
@@ -6,7 +6,11 @@
     LiteralExpr [STRING] [l_linenumber]
     :
     FieldAccessor [
-      Variable [ Name=$l ]
+      FunctionCall Metadata.resolve@-1[
+        LiteralExpr [STRING] [l]
+        Variable [ Name=$g ]
+        Variable [ Name=$l_linenumber ]
+      ]
       Field=l_linenumber
     ]
   )
@@ -16,13 +20,17 @@
     FunctionCall tpch.sql-count@1[
       (
         SELECT ELEMENT [
-        FieldAccessor [
-          Variable [ Name=#2 ]
-          Field=l
+        (
+          SELECT ELEMENT [
+          Variable [ Name=$g ]
+          ]
+          FROM [            Variable [ Name=$g ]
+            AS Variable [ Name=$g ]
+          ]
+        )
         ]
-        ]
-        FROM [          Variable [ Name=#1 ]
-          AS Variable [ Name=#2 ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=#1 ]
         ]
       )
     ]
@@ -41,14 +49,18 @@
     Variable [ Name=$l ]
     Field=l_linenumber
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     l:=Variable [ Name=$l ]
   )
 
 Orderby
   FieldAccessor [
-    Variable [ Name=$l ]
+    FunctionCall Metadata.resolve@-1[
+      LiteralExpr [STRING] [l]
+      Variable [ Name=$g ]
+      Variable [ Name=$l_linenumber ]
+    ]
     Field=l_linenumber
   ]
   ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue638/query-issue638.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue638/query-issue638.3.ast
index bce73f5..14ed390 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue638/query-issue638.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue638/query-issue638.3.ast
@@ -19,12 +19,15 @@
       (
         SELECT ELEMENT [
         FieldAccessor [
-          Variable [ Name=$pr ]
+          FieldAccessor [
+            Variable [ Name=$g ]
+            Field=profit
+          ]
           Field=amount
         ]
         ]
-        FROM [          Variable [ Name=$profit ]
-          AS Variable [ Name=$pr ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
         ]
       )
     ]
@@ -431,7 +434,7 @@
     Variable [ Name=$profit ]
     Field=o_year
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     profit:=Variable [ Name=$profit ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue785-2/query-issue785-2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue785-2/query-issue785-2.3.ast
index 4ff201e..f4cb736 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue785-2/query-issue785-2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue785-2/query-issue785-2.3.ast
@@ -120,7 +120,7 @@
         Variable [ Name=$n ]
         Field=n_nationkey
       ]
-      GROUP AS Variable [ Name=#1 ]
+      GROUP AS Variable [ Name=$g2 ]
       (
         n:=Variable [ Name=$n ]
         customer:=Variable [ Name=$customer ]
@@ -133,12 +133,15 @@
         (
           SELECT ELEMENT [
           FieldAccessor [
-            Variable [ Name=$o ]
+            FieldAccessor [
+              Variable [ Name=$g2 ]
+              Field=orders
+            ]
             Field=o_totalprice
           ]
           ]
-          FROM [            Variable [ Name=$orders ]
-            AS Variable [ Name=$o ]
+          FROM [            Variable [ Name=$g2 ]
+            AS Variable [ Name=$g2 ]
           ]
         )
       ]
@@ -160,7 +163,10 @@
           LiteralExpr [STRING] [orderdate]
           :
           FieldAccessor [
-            Variable [ Name=$y ]
+            FieldAccessor [
+              Variable [ Name=$g ]
+              Field=x
+            ]
             Field=order_date
           ]
         )
@@ -168,18 +174,24 @@
           LiteralExpr [STRING] [sum_price]
           :
           FieldAccessor [
-            Variable [ Name=$y ]
+            FieldAccessor [
+              Variable [ Name=$g ]
+              Field=x
+            ]
             Field=sum_price
           ]
         )
       ]
       ]
-      FROM [        Variable [ Name=$x ]
-        AS Variable [ Name=$y ]
+      FROM [        Variable [ Name=$g ]
+        AS Variable [ Name=$g ]
       ]
       Orderby
         FieldAccessor [
-          Variable [ Name=$y ]
+          FieldAccessor [
+            Variable [ Name=$g ]
+            Field=x
+          ]
           Field=sum_price
         ]
         DESC
@@ -200,7 +212,7 @@
     Variable [ Name=$x ]
     Field=nation_key
   ]
-  GROUP AS Variable [ Name=#2 ]
+  GROUP AS Variable [ Name=$g ]
   (
     x:=Variable [ Name=$x ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue785/query-issue785.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue785/query-issue785.3.ast
index 066626b..a3643c5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue785/query-issue785.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue785/query-issue785.3.ast
@@ -25,17 +25,20 @@
         )
       ]
       ]
-      FROM [        Variable [ Name=$x ]
+      FROM [        Variable [ Name=$g ]
         AS Variable [ Name=$i ]
       ]
       Groupby
         Variable [ Name=$od ]
         :=
         FieldAccessor [
-          Variable [ Name=$i ]
+          FieldAccessor [
+            Variable [ Name=$i ]
+            Field=x
+          ]
           Field=order_date
         ]
-        GROUP AS Variable [ Name=#3 ]
+        GROUP AS Variable [ Name=$g2 ]
         (
           i:=Variable [ Name=$i ]
         )
@@ -46,12 +49,18 @@
           (
             SELECT ELEMENT [
             FieldAccessor [
-              Variable [ Name=$s ]
+              FieldAccessor [
+                FieldAccessor [
+                  Variable [ Name=$g2 ]
+                  Field=i
+                ]
+                Field=x
+              ]
               Field=sum_price
             ]
             ]
-            FROM [              Variable [ Name=$i ]
-              AS Variable [ Name=$s ]
+            FROM [              Variable [ Name=$g2 ]
+              AS Variable [ Name=$g2 ]
             ]
           )
         ]
@@ -85,12 +94,15 @@
           (
             SELECT ELEMENT [
             FieldAccessor [
-              Variable [ Name=$o ]
+              FieldAccessor [
+                Variable [ Name=$g3 ]
+                Field=orders
+              ]
               Field=o_totalprice
             ]
             ]
-            FROM [              Variable [ Name=$orders ]
-              AS Variable [ Name=$o ]
+            FROM [              Variable [ Name=$g3 ]
+              AS Variable [ Name=$g3 ]
             ]
           )
         ]
@@ -151,7 +163,7 @@
         Variable [ Name=$n ]
         Field=n_nationkey
       ]
-      GROUP AS Variable [ Name=#1 ]
+      GROUP AS Variable [ Name=$g3 ]
       (
         n:=Variable [ Name=$n ]
         customer:=Variable [ Name=$customer ]
@@ -168,7 +180,7 @@
     Variable [ Name=$x ]
     Field=nation_key
   ]
-  GROUP AS Variable [ Name=#2 ]
+  GROUP AS Variable [ Name=$g ]
   (
     x:=Variable [ Name=$x ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue786/query-issue786.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue786/query-issue786.3.ast
index 5908531..78d629d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue786/query-issue786.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue786/query-issue786.3.ast
@@ -79,7 +79,7 @@
           Variable [ Name=$orders ]
           Field=o_orderdate
         ]
-        GROUP AS Variable [ Name=#1 ]
+        GROUP AS Variable [ Name=$g ]
         (
           orders:=Variable [ Name=$orders ]
           customer:=Variable [ Name=$customer ]
@@ -91,12 +91,15 @@
           (
             SELECT ELEMENT [
             FieldAccessor [
-              Variable [ Name=$o ]
+              FieldAccessor [
+                Variable [ Name=$g ]
+                Field=orders
+              ]
               Field=o_totalprice
             ]
             ]
-            FROM [              Variable [ Name=$orders ]
-              AS Variable [ Name=$o ]
+            FROM [              Variable [ Name=$g ]
+              AS Variable [ Name=$g ]
             ]
           )
         ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue810-2/query-issue810-2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue810-2/query-issue810-2.3.ast
index 91bebe6..ab45142 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue810-2/query-issue810-2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue810-2/query-issue810-2.3.ast
@@ -55,7 +55,7 @@
     Variable [ Name=$l ]
     Field=l_linestatus
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     l:=Variable [ Name=$l ]
   )
@@ -64,15 +64,21 @@
   :=
   (
     SELECT ELEMENT [
-    Variable [ Name=$m ]
+    FieldAccessor [
+      Variable [ Name=$m ]
+      Field=l
     ]
-    FROM [      Variable [ Name=$l ]
+    ]
+    FROM [      Variable [ Name=$g ]
       AS Variable [ Name=$m ]
     ]
     Where
       OperatorExpr [
         FieldAccessor [
-          Variable [ Name=$m ]
+          FieldAccessor [
+            Variable [ Name=$m ]
+            Field=l
+          ]
           Field=l_discount
         ]
         >
@@ -85,7 +91,10 @@
     SELECT ELEMENT [
     OperatorExpr [
       FieldAccessor [
-        Variable [ Name=$a ]
+        FieldAccessor [
+          Variable [ Name=$a ]
+          Field=l
+        ]
         Field=l_extendedprice
       ]
       *
@@ -93,7 +102,10 @@
         LiteralExpr [LONG] [1]
         -
         FieldAccessor [
-          Variable [ Name=$a ]
+          FieldAccessor [
+            Variable [ Name=$a ]
+            Field=l
+          ]
           Field=l_discount
         ]
       ]
@@ -102,13 +114,16 @@
         LiteralExpr [LONG] [1]
         +
         FieldAccessor [
-          Variable [ Name=$a ]
+          FieldAccessor [
+            Variable [ Name=$a ]
+            Field=l
+          ]
           Field=l_tax
         ]
       ]
     ]
     ]
-    FROM [      Variable [ Name=$l ]
+    FROM [      Variable [ Name=$g ]
       AS Variable [ Name=$a ]
     ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue810-3/query-issue810-3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue810-3/query-issue810-3.3.ast
index 1657bd5..0fe8f7e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue810-3/query-issue810-3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue810-3/query-issue810-3.3.ast
@@ -69,7 +69,7 @@
     Variable [ Name=$l ]
     Field=l_linestatus
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     l:=Variable [ Name=$l ]
   )
@@ -83,7 +83,19 @@
       Field=l_discount
     ]
     ]
-    FROM [      Variable [ Name=$l ]
+    FROM [      (
+        SELECT ELEMENT [
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [l]
+          Variable [ Name=$g ]
+          Variable [ Name=$l_linestatus ]
+          Variable [ Name=$l_returnflag ]
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
       AS Variable [ Name=$i ]
     ]
     Where
@@ -102,7 +114,20 @@
     SELECT ELEMENT [
     Variable [ Name=$i ]
     ]
-    FROM [      Variable [ Name=$l ]
+    FROM [      (
+        SELECT ELEMENT [
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [l]
+          Variable [ Name=$expensives ]
+          Variable [ Name=$g ]
+          Variable [ Name=$l_linestatus ]
+          Variable [ Name=$l_returnflag ]
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
       AS Variable [ Name=$i ]
     ]
     Where
@@ -144,7 +169,21 @@
       ]
     ]
     ]
-    FROM [      Variable [ Name=$l ]
+    FROM [      (
+        SELECT ELEMENT [
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [l]
+          Variable [ Name=$expensives ]
+          Variable [ Name=$g ]
+          Variable [ Name=$l_linestatus ]
+          Variable [ Name=$l_returnflag ]
+          Variable [ Name=$cheaps ]
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
       AS Variable [ Name=$i ]
     ]
   )
@@ -168,7 +207,22 @@
       ]
     ]
     ]
-    FROM [      Variable [ Name=$l ]
+    FROM [      (
+        SELECT ELEMENT [
+        FunctionCall Metadata.resolve@-1[
+          LiteralExpr [STRING] [l]
+          Variable [ Name=$expensives ]
+          Variable [ Name=$g ]
+          Variable [ Name=$l_linestatus ]
+          Variable [ Name=$l_returnflag ]
+          Variable [ Name=$charges ]
+          Variable [ Name=$cheaps ]
+        ]
+        ]
+        FROM [          Variable [ Name=$g ]
+          AS Variable [ Name=$g ]
+        ]
+      )
       AS Variable [ Name=$i ]
     ]
   )
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue810/query-issue810.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue810/query-issue810.3.ast
index 9c62a28..6787c4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue810/query-issue810.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue810/query-issue810.3.ast
@@ -55,7 +55,7 @@
     Variable [ Name=$l ]
     Field=l_linestatus
   ]
-  GROUP AS Variable [ Name=#1 ]
+  GROUP AS Variable [ Name=$g ]
   (
     l:=Variable [ Name=$l ]
   )
@@ -64,15 +64,21 @@
   :=
   (
     SELECT ELEMENT [
-    Variable [ Name=$m ]
+    FieldAccessor [
+      Variable [ Name=$m ]
+      Field=l
     ]
-    FROM [      Variable [ Name=$l ]
+    ]
+    FROM [      Variable [ Name=$g ]
       AS Variable [ Name=$m ]
     ]
     Where
       OperatorExpr [
         FieldAccessor [
-          Variable [ Name=$m ]
+          FieldAccessor [
+            Variable [ Name=$m ]
+            Field=l
+          ]
           Field=l_discount
         ]
         >
@@ -83,15 +89,21 @@
   :=
   (
     SELECT ELEMENT [
-    Variable [ Name=$a ]
+    FieldAccessor [
+      Variable [ Name=$a ]
+      Field=l
     ]
-    FROM [      Variable [ Name=$l ]
+    ]
+    FROM [      Variable [ Name=$g ]
       AS Variable [ Name=$a ]
     ]
     Where
       OperatorExpr [
         FieldAccessor [
-          Variable [ Name=$a ]
+          FieldAccessor [
+            Variable [ Name=$a ]
+            Field=l
+          ]
           Field=l_discount
         ]
         <=
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index 0ad80c0..0ad091f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -2585,7 +2585,7 @@
     <test-case FilePath="global-aggregate">
       <compilation-unit name="q05_error">
         <output-dir compare="Text">q01</output-dir>
-        <expected-error>Type mismatch: function field-access-by-name expects its 1st input parameter to be type object, but the actual input type is array</expected-error>
+        <expected-error>Cannot find dataset u in dataverse TinySocial nor an alias with name u</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="global-aggregate">
@@ -2649,6 +2649,18 @@
       </compilation-unit>
     </test-case>
     <test-case FilePath="group-by">
+      <compilation-unit name="core-01-error">
+        <output-dir compare="Text">none</output-dir>
+        <expected-error>Cannot find dataset e in dataverse gby nor an alias with name e</expected-error>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="group-by">
+      <compilation-unit name="core-02-error">
+        <output-dir compare="Text">none</output-dir>
+        <expected-error>Cannot find dataset f in dataverse gby nor an alias with name f</expected-error>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="group-by">
       <compilation-unit name="core-02">
         <output-dir compare="Text">core-02</output-dir>
       </compilation-unit>
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByVisitor.java
index b928285..7f2e6c9 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByVisitor.java
@@ -184,7 +184,7 @@
             if (needResolution) {
                 // Tracks used variables, including WITH variables.
                 decorVars.retainAll(freeVariables);
-                // Adds all non-WITH outer scope variables, for path resolution.
+                // Adds all outer scope variables, for path resolution.
                 Collection<VariableExpr> visibleOuterScopeNonWithVars = SqlppVariableUtil.getLiveVariables(
                         scopeChecker.getCurrentScope(), false);
                 visibleOuterScopeNonWithVars.removeAll(visibleVarsInCurrentScope);
@@ -220,18 +220,9 @@
 
     @Override
     public Expression visit(GroupbyClause gc, ILangExpression arg) throws CompilationException {
-        // Puts all FROM binding variables into withVarList.
         FromClause fromClause = (FromClause) arg;
         Collection<VariableExpr> fromBindingVars =
                 fromClause == null ? new ArrayList<>() : SqlppVariableUtil.getBindingVariables(fromClause);
-        Map<Expression, VariableExpr> withVarMap = new HashMap<>();
-        for (VariableExpr fromBindingVar : fromBindingVars) {
-            VariableExpr varExpr = new VariableExpr();
-            varExpr.setIsNewVar(false);
-            varExpr.setVar(fromBindingVar.getVar());
-            VariableExpr newVarExpr = (VariableExpr) SqlppRewriteUtil.deepCopy(varExpr);
-            withVarMap.put(varExpr, newVarExpr);
-        }
         // Sets the field list for the group variable.
         List<Pair<Expression, Identifier>> groupFieldList = new ArrayList<>();
         if (!gc.hasGroupFieldList()) {
@@ -245,12 +236,9 @@
             for (Pair<Expression, Identifier> groupField : gc.getGroupFieldList()) {
                 Expression newFieldExpr = groupField.first.accept(this, arg);
                 groupFieldList.add(new Pair<>(newFieldExpr, groupField.second));
-                // Adds a field binding variable into withVarList.
-                VariableExpr bindingVar = new VariableExpr(
-                        new VarIdentifier(SqlppVariableUtil.toInternalVariableName(groupField.second.getValue())));
-                withVarMap.put(newFieldExpr, bindingVar);
             }
         }
+
         gc.setGroupFieldList(groupFieldList);
 
         // Sets the group variable.
@@ -262,6 +250,7 @@
         // Adds the group variable into the "with" (i.e., re-binding) variable list.
         VariableExpr gbyVarRef = new VariableExpr(gc.getGroupVar().getVar());
         gbyVarRef.setIsNewVar(false);
+        Map<Expression, VariableExpr> withVarMap = new HashMap<>();
         withVarMap.put(gbyVarRef, (VariableExpr) SqlppRewriteUtil.deepCopy(gbyVarRef));
         gc.setWithVarMap(withVarMap);