[ASTERIXDB-3562][COMP] Do not place array slice in a subplan

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
Array slice expressions (e.g. array_f[1:5]) do not need to
be nested in a subplan.

Ext-ref: MB-65303
Change-Id: I352a0e249e31963e959815e10a9e7d25bed3206f
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19448
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
Reviewed-by: Peeyush Gupta <peeyush.gupta@couchbase.com>
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
index acbd13e..b1638d4 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
@@ -1847,6 +1847,7 @@
             case IF_EXPRESSION:
             case CASE_EXPRESSION:
             case WINDOW_EXPRESSION:
+            case LIST_SLICE_EXPRESSION:
                 return true;
             case QUANTIFIED_EXPRESSION:
                 return ((QuantifiedExpression) expr).getQuantifier() == Quantifier.SOME_AND_EVERY;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-3562.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-3562.plan
index fc97335..2653643 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-3562.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-3562.plan
@@ -4,35 +4,19 @@
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
     project ([$$17])
     -- STREAM_PROJECT  |PARTITIONED|
-      assign [$$17] <- [{"f_1": $$14, "f_2": $$16}]
+      assign [$$17] <- [{"f_1": array-slice($$18, 0, 1), "f_2": array-slice($$18, 0, 2)}]
       -- ASSIGN  |PARTITIONED|
-        project ([$$14, $$16])
+        project ([$$18])
         -- STREAM_PROJECT  |PARTITIONED|
-          subplan {
-                    assign [$$16] <- [array-slice($$19, 0, 2)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- ASSIGN  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- SUBPLAN  |PARTITIONED|
-            subplan {
-                      assign [$$14] <- [array-slice($$19, 0, 1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- ASSIGN  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- SUBPLAN  |PARTITIONED|
-              project ([$$19])
-              -- STREAM_PROJECT  |PARTITIONED|
-                assign [$$19] <- [$$collection1.getField("array1")]
-                -- ASSIGN  |PARTITIONED|
-                  project ([$$collection1])
-                  -- STREAM_PROJECT  |PARTITIONED|
-                    exchange
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$18, $$collection1] <- test.collection1
-                      -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source
-                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+          assign [$$18] <- [$$collection1.getField("array1")]
+          -- ASSIGN  |PARTITIONED|
+            project ([$$collection1])
+            -- STREAM_PROJECT  |PARTITIONED|
+              exchange
+              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                data-scan []<-[$$19, $$collection1] <- test.collection1
+                -- DATASOURCE_SCAN  |PARTITIONED|
+                  exchange
+                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                    empty-tuple-source
+                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file