mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
0a91f285ad
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.
113 lines
4.1 KiB
Text
113 lines
4.1 KiB
Text
--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.
|