Bug #27937 stored procedure + union + rand = crashed server
| Submitted: | 18 Apr 2007 21:07 | Modified: | 7 Jun 2007 16:47 |
|---|---|---|---|
| Reporter: | Scott Noyes (Basic Quality Contributor) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server | Severity: | S3 (Non-critical) |
| Version: | 5.0 - 5.1.17, 4.1 | OS: | Any |
| Assigned to: | Igor Babaev | CPU Architecture: | Any |
| Tags: | crash, qc, stored procedure, UNION | ||
[18 Apr 2007 21:07]
Scott Noyes
[18 Apr 2007 21:15]
Scott Noyes
Note that the same SELECT statement outside of a stored procedure does not crash, nor does the stored procedure crash if the statement inside is any of these: SELECT 1 ORDER BY rand(); (SELECT 1) UNION (SELECT 2); (SELECT 1) UNION (SELECT 2) ORDER BY 1;
[18 Apr 2007 21:48]
Giuseppe Maxia
Thanks for this bug report. Verified as described on 5.0.42 and 5.1.18 on Linux and Mac OS X.
[6 May 2007 20:45]
Shane Bester
mysqld-debug.exe!st_select_lex_unit::init_prepare_fake_select_lex mysqld-debug.exe!st_select_lex_unit::exec mysqld-debug.exe!mysql_union mysqld-debug.exe!handle_select mysqld-debug.exe!mysql_execute_command mysqld-debug.exe!sp_instr_stmt::exec_core mysqld-debug.exe!sp_lex_keeper::reset_lex_and_exec_core mysqld-debug.exe!sp_instr_stmt::execute mysqld-debug.exe!sp_head::execute mysqld-debug.exe!sp_head::execute_procedure mysqld-debug.exe!mysql_execute_command mysqld-debug.exe!mysql_parse mysqld-debug.exe!dispatch_command mysqld-debug.exe!do_command mysqld-debug.exe!handle_one_connection mysqld-debug.exe!pthread_start mysqld-debug.exe!_callthreadstart mysqld-debug.exe!_threadstart
[13 May 2007 4:23]
Igor Babaev
This problem can be demonstrated for 4.1 with a prepared statement:
mysql> SELECT VERSION();
+--------------+
| VERSION() |
+--------------+
| 4.1.23-debug |
+--------------+
1 row in set (0.00 sec)
mysql> CREATE TABLE t1(a int);
Query OK, 0 rows affected (0.07 sec)
mysql> INSERT INTO t1 VALUES (2), (3), (1);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> PREPARE st1 FROM
-> '(SELECT a FROM t1) UNION (SELECT a+10 FROM t1) ORDER BY RAND()';
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> EXECUTE st1;
+------+
| a |
+------+
| 1 |
| 11 |
| 13 |
| 2 |
| 3 |
| 12 |
+------+
6 rows in set (0.00 sec)
mysql> EXECUTE st1;
ERROR 2013 (HY000): Lost connection to MySQL server during query
On the server side we have:
Version: '4.1.23-debug' socket: '/tmp/mysql.sock' port: 3306 Source distribution
[New Thread -1273451616 (LWP 12291)]
Program received signal SIGSEGV, Segmentation fault.
[13 May 2007 7:10]
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/26556 ChangeSet@1.2655, 2007-05-12 22:58:23-07:00, igor@olga.mysql.com +3 -0 Fixed bug #27937: crash for the the second execution of a prepared statement from a UNION query with ORDER BY an expression containing RAND(). The crash happened because the global order by list in the union query was not re-initialized for the second execution. (Local order by lists were re-initialized though).
[14 May 2007 23:39]
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/26650 ChangeSet@1.2655, 2007-05-14 16:41:09-07:00, igor@olga.mysql.com +3 -0 Fixed bug #27937: crash for the the second execution of a prepared statement from a UNION query with ORDER BY an expression containing RAND(). The crash happened because the global order by list in the union query was not re-initialized for execution. (Local order by lists were re-initialized though).
[20 May 2007 17:10]
Bugs System
Pushed into 4.1.23
[20 May 2007 17:11]
Bugs System
Pushed into 5.0.44
[20 May 2007 17:12]
Bugs System
Pushed into 5.1.19-beta
[7 Jun 2007 16:47]
Jon Stephens
Thank you for your bug report. This issue has already been fixed in the latest released version of that product, which you can download at http://www.mysql.com/downloads/ Documented bugfix in 4.1.23, 5.0.44, and 5.1.19 changelogs.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.046 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.