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]
MySQL Verification Team
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]
MySQL Verification Team
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]
MySQL Verification Team
not a regression. see the "Version" list that I tested.
[8 Mar 2010 8:07]
MySQL Verification Team
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.