| Bug #65519 | Temporary tables for ALTER TABLE are not added to thd->temporary_tables | ||
|---|---|---|---|
| Submitted: | 5 Jun 2012 12:55 | Modified: | 8 Jun 2012 15:10 |
| Reporter: | Laurynas Biveinis (OCA) | Email Updates: | |
| Status: | Not a Bug | Impact on me: | |
| Category: | MySQL Server: DDL | Severity: | S3 (Non-critical) |
| Version: | 5.1 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
[5 Jun 2012 13:04]
Laurynas Biveinis
It seems that 5.5 fixed it by revision 2875.107.1 (backport from 6.0 WL#3726 "DDL locking for all metadata objects")
[5 Jun 2012 15:46]
Valeriy Kravchuk
Thank you for the problem report. Verified by code review of current mysql-5.1.
[6 Jun 2012 2:24]
Laurynas Biveinis
On further analysis the fix is more involved than s/0/TRUE: care must be taken to close new_table properly too, and the required changes make this doable but IMHO not worthwhile for 5.1.
[8 Jun 2012 15:10]
Dmitry Lenev
Hello Laurynas! Thank you for bringing up this issue! I have checked the code in ALTER TABLE implementation in 5.1 and was not able to find any problem caused by this call to open_temporary_tables(). So technically there is no bug. So I am closing this report as such. The potential issues caused by this "sloppy" code are addressed by changes in 5.5 in any case.

Description: In mysql_alter_table() the intermediate temporary table new_table is created by new_table=open_temporary_table(thd, path, new_db, tmp_name,0); Note that the last arg 0, that is, the created temp table won't be added to thd->temporary_tables list. The 5.5 code does add this temp table to thd->temporary_tables. How to repeat: Maybe it's possible to construct a test case that relies on the temp table not being present in thd->temporary_tables, but for now this is purely a source code quality bug report. Suggested fix: s/0/TRUE