You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2015/12/09 21:35:11 UTC

[jira] [Issue Comment Deleted] (CALCITE-459) TokenMgrError parsing error when the query terminates a single-line comment without newline

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

Julian Hyde updated CALCITE-459:
--------------------------------
    Comment: was deleted

(was: For better or worse, that's the API we use. The first time it will populate the static SqlParserImpl.metadata field, and it recursively invokes a parser to do so. I wouldn't count that in benchmarks. Every time you create a parser it will populate 

{code}JJCalls[] jj_2_rtns = new JJCalls[721]{code}

and initialize each with a JJCall - a struct with 4 members. That probably accounts for your 70KB.

We could look at re-using parser instances, saving a small number of them in a cache. Can you change your benchmark to call one of the SqlParserImpl.ReInit methods?)

> TokenMgrError parsing error when the query terminates a single-line comment without newline
> -------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-459
>                 URL: https://issues.apache.org/jira/browse/CALCITE-459
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Vladimir Sitnikov
>            Assignee: Julian Hyde
>              Labels: newbie
>
> Here's the test (based on the bug report in https://github.com/vlsi/mat-calcite-plugin/issues/1):
> {code:sql}
>   /** Tests comment without ending newline */
>   @Test public void testCommentWithoutNewLine() {
>     OptiqAssert.that()
>         .with(OptiqAssert.Config.REGULAR)
>         .query(
>             "select \"empid\" from \"hr\".\"emps\"\n-- select")
>         .typeIs(
>             "[empid INTEGER NOT NULL]")
>         .returnsUnordered(
>             "empid=100",
>             "empid=110",
>             "empid=150",
>             "empid=200");
>   }
> {code}
> {noformat}
> java.lang.RuntimeException: exception while executing [select "empid" from "hr"."emps"
> -- select]
> 	at net.hydromatic.optiq.test.OptiqAssert$AssertQuery.typeIs(OptiqAssert.java:1088)
> 	at net.hydromatic.optiq.test.JdbcTest.testCommentWithoutNewLine(JdbcTest.java:3812)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
> Caused by: java.lang.RuntimeException: With materializationsEnabled=false, limit=0
> 	at net.hydromatic.optiq.test.OptiqAssert.assertQuery(OptiqAssert.java:419)
> 	at net.hydromatic.optiq.test.OptiqAssert$AssertQuery.typeIs(OptiqAssert.java:1084)
> 	... 27 more
> Caused by: java.sql.SQLException: error while executing SQL "select "empid" from "hr"."emps"
> -- select": parse failed: Lexical error at line 2, column 10.  Encountered: <EOF> after : ""
> 	at net.hydromatic.avatica.Helper.createException(Helper.java:39)
> 	at net.hydromatic.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:79)
> 	at net.hydromatic.optiq.test.OptiqAssert.assertQuery(OptiqAssert.java:394)
> 	... 28 more
> Caused by: java.lang.RuntimeException: parse failed: Lexical error at line 2, column 10.  Encountered: <EOF> after : ""
> 	at net.hydromatic.optiq.prepare.OptiqPrepareImpl.prepare2_(OptiqPrepareImpl.java:395)
> 	at net.hydromatic.optiq.prepare.OptiqPrepareImpl.prepare_(OptiqPrepareImpl.java:322)
> 	at net.hydromatic.optiq.prepare.OptiqPrepareImpl.prepareSql(OptiqPrepareImpl.java:291)
> 	at net.hydromatic.optiq.jdbc.OptiqConnectionImpl.parseQuery(OptiqConnectionImpl.java:170)
> 	at net.hydromatic.optiq.jdbc.MetaImpl.prepare(MetaImpl.java:622)
> 	at net.hydromatic.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:76)
> 	... 29 more
> Caused by: org.eigenbase.sql.parser.SqlParseException: Lexical error at line 2, column 10.  Encountered: <EOF> after : ""
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.convertException(SqlParserImpl.java:327)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.normalizeException(SqlParserImpl.java:68)
> 	at org.eigenbase.sql.parser.SqlParser.parseStmt(SqlParser.java:149)
> 	at net.hydromatic.optiq.prepare.OptiqPrepareImpl.prepare2_(OptiqPrepareImpl.java:392)
> 	... 34 more
> Caused by: org.eigenbase.sql.parser.impl.TokenMgrError: Lexical error at line 2, column 10.  Encountered: <EOF> after : ""
> 	at org.eigenbase.sql.parser.impl.SqlParserImplTokenManager.getNextToken(SqlParserImplTokenManager.java:13715)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.jj_scan_token(SqlParserImpl.java:15844)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.jj_3_273(SqlParserImpl.java:15071)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.jj_2_273(SqlParserImpl.java:6888)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.CompoundIdentifier(SqlParserImpl.java:3348)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.TableRef(SqlParserImpl.java:1440)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.FromClause(SqlParserImpl.java:1353)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.SqlSelect(SqlParserImpl.java:752)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.LeafQuery(SqlParserImpl.java:516)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.LeafQueryOrExpr(SqlParserImpl.java:2151)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.QueryOrExpr(SqlParserImpl.java:2070)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.OrderedQueryOrExpr(SqlParserImpl.java:434)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.SqlStmt(SqlParserImpl.java:692)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.SqlStmtEof(SqlParserImpl.java:718)
> 	at org.eigenbase.sql.parser.impl.SqlParserImpl.parseSqlStmtEof(SqlParserImpl.java:121)
> 	at org.eigenbase.sql.parser.SqlParser.parseStmt(SqlParser.java:142)
> 	... 35 more
> Process finished with exit code 255
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)