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

Julian Hyde updated CALCITE-5541:
---------------------------------
    Fix Version/s: 1.38.0

> Upgrade JavaCC
> --------------
>
>                 Key: CALCITE-5541
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5541
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>            Reporter: John Wright
>            Assignee: Julian Hyde
>            Priority: Minor
>             Fix For: 1.38.0
>
>
> After 
> [https://github.com/apache/calcite/commit/515f3356a6a1ab4bd570c1c20bec9a7e5d4aca5f#diff-e873041549333502af52ece8a1b34301ae5a059ff4719e9bddbaef48929e7047]
>  there appears to be an issue with JavaCC codegen of the Parser.jj template 
> in "newer" versions of JavaCC (6.1.2 was the version I tested).
> {code:java}
>  
> build/scala_2.10/generated-sources/java/com/redacted/query/sql/parser/impl/QuerySqlParserImpl.java:15266:
>  error: variable startNum might not have been initialized
>                     startNum.intValue(true) != endNum.intValue(true),
>                     ^ 
> redacted/build/scala_2.10/generated-sources/java/com/redacted/query/sql/parser/impl/QuerySqlParserImpl.java:15266:
>  error: variable endNum might not have been initialized
>                     startNum.intValue(true) != endNum.intValue(true),
>                                                ^ 
> redacted/build/scala_2.10/generated-sources/java/com/redacted/query/sql/parser/impl/QuerySqlParserImpl.java:15281:
>  error: variable startNum might not have been initialized
>             span().end(e), e, startNum, endNum, reluctant);}
>                               ^ 
> redacted/build/scala_2.10/generated-sources/java/com/redacted/query/sql/parser/impl/QuerySqlParserImpl.java:15281:
>  error: variable endNum might not have been initialized
>             span().end(e), e, startNum, endNum, reluctant);}
>                                         ^ 
> redacted/build/scala_2.10/generated-sources/java/com/redacted/query/sql/parser/impl/QuerySqlParserImpl.java:15281:
>  error: variable reluctant might not have been initialized
>             span().end(e), e, startNum, endNum, reluctant);}{code}
> [~jbal...@gmail.com] helped me debug this, and he pointed out which generated 
> code was incorrect:
> {code:java}
> final public SqlNode PatternFactor() throws ParseException {final SqlNode e;
>     final SqlNode extra;
>     final SqlLiteral startNum;
>     final SqlLiteral endNum;
>     final SqlLiteral reluctant;
> ...
>     default:
>       jj_la1[163] = jj_gen;
> {if ("" != null) return e;}
>     }
> {if ("" != null) return SqlStdOperatorTable.PATTERN_QUANTIFIER.createCall(
>             span().end(e), e, startNum, endNum, reluctant);}
>     throw new Error("Missing return statement in function");
>   }{code}
> instead of:
> {code:java}
>   default:
>     jj_la1[163] = jj_gen;
>         {if (true) return e;}
>   }
>       {if (true) return SqlStdOperatorTable.PATTERN_QUANTIFIER.createCall(
>           span().end(e), e, startNum, endNum, reluctant);}
>   throw new Error("Missing return statement in function");
> } {code}
> I've worked around this by pinning to JavaCC 4.0, however the Gradle JavaCC 
> plugin we use [https://github.com/javacc/javaccPlugin] defaults to 6.1.2.
> It looks like JavaCC 4.0 was release in 2006, 6.1.2 in 2014, and current 
> 7.0.12 in 2022 so it felt like it might be worth updating.
> If this is intended / known, feel free to close - Thanks



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to