db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kristian Waagan (JIRA)" <j...@apache.org>
Subject [jira] [Created] (DERBY-5823) Multi-row insert fails on table without generated keys with RETURN_GENERATED_KEYS
Date Wed, 20 Jun 2012 12:11:42 GMT
Kristian Waagan created DERBY-5823:
--------------------------------------

             Summary: Multi-row insert fails on table without generated keys with RETURN_GENERATED_KEYS
                 Key: DERBY-5823
                 URL: https://issues.apache.org/jira/browse/DERBY-5823
             Project: Derby
          Issue Type: Bug
          Components: JDBC
    Affects Versions: 10.8.2.2, 10.7.1.1, 10.9.1.0, 10.10.0.0
            Reporter: Kristian Waagan
            Priority: Minor


Exeuting an insert that results in multiple rows being inserted into a table without any generated
keys defined fails if the JDBC statement is configured to return generated keys. Example stack
trace:

Caused by: ERROR XSCH4: Conglomerate could not be created.
        at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:268)
        at org.apache.derby.impl.store.access.heap.Heap.create(Heap.java:296)
        at org.apache.derby.impl.store.access.heap.HeapConglomerateFactory.createConglomerate(HeapConglomerateFactory.java:206)
        at org.apache.derby.impl.store.access.RAMTransaction.createConglomerate(RAMTransaction.java:820)
        at org.apache.derby.impl.sql.execute.TemporaryRowHolderImpl.insert(TemporaryRowHolderImpl.java:302)
        at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:1007)
        at org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:508)
        at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:443)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:324)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1242)
        ... 30 more

This happens only with multi-row inserts, and only with the embedded driver (the client driver
uses IDENTITY_VAL_LOCAL).
The problem is that Derby tries to create a temporary conglomerate with a zero-length row
template. A guard against this scenario is probably missing.

FYI, the transition threshold (from in-memory to on-disk) is currently five rows.
I marked versions back to 10.7 as affected, but this bug probably goes back all the way.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message