Rollbacked inserts remain permanently in table
Bug #315564 reported by
Philip Stoev
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
PBXT |
Fix Released
|
Undecided
|
Vladimir Kolesnikov |
Bug Description
When executing a concurrent workload, records that were inserted in a transaction that was subsequently rollbacked remain permanently visible in the table. Even after REPAIR TABLE, the records are still there. This is different from any other transaction isolation issues where the table is temporarily inconsistent -- for this bug, the inconsistency is permanent.
A test case will be uploaded shortly.
Related branches
Changed in pbxt: | |
status: | Confirmed → In Progress |
Changed in pbxt: | |
status: | In Progress → Fix Committed |
Changed in pbxt: | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
To run, please branch the Random Query Generator from and then execute:
$ perl runall.pl \ /build/ bzr/mysql- 6.0 \ --plugin- dir=/build/ bzr/pbxt/ src/.libs/ \ --plugin- load=PBXT= libpbxt. so \ conf/transactio ns.zz \ DatabaseConsist ency \ --loose- lock-wait- timeout= 1 \ --log-output= file
--mem \
--queries=1000000 \
--duration=300 \
--basedir=
--mysqld=
--mysqld=
--engine=PBXT \
--grammar=bug315564.yy \
--gendata=
--validator=
--mysqld=
--mysqld=
This will start a random workload containing UPDATE and INSERT statements. Shortly after takeoff, the test will complain that the average of all integers in the table has diverged from the desired. This is because NULL values have appeared in the table, even though the SQL grammar specifies that every INSERT of NULLs should be followed by a ROLLBACK. You can verify in the query log that this is indeed the case.