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 at > http://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.
