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

dlych 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 3afb88e  [NO ISSUE][COMP] Option to disable 
DisjunctivePredicateToJoinRule
3afb88e is described below

commit 3afb88e15ff97f8627eedd36c595e624d1101361
Author: Dmitry Lychagin <[email protected]>
AuthorDate: Fri Jun 28 11:10:42 2019 -0700

    [NO ISSUE][COMP] Option to disable DisjunctivePredicateToJoinRule
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    - Added compiler option "rewrite_or_as_join" that
      disables DisjunctivePredicateToJoinRule
      set rewrite_or_as_join "false";
      Default value is 'true' (the rule is enabled)
    
    Change-Id: Ifbde19b7371a351d13ac2b05efa70a42eddbae7b
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/3468
    Contrib: Jenkins <[email protected]>
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Dmitry Lychagin <[email protected]>
    Reviewed-by: Ali Alsuliman <[email protected]>
---
 .../rules/DisjunctivePredicateToJoinRule.java          | 13 ++++++++++++-
 .../org/apache/asterix/api/common/APIFramework.java    |  4 +++-
 .../disjunctive-predicate-1.sqlpp}                     | 14 ++++++++++++++
 .../disjunctive-predicate-2.sqlpp}                     | 16 +++++++++++++++-
 .../disjunctive-predicate-3.sqlpp}                     | 16 +++++++++++++++-
 .../disjunctive-predicate-4.sqlpp}                     | 17 ++++++++++++++++-
 .../disjunctive-predicate-5.sqlpp}                     | 18 +++++++++++++++++-
 .../disjunctive-predicate/disjunctive-predicate-1.plan | 10 ++++++++++
 .../disjunctive-predicate/disjunctive-predicate-2.plan | 16 ++++++++++++++++
 .../disjunctive-predicate/disjunctive-predicate-3.plan | 15 +++++++++++++++
 .../disjunctive-predicate/disjunctive-predicate-4.plan | 11 +++++++++++
 .../disjunctive-predicate/disjunctive-predicate-5.plan | 12 ++++++++++++
 .../disjunctive-predicate-1.3.query.sqlpp              |  2 +-
 ...ery.sqlpp => disjunctive-predicate-1.4.query.sqlpp} |  4 ++--
 ...ery.sqlpp => disjunctive-predicate-1.5.query.sqlpp} |  4 ++--
 ...ery.sqlpp => disjunctive-predicate-1.6.query.sqlpp} |  8 +++++++-
 ...ery.sqlpp => disjunctive-predicate-1.7.query.sqlpp} |  9 ++++++++-
 ...predicate-1.1.adm => disjunctive-predicate-1.3.adm} |  0
 ...predicate-1.1.adm => disjunctive-predicate-1.4.adm} |  0
 ...predicate-1.1.adm => disjunctive-predicate-1.5.adm} |  0
 ...predicate-1.1.adm => disjunctive-predicate-1.6.adm} |  0
 ...predicate-1.1.adm => disjunctive-predicate-1.7.adm} |  0
 .../disjunctive-predicate-1.3.ast                      |  7 +++++++
 ...predicate-1.3.ast => disjunctive-predicate-1.4.ast} | 13 ++++++++++---
 ...predicate-1.3.ast => disjunctive-predicate-1.5.ast} | 13 ++++++++++---
 ...predicate-1.3.ast => disjunctive-predicate-1.6.ast} | 14 +++++++++++---
 ...predicate-1.3.ast => disjunctive-predicate-1.7.ast} | 16 +++++++++++++---
 27 files changed, 227 insertions(+), 25 deletions(-)

diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/DisjunctivePredicateToJoinRule.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/DisjunctivePredicateToJoinRule.java
index 952c12b..7bfe6a4 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/DisjunctivePredicateToJoinRule.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/DisjunctivePredicateToJoinRule.java
@@ -54,11 +54,23 @@ import 
org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 import org.apache.hyracks.api.exceptions.SourceLocation;
 
 public class DisjunctivePredicateToJoinRule implements IAlgebraicRewriteRule {
+    // Disable this rule if this option is set to 'false'
+    public static final String REWRITE_OR_AS_JOIN_OPTION = 
"rewrite_or_as_join";
+    private static final boolean REWRITE_OR_AS_JOIN_OPTION_DEFAULT = true;
+
+    private Boolean isRuleEnabled;
 
     @Override
     public boolean rewritePost(Mutable<ILogicalOperator> opRef, 
IOptimizationContext context)
             throws AlgebricksException {
         MetadataProvider metadataProvider = (MetadataProvider) 
context.getMetadataProvider();
+        if (isRuleEnabled == null) {
+            isRuleEnabled =
+                    
metadataProvider.getBooleanProperty(REWRITE_OR_AS_JOIN_OPTION, 
REWRITE_OR_AS_JOIN_OPTION_DEFAULT);
+        }
+        if (!isRuleEnabled) {
+            return false;
+        }
         if (metadataProvider.isBlockingOperatorDisabled()) {
             return false;
         }
@@ -207,5 +219,4 @@ public class DisjunctivePredicateToJoinRule implements 
IAlgebraicRewriteRule {
             FunctionIdentifier fi) {
         return asFunctionCallExpression(ex.getValue(), fi);
     }
-
 }
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
index d971c1d..3ab908b 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
@@ -71,6 +71,7 @@ import org.apache.asterix.metadata.declared.MetadataProvider;
 import org.apache.asterix.om.base.IAObject;
 import org.apache.asterix.optimizer.base.AsterixOptimizationContext;
 import org.apache.asterix.optimizer.base.FuzzyUtils;
+import org.apache.asterix.optimizer.rules.DisjunctivePredicateToJoinRule;
 import org.apache.asterix.optimizer.rules.am.AbstractIntroduceAccessMethodRule;
 import org.apache.asterix.runtime.job.listener.JobEventListenerFactory;
 import org.apache.asterix.translator.CompiledStatements.ICompiledDmlStatement;
@@ -137,7 +138,8 @@ public class APIFramework {
                     FuzzyUtils.SIM_THRESHOLD_PROP_NAME, 
StartFeedStatement.WAIT_FOR_COMPLETION,
                     FeedActivityDetails.FEED_POLICY_NAME, 
FeedActivityDetails.COLLECT_LOCATIONS,
                     SqlppQueryRewriter.INLINE_WITH_OPTION, 
SqlppExpressionToPlanTranslator.REWRITE_IN_AS_OR_OPTION,
-                    "hash_merge", "output-record-type", 
AbstractIntroduceAccessMethodRule.NO_INDEX_ONLY_PLAN_OPTION);
+                    "hash_merge", "output-record-type", 
AbstractIntroduceAccessMethodRule.NO_INDEX_ONLY_PLAN_OPTION,
+                    DisjunctivePredicateToJoinRule.REWRITE_OR_AS_JOIN_OPTION);
 
     private final IRewriterFactory rewriterFactory;
     private final IAstPrintVisitorFactory astPrintVisitorFactory;
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-1.sqlpp
similarity index 78%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-1.sqlpp
index 2120ebc..3d10793 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-1.sqlpp
@@ -17,9 +17,23 @@
  * under the License.
  */
 
+drop  dataverse test if exists;
+create  dataverse test;
+
 use test;
 
 
+create type test.TestType as
+{
+  id : string,
+  idx : string,
+  `no-idx` : string
+};
+
+create  dataset TestSet(TestType) primary key id;
+
+create  index TestSetIndex  on TestSet (idx) type btree;
+
 select element x
 from  TestSet as x
 where ((x.id = 'one') or (x.id = 'two') or (x.id = 'two'))
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-2.sqlpp
similarity index 73%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-2.sqlpp
index 2120ebc..80572e4 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-2.sqlpp
@@ -17,10 +17,24 @@
  * under the License.
  */
 
+drop  dataverse test if exists;
+create  dataverse test;
+
 use test;
 
 
+create type test.TestType as
+{
+  id : string,
+  idx : string,
+  `no-idx` : string
+};
+
+create  dataset TestSet(TestType) primary key id;
+
+create  index TestSetIndex  on TestSet (idx) type btree;
+
 select element x
 from  TestSet as x
-where ((x.id = 'one') or (x.id = 'two') or (x.id = 'two'))
+where ((x.idx = 'one') or (x.idx = 'two') or (x.idx = 'two'))
 ;
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-3.sqlpp
similarity index 72%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-3.sqlpp
index 2120ebc..fbe6266 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-3.sqlpp
@@ -17,10 +17,24 @@
  * under the License.
  */
 
+drop  dataverse test if exists;
+create  dataverse test;
+
 use test;
 
 
