Bug #27417 | thd->no_trans_update.stmt lost value inside of SF-exec-stack | ||
---|---|---|---|
Submitted: | 24 Mar 2007 14:18 | Modified: | 3 Aug 2007 16:03 |
Reporter: | Andrei Elkin | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Stored Routines | Severity: | S3 (Non-critical) |
Version: | 5.0.38 | OS: | Any |
Assigned to: | Andrei Elkin | CPU Architecture: | Any |
[24 Mar 2007 14:18]
Andrei Elkin
[26 Mar 2007 8:52]
Sveta Smirnova
Thank you for the report. Verified as described: 537 if ((error < 0) || (updated && !transactional_table)) (gdb) (gdb) print thd->no_trans_update $3 = false (gdb)
[27 Mar 2007 9:20]
Sergei Golubchik
The way I understand it, we need another bit in no_trans_upodate: .sub_stmt to be used where no_trans_upodate.stmt is used now.
[9 Apr 2007 16:00]
Andrei Elkin
preliminary version of the patch, apparently does not cover multi- and load data
Attachment: patch_0.diff (text/x-patch), 7.95 KiB.
[15 May 2007 6:40]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/26662 ChangeSet@1.2439, 2007-05-15 09:40:26+03:00, aelkin@dsl-hkibras-fe31f900-164.dhcp.inet.fi +4 -0 Bug #27417 thd->no_trans_update.stmt lost value inside of SF-exec-stack Once had been set the flag might later got reset inside of a stored routine execution stack. The reason was in that there was no check if a new statement started at time of resetting. The artifact affects most of binlogable DML queries. Fixed with checking thd->in_sub_stmt to know precisely about the new statement. Couple of minor issues refined along the fix, see per-file comments. Test is delayed till related bug#13270, bug#23333.
[6 Jun 2007 13:56]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/28205 ChangeSet@1.2439, 2007-06-06 16:55:00+03:00, aelkin@dsl-hkibras1-ff5dc300-70.dhcp.inet.fi +9 -0 Bug #27417 thd->no_trans_update.stmt lost value inside of SF-exec-stack Once had been set the flag might later got reset inside of a stored routine execution stack. The reason was in that there was no check if a new statement started at time of resetting. The artifact affects most of binlogable DML queries. Notice, that multi-update is wrapped up within bug#27716 fix. Fixed with introducing Sub_statement_state::no_trans_update_stmt flag durable within substatement life time. At the end of substatement the gained value contributes to thd->no_trans_update.stmt so that on the bottom line are: 1. Eventually thd->no_trans_update.stmt will be propagated out of the last substatement as the union of values worked out in all sub-statements - fixed bug#27417 2. Inside of any sub-statement thd->no_trans_update.stmt corresponds to the value yielded at the sub-statement to satisfy THD::really_abort_on_warnin() concern to get the status of the current substatement. The supplied test verifies limitely, mostly asserts. The ultimate testing is defered for bug_13270, bug_23333.
[12 Jun 2007 17:34]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/28589 ChangeSet@1.2439, 2007-06-12 20:32:28+03:00, aelkin@dsl-hkibras1-ff5dc300-70.dhcp.inet.fi +12 -0 Bug #27417 thd->no_trans_update.stmt lost value inside of SF-exec-stack Once had been set the flag might later got reset inside of a stored routine execution stack. The reason was in that there was no check if a new statement started at time of resetting. The artifact affects most of binlogable DML queries. Notice, that multi-update is wrapped up within bug#27716 fix. Fixed with introducing Sub_statement_state::no_trans_update_stmt flag durable within substatement life time and the new member to thd->no_trans_update. At the end of a substatement the gained value contributes to the new thd->no_trans_update.top so that the following properties are held: 1. Eventually thd->no_trans_update.top will be computed as the union of values of .stmt gained in all invoked sub-statements. That fixes this bug#27417; 2. Inside of any sub-statement thd->no_trans_update.stmt corresponds to the value yielded at the sub-statement to satisfy THD::really_abort_on_warnin() concern to get the status of the current substatement. The supplied test verifies limitely, mostly asserts. The ultimate testing is defered for bug_13270, bug_23333. Computing of thd->no_trans_update.all is refined to base to .stmt value for all the case including insert .. select statement which before the patch had an extra issue bug#28960.
[21 Jun 2007 20:12]
Bugs System
Pushed into 5.0.46
[21 Jun 2007 20:15]
Bugs System
Pushed into 5.1.20-beta
[26 Jun 2007 15:22]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/29620 ChangeSet@1.2439, 2007-06-26 18:21:52+03:00, aelkin@dsl-hkibras1-ff5dc300-70.dhcp.inet.fi +18 -0 Bug #27417 thd->no_trans_update.stmt lost value inside of SF-exec-stack Once had been set the flag might later got reset inside of a stored routine execution stack. The reason was in that there was no check if a new statement started at time of resetting. The artifact affects most of binlogable DML queries. Notice, that multi-update is wrapped up within
[26 Jun 2007 18:36]
Konstantin Osipov
Approved by email with cosmetic comments.
[13 Jul 2007 10:42]
Andrei Elkin
there can be dependent of this bugs like bug#29769. Todo: to notify them when this one will be pushed.
[20 Jul 2007 12:03]
Andrei Elkin
Related Bug #29480 will need verification after this 27417 bug's fix is pushed.
[20 Jul 2007 15:33]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/31249 ChangeSet@1.2439, 2007-07-20 18:30:53+03:00, aelkin@koti.dsl.inet.fi +18 -0 Bug #27417 thd->no_trans_update.stmt lost value inside of SF-exec-stack Once had been set the flag might later got reset inside of a stored routine execution stack. The reason was in that there was no check if a new statement started at time of resetting. The artifact affects most of binlogable DML queries. Notice, that multi-update is wrapped up within
[20 Jul 2007 15:49]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/31255 ChangeSet@1.2439, 2007-07-20 18:48:58+03:00, aelkin@koti.dsl.inet.fi +20 -0 Bug #27417 thd->no_trans_update.stmt lost value inside of SF-exec-stack Once had been set the flag might later got reset inside of a stored routine execution stack. The reason was in that there was no check if a new statement started at time of resetting. The artifact affects most of binlogable DML queries. Notice, that multi-update is wrapped up within
[20 Jul 2007 15:52]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/31256 ChangeSet@1.2439, 2007-07-20 18:52:03+03:00, aelkin@koti.dsl.inet.fi +16 -0 Bug #27417 thd->no_trans_update.stmt lost value inside of SF-exec-stack Once had been set the flag might later got reset inside of a stored routine execution stack. The reason was in that there was no check if a new statement started at time of resetting. The artifact affects most of binlogable DML queries. Notice, that multi-update is wrapped up within
[20 Jul 2007 15:54]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/31259 ChangeSet@1.2439, 2007-07-20 18:54:08+03:00, aelkin@koti.dsl.inet.fi +20 -0 Bug #27417 thd->no_trans_update.stmt lost value inside of SF-exec-stack Once had been set the flag might later got reset inside of a stored routine execution stack. The reason was in that there was no check if a new statement started at time of resetting. The artifact affects most of binlogable DML queries. Notice, that multi-update is wrapped up within
[20 Jul 2007 16:01]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/31262 ChangeSet@1.2439, 2007-07-20 19:00:54+03:00, aelkin@koti.dsl.inet.fi +16 -0 Bug #27417 thd->no_trans_update.stmt lost value inside of SF-exec-stack Once had been set the flag might later got reset inside of a stored routine execution stack. The reason was in that there was no check if a new statement started at time of resetting. The artifact affects most of binlogable DML queries. Notice, that multi-update is wrapped up within
[20 Jul 2007 16:48]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/31271 ChangeSet@1.2439, 2007-07-20 19:48:10+03:00, aelkin@koti.dsl.inet.fi +16 -0 Bug #27417 thd->no_trans_update.stmt lost value inside of SF-exec-stack Once had been set the flag might later got reset inside of a stored routine execution stack. The reason was in that there was no check if a new statement started at time of resetting. The artifact affects most of binlogable DML queries. Notice, that multi-update is wrapped up within
[30 Jul 2007 15:27]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/31827 ChangeSet@1.2491, 2007-07-30 18:27:36+03:00, gkodinov@magare.gmz +16 -0 (pushing for Andrei) Bug #27417 thd->no_trans_update.stmt lost value inside of SF-exec-stack Once had been set the flag might later got reset inside of a stored routine execution stack. The reason was in that there was no check if a new statement started at time of resetting. The artifact affects most of binlogable DML queries. Notice, that multi-update is wrapped up within
[31 Jul 2007 15:33]
Georgi Kodinov
Bug #29769 marked as a duplicate of this one
[2 Aug 2007 19:12]
Bugs System
Pushed into 5.1.21-beta
[2 Aug 2007 19:15]
Bugs System
Pushed into 5.0.48
[3 Aug 2007 16:00]
Konstantin Osipov
An error that happened inside INSERT/UPDATE/DELETE statement performed from a stored function or trigger could cause inconsistency between master and slave.
[3 Aug 2007 16:03]
Paul DuBois
Noted in 5.0.48, 5.1.21 changelogs.
[22 Aug 2007 7:40]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/32855 ChangeSet@1.2497, 2007-08-22 10:40:38+03:00, aelkin@dsl-hkibras-fe38f900-157.dhcp.inet.fi +2 -0 bug#27417 refining of cleanup of the tests.
[16 Sep 2007 16:16]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/34324 ChangeSet@1.2574, 2007-09-16 18:16:40+02:00, aelkin@dl145j.mysql.com +3 -0 Merge: bug#27417,23333 manual work for fixing tests and a source code.
[27 Nov 2007 10:48]
Bugs System
Pushed into 5.0.54
[27 Nov 2007 10:50]
Bugs System
Pushed into 5.1.23-rc
[27 Nov 2007 10:52]
Bugs System
Pushed into 6.0.4-alpha