>From Preetham Poluparthi <[email protected]>:

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 <[email protected]>
Gerrit-MessageType: newchange

Reply via email to