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

Julian Hyde commented on CALCITE-4910:
--------------------------------------

In your summary and commit message, quote SQL and capitalize keywords.

The test is difficult to read, due to long lines, repetition of calls such as 
‘vVarchar()’. Try breaking the lines so that each line is a term. There should 
be space in ‘or (‘ and no space before ‘)’. 



Also, why use REPLACE and COALESCE? Most examples use  arithmetic operations, 
which seem to be more concise and intuitive. 



I notice variables called termsSet and termSet. Make them the same, or make 
them more different. 



Can you convert some of the loops that set a Boolean into methods? Might make 
the control flow clearer. 

> Enhance simplify to reduce ((a or d) and (a or c) and a and b) to (a and b)
> ---------------------------------------------------------------------------
>
>                 Key: CALCITE-4910
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4910
>             Project: Calcite
>          Issue Type: Improvement
>            Reporter: Ziwei Liu
>            Assignee: Ziwei Liu
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Considering this condition, (a or d) and (a or c) and a and b. This condition 
> can be simplified to a and b, but now simplify can not do this.
> This case is found out by materialized view test:
> {code:java}
> materialized view: 
> select 'a',empid,deptno,salary as s from emps where (replace(name,'e','a') is 
> not null or replace(name,'a','c') is not null) 
> and (replace(name,'c','b') is not null or replace(name,'n','d') is not null)
> sql:  
> select salary +1 as s,deptno from emps where
> replace(name,'c','b')is not null and replace(name,'a','c') is not null and 
> salary>10
> The sql will not be rewritten by materialized view because when splitFilter, 
> $3 > 10 and REPLACE($2, 'a', 'c') is not null and REPLACE($2, 'c', 'b') is 
> not null and  (REPLACE($2, 'a', 'c') is not null or REPLACE($2, 'e', 'a') is 
> not null) 
> and (REPLACE($2, 'c', 'b') is not null or REPLACE($2, 'n', 'd') is not null)
> can not be simplified to  
> $3 > 10 and REPLACE($2, 'a', 'c') is not null and REPLACE($2, 'c', 'b') is 
> not null 
> materialized view:
> select empid,deptno,salary as s from emps where 
> (replace(name,'e','a') ='aaa' or replace(name,'a','c') ='aaa') 
> and 
> (replace(name,'c','b') ='aaa' or replace(name,'n','d') ='aaa')
> sql:
> select salary  as s,deptno from emps where
> replace(name,'c','b') ='aaa' is not null 
> and replace(name,'a','c') ='aaa'
> This case also can not be rewritten.{code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to