284 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			284 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								# Test case(s) in this file contain(s) GRANT/REVOKE statements, which are not
							 | 
						||
| 
								 | 
							
								# supported in embedded server. So, this test should not be run on embedded
							 | 
						||
| 
								 | 
							
								# server.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								-- source include/not_embedded.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								###########################################################################
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Tests for WL#2818:
							 | 
						||
| 
								 | 
							
								#   - Check that triggers created w/o DEFINER information work well:
							 | 
						||
| 
								 | 
							
								#     - create the first trigger;
							 | 
						||
| 
								 | 
							
								#     - manually remove definer information from corresponding TRG file;
							 | 
						||
| 
								 | 
							
								#     - create the second trigger (the first trigger will be reloaded; check
							 | 
						||
| 
								 | 
							
								#       that we receive a warning);
							 | 
						||
| 
								 | 
							
								#     - check that the triggers loaded correctly;
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								###########################################################################
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Prepare environment.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DELETE FROM mysql.user WHERE User LIKE 'mysqltest_%';
							 | 
						||
| 
								 | 
							
								DELETE FROM mysql.db WHERE User LIKE 'mysqltest_%';
							 | 
						||
| 
								 | 
							
								DELETE FROM mysql.tables_priv WHERE User LIKE 'mysqltest_%';
							 | 
						||
| 
								 | 
							
								DELETE FROM mysql.columns_priv WHERE User LIKE 'mysqltest_%';
							 | 
						||
| 
								 | 
							
								FLUSH PRIVILEGES;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--disable_warnings
							 | 
						||
| 
								 | 
							
								DROP DATABASE IF EXISTS mysqltest_db1;
							 | 
						||
| 
								 | 
							
								--enable_warnings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE DATABASE mysqltest_db1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE USER mysqltest_dfn@localhost;
							 | 
						||
| 
								 | 
							
								CREATE USER mysqltest_inv@localhost;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								GRANT CREATE, TRIGGER ON mysqltest_db1.* TO mysqltest_dfn@localhost;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Create a table and the first trigger.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--connect (wl2818_definer_con,localhost,mysqltest_dfn,,mysqltest_db1)
							 | 
						||
| 
								 | 
							
								--connection wl2818_definer_con
							 | 
						||
| 
								 | 
							
								--echo
							 | 
						||
| 
								 | 
							
								--echo ---> connection: wl2818_definer_con
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1(num_value INT);
							 | 
						||
| 
								 | 
							
								CREATE TABLE t2(user_str TEXT);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TRIGGER wl2818_trg1 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES(CURRENT_USER());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Remove definers from TRG file.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo
							 | 
						||
| 
								 | 
							
								--echo ---> patching t1.TRG...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Here we remove definers.  This is somewhat complex than the original test
							 | 
						||
| 
								 | 
							
								# Previously, the test only used grep -v 'definers=' t1.TRG, but grep is not
							 | 
						||
| 
								 | 
							
								# portable and we have to load the file into a table, exclude the definers line,
							 | 
						||
| 
								 | 
							
								# then load the data to an outfile to accomplish the same effect
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--disable_query_log
							 | 
						||
| 
								 | 
							
								--connection default
							 | 
						||
| 
								 | 
							
								CREATE TABLE patch (a blob);
							 | 
						||
| 
								 | 
							
								let $MYSQLD_DATADIR = `select @@datadir`;
							 | 
						||
| 
								 | 
							
								eval LOAD DATA LOCAL INFILE '$MYSQLD_DATADIR/mysqltest_db1/t1.TRG' INTO TABLE patch;
							 | 
						||
| 
								 | 
							
								# remove original t1.TRG file so SELECT INTO OUTFILE won't fail
							 | 
						||
| 
								 | 
							
								--remove_file $MYSQLD_DATADIR/mysqltest_db1/t1.TRG
							 | 
						||
| 
								 | 
							
								eval SELECT SUBSTRING_INDEX(a,'definers=',1) INTO OUTFILE
							 | 
						||
| 
								 | 
							
								 '$MYSQLD_DATADIR/mysqltest_db1/t1.TRG' 
							 | 
						||
| 
								 | 
							
								FROM patch;
							 | 
						||
| 
								 | 
							
								DROP TABLE patch;
							 | 
						||
| 
								 | 
							
								--connection wl2818_definer_con
							 | 
						||
| 
								 | 
							
								--enable_query_log
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Create a new trigger.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TRIGGER wl2818_trg2 AFTER INSERT ON t1
							 | 
						||
| 
								 | 
							
								  FOR EACH ROW
							 | 
						||
| 
								 | 
							
								    INSERT INTO t2 VALUES(CURRENT_USER());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SELECT trigger_name, definer FROM INFORMATION_SCHEMA.TRIGGERS ORDER BY trigger_name;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SELECT * FROM INFORMATION_SCHEMA.TRIGGERS ORDER BY trigger_name;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Clean up
							 | 
						||
