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