pawlaszczyk / fqlite

64 stars 11 forks source link

java.lang.IndexOutOfBoundsException when use GUI #2

Closed little-brother closed 2 years ago

little-brother commented 3 years ago

I have a test database bookstore-d.sqlite. reviews table has deleted rows (id = 26, 27, 28).

The error on the database opening

...
tnamebooks
tnamebooks
tnamebooks
tnamebooks
java.lang.IndexOutOfBoundsException: Index: 6, Size: 6
        at java.util.ArrayList.rangeCheck(Unknown Source)
        at java.util.ArrayList.get(Unknown Source)
        at fqlite.descriptor.TableDescriptor.<init>(TableDescriptor.java:191)
        at fqlite.parser.SimpleSQLiteParser$3.exitCreate_table_stmt(SimpleSQLiteParser.java:497)
        at fqlite.parser.SQLiteParser$Create_table_stmtContext.exitRule(SQLiteParser.java:1560)
        at org.antlr.v4.runtime.tree.ParseTreeWalker.exitRule(ParseTreeWalker.java:47)
        at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:30)
        at fqlite.parser.SimpleSQLiteParser.parseCreateTable(SimpleSQLiteParser.java:308)
        at fqlite.parser.SimpleSQLiteParser.parseTable(SimpleSQLiteParser.java:101)
        at fqlite.parser.TableParser.parseCREATETABLEStatement(TableParser.java:82)
        at fqlite.parser.SQLiteSchemaParser.parse(SQLiteSchemaParser.java:100)
        at fqlite.util.Auxiliary.readMasterTableRecord(Auxiliary.java:236)
        at fqlite.base.Job.readSchema(Job.java:1692)
        at fqlite.base.Job.processDB(Job.java:879)
        at fqlite.base.Job.run(Job.java:1921)
        at fqlite.base.Job.start(Job.java:1878)
        at fqlite.ui.Task.doInBackground(ProgressBar.java:171)
        at fqlite.ui.Task.doInBackground(ProgressBar.java:1)
        at javax.swing.SwingWorker$1.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at javax.swing.SwingWorker.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

bookstore-d.zip

I created a more simple database test.sqlite with one table test and 6 rows. Then I deleted rows with id 3 and 4 by delete from test where id in (3, 4). GUI opened this database but didn't recover deleted rows (I can see them in hex).

test.zip

pawlaszczyk commented 2 years ago

This problem is fixed with fqlite 1.5.6.