Bug #51650 crash with user variables and triggers
| Submitted: | 2 Mar 2010 17:15 | Modified: | 19 Jun 2010 0:21 |
|---|---|---|---|
| Reporter: | Shane Bester (Platinum Quality Contributor) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Stored Routines | Severity: | S1 (Critical) |
| Version: | 5.0.22, 5.0.30, 5.0.90, 5.1.30, 5.1.45, 5.5.99-m3 | OS: | Any |
| Assigned to: | Davi Arnaut | CPU Architecture: | Any |
| Tags: | crash, valgrind | ||
[2 Mar 2010 17:15]
Shane Bester
[2 Mar 2010 19:05]
Valeriy Kravchuk
Verified just as described with test case from customer.
[2 Mar 2010 19:05]
Shane Bester
run mysqld under valgrind if a crash does not happen, as a corrupt pointer might not always cause a crash: Invalid read of size 4 at: Item_field::replace_equal_field(unsigned char*) (item_cmpfunc.h:1593) by: Item_func::transform(item_func.cc:275) <cut>
[2 Mar 2010 20:15]
Shane Bester
public testcase. paste into mysql client: drop table if exists `t1`; create table `t1` (`b` varchar(50) not null) engine=myisam default charset=latin1; drop table if exists `t2`; create table `t2` (`a` varchar(10) not null default '') engine=myisam default charset=latin1; delimiter ;; create trigger `on_i_to_t2` after insert on `t2` for each row begin select 1 from t1 c where (@uservar is null or @uservar != c.b) and c.b=new.a limit 1 into @a; end ;; delimiter ; set @uservar=1; insert ignore into `t2` values(); \r insert ignore into `t1` set `b`='666'; insert ignore into `t2` set `a`='111'; set @uservar=1; insert ignore into `t2` set `a`='666';
[3 Mar 2010 7:40]
Shane Bester
not a regression. see the "Version" list that I tested.
[8 Mar 2010 8:07]
Shane Bester
a workaround could be to disable the table cache by setting table_open_cache=0
[9 Mar 2010 15:36]
Davi Arnaut
It seems that equality propagation (a destructive modification) is not being properly undone at the end of the stored program (eg trigger), leading to problems upon re-execution. Patch will follow shortly.
[9 Mar 2010 17:18]
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/102762 3379 Davi Arnaut 2010-03-09 Bug#51650: crash with user variables and triggers The problem was that bits of the destructive equality propagation optimization weren't being undone after the execution of a stored program. Modifications to the parse tree that are based on transient properties must be undone to enable the re-execution of stored programs. The solution is to cleanup any references to predicates generated by the equality propagation during the execution of a stored program. @ mysql-test/r/trigger.result Add test case result for Bug#51650. @ mysql-test/t/trigger.test Add test case for Bug#51650. @ sql/item.cc Remove reference to a equality predicate.
[9 Mar 2010 21:55]
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/102784 3381 Davi Arnaut 2010-03-09 Bug#51650: crash with user variables and triggers The problem was that bits of the destructive equality propagation optimization weren't being undone after the execution of a stored program. Modifications to the parse tree that are based on transient properties must be undone to enable the re-execution of stored programs. The solution is to cleanup any references to predicates generated by the equality propagation during the execution of a stored program. @ mysql-test/r/trigger.result Add test case result for Bug#51650. @ mysql-test/t/trigger.test Add test case for Bug#51650. @ sql/item.cc Remove reference to a equality predicate.
[9 Mar 2010 21:55]
Davi Arnaut
Queued to mysql-5.1-bugteam
[26 Mar 2010 8:21]
Bugs System
Pushed into 5.5.4-m3 (revid:alik@sun.com-20100326080914-2pz8ns984e0spu03) (version source revid:alexey.kopytov@sun.com-20100312095153-t4rtoqc7p96lmxvh) (merge vers: 5.5.3-m2) (pib:16)
[26 Mar 2010 8:25]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100326081116-m3v4l34yhr43mtsv) (version source revid:alik@sun.com-20100325072612-4sds00ix8ajo1e84) (pib:16)
[26 Mar 2010 8:30]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20100326081944-qja07qklw1p2w7jb) (version source revid:alik@sun.com-20100325073410-4t4i9gu2u1pge7xb) (merge vers: 6.0.14-alpha) (pib:16)
[6 Apr 2010 8:00]
Bugs System
Pushed into 5.1.46 (revid:sergey.glukhov@sun.com-20100405111026-7kz1p8qlzglqgfmu) (version source revid:davi.arnaut@sun.com-20100309215508-9lyhyjyy3uifj0u5) (merge vers: 5.1.45) (pib:16)
[18 Apr 2010 22:25]
Paul DuBois
Noted in 5.1.46, 5.5.5, 6.0.14 changelogs.
A problem with equality propagation optimization for prepared
statements and stored procedures caused a server crash upon
re-execution of the prepared statement or stored procedure.
See also Bug#8115, Bug#8849.
[17 Jun 2010 11:52]
Bugs System
Pushed into 5.1.47-ndb-7.0.16 (revid:martin.skold@mysql.com-20100617114014-bva0dy24yyd67697) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[17 Jun 2010 12:30]
Bugs System
Pushed into 5.1.47-ndb-6.2.19 (revid:martin.skold@mysql.com-20100617115448-idrbic6gbki37h1c) (version source revid:martin.skold@mysql.com-20100609211156-tsac5qhw951miwtt) (merge vers: 5.1.46-ndb-6.2.19) (pib:16)
[17 Jun 2010 13:18]
Bugs System
Pushed into 5.1.47-ndb-6.3.35 (revid:martin.skold@mysql.com-20100617114611-61aqbb52j752y116) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[25 Feb 2011 4:28]
Valeriy Kravchuk
Bug #60242 was marked as a duplicate of this one.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.061 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.