Ruben Q L created CALCITE-4741: ---------------------------------- Summary: AbstractRelNode#getId can overflow into a negative value causing CompileException in certain Enumerable implement methods Key: CALCITE-4741 URL: https://issues.apache.org/jira/browse/CALCITE-4741 Project: Calcite Issue Type: Bug Components: core Affects Versions: 1.27.0 Reporter: Ruben Q L Fix For: 1.28.0
{{AbstractRelNode#getId}} can overflow into a negative value. This id is used by certain in the {{implement}} method of several Enumerable operators ({{EnumerableBatchNestedLoopJoin}} and {{EnumerableMergeUnion}}) to guarantee a unique variable name in the dynamic code, e.g.: {code:java} final ParameterExpression corrArgList = Expressions.parameter(Modifier.FINAL, List.class, "corrList" + this.getId()); {code} However, if the id is negative, this variable name will have a "-", causing a {{CompileException}}: {noformat} ... final org.apache.calcite.linq4j.Enumerable _inputEnumerable1 = org.apache.calcite.linq4j.EnumerableDefaults.correlateBatchJoin(org.apache.calcite.linq4j.JoinType.LEFT, left0, new org.apache.calcite.linq4j.function.Function1() { public org.apache.calcite.linq4j.AbstractEnumerable apply(final java.util.List corrList-1794407755) { { ... Caused by: java.util.concurrent.ExecutionException: org.codehaus.commons.compiler.CompileException: Line 134, Column 103: One of ', )' expected instead of '-' {noformat} -- This message was sent by Atlassian Jira (v8.3.4#803005)