Bug #61434 | PREPAREd statements and TEMPORARY TABLEs in stored PROCEDUREs | ||
---|---|---|---|
Submitted: | 7 Jun 2011 12:25 | Modified: | 20 Jun 2012 15:47 |
Reporter: | Christopher Jung | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Stored Routines | Severity: | S2 (Serious) |
Version: | 5.5.14, 5.5.11 | OS: | Any (Server 2008 R2 64bit, Mac OS X) |
Assigned to: | CPU Architecture: | Any | |
Tags: | prepare, PROCEDURE, stored, table, temporary |
[7 Jun 2011 12:25]
Christopher Jung
[8 Jun 2011 6:35]
Valeriy Kravchuk
Thank you for the problem report. Verified with current mysql-5.5 from bzr on Mac OS X: mysql> delimiter $$ mysql> create PROCEDURE `test`(name1 varchar(20)) -> BEGIN -> DROP TEMPORARY TABLE IF EXISTS TEMP_FilterTable; -> -> SET @q = CONCAT('CREATE TEMPORARY TABLE TEMP_FilterTable(',name1,' TEXT);'); -> SET @i = CONCAT('INSERT INTO TEMP_FilterTable (',name1,') VALUE (''123'');'); -> -> PREPARE q FROM @q; -> EXECUTE q; -> PREPARE i FROM @i; -> EXECUTE i; -> deallocate prepare q; -> deallocate prepare i; -> -> SELECT * FROM TEMP_FilterTable; -> END$$ Query OK, 0 rows affected (0.00 sec) mysql> delimiter ; mysql> CALL test('t1'); +------+ | t1 | +------+ | 123 | +------+ 1 row in set (0.01 sec) Query OK, 0 rows affected (0.01 sec) mysql> CALL test('t2'); ERROR 1054 (42S22): Unknown column 'test.TEMP_FilterTable.t1' in 'field list'
[20 Jun 2012 15:47]
Paul DuBois
Noted in 5.6.6 changelog entry. SELECT * within a stored program could fail for TEMPORARY tables created within the program using prepared statements.
[11 Jul 2012 4:18]
Valeriy Kravchuk
Bug #65869 was marked as a duplicate of this bug.
[9 Oct 2012 16:42]
Yuval Cohen
Note: This happenes not only to temporary tables, but also to non-temporary tables
[9 Nov 2012 8:01]
MySQL Verification Team
Fixed in 5.6.6 and higher.