Hi
It seams to me that the bug, supposedly fixed in 1.4.189, is not completely
fixed:
- An ArrayIndexOutOfBoundsException was thrown in some cases when
opening an old version 1.3 database, or an 1.4 database with both
"mv_store=false" and the system property "h2.storeLocalTime" set to false.
It mainly showed up with an index on a time, date, or timestamp column. The
system property "h2.storeLocalTime" is no longer supported (MVStore
databases always store local time, and PageStore now databases never do).
I am using H2 1.4.190 and a database created with 1.3.174.
When I run agressive "power-fail" tests (the database is running on an
embedded device) after about 95 cycles I get the following exception on
this query:
2015-11-06 10:36:48,499 WARN [Timer-1] Error executing update query:
> prep245: DELETE FROM LOGGER_MANAGER.logging_event WHERE
> logging_event.logger_name = ? AND logging_event.event_id NOT IN (SELECT
> logging_event.event_id FROM LOGGER_MANAGER.logging_event WHERE
> logging_event.logger_name = ? ORDER BY logging_event.timestmp DESC LIMIT ?)
> {1: 'SYSTEM', 2: 'SYSTEM', 3: 3200} [CUDB.java:285]
> org.h2.jdbc.JdbcSQLException: General error:
> "java.lang.ArrayIndexOutOfBoundsException: 0"; SQL statement:
> DELETE FROM LOGGER_MANAGER.logging_event WHERE logging_event.logger_name =
> ? AND logging_event.event_id NOT IN (SELECT logging_event.event_id FROM
> LOGGER_MANAGER.logging_event WHERE logging_event.logger_name = ? ORDER BY
> logging_event.timestmp DESC LIMIT ?) [50000-190]
> at
> org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.message.DbException.get(DbException.java:168)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.message.DbException.convert(DbException.java:295)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.command.Command.executeUpdate(Command.java:261)
> ~[h2-1.4.190.jar:1.4.190]
> at
> org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:157)
>
> ~[h2-1.4.190.jar:1.4.190]
> at
> org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:143)
>
> ~[h2-1.4.190.jar:1.4.190]
> at ch.asdf.cu.infrastructure.db.CUDB.executeUpdate(CUDB.java:278)
> ~[infrastructure-1.6.8.jar:na]
> at
> ch.asdf.cu.services.loggerManager.impl.db.LoggerManagerDB.cleanLogEntries(LoggerManagerDB.java:49)
>
> [infrastructure-1.6.8.jar:na]
> at
> ch.asdf.cu.services.loggerManager.impl.CleanDbTask.run(CleanDbTask.java:34)
> [infrastructure-1.6.8.jar:na]
> at java.util.TimerThread.mainLoop(Timer.java:534) [na:1.6.0_0]
> at java.util.TimerThread.run(Timer.java:484) [na:1.6.0_0]
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
> at org.h2.index.PageDataLeaf.getRowAt(PageDataLeaf.java:332)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.index.PageDataLeaf.getRowWithKey(PageDataLeaf.java:455)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.index.PageDataNode.getRowWithKey(PageDataNode.java:280)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.index.PageDataNode.getRowWithKey(PageDataNode.java:280)
> ~[h2-1.4.190.jar:1.4.190]
> at
> org.h2.index.PageDataIndex.getRowWithKey(PageDataIndex.java:426)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.index.PageDataIndex.getRow(PageDataIndex.java:415)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.table.RegularTable.getRow(RegularTable.java:106)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.index.PageBtreeIndex.getRow(PageBtreeIndex.java:301)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.index.PageBtreeCursor.get(PageBtreeCursor.java:45)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.index.MultiVersionCursor.get(MultiVersionCursor.java:82)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.index.IndexCursor.get(IndexCursor.java:260)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.table.TableFilter.getValue(TableFilter.java:897)
> ~[h2-1.4.190.jar:1.4.190]
> at
> org.h2.expression.ExpressionColumn.getValue(ExpressionColumn.java:186)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.command.dml.Select.queryFlat(Select.java:538)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.command.dml.Select.queryWithoutCache(Select.java:643)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.command.dml.Query.query(Query.java:322)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.command.dml.Query.query(Query.java:290)
> ~[h2-1.4.190.jar:1.4.190]
> at
> org.h2.expression.ConditionInSelect.getValue(ConditionInSelect.java:47)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.expression.ConditionNot.getValue(ConditionNot.java:32)
> ~[h2-1.4.190.jar:1.4.190]
> at
> org.h2.expression.ConditionAndOr.getValue(ConditionAndOr.java:93)
> ~[h2-1.4.190.jar:1.4.190]
> at
> org.h2.expression.Expression.getBooleanValue(Expression.java:178)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.command.dml.Delete.update(Delete.java:72)
> ~[h2-1.4.190.jar:1.4.190]
> at
> org.h2.command.CommandContainer.update(CommandContainer.java:78)
> ~[h2-1.4.190.jar:1.4.190]
> at org.h2.command.Command.executeUpdate(Command.java:253)
> ~[h2-1.4.190.jar:1.4.190]
> ... 7 common frames omitted
Wenn running the query without 'ORDER BY logging_event.timestmp DESC' it
works.
Export to SQL file fails.
Database URL is:
jdbc:h2:/var/lib/h2/cweb;AUTO_SERVER=TRUE;FILE_LOCK=SOCKET;MVCC=TRUE;AUTO_RECONNECT=TRUE;DB_CLOSE_DELAY=-1;TRACE_LEVEL_FILE=0;DB_CLOSE_ON_EXIT=FALSE;MV_STORE=FALSE"
Environment:
- Debian 5.0.3
- Linux cu 2.6.26 #20 SMP Fri Feb 25 13:26:15 CST 2011 i686 GNU/Linux
- OpenJDK Runtime Environment (build 1.6.0_0-b11)
- Tomcat 6
Thanks and kind regards,
Alex
--
You received this message because you are subscribed to the Google Groups "H2
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.