142 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			142 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								disable_query_log;
							 | 
						||
| 
								 | 
							
								-- source include/test_outfile.inc
							 | 
						||
| 
								 | 
							
								# Server are started in "var/master-data", so "../../tmp" will be "var/tmp"
							 | 
						||
| 
								 | 
							
								eval set @tmpdir="../../tmp";
							 | 
						||
| 
								 | 
							
								enable_query_log;
							 | 
						||
| 
								 | 
							
								-- source include/have_outfile.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Save the initial number of concurrent sessions
							 | 
						||
| 
								 | 
							
								--source include/count_sessions.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# 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;
							 | 
						||
| 
								 | 
							
								eval select * into outfile "../../tmp/outfile-test.1" from t1;
							 | 
						||
| 
								 | 
							
								enable_query_log;
							 | 
						||
| 
								 | 
							
								select load_file(concat(@tmpdir,"/outfile-test.1"));
							 | 
						||
| 
								 | 
							
								disable_query_log;
							 | 
						||
| 
								 | 
							
								eval select * into dumpfile "../../tmp/outfile-test.2" from t1 limit 1;
							 | 
						||
| 
								 | 
							
								enable_query_log;
							 | 
						||
| 
								 | 
							
								select load_file(concat(@tmpdir,"/outfile-test.2"));
							 | 
						||
| 
								 | 
							
								disable_query_log;
							 | 
						||
| 
								 | 
							
								eval select * into dumpfile "../../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;
							 | 
						||
| 
								 | 
							
								--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;
							 | 
						||
| 
								 | 
							
								enable_query_log;
							 | 
						||
| 
								 | 
							
								select load_file(concat(@tmpdir,"/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
							 | 
						||
| 
								 | 
							
								disable_query_log;
							 | 
						||
| 
								 | 
							
								eval select 1 into outfile "../../tmp/outfile-test.4";
							 | 
						||
| 
								 | 
							
								enable_query_log;
							 | 
						||
| 
								 | 
							
								select load_file(concat(@tmpdir,"/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
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								disable_query_log;
							 | 
						||
| 
								 | 
							
								eval 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;
							 | 
						||
| 
								 | 
							
								# disable_query_log;
							 | 
						||
| 
								 | 
							
								eval SELECT * INTO OUTFILE "../../tmp/outfile-test.4"
							 | 
						||
| 
								 | 
							
								FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
							 | 
						||
| 
								 | 
							
								FROM schemata LIMIT 0, 5;
							 | 
						||
| 
								 | 
							
								enable_query_log;
							 | 
						||
| 
								 | 
							
								--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_DBACCESS_DENIED_ERROR
							 | 
						||
| 
								 | 
							
								eval 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);
							 | 
						||
| 
								 | 
							
								eval 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
							 |