rohangarg commented on code in PR #12431:
URL: https://github.com/apache/druid/pull/12431#discussion_r856162689


##########
sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidPlanner.java:
##########
@@ -838,6 +843,31 @@ static ParsedNodes create(final SqlNode node) throws 
ValidationException
       return new ParsedNodes(explain, druidSqlInsert, query, 
ingestionGranularity);
     }
 
+    private static void validateSelectColumnForIngestion(SqlNode sqlNode) 
throws ValidationException
+    {
+      if (sqlNode instanceof SqlBasicCall) {
+        // If the sql node is a basic call, it could have select statements as 
operands.
+        // We need to recursivly check the operands for select statements.
+        SqlBasicCall sqlBasicCall = (SqlBasicCall) sqlNode;
+        for (SqlNode operand : sqlBasicCall.getOperandList()) {
+          validateSelectColumnForIngestion(operand);
+        }
+      } else if (sqlNode instanceof SqlSelect) {
+        // Validate that all columns which do some computation in the select 
statement are named.

Review Comment:
   One idea for handling such cases : can we use the `rootQueryRel` object 
after creating the `ParsedNodes` to see that there aren't any generated 
aliases? The `rootQueryRel` contains a `field` list which has ordinal to alias 
mapping from what I understand.
   And for checking if an alias is generated by calcite we could use something 
like 
https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/sql/SqlUtil.java#L833
 (directly not present in the calcite version we use).
   The downside of doing this is that users would not be able to provide column 
names like `EXPR$<number>` - not sure if we can live with that. 



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to