1# 2# WL#13168: Test MySQL command line client(mysql) --load-data-local-dir option 3# 4 5let $test_dir=$MYSQLTEST_VARDIR/tmp/wl13168; 6let $wrong_test_dir=$MYSQLTEST_VARDIR/tmp/wl13168_2; 7let $nonexistent_test_dir=$MYSQLTEST_VARDIR/tmp/wl13168_3; 8let $test_file=$MYSQLTEST_VARDIR/tmp/wl13168/t1; 9let $test_file_wrong_case=$MYSQLTEST_VARDIR/tmp/wl13168/T1; 10let $test_file_wrong_file=$MYSQLTEST_VARDIR/tmp/wl13168/t2; 11let $test_file_wrong_dir=$wrong_test_dir/t1; 12let $test_file_wrong_dir_case=$MYSQLTEST_VARDIR/Tmp/wl13168/t1; 13 14--echo # create the test directory 15mkdir $test_dir; 16--echo # create the wrong test directory 17mkdir $wrong_test_dir; 18--echo # create the test file 19--write_file $test_file 201,a 212,b 22EOF 23--echo # create the wrong test file 24--write_file $test_file_wrong_file 251,a 262,b 27EOF 28--echo # create a file in wrong dir 29--write_file $test_file_wrong_dir 301,a 312,b 32EOF 33 34--echo # setup 35CREATE TABLE test.wl13168(id INT PRIMARY KEY, data VARCHAR(50)); 36 37--echo # FR2/FR1.2: specify test_dir: should work 38--exec $MYSQL --load_data_local_dir="$test_dir" -e "LOAD DATA LOCAL INFILE '$test_file' INTO TABLE test.wl13168 FIELDS TERMINATED BY ','" 2>&1 39--echo # verify that the data are loaded 40SELECT * FROM test.wl13168 ORDER BY id; 41DELETE FROM test.wl13168; 42 43--echo # FR1.1: specify empty (default): should fail 44--error 1 45--exec $MYSQL -e "LOAD DATA LOCAL INFILE '$test_file' INTO TABLE test.wl13168 FIELDS TERMINATED BY ','" 2>&1 46SELECT * FROM test.wl13168 ORDER BY id; 47 48--echo # FR1.1: specify explicit empty: should fail 49--error 1 50--exec $MYSQL --load_data_local_dir= -e "LOAD DATA LOCAL INFILE '$test_file' INTO TABLE test.wl13168 FIELDS TERMINATED BY ','" 2>&1 51SELECT * FROM test.wl13168 ORDER BY id; 52 53--echo # FR1.1: specify explicit empty and local-infile: should work 54--exec $MYSQL --load_data_local_dir= --local-infile -e "LOAD DATA LOCAL INFILE '$test_file' INTO TABLE test.wl13168 FIELDS TERMINATED BY ','" 2>&1 55SELECT * FROM test.wl13168 ORDER BY id; 56DELETE FROM test.wl13168; 57 58--echo # FR1.1: specify wrong file: should fail 59--error 1 60--exec $MYSQL --load_data_local_dir=$test_file_wrong_file -e "LOAD DATA LOCAL INFILE '$test_file' INTO TABLE test.wl13168 FIELDS TERMINATED BY ','" 2>&1 61SELECT * FROM test.wl13168 ORDER BY id; 62 63--echo # FR1.1: specify wrong dir: should fail 64--error 1 65--exec $MYSQL --load_data_local_dir=$test_file_wrong_dir -e "LOAD DATA LOCAL INFILE '$test_file' INTO TABLE test.wl13168 FIELDS TERMINATED BY ','" 2>&1 66SELECT * FROM test.wl13168 ORDER BY id; 67 68--echo # FR1.1: specify wrong dir and local-infile: should work 69--exec $MYSQL --load_data_local_dir=$test_file_wrong_dir --local-infile -e "LOAD DATA LOCAL INFILE '$test_file' INTO TABLE test.wl13168 FIELDS TERMINATED BY ','" 2>&1 70SELECT * FROM test.wl13168 ORDER BY id; 71DELETE FROM test.wl13168; 72 73--echo # Expect no error on MacOS and error on others 74let expected_error=`SELECT if (CONVERT(@@version_compile_os USING LATIN1) RLIKE '^(osx|macos)', 0, 1)`; 75 76--echo # FR1.5: specify wrong case dir: should fail except on MacOS 77--error $expected_error 78--exec $MYSQL --load_data_local_dir=$test_file -e "LOAD DATA LOCAL INFILE '$test_file_wrong_dir_case' INTO TABLE test.wl13168 FIELDS TERMINATED BY ','" > $MYSQLTEST_VARDIR/tmp/wl13168_log.txt 79remove_file $MYSQLTEST_VARDIR/tmp/wl13168_log.txt; 80DELETE FROM test.wl13168; 81 82--echo # FR1.5: specify wrong case file: should fail except on MacOS 83--error $expected_error 84--exec $MYSQL --load_data_local_dir=$test_file -e "LOAD DATA LOCAL INFILE '$test_file_wrong_case' INTO TABLE test.wl13168 FIELDS TERMINATED BY ','" > $MYSQLTEST_VARDIR/tmp/wl13168_log.txt 85remove_file $MYSQLTEST_VARDIR/tmp/wl13168_log.txt; 86DELETE FROM test.wl13168; 87 88--echo # Expect no error on windows and error on others 89let expected_error=`select if (convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows") = 1, 0, 1)`; 90 91--echo # FR2.1: specify non-existent dir: expect success on windows and failure on unix 92--error $expected_error 93--exec $MYSQL --load_data_local_dir=$nonexistent_test_dir -e "SELECT 1" > $MYSQLTEST_VARDIR/tmp/wl13168_log.txt 94remove_file $MYSQLTEST_VARDIR/tmp/wl13168_log.txt; 95 96SET @@global.local_infile = 0; 97 98--echo # FR2/FR1.2: specify test_dir: should fail 99--error 1 100--exec $MYSQL --load_data_local_dir="$test_dir" -e "LOAD DATA LOCAL INFILE '$test_file' INTO TABLE test.wl13168 FIELDS TERMINATED BY ','" 2>&1 101SELECT * FROM test.wl13168 ORDER BY id; 102 103--echo # cleanup 104DROP TABLE test.wl13168; 105SET @@global.local_infile = 1; 106force-rmdir $test_dir; 107force-rmdir $wrong_test_dir; 108