>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]>

Reply via email to