mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 20:36:16 +01:00 
			
		
		
		
	Commit a923d6f49c disabled numeric setting
of character_set_* variables with non-default values:
  MariaDB [(none)]> set character_set_client=224;
  ERROR 1115 (42000): Unknown character set: '224'
However the corresponding binlog functionality still write numeric
values for log event, and this will break binlog replay if the value is
not default. Now make the server use 'String' type for
'character_set_client' when generating binlog events
Before:
  /*!\C utf8mb4 *//*!*/;
  SET @@session.character_set_client=224,@@session.collation_connection=224,@@session.collation_server=33/*!*/;
After:
  /*!\C utf8mb4 *//*!*/;
  SET @@session.character_set_client=utf8mb4,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
Note: prior to the previous commit, setting with '224' or '45' or
'utf8mb4' have the same effect, as they all set the parameter to
'utf8mb4'.
All new code of the whole pull request, including one or several files
that are either new files or modified ones, are contributed under the
BSD-new license. I am contributing on behalf of my employer Amazon Web
Services, Inc.
		
	
			
		
			
				
	
	
		
			59 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
create table t1 (a varchar(50));
 | 
						|
reset master;
 | 
						|
SET TIMESTAMP=10000;
 | 
						|
SET @`a b`='hello';
 | 
						|
INSERT INTO t1 VALUES(@`a b`);
 | 
						|
set @var1= "';aaa";
 | 
						|
SET @var2=char(ascii('a'));
 | 
						|
insert into t1 values (@var1),(@var2);
 | 
						|
include/show_binlog_events.inc
 | 
						|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 | 
						|
master-bin.000001	#	Gtid	#	#	BEGIN GTID #-#-#
 | 
						|
master-bin.000001	#	User var	#	#	@`a b`=_latin1 X'68656C6C6F' COLLATE latin1_swedish_ci
 | 
						|
master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES(@`a b`)
 | 
						|
master-bin.000001	#	Query	#	#	COMMIT
 | 
						|
master-bin.000001	#	Gtid	#	#	BEGIN GTID #-#-#
 | 
						|
master-bin.000001	#	User var	#	#	@`var1`=_latin1 X'273B616161' COLLATE latin1_swedish_ci
 | 
						|
master-bin.000001	#	User var	#	#	@`var2`=_binary X'61' COLLATE binary
 | 
						|
master-bin.000001	#	Query	#	#	use `test`; insert into t1 values (@var1),(@var2)
 | 
						|
master-bin.000001	#	Query	#	#	COMMIT
 | 
						|
flush logs;
 | 
						|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
 | 
						|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
 | 
						|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
 | 
						|
DELIMITER /*!*/;
 | 
						|
ROLLBACK/*!*/;
 | 
						|
START TRANSACTION
 | 
						|
/*!*/;
 | 
						|
SET @`a b`:=_latin1 X'68656C6C6F' COLLATE `latin1_swedish_ci`/*!*/;
 | 
						|
use `test`/*!*/;
 | 
						|
SET TIMESTAMP=10000/*!*/;
 | 
						|
SET @@session.pseudo_thread_id=999999999/*!*/;
 | 
						|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
 | 
						|
SET @@session.sql_mode=1411383296/*!*/;
 | 
						|
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
 | 
						|
/*!\C latin1 *//*!*/;
 | 
						|
SET @@session.character_set_client=latin1,@@session.collation_connection=8,@@session.collation_server=#/*!*/;
 | 
						|
SET @@session.lc_time_names=0/*!*/;
 | 
						|
SET @@session.collation_database=DEFAULT/*!*/;
 | 
						|
INSERT INTO t1 VALUES(@`a b`)
 | 
						|
/*!*/;
 | 
						|
SET TIMESTAMP=10000/*!*/;
 | 
						|
COMMIT
 | 
						|
/*!*/;
 | 
						|
START TRANSACTION
 | 
						|
/*!*/;
 | 
						|
SET @`var1`:=_latin1 X'273B616161' COLLATE `latin1_swedish_ci`/*!*/;
 | 
						|
SET @`var2`:=_binary X'61' COLLATE `binary`/*!*/;
 | 
						|
SET TIMESTAMP=10000/*!*/;
 | 
						|
insert into t1 values (@var1),(@var2)
 | 
						|
/*!*/;
 | 
						|
SET TIMESTAMP=10000/*!*/;
 | 
						|
COMMIT
 | 
						|
/*!*/;
 | 
						|
DELIMITER ;
 | 
						|
# End of log file
 | 
						|
ROLLBACK /* added by mysqlbinlog */;
 | 
						|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
 | 
						|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
 | 
						|
drop table t1;
 |