mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-24 07:13:33 +03:00 
			
		
		
		
	 351d9f66d3
			
		
	
	351d9f66d3
	
	
	
		
			
			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.
		
			
				
	
	
		
			114 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| --disable_warnings
 | |
| DROP TABLE IF EXISTS t1, t2;
 | |
| --enable_warnings
 | |
| 
 | |
| --echo #
 | |
| --echo # Bug#31663 FIELDS TERMINATED BY special character
 | |
| --echo #
 | |
| 
 | |
| CREATE TABLE t1 (i1 int, i2 int, c1 VARCHAR(256), c2 VARCHAR(256));
 | |
| INSERT INTO t1 VALUES (101, 202, '-r-', '=raker=');
 | |
| 
 | |
| --let $fields=*
 | |
| --let $clauses=FIELDS TERMINATED BY 'raker'
 | |
| --echo # $clauses, warning:
 | |
| 
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval SELECT $fields INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/bug31663.txt' $clauses FROM t1
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval SELECT LOAD_FILE('$MYSQLTEST_VARDIR/tmp/bug31663.txt')
 | |
| --eval CREATE TABLE t2 SELECT $fields FROM t1
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/bug31663.txt' INTO TABLE t2 $clauses
 | |
| --eval SELECT $fields FROM t2
 | |
| --remove_file $MYSQLTEST_VARDIR/tmp/bug31663.txt
 | |
| DROP TABLE t2;
 | |
| 
 | |
| --let $fields=i1, i2
 | |
| --let $clauses=FIELDS TERMINATED BY 'r'
 | |
| --echo # Only numeric fields, $clauses, no warnings:
 | |
| 
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval SELECT $fields INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/bug31663.txt' $clauses FROM t1
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval SELECT LOAD_FILE('$MYSQLTEST_VARDIR/tmp/bug31663.txt')
 | |
| --eval CREATE TABLE t2 SELECT $fields FROM t1
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/bug31663.txt' INTO TABLE t2 $clauses
 | |
| --eval SELECT $fields FROM t2
 | |
| --remove_file $MYSQLTEST_VARDIR/tmp/bug31663.txt
 | |
| DROP TABLE t2;
 | |
| 
 | |
| --let $fields=*
 | |
| --let $clauses=FIELDS TERMINATED BY '0'
 | |
| --echo # $clauses, warning:
 | |
| 
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval SELECT $fields INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/bug31663.txt' $clauses FROM t1
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval SELECT LOAD_FILE('$MYSQLTEST_VARDIR/tmp/bug31663.txt')
 | |
| --eval CREATE TABLE t2 SELECT $fields FROM t1
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/bug31663.txt' INTO TABLE t2 $clauses
 | |
| --eval SELECT $fields FROM t2
 | |
| --remove_file $MYSQLTEST_VARDIR/tmp/bug31663.txt
 | |
| DROP TABLE t2;
 | |
| 
 | |
| --let $fields=*
 | |
| --let $clauses=FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY '0'
 | |
| --echo # $clauses, warning:
 | |
| 
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval SELECT $fields INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/bug31663.txt' $clauses FROM t1
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval SELECT LOAD_FILE('$MYSQLTEST_VARDIR/tmp/bug31663.txt')
 | |
| --eval CREATE TABLE t2 SELECT $fields FROM t1
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/bug31663.txt' INTO TABLE t2 $clauses
 | |
| --eval SELECT $fields FROM t2
 | |
| --remove_file $MYSQLTEST_VARDIR/tmp/bug31663.txt
 | |
| DROP TABLE t2;
 | |
| 
 | |
| --let $fields=c1, c2
 | |
| --let $clauses=FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY '0'
 | |
| --echo # Only string fields, $clauses, no warnings:
 | |
| 
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval SELECT $fields INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/bug31663.txt' $clauses FROM t1
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval SELECT LOAD_FILE('$MYSQLTEST_VARDIR/tmp/bug31663.txt')
 | |
| --eval CREATE TABLE t2 SELECT $fields FROM t1
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/bug31663.txt' INTO TABLE t2 $clauses
 | |
| --eval SELECT $fields FROM t2
 | |
| --remove_file $MYSQLTEST_VARDIR/tmp/bug31663.txt
 | |
| DROP TABLE t2;
 | |
| 
 | |
| DROP TABLE t1;
 | |
| 
 | |
| --echo #
 | |
| --echo # Bug#32533: SELECT INTO OUTFILE never escapes multibyte character
 | |
| --echo #
 | |
| 
 | |
| CREATE TABLE t1 (c1 VARCHAR(256));
 | |
| INSERT INTO t1 VALUES (0xC3);
 | |
| SELECT HEX(c1) FROM t1;
 | |
| 
 | |
| --let $file=$MYSQLTEST_VARDIR/tmp/bug32533.txt
 | |
| 
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval SELECT * INTO OUTFILE '$file' FIELDS ENCLOSED BY 0xC3 FROM t1
 | |
| TRUNCATE t1;
 | |
| 
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval SELECT HEX(LOAD_FILE('$file'))
 | |
| 
 | |
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 | |
| --eval LOAD DATA INFILE '$file' INTO TABLE t1 FIELDS ENCLOSED BY 0xC3
 | |
| SELECT HEX(c1) FROM t1;
 | |
| 
 | |
| --remove_file $file
 | |
| DROP TABLE t1;
 | |
| 
 | |
| --echo # End of 5.0 tests.
 |