>From Preetham Poluparthi <[email protected]>: Preetham Poluparthi has submitted this change. ( 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 Ext-ref: MB-68047 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 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20170 Reviewed-by: Murtadha Hubail <[email protected]> Tested-by: Murtadha Hubail <[email protected]> Integration-Tests: Murtadha Hubail <[email protected]> --- M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java 1 file changed, 26 insertions(+), 0 deletions(-) Approvals: Murtadha Hubail: Looks good to me, approved; Verified; Verified 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 52566ef..49a0aa8 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 @@ -254,6 +254,8 @@ AbstractFunctionCallExpression joinExpr, JoinOperator join) throws AlgebricksException { AbstractBinaryJoinOperator abjoin = join.getAbstractJoinOp(); Pair<ILogicalOperator, Double> leftOutput = replaceDataSourceWithSample(left, index1); + ILogicalOperator originalLeft = abjoin.getInputs().get(0).getValue(); + ILogicalOperator originalRight = abjoin.getInputs().get(1).getValue(); abjoin.getInputs().get(0).setValue(leftOutput.getFirst()); Pair<ILogicalOperator, Double> rightOutput = replaceDataSourceWithSample(right, index2); abjoin.getInputs().get(1).setValue(rightOutput.getFirst()); @@ -261,6 +263,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: ionic Gerrit-Change-Id: Ib7c1220740c2b5f025f60bec0378eaf253533f66 Gerrit-Change-Number: 20170 Gerrit-PatchSet: 6 Gerrit-Owner: Preetham Poluparthi <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Preetham Poluparthi <[email protected]> Gerrit-Reviewer: [email protected] Gerrit-MessageType: merged
