mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	8bit escape characters, termination and enclosed characters were silently ignored by SELECT INTO query, but LOAD DATA INFILE algorithm is 8bit-clean, so data was corrupted during encoding. sql/sql_class.cc: Fixed bug #32533. SELECT INTO OUTFILE encoding was not 8bit clear, it has been fixed for a symmetry with the LOAD DATA INFILE decoding algorithm. mysql-test/t/outfile_loaddata.test: Added test case for bug #32533. mysql-test/r/outfile_loaddata.result: Added test case for bug #32533.
		
			
				
	
	
		
			104 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| DROP TABLE IF EXISTS t1, t2;
 | |
| #
 | |
| # Bug#31663 FIELDS TERMINATED BY special character
 | |
| #
 | |
| CREATE TABLE t1 (i1 int, i2 int, c1 VARCHAR(256), c2 VARCHAR(256));
 | |
| INSERT INTO t1 VALUES (101, 202, '-r-', '=raker=');
 | |
| # FIELDS TERMINATED BY 'raker', warning:
 | |
| SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug31663.txt' FIELDS TERMINATED BY 'raker' FROM t1;
 | |
| Warnings:
 | |
| Warning	1475	First character of the FIELDS TERMINATED string is ambiguous; please use non-optional and non-empty FIELDS ENCLOSED BY
 | |
| SELECT LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug31663.txt');
 | |
| LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug31663.txt')
 | |
| 101raker202raker-r-raker=raker=
 | |
| 
 | |
| CREATE TABLE t2 SELECT * FROM t1;
 | |
| LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug31663.txt' INTO TABLE t2 FIELDS TERMINATED BY 'raker';
 | |
| Warnings:
 | |
| Warning	1262	Row 1 was truncated; it contained more data than there were input columns
 | |
| SELECT * FROM t2;
 | |
| i1	i2	c1	c2
 | |
| 101	202	-r-	=raker=
 | |
| 101	202	-r-	=
 | |
| DROP TABLE t2;
 | |
| # Only numeric fields, FIELDS TERMINATED BY 'r', no warnings:
 | |
| SELECT i1, i2 INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug31663.txt' FIELDS TERMINATED BY 'r' FROM t1;
 | |
| SELECT LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug31663.txt');
 | |
| LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug31663.txt')
 | |
| 101r202
 | |
| 
 | |
| CREATE TABLE t2 SELECT i1, i2 FROM t1;
 | |
| LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug31663.txt' INTO TABLE t2 FIELDS TERMINATED BY 'r';
 | |
| SELECT i1, i2 FROM t2;
 | |
| i1	i2
 | |
| 101	202
 | |
| 101	202
 | |
| DROP TABLE t2;
 | |
| # FIELDS TERMINATED BY '0', warning:
 | |
| SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug31663.txt' FIELDS TERMINATED BY '0' FROM t1;
 | |
| Warnings:
 | |
| Warning	1475	First character of the FIELDS TERMINATED string is ambiguous; please use non-optional and non-empty FIELDS ENCLOSED BY
 | |
| SELECT LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug31663.txt');
 | |
| LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug31663.txt')
 | |
| 10102020-r-0=raker=
 | |
| 
 | |
| CREATE TABLE t2 SELECT * FROM t1;
 | |
| LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug31663.txt' INTO TABLE t2 FIELDS TERMINATED BY '0';
 | |
| Warnings:
 | |
| Warning	1262	Row 1 was truncated; it contained more data than there were input columns
 | |
| SELECT * FROM t2;
 | |
| i1	i2	c1	c2
 | |
| 101	202	-r-	=raker=
 | |
| 1	1	2	2
 | |
| DROP TABLE t2;
 | |
| # FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY '0', warning:
 | |
| SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug31663.txt' FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY '0' FROM t1;
 | |
| Warnings:
 | |
| Warning	1475	First character of the FIELDS TERMINATED string is ambiguous; please use non-optional and non-empty FIELDS ENCLOSED BY
 | |
| SELECT LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug31663.txt');
 | |
| LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug31663.txt')
 | |
| 10102020"-r-"0"=raker="
 | |
| 
 | |
| CREATE TABLE t2 SELECT * FROM t1;
 | |
| LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug31663.txt' INTO TABLE t2 FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY '0';
 | |
| Warnings:
 | |
| Warning	1262	Row 1 was truncated; it contained more data than there were input columns
 | |
| SELECT * FROM t2;
 | |
| i1	i2	c1	c2
 | |
| 101	202	-r-	=raker=
 | |
| 1	1	2	2
 | |
| DROP TABLE t2;
 | |
| # Only string fields, FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY '0', no warnings:
 | |
| SELECT c1, c2 INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug31663.txt' FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY '0' FROM t1;
 | |
| SELECT LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug31663.txt');
 | |
| LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug31663.txt')
 | |
| "-r-"0"=raker="
 | |
| 
 | |
| CREATE TABLE t2 SELECT c1, c2 FROM t1;
 | |
| LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug31663.txt' INTO TABLE t2 FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY '0';
 | |
| SELECT c1, c2 FROM t2;
 | |
| c1	c2
 | |
| -r-	=raker=
 | |
| -r-	=raker=
 | |
| DROP TABLE t2;
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # Bug#32533: SELECT INTO OUTFILE never escapes multibyte character
 | |
| #
 | |
| CREATE TABLE t1 (c1 VARCHAR(256));
 | |
| INSERT INTO t1 VALUES (0xC3);
 | |
| SELECT HEX(c1) FROM t1;
 | |
| HEX(c1)
 | |
| C3
 | |
| SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug32533.txt' FIELDS ENCLOSED BY 0xC3 FROM t1;
 | |
| TRUNCATE t1;
 | |
| SELECT HEX(LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug32533.txt'));
 | |
| HEX(LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug32533.txt'))
 | |
| C35CC3C30A
 | |
| LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug32533.txt' INTO TABLE t1 FIELDS ENCLOSED BY 0xC3;
 | |
| SELECT HEX(c1) FROM t1;
 | |
| HEX(c1)
 | |
| C3
 | |
| DROP TABLE t1;
 | |
| # End of 5.0 tests.
 |