Dwrite commented on code in PR #4692:
URL: https://github.com/apache/calcite/pull/4692#discussion_r2686707455


##########
core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java:
##########
@@ -223,6 +223,73 @@ private static class AliasReplacementShuttle extends 
SqlShuttle {
     }
   }
 
+  /**
+   * Wraps a nested join into a subquery with explicit column aliases.
+   *
+   * <p>This is specifically required for dialects like ClickHouse where the
+   * identifier resolver cannot resolve columns with internal table qualifiers
+   * (e.g., 'd1.loc') when they are wrapped in a subquery alias. By forcing
+   * an explicit 'AS' projection for every column, we ensure the identifiers
+   * are flattened and visible to the outer query block.
+   *
+   * @param input     The Result of the nested join branch
+   * @param inputRel  The RelNode representing the join branch to extract row 
types
+   * @param outerAlias The alias to be assigned to the wrapped subquery
+   * @return A new Result containing the wrapped SQL with explicit aliases
+   */
+  protected Result wrapNestedJoin(Result input, RelNode inputRel, String 
outerAlias) {
+    final SqlParserPos pos = SqlParserPos.ZERO;
+
+    // Extract the underlying SqlSelect from the input Result.
+    // We manipulate the Select node directly to avoid redundant nesting
+    // often introduced by Result.asSelect().
+    final SqlSelect innerSelect = input.asSelect();

Review Comment:
   I checked the code In SqlImplementor, input.asSelect() is designed to 
normalize any SqlNode (including SqlCall for VALUES or SetOp) into a SqlSelect 
structure.
   
   If the underlying node is not a SELECT, Calcite's SqlImplementor 
automatically wraps it in a sub-query. This ensures we always have a SqlSelect 
container to safely apply the mandatory aliases required by ClickHouse without 
breaking the SQL syntax.



-- 
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]

Reply via email to