Zoltan Haindrich created CALCITE-2611:
-----------------------------------------
Summary: Code generation fails 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: Julian Hyde
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)