julianhyde commented on code in PR #3209:
URL: https://github.com/apache/calcite/pull/3209#discussion_r1205725017


##########
core/src/main/java/org/apache/calcite/adapter/enumerable/RexImpTable.java:
##########
@@ -1688,6 +1692,27 @@ static class GroupingImplementor implements 
AggImplementor {
     }
   }
 
+  /** Implementor for the {@code LITERAL_AGG} aggregate function. */
+  static class LiteralAggImplementor implements AggImplementor {
+    @Override public List<Type> getStateType(AggContext info) {
+      return ImmutableList.of();
+    }
+
+    @Override public void implementReset(AggContext info, AggResetContext 
reset) {
+    }
+
+    @Override public void implementAdd(AggContext info, AggAddContext add) {
+    }
+
+    @Override public Expression implementResult(AggContext info,
+        AggResultContext result) {
+      checkArgument(info.aggregation().kind == SqlKind.LITERAL_AGG);
+      checkArgument(result.call().rexList.size() == 1);
+      final RexNode rexNode = result.call().rexList.get(0);

Review Comment:
   I don't feel strongly about it. There's some benefit to retaining 
flexibility.
   
   For example, in `Sort` we didn't validate that `limit` and `offset` were 
literals and it turned out to be useful - because people wanted to use 
parameters.
   
   Clearly the expression should not contain `RexInputRef`. But calls to 
parameter-less functions such as `CURRENT_DATE` seem like reasonable use cases.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@calcite.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to