1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
disable_query_log;
# Server are started in "var/master-data/local", so "../../tmp" will be "var/tmp"
eval set @tmpdir="$DRIZZLETEST_VARDIR/tmp";
enable_query_log;
#
# test of into outfile|dumpfile
#
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1 (`a` blob);
insert into t1 values("hello world"),("Hello mars"),(NULL);
disable_query_log;
--replace_result $DRIZZLETEST_VARDIR DRIZZLETEST_VARDIR
eval select * into outfile "$DRIZZLETEST_VARDIR/tmp/outfile-test.1" from t1;
enable_query_log;
select load_file(concat(@tmpdir,"/outfile-test.1"));
disable_query_log;
--replace_result $DRIZZLETEST_VARDIR DRIZZLETEST_VARDIR
eval select * into dumpfile "$DRIZZLETEST_VARDIR/tmp/outfile-test.2" from t1 limit 1;
enable_query_log;
select load_file(concat(@tmpdir,"/outfile-test.2"));
disable_query_log;
--replace_result $DRIZZLETEST_VARDIR DRIZZLETEST_VARDIR
eval select * into dumpfile "$DRIZZLETEST_VARDIR/tmp/outfile-test.3" from t1 where a is null;
enable_query_log;
select load_file(concat(@tmpdir,"/outfile-test.3"));
# the following should give errors
disable_query_log;
--replace_result $DRIZZLETEST_VARDIR DRIZZLETEST_VARDIR
--error ER_FILE_EXISTS_ERROR
eval select * into outfile "$DRIZZLETEST_VARDIR/tmp/outfile-test.1" from t1;
--replace_result $DRIZZLETEST_VARDIR DRIZZLETEST_VARDIR
--error ER_FILE_EXISTS_ERROR
eval select * into dumpfile "$DRIZZLETEST_VARDIR/tmp/outfile-test.2" from t1;
--replace_result $DRIZZLETEST_VARDIR DRIZZLETEST_VARDIR
--error ER_FILE_EXISTS_ERROR
eval select * into dumpfile "$DRIZZLETEST_VARDIR/tmp/outfile-test.3" from t1;
enable_query_log;
# The test below drastically shortens $DRIZZLETEST_VARDIR
# to just VAR and uses a less informative file name
# This is done to accomodate longer file paths
# We were seeing error message truncation when
# the path to the server under test was long (110+ chars)
--disable_query_log
let $bad_test_file ="$DRIZZLETEST_VARDIR/tmp/bad";
--enable_query_log
let $replace_substring = `SELECT SUBSTRING($bad_test_file,1,128)`;
--replace_result $replace_substring DRIZZLETEST_BAD_FILE $bad_test_file DRIZZLETEST_BAD_FILE
--error ER_TEXTFILE_NOT_READABLE
eval select load_file($bad_test_file);
--remove_file $DRIZZLETEST_VARDIR/tmp/outfile-test.1
--remove_file $DRIZZLETEST_VARDIR/tmp/outfile-test.2
--remove_file $DRIZZLETEST_VARDIR/tmp/outfile-test.3
drop table t1;
# Bug#8191
disable_query_log;
--replace_result $DRIZZLETEST_VARDIR DRIZZLETEST_VARDIR
eval select 1 into outfile "$DRIZZLETEST_VARDIR/tmp/outfile-test.4";
enable_query_log;
--replace_result $DRIZZLE_TEST_DIR DRIZZLE_TEST_DIR
select load_file(concat(@tmpdir,"/outfile-test.4"));
--remove_file $DRIZZLETEST_VARDIR/tmp/outfile-test.4
#
# Bug #5382: 'explain select into outfile' crashes the server
#
CREATE TABLE t1 (a INT);
--replace_result $DRIZZLETEST_VARDIR DRIZZLETEST_VARDIR
eval EXPLAIN SELECT * INTO OUTFILE '$DRIZZLETEST_VARDIR/tmp/t1.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n'
FROM t1;
DROP TABLE t1;
# End of 4.1 tests
#
# Bug#13202 SELECT * INTO OUTFILE ... FROM data_dictionary.schemas now fails
#
disable_query_log;
--replace_result $DRIZZLETEST_VARDIR DRIZZLETEST_VARDIR
eval SELECT * INTO OUTFILE "$DRIZZLETEST_VARDIR/tmp/outfile-test.4"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
FROM data_dictionary.schemas LIMIT 0, 5;
# enable_query_log;
--remove_file $DRIZZLETEST_VARDIR/tmp/outfile-test.4
use data_dictionary;
# disable_query_log;
--replace_result $DRIZZLETEST_VARDIR DRIZZLETEST_VARDIR
eval SELECT * INTO OUTFILE "$DRIZZLETEST_VARDIR/tmp/outfile-test.5"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
FROM schemas LIMIT 0, 5;
enable_query_log;
--remove_file $DRIZZLETEST_VARDIR/tmp/outfile-test.5
use test;
#
# Bug#18628 mysql-test-run: security problem
#
# It should not be possible to write to a file outside of vardir
create table t1(a int);
--replace_result $DRIZZLE_TEST_DIR DRIZZLE_TEST_DIR
--error ER_OPTION_PREVENTS_STATEMENT
eval select * into outfile "$DRIZZLE_TEST_DIR/outfile-test1" from t1;
drop table t1;
|