>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

Reply via email to