>From Vijay Sarathy <[email protected]>: Vijay Sarathy has submitted this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17808 )
Change subject: [ASTERIXDB-3261][COMP] Limit Costing ...................................................................... [ASTERIXDB-3261][COMP] Limit Costing Change-Id: I0a3e1be5e134c839168b584a6f41c45682e078ee Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17808 Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Reviewed-by: Vijay Sarathy <[email protected]> --- M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java 1 file changed, 19 insertions(+), 2 deletions(-) Approvals: Vijay Sarathy: Looks good to me, approved Jenkins: Verified; Verified 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 752064a..9147184 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 @@ -889,19 +889,23 @@ private int findLimitValue(AbstractLogicalOperator oper) { ILogicalOperator op = oper; + int limit = -1; while (op.getOperatorTag() != LogicalOperatorTag.EMPTYTUPLESOURCE) { if (op.getOperatorTag() == LogicalOperatorTag.LIMIT) { LimitOperator lop = (LimitOperator) op; ILogicalExpression expr = lop.getMaxObjects().getValue(); if (expr != null) { if (expr.getExpressionTag() == LogicalExpressionTag.CONSTANT) { // must be a constant - return Integer.parseInt(lop.getMaxObjects().getValue().toString()); + limit = Integer.parseInt(lop.getMaxObjects().getValue().toString()); } } } + if (op.getOperatorTag() == LogicalOperatorTag.ORDER) { + return -1; // This is because we cant reduce the selectivity of a scan operator when an order by is present. + } op = op.getInputs().get(0).getValue(); } - return -1; + return limit; } private boolean isPredicateCardinalityAnnotationPresent(ILogicalExpression leExpr) { -- To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17808 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: I0a3e1be5e134c839168b584a6f41c45682e078ee Gerrit-Change-Number: 17808 Gerrit-PatchSet: 2 Gerrit-Owner: [email protected] Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Vijay Sarathy <[email protected]> Gerrit-MessageType: merged
