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 2024/06/06 14:13:22 UTC

Change in asterixdb[master]: [NO ISSUE]: Return expression cannot be constant for COPY TO

From Hussain Towaileb <hu...@gmail.com>:

Hussain Towaileb has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18345 )


Change subject: [NO ISSUE]: Return expression cannot be constant for COPY TO
......................................................................

[NO ISSUE]: Return expression cannot be constant for COPY TO

Change-Id: I02723741458e3fa04877c0099990405e7755f656
---
M hyracks-fullstack/hyracks/hyracks-api/src/main/resources/errormsg/en.properties
M hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
M hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java
3 files changed, 34 insertions(+), 6 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/45/18345/1

diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
index 9fd4cd9..2e7141a 100644
--- a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
+++ b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
@@ -18,6 +18,8 @@
  */
 package org.apache.hyracks.algebricks.rewriter.rules;
 
+import static org.apache.hyracks.api.exceptions.ErrorCode.EXPRESSION_CANNOT_BE_CONSTANT;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -123,6 +125,7 @@
 import org.apache.hyracks.algebricks.rewriter.util.JoinUtils;
 import org.apache.hyracks.api.exceptions.ErrorCode;
 import org.apache.hyracks.api.exceptions.IWarningCollector;
+import org.apache.hyracks.api.exceptions.SourceLocation;
 import org.apache.hyracks.api.exceptions.Warning;
 
 public class SetAlgebricksPhysicalOperatorsRule implements IAlgebraicRewriteRule {
@@ -406,9 +409,23 @@
             if (sourceExpr.getExpressionTag() != LogicalExpressionTag.VARIABLE) {
                 throw AlgebricksException.create(ErrorCode.EXPR_NOT_NORMALIZED, sourceExpr.getSourceLocation());
             }
-            ensureAllVariables(op.getPartitionExpressions(), v -> v);
-            ensureAllVariables(op.getOrderExpressions(), Pair::getSecond);
-            ensureAllVariables(op.getKeyExpressions(), v -> v);
+
+            String part = "";
+            SourceLocation srcLoc = null;
+            try {
+                part = "PARTITION";
+                ensureAllVariables(op.getPartitionExpressions(), v -> v);
+                part = "ORDER";
+                ensureAllVariables(op.getOrderExpressions(), Pair::getSecond);
+                part = "KEY";
+                ensureAllVariables(op.getKeyExpressions(), v -> v);
+            } catch (AlgebricksException ex) {
+                if (ex.getError().isPresent() && ex.getError().get().equals(ErrorCode.EXPR_NOT_NORMALIZED)) {
+                    throw AlgebricksException.create(EXPRESSION_CANNOT_BE_CONSTANT, op.getSourceLocation(), part);
+                }
+                throw ex;
+            }
+
             return new SinkWritePOperator(op.getSourceVariable(), op.getPartitionVariables(), op.getOrderColumns());
         }
 
@@ -649,4 +666,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java
index 177117e..e46c0ef 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java
@@ -166,7 +166,8 @@
     OPERATOR_NOT_IMPLEMENTED(10005),
     INAPPLICABLE_HINT(10006),
     CROSS_PRODUCT_JOIN(10007),
-    GROUP_ALL_DECOR(10008);
+    GROUP_ALL_DECOR(10008),
+    EXPRESSION_CANNOT_BE_CONSTANT(10009);
 
     private static final String RESOURCE_PATH = "errormsg/en.properties";
     public static final String HYRACKS = "HYR";
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/resources/errormsg/en.properties b/hyracks-fullstack/hyracks/hyracks-api/src/main/resources/errormsg/en.properties
index ea1cc1e..b3c2d7b 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/resources/errormsg/en.properties
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/resources/errormsg/en.properties
@@ -155,4 +155,5 @@
 10005 = Operator is not implemented: %1$s
 10006 = Could not apply %1$s hint: %2$s
 10007 = Encountered a cross product join
-10008 = Inappropriate use of group by all with decor variables
\ No newline at end of file
+10008 = Inappropriate use of group by all with decor variables
+10009 = '%1$s' expression cannot be a constant
\ No newline at end of file

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18345
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: I02723741458e3fa04877c0099990405e7755f656
Gerrit-Change-Number: 18345
Gerrit-PatchSet: 1
Gerrit-Owner: Hussain Towaileb <hu...@gmail.com>
Gerrit-MessageType: newchange