summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '21000_all_sql-5.2.12.patch')
-rw-r--r--21000_all_sql-5.2.12.patch3234
1 files changed, 0 insertions, 3234 deletions
diff --git a/21000_all_sql-5.2.12.patch b/21000_all_sql-5.2.12.patch
deleted file mode 100644
index fcbac0c..0000000
--- a/21000_all_sql-5.2.12.patch
+++ /dev/null
@@ -1,3234 +0,0 @@
-=== modified file 'client/mysqlbinlog.cc'
---- client/mysqlbinlog.cc 2011-11-24 16:48:58 +0000
-+++ client/mysqlbinlog.cc 2012-08-24 10:32:46 +0000
-@@ -664,7 +664,7 @@
- return;
-
- // In case of rewrite rule print USE statement for db_to
-- fprintf(result_file, "use %s%s\n", db_to, pinfo->delimiter);
-+ my_fprintf(result_file, "use %`s%s\n", db_to, pinfo->delimiter);
-
- // Copy the *original* db to pinfo to suppress emiting
- // of USE stmts by log_event print-functions.
-
-=== modified file 'include/my_sys.h'
---- include/my_sys.h 2011-11-24 16:48:58 +0000
-+++ include/my_sys.h 2012-08-24 10:32:46 +0000
-@@ -676,6 +676,7 @@
- extern FILE *my_fdopen(File Filedes,const char *name, int Flags,myf MyFlags);
- extern FILE *my_freopen(const char *path, const char *mode, FILE *stream);
- extern int my_fclose(FILE *fd,myf MyFlags);
-+extern int my_fprintf(FILE *stream, const char* format, ...);
- extern int my_chsize(File fd,my_off_t newlength, int filler, myf MyFlags);
- extern int my_chmod(const char *name, mode_t mode, myf my_flags);
- extern int my_sync(File fd, myf my_flags);
-@@ -811,6 +812,8 @@
- extern void my_b_seek(IO_CACHE *info,my_off_t pos);
- extern size_t my_b_gets(IO_CACHE *info, char *to, size_t max_length);
- extern my_off_t my_b_filelength(IO_CACHE *info);
-+extern size_t my_b_write_backtick_quote(IO_CACHE *info, const char *str,
-+ size_t len);
- extern size_t my_b_printf(IO_CACHE *info, const char* fmt, ...);
- extern size_t my_b_vprintf(IO_CACHE *info, const char* fmt, va_list ap);
- extern int init_strvar_from_file(char *var, int max_size, IO_CACHE *f,
-
-=== modified file 'mysql-test/r/func_compress.result'
---- mysql-test/r/func_compress.result 2009-06-19 09:29:21 +0000
-+++ mysql-test/r/func_compress.result 2012-08-24 08:06:16 +0000
-@@ -11,7 +11,7 @@
- id select_type table type possible_keys key key_len ref rows filtered Extra
- 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
- Warnings:
--Note 1003 select uncompress(compress((@test_compress_string))) AS `uncompress(compress(@test_compress_string))`
-+Note 1003 select uncompress(compress((@`test_compress_string`))) AS `uncompress(compress(@test_compress_string))`
- select uncompressed_length(compress(@test_compress_string))=length(@test_compress_string);
- uncompressed_length(compress(@test_compress_string))=length(@test_compress_string)
- 1
-@@ -19,7 +19,7 @@
- id select_type table type possible_keys key key_len ref rows filtered Extra
- 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
- Warnings:
--Note 1003 select (uncompressed_length(compress((@test_compress_string))) = length((@test_compress_string))) AS `uncompressed_length(compress(@test_compress_string))=length(@test_compress_string)`
-+Note 1003 select (uncompressed_length(compress((@`test_compress_string`))) = length((@`test_compress_string`))) AS `uncompressed_length(compress(@test_compress_string))=length(@test_compress_string)`
- select uncompressed_length(compress(@test_compress_string));
- uncompressed_length(compress(@test_compress_string))
- 117
-
-=== modified file 'mysql-test/r/mysqlbinlog-innodb.result'
---- mysql-test/r/mysqlbinlog-innodb.result 2011-01-13 12:28:36 +0000
-+++ mysql-test/r/mysqlbinlog-innodb.result 2012-08-24 10:32:46 +0000
-@@ -34,7 +34,7 @@
- SET @@session.collation_database=DEFAULT/*!*/;
- BEGIN
- /*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- INSERT INTO t1 VALUES (1)
- /*!*/;
-@@ -65,7 +65,7 @@
- SET @@session.collation_database=DEFAULT/*!*/;
- BEGIN
- /*!*/;
--use foo/*!*/;
-+use `foo`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- INSERT INTO t1 VALUES (1)
- /*!*/;
-
-=== modified file 'mysql-test/r/mysqlbinlog.result'
---- mysql-test/r/mysqlbinlog.result 2011-03-25 14:16:13 +0000
-+++ mysql-test/r/mysqlbinlog.result 2012-08-24 08:06:16 +0000
-@@ -18,7 +18,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -64,7 +64,7 @@
- /*!40019 SET @@session.max_insert_delayed_threads=0*/;
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -97,7 +97,7 @@
- /*!40019 SET @@session.max_insert_delayed_threads=0*/;
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -119,7 +119,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -165,7 +165,7 @@
- /*!40019 SET @@session.max_insert_delayed_threads=0*/;
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -198,7 +198,7 @@
- /*!40019 SET @@session.max_insert_delayed_threads=0*/;
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -220,7 +220,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1108844556/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
-@@ -239,7 +239,7 @@
- /*!40019 SET @@session.max_insert_delayed_threads=0*/;
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1108844556/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
-@@ -299,7 +299,7 @@
- /*!40019 SET @@session.max_insert_delayed_threads=0*/;
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -349,7 +349,7 @@
- /*!40019 SET @@session.max_insert_delayed_threads=0*/;
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -484,7 +484,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1253783037/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -581,22 +581,22 @@
- SET @@session.collation_database=DEFAULT/*!*/;
- BEGIN
- /*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1266652094/*!*/;
- SavePoint mixed_cases
- /*!*/;
--use db1/*!*/;
-+use `db1`/*!*/;
- SET TIMESTAMP=1266652094/*!*/;
- INSERT INTO db1.t2 VALUES("in savepoint mixed_cases")
- /*!*/;
- SET TIMESTAMP=1266652094/*!*/;
- INSERT INTO db1.t1 VALUES(40)
- /*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1266652094/*!*/;
- ROLLBACK TO mixed_cases
- /*!*/;
--use db1/*!*/;
-+use `db1`/*!*/;
- SET TIMESTAMP=1266652094/*!*/;
- INSERT INTO db1.t2 VALUES("after rollback to")
- /*!*/;
-@@ -624,7 +624,7 @@
- SET @@session.collation_database=DEFAULT/*!*/;
- BEGIN
- /*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1266652094/*!*/;
- SavePoint mixed_cases
- /*!*/;
-
-=== modified file 'mysql-test/r/mysqlbinlog2.result'
---- mysql-test/r/mysqlbinlog2.result 2008-04-02 09:49:22 +0000
-+++ mysql-test/r/mysqlbinlog2.result 2012-08-24 08:06:16 +0000
-@@ -19,7 +19,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -62,7 +62,7 @@
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
- SET INSERT_ID=1/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -101,7 +101,7 @@
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
- SET INSERT_ID=4/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609946/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -127,7 +127,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -162,7 +162,7 @@
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
- SET INSERT_ID=4/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609946/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -185,7 +185,7 @@
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
- SET INSERT_ID=3/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609944/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -215,7 +215,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -246,7 +246,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -281,7 +281,7 @@
- DELIMITER ;
- DELIMITER /*!*/;
- SET INSERT_ID=6/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609943/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -304,7 +304,7 @@
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
- SET INSERT_ID=1/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -335,7 +335,7 @@
- DELIMITER ;
- DELIMITER /*!*/;
- SET INSERT_ID=6/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609943/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -358,7 +358,7 @@
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
- SET INSERT_ID=4/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609946/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -377,7 +377,7 @@
- DELIMITER ;
- DELIMITER /*!*/;
- SET INSERT_ID=6/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609943/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -399,7 +399,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -445,7 +445,7 @@
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
- SET INSERT_ID=3/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609944/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -468,7 +468,7 @@
- DELIMITER ;
- DELIMITER /*!*/;
- SET INSERT_ID=6/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609943/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -490,7 +490,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -520,7 +520,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -563,7 +563,7 @@
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
- SET INSERT_ID=1/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -601,7 +601,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- SET INSERT_ID=4/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609946/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -627,7 +627,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -661,7 +661,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- SET INSERT_ID=4/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609946/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -684,7 +684,7 @@
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
- SET INSERT_ID=3/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609944/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -714,7 +714,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -744,7 +744,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -779,7 +779,7 @@
- DELIMITER ;
- DELIMITER /*!*/;
- SET INSERT_ID=6/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609943/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -802,7 +802,7 @@
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
- SET INSERT_ID=1/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -833,7 +833,7 @@
- DELIMITER ;
- DELIMITER /*!*/;
- SET INSERT_ID=6/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609943/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -855,7 +855,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- SET INSERT_ID=4/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609946/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -874,7 +874,7 @@
- DELIMITER ;
- DELIMITER /*!*/;
- SET INSERT_ID=6/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609943/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -896,7 +896,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -942,7 +942,7 @@
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
- SET INSERT_ID=3/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609944/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -965,7 +965,7 @@
- DELIMITER ;
- DELIMITER /*!*/;
- SET INSERT_ID=6/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609943/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -987,7 +987,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -1017,7 +1017,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1579609942/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-
-=== modified file 'mysql-test/r/mysqlbinlog_row.result'
---- mysql-test/r/mysqlbinlog_row.result 2008-09-06 04:49:43 +0000
-+++ mysql-test/r/mysqlbinlog_row.result 2012-08-24 08:06:16 +0000
-@@ -336,7 +336,7 @@
- ROLLBACK/*!*/;
- # at #
- #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=#/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-
-=== modified file 'mysql-test/r/mysqlbinlog_row_innodb.result'
---- mysql-test/r/mysqlbinlog_row_innodb.result 2010-03-22 12:10:18 +0000
-+++ mysql-test/r/mysqlbinlog_row_innodb.result 2012-08-24 08:06:16 +0000
-@@ -2253,7 +2253,7 @@
- ROLLBACK/*!*/;
- # at #
- #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=#/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -3876,7 +3876,7 @@
- ROLLBACK/*!*/;
- # at #
- #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=#/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -4243,7 +4243,7 @@
- ROLLBACK/*!*/;
- # at #
- #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=#/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -4804,7 +4804,7 @@
- ROLLBACK/*!*/;
- # at #
- #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=#/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-
-=== modified file 'mysql-test/r/mysqlbinlog_row_myisam.result'
---- mysql-test/r/mysqlbinlog_row_myisam.result 2008-09-06 04:49:43 +0000
-+++ mysql-test/r/mysqlbinlog_row_myisam.result 2012-08-24 08:06:16 +0000
-@@ -2253,7 +2253,7 @@
- ROLLBACK/*!*/;
- # at #
- #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=#/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -3898,7 +3898,7 @@
- ROLLBACK/*!*/;
- # at #
- #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=#/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -4271,7 +4271,7 @@
- ROLLBACK/*!*/;
- # at #
- #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=#/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -4842,7 +4842,7 @@
- ROLLBACK/*!*/;
- # at #
- #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=#/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-
-=== modified file 'mysql-test/r/mysqlbinlog_row_trans.result'
---- mysql-test/r/mysqlbinlog_row_trans.result 2009-08-27 09:32:27 +0000
-+++ mysql-test/r/mysqlbinlog_row_trans.result 2012-08-24 08:06:16 +0000
-@@ -132,7 +132,7 @@
- ROLLBACK/*!*/;
- # at #
- #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=#/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-
-=== modified file 'mysql-test/r/user_var-binlog.result'
---- mysql-test/r/user_var-binlog.result 2008-04-02 09:49:22 +0000
-+++ mysql-test/r/user_var-binlog.result 2012-08-24 08:06:16 +0000
-@@ -19,7 +19,7 @@
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
- SET @`a b`:=_latin1 0x68656C6C6F COLLATE `latin1_swedish_ci`/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=10000/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-
-=== modified file 'mysql-test/r/variables.result'
---- mysql-test/r/variables.result 2011-09-13 15:46:47 +0000
-+++ mysql-test/r/variables.result 2012-08-24 10:32:46 +0000
-@@ -77,7 +77,7 @@
- id select_type table type possible_keys key key_len ref rows filtered Extra
- 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
- Warnings:
--Note 1003 select (@t1:=((@t2:=1) + (@t3:=4))) AS `@t1:=(@t2:=1)+@t3:=4`,(@t1) AS `@t1`,(@t2) AS `@t2`,(@t3) AS `@t3`
-+Note 1003 select (@t1:=((@t2:=1) + (@t3:=4))) AS `@t1:=(@t2:=1)+@t3:=4`,(@`t1`) AS `@t1`,(@`t2`) AS `@t2`,(@`t3`) AS `@t3`
- select @t5;
- @t5
- 1.23456
-
-=== modified file 'mysql-test/suite/binlog/r/binlog_base64_flag.result'
---- mysql-test/suite/binlog/r/binlog_base64_flag.result 2011-02-23 09:31:37 +0000
-+++ mysql-test/suite/binlog/r/binlog_base64_flag.result 2012-08-24 08:06:16 +0000
-@@ -35,7 +35,7 @@
- # at 4
- <#>ROLLBACK/*!*/;
- # at 102
--<#>use test/*!*/;
-+<#>use `test`/*!*/;
- SET TIMESTAMP=1196959712/*!*/;
- <#>SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
- SET @@session.sql_mode=0/*!*/;
-
-=== modified file 'mysql-test/suite/binlog/r/binlog_row_mysqlbinlog_options.result'
---- mysql-test/suite/binlog/r/binlog_row_mysqlbinlog_options.result 2011-01-13 12:28:36 +0000
-+++ mysql-test/suite/binlog/r/binlog_row_mysqlbinlog_options.result 2012-08-24 10:32:46 +0000
-@@ -35,7 +35,7 @@
- #010909 4:46:40 server id # end_log_pos # Start: binlog v 4, server v #.##.## created 010909 4:46:40 at startup
- ROLLBACK/*!*/;
- # at #
--use new_test1/*!*/;
-+use `new_test1`/*!*/;
- #010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=#/*!*/;
-@@ -72,7 +72,7 @@
- /*!*/;
- # at #
- #010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0
--use test2/*!*/;
-+use `test2`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- CREATE TABLE t2 (a INT)
- /*!*/;
-@@ -115,7 +115,7 @@
- COMMIT
- /*!*/;
- # at #
--use new_test3/*!*/;
-+use `new_test3`/*!*/;
- #010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0
- SET TIMESTAMP=1000000000/*!*/;
- CREATE TABLE t3 (a INT)
-@@ -229,7 +229,7 @@
- #010909 4:46:40 server id # end_log_pos # Start: binlog v 4, server v #.##.## created 010909 4:46:40 at startup
- ROLLBACK/*!*/;
- # at #
--use new_test1/*!*/;
-+use `new_test1`/*!*/;
- #010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=#/*!*/;
-@@ -266,7 +266,7 @@
- /*!*/;
- # at #
- #010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0
--use test2/*!*/;
-+use `test2`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- CREATE TABLE t2 (a INT)
- /*!*/;
-@@ -309,7 +309,7 @@
- COMMIT
- /*!*/;
- # at #
--use new_test3/*!*/;
-+use `new_test3`/*!*/;
- #010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0
- SET TIMESTAMP=1000000000/*!*/;
- CREATE TABLE t3 (a INT)
-
-=== modified file 'mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result'
---- mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result 2008-10-23 19:27:09 +0000
-+++ mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result 2012-08-24 08:06:16 +0000
-@@ -13,7 +13,7 @@
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
- SET @`v`:=_ucs2 0x006100620063 COLLATE `ucs2_general_ci`/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=10000/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-
-=== modified file 'mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result'
---- mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result 2010-09-02 13:05:06 +0000
-+++ mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result 2012-08-24 08:06:16 +0000
-@@ -631,7 +631,7 @@
- master-bin.000001 # Intvar # # INSERT_ID=10
- master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
- master-bin.000001 # Intvar # # INSERT_ID=10
--master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE `t4` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`, @b) SET `b`=((@b) + `bug27417`(2)) ;file_id=#
-+master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE `t4` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`, @`b`) SET `b`=((@`b`) + `bug27417`(2)) ;file_id=#
- master-bin.000001 # Query # # ROLLBACK
- /* the output must denote there is the query */;
- drop trigger trg_del_t2;
-@@ -869,7 +869,7 @@
- master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
- master-bin.000001 # Intvar # # INSERT_ID=10
- master-bin.000001 # User var # # @`b`=_latin1 0x3135 COLLATE latin1_swedish_ci
--master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE `t4` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`, @b) SET `b`=((@b) + `bug27417`(2)) ;file_id=#
-+master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE `t4` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`, @`b`) SET `b`=((@`b`) + `bug27417`(2)) ;file_id=#
- master-bin.000001 # Query # # ROLLBACK
- drop trigger trg_del_t2;
- drop table t1,t2,t3,t4,t5;
-
-=== added file 'mysql-test/suite/rpl/r/rpl_mdev382.result'
---- mysql-test/suite/rpl/r/rpl_mdev382.result 1970-01-01 00:00:00 +0000
-+++ mysql-test/suite/rpl/r/rpl_mdev382.result 2012-08-24 10:32:46 +0000
-@@ -0,0 +1,302 @@
-+include/master-slave.inc
-+[connection master]
-+create table t1 (a int primary key) engine=innodb;
-+create table t2 (a int primary key) engine=myisam;
-+begin;
-+insert into t1 values (1);
-+SET sql_mode = 'ANSI_QUOTES';
-+savepoint `a``; create database couldbebadthingshere; savepoint ``dummy`;
-+insert into t1 values (2);
-+insert into t2 values (1);
-+SET sql_mode = '';
-+rollback to savepoint `a``; create database couldbebadthingshere; savepoint ``dummy`;
-+Warnings:
-+Warning 1196 Some non-transactional changed tables couldn't be rolled back
-+insert into t1 values (3);
-+commit;
-+show binlog events from <binlog_start>;
-+Log_name Pos Event_type Server_id End_log_pos Info
-+master-bin.000001 # Query # # use `test`; create table t1 (a int primary key) engine=innodb
-+master-bin.000001 # Query # # use `test`; create table t2 (a int primary key) engine=myisam
-+master-bin.000001 # Query # # BEGIN
-+master-bin.000001 # Query # # use `test`; insert into t1 values (1)
-+master-bin.000001 # Query # # SAVEPOINT "a`; create database couldbebadthingshere; savepoint `dummy"
-+master-bin.000001 # Query # # use `test`; insert into t1 values (2)
-+master-bin.000001 # Query # # use `test`; insert into t2 values (1)
-+master-bin.000001 # Query # # ROLLBACK TO `a``; create database couldbebadthingshere; savepoint ``dummy`
-+master-bin.000001 # Query # # use `test`; insert into t1 values (3)
-+master-bin.000001 # Xid # # COMMIT /* XID */
-+BEGIN;
-+insert into t1 values(10);
-+set sql_mode = 'ANSI_QUOTES';
-+set sql_quote_show_create = 1;
-+savepoint a;
-+insert into t1 values(11);
-+savepoint "a""a";
-+insert into t1 values(12);
-+set sql_quote_show_create = 0;
-+savepoint b;
-+insert into t1 values(13);
-+savepoint "b""b";
-+insert into t1 values(14);
-+set sql_mode = '';
-+set sql_quote_show_create = 1;
-+savepoint c;
-+insert into t1 values(15);
-+savepoint `c``c`;
-+insert into t1 values(16);
-+set sql_quote_show_create = 0;
-+savepoint d;
-+insert into t1 values(17);
-+savepoint `d``d`;
-+insert into t1 values(18);
-+COMMIT;
-+set sql_quote_show_create = 1;
-+show binlog events from <binlog_start>;
-+Log_name Pos Event_type Server_id End_log_pos Info
-+master-bin.000001 # Query # # BEGIN
-+master-bin.000001 # Query # # use `test`; insert into t1 values(10)
-+master-bin.000001 # Query # # SAVEPOINT "a"
-+master-bin.000001 # Query # # use `test`; insert into t1 values(11)
-+master-bin.000001 # Query # # SAVEPOINT "a""a"
-+master-bin.000001 # Query # # use `test`; insert into t1 values(12)
-+master-bin.000001 # Query # # SAVEPOINT b
-+master-bin.000001 # Query # # use `test`; insert into t1 values(13)
-+master-bin.000001 # Query # # SAVEPOINT "b""b"
-+master-bin.000001 # Query # # use `test`; insert into t1 values(14)
-+master-bin.000001 # Query # # SAVEPOINT `c`
-+master-bin.000001 # Query # # use `test`; insert into t1 values(15)
-+master-bin.000001 # Query # # SAVEPOINT `c``c`
-+master-bin.000001 # Query # # use `test`; insert into t1 values(16)
-+master-bin.000001 # Query # # SAVEPOINT d
-+master-bin.000001 # Query # # use `test`; insert into t1 values(17)
-+master-bin.000001 # Query # # SAVEPOINT `d``d`
-+master-bin.000001 # Query # # use `test`; insert into t1 values(18)
-+master-bin.000001 # Xid # # COMMIT /* XID */
-+*** Test correct USE statement in SHOW BINLOG EVENTS ***
-+set sql_mode = 'ANSI_QUOTES';
-+CREATE DATABASE "db1`; SELECT 'oops!'";
-+use "db1`; SELECT 'oops!'";
-+CREATE TABLE t1 (a INT PRIMARY KEY) engine=MyISAM;
-+INSERT INTO t1 VALUES (1);
-+set sql_mode = '';
-+INSERT INTO t1 VALUES (2);
-+set sql_mode = 'ANSI_QUOTES';
-+show binlog events from <binlog_start>;
-+Log_name Pos Event_type Server_id End_log_pos Info
-+master-bin.000001 # Query # # CREATE DATABASE "db1`; SELECT 'oops!'"
-+master-bin.000001 # Query # # use "db1`; SELECT 'oops!'"; CREATE TABLE t1 (a INT PRIMARY KEY) engine=MyISAM
-+master-bin.000001 # Query # # use "db1`; SELECT 'oops!'"; INSERT INTO t1 VALUES (1)
-+master-bin.000001 # Query # # use "db1`; SELECT 'oops!'"; INSERT INTO t1 VALUES (2)
-+set sql_mode = '';
-+set sql_quote_show_create = 0;
-+show binlog events from <binlog_start>;
-+Log_name Pos Event_type Server_id End_log_pos Info
-+master-bin.000001 # Query # # CREATE DATABASE "db1`; SELECT 'oops!'"
-+master-bin.000001 # Query # # use `db1``; SELECT 'oops!'`; CREATE TABLE t1 (a INT PRIMARY KEY) engine=MyISAM
-+master-bin.000001 # Query # # use `db1``; SELECT 'oops!'`; INSERT INTO t1 VALUES (1)
-+master-bin.000001 # Query # # use `db1``; SELECT 'oops!'`; INSERT INTO t1 VALUES (2)
-+set sql_quote_show_create = 1;
-+show binlog events from <binlog_start>;
-+Log_name Pos Event_type Server_id End_log_pos Info
-+master-bin.000001 # Query # # CREATE DATABASE "db1`; SELECT 'oops!'"
-+master-bin.000001 # Query # # use `db1``; SELECT 'oops!'`; CREATE TABLE t1 (a INT PRIMARY KEY) engine=MyISAM
-+master-bin.000001 # Query # # use `db1``; SELECT 'oops!'`; INSERT INTO t1 VALUES (1)
-+master-bin.000001 # Query # # use `db1``; SELECT 'oops!'`; INSERT INTO t1 VALUES (2)
-+DROP TABLE t1;
-+use test;
-+***Test LOAD DATA INFILE with various identifiers that need correct quoting ***
-+use `db1``; SELECT 'oops!'`;
-+set timestamp=1000000000;
-+CREATE TABLE `t``1` (`a``1` VARCHAR(4) PRIMARY KEY, `b``2` VARCHAR(3),
-+`c``3` VARCHAR(7));
-+LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/f''le.txt' INTO TABLE `t``1`
-+ FIELDS TERMINATED BY ',' ESCAPED BY '\\' ENCLOSED BY ''''
-+ LINES TERMINATED BY '\n'
-+ (`a``1`, @`b```) SET `b``2` = @`b```, `c``3` = concat('|', "b""a'z", "!");
-+SELECT * FROM `t``1`;
-+a`1 b`2 c`3
-+fo\o bar |b"a'z!
-+truncate `t``1`;
-+use test;
-+LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/f''le.txt'
-+ INTO TABLE `db1``; SELECT 'oops!'`.`t``1`
-+ FIELDS TERMINATED BY ',' ESCAPED BY '\\' ENCLOSED BY ''''
-+ LINES TERMINATED BY '\n'
-+ (`a``1`, `b``2`) SET `c``3` = concat('|', "b""a'z", "!");
-+SELECT * FROM `db1``; SELECT 'oops!'`.`t``1`;
-+a`1 b`2 c`3
-+fo\o bar |b"a'z!
-+show binlog events from <binlog_start>;
-+Log_name Pos Event_type Server_id End_log_pos Info
-+master-bin.000001 # Query # # use `db1``; SELECT 'oops!'`; CREATE TABLE `t``1` (`a``1` VARCHAR(4) PRIMARY KEY, `b``2` VARCHAR(3),
-+`c``3` VARCHAR(7))
-+master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
-+master-bin.000001 # Execute_load_query # # use `db1``; SELECT 'oops!'`; LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/f\'le.txt' INTO TABLE `t``1` FIELDS TERMINATED BY ',' ENCLOSED BY '\'' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a``1`, @`b```) SET `b``2`=(@`b```), `c``3`=concat('|','b"a\'z','!') ;file_id=#
-+master-bin.000001 # Query # # use `db1``; SELECT 'oops!'`; truncate `t``1`
-+master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
-+master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/f\'le.txt' INTO TABLE `db1``; SELECT 'oops!'`.`t``1` FIELDS TERMINATED BY ',' ENCLOSED BY '\'' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a``1`, `b``2`) SET `c``3`=concat('|','b"a\'z','!') ;file_id=#
-+/*!40019 SET @@session.max_insert_delayed_threads=0*/;
-+/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
-+DELIMITER /*!*/;
-+ROLLBACK/*!*/;
-+use `db1``; SELECT 'oops!'`/*!*/;
-+SET TIMESTAMP=1000000000/*!*/;
-+SET @@session.pseudo_thread_id=999999999/*!*/;
-+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-+SET @@session.sql_mode=0/*!*/;
-+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
-+/*!\C latin1 *//*!*/;
-+SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
-+SET @@session.lc_time_names=0/*!*/;
-+SET @@session.collation_database=DEFAULT/*!*/;
-+CREATE TABLE `t``1` (`a``1` VARCHAR(4) PRIMARY KEY, `b``2` VARCHAR(3),
-+`c``3` VARCHAR(7))
-+/*!*/;
-+SET TIMESTAMP=1000000000/*!*/;
-+LOAD DATA LOCAL INFILE '<name>' INTO TABLE `t``1` FIELDS TERMINATED BY ',' ENCLOSED BY '\'' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a``1`, @`b```) SET `b``2`=(@`b```), `c``3`=concat('|','b"a\'z','!')
-+/*!*/;
-+SET TIMESTAMP=1000000000/*!*/;
-+truncate `t``1`
-+/*!*/;
-+use `test`/*!*/;
-+SET TIMESTAMP=1000000000/*!*/;
-+LOAD DATA LOCAL INFILE '<name>' INTO TABLE `db1``; SELECT 'oops!'`.`t``1` FIELDS TERMINATED BY ',' ENCLOSED BY '\'' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a``1`, `b``2`) SET `c``3`=concat('|','b"a\'z','!')
-+/*!*/;
-+DELIMITER ;
-+# End of log file
-+ROLLBACK /* added by mysqlbinlog */;
-+/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
-+SELECT * FROM `db1``; SELECT 'oops!'`.`t``1`;
-+a`1 b`2 c`3
-+fo\o bar |b"a'z!
-+DROP TABLE `db1``; SELECT 'oops!'`.`t``1`;
-+drop table t1,t2;
-+*** Test truncation of long SET expression in LOAD DATA ***
-+CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(1000));
-+LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/file.txt' INTO TABLE t1
-+FIELDS TERMINATED BY ','
-+ (a, @b) SET b = CONCAT(@b, '| 123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J123456789K123456789L123456789M123456789N123456789O123456789P123456789Q123456789R123456789123456789T123456789U123456789V123456789W123456789X123456789Y123456789Z123456789|', @b);
-+SELECT * FROM t1 ORDER BY a;
-+a b
-+1 X| 123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J123456789K123456789L123456789M123456789N123456789O123456789P123456789Q123456789R123456789123456789T123456789U123456789V123456789W123456789X123456789Y123456789Z123456789|X
-+2 A| 123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J123456789K123456789L123456789M123456789N123456789O123456789P123456789Q123456789R123456789123456789T123456789U123456789V123456789W123456789X123456789Y123456789Z123456789|A
-+show binlog events from <binlog_start>;
-+Log_name Pos Event_type Server_id End_log_pos Info
-+master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
-+master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/file.txt' INTO TABLE `t1` FIELDS TERMINATED BY ',' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`, @`b`) SET `b`=concat((@`b`),'| 123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J123456789K123456789L123456789M123456789N123456789O123456789P123456789Q123456789R123456789123456789T123456789U123456789V123456789W123456789X123456789Y123456789Z123456789|',(@`b`)) ;file_id=#
-+SELECT * FROM t1 ORDER BY a;
-+a b
-+1 X| 123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J123456789K123456789L123456789M123456789N123456789O123456789P123456789Q123456789R123456789123456789T123456789U123456789V123456789W123456789X123456789Y123456789Z123456789|X
-+2 A| 123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J123456789K123456789L123456789M123456789N123456789O123456789P123456789Q123456789R123456789123456789T123456789U123456789V123456789W123456789X123456789Y123456789Z123456789|A
-+DROP TABLE t1;
-+*** Test user variables whose names require correct quoting ***
-+use `db1``; SELECT 'oops!'`;
-+CREATE TABLE t1 (a1 BIGINT PRIMARY KEY, a2 BIGINT, a3 BIGINT, a4 BIGINT UNSIGNED, b DOUBLE, c DECIMAL(65,10), d VARCHAR(100));
-+INSERT INTO t1 VALUES (-9223372036854775808,42,9223372036854775807,18446744073709551615,-1234560123456789e110, -1234501234567890123456789012345678901234567890123456789.0123456789, REPEAT("x", 100));
-+SELECT @`a``1`:=a1, @`a``2`:=a2, @`a``3`:=a3, @`a``4`:=a4, @`b```:=b, @```c`:=c, @```d```:=d FROM t1;
-+@`a``1`:=a1 @`a``2`:=a2 @`a``3`:=a3 @`a``4`:=a4 @`b```:=b @```c`:=c @```d```:=d
-+-9223372036854775808 42 9223372036854775807 18446744073709551615 -1.23456012345679e+125 -1234501234567890123456789012345678901234567890123456789.0123456789 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-+INSERT INTO t1 VALUES (@`a``1`+1, @`a``2`*100, @`a``3`-1, @`a``4`-1, @`b```/2, @```c`, substr(@```d```, 2, 98));
-+show binlog events from <binlog_start>;
-+Log_name Pos Event_type Server_id End_log_pos Info
-+master-bin.000001 # Query # # use `db1``; SELECT 'oops!'`; CREATE TABLE t1 (a1 BIGINT PRIMARY KEY, a2 BIGINT, a3 BIGINT, a4 BIGINT UNSIGNED, b DOUBLE, c DECIMAL(65,10), d VARCHAR(100))
-+master-bin.000001 # Query # # use `db1``; SELECT 'oops!'`; INSERT INTO t1 VALUES (-9223372036854775808,42,9223372036854775807,18446744073709551615,-1234560123456789e110, -1234501234567890123456789012345678901234567890123456789.0123456789, REPEAT("x", 100))
-+master-bin.000001 # User var # # @`a``1`=-9223372036854775808
-+master-bin.000001 # User var # # @`a``2`=42
-+master-bin.000001 # User var # # @`a``3`=9223372036854775807
-+master-bin.000001 # User var # # @`a``4`=-1
-+master-bin.000001 # User var # # @`b```=-1.2345601234568e+125
-+master-bin.000001 # User var # # @```c`=-1234501234567890123456789012345678901234567890123456789.0123456789
-+master-bin.000001 # User var # # @```d```=_latin1 0x78787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878 COLLATE latin1_swedish_ci
-+master-bin.000001 # Query # # use `db1``; SELECT 'oops!'`; INSERT INTO t1 VALUES (@`a``1`+1, @`a``2`*100, @`a``3`-1, @`a``4`-1, @`b```/2, @```c`, substr(@```d```, 2, 98))
-+/*!40019 SET @@session.max_insert_delayed_threads=0*/;
-+/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
-+DELIMITER /*!*/;
-+ROLLBACK/*!*/;
-+use `db1``; SELECT 'oops!'`/*!*/;
-+SET TIMESTAMP=1000000000/*!*/;
-+SET @@session.pseudo_thread_id=999999999/*!*/;
-+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-+SET @@session.sql_mode=0/*!*/;
-+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
-+/*!\C latin1 *//*!*/;
-+SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
-+SET @@session.lc_time_names=0/*!*/;
-+SET @@session.collation_database=DEFAULT/*!*/;
-+CREATE TABLE t1 (a1 BIGINT PRIMARY KEY, a2 BIGINT, a3 BIGINT, a4 BIGINT UNSIGNED, b DOUBLE, c DECIMAL(65,10), d VARCHAR(100))
-+/*!*/;
-+SET TIMESTAMP=1000000000/*!*/;
-+INSERT INTO t1 VALUES (-9223372036854775808,42,9223372036854775807,18446744073709551615,-1234560123456789e110, -1234501234567890123456789012345678901234567890123456789.0123456789, REPEAT("x", 100))
-+/*!*/;
-+SET @`a``1`:=-9223372036854775808/*!*/;
-+SET @`a``2`:=42/*!*/;
-+SET @`a``3`:=9223372036854775807/*!*/;
-+SET @`a``4`:=-1/*!*/;
-+SET @`b```:=-1.2345601234568e+125/*!*/;
-+SET @```c`:=-1234501234567890123456789012345678901234567890123456789.0123456789/*!*/;
-+SET @```d```:=_latin1 0x78787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878 COLLATE `latin1_swedish_ci`/*!*/;
-+SET TIMESTAMP=1000000000/*!*/;
-+INSERT INTO t1 VALUES (@`a``1`+1, @`a``2`*100, @`a``3`-1, @`a``4`-1, @`b```/2, @```c`, substr(@```d```, 2, 98))
-+/*!*/;
-+DELIMITER ;
-+# End of log file
-+ROLLBACK /* added by mysqlbinlog */;
-+/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
-+SELECT * FROM `db1``; SELECT 'oops!'`.t1 ORDER BY a1;
-+a1 a2 a3 a4 b c d
-+-9223372036854775808 42 9223372036854775807 18446744073709551615 -1.23456012345679e+125 -1234501234567890123456789012345678901234567890123456789.0123456789 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-+-9223372036854775807 4200 9223372036854775806 0 -6.17280061728394e+124 -1234501234567890123456789012345678901234567890123456789.0123456789 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-+DROP TABLE t1;
-+*** Test correct quoting of DELETE FROM statement binlogged for HEAP table that is emptied due to server restart
-+include/stop_slave.inc
-+CREATE TABLE `db1``; SELECT 'oops!'`.`t``1` (`a``` INT PRIMARY KEY) ENGINE=heap;
-+INSERT INTO `db1``; SELECT 'oops!'`.`t``1` VALUES (1), (2), (5);
-+SELECT * FROM `db1``; SELECT 'oops!'`.`t``1` ORDER BY 1;
-+a`
-+1
-+2
-+5
-+set timestamp=1000000000;
-+# The table should be empty on the master.
-+SELECT * FROM `db1``; SELECT 'oops!'`.`t``1`;
-+a`
-+# The DELETE statement should be correctly quoted
-+show binlog events in 'master-bin.000002' from <binlog_start>;
-+Log_name Pos Event_type Server_id End_log_pos Info
-+master-bin.000002 # Query # # use `test`; DELETE FROM `db1``; SELECT 'oops!'`.`t``1`
-+include/start_slave.inc
-+# The table should be empty on the slave also.
-+SELECT * FROM `db1``; SELECT 'oops!'`.`t``1`;
-+a`
-+DROP TABLE `db1``; SELECT 'oops!'`.`t``1`;
-+use test;
-+DROP DATABASE `db1``; SELECT 'oops!'`;
-+*** Test correct quoting of mysqlbinlog --rewrite-db option ***
-+CREATE TABLE t1 (a INT PRIMARY KEY);
-+INSERT INTO t1 VALUES(1);
-+show binlog events in 'master-bin.000002' from <binlog_start>;
-+Log_name Pos Event_type Server_id End_log_pos Info
-+master-bin.000002 # Query # # use `test`; INSERT INTO t1 VALUES(1)
-+/*!40019 SET @@session.max_insert_delayed_threads=0*/;
-+/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
-+DELIMITER /*!*/;
-+ROLLBACK/*!*/;
-+use `ts``et`/*!*/;
-+SET TIMESTAMP=1000000000/*!*/;
-+SET @@session.pseudo_thread_id=999999999/*!*/;
-+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-+SET @@session.sql_mode=0/*!*/;
-+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
-+/*!\C latin1 *//*!*/;
-+SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
-+SET @@session.lc_time_names=0/*!*/;
-+SET @@session.collation_database=DEFAULT/*!*/;
-+INSERT INTO t1 VALUES(1)
-+/*!*/;
-+DELIMITER ;
-+# End of log file
-+ROLLBACK /* added by mysqlbinlog */;
-+/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
-+DROP TABLE t1;
-+include/rpl_end.inc
-
-=== modified file 'mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result'
---- mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result 2010-12-19 17:07:28 +0000
-+++ mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result 2012-08-24 08:06:16 +0000
-@@ -153,7 +153,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -175,7 +175,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -284,7 +284,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-@@ -316,7 +316,7 @@
- /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- DELIMITER /*!*/;
- ROLLBACK/*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=1000000000/*!*/;
- SET @@session.pseudo_thread_id=999999999/*!*/;
- SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
-
-=== modified file 'mysql-test/suite/rpl/r/rpl_sp.result'
---- mysql-test/suite/rpl/r/rpl_sp.result 2010-12-19 17:07:28 +0000
-+++ mysql-test/suite/rpl/r/rpl_sp.result 2012-08-24 08:06:16 +0000
-@@ -627,7 +627,7 @@
- SET TIMESTAMP=t/*!*/;
- create database mysqltest1
- /*!*/;
--use mysqltest1/*!*/;
-+use `mysqltest1`/*!*/;
- SET TIMESTAMP=t/*!*/;
- create table t1 (a varchar(100))
- /*!*/;
-@@ -840,7 +840,7 @@
- SET TIMESTAMP=t/*!*/;
- drop user "zedjzlcsjhd"@127.0.0.1
- /*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=t/*!*/;
- drop function if exists f1
- /*!*/;
-@@ -925,7 +925,7 @@
- SET TIMESTAMP=t/*!*/;
- create database mysqltest2
- /*!*/;
--use mysqltest2/*!*/;
-+use `mysqltest2`/*!*/;
- SET TIMESTAMP=t/*!*/;
- create table t ( t integer )
- /*!*/;
-@@ -943,7 +943,7 @@
- return 0;
- end
- /*!*/;
--use mysqltest/*!*/;
-+use `mysqltest`/*!*/;
- SET TIMESTAMP=t/*!*/;
- SELECT `mysqltest2`.`f1`()
- /*!*/;
-@@ -953,14 +953,14 @@
- SET TIMESTAMP=t/*!*/;
- drop database mysqltest2
- /*!*/;
--use test/*!*/;
-+use `test`/*!*/;
- SET TIMESTAMP=t/*!*/;
- CREATE DEFINER=`root`@`localhost` PROCEDURE `mysqltestbug36570_p1`()
- begin
- select 1;
- end
- /*!*/;
--use mysql/*!*/;
-+use `mysql`/*!*/;
- SET TIMESTAMP=t/*!*/;
- CREATE DEFINER=`root`@`localhost` PROCEDURE `test`.` mysqltestbug36570_p2`( a int)
- `label`:
-
-=== added file 'mysql-test/suite/rpl/t/rpl_mdev382.test'
---- mysql-test/suite/rpl/t/rpl_mdev382.test 1970-01-01 00:00:00 +0000
-+++ mysql-test/suite/rpl/t/rpl_mdev382.test 2012-08-24 10:32:46 +0000
-@@ -0,0 +1,257 @@
-+--source include/have_innodb.inc
-+--source include/not_windows.inc
-+--source include/have_binlog_format_statement.inc
-+--source include/master-slave.inc
-+
-+# MDEV-382: multiple SQL injections in replication code.
-+
-+# Test previous SQL injection attack against binlog for SAVEPOINT statement.
-+# The test would cause syntax error on slave due to improper quoting of
-+# the savepoint name.
-+connection master;
-+create table t1 (a int primary key) engine=innodb;
-+create table t2 (a int primary key) engine=myisam;
-+
-+begin;
-+insert into t1 values (1);
-+SET sql_mode = 'ANSI_QUOTES';
-+savepoint `a``; create database couldbebadthingshere; savepoint ``dummy`;
-+insert into t1 values (2);
-+insert into t2 values (1);
-+SET sql_mode = '';
-+rollback to savepoint `a``; create database couldbebadthingshere; savepoint ``dummy`;
-+insert into t1 values (3);
-+commit;
-+
-+--source include/show_binlog_events.inc
-+
-+# This failed due to syntax error in query when the bug was not fixed.
-+sync_slave_with_master;
-+connection slave;
-+
-+# Test some more combinations of ANSI_QUOTES and sql_quote_show_create
-+connection master;
-+let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
-+BEGIN;
-+insert into t1 values(10);
-+set sql_mode = 'ANSI_QUOTES';
-+set sql_quote_show_create = 1;
-+savepoint a;
-+insert into t1 values(11);
-+savepoint "a""a";
-+insert into t1 values(12);
-+set sql_quote_show_create = 0;
-+savepoint b;
-+insert into t1 values(13);
-+savepoint "b""b";
-+insert into t1 values(14);
-+set sql_mode = '';
-+set sql_quote_show_create = 1;
-+savepoint c;
-+insert into t1 values(15);
-+savepoint `c``c`;
-+insert into t1 values(16);
-+set sql_quote_show_create = 0;
-+savepoint d;
-+insert into t1 values(17);
-+savepoint `d``d`;
-+insert into t1 values(18);
-+COMMIT;
-+set sql_quote_show_create = 1;
-+
-+--source include/show_binlog_events.inc
-+
-+--echo *** Test correct USE statement in SHOW BINLOG EVENTS ***
-+connection master;
-+let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
-+set sql_mode = 'ANSI_QUOTES';
-+CREATE DATABASE "db1`; SELECT 'oops!'";
-+use "db1`; SELECT 'oops!'";
-+CREATE TABLE t1 (a INT PRIMARY KEY) engine=MyISAM;
-+INSERT INTO t1 VALUES (1);
-+set sql_mode = '';
-+INSERT INTO t1 VALUES (2);
-+set sql_mode = 'ANSI_QUOTES';
-+--source include/show_binlog_events.inc
-+set sql_mode = '';
-+set sql_quote_show_create = 0;
-+--source include/show_binlog_events.inc
-+set sql_quote_show_create = 1;
-+--source include/show_binlog_events.inc
-+DROP TABLE t1;
-+
-+use test;
-+
-+--echo ***Test LOAD DATA INFILE with various identifiers that need correct quoting ***
-+
-+--let $load_file= $MYSQLTEST_VARDIR/tmp/f'le.txt
-+--write_file $load_file
-+'fo\\o','bar'
-+EOF
-+--exec chmod go+r "$load_file"
-+
-+use `db1``; SELECT 'oops!'`;
-+let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
-+set timestamp=1000000000;
-+CREATE TABLE `t``1` (`a``1` VARCHAR(4) PRIMARY KEY, `b``2` VARCHAR(3),
-+ `c``3` VARCHAR(7));
-+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
-+eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/f''le.txt' INTO TABLE `t``1`
-+ FIELDS TERMINATED BY ',' ESCAPED BY '\\\\' ENCLOSED BY ''''
-+ LINES TERMINATED BY '\\n'
-+ (`a``1`, @`b```) SET `b``2` = @`b```, `c``3` = concat('|', "b""a'z", "!");
-+
-+SELECT * FROM `t``1`;
-+# Also test when code prefixes table name with database.
-+truncate `t``1`;
-+use test;
-+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
-+eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/f''le.txt'
-+ INTO TABLE `db1``; SELECT 'oops!'`.`t``1`
-+ FIELDS TERMINATED BY ',' ESCAPED BY '\\\\' ENCLOSED BY ''''
-+ LINES TERMINATED BY '\\n'
-+ (`a``1`, `b``2`) SET `c``3` = concat('|', "b""a'z", "!");
-+SELECT * FROM `db1``; SELECT 'oops!'`.`t``1`;
-+let $pos2= query_get_value(SHOW MASTER STATUS, Position, 1);
-+
-+--source include/show_binlog_events.inc
-+let $MYSQLD_DATADIR= `select @@datadir`;
-+--replace_regex /LOCAL INFILE '.*SQL_LOAD.*' INTO/LOCAL INFILE '<name>' INTO/
-+--exec $MYSQL_BINLOG --short-form --start-position=$binlog_start --stop-position=$pos2 $MYSQLD_DATADIR/master-bin.000001
-+
-+sync_slave_with_master;
-+connection slave;
-+SELECT * FROM `db1``; SELECT 'oops!'`.`t``1`;
-+connection master;
-+
-+DROP TABLE `db1``; SELECT 'oops!'`.`t``1`;
-+--remove_file $load_file
-+
-+connection master;
-+drop table t1,t2;
-+
-+
-+--echo *** Test truncation of long SET expression in LOAD DATA ***
-+CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(1000));
-+--let $load_file= $MYSQLTEST_VARDIR/tmp/file.txt
-+--write_file $load_file
-+1,X
-+2,A
-+EOF
-+--exec chmod go+r "$load_file"
-+
-+let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
-+# The bug was that the SET expression was truncated to 256 bytes, so test with
-+# an expression longer than that.
-+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
-+eval LOAD DATA INFILE '$load_file' INTO TABLE t1
-+ FIELDS TERMINATED BY ','
-+ (a, @b) SET b = CONCAT(@b, '| 123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J123456789K123456789L123456789M123456789N123456789O123456789P123456789Q123456789R123456789123456789T123456789U123456789V123456789W123456789X123456789Y123456789Z123456789|', @b);
-+
-+SELECT * FROM t1 ORDER BY a;
-+--source include/show_binlog_events.inc
-+
-+sync_slave_with_master;
-+connection slave;
-+SELECT * FROM t1 ORDER BY a;
-+
-+connection master;
-+--remove_file $load_file
-+DROP TABLE t1;
-+
-+
-+--echo *** Test user variables whose names require correct quoting ***
-+use `db1``; SELECT 'oops!'`;
-+let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
-+CREATE TABLE t1 (a1 BIGINT PRIMARY KEY, a2 BIGINT, a3 BIGINT, a4 BIGINT UNSIGNED, b DOUBLE, c DECIMAL(65,10), d VARCHAR(100));
-+INSERT INTO t1 VALUES (-9223372036854775808,42,9223372036854775807,18446744073709551615,-1234560123456789e110, -1234501234567890123456789012345678901234567890123456789.0123456789, REPEAT("x", 100));
-+SELECT @`a``1`:=a1, @`a``2`:=a2, @`a``3`:=a3, @`a``4`:=a4, @`b```:=b, @```c`:=c, @```d```:=d FROM t1;
-+INSERT INTO t1 VALUES (@`a``1`+1, @`a``2`*100, @`a``3`-1, @`a``4`-1, @`b```/2, @```c`, substr(@```d```, 2, 98));
-+let $pos2= query_get_value(SHOW MASTER STATUS, Position, 1);
-+
-+--source include/show_binlog_events.inc
-+
-+--exec $MYSQL_BINLOG --short-form --start-position=$binlog_start --stop-position=$pos2 $MYSQLD_DATADIR/master-bin.000001
-+
-+sync_slave_with_master;
-+connection slave;
-+SELECT * FROM `db1``; SELECT 'oops!'`.t1 ORDER BY a1;
-+
-+connection master;
-+DROP TABLE t1;
-+
-+
-+--echo *** Test correct quoting of DELETE FROM statement binlogged for HEAP table that is emptied due to server restart
-+
-+# Let's keep the slave stopped during master restart, to avoid any potential
-+# races between slave reconnect and master restart.
-+connection slave;
-+--source include/stop_slave.inc
-+
-+connection master;
-+CREATE TABLE `db1``; SELECT 'oops!'`.`t``1` (`a``` INT PRIMARY KEY) ENGINE=heap;
-+INSERT INTO `db1``; SELECT 'oops!'`.`t``1` VALUES (1), (2), (5);
-+SELECT * FROM `db1``; SELECT 'oops!'`.`t``1` ORDER BY 1;
-+
-+# Restart the master mysqld.
-+# This will cause an implicit truncation of the memory-based table, which will
-+# cause logging of an explicit DELETE FROM to binlog.
-+--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
-+wait-rpl_mdev382.test
-+EOF
-+
-+--shutdown_server 30
-+
-+--remove_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
-+--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
-+restart-rpl_mdev382.test
-+EOF
-+
-+connection default;
-+--enable_reconnect
-+--source include/wait_until_connected_again.inc
-+# rpl_end.inc needs to use the connection server_1
-+connection server_1;
-+--enable_reconnect
-+--source include/wait_until_connected_again.inc
-+connection master;
-+--enable_reconnect
-+--source include/wait_until_connected_again.inc
-+set timestamp=1000000000;
-+
-+--echo # The table should be empty on the master.
-+let $binlog_file= master-bin.000002;
-+let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
-+SELECT * FROM `db1``; SELECT 'oops!'`.`t``1`;
-+
-+--echo # The DELETE statement should be correctly quoted
-+--source include/show_binlog_events.inc
-+
-+connection slave;
-+--source include/start_slave.inc
-+
-+connection master;
-+sync_slave_with_master;
-+connection slave;
-+--echo # The table should be empty on the slave also.
-+SELECT * FROM `db1``; SELECT 'oops!'`.`t``1`;
-+
-+connection master;
-+DROP TABLE `db1``; SELECT 'oops!'`.`t``1`;
-+sync_slave_with_master;
-+
-+
-+connection master;
-+use test;
-+DROP DATABASE `db1``; SELECT 'oops!'`;
-+
-+--echo *** Test correct quoting of mysqlbinlog --rewrite-db option ***
-+CREATE TABLE t1 (a INT PRIMARY KEY);
-+let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
-+INSERT INTO t1 VALUES(1);
-+--source include/show_binlog_events.inc
-+let $pos2= query_get_value(SHOW MASTER STATUS, Position, 1);
-+--exec $MYSQL_BINLOG --short-form --start-position=$binlog_start --stop-position=$pos2 --rewrite-db='test->ts`et' $MYSQLD_DATADIR/master-bin.000002
-+DROP TABLE t1;
-+
-+--source include/rpl_end.inc
-
-=== modified file 'mysys/mf_iocache2.c'
---- mysys/mf_iocache2.c 2011-11-21 17:13:14 +0000
-+++ mysys/mf_iocache2.c 2012-08-24 10:32:46 +0000
-@@ -284,6 +284,40 @@
- }
-
-
-+size_t
-+my_b_write_backtick_quote(IO_CACHE *info, const char *str, size_t len)
-+{
-+ const uchar *start;
-+ const uchar *p= (const uchar *)str;
-+ const uchar *end= p + len;
-+ size_t count;
-+ size_t total= 0;
-+
-+ if (my_b_write(info, (uchar *)"`", 1))
-+ return (size_t)-1;
-+ ++total;
-+ for (;;)
-+ {
-+ start= p;
-+ while (p < end && *p != '`')
-+ ++p;
-+ count= p - start;
-+ if (count && my_b_write(info, start, count))
-+ return (size_t)-1;
-+ total+= count;
-+ if (p >= end)
-+ break;
-+ if (my_b_write(info, (uchar *)"``", 2))
-+ return (size_t)-1;
-+ total+= 2;
-+ ++p;
-+ }
-+ if (my_b_write(info, (uchar *)"`", 1))
-+ return (size_t)-1;
-+ ++total;
-+ return total;
-+}
-+
- /*
- Simple printf version. Supports '%s', '%d', '%u', "%ld" and "%lu"
- Used for logging in MySQL
-@@ -308,6 +342,7 @@
- uint minimum_width_sign;
- uint precision; /* as yet unimplemented for anything but %b */
- my_bool is_zero_padded;
-+ my_bool backtick_quoting;
-
- /*
- Store the location of the beginning of a format directive, for the
-@@ -342,6 +377,7 @@
- fmt++;
-
- is_zero_padded= FALSE;
-+ backtick_quoting= FALSE;
- minimum_width_sign= 1;
- minimum_width= 0;
- precision= 0;
-@@ -354,6 +390,8 @@
- minimum_width_sign= -1; fmt++; goto process_flags;
- case '0':
- is_zero_padded= TRUE; fmt++; goto process_flags;
-+ case '`':
-+ backtick_quoting= TRUE; fmt++; goto process_flags;
- case '#':
- /** @todo Implement "#" conversion flag. */ fmt++; goto process_flags;
- case ' ':
-@@ -397,9 +435,19 @@
- reg2 char *par = va_arg(args, char *);
- size_t length2 = strlen(par);
- /* TODO: implement precision */
-- out_length+= length2;
-- if (my_b_write(info, (uchar*) par, length2))
-- goto err;
-+ if (backtick_quoting)
-+ {
-+ size_t total= my_b_write_backtick_quote(info, par, length2);
-+ if (total == (size_t)-1)
-+ goto err;
-+ out_length+= total;
-+ }
-+ else
-+ {
-+ out_length+= length2;
-+ if (my_b_write(info, (uchar*) par, length2))
-+ goto err;
-+ }
- }
- else if (*fmt == 'b') /* Sized buffer parameter, only precision makes sense */
- {
-
-=== modified file 'sql/ha_ndbcluster_binlog.cc'
---- sql/ha_ndbcluster_binlog.cc 2011-11-24 16:48:58 +0000
-+++ sql/ha_ndbcluster_binlog.cc 2012-08-24 10:32:46 +0000
-@@ -1268,7 +1268,9 @@
- DBUG_RETURN(0);
- }
-
-- char tmp_buf2[FN_REFLEN];
-+ char tmp_buf2_mem[FN_REFLEN];
-+ String tmp_buf2(tmp_buf2_mem, sizeof(tmp_buf2_mem), system_charset_info);
-+ tmp_buf2.length(0);
- const char *type_str;
- switch (type)
- {
-@@ -1277,17 +1279,24 @@
- if (thd->lex->sql_command == SQLCOM_DROP_DB)
- DBUG_RETURN(0);
- /* redo the drop table query as is may contain several tables */
-- query= tmp_buf2;
-- query_length= (uint) (strxmov(tmp_buf2, "drop table `",
-- table_name, "`", NullS) - tmp_buf2);
-+ tmp_buf2.append(STRING_WITH_LEN("drop table "));
-+ append_identifier(thd, &tmp_buf2, table_name, strlen(table_name));
-+ query= tmp_buf2.c_ptr_safe();
-+ query_length= tmp_buf2.length();
- type_str= "drop table";
- break;
- case SOT_RENAME_TABLE:
- /* redo the rename table query as is may contain several tables */
-- query= tmp_buf2;
-- query_length= (uint) (strxmov(tmp_buf2, "rename table `",
-- db, ".", table_name, "` to `",
-- new_db, ".", new_table_name, "`", NullS) - tmp_buf2);
-+ tmp_buf2.append(STRING_WITH_LEN("rename table "));
-+ append_identifier(thd, &tmp_buf2, db, strlen(db));
-+ tmp_buf2.append(STRING_WITH_LEN("."));
-+ append_identifier(thd, &tmp_buf2, table_name, strlen(table_name));
-+ tmp_buf2.append(STRING_WITH_LEN(" to "));
-+ append_identifier(thd, &tmp_buf2, new_db, strlen(new_db));
-+ tmp_buf2.append(STRING_WITH_LEN("."));
-+ append_identifier(thd, &tmp_buf2, new_table_name, strlen(new_table_name));
-+ query= tmp_buf2.c_ptr_safe();
-+ query_length= tmp_buf2.length();
- type_str= "rename table";
- break;
- case SOT_CREATE_TABLE:
-
-=== modified file 'sql/item.cc'
---- sql/item.cc 2012-05-18 12:23:05 +0000
-+++ sql/item.cc 2012-08-24 10:32:46 +0000
-@@ -769,15 +769,31 @@
- if (!my_charset_same(cs, system_charset_info))
- {
- size_t res_length;
-- name= sql_strmake_with_convert(str, name_length= length, cs,
-+ name= sql_strmake_with_convert(str, length, cs,
- MAX_ALIAS_NAME, system_charset_info,
- &res_length);
-+ name_length= res_length;
- }
- else
- name= sql_strmake(str, (name_length= min(length,MAX_ALIAS_NAME)));
- }
-
-
-+void Item::set_name_no_truncate(const char *str, uint length, CHARSET_INFO *cs)
-+{
-+ if (!my_charset_same(cs, system_charset_info))
-+ {
-+ size_t res_length;
-+ name= sql_strmake_with_convert(str, length, cs,
-+ UINT_MAX, system_charset_info,
-+ &res_length);
-+ name_length= res_length;
-+ }
-+ else
-+ name= sql_strmake(str, (name_length= length));
-+}
-+
-+
- /**
- @details
- This function is called when:
-
-=== modified file 'sql/item.h'
---- sql/item.h 2012-05-18 12:23:05 +0000
-+++ sql/item.h 2012-08-24 10:32:46 +0000
-@@ -572,6 +572,7 @@
- #endif
- } /*lint -e1509 */
- void set_name(const char *str, uint length, CHARSET_INFO *cs);
-+ void set_name_no_truncate(const char *str, uint length, CHARSET_INFO *cs);
- void rename(char *new_name);
- void init_make_field(Send_field *tmp_field,enum enum_field_types type);
- virtual void cleanup();
-
-=== modified file 'sql/item_func.cc'
---- sql/item_func.cc 2012-05-22 05:48:10 +0000
-+++ sql/item_func.cc 2012-08-24 10:32:46 +0000
-@@ -4784,7 +4784,7 @@
- void Item_func_get_user_var::print(String *str, enum_query_type query_type)
- {
- str->append(STRING_WITH_LEN("(@"));
-- str->append(name.str,name.length);
-+ append_identifier(current_thd, str, name.str, name.length);
- str->append(')');
- }
-
-@@ -4882,10 +4882,10 @@
- }
-
-
--void Item_user_var_as_out_param::print(String *str, enum_query_type query_type)
-+void Item_user_var_as_out_param::print_for_load(THD *thd, String *str)
- {
- str->append('@');
-- str->append(name.str,name.length);
-+ append_identifier(thd, str, name.str, name.length);
- }
-
-
-
-=== modified file 'sql/item_func.h'
---- sql/item_func.h 2011-11-24 16:48:58 +0000
-+++ sql/item_func.h 2012-08-24 10:32:46 +0000
-@@ -1541,7 +1541,7 @@
- my_decimal *val_decimal(my_decimal *decimal_buffer);
- /* fix_fields() binds variable name with its entry structure */
- bool fix_fields(THD *thd, Item **ref);
-- virtual void print(String *str, enum_query_type query_type);
-+ void print_for_load(THD *thd, String *str);
- void set_null_value(CHARSET_INFO* cs);
- void set_value(const char *str, uint length, CHARSET_INFO* cs);
- };
-
-=== modified file 'sql/log.cc'
---- sql/log.cc 2012-05-18 12:23:05 +0000
-+++ sql/log.cc 2012-08-24 10:32:46 +0000
-@@ -38,6 +38,7 @@
- #endif
-
- #include <mysql/plugin.h>
-+#include "sql_show.h"
-
- /* max size of the log message */
- #define MAX_LOG_BUFFER_SIZE 1024
-@@ -1769,9 +1770,8 @@
-
- String log_query;
- if (log_query.append(STRING_WITH_LEN("SAVEPOINT ")) ||
-- log_query.append("`") ||
-- log_query.append(thd->lex->ident.str, thd->lex->ident.length) ||
-- log_query.append("`"))
-+ append_identifier(thd, &log_query,
-+ thd->lex->ident.str, thd->lex->ident.length))
- DBUG_RETURN(1);
- int errcode= query_error_code(thd, thd->killed == THD::NOT_KILLED);
- Query_log_event qinfo(thd, log_query.ptr(), log_query.length(),
-@@ -1793,9 +1793,8 @@
- {
- String log_query;
- if (log_query.append(STRING_WITH_LEN("ROLLBACK TO ")) ||
-- log_query.append("`") ||
-- log_query.append(thd->lex->ident.str, thd->lex->ident.length) ||
-- log_query.append("`"))
-+ append_identifier(thd, &log_query,
-+ thd->lex->ident.str, thd->lex->ident.length))
- DBUG_RETURN(1);
- int errcode= query_error_code(thd, thd->killed == THD::NOT_KILLED);
- Query_log_event qinfo(thd, log_query.ptr(), log_query.length(),
-
-=== modified file 'sql/log_event.cc'
---- sql/log_event.cc 2012-05-18 12:23:05 +0000
-+++ sql/log_event.cc 2012-08-24 10:32:46 +0000
-@@ -34,6 +34,7 @@
- #include "rpl_utility.h"
- #include "rpl_record.h"
- #include <my_dir.h>
-+#include "sql_show.h"
-
- #endif /* MYSQL_CLIENT */
-
-@@ -413,29 +414,28 @@
- pretty_print_str()
- */
-
--static char *pretty_print_str(char *packet, const char *str, int len)
-+static void
-+pretty_print_str(String *packet, const char *str, int len)
- {
- const char *end= str + len;
-- char *pos= packet;
-- *pos++= '\'';
-+ packet->append(STRING_WITH_LEN("'"));
- while (str < end)
- {
- char c;
- switch ((c=*str++)) {
-- case '\n': *pos++= '\\'; *pos++= 'n'; break;
-- case '\r': *pos++= '\\'; *pos++= 'r'; break;
-- case '\\': *pos++= '\\'; *pos++= '\\'; break;
-- case '\b': *pos++= '\\'; *pos++= 'b'; break;
-- case '\t': *pos++= '\\'; *pos++= 't'; break;
-- case '\'': *pos++= '\\'; *pos++= '\''; break;
-- case 0 : *pos++= '\\'; *pos++= '0'; break;
-+ case '\n': packet->append(STRING_WITH_LEN("\\n")); break;
-+ case '\r': packet->append(STRING_WITH_LEN("\\r")); break;
-+ case '\\': packet->append(STRING_WITH_LEN("\\\\")); break;
-+ case '\b': packet->append(STRING_WITH_LEN("\\b")); break;
-+ case '\t': packet->append(STRING_WITH_LEN("\\t")); break;
-+ case '\'': packet->append(STRING_WITH_LEN("\\'")); break;
-+ case 0 : packet->append(STRING_WITH_LEN("\\0")); break;
- default:
-- *pos++= c;
-+ packet->append(&c, 1);
- break;
- }
- }
-- *pos++= '\'';
-- return pos;
-+ packet->append(STRING_WITH_LEN("'"));
- }
- #endif /* !MYSQL_CLIENT */
-
-@@ -861,7 +861,7 @@
- Log_event::pack_info()
- */
-
--void Log_event::pack_info(Protocol *protocol)
-+void Log_event::pack_info(THD *thd, Protocol *protocol)
- {
- protocol->store("", &my_charset_bin);
- }
-@@ -870,7 +870,8 @@
- /**
- Only called by SHOW BINLOG EVENTS
- */
--int Log_event::net_send(Protocol *protocol, const char* log_name, my_off_t pos)
-+int Log_event::net_send(THD *thd, Protocol *protocol, const char* log_name,
-+ my_off_t pos)
- {
- const char *p= strrchr(log_name, FN_LIBCHAR);
- const char *event_type;
-@@ -884,7 +885,7 @@
- protocol->store(event_type, strlen(event_type), &my_charset_bin);
- protocol->store((uint32) server_id);
- protocol->store((ulonglong) log_pos);
-- pack_info(protocol);
-+ pack_info(thd, protocol);
- return protocol->write();
- }
- #endif /* HAVE_REPLICATION */
-@@ -2139,27 +2140,22 @@
- show the catalog ??
- */
-
--void Query_log_event::pack_info(Protocol *protocol)
-+void Query_log_event::pack_info(THD *thd, Protocol *protocol)
- {
- // TODO: show the catalog ??
-- char *buf, *pos;
-- if (!(buf= (char*) my_malloc(9 + db_len + q_len, MYF(MY_WME))))
-- return;
-- pos= buf;
-+ char buf_mem[1024];
-+ String buf(buf_mem, sizeof(buf_mem), system_charset_info);
-+ buf.real_alloc(9 + db_len + q_len);
- if (!(flags & LOG_EVENT_SUPPRESS_USE_F)
- && db && db_len)
- {
-- pos= strmov(buf, "use `");
-- memcpy(pos, db, db_len);
-- pos= strmov(pos+db_len, "`; ");
-+ buf.append(STRING_WITH_LEN("use "));
-+ append_identifier(thd, &buf, db, db_len);
-+ buf.append("; ");
- }
- if (query && q_len)
-- {
-- memcpy(pos, query, q_len);
-- pos+= q_len;
-- }
-- protocol->store(buf, pos-buf, &my_charset_bin);
-- my_free(buf, MYF(MY_ALLOW_ZERO_PTR));
-+ buf.append(query, q_len);
-+ protocol->store(&buf);
- }
- #endif
-
-@@ -2924,11 +2920,17 @@
- }
- else if (db)
- {
-+ /* Room for expand ` to `` + initial/final ` + \0 */
-+ char buf[FN_REFLEN*2+3];
-+
- different_db= memcmp(print_event_info->db, db, db_len + 1);
- if (different_db)
- memcpy(print_event_info->db, db, db_len + 1);
- if (db[0] && different_db)
-- my_b_printf(file, "use %s%s\n", db, print_event_info->delimiter);
-+ {
-+ my_snprintf(buf, sizeof(buf), "%`s", db);
-+ my_b_printf(file, "use %s%s\n", buf, print_event_info->delimiter);
-+ }
- }
-
- end=int10_to_str((long) when, strmov(buff,"SET TIMESTAMP="),10);
-@@ -3545,7 +3547,7 @@
- */
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--void Start_log_event_v3::pack_info(Protocol *protocol)
-+void Start_log_event_v3::pack_info(THD *thd, Protocol *protocol)
- {
- char buf[12 + ST_SERVER_VER_LEN + 14 + 22], *pos;
- pos= strmov(buf, "Server ver: ");
-@@ -4194,131 +4196,115 @@
- */
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--uint Load_log_event::get_query_buffer_length()
--{
-- return
-- 5 + db_len + 3 + // "use DB; "
-- 18 + fname_len + 2 + // "LOAD DATA INFILE 'file''"
-- 11 + // "CONCURRENT "
-- 7 + // LOCAL
-- 9 + // " REPLACE or IGNORE "
-- 13 + table_name_len*2 + // "INTO TABLE `table`"
-- 21 + sql_ex.field_term_len*4 + 2 + // " FIELDS TERMINATED BY 'str'"
-- 23 + sql_ex.enclosed_len*4 + 2 + // " OPTIONALLY ENCLOSED BY 'str'"
-- 12 + sql_ex.escaped_len*4 + 2 + // " ESCAPED BY 'str'"
-- 21 + sql_ex.line_term_len*4 + 2 + // " LINES TERMINATED BY 'str'"
-- 19 + sql_ex.line_start_len*4 + 2 + // " LINES STARTING BY 'str'"
-- 15 + 22 + // " IGNORE xxx LINES"
-- 3 + (num_fields-1)*2 + field_block_len; // " (field1, field2, ...)"
--}
--
--
--void Load_log_event::print_query(bool need_db, const char *cs, char *buf,
-- char **end, char **fn_start, char **fn_end)
--{
-- char *pos= buf;
--
-+void Load_log_event::print_query(THD *thd, bool need_db, const char *cs,
-+ String *buf, my_off_t *fn_start,
-+ my_off_t *fn_end, const char *qualify_db)
-+{
- if (need_db && db && db_len)
- {
-- pos= strmov(pos, "use `");
-- memcpy(pos, db, db_len);
-- pos= strmov(pos+db_len, "`; ");
-+ buf->append(STRING_WITH_LEN("use "));
-+ append_identifier(thd, buf, db, db_len);
-+ buf->append(STRING_WITH_LEN("; "));
- }
-
-- pos= strmov(pos, "LOAD DATA ");
-+ buf->append(STRING_WITH_LEN("LOAD DATA "));
-
- if (thd->lex->lock_option == TL_WRITE_CONCURRENT_INSERT)
-- pos= strmov(pos, "CONCURRENT ");
-+ buf->append(STRING_WITH_LEN("CONCURRENT "));
-
- if (fn_start)
-- *fn_start= pos;
-+ *fn_start= buf->length();
-
- if (check_fname_outside_temp_buf())
-- pos= strmov(pos, "LOCAL ");
-- pos= strmov(pos, "INFILE '");
-- memcpy(pos, fname, fname_len);
-- pos= strmov(pos+fname_len, "' ");
-+ buf->append(STRING_WITH_LEN("LOCAL "));
-+ buf->append(STRING_WITH_LEN("INFILE '"));
-+ buf->append_for_single_quote(fname, fname_len);
-+ buf->append(STRING_WITH_LEN("' "));
-
- if (sql_ex.opt_flags & REPLACE_FLAG)
-- pos= strmov(pos, "REPLACE ");
-+ buf->append(STRING_WITH_LEN("REPLACE "));
- else if (sql_ex.opt_flags & IGNORE_FLAG)
-- pos= strmov(pos, "IGNORE ");
-+ buf->append(STRING_WITH_LEN("IGNORE "));
-
-- pos= strmov(pos ,"INTO");
-+ buf->append(STRING_WITH_LEN("INTO"));
-
- if (fn_end)
-- *fn_end= pos;
-+ *fn_end= buf->length();
-
-- pos= strmov(pos ," TABLE `");
-- memcpy(pos, table_name, table_name_len);
-- pos+= table_name_len;
-+ buf->append(STRING_WITH_LEN(" TABLE "));
-+ if (qualify_db)
-+ {
-+ append_identifier(thd, buf, qualify_db, strlen(qualify_db));
-+ buf->append(STRING_WITH_LEN("."));
-+ }
-+ append_identifier(thd, buf, table_name, table_name_len);
-
- if (cs != NULL)
- {
-- pos= strmov(pos ,"` CHARACTER SET ");
-- pos= strmov(pos , cs);
-+ buf->append(STRING_WITH_LEN(" CHARACTER SET "));
-+ buf->append(cs, strlen(cs));
- }
-- else
-- pos= strmov(pos, "`");
-
- /* We have to create all optional fields as the default is not empty */
-- pos= strmov(pos, " FIELDS TERMINATED BY ");
-- pos= pretty_print_str(pos, sql_ex.field_term, sql_ex.field_term_len);
-+ buf->append(STRING_WITH_LEN(" FIELDS TERMINATED BY "));
-+ pretty_print_str(buf, sql_ex.field_term, sql_ex.field_term_len);
- if (sql_ex.opt_flags & OPT_ENCLOSED_FLAG)
-- pos= strmov(pos, " OPTIONALLY ");
-- pos= strmov(pos, " ENCLOSED BY ");
-- pos= pretty_print_str(pos, sql_ex.enclosed, sql_ex.enclosed_len);
--
-- pos= strmov(pos, " ESCAPED BY ");
-- pos= pretty_print_str(pos, sql_ex.escaped, sql_ex.escaped_len);
--
-- pos= strmov(pos, " LINES TERMINATED BY ");
-- pos= pretty_print_str(pos, sql_ex.line_term, sql_ex.line_term_len);
-+ buf->append(STRING_WITH_LEN(" OPTIONALLY "));
-+ buf->append(STRING_WITH_LEN(" ENCLOSED BY "));
-+ pretty_print_str(buf, sql_ex.enclosed, sql_ex.enclosed_len);
-+
-+ buf->append(STRING_WITH_LEN(" ESCAPED BY "));
-+ pretty_print_str(buf, sql_ex.escaped, sql_ex.escaped_len);
-+
-+ buf->append(STRING_WITH_LEN(" LINES TERMINATED BY "));
-+ pretty_print_str(buf, sql_ex.line_term, sql_ex.line_term_len);
- if (sql_ex.line_start_len)
- {
-- pos= strmov(pos, " STARTING BY ");
-- pos= pretty_print_str(pos, sql_ex.line_start, sql_ex.line_start_len);
-+ buf->append(STRING_WITH_LEN(" STARTING BY "));
-+ pretty_print_str(buf, sql_ex.line_start, sql_ex.line_start_len);
- }
-
- if ((long) skip_lines > 0)
- {
-- pos= strmov(pos, " IGNORE ");
-- pos= longlong10_to_str((longlong) skip_lines, pos, 10);
-- pos= strmov(pos," LINES ");
-+ char skipbuf[22];
-+ buf->append(STRING_WITH_LEN(" IGNORE "));
-+ longlong10_to_str((longlong) skip_lines, skipbuf, 10);
-+ buf->append(skipbuf);
-+ buf->append(STRING_WITH_LEN(" LINES "));
- }
-
- if (num_fields)
- {
- uint i;
- const char *field= fields;
-- pos= strmov(pos, " (");
-+ buf->append(STRING_WITH_LEN(" ("));
- for (i = 0; i < num_fields; i++)
- {
- if (i)
- {
-- *pos++= ' ';
-- *pos++= ',';
-+ /*
-+ Yes, the space and comma is reversed here. But this is mostly dead
-+ code, at most used when reading really old binlogs from old servers,
-+ so better just leave it as is...
-+ */
-+ buf->append(STRING_WITH_LEN(" ,"));
- }
-- memcpy(pos, field, field_lens[i]);
-- pos+= field_lens[i];
-+ append_identifier(thd, buf, field, field_lens[i]);
- field+= field_lens[i] + 1;
- }
-- *pos++= ')';
-+ buf->append(STRING_WITH_LEN(")"));
- }
--
-- *end= pos;
- }
-
-
--void Load_log_event::pack_info(Protocol *protocol)
-+void Load_log_event::pack_info(THD *thd, Protocol *protocol)
- {
-- char *buf, *end;
-+ char query_buffer[1024];
-+ String query_str(query_buffer, sizeof(query_buffer), system_charset_info);
-
-- if (!(buf= (char*) my_malloc(get_query_buffer_length(), MYF(MY_WME))))
-- return;
-- print_query(TRUE, NULL, buf, &end, 0, 0);
-- protocol->store(buf, end-buf, &my_charset_bin);
-- my_free(buf, MYF(0));
-+ query_str.length(0);
-+ print_query(thd, TRUE, NULL, &query_str, 0, 0, NULL);
-+ protocol->store(query_str.ptr(), query_str.length(), &my_charset_bin);
- }
- #endif /* defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT) */
-
-@@ -4585,7 +4571,7 @@
- else if (sql_ex.opt_flags & IGNORE_FLAG)
- my_b_printf(&cache,"IGNORE ");
-
-- my_b_printf(&cache, "INTO TABLE `%s`", table_name);
-+ my_b_printf(&cache, "INTO TABLE %`s", table_name);
- my_b_printf(&cache, " FIELDS TERMINATED BY ");
- pretty_print_str(&cache, sql_ex.field_term, sql_ex.field_term_len);
-
-@@ -4774,16 +4760,20 @@
- else
- {
- char llbuff[22];
-- char *end;
- enum enum_duplicates handle_dup;
- bool ignore= 0;
-+ char query_buffer[1024];
-+ String query_str(query_buffer, sizeof(query_buffer), system_charset_info);
- char *load_data_query;
-
-+ query_str.length(0);
- /*
- Forge LOAD DATA INFILE query which will be used in SHOW PROCESS LIST
- and written to slave's binlog if binlogging is on.
- */
-- if (!(load_data_query= (char *)thd->alloc(get_query_buffer_length() + 1)))
-+ print_query(thd, FALSE, NULL, &query_str, NULL, NULL, NULL);
-+ if (!(load_data_query= (char *)thd->strmake(query_str.ptr(),
-+ query_str.length())))
- {
- /*
- This will set thd->fatal_error in case of OOM. So we surely will notice
-@@ -4792,9 +4782,7 @@
- goto error;
- }
-
-- print_query(FALSE, NULL, load_data_query, &end, NULL, NULL);
-- *end= 0;
-- thd->set_query(load_data_query, (uint) (end - load_data_query));
-+ thd->set_query(load_data_query, (uint) (query_str.length()));
-
- if (sql_ex.opt_flags & REPLACE_FLAG)
- {
-@@ -4959,7 +4947,7 @@
- */
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--void Rotate_log_event::pack_info(Protocol *protocol)
-+void Rotate_log_event::pack_info(THD *thd, Protocol *protocol)
- {
- char buf1[256], buf[22];
- String tmp(buf1, sizeof(buf1), log_cs);
-@@ -5174,7 +5162,7 @@
- */
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--void Intvar_log_event::pack_info(Protocol *protocol)
-+void Intvar_log_event::pack_info(THD *thd, Protocol *protocol)
- {
- char buf[256], *pos;
- pos= strmake(buf, get_var_type_name(), sizeof(buf)-23);
-@@ -5323,7 +5311,7 @@
- **************************************************************************/
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--void Rand_log_event::pack_info(Protocol *protocol)
-+void Rand_log_event::pack_info(THD *thd, Protocol *protocol)
- {
- char buf1[256], *pos;
- pos= strmov(buf1,"rand_seed1=");
-@@ -5421,7 +5409,7 @@
- **************************************************************************/
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--void Xid_log_event::pack_info(Protocol *protocol)
-+void Xid_log_event::pack_info(THD *thd, Protocol *protocol)
- {
- char buf[128], *pos;
- pos= strmov(buf, "COMMIT /* xid=");
-@@ -5508,69 +5496,109 @@
- **************************************************************************/
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--void User_var_log_event::pack_info(Protocol* protocol)
-+static bool
-+user_var_append_name_part(THD *thd, String *buf,
-+ const char *name, size_t name_len)
- {
-- char *buf= 0;
-- uint val_offset= 4 + name_len;
-- uint event_len= val_offset;
-+ return buf->append("@") ||
-+ append_identifier(thd, buf, name, name_len) ||
-+ buf->append("=");
-+}
-
-+void User_var_log_event::pack_info(THD *thd, Protocol* protocol)
-+{
- if (is_null)
- {
-- if (!(buf= (char*) my_malloc(val_offset + 5, MYF(MY_WME))))
-+ char buf_mem[FN_REFLEN+7];
-+ String buf(buf_mem, sizeof(buf_mem), system_charset_info);
-+ buf.length(0);
-+ if (user_var_append_name_part(thd, &buf, name, name_len) ||
-+ buf.append("NULL"))
- return;
-- strmov(buf + val_offset, "NULL");
-- event_len= val_offset + 4;
-+ protocol->store(buf.ptr(), buf.length(), &my_charset_bin);
- }
- else
- {
- switch (type) {
- case REAL_RESULT:
-+ {
- double real_val;
-+ char buf2[FLOATING_POINT_BUFFER];
-+ char buf_mem[FN_REFLEN + FLOATING_POINT_BUFFER];
-+ String buf(buf_mem, sizeof(buf_mem), system_charset_info);
- float8get(real_val, val);
-- if (!(buf= (char*) my_malloc(val_offset + FLOATING_POINT_BUFFER,
-- MYF(MY_WME))))
-- return;
-- event_len+= my_sprintf(buf + val_offset,
-- (buf + val_offset, "%.14g", real_val));
-+ buf.length(0);
-+ my_sprintf(buf2, (buf2, "%.14g", real_val));
-+ if (user_var_append_name_part(thd, &buf, name, name_len) ||
-+ buf.append(buf2))
-+ return;
-+ protocol->store(buf.ptr(), buf.length(), &my_charset_bin);
- break;
-+ }
- case INT_RESULT:
-- if (!(buf= (char*) my_malloc(val_offset + 22, MYF(MY_WME))))
-+ {
-+ char buf2[22];
-+ char buf_mem[FN_REFLEN + 22];
-+ String buf(buf_mem, sizeof(buf_mem), system_charset_info);
-+ buf.length(0);
-+ if (user_var_append_name_part(thd, &buf, name, name_len) ||
-+ buf.append(buf2, longlong10_to_str(uint8korr(val), buf2, -10)-buf2))
- return;
-- event_len= longlong10_to_str(uint8korr(val), buf + val_offset,-10)-buf;
-+ protocol->store(buf.ptr(), buf.length(), &my_charset_bin);
- break;
-+ }
- case DECIMAL_RESULT:
- {
-- if (!(buf= (char*) my_malloc(val_offset + DECIMAL_MAX_STR_LENGTH,
-- MYF(MY_WME))))
-- return;
-- String str(buf+val_offset, DECIMAL_MAX_STR_LENGTH, &my_charset_bin);
-+ char buf_mem[FN_REFLEN + DECIMAL_MAX_STR_LENGTH];
-+ String buf(buf_mem, sizeof(buf_mem), system_charset_info);
-+ char buf2[DECIMAL_MAX_STR_LENGTH+1];
-+ String str(buf2, sizeof(buf2), &my_charset_bin);
- my_decimal dec;
-+ buf.length(0);
- binary2my_decimal(E_DEC_FATAL_ERROR, (uchar*) (val+2), &dec, val[0],
- val[1]);
- my_decimal2string(E_DEC_FATAL_ERROR, &dec, 0, 0, 0, &str);
-- event_len= str.length() + val_offset;
-+ if (user_var_append_name_part(thd, &buf, name, name_len) ||
-+ buf.append(buf2))
-+ return;
-+ protocol->store(buf.ptr(), buf.length(), &my_charset_bin);
- break;
- }
- case STRING_RESULT:
-+ {
- /* 15 is for 'COLLATE' and other chars */
-- buf= (char*) my_malloc(event_len+val_len*2+1+2*MY_CS_NAME_SIZE+15,
-- MYF(MY_WME));
-+ char buf_mem[FN_REFLEN + 512 + 1 + 2*MY_CS_NAME_SIZE+15];
-+ String buf(buf_mem, sizeof(buf_mem), system_charset_info);
- CHARSET_INFO *cs;
-- if (!buf)
-- return;
-+ buf.length(0);
- if (!(cs= get_charset(charset_number, MYF(0))))
- {
-- strmov(buf+val_offset, "???");
-- event_len+= 3;
-+ if (buf.append("???"))
-+ return;
- }
- else
- {
-- char *p= strxmov(buf + val_offset, "_", cs->csname, " ", NullS);
-- p= str_to_hex(p, val, val_len);
-- p= strxmov(p, " COLLATE ", cs->name, NullS);
-- event_len= p-buf;
-+ size_t old_len;
-+ char *beg, *end;
-+ if (user_var_append_name_part(thd, &buf, name, name_len) ||
-+ buf.append("_") ||
-+ buf.append(cs->csname) ||
-+ buf.append(" "))
-+ return;
-+ old_len= buf.length();
-+ if (buf.reserve(old_len + val_len*2 + 2 + sizeof(" COLLATE ") +
-+ MY_CS_NAME_SIZE))
-+ return;
-+ beg= const_cast<char *>(buf.ptr()) + old_len;
-+ end= str_to_hex(beg, val, val_len);
-+ buf.length(old_len + (end - beg));
-+ if (buf.append(" COLLATE ") ||
-+ buf.append(cs->name))
-+ return;
- }
-+ protocol->store(buf.ptr(), buf.length(), &my_charset_bin);
- break;
-+ }
- case ROW_RESULT:
- case IMPOSSIBLE_RESULT:
- default:
-@@ -5578,13 +5606,6 @@
- return;
- }
- }
-- buf[0]= '@';
-- buf[1]= '`';
-- memcpy(buf+2, name, name_len);
-- buf[2+name_len]= '`';
-- buf[3+name_len]= '=';
-- protocol->store(buf, event_len, &my_charset_bin);
-- my_free(buf, MYF(0));
- }
- #endif /* !MYSQL_CLIENT */
-
-@@ -5700,9 +5721,8 @@
- my_b_printf(&cache, "\tUser_var\n");
- }
-
-- my_b_printf(&cache, "SET @`");
-- my_b_write(&cache, (uchar*) name, (uint) (name_len));
-- my_b_printf(&cache, "`");
-+ my_b_printf(&cache, "SET @");
-+ my_b_write_backtick_quote(&cache, name, name_len);
-
- if (is_null)
- {
-@@ -5775,7 +5795,7 @@
- */
- my_b_printf(&cache, ":=???%s\n", print_event_info->delimiter);
- else
-- my_b_printf(&cache, ":=_%s %s COLLATE `%s`%s\n",
-+ my_b_printf(&cache, ":=_%s %s COLLATE %`s%s\n",
- cs->csname, hex_str, cs->name,
- print_event_info->delimiter);
- my_afree(hex_str);
-@@ -5914,7 +5934,7 @@
- #endif
-
- #ifndef MYSQL_CLIENT
--void Slave_log_event::pack_info(Protocol *protocol)
-+void Slave_log_event::pack_info(THD *thd, Protocol *protocol)
- {
- char buf[256+HOSTNAME_LENGTH], *pos;
- pos= strmov(buf, "host=");
-@@ -6286,7 +6306,7 @@
- */
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--void Create_file_log_event::pack_info(Protocol *protocol)
-+void Create_file_log_event::pack_info(THD *thd, Protocol *protocol)
- {
- char buf[SAFE_NAME_LEN*2 + 30 + 21*2], *pos;
- pos= strmov(buf, "db=");
-@@ -6467,7 +6487,7 @@
- */
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--void Append_block_log_event::pack_info(Protocol *protocol)
-+void Append_block_log_event::pack_info(THD *thd, Protocol *protocol)
- {
- char buf[256];
- uint length;
-@@ -6619,7 +6639,7 @@
- */
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--void Delete_file_log_event::pack_info(Protocol *protocol)
-+void Delete_file_log_event::pack_info(THD *thd, Protocol *protocol)
- {
- char buf[64];
- uint length;
-@@ -6717,7 +6737,7 @@
- */
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--void Execute_load_log_event::pack_info(Protocol *protocol)
-+void Execute_load_log_event::pack_info(THD *thd, Protocol *protocol)
- {
- char buf[64];
- uint length;
-@@ -6970,27 +6990,26 @@
-
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--void Execute_load_query_log_event::pack_info(Protocol *protocol)
-+void Execute_load_query_log_event::pack_info(THD *thd, Protocol *protocol)
- {
-- char *buf, *pos;
-- if (!(buf= (char*) my_malloc(9 + db_len + q_len + 10 + 21, MYF(MY_WME))))
-- return;
-- pos= buf;
-+ char buf_mem[1024];
-+ char file_id_buf[22];
-+ String buf(buf_mem, sizeof(buf_mem), system_charset_info);
-+ buf.real_alloc(9 + db_len + q_len + 10 + 21);
- if (db && db_len)
- {
-- pos= strmov(buf, "use `");
-- memcpy(pos, db, db_len);
-- pos= strmov(pos+db_len, "`; ");
-- }
-- if (query && q_len)
-- {
-- memcpy(pos, query, q_len);
-- pos+= q_len;
-- }
-- pos= strmov(pos, " ;file_id=");
-- pos= int10_to_str((long) file_id, pos, 10);
-- protocol->store(buf, pos-buf, &my_charset_bin);
-- my_free(buf, MYF(MY_ALLOW_ZERO_PTR));
-+ if (buf.append("use ") ||
-+ append_identifier(thd, &buf, db, db_len) ||
-+ buf.append("; "))
-+ return;
-+ }
-+ if (query && q_len && buf.append(query, q_len))
-+ return;
-+ int10_to_str((long) file_id, file_id_buf, 10);
-+ if (buf.append(" ;file_id=") ||
-+ buf.append(file_id_buf))
-+ return;
-+ protocol->store(buf.ptr(), buf.length(), &my_charset_bin);
- }
-
-
-@@ -7932,7 +7951,7 @@
- #endif
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--void Rows_log_event::pack_info(Protocol *protocol)
-+void Rows_log_event::pack_info(THD *thd, Protocol *protocol)
- {
- char buf[256];
- char const *const flagstr=
-@@ -8638,7 +8657,7 @@
- */
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--void Table_map_log_event::pack_info(Protocol *protocol)
-+void Table_map_log_event::pack_info(THD *thd, Protocol *protocol)
- {
- char buf[256];
- size_t bytes= my_snprintf(buf, sizeof(buf),
-@@ -8659,7 +8678,7 @@
- {
- print_header(&print_event_info->head_cache, print_event_info, TRUE);
- my_b_printf(&print_event_info->head_cache,
-- "\tTable_map: `%s`.`%s` mapped to number %lu\n",
-+ "\tTable_map: %`s.%`s mapped to number %lu\n",
- m_dbnam, m_tblnam, m_table_id);
- print_base64(&print_event_info->body_cache, print_event_info, TRUE);
- }
-@@ -9859,7 +9878,7 @@
-
-
- #ifndef MYSQL_CLIENT
--void Incident_log_event::pack_info(Protocol *protocol)
-+void Incident_log_event::pack_info(THD *thd, Protocol *protocol)
- {
- char buf[256];
- size_t bytes;
-
-=== modified file 'sql/log_event.h'
---- sql/log_event.h 2011-11-24 16:48:58 +0000
-+++ sql/log_event.h 2012-08-24 10:32:46 +0000
-@@ -954,14 +954,15 @@
- */
- static void init_show_field_list(List<Item>* field_list);
- #ifdef HAVE_REPLICATION
-- int net_send(Protocol *protocol, const char* log_name, my_off_t pos);
-+ int net_send(THD *thd, Protocol *protocol, const char* log_name,
-+ my_off_t pos);
-
- /*
- pack_info() is used by SHOW BINLOG EVENTS; as print() it prepares and sends
- a string to display to the user, so it resembles print().
- */
-
-- virtual void pack_info(Protocol *protocol);
-+ virtual void pack_info(THD *thd, Protocol *protocol);
-
- #endif /* HAVE_REPLICATION */
- virtual const char* get_db()
-@@ -1661,7 +1662,7 @@
- bool using_trans, bool suppress_use, int error);
- const char* get_db() { return db; }
- #ifdef HAVE_REPLICATION
-- void pack_info(Protocol* protocol);
-+ void pack_info(THD *thd, Protocol* protocol);
- #endif /* HAVE_REPLICATION */
- #else
- void print_query_header(IO_CACHE* file, PRINT_EVENT_INFO* print_event_info);
-@@ -1791,7 +1792,7 @@
-
- #ifndef MYSQL_CLIENT
- Slave_log_event(THD* thd_arg, Relay_log_info* rli);
-- void pack_info(Protocol* protocol);
-+ void pack_info(THD *thd, Protocol* protocol);
- #else
- void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
- #endif
-@@ -2024,9 +2025,11 @@
- const Format_description_log_event* description_event);
-
- public:
-- uint get_query_buffer_length();
-- void print_query(bool need_db, const char *cs, char *buf, char **end,
-- char **fn_start, char **fn_end);
-+#ifndef MYSQL_CLIENT
-+ void print_query(THD *thd, bool need_db, const char *cs, String *buf,
-+ my_off_t *fn_start, my_off_t *fn_end,
-+ const char *qualify_db);
-+#endif
- ulong thread_id;
- ulong slave_proxy_id;
- uint32 table_name_len;
-@@ -2074,7 +2077,7 @@
- Name_resolution_context *context);
- const char* get_db() { return db; }
- #ifdef HAVE_REPLICATION
-- void pack_info(Protocol* protocol);
-+ void pack_info(THD *thd, Protocol* protocol);
- #endif /* HAVE_REPLICATION */
- #else
- void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
-@@ -2173,7 +2176,7 @@
- #ifndef MYSQL_CLIENT
- Start_log_event_v3();
- #ifdef HAVE_REPLICATION
-- void pack_info(Protocol* protocol);
-+ void pack_info(THD *thd, Protocol* protocol);
- #endif /* HAVE_REPLICATION */
- #else
- Start_log_event_v3() {}
-@@ -2325,7 +2328,7 @@
- :Log_event(thd_arg,0,0),val(val_arg),type(type_arg)
- {}
- #ifdef HAVE_REPLICATION
-- void pack_info(Protocol* protocol);
-+ void pack_info(THD *thd, Protocol* protocol);
- #endif /* HAVE_REPLICATION */
- #else
- void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
-@@ -2401,7 +2404,7 @@
- :Log_event(thd_arg,0,0),seed1(seed1_arg),seed2(seed2_arg)
- {}
- #ifdef HAVE_REPLICATION
-- void pack_info(Protocol* protocol);
-+ void pack_info(THD *thd, Protocol* protocol);
- #endif /* HAVE_REPLICATION */
- #else
- void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
-@@ -2445,7 +2448,7 @@
- #ifndef MYSQL_CLIENT
- Xid_log_event(THD* thd_arg, my_xid x): Log_event(thd_arg,0,0), xid(x) {}
- #ifdef HAVE_REPLICATION
-- void pack_info(Protocol* protocol);
-+ void pack_info(THD *thd, Protocol* protocol);
- #endif /* HAVE_REPLICATION */
- #else
- void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
-@@ -2494,7 +2497,7 @@
- :Log_event(), name(name_arg), name_len(name_len_arg), val(val_arg),
- val_len(val_len_arg), type(type_arg), charset_number(charset_number_arg)
- { is_null= !val; }
-- void pack_info(Protocol* protocol);
-+ void pack_info(THD *thd, Protocol* protocol);
- #else
- void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
- #endif
-@@ -2625,7 +2628,7 @@
- uint ident_len_arg,
- ulonglong pos_arg, uint flags);
- #ifdef HAVE_REPLICATION
-- void pack_info(Protocol* protocol);
-+ void pack_info(THD *thd, Protocol* protocol);
- #endif /* HAVE_REPLICATION */
- #else
- void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
-@@ -2685,7 +2688,7 @@
- uchar* block_arg, uint block_len_arg,
- bool using_trans);
- #ifdef HAVE_REPLICATION
-- void pack_info(Protocol* protocol);
-+ void pack_info(THD *thd, Protocol* protocol);
- #endif /* HAVE_REPLICATION */
- #else
- void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
-@@ -2757,7 +2760,7 @@
- Append_block_log_event(THD* thd, const char* db_arg, uchar* block_arg,
- uint block_len_arg, bool using_trans);
- #ifdef HAVE_REPLICATION
-- void pack_info(Protocol* protocol);
-+ void pack_info(THD *thd, Protocol* protocol);
- virtual int get_create_or_append() const;
- #endif /* HAVE_REPLICATION */
- #else
-@@ -2798,7 +2801,7 @@
- #ifndef MYSQL_CLIENT
- Delete_file_log_event(THD* thd, const char* db_arg, bool using_trans);
- #ifdef HAVE_REPLICATION
-- void pack_info(Protocol* protocol);
-+ void pack_info(THD *thd, Protocol* protocol);
- #endif /* HAVE_REPLICATION */
- #else
- void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
-@@ -2839,7 +2842,7 @@
- #ifndef MYSQL_CLIENT
- Execute_load_log_event(THD* thd, const char* db_arg, bool using_trans);
- #ifdef HAVE_REPLICATION
-- void pack_info(Protocol* protocol);
-+ void pack_info(THD *thd, Protocol* protocol);
- #endif /* HAVE_REPLICATION */
- #else
- void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
-@@ -2935,7 +2938,7 @@
- bool using_trans, bool suppress_use,
- int errcode);
- #ifdef HAVE_REPLICATION
-- void pack_info(Protocol* protocol);
-+ void pack_info(THD *thd, Protocol* protocol);
- #endif /* HAVE_REPLICATION */
- #else
- void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
-@@ -3382,7 +3385,7 @@
- #endif
-
- #if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-- virtual void pack_info(Protocol *protocol);
-+ virtual void pack_info(THD *thd, Protocol *protocol);
- #endif
-
- #ifdef MYSQL_CLIENT
-@@ -3494,7 +3497,7 @@
- flag_set get_flags(flag_set flags_arg) const { return m_flags & flags_arg; }
-
- #if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-- virtual void pack_info(Protocol *protocol);
-+ virtual void pack_info(THD *thd, Protocol *protocol);
- #endif
-
- #ifdef MYSQL_CLIENT
-@@ -3931,7 +3934,7 @@
- #endif
-
- #ifndef MYSQL_CLIENT
-- void pack_info(Protocol*);
-+ void pack_info(THD *thd, Protocol*);
- #endif
-
- Incident_log_event(const char *buf, uint event_len,
-
-=== modified file 'sql/log_event_old.cc'
---- sql/log_event_old.cc 2011-11-24 16:48:58 +0000
-+++ sql/log_event_old.cc 2012-08-24 10:32:46 +0000
-@@ -2008,7 +2008,7 @@
-
-
- #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
--void Old_rows_log_event::pack_info(Protocol *protocol)
-+void Old_rows_log_event::pack_info(THD *thd, Protocol *protocol)
- {
- char buf[256];
- char const *const flagstr=
-
-=== modified file 'sql/log_event_old.h'
---- sql/log_event_old.h 2011-02-20 16:51:43 +0000
-+++ sql/log_event_old.h 2012-08-24 08:06:16 +0000
-@@ -108,7 +108,7 @@
- flag_set get_flags(flag_set flags_arg) const { return m_flags & flags_arg; }
-
- #if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-- virtual void pack_info(Protocol *protocol);
-+ virtual void pack_info(THD *thd, Protocol *protocol);
- #endif
-
- #ifdef MYSQL_CLIENT
-
-=== modified file 'sql/mysql_priv.h'
---- sql/mysql_priv.h 2012-05-18 12:23:05 +0000
-+++ sql/mysql_priv.h 2012-08-24 10:32:46 +0000
-@@ -1397,7 +1397,7 @@
- /* sql_show.cc */
- bool mysqld_show_open_tables(THD *thd,const char *wild);
- bool mysqld_show_logs(THD *thd);
--void append_identifier(THD *thd, String *packet, const char *name,
-+bool append_identifier(THD *thd, String *packet, const char *name,
- uint length);
- #endif /* MYSQL_SERVER */
- #if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS
-
-=== modified file 'sql/sql_base.cc'
---- sql/sql_base.cc 2011-12-29 23:09:20 +0000
-+++ sql/sql_base.cc 2012-08-24 10:32:46 +0000
-@@ -4195,22 +4195,22 @@
- entry->file->implicit_emptied= 0;
- if (mysql_bin_log.is_open())
- {
-- char *query, *end;
-- uint query_buf_size= 20 + share->db.length + share->table_name.length +1;
-- if ((query= (char*) my_malloc(query_buf_size,MYF(MY_WME))))
-+ char query_buf[2*FN_REFLEN + 21];
-+ String query(query_buf, sizeof(query_buf), system_charset_info);
-+ query.length(0);
-+ if (query.ptr())
- {
- /* this DELETE FROM is needed even with row-based binlogging */
-- end = strxmov(strmov(query, "DELETE FROM `"),
-- share->db.str,"`.`",share->table_name.str,"`", NullS);
-+ query.append("DELETE FROM ");
-+ append_identifier(thd, &query, share->db.str, share->db.length);
-+ query.append(".");
-+ append_identifier(thd, &query, share->table_name.str,
-+ share->table_name.length);
- int errcode= query_error_code(thd, TRUE);
- if (thd->binlog_query(THD::STMT_QUERY_TYPE,
-- query, (ulong)(end-query),
-+ query.ptr(), query.length(),
- FALSE, FALSE, errcode))
-- {
-- my_free(query, MYF(0));
- goto err;
-- }
-- my_free(query, MYF(0));
- }
- else
- {
-@@ -4220,7 +4220,7 @@
- because of MYF(MY_WME) in my_malloc() above).
- */
- sql_print_error("When opening HEAP table, could not allocate memory "
-- "to write 'DELETE FROM `%s`.`%s`' to the binary log",
-+ "to write 'DELETE FROM %`s.%`s' to the binary log",
- table_list->db, table_list->table_name);
- delete entry->triggers;
- closefrm(entry, 0);
-
-=== modified file 'sql/sql_db.cc'
---- sql/sql_db.cc 2011-11-24 16:48:58 +0000
-+++ sql/sql_db.cc 2012-08-24 10:32:46 +0000
-@@ -613,7 +613,6 @@
- bool silent)
- {
- char path[FN_REFLEN+16];
-- char tmp_query[FN_REFLEN+16];
- long result= 1;
- int error= 0;
- MY_STAT stat_info;
-@@ -720,17 +719,9 @@
- char *query;
- uint query_length;
-
-- if (!thd->query()) // Only in replication
-- {
-- query= tmp_query;
-- query_length= (uint) (strxmov(tmp_query,"create database `",
-- db, "`", NullS) - tmp_query);
-- }
-- else
-- {
-- query= thd->query();
-- query_length= thd->query_length();
-- }
-+ query= thd->query();
-+ query_length= thd->query_length();
-+ DBUG_ASSERT(query);
-
- ha_binlog_log_query(thd, 0, LOGCOM_CREATE_DB,
- query, query_length,
-@@ -990,18 +981,11 @@
- {
- const char *query;
- ulong query_length;
-- if (!thd->query())
-- {
-- /* The client used the old obsolete mysql_drop_db() call */
-- query= path;
-- query_length= (uint) (strxmov(path, "drop database `", db, "`",
-- NullS) - path);
-- }
-- else
-- {
-- query= thd->query();
-- query_length= thd->query_length();
-- }
-+
-+ query= thd->query();
-+ query_length= thd->query_length();
-+ DBUG_ASSERT(query);
-+
- if (mysql_bin_log.is_open())
- {
- thd->clear_error();
-@@ -1042,9 +1026,10 @@
- for (tbl= dropped_tables; tbl; tbl= tbl->next_local)
- {
- uint tbl_name_len;
-+ char quoted_name[FN_REFLEN+3];
-
-- /* 3 for the quotes and the comma*/
-- tbl_name_len= strlen(tbl->table_name) + 3;
-+ my_snprintf(quoted_name, sizeof(quoted_name), "%`s", tbl->table_name);
-+ tbl_name_len= strlen(quoted_name) + 1; /* +1 for the comma */
- if (query_pos + tbl_name_len + 1 >= query_end)
- {
- /* These DDL methods and logging protected with LOCK_mysql_create_db */
-@@ -1056,9 +1041,7 @@
- query_pos= query_data_start;
- }
-
-- *query_pos++ = '`';
-- query_pos= strmov(query_pos,tbl->table_name);
-- *query_pos++ = '`';
-+ query_pos= strmov(query_pos, quoted_name);
- *query_pos++ = ',';
- }
-
-
-=== modified file 'sql/sql_insert.cc'
---- sql/sql_insert.cc 2012-02-03 08:28:23 +0000
-+++ sql/sql_insert.cc 2012-08-24 10:32:46 +0000
-@@ -3480,16 +3480,16 @@
- if (thd->lex->create_select_in_comment)
- query.append(STRING_WITH_LEN("/*! "));
- if (thd->lex->ignore)
-- query.append(STRING_WITH_LEN("INSERT IGNORE INTO `"));
-+ query.append(STRING_WITH_LEN("INSERT IGNORE INTO "));
- else if (thd->lex->duplicates == DUP_REPLACE)
-- query.append(STRING_WITH_LEN("REPLACE INTO `"));
-+ query.append(STRING_WITH_LEN("REPLACE INTO "));
- else
-- query.append(STRING_WITH_LEN("INSERT INTO `"));
-+ query.append(STRING_WITH_LEN("INSERT INTO "));
-
-- query.append(create_table->db, db_len);
-- query.append(STRING_WITH_LEN("`.`"));
-- query.append(create_info->alias, table_len);
-- query.append(STRING_WITH_LEN("` "));
-+ append_identifier(thd, &query, create_table->db, db_len);
-+ query.append(STRING_WITH_LEN("."));
-+ append_identifier(thd, &query, create_info->alias, table_len);
-+ query.append(STRING_WITH_LEN(" "));
-
- /*
- The insert items.
-
-=== modified file 'sql/sql_load.cc'
---- sql/sql_load.cc 2012-04-05 10:01:52 +0000
-+++ sql/sql_load.cc 2012-08-24 10:32:46 +0000
-@@ -24,6 +24,7 @@
- #include "sql_repl.h"
- #include "sp_head.h"
- #include "sql_trigger.h"
-+#include "sql_show.h"
-
- class READ_INFO {
- File file;
-@@ -606,24 +607,31 @@
- bool transactional_table,
- int errcode)
- {
-- char *load_data_query,
-- *end,
-- *fname_start,
-- *fname_end,
-- *p= NULL;
-- size_t pl= 0;
-+ char *load_data_query;
-+ my_off_t fname_start,
-+ fname_end;
- List<Item> fv;
- Item *item, *val;
- int n;
-- const char *tbl= table_name_arg;
- const char *tdb= (thd->db != NULL ? thd->db : db_arg);
-+ const char *qualify_db= NULL;
- char name_buffer[SAFE_NAME_LEN*2];
- char command_buffer[1024];
- String string_buf(name_buffer, sizeof(name_buffer),
- system_charset_info);
-- String pfields(command_buffer, sizeof(command_buffer),
-+ String query_str(command_buffer, sizeof(command_buffer),
- system_charset_info);
-
-+ Load_log_event lle(thd, ex, tdb, table_name_arg, fv, duplicates,
-+ ignore, transactional_table);
-+
-+ /*
-+ force in a LOCAL if there was one in the original.
-+ */
-+ if (thd->lex->local_file)
-+ lle.set_fname_outside_temp_buf(ex->file_name, strlen(ex->file_name));
-+
-+ query_str.length(0);
- if (!thd->db || strcmp(db_arg, thd->db))
- {
- /*
-@@ -631,49 +639,31 @@
- prefix table name with database name so that it
- becomes a FQ name.
- */
-- string_buf.length(0);
-- string_buf.append(db_arg);
-- string_buf.append("`");
-- string_buf.append(".");
-- string_buf.append("`");
-- string_buf.append(table_name_arg);
-- tbl= string_buf.c_ptr_safe();
-+ qualify_db= db_arg;
- }
--
-- Load_log_event lle(thd, ex, tdb, tbl, fv, duplicates,
-- ignore, transactional_table);
--
-- /*
-- force in a LOCAL if there was one in the original.
-- */
-- if (thd->lex->local_file)
-- lle.set_fname_outside_temp_buf(ex->file_name, strlen(ex->file_name));
-+ lle.print_query(thd, FALSE, (const char *) ex->cs?ex->cs->csname:NULL,
-+ &query_str, &fname_start, &fname_end, qualify_db);
-
- /*
- prepare fields-list and SET if needed; print_query won't do that for us.
- */
-- pfields.length(0);
- if (!thd->lex->field_list.is_empty())
- {
- List_iterator<Item> li(thd->lex->field_list);
-
-- pfields.append(" (");
-+ query_str.append(" (");
- n= 0;
-
- while ((item= li++))
- {
- if (n++)
-- pfields.append(", ");
-+ query_str.append(", ");
- if (item->name)
-- {
-- pfields.append("`");
-- pfields.append(item->name);
-- pfields.append("`");
-- }
-+ append_identifier(thd, &query_str, item->name, strlen(item->name));
- else
-- item->print(&pfields, QT_ORDINARY);
-+ ((Item_user_var_as_out_param *)item)->print_for_load(thd, &query_str);
- }
-- pfields.append(")");
-+ query_str.append(")");
- }
-
- if (!thd->lex->update_list.is_empty())
-@@ -681,39 +671,26 @@
- List_iterator<Item> lu(thd->lex->update_list);
- List_iterator<Item> lv(thd->lex->value_list);
-
-- pfields.append(" SET ");
-+ query_str.append(" SET ");
- n= 0;
-
- while ((item= lu++))
- {
- val= lv++;
- if (n++)
-- pfields.append(", ");
-- pfields.append("`");
-- pfields.append(item->name);
-- pfields.append("`");
-- pfields.append("=");
-- val->print(&pfields, QT_ORDINARY);
-+ query_str.append(", ");
-+ append_identifier(thd, &query_str, item->name, strlen(item->name));
-+ query_str.append("=");
-+ val->print(&query_str, QT_ORDINARY);
- }
- }
-
-- p= pfields.c_ptr_safe();
-- pl= pfields.length();
--
-- if (!(load_data_query= (char *)thd->alloc(lle.get_query_buffer_length() + 1 + pl)))
-+ if (!(load_data_query= (char *)thd->strmake(query_str.ptr(), query_str.length())))
- return TRUE;
-
-- lle.print_query(FALSE, (const char *) ex->cs?ex->cs->csname:NULL,
-- load_data_query, &end,
-- (char **)&fname_start, (char **)&fname_end);
--
-- strcpy(end, p);
-- end += pl;
--
- Execute_load_query_log_event
-- e(thd, load_data_query, end-load_data_query,
-- (uint) ((char*) fname_start - load_data_query - 1),
-- (uint) ((char*) fname_end - load_data_query),
-+ e(thd, load_data_query, query_str.length(),
-+ (uint) (fname_start - 1), (uint) fname_end,
- (duplicates == DUP_REPLACE) ? LOAD_DUP_REPLACE :
- (ignore ? LOAD_DUP_IGNORE : LOAD_DUP_ERROR),
- transactional_table, FALSE, errcode);
-
-=== modified file 'sql/sql_repl.cc'
---- sql/sql_repl.cc 2011-11-21 17:13:14 +0000
-+++ sql/sql_repl.cc 2012-08-24 08:06:16 +0000
-@@ -1554,7 +1554,7 @@
- description_event)); )
- {
- if (event_count >= limit_start &&
-- ev->net_send(protocol, linfo.log_file_name, pos))
-+ ev->net_send(thd, protocol, linfo.log_file_name, pos))
- {
- errmsg = "Net error";
- delete ev;
-
-=== modified file 'sql/sql_show.cc'
---- sql/sql_show.cc 2012-05-18 12:23:05 +0000
-+++ sql/sql_show.cc 2012-08-24 10:32:46 +0000
-@@ -1051,9 +1051,13 @@
- packet target string
- name the identifier to be appended
- name_length length of the appending identifier
-+
-+ RETURN VALUES
-+ true Error
-+ false Ok
- */
-
--void
-+bool
- append_identifier(THD *thd, String *packet, const char *name, uint length)
- {
- const char *name_end;
-@@ -1061,10 +1065,7 @@
- int q= get_quote_char_for_identifier(thd, name, length);
-
- if (q == EOF)
-- {
-- packet->append(name, length, packet->charset());
-- return;
-- }
-+ return packet->append(name, length, packet->charset());
-
- /*
- The identifier must be quoted as it includes a quote character or
-@@ -1073,7 +1074,8 @@
-
- VOID(packet->reserve(length*2 + 2));
- quote_char= (char) q;
-- packet->append(&quote_char, 1, system_charset_info);
-+ if (packet->append(&quote_char, 1, system_charset_info))
-+ return true;
-
- for (name_end= name+length ; name < name_end ; name+= length)
- {
-@@ -1088,11 +1090,13 @@
- */
- if (!length)
- length= 1;
-- if (length == 1 && chr == (uchar) quote_char)
-- packet->append(&quote_char, 1, system_charset_info);
-- packet->append(name, length, system_charset_info);
-+ if (length == 1 && chr == (uchar) quote_char &&
-+ packet->append(&quote_char, 1, system_charset_info))
-+ return true;
-+ if (packet->append(name, length, system_charset_info))
-+ return true;
- }
-- packet->append(&quote_char, 1, system_charset_info);
-+ return packet->append(&quote_char, 1, system_charset_info);
- }
-
-
-
-=== modified file 'sql/sql_string.cc'
---- sql/sql_string.cc 2012-04-05 10:01:52 +0000
-+++ sql/sql_string.cc 2012-08-24 10:32:46 +0000
-@@ -1159,39 +1159,47 @@
-
-
-
--
--void String::print(String *str)
-+/*
-+ Append characters to a single-quoted string '...', escaping special
-+ characters as necessary.
-+ Does not add the enclosing quotes, this is left up to caller.
-+*/
-+void String::append_for_single_quote(const char *st, uint len)
- {
-- char *st= (char*)Ptr, *end= st+str_length;
-+ const char *end= st+len;
- for (; st < end; st++)
- {
- uchar c= *st;
- switch (c)
- {
- case '\\':
-- str->append(STRING_WITH_LEN("\\\\"));
-+ append(STRING_WITH_LEN("\\\\"));
- break;
- case '\0':
-- str->append(STRING_WITH_LEN("\\0"));
-+ append(STRING_WITH_LEN("\\0"));
- break;
- case '\'':
-- str->append(STRING_WITH_LEN("\\'"));
-+ append(STRING_WITH_LEN("\\'"));
- break;
- case '\n':
-- str->append(STRING_WITH_LEN("\\n"));
-+ append(STRING_WITH_LEN("\\n"));
- break;
- case '\r':
-- str->append(STRING_WITH_LEN("\\r"));
-+ append(STRING_WITH_LEN("\\r"));
- break;
- case '\032': // Ctrl-Z
-- str->append(STRING_WITH_LEN("\\Z"));
-+ append(STRING_WITH_LEN("\\Z"));
- break;
- default:
-- str->append(c);
-+ append(c);
- }
- }
- }
-
-+void String::print(String *str)
-+{
-+ str->append_for_single_quote(Ptr, str_length);
-+}
-
- /*
- Exchange state of this object and argument.
-
-=== modified file 'sql/sql_string.h'
---- sql/sql_string.h 2011-11-24 16:48:58 +0000
-+++ sql/sql_string.h 2012-08-24 10:32:46 +0000
-@@ -426,6 +426,7 @@
- return FALSE;
- }
- void print(String *print);
-+ void append_for_single_quote(const char *st, uint len);
-
- /* Swap two string objects. Efficient way to exchange data without memcpy. */
- void swap(String &s);
-
-=== modified file 'sql/sql_table.cc'
---- sql/sql_table.cc 2012-04-05 10:01:52 +0000
-+++ sql/sql_table.cc 2012-08-24 10:32:46 +0000
-@@ -1939,6 +1939,7 @@
- for (table= tables; table; table= table->next_local)
- {
- char *db=table->db;
-+ size_t db_length= table->db_length;
- handlerton *table_type;
- enum legacy_db_type frm_db_type= DB_TYPE_UNKNOWN;
-
-@@ -1961,14 +1962,14 @@
- built_tmp_query.append("DROP TEMPORARY TABLE IF EXISTS ");
- }
-
-- built_tmp_query.append("`");
- if (thd->db == NULL || strcmp(db,thd->db) != 0)
- {
-- built_tmp_query.append(db);
-- built_tmp_query.append("`.`");
-+ append_identifier(thd, &built_tmp_query, db, db_length);
-+ built_tmp_query.append(".");
- }
-- built_tmp_query.append(table->table_name);
-- built_tmp_query.append("`,");
-+ append_identifier(thd, &built_tmp_query, table->table_name,
-+ table->table_name_length);
-+ built_tmp_query.append(",");
- }
-
- continue;
-@@ -1994,15 +1995,15 @@
- Don't write the database name if it is the current one (or if
- thd->db is NULL).
- */
-- built_query.append("`");
- if (thd->db == NULL || strcmp(db,thd->db) != 0)
- {
-- built_query.append(db);
-- built_query.append("`.`");
-+ append_identifier(thd, &built_query, db, db_length);
-+ built_query.append(".");
- }
-
-- built_query.append(table->table_name);
-- built_query.append("`,");
-+ append_identifier(thd, &built_query, table->table_name,
-+ table->table_name_length);
-+ built_query.append(",");
- }
-
- if (!drop_temporary)
-
-=== modified file 'strings/my_vsnprintf.c'
---- strings/my_vsnprintf.c 2011-11-24 16:48:58 +0000
-+++ strings/my_vsnprintf.c 2012-08-24 10:32:46 +0000
-@@ -636,3 +636,66 @@
- return result;
- }
-
-+
-+/**
-+ Writes output to the stream according to a format string.
-+
-+ @param stream file to write to
-+ @param format string format
-+ @param args list of parameters
-+
-+ @retval
-+ number of the characters written.
-+*/
-+
-+int my_vfprintf(FILE *stream, const char* format, va_list args)
-+{
-+ char cvtbuf[1024];
-+ int alloc= 0;
-+ char *p= cvtbuf;
-+ size_t cur_len= sizeof(cvtbuf);
-+ int ret;
-+
-+ /*
-+ We do not know how much buffer we need.
-+ So start with a reasonably-sized stack-allocated buffer, and increase
-+ it exponentially until it is big enough.
-+ */
-+ for (;;)
-+ {
-+ size_t new_len;
-+ size_t actual= my_vsnprintf(p, cur_len, format, args);
-+ if (actual < cur_len - 1)
-+ break;
-+ /*
-+ Not enough space (or just enough with nothing to spare - but we cannot
-+ distinguish this case from the return value). Allocate a bigger buffer
-+ and try again.
-+ */
-+ if (alloc)
-+ (*my_str_free)(p);
-+ else
-+ alloc= 1;
-+ new_len= cur_len*2;
-+ if (new_len < cur_len)
-+ return 0; /* Overflow */
-+ cur_len= new_len;
-+ p= (*my_str_malloc)(cur_len);
-+ if (!p)
-+ return 0;
-+ }
-+ ret= fprintf(stream, "%s", p);
-+ if (alloc)
-+ (*my_str_free)(p);
-+ return ret;
-+}
-+
-+int my_fprintf(FILE *stream, const char* format, ...)
-+{
-+ int result;
-+ va_list args;
-+ va_start(args, format);
-+ result= my_vfprintf(stream, format, args);
-+ va_end(args);
-+ return result;
-+}
-