>From Preetham Poluparthi <[email protected]>:

Preetham Poluparthi has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20508?usp=email )


Change subject: WIP: make Indexes great again
......................................................................

WIP: make Indexes great again

Change-Id: Ia29c5f931c297a5c2517c2a35d16651411d0c5a4
---
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
1 file changed, 34 insertions(+), 13 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/08/20508/1

diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
index d82a8be..b138d2c 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
@@ -597,14 +597,18 @@
         }

         // determine cases when prefix search could be applied
-        for (int i = 1; i < lowKeyExprs.length; i++) {
-            if (lowKeyLimits[0] == null && lowKeyLimits[i] != null || 
lowKeyLimits[0] != null && lowKeyLimits[i] == null
-                    || highKeyLimits[0] == null && highKeyLimits[i] != null
-                    || highKeyLimits[0] != null && highKeyLimits[i] == null) {
-                numSecondaryKeys = i;
-                primaryIndexPostProccessingIsNeeded = true;
-                break;
-            }
+        //        for (int i = 1; i < lowKeyExprs.length; i++) {
+        //            if (lowKeyLimits[0] == null && lowKeyLimits[i] != null 
|| lowKeyLimits[0] != null && lowKeyLimits[i] == null
+        //                    || highKeyLimits[0] == null && highKeyLimits[i] 
!= null
+        //                    || highKeyLimits[0] != null && highKeyLimits[i] 
== null) {
+        //                numSecondaryKeys = i;
+        //                primaryIndexPostProccessingIsNeeded = true;
+        //                break;
+        //            }
+        //        }
+
+        if (lowKeyLimits[numSecondaryKeys - 1] == null || 
highKeyLimits[numSecondaryKeys - 1] == null) {
+            primaryIndexPostProccessingIsNeeded = true;
         }

         if (primaryIndexPostProccessingIsNeeded) {
@@ -626,11 +630,28 @@
         // List of variables and expressions for the assign.
         ArrayList<LogicalVariable> assignKeyVarList = new ArrayList<>();
         ArrayList<Mutable<ILogicalExpression>> assignKeyExprList = new 
ArrayList<>();
-        int numLowKeys = createKeyVarsAndExprs(numSecondaryKeys, lowKeyLimits, 
lowKeyExprs, assignKeyVarList,
-                assignKeyExprList, keyVarList, context, 
lowKeyConstAtRuntimeExpressions, lowKeyConstAtRuntimeExprVars);
-        int numHighKeys = createKeyVarsAndExprs(numSecondaryKeys, 
highKeyLimits, highKeyExprs, assignKeyVarList,
-                assignKeyExprList, keyVarList, context, 
highKeyConstantAtRuntimeExpressions,
-                highKeyConstAtRuntimeExprVars);
+
+        int numLowKeys = 0;
+        for (LimitType limitType : lowKeyLimits) {
+            if (limitType != null) {
+                numLowKeys++;
+            } else
+                break;
+        }
+
+        int numHighKeys = 0;
+        for (LimitType limitType : highKeyLimits) {
+            if (limitType != null) {
+                numHighKeys++;
+            } else
+                break;
+        }
+
+        numLowKeys = createKeyVarsAndExprs(numLowKeys, lowKeyLimits, 
lowKeyExprs, assignKeyVarList, assignKeyExprList,
+                keyVarList, context, lowKeyConstAtRuntimeExpressions, 
lowKeyConstAtRuntimeExprVars);
+        numHighKeys =
+                createKeyVarsAndExprs(numHighKeys, highKeyLimits, 
highKeyExprs, assignKeyVarList, assignKeyExprList,
+                        keyVarList, context, 
highKeyConstantAtRuntimeExpressions, highKeyConstAtRuntimeExprVars);

         BTreeJobGenParams jobGenParams =
                 new BTreeJobGenParams(chosenIndex.getIndexName(), 
IndexType.BTREE, dataset.getDatabaseName(),

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20508?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: Ia29c5f931c297a5c2517c2a35d16651411d0c5a4
Gerrit-Change-Number: 20508
Gerrit-PatchSet: 1
Gerrit-Owner: Preetham Poluparthi <[email protected]>

Reply via email to