>From Michael Blow <[email protected]>:
Michael Blow has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20403?usp=email )
Change subject: Merge branch 'gerrit/phoenix' into 'master'
......................................................................
Merge branch 'gerrit/phoenix' into 'master'
* [ASTERIXDB-3641] Sampling query taking long time to run
* [ASTERIXDB-3636][STO] Fix buffer reservations understimation
* [NO ISSUE][*HYR][MISC] += Lazy helper for deferred initialization
* [NO ISSUE][RT] Notify joblet cleanup if joblet creation fails
* [NO ISSUE][*DB][EXT] Avoid serialization of JsonFactory
* [ASTERIXDB-3641] Sampling query taking long time to run
* [NO ISSUE][*DB][RT] Whisper logging for active partition,txn block msgs
* [NO ISSUE][*DB][NET] Upgrade Netty to 4.1.125.Final
* [ASTERIXDB-3644] Callback for result consumption
* [NO ISSUE] Split countn_01 into multiple queries
* [NO ISSUE][HYR][STO] FileMapManager performance improvements
* [NO ISSUE][HYR][STO] Add missing serialVersionUID
* [NO ISSUE] Fix result for pushdown test
* [ASTERIXDB-3646][COMP] Missing fields when selecting all fields with window
function
Change-Id: I24dcea00986058def1eaac1cf317147c5b3e1196
---
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
2 files changed, 51 insertions(+), 33 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/03/20403/1
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
index 1e9ddf9..aa73da1 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
@@ -175,23 +175,14 @@
boolean unnestOp1 =
joinEnum.findUnnestOp(joinEnum.leafInputs.get(idx1 - 1));
boolean unnestOp2 =
joinEnum.findUnnestOp(joinEnum.leafInputs.get(idx2 - 1));
boolean unnestOp = unnestOp1 || unnestOp2;
-<<<<<<< HEAD (f9c6fe [ASTERIXDB-3632] Fix NPEs in Index Advisor and add
error han)
boolean okOp = acceptableOp(joinExpr.getFunctionIdentifier());
- Index.SampleIndexDetails idxDetails1 = (Index.SampleIndexDetails)
index1.getIndexDetails();
- Index.SampleIndexDetails idxDetails2 = (Index.SampleIndexDetails)
index2.getIndexDetails();
- if (((idxDetails1.getSourceCardinality() <
idxDetails1.getSampleCardinalityTarget())
- || (idxDetails2.getSourceCardinality() <
idxDetails2.getSampleCardinalityTarget())
- ||
(!(joinExpr.getFunctionIdentifier().equals(AlgebricksBuiltinFunctions.EQ)))
- || exprUsedVars.size() > 2) && !unnestOp && okOp) { //* if
there are more than 2 variables, it is not a simple join like r.a op s.a
-=======
ILogicalOperator leafInput1 = joinEnum.leafInputs.get(idx1 - 1);
ILogicalOperator leafInput2 = joinEnum.leafInputs.get(idx2 - 1);
LogicalVariable var1 = exprUsedVars.get(0);
LogicalVariable var2 = exprUsedVars.get(1);
// If there are more than 2 variables, it is not a simple join
like r.a op s.a
- if (!unnestOp && (exprUsedVars.size() > 2
+ if (okOp && !unnestOp && (exprUsedVars.size() > 2
|| isJoinSelFromSamplesApplicable(leafInput1, leafInput2,
index1, index2, var1, var2))) {
->>>>>>> BRANCH (e15750 Merge branch 'gerrit/ionic' into 'gerrit/phoenix')
double sels =
findJoinSelFromSamples(joinEnum.leafInputs.get(idx1 - 1),
joinEnum.leafInputs.get(idx2 - 1), index1, index2,
joinExpr, jOp);
if (sels == 0.0) {
@@ -205,28 +196,6 @@
}
}
-<<<<<<< HEAD (f9c6fe [ASTERIXDB-3632] Fix NPEs in Index Advisor and add
error han)
- private boolean acceptableOp(FunctionIdentifier functionIdentifier) {
- if (functionIdentifier.equals(AlgebricksBuiltinFunctions.NEQ)) {
- return true;
- }
- if (functionIdentifier.equals(AlgebricksBuiltinFunctions.LT)) {
- return true;
- }
- if (functionIdentifier.equals(AlgebricksBuiltinFunctions.GT)) {
- return true;
- }
- if (functionIdentifier.equals(AlgebricksBuiltinFunctions.GE)) {
- return true;
- }
- if (functionIdentifier.equals(AlgebricksBuiltinFunctions.LE)) {
- return true;
- }
- if (functionIdentifier.equals(BuiltinFunctions.IF_MISSING_OR_NULL)) {
// added this for q16 in CH2
- return true;
- }
- return false;
-=======
private boolean isJoinSelFromSamplesApplicable(ILogicalOperator
leafInput1, ILogicalOperator leafInput2,
Index index1, Index index2, LogicalVariable var1, LogicalVariable
var2) throws AlgebricksException {
Index.SampleIndexDetails details1 = (Index.SampleIndexDetails)
index1.getIndexDetails();
@@ -264,7 +233,28 @@
numDistincts = 1; // Sample is empty
}
return numDistincts;
->>>>>>> BRANCH (e15750 Merge branch 'gerrit/ionic' into 'gerrit/phoenix')
+ }
+
+ private boolean acceptableOp(FunctionIdentifier functionIdentifier) {
+ if (functionIdentifier.equals(AlgebricksBuiltinFunctions.NEQ)) {
+ return true;
+ }
+ if (functionIdentifier.equals(AlgebricksBuiltinFunctions.LT)) {
+ return true;
+ }
+ if (functionIdentifier.equals(AlgebricksBuiltinFunctions.GT)) {
+ return true;
+ }
+ if (functionIdentifier.equals(AlgebricksBuiltinFunctions.GE)) {
+ return true;
+ }
+ if (functionIdentifier.equals(AlgebricksBuiltinFunctions.LE)) {
+ return true;
+ }
+ if (functionIdentifier.equals(BuiltinFunctions.IF_MISSING_OR_NULL)) {
// added this for q16 in CH2
+ return true;
+ }
+ return false;
}
private double naiveJoinSelectivity(List<LogicalVariable> exprUsedVars,
double card1, double card2, int idx1,
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20403?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: master
Gerrit-Change-Id: I24dcea00986058def1eaac1cf317147c5b3e1196
Gerrit-Change-Number: 20403
Gerrit-PatchSet: 1
Gerrit-Owner: Michael Blow <[email protected]>