calcite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Julian Hyde <jh...@apache.org>
Subject Re: Rewriting null equality join condition into IS NOT DISTINCT FROM
Date Thu, 14 Apr 2016 22:37:00 GMT
Thanks. I’ll review.

> On Apr 14, 2016, at 11:21 PM, Venki Korukanti <venki.korukanti@gmail.com> wrote:
> 
> Thanks Julian.
> 
> Changed "List<Integer> filterNulls" to "List<Boolean> filterNulls".
> 
> I created a JIRA (https://issues.apache.org/jira/browse/CALCITE-1200) and
> submitted a PR.
> 
> On Thu, Apr 14, 2016 at 4:17 AM, Julian Hyde <jhyde@apache.org> wrote:
> 
>> splitJoinCondition seems to be the right place.
>> 
>> I’m not sure I’d have "List<Integer> filterNulls”; I’d have “List<Boolean>
>> filterNulls” instead, I think, to handle
>> 
>> select *
>> from t1 join t2
>> on t1.c0 = t2.c0
>> and t1.c0 is not distinct from t2.c1
>> 
>> Note that t1.c0 is compared using = in one case,
>> and using is-not-distinct-from in the other case.
>> So I’d set filterNulls = [true, false].
>> 
>>> On Apr 14, 2016, at 9:50 AM, Venki Korukanti <venki.korukanti@gmail.com>
>> wrote:
>>> 
>>> Hi,
>>> 
>>> In Drill, we have an improvement request to handle null equality joins (
>>> DRILL-4539 <https://issues.apache.org/jira/browse/DRILL-4539>).
>> Currently
>>> Drill relies on RelOptUtil.splitJoinCondition [1] and [2] to split the
>> join
>>> condition into equi-join condition and remained. We tested by modifying
>>> RelOptUtil.splitJoinCondition to identify null equality condition and
>>> convert it into IS NOT DISTINCT FROM and it works fine. Changes are [3].
>>> 
>>> I am wondering whether modifying the RelOptUtil.splitJoinCondition to
>>> handle null equality condition is the right way to add the functionality
>> in
>>> Calcite. Is there any other place where we can convert the null equality
>>> condition into IS NOT DISTINCT FROM?
>>> 
>>> 
>>> [1]
>>> 
>> https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java#L789
>>> 
>>> [2]
>>> 
>> https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java#L856
>>> 
>>> [3]
>>> 
>> https://github.com/vkorukanti/calcite/commit/ee2292455447bed082438f4eb9bef16025179a44
>>> 
>>> Thanks
>>> Venki
>> 
>> 


Mime
View raw message