mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Fix for BUG#1345 "SQL Syntax Error in binarylog with DROP TABLES":
it's just backquoting the db's and table's names when writing DROP TEMPORARY TABLE to the binlog when a connection ends. A testcase for this.
This commit is contained in:
11
mysql-test/r/drop_temp_table.result
Normal file
11
mysql-test/r/drop_temp_table.result
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
reset master;
|
||||||
|
create database `drop-temp+table-test`;
|
||||||
|
use `drop-temp+table-test`;
|
||||||
|
create temporary table `table:name` (a int);
|
||||||
|
show binlog events;
|
||||||
|
Log_name Pos Event_type Server_id Orig_log_pos Info
|
||||||
|
master-bin.001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3
|
||||||
|
master-bin.001 79 Query 1 79 use test; create database `drop-temp+table-test`
|
||||||
|
master-bin.001 152 Query 1 152 use drop-temp+table-test; create temporary table `table:name` (a int)
|
||||||
|
master-bin.001 246 Query 1 246 use drop-temp+table-test; DROP /*!40005 TEMPORARY */ TABLE `drop-temp+table-test`.`table:name`
|
||||||
|
drop database `drop-temp+table-test`;
|
13
mysql-test/t/drop_temp_table.test
Normal file
13
mysql-test/t/drop_temp_table.test
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
connect (con1,localhost,root,,);
|
||||||
|
connect (con2,localhost,root,,);
|
||||||
|
connection con1;
|
||||||
|
reset master;
|
||||||
|
create database `drop-temp+table-test`;
|
||||||
|
use `drop-temp+table-test`;
|
||||||
|
create temporary table `table:name` (a int);
|
||||||
|
disconnect con1;
|
||||||
|
connection con2;
|
||||||
|
let $VERSION=`select version()`;
|
||||||
|
--replace_result $VERSION VERSION
|
||||||
|
show binlog events;
|
||||||
|
drop database `drop-temp+table-test`;
|
@@ -561,15 +561,13 @@ void close_temporary_tables(THD *thd)
|
|||||||
{
|
{
|
||||||
// skip temporary tables not created directly by the user
|
// skip temporary tables not created directly by the user
|
||||||
if (table->real_name[0] != '#')
|
if (table->real_name[0] != '#')
|
||||||
{
|
found_user_tables = 1;
|
||||||
/*
|
/*
|
||||||
Here we assume table_cache_key always starts
|
Here we assume table_cache_key always starts
|
||||||
with \0 terminated db name
|
with \0 terminated db name
|
||||||
*/
|
*/
|
||||||
found_user_tables = 1;
|
end = strxmov(end,"`",table->table_cache_key,"`",
|
||||||
}
|
".`",table->real_name,"`,", NullS);
|
||||||
end = strxmov(end,table->table_cache_key,".",
|
|
||||||
table->real_name,",", NullS);
|
|
||||||
}
|
}
|
||||||
next=table->next;
|
next=table->next;
|
||||||
close_temporary(table);
|
close_temporary(table);
|
||||||
|
Reference in New Issue
Block a user