>From Wail Alkowaileet <[email protected]>:
Wail Alkowaileet has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17758 )
Change subject: [NO ISSUE][COMP] AND SELECTs for columnar and external filters
......................................................................
[NO ISSUE][COMP] AND SELECTs for columnar and external filters
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
We should AND SELECTs instead of ORing them.
This was missed by mistake.
Change-Id: Iabbc347ae8e8db8a6d1469d436ac701fbc2c6245
---
M
asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.025.plan
M
asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.113.plan
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/processor/ColumnFilterPushdownProcessor.java
M
asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.025.plan
M
asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.113.plan
5 files changed, 22 insertions(+), 5 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/58/17758/1
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/processor/ColumnFilterPushdownProcessor.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/processor/ColumnFilterPushdownProcessor.java
index 8043f32..df055295 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/processor/ColumnFilterPushdownProcessor.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/processor/ColumnFilterPushdownProcessor.java
@@ -152,7 +152,7 @@
ILogicalExpression inlinedExpr) {
AbstractFunctionCallExpression funcExpr =
(AbstractFunctionCallExpression) filterExpr;
if (!BuiltinFunctions.AND.equals(funcExpr.getFunctionIdentifier())) {
- IFunctionInfo fInfo =
context.getMetadataProvider().lookupFunction(AlgebricksBuiltinFunctions.OR);
+ IFunctionInfo fInfo =
context.getMetadataProvider().lookupFunction(AlgebricksBuiltinFunctions.AND);
List<Mutable<ILogicalExpression>> args = new ArrayList<>();
args.add(new MutableObject<>(filterExpr));
funcExpr = new ScalarFunctionCallExpression(fInfo, args);
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.025.plan
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.025.plan
index b1842ca..83ace43 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.025.plan
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.025.plan
@@ -28,7 +28,7 @@
-- ASSIGN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$35, $$d] <- test.ColumnDataset
project ({a:any,array:[any]}) filter on: or(eq($$d.getField("a"), "1"),
gt(scan-collection($$d.getField("array")), 10)) range-filter on:
or(eq($$d.getField("a"), "1"), gt(scan-collection($$d.getField("array")), 10))
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ data-scan []<-[$$35, $$d] <- test.ColumnDataset
project ({a:any,array:[any]}) filter on: and(eq($$d.getField("a"), "1"),
gt(scan-collection($$d.getField("array")), 10)) range-filter on:
and(eq($$d.getField("a"), "1"), gt(scan-collection($$d.getField("array")), 10))
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.113.plan
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.113.plan
index 012f2c7..8129cc0 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.113.plan
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.113.plan
@@ -32,7 +32,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$56, $$C] <-
TestYelp.YelpCheckin project ({dates:[any],business_id:any}) filter on:
or(starts-with($$C.getField("business_id"), "-0"),
eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"),
eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016"))
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ data-scan []<-[$$56, $$C] <-
TestYelp.YelpCheckin project ({dates:[any],business_id:any}) filter on:
and(starts-with($$C.getField("business_id"), "-0"),
or(eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"),
eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016")))
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.025.plan
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.025.plan
index ef44ab2..0731954 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.025.plan
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.025.plan
@@ -28,7 +28,7 @@
-- ASSIGN |PARTITIONED|
exchange [cardinality: 6.0, op-cost: 0.0,
total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$35, $$d] <- test.ColumnDataset
project ({a:any,array:[any]}) filter on: or(eq($$d.getField("a"), "1"),
gt(scan-collection($$d.getField("array")), 10)) range-filter on:
or(eq($$d.getField("a"), "1"), gt(scan-collection($$d.getField("array")), 10))
[cardinality: 6.0, op-cost: 2.0, total-cost: 2.0]
+ data-scan []<-[$$35, $$d] <- test.ColumnDataset
project ({a:any,array:[any]}) filter on: and(eq($$d.getField("a"), "1"),
gt(scan-collection($$d.getField("array")), 10)) range-filter on:
and(eq($$d.getField("a"), "1"), gt(scan-collection($$d.getField("array")), 10))
[cardinality: 6.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.113.plan
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.113.plan
index 5433b03..e40263a4 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.113.plan
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.113.plan
@@ -32,7 +32,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 30.0, op-cost: 0.0,
total-cost: 7.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$56, $$C] <-
TestYelp.YelpCheckin project ({dates:[any],business_id:any}) filter on:
or(starts-with($$C.getField("business_id"), "-0"),
eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"),
eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016"))
[cardinality: 30.0, op-cost: 7.0, total-cost: 7.0]
+ data-scan []<-[$$56, $$C] <-
TestYelp.YelpCheckin project ({dates:[any],business_id:any}) filter on:
and(starts-with($$C.getField("business_id"), "-0"),
or(eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"),
eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016")))
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17758
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: Iabbc347ae8e8db8a6d1469d436ac701fbc2c6245
Gerrit-Change-Number: 17758
Gerrit-PatchSet: 1
Gerrit-Owner: Wail Alkowaileet <[email protected]>
Gerrit-MessageType: newchange