>From Preetham Poluparthi <[email protected]>:
Preetham Poluparthi has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21063?usp=email )
Change subject: WIP: Fix Index not used with IN
......................................................................
WIP: Fix Index not used with IN
Change-Id: I21b0acc54155440374088fce4628f59ca16cb9bf
---
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
1 file changed, 15 insertions(+), 15 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/63/21063/1
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 adeb32f..e06fdca 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
@@ -2127,25 +2127,25 @@
if (argFuncIdent.equals(funcIdents.get(i).first)) {
functionFound = true;
requireVerificationAfterSIdxSearch = funcIdents.get(i).second;
- break;
+ return new Pair<>(functionFound,
requireVerificationAfterSIdxSearch);
}
}
// If function-call itself is not an index-based access method, we
check its arguments.
- if (!functionFound) {
- for (Mutable<ILogicalExpression> arg : funcExpr.getArguments()) {
- ILogicalExpression argExpr = arg.getValue();
- if (argExpr.getExpressionTag() !=
LogicalExpressionTag.FUNCTION_CALL) {
- continue;
- }
- AbstractFunctionCallExpression argFuncExpr =
(AbstractFunctionCallExpression) argExpr;
- FunctionIdentifier argExprFuncIdent =
argFuncExpr.getFunctionIdentifier();
- for (int i = 0; i < funcIdents.size(); i++) {
- if (argExprFuncIdent.equals(funcIdents.get(i).first)) {
- functionFound = true;
- requireVerificationAfterSIdxSearch =
funcIdents.get(i).second;
- break;
- }
+
+ for (Mutable<ILogicalExpression> arg : funcExpr.getArguments()) {
+ ILogicalExpression argExpr = arg.getValue();
+ if (argExpr.getExpressionTag() !=
LogicalExpressionTag.FUNCTION_CALL) {
+ continue;
+ }
+ AbstractFunctionCallExpression argFuncExpr =
(AbstractFunctionCallExpression) argExpr;
+ for (int i = 0; i < funcIdents.size(); i++) {
+ Pair<Boolean, Boolean> pair =
+
canFunctionGenerateFalsePositiveResultsUsingIndex(argFuncExpr, funcIdents);
+ if (pair.first) {
+ functionFound = true;
+ requireVerificationAfterSIdxSearch = pair.second;
+ return new Pair<>(functionFound,
requireVerificationAfterSIdxSearch);
}
}
}
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21063?usp=email
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: phoenix
Gerrit-Change-Id: I21b0acc54155440374088fce4628f59ca16cb9bf
Gerrit-Change-Number: 21063
Gerrit-PatchSet: 1
Gerrit-Owner: Preetham Poluparthi <[email protected]>