Hi,
Thanks a lot for reporting the bug, and the excellent patch! And sorry for
the delay. The patch (plus a test case) will be applied in the next release.
Regards,
Thomas
On Tuesday, May 22, 2012, teruo wrote:
> Hi
> I changed the way to fix this.
>
> Using undo log and rollback method seems more simple.
> I just added undo log index and rollback method if it catches
> DbException.
> I really appreciate if anyone has comments on this.
>
>
> public void updateRows(Prepared prepared, Session session, RowList
> rows) {
> // ADD MAY 21,2012
> int rollback = session.getUndoLogPos();
> // ADD MAY 21,2012
> // remove the old rows
> int rowScanCount = 0;
> for (rows.reset(); rows.hasNext();) {
> if ((++rowScanCount & 127) == 0) {
> prepared.checkCanceled();
> }
> Row o = rows.next();
> rows.next();
> removeRow(session, o);
> session.log(this, UndoLogRecord.DELETE, o);
> }
> // add the new rows
> for (rows.reset(); rows.hasNext();) {
> if ((++rowScanCount & 127) == 0) {
> prepared.checkCanceled();
> }
> rows.next();
> Row n = rows.next();
> // <==ADD MAY 21,2012
> try {
> // ==>ADD MAY 21,2012
> addRow(session, n);
> // <==ADD MAY 21,2012
> } catch (DbException e) {
> if (e.getErrorCode() ==
> ErrorCode.CONCURRENT_UPDATE_1) {
> session.rollbackTo(rollback, false);
> }
> throw e;
> }
> // ==>ADD MAY 21,2012
> session.log(this, UndoLogRecord.INSERT, n);
> }
> }
>
> Thanks!
>
> --
> 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]<javascript:;>
> .
> To unsubscribe from this group, send email to
> [email protected] <javascript:;>.
> 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.