[
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)