[ 
https://issues.apache.org/jira/browse/CALCITE-6904?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhen Chen updated CALCITE-6904:
-------------------------------
    Description: 
The convert() method of ElementerableJoinRule incorrectly converts the 
condition of IS_NOT_DISTINCT_FROM , which is considered an equivalence 
condition in calcite and carries a `filterNulls` to save whether to perform 
equivalence processing on NULL. However, when converting to ElementerableJoin, 
the filterNulls are ignored, resulting in `IS_NOT_DISTINCT_FROM ($0, $1)` being 
converted to `=($0, $1)`.

 

mysql case:
{code:java}
CREATE TABLE emps (
    commission int
);
INSERT INTO emps VALUES (1);
INSERT INTO emps VALUES (2);
INSERT INTO emps VALUES (3);
INSERT INTO emps VALUES (NULL);

SELECT t1.commission FROM emps as t1
join
emps as t2
on t1.commission <=> t2.commission;

mysql result:
commission
1
2
3
NULL {code}
calcite jdbc case:
{code:java}
// code placeholder
{code}

  was:The convert() method of ElementerableJoinRule incorrectly converts the 
condition of IS_NOT_DISTINCT_FROM , which is considered an equivalence 
condition in calcite and carries a `filterNulls` to save whether to perform 
equivalence processing on NULL. However, when converting to ElementerableJoin, 
the filterNulls are ignored, resulting in `IS_NOT_DISTINCT_FROM ($0, $1)` being 
converted to `=($0, $1)`.


> IS_NOT_DISTINCT_FROM is converted error in ElementerableJoinRule
> ----------------------------------------------------------------
>
>                 Key: CALCITE-6904
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6904
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Zhen Chen
>            Priority: Major
>
> The convert() method of ElementerableJoinRule incorrectly converts the 
> condition of IS_NOT_DISTINCT_FROM , which is considered an equivalence 
> condition in calcite and carries a `filterNulls` to save whether to perform 
> equivalence processing on NULL. However, when converting to 
> ElementerableJoin, the filterNulls are ignored, resulting in 
> `IS_NOT_DISTINCT_FROM ($0, $1)` being converted to `=($0, $1)`.
>  
> mysql case:
> {code:java}
> CREATE TABLE emps (
>     commission int
> );
> INSERT INTO emps VALUES (1);
> INSERT INTO emps VALUES (2);
> INSERT INTO emps VALUES (3);
> INSERT INTO emps VALUES (NULL);
> SELECT t1.commission FROM emps as t1
> join
> emps as t2
> on t1.commission <=> t2.commission;
> mysql result:
> commission
> 1
> 2
> 3
> NULL {code}
> calcite jdbc case:
> {code:java}
> // code placeholder
> {code}



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

Reply via email to