You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu> on 2024/07/17 15:29:17 UTC
Change in asterixdb[master]: [ASTERIXDB-3462][COMP] Incorrect cardinality estimation with multicol...
From Vijay Sarathy <vi...@couchbase.com>:
Vijay Sarathy has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18492 )
Change subject: [ASTERIXDB-3462][COMP] Incorrect cardinality estimation with multicolumn PK-PK self joins
......................................................................
[ASTERIXDB-3462][COMP] Incorrect cardinality estimation with multicolumn PK-PK self joins
Ext-ref: MB-62752
Change-Id: Iabf1d151d996546c24feed5b8c1a23ef401b8054
---
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
1 file changed, 22 insertions(+), 6 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/92/18492/1
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
index e842b7b..43f2333 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
@@ -526,12 +526,17 @@
private void markCompositeJoinPredicates() {
// can use dataSetBits??? This will be simpler.
for (int i = 0; i < joinConditions.size() - 1; i++) {
- for (int j = i + 1; j < joinConditions.size(); j++) {
- if (joinConditions.get(i).datasetBits == joinConditions.get(j).datasetBits) {
- joinConditions.get(i).selectivity = 1.0 / smallerDatasetSize(joinConditions.get(i).datasetBits);
- // 1/P will be the selectivity of the composite clause
- joinConditions.get(j).partOfComposite = true;
- joinConditions.get(j).selectivity = 1.0;
+ JoinCondition jcI = joinConditions.get(i);
+ if (jcI.comparisonType == JoinCondition.comparisonOp.OP_EQ) {
+ for (int j = i + 1; j < joinConditions.size(); j++) {
+ JoinCondition jcJ = joinConditions.get(j);
+ if (jcJ.comparisonType == JoinCondition.comparisonOp.OP_EQ
+ && jcI.datasetBits == jcJ.datasetBits && !jcI.partOfComposite) {
+ jcI.selectivity = 1.0 / smallerDatasetSize(jcI.datasetBits);
+ // 1/P will be the selectivity of the composite clause
+ jcJ.partOfComposite = true;
+ jcJ.selectivity = 1.0;
+ }
}
}
}
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18492
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: Iabf1d151d996546c24feed5b8c1a23ef401b8054
Gerrit-Change-Number: 18492
Gerrit-PatchSet: 1
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-MessageType: newchange