| 
								 | 
							
								DROP TRIGGER wl2818_trg1;
							 | 
						||
| 
								 | 
							
								DROP TRIGGER wl2818_trg2;
							 | 
						||
| 
								 | 
							
								disconnect wl2818_definer_con;
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								use mysqltest_db1;
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								DROP TABLE t2;
							 | 
						||
| 
								 | 
							
								DROP USER mysqltest_dfn@localhost;
							 | 
						||
| 
								 | 
							
								DROP USER mysqltest_inv@localhost;
							 | 
						||
| 
								 | 
							
								DROP DATABASE mysqltest_db1;
							 | 
						||
| 
								 | 
							
								USE test;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo #
							 | 
						||
| 
								 | 
							
								--echo # Bug#45235: 5.1 does not support 5.0-only syntax triggers in any way
							 | 
						||
| 
								 | 
							
								--echo #
							 | 
						||
| 
								 | 
							
								let $MYSQLD_DATADIR=`SELECT @@datadir`;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--disable_warnings
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS t1, t2, t3;
							 | 
						||
| 
								 | 
							
								--enable_warnings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 ( a INT );
							 | 
						||
| 
								 | 
							
								CREATE TABLE t2 ( a INT );
							 | 
						||
| 
								 | 
							
								CREATE TABLE t3 ( a INT );
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (1), (2), (3);
							 | 
						||
| 
								 | 
							
								INSERT INTO t2 VALUES (1), (2), (3);
							 | 
						||
| 
								 | 
							
								INSERT INTO t3 VALUES (1), (2), (3);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo # We simulate importing a trigger from 5.0 by writing a .TRN file for
							 | 
						||
| 
								 | 
							
								--echo # each trigger plus a .TRG file the way MySQL 5.0 would have done it, 
							 | 
						||
| 
								 | 
							
								--echo # with syntax allowed in 5.0 only.
							 | 
						||
| 
								 | 
							
								--echo #
							 | 
						||
| 
								 | 
							
								--echo # Note that in 5.0 the following lines are missing from t1.TRG:
							 | 
						||
| 
								 | 
							
								--echo #
							 | 
						||
| 
								 | 
							
								--echo # client_cs_names='latin1'
							 | 
						||
| 
								 | 
							
								--echo # connection_cl_names='latin1_swedish_ci'
							 | 
						||
| 
								 | 
							
								--echo # db_cl_names='latin1_swedish_ci'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/tr11.TRN
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERNAME
							 | 
						||
| 
								 | 
							
								trigger_table=t1
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/tr12.TRN
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERNAME
							 | 
						||
| 
								 | 
							
								trigger_table=t1
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/tr13.TRN
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERNAME
							 | 
						||
| 
								 | 
							
								trigger_table=t1
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/tr14.TRN
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERNAME
							 | 
						||
| 
								 | 
							
								trigger_table=t1
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/tr15.TRN
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERNAME
							 | 
						||
| 
								 | 
							
								trigger_table=t1
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/t1.TRG
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERS
							 | 
						||
| 
								 | 
							
								triggers='CREATE DEFINER=`root`@`localhost` TRIGGER tr11 BEFORE INSERT ON t1 FOR EACH ROW DELETE FROM t3' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr12 AFTER INSERT ON t1 FOR EACH ROW DELETE FROM t3' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr13 BEFORE DELETE ON t1 FOR EACH ROW DELETE FROM t1 a USING t1 a' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr14 AFTER DELETE ON t1 FOR EACH ROW DELETE FROM non_existing_table' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr15 BEFORE UPDATE ON t1 FOR EACH ROW DELETE FROM non_existing_table a USING non_existing_table a'
							 | 
						||
| 
								 | 
							
								sql_modes=0 0 0 0 0
							 | 
						||
| 
								 | 
							
								definers='root@localhost' 'root@localhost' 'root@localhost' 'root@localhost' 'root@localhost'
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/t2.TRG
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERS
							 | 
						||
| 
								 | 
							
								triggers='Not allowed syntax here, and trigger name cant be extracted either.'
							 | 
						||
| 
								 | 
							
								sql_modes=0
							 | 
						||
| 
								 | 
							
								definers='root@localhost'
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo # We will get parse errors for most DDL and DML statements when the table
							 | 
						||
| 
								 | 
							
								--echo # has broken triggers. The parse error refers to the first broken 
							 | 
						||
| 
								 | 
							
								--echo # trigger.
							 | 
						||
| 
								 | 
							
								--error ER_PARSE_ERROR
							 | 
						||
| 
								 | 
							
								CREATE TRIGGER tr16 AFTER UPDATE ON t1 FOR EACH ROW INSERT INTO t1 VALUES (1);
							 | 
						||
| 
								 | 
							
								--error ER_PARSE_ERROR
							 | 
						||
| 
								 | 
							
								CREATE TRIGGER tr22 BEFORE INSERT ON t2 FOR EACH ROW DELETE FROM non_existing_table;
							 | 
						||
