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 2025/08/08 11:54:44 UTC

Change in asterixdb[master]: [NO ISSUE] Reset operators after join selectivity estimation

From Preetham Poluparthi <pr...@apache.org>:

Preetham Poluparthi has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20170 )


Change subject: [NO ISSUE] Reset operators after join selectivity estimation
......................................................................

[NO ISSUE] Reset operators after join selectivity estimation

- user model changes: no
- storage format changes: no
- interface changes: no

During join selectivity estimation using sampled queries, the logical operators involved are modified to use the sampled dataset. To prevent side effects, this change ensures that modified operators are reset to their original state after the sampling-based estimation is complete.

Change-Id: Ib7c1220740c2b5f025f60bec0378eaf253533f66
---
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
1 file changed, 21 insertions(+), 0 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/70/20170/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 47e5c6d..9954b7e 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
@@ -277,6 +277,9 @@
             AbstractFunctionCallExpression joinExpr, JoinOperator join) throws AlgebricksException {
         AbstractBinaryJoinOperator abjoin = join.getAbstractJoinOp();
         Pair<ILogicalOperator, Double> leftOutput = replaceDataSourceWithSample(left, index1, joinExpr);
+        ILogicalOperator originalLeft, originalRight;
+        originalLeft = abjoin.getInputs().get(0).getValue();
+        originalRight = abjoin.getInputs().get(1).getValue();
         abjoin.getInputs().get(0).setValue(leftOutput.getFirst());
         Pair<ILogicalOperator, Double> rightOutput = replaceDataSourceWithSample(right, index2, joinExpr);
         abjoin.getInputs().get(1).setValue(rightOutput.getFirst());
@@ -284,6 +287,9 @@
         List<List<IAObject>> result = runSamplingQuery(optCtx, abjoin);
         double estCardSample = findPredicateCardinality(result, false);
         double sel = estCardSample / leftOutput.getSecond() / rightOutput.getSecond();
+
+        abjoin.getInputs().get(0).setValue(originalLeft);
+        abjoin.getInputs().get(1).setValue(originalRight);
         return sel;
     }
 

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20170
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: Ib7c1220740c2b5f025f60bec0378eaf253533f66
Gerrit-Change-Number: 20170
Gerrit-PatchSet: 1
Gerrit-Owner: Preetham Poluparthi <pr...@apache.org>
Gerrit-MessageType: newchange