openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Albert Lee (JIRA)" <j...@apache.org>
Subject [jira] Updated: (OPENJPA-530) Statement batching incorrectly re-arranged order of SQL statements organized by update managers
Date Mon, 03 Mar 2008 01:40:50 GMT

     [ https://issues.apache.org/jira/browse/OPENJPA-530?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Albert Lee updated OPENJPA-530:
-------------------------------

    Attachment: OPENJPA-530.patch

Reworked the batching processing and still maintain the order of statements dispatched by
update manager using these rules:

1) When a row is requested to be executed, it is saved in a cache and associated to the sql
string.
2) Any subsequent requests of the same sql statement continue to append to the cache.
3) If a request is different than the one currently in cache, the current cache is dispatched
to the jdbc driver first and the current request is processed as in step 1).
4) When the cache is processed, normal preparedStatement.executeUpdate() is used to dispatch
a single request. If there are more than one element in the batch, preparedStatement.addBatch()/executeBatch()
is used to dispatch the requests.

Albert Lee.

> Statement batching incorrectly re-arranged order of SQL statements organized by update
managers
> -----------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-530
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-530
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc
>    Affects Versions: 1.1.0
>            Reporter: Albert Lee
>            Assignee: Albert Lee
>             Fix For: 1.1.0
>
>         Attachments: OPENJPA-530.patch
>
>
> BatchingPreparedStatementManagerImpl implements the core SQL statement execution function
of the Statement Batching features. 
> The current implementation of this class holds a cache that maps SQL prepared statements
to a collection of parameters of batched requests for that prepared statement. When update
manager finishes batching its requests, BatchingPreparedStatementManagerImpl.flush() method
is called to submit the batch elements in the cache to the jdbc driver.
> Essentially, this implementation discards all the ordering of statements being dispatched
to the statement batching function by the update manager. This caused improper order of SQL
statements to be sent to the data store. As a result, the underlying database may throw exception
indicates the unexpected data condition. E.g. 
> com.ibm.db2.jcc.b.SqlException: Error for batch element #2: DB2 SQL error: SQLCODE: -530,
SQLSTATE: 23503, SQLERRMC: LEEALBER.EMPBEAN.SQL080226132752530
> SQL0530N: The insert or update value of the FOREIGN KEY constraint-name is not equal
to any value of the parent key of the parent table. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message