Bug #13729 | Stored procedures: packet error after exception handled | ||
---|---|---|---|
Submitted: | 4 Oct 2005 0:49 | Modified: | 30 Nov 2005 17:58 |
Reporter: | Peter Gulutzan | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Stored Routines | Severity: | S2 (Serious) |
Version: | 5.0.15-rc-debug | OS: | Linux (SUSE 9.2) |
Assigned to: | Per-Erik Martin | CPU Architecture: | Any |
[4 Oct 2005 0:49]
Peter Gulutzan
[4 Oct 2005 15:18]
Valeriy Kravchuk
Can't repeat on today's 5.0.15-BK build (ChangeSet@1.2009, 2005-10-04 04:03:48+02:00, kent@mysql.com) on Fedora Core 1 as described: mysql> delimiter // mysql> create table t32 (s1 int, primary key (s1))// Query OK, 0 rows affected (0.01 sec) mysql> insert into t32 values (1),(2)// Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> create procedure p32 () begin declare continue handler for sqlexception -> select 55; update t32 set s1 = 1; end// Query OK, 0 rows affected (0.03 sec) mysql> call p32()// +----+ | 55 | +----+ | 55 | +----+ 1 row in set (0.00 sec) mysql> drop procedure p32// Query OK, 0 rows affected (0.00 sec) mysql> select * from t32// +----+ | s1 | +----+ | 1 | | 2 | +----+ 2 rows in set (0.00 sec) mysql> create procedure p32 () begin declare continue handler for sqlexception -> select 55; update t32 set s1 = 1; end// Query OK, 0 rows affected (0.00 sec) mysql> call p32()// +----+ | 55 | +----+ | 55 | +----+ 1 row in set (0.00 sec) mysql> drop procedure p32// Query OK, 0 rows affected (0.00 sec) mysql> select version(); -> // +-----------+ | version() | +-----------+ | 5.0.15-rc | +-----------+ 1 row in set (0.00 sec) What I am missing? --with-debug option for build?
[6 Oct 2005 21:26]
Peter Gulutzan
I can repeat the error, using mysqld built today (2005-10-06) with BUILD/compile-pentium-debug and starting mysqld with mysqld --user=root --skip-networking
[7 Oct 2005 2:41]
MySQL Verification Team
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 5.0.15-rc-debug Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> delimiter // mysql> create table t32 (s1 int, primary key (s1))// Query OK, 0 rows affected (0.03 sec) mysql> insert into t32 values (1),(2)// Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> create procedure p32 () begin declare continue handler for sqlexception -> select 55; update t32 set s1 = 1; end// Query OK, 0 rows affected (0.00 sec) mysql> call p32()// +----+ | 55 | +----+ | 55 | +----+ 1 row in set (0.01 sec) mysql> drop procedure p32// Packets out of order (Found: 6, expected 1) ERROR 2013 (HY000): Lost connection to MySQL server during query mysql>
[7 Oct 2005 16:00]
Per-Erik Martin
The handler/SP things are working ok, but something goes wrong in the update statement when an error occurs - it seems packages are sent even if it should have been aborted... (Using an "insert" that generates the same exception works for instance.)
[21 Oct 2005 11:00]
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/internals/31285
[18 Nov 2005 14:31]
Konstantin Osipov
As discussed on IRC, we need a patch that makes sure that thd->is_fatal_error is not set on DUPLICATE KEY. This bug should be fixed in a manner that terminates SP execution if thd->is_fatal_error is set.
[23 Nov 2005 11:02]
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/internals/32589
[24 Nov 2005 19:32]
Per-Erik Martin
Pushed to 5.0.17 bk.
[30 Nov 2005 17:58]
Paul DuBois
Noted in 5.0.17 changelog.