Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
Description
SqlImplementor createLeftCall method is implemented using recursion. In this case if sql has a lot of AND or OR operators it throws StackOverflowError.
Caused by: java.lang.StackOverflowError at org.apache.calcite.util.Util.skipLast(Util.java:1940) at org.apache.calcite.util.Util.skipLast(Util.java:1935) at org.apache.calcite.rel.rel2sql.SqlImplementor$Context.createLeftCall(SqlImplementor.java:763) at org.apache.calcite.rel.rel2sql.SqlImplementor$Context.createLeftCall(SqlImplementor.java:765) at org.apache.calcite.rel.rel2sql.SqlImplementor$Context.createLeftCall(SqlImplementor.java:765)
Since calcite converts IN list to OR this bug is also reproduces on huge IN list.