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

Julian Hyde commented on CALCITE-1007:
--------------------------------------

I thought that Calcite's policy was only to allow join conditions {{t1.x=t2.x}} 
if t1.x and t2.x have IDENTICAL type. To make them identical, you might need to 
wrap one side in a widening cast. So the algebra would be as if they'd written

{code}select *
from (select cast(1 as bigint) as x from t1) as t1
join (select stroll as x from t2) as t2
join t1.x = t2.x{code}

and there would not be a problem. So, the problem may be in allowing equi-join 
conditions.

Yeah, you Hive guys like to berate me that Calcite is too strict about types. 
Here's a case where strictness helps.

> Transitive Inference on Join Condition is not type safe
> -------------------------------------------------------
>
>                 Key: CALCITE-1007
>                 URL: https://issues.apache.org/jira/browse/CALCITE-1007
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.5.0
>            Reporter: Laljo John Pullokkaran
>            Assignee: Laljo John Pullokkaran
>
> select * from (select 1 as x from t1) t1 join (select stroll as x from t2)t2 
> join t1.x=t2.x;
> While transferring x=1 from t1 to t2, we don't use the correct type for 'x' 
> on t2.
> This could result in data correctness. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to