Hi, I'm sorry I can't't create a testcase. The error behaves differently every time. I have to correct from the my last post, that it runs fine on the first round. I now always get an error on my first run. I delete the old database files, start the db server and already then an error occurs when I let my program run for the first time. Up to now I have seen four different kinds of error. All caused by this same procedure. The error messages are in the attached link.
I tried some different settings but I think the most interessting one is that I don't get any error when my program runs in single thread mode. That means it only issues one query at a time but the database is started with the MULTI_THREADED=1 option. Here you can find the exceptions and some information how the workflow in my program is operating: https://docs.google.com/leaf?id=0B3y7SvKpZ6GsZmVhNzBjNDItYjdjOC00ZGE1LTk5NWItZTBjOWNkY2I4MmZl&hl=en&authkey=CNSp6v8G I hope my report is of any use Best regards Stefan On Aug 27, 11:13 am, Thomas Mueller <[email protected]> wrote: > Hi, > > From the exception it looks like it's trying to convert a CLOB to a > BINARY, which is weird. Do you get the same error when you disable > MULTI_THREADED? If it's really this problem, then I would like to fix > the problem. Could you send me a test case so I can reproduce it? If > not could you describe in detail what your application does (from a > technical side)? > > Regards, > Thomas > > On Thu, Aug 26, 2010 at 3:43 PM, Stefan <[email protected]> wrote: > > Hello group, > > > I'm running the latest version 1.2.141 in MULTI_THREADED=1 mode. I'm > > executing some queries in parallel and everything seems to work. After > > that I rerun the former queries and then I got some of these > > exceptions: > > > org.h2.jdbc.JdbcSQLException: Hexadecimal string with odd number of > > characters: "http://www.informatik.uni-ulm.de/ki/aboxbench/semintec/ > > semintec.owl#MaleSex"; SQL statement: > > INSERT INTO propertyDomain_d0 (property, domain, sourceId1, > > sourceTable1, sourceId2, sourceTable2) > > SELECT dom.property, sc.super, MIN(dom.id) AS sourceId1, > > 'propertyDomain' AS sourceTable, MIN(sc.id) AS sourceId2, 'subClass' > > AS sourceTable > > FROM propertyDomain AS dom > > INNER JOIN subClass AS sc ON sc.sub = dom.domain > > WHERE NOT EXISTS ( > > SELECT property, domain > > FROM propertyDomain_d0 AS bottom > > WHERE bottom.property = dom.property AND bottom.domain = > > sc.super > > ) > > GROUP BY dom.property, sc.super [90003-141] > > at org.h2.message.DbException.getJdbcSQLException(DbException.java: > > 327) > > at org.h2.message.DbException.get(DbException.java:167) > > at org.h2.message.DbException.get(DbException.java:144) > > at org.h2.util.StringUtils.convertStringToBytes(StringUtils.java:953) > > at org.h2.value.Value.convertTo(Value.java:760) > > at org.h2.value.ValueLob.convertTo(ValueLob.java:428) > > at org.h2.table.Table.compareTypeSave(Table.java:970) > > at org.h2.index.BaseIndex.compareValues(BaseIndex.java:297) > > at org.h2.index.BaseIndex.compareRows(BaseIndex.java:245) > > at org.h2.index.PageBtree.find(PageBtree.java:117) > > at org.h2.index.PageBtreeNode.find(PageBtreeNode.java:277) > > at org.h2.index.PageBtreeIndex.find(PageBtreeIndex.java:172) > > at org.h2.index.PageBtreeIndex.find(PageBtreeIndex.java:163) > > at org.h2.index.IndexCursor.find(IndexCursor.java:138) > > at org.h2.table.TableFilter.next(TableFilter.java:309) > > at org.h2.table.TableFilter.next(TableFilter.java:379) > > at org.h2.command.dml.Select.queryGroup(Select.java:307) > > at org.h2.command.dml.Select.queryWithoutCache(Select.java:574) > > at org.h2.command.dml.Query.query(Query.java:241) > > at org.h2.command.dml.Insert.insertRows(Insert.java:127) > > at org.h2.command.dml.Insert.update(Insert.java:82) > > at org.h2.command.CommandContainer.update(CommandContainer.java:70) > > at org.h2.command.Command.executeUpdate(Command.java:199) > > at org.h2.server.TcpServerThread.process(TcpServerThread.java:301) > > at org.h2.server.TcpServerThread.run(TcpServerThread.java:138) > > at java.lang.Thread.run(Thread.java:619) > > > at org.h2.engine.SessionRemote.done(SessionRemote.java:489) > > at org.h2.command.CommandRemote.executeUpdate(CommandRemote.java:184) > > at > > org.h2.jdbc.JdbcStatement.executeUpdateInternal(JdbcStatement.java: > > 124) > > at org.h2.jdbc.JdbcStatement.executeUpdate(JdbcStatement.java:109) > > at > > de.derivo.u2r3.rules.ApplicationRule.applyCollective(ApplicationRule.java: > > 34) > > at de.derivo.u2r3.rules.Rule.apply(Rule.java:71) > > at de.derivo.u2r3.util.RuleAction.apply(RuleAction.java:48) > > at de.derivo.u2r3.util.RuleAction.run(RuleAction.java:107) > > 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:619) > > > After that I restart the database. Sometimes a new run works, > > sometimes I then get the following exception: > > > org.h2.jdbc.JdbcSQLException: File corrupted while reading record: > > "type: 1". Possible solution: use the recovery tool; SQL statement: > > INSERT INTO classAssertionEnt_d0 (entity, colClass, sourceId1, > > sourceTable1, sourceId2, sourceTable2) > > SELECT ass.subject, dom.Domain, MIN(ass.id) AS sourceId1, > > 'objectPropertyAssertion' AS sourceTable1, MIN(dom.id) AS sourceId2, > > 'propertyDomain' AS sourceTable2 > > FROM objectPropertyAssertion AS ass > > INNER JOIN propertyDomain AS dom > > ON ass.Property = dom.Property > > WHERE NOT EXISTS ( > > SELECT entity, colClass > > FROM classAssertionEnt_d0 AS bottom > > WHERE bottom.entity = ass.subject AND bottom.colClass = > > dom.domain > > ) > > GROUP BY ass.subject, dom.Domain [90030-141] > > at org.h2.message.DbException.getJdbcSQLException(DbException.java: > > 327) > > at org.h2.message.DbException.get(DbException.java:167) > > at org.h2.message.DbException.get(DbException.java:144) > > at org.h2.store.Data.readValue(Data.java:767) > > at org.h2.index.PageDataIndex.readRow(PageDataIndex.java:411) > > at org.h2.index.PageDataLeaf.getRowAt(PageDataLeaf.java:322) > > at org.h2.index.PageDataLeaf.getRow(PageDataLeaf.java:435) > > at org.h2.index.PageDataNode.getRow(PageDataNode.java:270) > > at org.h2.index.PageDataNode.getRow(PageDataNode.java:270) > > at org.h2.index.PageDataIndex.getRow(PageDataIndex.java:394) > > at org.h2.index.PageDataIndex.getRow(PageDataIndex.java:383) > > at org.h2.table.RegularTable.getRow(RegularTable.java:104) > > at org.h2.index.PageBtreeIndex.getRow(PageBtreeIndex.java:288) > > at org.h2.index.PageBtreeCursor.get(PageBtreeCursor.java:45) > > at org.h2.index.IndexCursor.get(IndexCursor.java:209) > > at org.h2.table.TableFilter.getValue(TableFilter.java:824) > > at org.h2.expression.ExpressionColumn.getValue(ExpressionColumn.java: > > 167) > > at org.h2.index.IndexCondition.getCurrentValue(IndexCondition.java: > > 120) > > at org.h2.index.IndexCursor.find(IndexCursor.java:99) > > at org.h2.table.TableFilter.next(TableFilter.java:309) > > at org.h2.command.dml.Select.queryFlat(Select.java:492) > > at org.h2.command.dml.Select.queryWithoutCache(Select.java:579) > > at org.h2.command.dml.Query.query(Query.java:241) > > at org.h2.expression.ConditionExists.getValue(ConditionExists.java: > > 30) > > at org.h2.expression.ConditionNot.getValue(ConditionNot.java:31) > > at org.h2.expression.ConditionAndOr.getValue(ConditionAndOr.java:90) > > at org.h2.expression.Expression.getBooleanValue(Expression.java:185) > > at org.h2.command.dml.Select.queryGroup(Select.java:309) > > at org.h2.command.dml.Select.queryWithoutCache(Select.java:574) > > at org.h2.command.dml.Query.query(Query.java:241) > > at org.h2.command.dml.Insert.insertRows(Insert.java:127) > > at org.h2.command.dml.Insert.update(Insert.java:82) > > at org.h2.command.CommandContainer.update(CommandContainer.java:70) > > at org.h2.command.Command.executeUpdate(Command.java:199) > > at org.h2.server.TcpServerThread.process(TcpServerThread.java:301) > > at org.h2.server.TcpServerThread.run(TcpServerThread.java:138) > > at java.lang.Thread.run(Thread.java:619) > > > at org.h2.engine.SessionRemote.done(SessionRemote.java:489) > > at org.h2.command.CommandRemote.executeUpdate(CommandRemote.java:184) > > at > > org.h2.jdbc.JdbcStatement.executeUpdateInternal(JdbcStatement.java: > > 124) > > at org.h2.jdbc.JdbcStatement.executeUpdate(JdbcStatement.java:109) > > at > > de.derivo.u2r3.rules.ApplicationRule.applyCollective(ApplicationRule.java: > > 34) > > at de.derivo.u2r3.rules.Rule.apply(Rule.java:71) > > at de.derivo.u2r3.util.RuleAction.apply(RuleAction.java:48) > > at de.derivo.u2r3.util.RuleAction.run(RuleAction.java:107) > > 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:619) > > > How do I have to interpret the exceptions? How can I test to get more > > specific errors? > > > Sincerely > > Stefan > > > -- > > 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 > > athttp://groups.google.com/group/h2-database?hl=en. -- 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.
