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]