mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Fix for BUG#7793 "mysqlbinlog produces incorrect queries":
when printing SET @var in mysqlbinlog, backtick the collation (as BINARY is a reserved word)
This commit is contained in:
@ -520,7 +520,7 @@ Log_name Pos Event_type Server_id Orig_log_pos Info
|
|||||||
master-bin.000001 79 User var 1 79 @`v`=_ucs2 0x006100620063 COLLATE ucs2_general_ci
|
master-bin.000001 79 User var 1 79 @`v`=_ucs2 0x006100620063 COLLATE ucs2_general_ci
|
||||||
master-bin.000001 119 Query 1 119 use `test`; insert into t2 values (@v)
|
master-bin.000001 119 Query 1 119 use `test`; insert into t2 values (@v)
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
SET @`v`:=_ucs2 0x006100620063 COLLATE ucs2_general_ci;
|
SET @`v`:=_ucs2 0x006100620063 COLLATE `ucs2_general_ci`;
|
||||||
use test;
|
use test;
|
||||||
SET TIMESTAMP=10000;
|
SET TIMESTAMP=10000;
|
||||||
insert into t2 values (@v);
|
insert into t2 values (@v);
|
||||||
|
@ -168,21 +168,24 @@ SET TIMESTAMP=10000;
|
|||||||
SET @`a b`='hello';
|
SET @`a b`='hello';
|
||||||
INSERT INTO t1 VALUES(@`a b`);
|
INSERT INTO t1 VALUES(@`a b`);
|
||||||
set @var1= "';aaa";
|
set @var1= "';aaa";
|
||||||
insert into t1 values (@var1);
|
SET @var2=char(ascii('a'));
|
||||||
|
insert into t1 values (@var1),(@var2);
|
||||||
show binlog events from 79;
|
show binlog events from 79;
|
||||||
Log_name Pos Event_type Server_id Orig_log_pos Info
|
Log_name Pos Event_type Server_id Orig_log_pos Info
|
||||||
master-bin.000001 79 User var 1 79 @`a b`=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci
|
master-bin.000001 79 User var 1 79 @`a b`=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci
|
||||||
master-bin.000001 120 Query 1 120 use `test`; INSERT INTO t1 VALUES(@`a b`)
|
master-bin.000001 120 Query 1 120 use `test`; INSERT INTO t1 VALUES(@`a b`)
|
||||||
master-bin.000001 184 User var 1 184 @`var1`=_latin1 0x273B616161 COLLATE latin1_swedish_ci
|
master-bin.000001 184 User var 1 184 @`var1`=_latin1 0x273B616161 COLLATE latin1_swedish_ci
|
||||||
master-bin.000001 226 Query 1 226 use `test`; insert into t1 values (@var1)
|
master-bin.000001 226 User var 1 226 @`var2`=_binary 0x61 COLLATE binary
|
||||||
|
master-bin.000001 264 Query 1 264 use `test`; insert into t1 values (@var1),(@var2)
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
SET @`a b`:=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci;
|
SET @`a b`:=_latin1 0x68656C6C6F COLLATE `latin1_swedish_ci`;
|
||||||
use test;
|
use test;
|
||||||
SET TIMESTAMP=10000;
|
SET TIMESTAMP=10000;
|
||||||
INSERT INTO t1 VALUES(@`a b`);
|
INSERT INTO t1 VALUES(@`a b`);
|
||||||
SET @`var1`:=_latin1 0x273B616161 COLLATE latin1_swedish_ci;
|
SET @`var1`:=_latin1 0x273B616161 COLLATE `latin1_swedish_ci`;
|
||||||
|
SET @`var2`:=_binary 0x61 COLLATE `binary`;
|
||||||
SET TIMESTAMP=10000;
|
SET TIMESTAMP=10000;
|
||||||
insert into t1 values (@var1);
|
insert into t1 values (@var1),(@var2);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set @var= NULL ;
|
set @var= NULL ;
|
||||||
select FIELD( @var,'1it','Hit') as my_column;
|
select FIELD( @var,'1it','Hit') as my_column;
|
||||||
|
@ -107,7 +107,8 @@ SET TIMESTAMP=10000;
|
|||||||
SET @`a b`='hello';
|
SET @`a b`='hello';
|
||||||
INSERT INTO t1 VALUES(@`a b`);
|
INSERT INTO t1 VALUES(@`a b`);
|
||||||
set @var1= "';aaa";
|
set @var1= "';aaa";
|
||||||
insert into t1 values (@var1);
|
SET @var2=char(ascii('a'));
|
||||||
|
insert into t1 values (@var1),(@var2);
|
||||||
show binlog events from 79;
|
show binlog events from 79;
|
||||||
# more important than SHOW BINLOG EVENTS, mysqlbinlog (where we
|
# more important than SHOW BINLOG EVENTS, mysqlbinlog (where we
|
||||||
# absolutely need variables names to be quoted and strings to be
|
# absolutely need variables names to be quoted and strings to be
|
||||||
|
@ -2459,7 +2459,7 @@ void User_var_log_event::print(FILE* file, bool short_form, char* last_db)
|
|||||||
*/
|
*/
|
||||||
fprintf(file, ":=???;\n");
|
fprintf(file, ":=???;\n");
|
||||||
else
|
else
|
||||||
fprintf(file, ":=_%s %s COLLATE %s;\n", cs->csname, hex_str, cs->name);
|
fprintf(file, ":=_%s %s COLLATE `%s`;\n", cs->csname, hex_str, cs->name);
|
||||||
my_afree(hex_str);
|
my_afree(hex_str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user