[ 
https://issues.apache.org/jira/browse/CALCITE-2611?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jesus Camacho Rodriguez resolved CALCITE-2611.
----------------------------------------------
       Resolution: Fixed
    Fix Version/s: 1.18.0

Fixed in 
[dfd012c|http://git-wip-us.apache.org/repos/asf/calcite/commit/dfd012c]. Thanks 
[~kgyrtkirk]!

> Linq4j code generation failure if one side of an OR contains unknown
> --------------------------------------------------------------------
>
>                 Key: CALCITE-2611
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2611
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Zoltan Haindrich
>            Assignee: Zoltan Haindrich
>            Priority: Major
>             Fix For: 1.18.0
>
>
> This is rather strange...it needs also an and below which contains the 
> unknown.
> Running the following query: 
> {code}
> !connect jdbc:calcite:model=target/test-classes/model.json admin admin
> select (EMPID = 3 and unknown) or ( EMPID  = 3) from emps;
> {code}
> results in a compilation exception;
> the main problem is that there is an interesting field:
> {code}
> static final Object $L4J$C$_null = !null;
> {code}
> full exception:
> {code}
> 0: jdbc:calcite:model=target/test-classes/mod> select (cast(EMPID as integer) 
> = 3 and unknown) or not ( cast(EMPID as integer) = 3) from emps;
> Error: Error while executing SQL "select (cast(EMPID as integer) = 3 and 
> unknown) or not ( cast(EMPID as integer) = 3) from emps": Error while 
> compiling generated Java code:
> org.apache.calcite.DataContext root;
> public org.apache.calcite.linq4j.Enumerable bind(final 
> org.apache.calcite.DataContext root0) {
>   root = root0;
>   final org.apache.calcite.rel.RelNode v1stashed = 
> (org.apache.calcite.rel.RelNode) root.get("v1stashed");
>   final org.apache.calcite.interpreter.Interpreter interpreter = new 
> org.apache.calcite.interpreter.Interpreter(
>     root,
>     v1stashed);
>   return new org.apache.calcite.linq4j.AbstractEnumerable(){
>       public org.apache.calcite.linq4j.Enumerator enumerator() {
>         return new org.apache.calcite.linq4j.Enumerator(){
>             public final org.apache.calcite.linq4j.Enumerator inputEnumerator 
> = interpreter.enumerator();
>             public void reset() {
>               inputEnumerator.reset();
>             }
>             public boolean moveNext() {
>               return inputEnumerator.moveNext();
>             }
>             public void close() {
>               inputEnumerator.close();
>             }
>             public Object current() {
>               final Integer inp5_ = (Integer) ((Object[]) 
> inputEnumerator.current())[5];
>               return inp5_ != null && inp5_.intValue() != 3 ? Boolean.TRUE : 
> inp5_ != null || $L4J$C$_null || inp5_ == null ? (Boolean) null : 
> Boolean.FALSE;
>             }
>             static final Object $L4J$C$_null = !null;
>           };
>       }
>     };
> }
> public Class getElementType() {
>   return java.lang.Boolean.class;
> } (state=,code=0)
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to