[ 
https://issues.apache.org/jira/browse/CALCITE-7050?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17956696#comment-17956696
 ] 

Zhen Chen commented on CALCITE-7050:
------------------------------------

[~nobigo] I agree that these are indeed two separate phases. However, 
{{RelToSql}} should not exclusively rewrite {{FULL JOIN}} to {{UNION}} for the 
MySQL dialect. This isn't what dialect conversion should handle—it's actually 
the responsibility of a rule. Therefore, the focus of this JIRA should be to 
make MySQL report an error for {{{}FULL JOIN{}}}. A new JIRA can be created to 
implement a rule for rewriting {{FULL JOIN}} to {{{}UNION{}}}.

Moreover, this rule should be optional. It doesn’t necessarily need to be 
included in the default rule set. Calcite has many rules that aren’t part of 
the default rules either. The greatest flexibility of Calcite is that users can 
freely combine rules according to their needs.

> Invalid unparse for FULL JOIN in MySQLDialect 
> ----------------------------------------------
>
>                 Key: CALCITE-7050
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7050
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: xiong duan
>            Assignee: Yu Xu
>            Priority: Major
>              Labels: pull-request-available
>
> The SQL in MySQL:
> {code:java}
> SELECT * FROM test002 as table1 full join test002  as table2 on table1.id1 = 
> table2.id1; {code}
> throws exception:
> {code:java}
> SQL ERROR [1064] [42000]: You have an error in your SQL syntax; check the 
> manual that corresponds to your MySQL server version for the right syntax to 
> use near 'full join test002  as table2 on table1.id1 = table2.id1 {code}
> Test case in RelToSqlConverterTest:
> {code:java}
> @Test void testFullJoin() {
>   String sql = "select *\n"
>       + "from \"store\" as s\n"
>       + "full join \"employee\" as e on true\n";
>   final String expectedMysql = "SELECT *\n"
>       + "FROM `foodmart`.`store`\n"
>       + "FULL JOIN `foodmart`.`employee` ON TRUE";
>   sql(sql).withMysql().ok(expectedMysql);
> } {code}
> We already have `supportsJoinType` when the jointype is JoinRelTpte.FULL 
> return false.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to