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

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


The following commit(s) were added to refs/heads/master by this push:
     new 35dd1dc31e [ASTERIXDB-3223][COMP] Enable index only plan when index 
includes UNKNOWNs
35dd1dc31e is described below

commit 35dd1dc31ee8f1ac8d27583ec467fdf8affb13ec
Author: Shahrzad Shirazi <[email protected]>
AuthorDate: Mon Jul 10 09:22:37 2023 -0700

    [ASTERIXDB-3223][COMP] Enable index only plan when index includes UNKNOWNs
    
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    When a secondary index includes UNKNOWNs, the original SELECT condition 
needs
    to be applied after the secondary index search to ensure NULLs/MISSINGs are
    filtered out. For example, the predicate in the below query can incorrectly
    return NULLs/MISSINGs matches:
    SELECT id, s_f2 FROM ds7 WHERE s_f2 < "4" ORDER BY id;
    
    Change-Id: I457606d2b0b001432a7607407d6755130e49acc1
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17629
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Ali Alsuliman <[email protected]>
---
 .../optimizer/rules/am/AccessMethodUtils.java      |  5 +-
 ...oin-probe-pidx-with-join-btree-sidx_01_ps.sqlpp |  4 +-
 ...e-pidx-with-join-btree-sidx_03-index-only.sqlpp |  4 +-
 .../btree-index-composite-key-04.sqlpp             |  2 +-
 .../cast-default-null/cast-default-null-24.sqlpp   |  1 -
 .../btree-index/btree-sidx-idxonly-01.sqlpp        |  4 +-
 .../btree-index/btree-sidx-idxonly-01_ps.sqlpp     |  4 +-
 .../btree-index/btree-sidx-idxonly-10.sqlpp        |  2 +-
 ...join-probe-pidx-with-join-btree-sidx_01_ps.plan | 60 ++++++++++++----------
 ...be-pidx-with-join-btree-sidx_03-index-only.plan | 30 ++++++-----
 .../btree-index-composite-key-04.plan              | 16 +++---
 .../cast-default-null/cast-default-null-24.plan    | 25 ++++++---
 .../results/btree-index/btree-sidx-idxonly-01.plan | 16 +++---
 .../btree-index/btree-sidx-idxonly-01_ps.plan      | 28 +++++-----
 .../cast-default-null.23.query.sqlpp               |  1 -
 .../secondary-index-index-only.1.ddl.sqlpp         |  2 +-
 16 files changed, 113 insertions(+), 91 deletions(-)

diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
index 46fe70d744..fd65e5d205 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
@@ -1657,7 +1657,7 @@ public class AccessMethodUtils {
         // false positive results in the right path.
         // (e.g., where $a.authors /*+ indexnl */ = $b.authors and $a.id = 
$b.id   <- authors:SK, id:PK)
         if (((idxType == IndexType.RTREE || uniqueUsedVarsInTopOp.size() > 1) 
&& requireVerificationAfterSIdxSearch)
-                || anyRealTypeConvertedToIntegerType) {
+                || anyRealTypeConvertedToIntegerType || 
IndexUtil.includesUnknowns(secondaryIndex)) {
             // Creates a new SELECT operator by deep-copying the SELECT 
operator in the left path
             // since we need to change the variable reference in the SELECT 
operator.
             // For the index-nested-loop join case, we copy the condition of 
the join operator.
@@ -2152,8 +2152,7 @@ public class AccessMethodUtils {
         // an inverted index contains a part of a field value, not all of it.
         if (noIndexOnlyPlanOption || dataset.getDatasetType() == 
DatasetType.EXTERNAL || chosenIndex.isPrimaryIndex()
                 || chosenIndex.getIndexDetails().isOverridingKeyFieldTypes() 
|| chosenIndex.isEnforced()
-                || isInvertedIndex(chosenIndex) || chosenIndex.getIndexType() 
== IndexType.ARRAY
-                || IndexUtil.includesUnknowns(chosenIndex)) {
+                || isInvertedIndex(chosenIndex) || chosenIndex.getIndexType() 
== IndexType.ARRAY) {
             indexOnlyPlanInfo.setFirst(false);
             return;
         }
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_ps.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_ps.sqlpp
index 7eb8623458..1c1d6e414f 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_ps.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_ps.sqlpp
@@ -55,9 +55,9 @@ create  dataset TweetMessages(TweetMessageType) primary key 
tweetid;
 
 create  index twmSndLocIx  on TweetMessages (`sender-location`) type rtree;
 
-create  index msgCountAIx  on TweetMessages (countA) type btree exclude 
unknown key;
+create  index msgCountAIx  on TweetMessages (countA) type btree include 
unknown key;
 
-create  index msgCountBIx  on TweetMessages (countB) type btree exclude 
unknown key;
+create  index msgCountBIx  on TweetMessages (countB) type btree include 
unknown key;
 
 create  index msgTextIx  on TweetMessages (`message-text`) type keyword;
 
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_03-index-only.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_03-index-only.sqlpp
index 4c937e3726..bae0d738fe 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_03-index-only.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_03-index-only.sqlpp
@@ -55,9 +55,9 @@ create  dataset TweetMessages(TweetMessageType) primary key 
tweetid;
 
 create  index twmSndLocIx  on TweetMessages (`sender-location`) type rtree;
 
-create  index msgCountAIx  on TweetMessages (countA) type btree exclude 
unknown key;
+create  index msgCountAIx  on TweetMessages (countA) type btree include 
unknown key;
 
-create  index msgCountBIx  on TweetMessages (countB) type btree exclude 
unknown key;
+create  index msgCountBIx  on TweetMessages (countB) type btree include 
unknown key;
 
 create  index msgTextIx  on TweetMessages (`message-text`) type keyword;
 
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/btree-index-composite-key-04.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/btree-index-composite-key-04.sqlpp
index 917d2fd9ef..8cc1d506f9 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/btree-index-composite-key-04.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/btree-index-composite-key-04.sqlpp
@@ -38,7 +38,7 @@ create type test.Emp as
 
 create dataset employee(Emp) primary key id;
 
-create index idx_employee_f_l_name on employee (fname,lname) type btree 
exclude unknown key;
+create index idx_employee_f_l_name on employee (fname,lname) type btree 
include unknown key;
 
 select id, fname, lname
 from employee
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/cast-default-null/cast-default-null-24.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/cast-default-null/cast-default-null-24.sqlpp
index 8df277a186..a7aaa3d54c 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/cast-default-null/cast-default-null-24.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/cast-default-null/cast-default-null-24.sqlpp
@@ -33,5 +33,4 @@ CREATE VIEW view7_2(id int, s_f2 int, i_f int) DEFAULT NULL 
AS SELECT id, s_f2,
 
 USE test;
 // index idx1 should be used
-set `compiler.indexonly` "false"; // there is an issue with using index only 
plan where nulls/missings are included
 SELECT id, s_f2 FROM ds7 WHERE s_f2 < "4" ORDER BY id;
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-sidx-idxonly-01.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-sidx-idxonly-01.sqlpp
index d18185738a..00fb2248e6 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-sidx-idxonly-01.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-sidx-idxonly-01.sqlpp
@@ -51,8 +51,8 @@ create type MyRecord as closed {
 
 create dataset MyData(MyRecord) primary key id;
 
-create index btree_index_docid on MyData(docid) type btree exclude unknown key;
-create index btree_index_val1 on MyData(val1) type btree exclude unknown key;
+create index btree_index_docid on MyData(docid) type btree include unknown key;
+create index btree_index_val1 on MyData(val1) type btree include unknown key;
 create index rtree_index_point on MyData(point) type rtree;
 create index rtree_index_rec on MyData(rec) type rtree;
 create index ngram_index_title on MyData(title) type ngram(3);
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-sidx-idxonly-01_ps.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-sidx-idxonly-01_ps.sqlpp
index a34ce048cd..7fe87a2f0c 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-sidx-idxonly-01_ps.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-sidx-idxonly-01_ps.sqlpp
@@ -51,8 +51,8 @@ create type MyRecord as closed {
 
 create dataset MyData(MyRecord) primary key id;
 
-create index btree_index_docid on MyData(docid) type btree exclude unknown key;
-create index btree_index_val1 on MyData(val1) type btree exclude unknown key;
+create index btree_index_docid on MyData(docid) type btree include unknown key;
+create index btree_index_val1 on MyData(val1) type btree include unknown key;
 create index rtree_index_point on MyData(point) type rtree;
 create index rtree_index_rec on MyData(rec) type rtree;
 create index ngram_index_title on MyData(title) type ngram(3);
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-sidx-idxonly-10.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-sidx-idxonly-10.sqlpp
index c7ee31c435..2d537e852e 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-sidx-idxonly-10.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-sidx-idxonly-10.sqlpp
@@ -87,7 +87,7 @@ create type typeTweet if not exists as open {
 
 create dataset ds_tweet(typeTweet) if not exists primary key id;
 
-create index create_at_status_count_idx on ds_tweet(user.create_at, 
user.status_count) exclude unknown key;
+create index create_at_status_count_idx on ds_tweet(user.create_at, 
user.status_count) include unknown key;
 
 select value count(first.create_at) from (
 select t.user.create_at, t.user.status_count, t.id from ds_tweet t
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_ps.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_ps.plan
index d2df75a3b7..aefe8213c7 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_ps.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_ps.plan
@@ -3,21 +3,21 @@
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          -- STABLE_SORT [$$51(ASC)]  |PARTITIONED|
-            -- RANGE_PARTITION_EXCHANGE [$$51(ASC)]  |PARTITIONED|
+          -- STABLE_SORT [$$53(ASC)]  |PARTITIONED|
+            -- RANGE_PARTITION_EXCHANGE [$$53(ASC)]  |PARTITIONED|
               -- FORWARD  |PARTITIONED|
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   -- REPLICATE  |PARTITIONED|
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- PRE_CLUSTERED_GROUP_BY[$$68]  |PARTITIONED|
+                      -- PRE_CLUSTERED_GROUP_BY[$$70]  |PARTITIONED|
                               {
                                 -- AGGREGATE  |LOCAL|
                                   -- STREAM_SELECT  |LOCAL|
                                     -- NESTED_TUPLE_SOURCE  |LOCAL|
                               }
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          -- STABLE_SORT [$$68(ASC), $$43(ASC)]  |PARTITIONED|
-                            -- HASH_PARTITION_EXCHANGE [$$68]  |PARTITIONED|
+                          -- STABLE_SORT [$$70(ASC), $$45(ASC)]  |PARTITIONED|
+                            -- HASH_PARTITION_EXCHANGE [$$70]  |PARTITIONED|
                               -- UNION_ALL  |PARTITIONED|
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                   -- STREAM_PROJECT  |PARTITIONED|
@@ -42,18 +42,20 @@
                                                                         -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      -- SPLIT  |PARTITIONED|
+                                    -- STREAM_SELECT  |PARTITIONED|
+                                      -- STREAM_PROJECT  |PARTITIONED|
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          -- BTREE_SEARCH 
(test.TweetMessages.msgCountBIx)  |PARTITIONED|
-                                            -- BROADCAST_EXCHANGE  
|PARTITIONED|
-                                              -- STREAM_PROJECT  |PARTITIONED|
-                                                -- ASSIGN  |PARTITIONED|
-                                                  -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
-                                                    -- BTREE_SEARCH 
(test.TweetMessages.TweetMessages)  |PARTITIONED|
+                                          -- SPLIT  |PARTITIONED|
+                                            -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
+                                              -- BTREE_SEARCH 
(test.TweetMessages.msgCountBIx)  |PARTITIONED|
+                                                -- BROADCAST_EXCHANGE  
|PARTITIONED|
+                                                  -- STREAM_PROJECT  
|PARTITIONED|
+                                                    -- ASSIGN  |PARTITIONED|
                                                       -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
-                                                        -- ASSIGN  
|PARTITIONED|
-                                                          -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                                        -- BTREE_SEARCH 
(test.TweetMessages.TweetMessages)  |PARTITIONED|
+                                                          -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                            -- ASSIGN  
|PARTITIONED|
+                                                              -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
                 -- BROADCAST_EXCHANGE  |PARTITIONED|
                   -- AGGREGATE  |UNPARTITIONED|
                     -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
@@ -62,15 +64,15 @@
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                             -- REPLICATE  |PARTITIONED|
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                -- PRE_CLUSTERED_GROUP_BY[$$68]  |PARTITIONED|
+                                -- PRE_CLUSTERED_GROUP_BY[$$70]  |PARTITIONED|
                                         {
                                           -- AGGREGATE  |LOCAL|
                                             -- STREAM_SELECT  |LOCAL|
                                               -- NESTED_TUPLE_SOURCE  |LOCAL|
                                         }
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    -- STABLE_SORT [$$68(ASC), $$43(ASC)]  
|PARTITIONED|
-                                      -- HASH_PARTITION_EXCHANGE [$$68]  
|PARTITIONED|
+                                    -- STABLE_SORT [$$70(ASC), $$45(ASC)]  
|PARTITIONED|
+                                      -- HASH_PARTITION_EXCHANGE [$$70]  
|PARTITIONED|
                                         -- UNION_ALL  |PARTITIONED|
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                             -- STREAM_PROJECT  |PARTITIONED|
@@ -95,15 +97,17 @@
                                                                                
   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
-                                                -- SPLIT  |PARTITIONED|
+                                              -- STREAM_SELECT  |PARTITIONED|
+                                                -- STREAM_PROJECT  
|PARTITIONED|
                                                   -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
-                                                    -- BTREE_SEARCH 
(test.TweetMessages.msgCountBIx)  |PARTITIONED|
-                                                      -- BROADCAST_EXCHANGE  
|PARTITIONED|
-                                                        -- STREAM_PROJECT  
|PARTITIONED|
-                                                          -- ASSIGN  
|PARTITIONED|
-                                                            -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              -- BTREE_SEARCH 
(test.TweetMessages.TweetMessages)  |PARTITIONED|
+                                                    -- SPLIT  |PARTITIONED|
+                                                      -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
+                                                        -- BTREE_SEARCH 
(test.TweetMessages.msgCountBIx)  |PARTITIONED|
+                                                          -- 
BROADCAST_EXCHANGE  |PARTITIONED|
+                                                            -- STREAM_PROJECT  
|PARTITIONED|
+                                                              -- ASSIGN  
|PARTITIONED|
                                                                 -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  -- ASSIGN  
|PARTITIONED|
-                                                                    -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                                                  -- 
BTREE_SEARCH (test.TweetMessages.TweetMessages)  |PARTITIONED|
+                                                                    -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                      -- 
ASSIGN  |PARTITIONED|
+                                                                        -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_03-index-only.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_03-index-only.plan
index f816bd77a3..c6a637eaa2 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_03-index-only.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_03-index-only.plan
@@ -2,15 +2,15 @@
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
-        -- SORT_MERGE_EXCHANGE [$$65(ASC), $$40(ASC) ]  |PARTITIONED|
-          -- STABLE_SORT [$$65(ASC), $$40(ASC)]  |PARTITIONED|
+        -- SORT_MERGE_EXCHANGE [$$67(ASC), $$42(ASC) ]  |PARTITIONED|
+          -- STABLE_SORT [$$67(ASC), $$42(ASC)]  |PARTITIONED|
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
               -- STREAM_PROJECT  |PARTITIONED|
                 -- STREAM_SELECT  |PARTITIONED|
                   -- WINDOW_STREAM  |PARTITIONED|
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- STABLE_SORT [$$65(ASC), $$40(DESC)]  |PARTITIONED|
-                        -- HASH_PARTITION_EXCHANGE [$$65]  |PARTITIONED|
+                      -- STABLE_SORT [$$67(ASC), $$42(DESC)]  |PARTITIONED|
+                        -- HASH_PARTITION_EXCHANGE [$$67]  |PARTITIONED|
                           -- UNION_ALL  |PARTITIONED|
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                               -- STREAM_PROJECT  |PARTITIONED|
@@ -35,15 +35,17 @@
                                                                     -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                               -- STREAM_PROJECT  |PARTITIONED|
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  -- SPLIT  |PARTITIONED|
+                                -- STREAM_SELECT  |PARTITIONED|
+                                  -- STREAM_PROJECT  |PARTITIONED|
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      -- BTREE_SEARCH 
(test.TweetMessages.msgCountBIx)  |PARTITIONED|
-                                        -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                          -- STREAM_PROJECT  |PARTITIONED|
-                                            -- ASSIGN  |PARTITIONED|
-                                              -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
-                                                -- BTREE_SEARCH 
(test.TweetMessages.TweetMessages)  |PARTITIONED|
+                                      -- SPLIT  |PARTITIONED|
+                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                          -- BTREE_SEARCH 
(test.TweetMessages.msgCountBIx)  |PARTITIONED|
+                                            -- BROADCAST_EXCHANGE  
|PARTITIONED|
+                                              -- STREAM_PROJECT  |PARTITIONED|
+                                                -- ASSIGN  |PARTITIONED|
                                                   -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
-                                                    -- ASSIGN  |PARTITIONED|
-                                                      -- EMPTY_TUPLE_SOURCE  
|PARTITIONED|
+                                                    -- BTREE_SEARCH 
(test.TweetMessages.TweetMessages)  |PARTITIONED|
+                                                      -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
+                                                        -- ASSIGN  
|PARTITIONED|
+                                                          -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/btree-index-composite-key-04.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/btree-index-composite-key-04.plan
index f560061661..353b922ca1 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/btree-index-composite-key-04.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/btree-index-composite-key-04.plan
@@ -2,8 +2,8 @@
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
-        -- SORT_MERGE_EXCHANGE [$$21(ASC) ]  |PARTITIONED|
-          -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
+        -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
+          -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
               -- UNION_ALL  |PARTITIONED|
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -22,10 +22,12 @@
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   -- STREAM_PROJECT  |PARTITIONED|
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- SPLIT  |PARTITIONED|
+                    -- STREAM_SELECT  |PARTITIONED|
+                      -- STREAM_PROJECT  |PARTITIONED|
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          -- BTREE_SEARCH 
(test.employee.idx_employee_f_l_name)  |PARTITIONED|
+                          -- SPLIT  |PARTITIONED|
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              -- ASSIGN  |PARTITIONED|
-                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                              -- BTREE_SEARCH 
(test.employee.idx_employee_f_l_name)  |PARTITIONED|
+                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                  -- ASSIGN  |PARTITIONED|
+                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/cast-default-null/cast-default-null-24.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/cast-default-null/cast-default-null-24.plan
index a83a1a92e9..d510067b20 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/cast-default-null/cast-default-null-24.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/cast-default-null/cast-default-null-24.plan
@@ -5,17 +5,28 @@
         -- SORT_MERGE_EXCHANGE [$$21(ASC) ]  |PARTITIONED|
           -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              -- STREAM_SELECT  |PARTITIONED|
-                -- STREAM_PROJECT  |PARTITIONED|
-                  -- ASSIGN  |PARTITIONED|
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- BTREE_SEARCH (test.ds7.ds7)  |PARTITIONED|
+              -- UNION_ALL  |PARTITIONED|
+                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                  -- STREAM_SELECT  |PARTITIONED|
+                    -- STREAM_PROJECT  |PARTITIONED|
+                      -- ASSIGN  |PARTITIONED|
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          -- STABLE_SORT [$$26(ASC)]  |PARTITIONED|
+                          -- BTREE_SEARCH (test.ds7.ds7)  |PARTITIONED|
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              -- STREAM_PROJECT  |PARTITIONED|
+                              -- SPLIT  |PARTITIONED|
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                   -- BTREE_SEARCH (test.ds7.idx1)  
|PARTITIONED|
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                       -- ASSIGN  |PARTITIONED|
                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                  -- STREAM_PROJECT  |PARTITIONED|
+                    -- STREAM_SELECT  |PARTITIONED|
+                      -- STREAM_PROJECT  |PARTITIONED|
+                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                          -- SPLIT  |PARTITIONED|
+                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                              -- BTREE_SEARCH (test.ds7.idx1)  |PARTITIONED|
+                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                  -- ASSIGN  |PARTITIONED|
+                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-sidx-idxonly-01.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-sidx-idxonly-01.plan
index 9bf7df85d1..9465d591be 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-sidx-idxonly-01.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-sidx-idxonly-01.plan
@@ -2,8 +2,8 @@
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
-        -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-          -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
+        -- SORT_MERGE_EXCHANGE [$$21(ASC) ]  |PARTITIONED|
+          -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
               -- UNION_ALL  |PARTITIONED|
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
@@ -21,10 +21,12 @@
                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   -- STREAM_PROJECT  |PARTITIONED|
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- SPLIT  |PARTITIONED|
+                    -- STREAM_SELECT  |PARTITIONED|
+                      -- STREAM_PROJECT  |PARTITIONED|
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          -- BTREE_SEARCH (test.MyData.btree_index_docid)  
|PARTITIONED|
+                          -- SPLIT  |PARTITIONED|
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              -- ASSIGN  |PARTITIONED|
-                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                              -- BTREE_SEARCH (test.MyData.btree_index_docid)  
|PARTITIONED|
+                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                  -- ASSIGN  |PARTITIONED|
+                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-sidx-idxonly-01_ps.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-sidx-idxonly-01_ps.plan
index ae40d81845..70d8a30ba7 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-sidx-idxonly-01_ps.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-sidx-idxonly-01_ps.plan
@@ -3,8 +3,8 @@
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-            -- RANGE_PARTITION_EXCHANGE [$$20(ASC)]  |PARTITIONED|
+          -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
+            -- RANGE_PARTITION_EXCHANGE [$$21(ASC)]  |PARTITIONED|
               -- FORWARD  |PARTITIONED|
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   -- REPLICATE  |PARTITIONED|
@@ -25,13 +25,15 @@
                                                 -- EMPTY_TUPLE_SOURCE  
|PARTITIONED|
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                           -- STREAM_PROJECT  |PARTITIONED|
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              -- SPLIT  |PARTITIONED|
+                            -- STREAM_SELECT  |PARTITIONED|
+                              -- STREAM_PROJECT  |PARTITIONED|
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  -- BTREE_SEARCH 
(test.MyData.btree_index_docid)  |PARTITIONED|
+                                  -- SPLIT  |PARTITIONED|
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      -- ASSIGN  |PARTITIONED|
-                                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                      -- BTREE_SEARCH 
(test.MyData.btree_index_docid)  |PARTITIONED|
+                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                          -- ASSIGN  |PARTITIONED|
+                                            -- EMPTY_TUPLE_SOURCE  
|PARTITIONED|
                 -- BROADCAST_EXCHANGE  |PARTITIONED|
                   -- AGGREGATE  |UNPARTITIONED|
                     -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
@@ -56,10 +58,12 @@
                                                           -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        -- SPLIT  |PARTITIONED|
+                                      -- STREAM_SELECT  |PARTITIONED|
+                                        -- STREAM_PROJECT  |PARTITIONED|
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            -- BTREE_SEARCH 
(test.MyData.btree_index_docid)  |PARTITIONED|
+                                            -- SPLIT  |PARTITIONED|
                                               -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
-                                                -- ASSIGN  |PARTITIONED|
-                                                  -- EMPTY_TUPLE_SOURCE  
|PARTITIONED|
+                                                -- BTREE_SEARCH 
(test.MyData.btree_index_docid)  |PARTITIONED|
+                                                  -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
+                                                    -- ASSIGN  |PARTITIONED|
+                                                      -- EMPTY_TUPLE_SOURCE  
|PARTITIONED|
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/cast-default-null/cast-default-null.23.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/cast-default-null/cast-default-null.23.query.sqlpp
index 4fe0cae25f..86d3f8de16 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/cast-default-null/cast-default-null.23.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/cast-default-null/cast-default-null.23.query.sqlpp
@@ -19,5 +19,4 @@
 
 USE test;
 // index idx1 should be used
-set `compiler.indexonly` "false"; // there is an issue with using index only 
plan where nulls/missings are included
 SELECT id, s_f2 FROM ds7 WHERE s_f2 < "4" ORDER BY id;
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/metrics/secondary-index-index-only/secondary-index-index-only.1.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/metrics/secondary-index-index-only/secondary-index-index-only.1.ddl.sqlpp
index 219f66b52f..9297ce2d58 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/metrics/secondary-index-index-only/secondary-index-index-only.1.ddl.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/metrics/secondary-index-index-only/secondary-index-index-only.1.ddl.sqlpp
@@ -48,4 +48,4 @@ create type test.CustomerType as
 };
 
 create dataset Customers(CustomerType) primary key cid;
-create index customer_name_idx on Customers(name) exclude unknown key;
\ No newline at end of file
+create index customer_name_idx on Customers(name) include unknown key;
\ No newline at end of file


Reply via email to