Hi, You are right, this was a regression, the bug was introduced in version 1.1.119 (at 2009-09-17 to be exact).
Regards, Thomas On Mon, Oct 5, 2009 at 11:26 PM, Thomas Mueller <[email protected]> wrote: > Hi > > Large updates are buffered to disk (to a temporary file). When writing > / reading this file, the internal buffer size was too small sometimes. > This problem is fixed in version 1.2.120 (class RowList). I didn't > notice it was a bug, I fixed it as a side effect of another change in > this class. That's why the problem was not include it in the change > log. I will add it to the change log of version 1.2.120: "Large > updates could throw an ArrayIndexOutOfBoundsException in > RowList.writeRow" > > Regards, > Thomas > > On Sun, Oct 4, 2009 at 12:09 PM, Steve McLeod <[email protected]> wrote: >> >> One more piece of info: >> >> I created a database with the 1.119 jar. I got the exception I >> described in the original post. >> >> I then changed to the 1.118 jar, and using the database created with >> 1.119, I tried to execute the update statement again. It worked. I'm >> quite relieved that the database itself is not corrupted! >> >> Regards, >> >> Steve >> >> >> On Oct 3, 3:31 pm, Steve McLeod <[email protected]> wrote: >>> Some more info: I've been testing whether this problem occurs with >>> 1.118. After deleting, recreating, and repopulating the database 10 >>> times with 1.118, I have not been able to reproduce it. There is a >>> high probability that this is a regression in 1.119... >>> >>> Regards, >>> >>> Steve >>> >>> On Oct 3, 11:46 am, Steve McLeod <[email protected]> wrote: >>> >>> > Hi, >>> >>> > I'm using 1.119, with the following database connection URL: >>> > jdbc:h2:/Users/steve/Library/Application Support/Poker Copilot/ >>> > database/ >>> > pokercopilot;DATABASE_EVENT_LISTENER='com.barbarysoftware.pokercopilot.database.DatabaseListener';MAX_LENGTH_INPLACE_LOB=65536;DB_CLOSE_ON_EXIT=FALSE;COMPRESS_LOB=DEFLATE;LOG=2 >>> >>> > This statement: >>> > update GamePlayerSummary set buyin=20 where tournamentid=20 >>> > throws the following: >>> >>> > org.h2.jdbc.JdbcSQLException: General error: >>> > java.lang.ArrayIndexOutOfBoundsException: 2096; SQL statement: >>> > update GamePlayerSummary set buyin=? where tournamentid=? [50000-119] >>> > at org.h2.message.Message.getSQLException(Message.java:106) >>> > at org.h2.message.Message.convert(Message.java:283) >>> > at org.h2.command.Command.executeUpdate(Command.java:228) >>> > at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal >>> > (JdbcPreparedStatement.java:139) >>> > at org.h2.jdbc.JdbcPreparedStatement.executeUpdate >>> > (JdbcPreparedStatement.java:128) >>> > at org.springframework.jdbc.core.JdbcTemplate >>> > $2.doInPreparedStatement(JdbcTemplate.java:798) >>> > at org.springframework.jdbc.core.JdbcTemplate.execute >>> > (JdbcTemplate.java:591) >>> > at org.springframework.jdbc.core.JdbcTemplate.update >>> > (JdbcTemplate.java:792) >>> > at org.springframework.jdbc.core.JdbcTemplate.update >>> > (JdbcTemplate.java:850) >>> > at org.springframework.jdbc.core.JdbcTemplate.update >>> > (JdbcTemplate.java:858) >>> > at >>> > org.springframework.jdbc.core.simple.SimpleJdbcTemplate.update >>> > (SimpleJdbcTemplate.java:237) >>> > at >>> > com.barbarysoftware.pokercopilot.database.SimpleJdbcTemplateWrapper.update >>> > (SimpleJdbcTemplateWrapper.java:275) >>> > at >>> > com.barbarysoftware.pokercopilot.database.HandAdderer.addTournamentSummary >>> > (HandAdderer.java:179) >>> > at com.barbarysoftware.pokercopilot.parser.TournamentParsedData >>> > $1.run(TournamentParsedData.java:30) >>> > at java.util.concurrent.Executors$RunnableAdapter.call >>> > (Executors.java:441) >>> > at java.util.concurrent.FutureTask$Sync.innerRun >>> > (FutureTask.java:303) >>> > at java.util.concurrent.FutureTask.run(FutureTask.java:138) >>> > at java.util.concurrent.ThreadPoolExecutor$Worker.runTask >>> > (ThreadPoolExecutor.java:886) >>> > at java.util.concurrent.ThreadPoolExecutor$Worker.run >>> > (ThreadPoolExecutor.java:908) >>> > at java.lang.Thread.run(Thread.java:637) >>> > Caused by: java.lang.ArrayIndexOutOfBoundsException: 2096 >>> > at org.h2.store.DataPage.writeInt(DataPage.java:141) >>> > at org.h2.result.RowList.writeRow(RowList.java:62) >>> > at org.h2.result.RowList.writeAllRows(RowList.java:106) >>> > at org.h2.result.RowList.add(RowList.java:137) >>> > at org.h2.command.dml.Update.update(Update.java:118) >>> > at org.h2.command.CommandContainer.update >>> > (CommandContainer.java:72) >>> > at org.h2.command.Command.executeUpdate(Command.java:208) >>> > ... 17 more >>> >>> > buyin and tournamentid are both ints. >>> >>> > This only happens for certain values of tournamentid. If I delete the >>> > database, create it and populate it again, I'll sometimes still have >>> > these problems but for other values of tournamentid. >>> >>> > I can supply my database with this problem, if it helps. It is 31 MB >>> > compressed. >>> >>> > Regards, >>> >>> > Steve McLeod >> >> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "H2 Database" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/h2-database?hl=en -~----------~----~----~----~------~----~------~--~---
