File: outfile.test

package info (click to toggle)
mariadb 1%3A11.8.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 772,520 kB
  • sloc: ansic: 2,414,714; cpp: 1,791,394; asm: 381,336; perl: 62,905; sh: 49,647; pascal: 40,897; java: 39,363; python: 20,791; yacc: 20,432; sql: 17,907; xml: 12,344; ruby: 8,544; cs: 6,542; makefile: 6,145; ada: 1,879; lex: 1,193; javascript: 996; objc: 80; tcl: 73; awk: 46; php: 22
file content (117 lines) | stat: -rw-r--r-- 3,562 bytes parent folder | download | duplicates (2)
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
--source include/not_embedded.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc

#
# test of into outfile|dumpfile
#

create table t1 (`a` blob);
insert into t1 values("hello world"),("Hello mars"),(NULL);
select * into outfile "../../tmp/outfile-test.1" from t1;
select load_file('../../tmp/outfile-test.1');
select * into dumpfile "../../tmp/outfile-test.2" from t1 limit 1;
select load_file('../../tmp/outfile-test.2');
select * into dumpfile "../../tmp/outfile-test.3" from t1 where a is null;
select load_file('../../tmp/outfile-test.3');

# the following should give errors

--error ER_FILE_EXISTS_ERROR
eval select * into outfile "../../tmp/outfile-test.1" from t1;

--error ER_FILE_EXISTS_ERROR
eval select * into dumpfile "../../tmp/outfile-test.2" from t1;

--error ER_FILE_EXISTS_ERROR
eval select * into dumpfile "../../tmp/outfile-test.3" from t1;
select load_file('../../tmp/outfile-test.not-exist');
--remove_file $MYSQLTEST_VARDIR/tmp/outfile-test.1
--remove_file $MYSQLTEST_VARDIR/tmp/outfile-test.2
--remove_file $MYSQLTEST_VARDIR/tmp/outfile-test.3
drop table t1;

# Bug#8191 SELECT INTO OUTFILE insists on FROM clause
select 1 into outfile "../../tmp/outfile-test.4";
select load_file('../../tmp/outfile-test.4');
--remove_file $MYSQLTEST_VARDIR/tmp/outfile-test.4

#
# Bug#5382 'explain select into outfile' crashes the server
#

CREATE TABLE t1 (a INT);
EXPLAIN
  SELECT *
  INTO OUTFILE '/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 information_schema.schemata now fails
#
SELECT * INTO OUTFILE "../../tmp/outfile-test.4"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
FROM information_schema.schemata LIMIT 0, 5;
# enable_query_log;
--remove_file $MYSQLTEST_VARDIR/tmp/outfile-test.4

use information_schema;
SELECT * INTO OUTFILE "../../tmp/outfile-test.4"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
FROM schemata LIMIT 0, 5;
--remove_file $MYSQLTEST_VARDIR/tmp/outfile-test.4
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 $MYSQL_TEST_DIR MYSQL_TEST_DIR
--error ER_OPTION_PREVENTS_STATEMENT
eval select * into outfile "$MYSQL_TEST_DIR/outfile-test1" from t1;
drop table t1;

#
# Bug#28181 Access denied to 'information_schema when
# select into out file (regression)
#
create database mysqltest;
create user user_1@localhost;
grant all on mysqltest.* to user_1@localhost;
connect (con28181_1,localhost,user_1,,mysqltest);

--error ER_ACCESS_DENIED_ERROR
select schema_name
into outfile "../../tmp/outfile-test.4"
fields terminated by ',' optionally enclosed by '"'
 lines terminated by '\n'
from information_schema.schemata
where schema_name like 'mysqltest';

connection default;
disconnect con28181_1;
grant file on *.* to user_1@localhost;

connect (con28181_2,localhost,user_1,,mysqltest);
select schema_name
into outfile "../../tmp/outfile-test.4"
fields terminated by ',' optionally enclosed by '"'
 lines terminated by '\n'
from information_schema.schemata
where schema_name like 'mysqltest';

connection default;
disconnect con28181_2;
--remove_file $MYSQLTEST_VARDIR/tmp/outfile-test.4
use test;
revoke all privileges on *.* from user_1@localhost;
drop user user_1@localhost;
drop database mysqltest;

# Wait till we reached the initial number of concurrent sessions
--source include/wait_until_count_sessions.inc