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

Jiatao Tao edited comment on CALCITE-4375 at 11/4/20, 8:49 AM:
---------------------------------------------------------------

Seems it is more a simplfy problem, not cnf..

1. (a && b) || (a && b && c && ...) => a && b

2. (a && b && c && ...) || (a && b && d && ...) => a && b && ((c && ...) || (d 
&& ...))

 

1. (a || b || c || ...) && (a || b) => (a || b)

2. (a || b || c || ...) && (a || b || d || ...) => a || b || ((c || ...) && (d 
|| ...))


was (Author: aron.tao):
1. (a && b) || (a && b && c && ...) => a && b

2. (a && b && c && ...) || (a && b && d && ...) => a && b && ((c && ...) || (d 
&& ...))

 

1. (a || b || c || ...) && (a || b) => (a || b)

2. (a || b || c || ...) && (a || b || d || ...) => a || b || ((c || ...) && (d 
|| ...))

> Merge join condition that has "OR" as much as possible
> ------------------------------------------------------
>
>                 Key: CALCITE-4375
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4375
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Jiatao Tao
>            Assignee: Jiatao Tao
>            Priority: Major
>
> SQL:
> SELECT * FROM emps,depts 
>  WHERE
>  (emps.name = depts.name AND empno=1)
>  OR 
>  (emps.name = depts.name AND empno=2)
>  
> And the join after optimizer is:
> EnumerableNestedLoopJoin(condition=[OR(AND(=($1, $11), =($0, 1)), AND(=($1, 
> $11), =($0, 2)))], joinType=[inner])
>  
> In fact ($1, $11) can be extracted, and the join can be:
> HashJoin(condition=[AND(=($1, $11), OR(=($0, 1), =($0, 2)))], 
> joinType=[inner]) 
>  



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

Reply via email to