google-code-export / sqljet

Automatically exported from code.google.com/p/sqljet
0 stars 1 forks source link

Cannot catch org.tmatesoft.sqljet.core.internal.lang.SqlJetParserException #178

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
I want to create for a exception test case a table with name "123abc" and 
expect a exception after commit call of SqlJetDb connection object - but even 
when i catch Exception only a output comes up with. Maybe its better to throw 
the exception to the method which call the commit function...

org.tmatesoft.sqljet.core.internal.lang.SqlJetParserException: [line 1:13] no 
viable alternative at input '123'
CREATE TABLE 123abc (second_name TEXT NOT NULL PRIMARY KEY, first_name TEXT NOT 
NULL, date_of_birth INTEGER NOT NULL)
    at org.tmatesoft.sqljet.core.internal.lang.SqlParser.displayRecognitionError(SqlParser.java:303)
    at org.antlr.runtime.BaseRecognizer.reportError(BaseRecognizer.java:186)
    at org.tmatesoft.sqljet.core.internal.lang.SqlParser.id(SqlParser.java:17549)
    at org.tmatesoft.sqljet.core.internal.lang.SqlParser.create_table_stmt(SqlParser.java:11596)
    at org.tmatesoft.sqljet.core.internal.lang.SqlParser.schema_create_table_stmt(SqlParser.java:1386)
    at org.tmatesoft.sqljet.core.internal.schema.SqlJetSchema.parseTable(SqlJetSchema.java:410)
    at org.tmatesoft.sqljet.core.internal.schema.SqlJetSchema.createTableSafe(SqlJetSchema.java:484)
    at org.tmatesoft.sqljet.core.internal.schema.SqlJetSchema.createTable(SqlJetSchema.java:476)
    at org.tmatesoft.sqljet.core.table.SqlJetDb$5.run(SqlJetDb.java:270)
    at org.tmatesoft.sqljet.core.table.SqlJetDb$3.run(SqlJetDb.java:240)
    at org.tmatesoft.sqljet.core.table.engine.SqlJetEngine$12.runSynchronized(SqlJetEngine.java:533)
    at org.tmatesoft.sqljet.core.table.engine.SqlJetEngine.runSynchronized(SqlJetEngine.java:217)
    at org.tmatesoft.sqljet.core.table.engine.SqlJetEngine.runEngineTransaction(SqlJetEngine.java:529)
    at org.tmatesoft.sqljet.core.table.SqlJetDb.runTransaction(SqlJetDb.java:238)
    at org.tmatesoft.sqljet.core.table.SqlJetDb.runWriteTransaction(SqlJetDb.java:211)
    at org.tmatesoft.sqljet.core.table.SqlJetDb.createTable(SqlJetDb.java:268)
    at de.intec.xsolut.controller.SQLiteController.createTable(SQLiteController.java:88)
    at xsolut.controller.SQLiteControllerTest.createTableWithDBException(SQLiteControllerTest.java:64)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
Caused by: NoViableAltException(122@[])
    at org.tmatesoft.sqljet.core.internal.lang.SqlParser.id(SqlParser.java:17502)
    ... 38 more

Original issue reported on code.google.com by realb...@gmail.com on 27 May 2013 at 12:41

GoogleCodeExporter commented 9 years ago
Could you show some your code where you found that problem? Thanks.

So far I can't figure out what exactly is the problem, sorry.

Exception is thrown by parser and it seems as some natural thing, IMHO.

But of course, it could be some wrong. Please, show some code which could help 
to see the problem.

Original comment by sergey.s...@gmail.com on 27 May 2013 at 12:49

GoogleCodeExporter commented 9 years ago
Just some notes: commit is no more than just delete of a rollback journal log. 
All changes in main database file are performed directly within transaction 
code and commit doesn't anything more with main database file. At commit time 
there is changed database file and rollback log which contains backup of 
unchanged database's pages. If you perform commit at this time it just delete 
rollback file. So there isn't light option to get at commit time an exception 
which has been thrown earlier. It's by design in SQLite transactions model 
which is inherited in SQLJet too.

Original comment by sergey.s...@gmail.com on 27 May 2013 at 1:00

GoogleCodeExporter commented 9 years ago

Original comment by sergey.s...@gmail.com on 25 Nov 2013 at 8:42