Current Path : /home/usr.opt/mysql57/mysql-test/suite/innodb/t/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : /home/usr.opt/mysql57/mysql-test/suite/innodb/t/update_time_wl6658.test |
################################################################### #Testing functionality of the WL6658 #case1: when autocommit off begin work with INSERT with Triggers #case2: when autocommit off begin transaction with UPDATE #case3: when autocommit off begin transaction with DELETE #case4: when autocommit off Rollback & INSERT #case5: when autocommit off with partition table and procedures #case6: when autocommit off with SAVEPOINTs & DDL #case7: when autocommit off pk-fk with ON DELETE CASCADE ################################################################### --source include/no_valgrind_without_big.inc --source include/have_innodb.inc --source include/not_embedded.inc --echo #create base table CREATE TABLE tab1(c1 int,c2 varchar(30), c3 BLOB) ENGINE=InnoDB; CREATE TABLE tab3(c1 int,c2 varchar(30)) ENGINE=InnoDB; CREATE TABLE tab4(c1 int,c2 varchar(30)) ENGINE=InnoDB; CREATE TABLE tab5(c1 int,c2 varchar(30)) ENGINE=InnoDB; --echo #insert some base records INSERT INTO tab4 VALUES(1,'Test for Update'); INSERT INTO tab5 VALUES(1,'Test for Delete'); delimiter |; --echo #create a trigger CREATE TRIGGER test_trig BEFORE INSERT ON tab1 FOR EACH ROW BEGIN INSERT INTO tab3 VALUES(1,'Inserted From Trigger'); UPDATE tab4 SET c2='Updated from Trigger' WHERE c1=1; DELETE FROM tab5; END | delimiter ;| --echo #restart the server --source include/restart_mysqld.inc --echo check the update_time Before DML, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name IN ('tab1','tab3','tab4','tab5'); SET AUTOCOMMIT=OFF; --echo #case1: BEGIN WORK; INSERT INTO tab1 VALUES(1,'Testing the wl6658', 'Testing the wl6658'); --echo check the update_time Before commit, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name='tab1'; COMMIT; --echo #check the record is inserted SELECT * FROM tab1; --echo #check the record is inserted SELECT * FROM tab3; --echo #check the record is updated SELECT * FROM tab4; --echo #check no record exists SELECT * FROM tab5; --echo check the update_time After Commit, whether it is not NULL --sorted_result SELECT table_name,COUNT(update_time) FROM information_schema.tables WHERE table_name IN ('tab1','tab3','tab4','tab5') GROUP BY table_name; --echo #restart the server --source include/restart_mysqld.inc --echo Testcase with UPDATE stmt and transaction --echo #check the record is existing SELECT * FROM tab1; --echo check the update_time Before DML, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name='tab1'; SET AUTOCOMMIT=OFF; --echo #case2: START TRANSACTION; UPDATE tab1 SET c2='Updated',c3='Updated' WHERE c1=1; --echo check the update_time Before commit, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name='tab1'; COMMIT; --echo #check the record is updated SELECT * FROM tab1; --echo check the update_time After Commit, whether it is not NULL SELECT table_name,COUNT(update_time) FROM information_schema.tables WHERE table_name='tab1'; --echo #restart the server --source include/restart_mysqld.inc --echo #check the record is existing SELECT * FROM tab1; --echo check the update_time Before DML, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name='tab1'; SET AUTOCOMMIT=OFF; --echo #case3: START TRANSACTION; DELETE FROM tab1; --echo check the update_time Before commit, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name='tab1'; COMMIT; --echo #check the record is deleted SELECT * FROM tab1; --echo check the update_time After Commit, whether it is not NULL SELECT table_name,COUNT(update_time) FROM information_schema.tables WHERE table_name='tab1'; --echo #restart the server --source include/restart_mysqld.inc --echo #check no records are existing SELECT * FROM tab1; --echo check the update_time Before DML, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name='tab1'; SET AUTOCOMMIT=OFF; --echo #case4: START TRANSACTION; INSERT INTO tab1 VALUES(1,'Testing the wl6658', 'Testing the wl6658'); --echo check the update_time Before Rollback, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name='tab1'; ROLLBACK; --echo #check no record is inserted. SELECT * FROM tab1; --echo check the update_time After Rollback, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name='tab1'; CREATE TABLE tab2( id INT NOT NULL, store_name VARCHAR(30), parts VARCHAR(30), store_id INT ) ENGINE=InnoDB PARTITION BY LIST(store_id) ( PARTITION pNorth VALUES IN (10,20,30), PARTITION pEast VALUES IN (40,50,60), PARTITION pWest VALUES IN (70,80,100) ); --echo check the update_time Before DML, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name='tab2'; --echo #case5: delimiter |; --echo #create proc with DML CREATE PROCEDURE proc_wl6658() BEGIN INSERT INTO tab2 VALUES(1,'ORACLE','NUTT',10); INSERT INTO tab2 VALUES(2,'HUAWEI','BOLT',40); COMMIT; END | delimiter ;| CALL proc_wl6658; --echo #check the records are inserted SELECT * FROM tab2 ORDER BY id,store_id; --echo check the update_time After Commit, whether it is not NULL SELECT table_name,COUNT(update_time) FROM information_schema.tables WHERE table_name='tab2'; --echo #delete all records TRUNCATE TABLE tab2; --echo #restart the server --source include/restart_mysqld.inc --echo #case6: SET AUTOCOMMIT=off; BEGIN WORK; INSERT INTO tab2 VALUES(1,'Oracle','NUTT',10); SAVEPOINT A; INSERT INTO tab2 VALUES(2,'HUAWEI','BOLT',40); SAVEPOINT B; INSERT INTO tab2 VALUES(3,'IBM','NAIL',70); SAVEPOINT C; ROLLBACK to A; --echo #check 1 record is inserted SELECT * FROM tab2; --echo check the update_time Before DML, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name='tab2'; --echo #execute DDL instead of commit create table tab6(c1 int); --echo check the update_time After Commit, whether it is not NULL SELECT table_name,COUNT(update_time) FROM information_schema.tables WHERE table_name='tab2'; --echo #case7: --echo #create some base tables --echo set the flag to default SET AUTOCOMMIT=Default; CREATE TABLE tab7(c1 INT NOT NULL, PRIMARY KEY (c1)) ENGINE=INNODB; CREATE TABLE tab8(c1 INT PRIMARY KEY,c2 INT, FOREIGN KEY (c2) REFERENCES tab7(c1) ON DELETE CASCADE ) ENGINE=INNODB; --echo check the update_time Before DML, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name='tab7'; --echo check the update_time Before DML, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name='tab8'; INSERT INTO tab7 VALUES(1); INSERT INTO tab8 VALUES(1,1); --echo #check the record is inserted SELECT * FROM tab7; --echo #check the record is inserted SELECT * FROM tab8; --echo check the update_time After Autocommit, whether it is not NULL SELECT table_name,COUNT(update_time) FROM information_schema.tables WHERE table_name='tab7'; --echo check the update_time After Autocommit, whether it is not NULL SELECT table_name,COUNT(update_time) FROM information_schema.tables WHERE table_name='tab8'; --echo #restart the server --source include/restart_mysqld.inc SET AUTOCOMMIT=off; START TRANSACTION; DELETE FROM tab7; ROLLBACK; --echo #check record exist SELECT * FROM tab7; --echo #check record exist SELECT * FROM tab8; --echo check the update_time After Rollback, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name='tab7'; --echo check the update_time After Rollback, whether it is NULL SELECT table_name,update_time FROM information_schema.tables WHERE table_name='tab8'; START TRANSACTION; DELETE FROM tab7; COMMIT; --echo #check no record exist SELECT * FROM tab7; --echo #check no record exist SELECT * FROM tab8; --echo check the update_time After Commit, whether it is not NULL SELECT table_name,COUNT(update_time) FROM information_schema.tables WHERE table_name='tab7'; --echo check the update_time After Commit, whether it is not NULL SELECT table_name,COUNT(update_time) FROM information_schema.tables WHERE table_name='tab8'; --echo #cleanup DROP TRIGGER test_trig; DROP TABLE tab1,tab2,tab3,tab4,tab5,tab6,tab8,tab7; DROP PROCEDURE proc_wl6658;