mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 02:46:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| # Note: This test assumes NO_BACKSLASH_ESCAPES is not set in SQL_MODE.
 | |
| ##############################
 | |
| #      Setup
 | |
| ##############################
 | |
| #
 | |
| # Saving old state
 | |
| #
 | |
| set @old_sql_mode= @@global.SQL_MODE;
 | |
| set @@global.SQL_MODE= "";
 | |
| #
 | |
| # Create table for data entry
 | |
| #
 | |
| CREATE TABLE tb (`id` int(11) NOT NULL AUTO_INCREMENT,`cb` longblob DEFAULT NULL, PRIMARY KEY (`id`)) AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
 | |
| RESET MASTER;
 | |
| ##############################
 | |
| #      Test Case
 | |
| ##############################
 | |
| #
 | |
| # \0 (0x5c00 in binary) should be allowed in data strings if
 | |
| # --binary-mode is enabled.
 | |
| #
 | |
| FOUND 10 /\x5c\x00/ in binary_zero_inserts.sql
 | |
| # MYSQL --binary-mode test < MYSQL_TMP_DIR/binary_zero_inserts.sql
 | |
| #
 | |
| # Ensure a row exists from each insert statement with a \0
 | |
| #
 | |
| SELECT COUNT(*)=8 from tb;
 | |
| COUNT(*)=8
 | |
| 1
 | |
| #
 | |
| # Ensure that the binary zero was parsed and exists in the row data
 | |
| # Note: We only look for 00 because the 5c only served as an escape
 | |
| #       in parsing.
 | |
| #
 | |
| # MYSQL_DUMP test tb --hex-blob > MYSQL_TMP_DIR/dump.sql
 | |
| FOUND 8 /\([0-9]+,0x([1-9][0-9])*00([1-9][0-9])*\)/ in dump.sql
 | |
| #
 | |
| # Ensure data consistency on mysqlbinlog replay
 | |
| #
 | |
| FLUSH LOGS;
 | |
| # MYSQL_BINLOG MYSQLD_DATADIR/binlog_file > MYSQL_TMP_DIR/binlog_zeros.sql
 | |
| FOUND 10 /\x5c\x00/ in binlog_zeros.sql
 | |
| # MYSQL --binary-mode test < MYSQL_TMP_DIR/binlog_zeros.sql
 | |
| # Table checksum is equivalent before and after binlog replay
 | |
| #
 | |
| # A \0 should still be treated as end-of-query in binary mode.
 | |
| #
 | |
| # MYSQL --binary-mode -B test < MYSQL_TMP_DIR/binary_zero_eoq.sql
 | |
| ##############################
 | |
| #      Cleanup
 | |
| ##############################
 | |
| SET @@global.sql_mode= @old_sql_mode;
 | |
| drop table tb;
 | |
| RESET MASTER;
 | 
