UPDATE fails to match all rows in a transactional scenario
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
PBXT |
Fix Committed
|
Undecided
|
Vladimir Kolesnikov |
Bug Description
When executing a test for transactional consistency, an UPDATE statement fails to match all matching rows in the table.
The test is based on the textbook example for testing transactions with a bank and bank accounts - a table is populated with known records, then certain queries which move integers (dollars) around are executed and the total sum of all integers in the table is constantly checked for deviations from the desired value.
How to repeat:
bzr branch lp:~randgen/randgen/main
$ perl runall.pl \
--basedir=
--engine=PBXT \
--gendata=
--grammar=
--mysqld=
--mysqld=
--validator=
--queries=100000 \
--reporter=
--threads=10
This will populate a table and proceed to run zero-sum queries against the table. PBXT will complain that savepoints are not supported, however this does not impact the rest of the test. The test will soon fail with :
# 15:11:12 Bad checksum table: table10_
This statement updated 1 row instead of 2, even though there are two rows that match the WHERE predicate and ORDER BY is used to ensure deadlock-free operation.
Since Falcon exhibits a similar bug, I would be very interested to know if this is a known and legitimate behavior for MVCC engines.
Related branches
- PBXT Core: Pending requested
- Diff: None lines
Changed in pbxt: | |
status: | New → Confirmed |
Changed in pbxt: | |
status: | Confirmed → In Progress |
Changed in pbxt: | |
assignee: | nobody → vkolesnikov |
Changed in pbxt: | |
status: | In Progress → Fix Committed |