+create type test.TestType as
+{
+  id : string,
+  idx : string,
+  `no-idx` : string
+};
+
+create  dataset TestSet(TestType) primary key id;
+
+create  index TestSetIndex  on TestSet (idx) type btree;
+
 select element x
 from  TestSet as x
-where ((x.id = 'one') or (x.id = 'two') or (x.id = 'two'))
+where ((x.`no-idx` = 'one') or (x.`no-idx` = 'two') or (x.`no-idx` = 'two'))
 ;
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-4.sqlpp
similarity index 71%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-4.sqlpp
index 2120ebc..d6fd74e 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-4.sqlpp
@@ -17,10 +17,25 @@
  * under the License.
  */
 
+drop  dataverse test if exists;
+create  dataverse test;
+
 use test;
 
+set rewrite_or_as_join "false";
+
+create type test.TestType as
+{
+  id : string,
+  idx : string,
+  `no-idx` : string
+};
+
+create  dataset TestSet(TestType) primary key id;
+
+create  index TestSetIndex  on TestSet (idx) type btree;
 
 select element x
 from  TestSet as x
-where ((x.id = 'one') or (x.id = 'two') or (x.id = 'two'))
+where ((x.idx = 'one') or (x.idx = 'two') or (x.idx = 'two'))
 ;
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-5.sqlpp
similarity index 70%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-5.sqlpp
index 2120ebc..639b7c1 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index-selection/disjunctive-predicate/disjunctive-predicate-5.sqlpp
@@ -17,10 +17,26 @@
  * under the License.
  */
 
+drop  dataverse test if exists;
+create  dataverse test;
+
 use test;
 
+set rewrite_or_as_join "false";
+
+create type test.TestType as
+{
+  id : string,
+  idx : string,
+  `no-idx` : string
+};
+
+create  dataset TestSet(TestType) primary key id;
+
+create  index TestSetIndex  on TestSet (idx) type btree;
 
 select element x
 from  TestSet as x
-where ((x.id = 'one') or (x.id = 'two') or (x.id = 'two'))
+where ((x.idx = 'one') or (x.idx = 'two') or (x.idx = 'two'))
+limit 2
 ;
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-1.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-1.plan
new file mode 100644
index 0000000..634082d
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-1.plan
@@ -0,0 +1,10 @@
+-- DISTRIBUTE_RESULT  |PARTITIONED|
+  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+    -- STREAM_PROJECT  |PARTITIONED|
+      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+        -- BTREE_SEARCH  |PARTITIONED|
+          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+            -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
+              -- HASH_PARTITION_EXCHANGE [$$20]  |PARTITIONED|
+                -- UNNEST  |UNPARTITIONED|
+                  -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-2.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-2.plan
new file mode 100644
index 0000000..7c71263
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-2.plan
@@ -0,0 +1,16 @@
+-- DISTRIBUTE_RESULT  |PARTITIONED|
+  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+    -- STREAM_PROJECT  |PARTITIONED|
+      -- STREAM_SELECT  |PARTITIONED|
+        -- STREAM_PROJECT  |PARTITIONED|
+          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+            -- BTREE_SEARCH  |PARTITIONED|
+              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
+                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                    -- STREAM_PROJECT  |PARTITIONED|
+                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                        -- BTREE_SEARCH  |PARTITIONED|
+                          -- BROADCAST_EXCHANGE  |PARTITIONED|
+                            -- UNNEST  |UNPARTITIONED|
+                              -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-3.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-3.plan
new file mode 100644
index 0000000..e160f3c
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-3.plan
@@ -0,0 +1,15 @@
+-- DISTRIBUTE_RESULT  |PARTITIONED|
+  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+    -- STREAM_PROJECT  |PARTITIONED|
+      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+        -- HYBRID_HASH_JOIN [$$18][$$20]  |PARTITIONED|
+          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+            -- ASSIGN  |PARTITIONED|
+              -- STREAM_PROJECT  |PARTITIONED|
+                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                  -- DATASOURCE_SCAN  |PARTITIONED|
+                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+          -- BROADCAST_EXCHANGE  |PARTITIONED|
+            -- UNNEST  |UNPARTITIONED|
+              -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-4.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-4.plan
new file mode 100644
index 0000000..823079c
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-4.plan
@@ -0,0 +1,11 @@
+-- DISTRIBUTE_RESULT  |PARTITIONED|
+  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+    -- STREAM_PROJECT  |PARTITIONED|
+      -- STREAM_SELECT  |PARTITIONED|
+        -- ASSIGN  |PARTITIONED|
+          -- ASSIGN  |PARTITIONED|
+            -- STREAM_PROJECT  |PARTITIONED|
+              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                -- DATASOURCE_SCAN  |PARTITIONED|
+                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-5.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-5.plan
new file mode 100644
index 0000000..343d920
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-selection/disjunctive-predicate/disjunctive-predicate-5.plan
@@ -0,0 +1,12 @@
+-- DISTRIBUTE_RESULT  |UNPARTITIONED|
+  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
+    -- STREAM_LIMIT  |UNPARTITIONED|
+      -- STREAM_PROJECT  |PARTITIONED|
+        -- SORT_MERGE_EXCHANGE [$$19(ASC) ]  |PARTITIONED|
+          -- STREAM_LIMIT  |PARTITIONED|
+            -- STREAM_PROJECT  |PARTITIONED|
+              -- ASSIGN  |PARTITIONED|
+                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                  -- DATASOURCE_SCAN  |PARTITIONED|
+                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
index 2120ebc..a446597 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
@@ -19,8 +19,8 @@
 
 use test;
 
