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.

Reply via email to