[ 
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)

Reply via email to