-
 select element x
 from  TestSet as x
 where ((x.id = 'one') or (x.id = 'two') or (x.id = 'two'))
+order by x.id
 ;
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.4.query.sqlpp
similarity index 91%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.4.query.sqlpp
index 2120ebc..add645e 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.4.query.sqlpp
@@ -19,8 +19,8 @@
 
 use test;
 
-
 select element x
 from  TestSet as x
-where ((x.id = 'one') or (x.id = 'two') or (x.id = 'two'))
+where ((x.idx = 'one') or (x.idx = 'two') or (x.idx = 'two'))
+order by x.id
 ;
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.5.query.sqlpp
similarity index 90%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.5.query.sqlpp
index 2120ebc..1d36443 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.5.query.sqlpp
@@ -19,8 +19,8 @@
 
 use test;
 
-
 select element x
 from  TestSet as x
-where ((x.id = 'one') or (x.id = 'two') or (x.id = 'two'))
+where ((x.`no-idx` = 'one') or (x.`no-idx` = 'two') or (x.`no-idx` = 'two'))
+order by x.id
 ;
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.6.query.sqlpp
similarity index 83%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.6.query.sqlpp
index 2120ebc..1c84456 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.6.query.sqlpp
@@ -17,10 +17,16 @@
  * under the License.
  */
 
+/*
+ * Disable disjunctive predicate to join rewriting
+ */
+
 use test;
 
+set rewrite_or_as_join "false";
 
 select element x
 from  TestSet as x
-where ((x.id = 'one') or (x.id = 'two') or (x.id = 'two'))
+where ((x.idx = 'one') or (x.idx = 'two') or (x.idx = 'two'))
+order by x.id
 ;
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.7.query.sqlpp
similarity index 81%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.7.query.sqlpp
index 2120ebc..5ac846c 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.7.query.sqlpp
@@ -17,10 +17,17 @@
  * under the License.
  */
 
+/*
+ * Disable disjunctive predicate to join rewriting (with LIMIT clause)
+ */
+
 use test;
 
+set rewrite_or_as_join "false";
 
 select element x
 from  TestSet as x
-where ((x.id = 'one') or (x.id = 'two') or (x.id = 'two'))
+where ((x.idx = 'one') or (x.idx = 'two') or (x.idx = 'two'))
+order by x.id
+limit 2
 ;
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.1.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.adm
similarity index 100%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.1.adm
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.adm
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.1.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.4.adm
similarity index 100%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.1.adm
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.4.adm
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.1.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.5.adm
similarity index 100%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.1.adm
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.5.adm
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.1.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.6.adm
similarity index 100%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.1.adm
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.6.adm
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.1.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.7.adm
similarity index 100%
rename from 
asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.1.adm
rename to 
asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.7.adm
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
index 9f0ab9e..d8cf84b 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
@@ -37,3 +37,10 @@ Where
       LiteralExpr [STRING] [two]
     ]
   ]
