Bug #20919 temp tables closing fails when binlog is off
| Submitted: | 8 Jul 2006 20:09 | Modified: | 30 Aug 2006 19:29 |
|---|---|---|---|
| Reporter: | Andrei Elkin | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server | Severity: | S3 (Non-critical) |
| Version: | 5.0.23 | OS: | Linux (Linux) |
| Assigned to: | Andrei Elkin | CPU Architecture: | Any |
[9 Jul 2006 21:26]
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/8971
[10 Jul 2006 18:53]
Andrei Elkin
Apporved by Mats.
[16 Jul 2006 11:54]
Andrei Elkin
fixed in 5.1.12
[20 Jul 2006 17:51]
Paul DuBois
Noted in 5.1.12 changelog. Closing of temporary tables failed if binary logging was not enabled.
[19 Aug 2006 7:27]
Lars Thalmann
We need exact version (4.1?, 5.0?) this has been pushed to and update of documentation. Setting it back to verified.
[21 Aug 2006 11:08]
Andrei Elkin
Fixed in 4.1.21, 5.0.24a, 5.1.12.
[30 Aug 2006 19:29]
Paul DuBois
Also noted in 4.1.21, 5.0.24a changelogs.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.040 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.
Description: rpl_temporary and some other tests incl rename flush connect binlog_row_mix_innodb_myisam binlog_row_drop_tmp_tbl fails without binlog or RBR (in 5.1) because of wrong iterating, clearing an item of the list before taking 'next' pointer, over thd->temporary_tables in close_temporary_tables. How to repeat: start mysqld 5.0 without binlog mysql -e 'create temporary table t1 (id int); create temporary table t2 (id int)' must be server crash Suggested fix: void close_temporary_tables(THD *thd) { TABLE *table; if (!thd->temporary_tables) return; if (!mysql_bin_log.is_open() || thd->current_stmt_binlog_row_based) { + TABLE *next; - for (table= thd->temporary_tables; table; table= table->next) + for (table= thd->temporary_tables; table; table= next) { + next=table->next; close_temporary(table, 1, 1);