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

Julian Hyde commented on CALCITE-2997:
--------------------------------------

I support adding config options to SqlToRelConverter so that people can choose 
to do more or less optimization. But I'd keep the default behavior the same as 
it is today.

Generally it's good to add 'no-brainer' optimizations to RelBuilder, especially 
if they tend to produce a RelNode tree that is more concise. (CALCITE-3763 is a 
great example of this - note that it modifies an existing Project, but never 
adds one.) But it's not an absolute rule.

And it's almost always good to move 'optimizations' done by SqlToRelConverter 
into RelBuilder (provided this can be done without changing behavior).

> Avoid pushing down join condition in SqlToRelConverter
> ------------------------------------------------------
>
>                 Key: CALCITE-2997
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2997
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Jin Xing
>            Assignee: Julian Hyde
>            Priority: Major
>
> In current code, *SqlToRelConverter:createJoin* is calling 
> *RelOptUtil.pushDownJoinConditions* for optimization. And we can find below 
> conversion from *SqlNode* to *RelNode*:
> {code:java}
> SqlNode:
> select * from A join B on A.x = B.x * 2
> RelNode (Logical-Plan):
> Join (condition:col0=col1)
> |-Project(x as col0)
> | |-Scan(A)
> |-Project(x * 2 as col1)
>   |-Scan(B){code}
> As we can see the logical plan(*RelNode*) posted above is not the pure 
> reflection of the original SQL String(*SqlNode*). The optimization is mixed 
> into the phase on which AST is converted to Logical-Plan. Actually optimizing 
> rule of JoinPushExpressionsRule is doing exactly the same kind of thing. 
> Shall we just keep the optimization inside Optimized-Logical-Plan ? I mean 
> shall we avoid calling *RelOptUtil.pushDownJoinConditions* in 
> *SqlToRelConverter:createJoin*
> I raised this issue because that we are doing something based on the 
> Logical-Plan. And it makes us really confused that the Logical-Plan doesn't 
> corresponds to SqlNode. 
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to