[ https://issues.apache.org/jira/browse/CALCITE-6413?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17862822#comment-17862822 ]
Julian Hyde commented on CALCITE-6413: -------------------------------------- We do convert NATURAL and USING to ON - in fact we have to, because our relational algebra (class Join) only supports the latter. But we don’t do that rewrite until validation is complete. Mutating the AST during validation is a bad idea. > SqlValidator does not invoke TypeCoercionImpl::binaryComparisonCoercion for > both NATURAL and USING join conditions > ------------------------------------------------------------------------------------------------------------------- > > Key: CALCITE-6413 > URL: https://issues.apache.org/jira/browse/CALCITE-6413 > Project: Calcite > Issue Type: Improvement > Reporter: Maksim Zhuravkov > Assignee: Pavel Pereslegin > Priority: Minor > > This can be observed by adding these test cases to `SqlToRelConverterTest`: > 1. Join condition ON expression > {code:java} > @Test void test1() { > final String sql = "select * from emp JOIN (VALUES ('XXX')) t(deptno) ON > emp.deptno = t.deptno"; > sql(sql).ok(); > } > {code} > 2. Common columns (USING/NATURAL) (since they both share the same code path > for building join condition) > {code:java} > @Test void test2() { > final String sql = "select * from emp JOIN (VALUES ('XXX')) t(deptno) > USING (deptno)"; > sql(sql).ok(); > } > {code} > When test 1 runs, the SqlValidator calls > TypeCoercionImpl::binaryComparisonCoercion > When test 2 runs, the SqlValidator does not call > TypeCoercionImpl::binaryComparisonCoercion. > -- This message was sent by Atlassian Jira (v8.20.10#820010)