calcite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Julian Hyde <jh...@apache.org>
Subject Re: [DISCUSS] IS NOT DISTINCT FROM rewrite
Date Thu, 06 Jun 2019 00:39:56 GMT
I agree.

For whoever fixes the JDBC adapter, I discovered this table describing alternative syntax
on Oracle, DB2, MySQL: https://modern-sql.com/feature/is-distinct-from#proprietary-alternantives
<https://modern-sql.com/feature/is-distinct-from#proprietary-alternantives> 

Julian
 

> On Jun 5, 2019, at 5:34 PM, Haisheng Yuan <h.yuan@alibaba-inc.com> wrote:
> 
> >  if sending SQL to a database that does not understand IS NOT DISTINCT FROM
> That is sadly true. I found that Hive just starts to support INDF since 3.0.0. But dy
default expanding INDF is still questionable. Their incapability should not force Calcite
expand INDF by default.
> 
> > If both arguments are not null, it probably makes sense to rewrite “x IS NOT DISTINCT
FROM y” to “x = y”,
> I agree. But it is can be done with RexSimplify easily, expanding it or using a rule
FilterRemoveIsNotDistinctFromRule is an overkill, IMHO.
> 
> - Haisheng
> 
> ------------------------------------------------------------------
> 发件人:Julian Hyde<jhyde@apache.org>
> 日 期:2019年06月06日 05:09:14
> 收件人:dev<dev@calcite.apache.org>
> 主 题:Re: [DISCUSS] IS NOT DISTINCT FROM rewrite
> 
> My instinct is that we should leave it unexpanded. And that we should recognize “equals-like
operators”, so that a planner rule originally written for ‘=‘ could easily be expanded
to also apply to ‘is not distinct from’.
> 
> Of course there would be a way of expanding it that we could use if circumstances required
it — e.g. if sending SQL to a database that does not understand IS NOT DISTINCT FROM —
but we would not expand it by default.
> 
> If both arguments are not null, it probably makes sense to rewrite “x IS NOT DISTINCT
FROM y” to “x = y”, because the latter is more common and no less simple.
> 
> Julian
> 
> 
> 
> > On Jun 5, 2019, at 1:46 PM, Haisheng Yuan <h.yuan@alibaba-inc.com> wrote:
> > 
> > I see INDF is rewritten to OR, and FilterRemoveIsNotDistinctFromRule rewrites INDF
to CASE expression. Why do we want to do that? To simplify expression like "a is not distinct
from b or a = b"? Then we spend a lot effort to convert OR/CASE back to INDF. 
> > 
> > I am curious what is the motivation to rewrite INDF. Does it really help a lot in
production? I would like to hear the use cases if it does.
> > 
> > - Haisheng
> > 


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message