+Orderby
+  FieldAccessor [
+    Variable [ Name=$x ]
+    Field=id
+  ]
+  ASC
+
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.4.ast
similarity index 82%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.4.ast
index 9f0ab9e..99293e3 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.4.ast
@@ -13,7 +13,7 @@ Where
     OperatorExpr [
       FieldAccessor [
         Variable [ Name=$x ]
-        Field=id
+        Field=idx
       ]
       =
       LiteralExpr [STRING] [one]
@@ -22,7 +22,7 @@ Where
     OperatorExpr [
       FieldAccessor [
         Variable [ Name=$x ]
-        Field=id
+        Field=idx
       ]
       =
       LiteralExpr [STRING] [two]
@@ -31,9 +31,16 @@ Where
     OperatorExpr [
       FieldAccessor [
         Variable [ Name=$x ]
-        Field=id
+        Field=idx
       ]
       =
       LiteralExpr [STRING] [two]
     ]
   ]
+Orderby
+  FieldAccessor [
+    Variable [ Name=$x ]
+    Field=id
+  ]
+  ASC
+
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.5.ast
similarity index 81%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.5.ast
index 9f0ab9e..fc7a792 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.5.ast
@@ -13,7 +13,7 @@ Where
     OperatorExpr [
       FieldAccessor [
         Variable [ Name=$x ]
-        Field=id
+        Field=no-idx
       ]
       =
       LiteralExpr [STRING] [one]
@@ -22,7 +22,7 @@ Where
     OperatorExpr [
       FieldAccessor [
         Variable [ Name=$x ]
-        Field=id
+        Field=no-idx
       ]
       =
       LiteralExpr [STRING] [two]
@@ -31,9 +31,16 @@ Where
     OperatorExpr [
       FieldAccessor [
         Variable [ Name=$x ]
-        Field=id
+        Field=no-idx
       ]
       =
       LiteralExpr [STRING] [two]
     ]
   ]
+Orderby
+  FieldAccessor [
+    Variable [ Name=$x ]
+    Field=id
+  ]
+  ASC
+
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.6.ast
similarity index 78%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.6.ast
index 9f0ab9e..9a28dcd 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.6.ast
@@ -1,4 +1,5 @@
 DataverseUse test
+Set rewrite_or_as_join=false
 Query:
 SELECT ELEMENT [
 Variable [ Name=$x ]
@@ -13,7 +14,7 @@ Where
     OperatorExpr [
       FieldAccessor [
         Variable [ Name=$x ]
-        Field=id
+        Field=idx
       ]
       =
       LiteralExpr [STRING] [one]
@@ -22,7 +23,7 @@ Where
     OperatorExpr [
       FieldAccessor [
         Variable [ Name=$x ]
-        Field=id
+        Field=idx
       ]
       =
       LiteralExpr [STRING] [two]
@@ -31,9 +32,16 @@ Where
     OperatorExpr [
       FieldAccessor [
         Variable [ Name=$x ]
-        Field=id
+        Field=idx
       ]
       =
       LiteralExpr [STRING] [two]
     ]
   ]
+Orderby
+  FieldAccessor [
+    Variable [ Name=$x ]
+    Field=id
+  ]
+  ASC
+
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.7.ast
similarity index 75%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.7.ast
index 9f0ab9e..19f8074 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.3.ast
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/disjunctive-predicate-1/disjunctive-predicate-1.7.ast
@@ -1,4 +1,5 @@
 DataverseUse test
+Set rewrite_or_as_join=false
 Query:
 SELECT ELEMENT [
 Variable [ Name=$x ]
@@ -13,7 +14,7 @@ Where
     OperatorExpr [
       FieldAccessor [
         Variable [ Name=$x ]
-        Field=id
+        Field=idx
       ]
       =
       LiteralExpr [STRING] [one]
@@ -22,7 +23,7 @@ Where
     OperatorExpr [
       FieldAccessor [
         Variable [ Name=$x ]
-        Field=id
+        Field=idx
       ]
       =
       LiteralExpr [STRING] [two]
@@ -31,9 +32,18 @@ Where
     OperatorExpr [
       FieldAccessor [
         Variable [ Name=$x ]
-        Field=id
+        Field=idx
       ]
       =
       LiteralExpr [STRING] [two]
     ]
   ]
+Orderby
+  FieldAccessor [
+    Variable [ Name=$x ]
+    Field=id
+  ]
+  ASC
+
+Limit
+  LiteralExpr [LONG] [2]

Reply via email to