| 
								 | 
							
								SHOW TRIGGERS;
							 | 
						||
| 
								 | 
							
								--error ER_PARSE_ERROR
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (1);
							 | 
						||
| 
								 | 
							
								--error ER_PARSE_ERROR
							 | 
						||
| 
								 | 
							
								INSERT INTO t2 VALUES (1);
							 | 
						||
| 
								 | 
							
								--error ER_PARSE_ERROR
							 | 
						||
| 
								 | 
							
								DELETE FROM t1;
							 | 
						||
| 
								 | 
							
								--error ER_PARSE_ERROR
							 | 
						||
| 
								 | 
							
								UPDATE t1 SET a = 1 WHERE a = 1;
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								--error ER_PARSE_ERROR
							 | 
						||
| 
								 | 
							
								RENAME TABLE t1 TO t1_2;
							 | 
						||
| 
								 | 
							
								SHOW TRIGGERS;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP TRIGGER tr11;
							 | 
						||
| 
								 | 
							
								DROP TRIGGER tr12;
							 | 
						||
| 
								 | 
							
								DROP TRIGGER tr13;
							 | 
						||
| 
								 | 
							
								DROP TRIGGER tr14;
							 | 
						||
| 
								 | 
							
								DROP TRIGGER tr15;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SHOW TRIGGERS;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo # Make sure there is no trigger file left.
							 | 
						||
| 
								 | 
							
								--list_files $MYSQLD_DATADIR/test/ tr*
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo # We write the same trigger files one more time to test DROP TABLE.
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/tr11.TRN
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERNAME
							 | 
						||
| 
								 | 
							
								trigger_table=t1
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/tr12.TRN
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERNAME
							 | 
						||
| 
								 | 
							
								trigger_table=t1
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/tr13.TRN
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERNAME
							 | 
						||
| 
								 | 
							
								trigger_table=t1
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/tr14.TRN
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERNAME
							 | 
						||
| 
								 | 
							
								trigger_table=t1
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/tr15.TRN
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERNAME
							 | 
						||
| 
								 | 
							
								trigger_table=t1
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/t1.TRG
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERS
							 | 
						||
| 
								 | 
							
								triggers='CREATE DEFINER=`root`@`localhost` TRIGGER tr11 BEFORE INSERT ON t1 FOR EACH ROW DELETE FROM t3' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr12 AFTER INSERT ON t1 FOR EACH ROW DELETE FROM t3' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr13 BEFORE DELETE ON t1 FOR EACH ROW DELETE FROM t1 a USING t1 a' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr14 AFTER DELETE ON t1 FOR EACH ROW DELETE FROM non_existing_table' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr15 BEFORE UPDATE ON t1 FOR EACH ROW DELETE FROM non_existing_table a USING non_existing_table a'
							 | 
						||
| 
								 | 
							
								sql_modes=0 0 0 0 0
							 | 
						||
| 
								 | 
							
								definers='root@localhost' 'root@localhost' 'root@localhost' 'root@localhost' 'root@localhost'
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								DROP TABLE t2;
							 | 
						||
| 
								 | 
							
								DROP TABLE t3;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo # Make sure there is no trigger file left.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--list_files $MYSQLD_DATADIR/test/ tr*
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 ( a INT );
							 | 
						||
| 
								 | 
							
								CREATE TABLE t2 ( a INT );
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (1), (2), (3);
							 | 
						||
| 
								 | 
							
								INSERT INTO t2 VALUES (1), (2), (3);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo # We write three trigger files. First trigger is syntaxically incorrect, next trigger is correct
							 | 
						||
| 
								 | 
							
								--echo # and last trigger is broken.
							 | 
						||
| 
								 | 
							
								--echo # Next we try to execute SHOW CREATE TRGGIR command for broken trigger and then try to drop one.
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/tr11.TRN
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERNAME
							 | 
						||
| 
								 | 
							
								trigger_table=t1
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/tr12.TRN
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERNAME
							 | 
						||
| 
								 | 
							
								trigger_table=t1
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/t1.TRG
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERS
							 | 
						||
| 
								 | 
							
								triggers='CREATE the wrongest trigger_in_the_world' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr11 BEFORE DELETE ON t1 FOR EACH ROW DELETE FROM t1 a USING t1 a' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr12 BEFORE INSERT ON t1 FOR EACH ROW DELETE FROM t2'
							 | 
						||
| 
								 | 
							
								sql_modes=0 0 0
							 | 
						||
| 
								 | 
							
								definers='root@localhost' 'root@localhost' 'root@localhost'
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								FLUSH TABLE t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SHOW CREATE TRIGGER tr12;
							 | 
						||
| 
								 | 
							
								SHOW CREATE TRIGGER tr11;
							 | 
						||
| 
								 | 
							
								DROP TRIGGER tr12;
							 | 
						||
| 
								 | 
							
								DROP TRIGGER tr11;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								DROP TABLE t2;
							 |