diff --git a/mysql-test/suite/innodb/r/update_time.result b/mysql-test/suite/innodb/r/update_time.result index 0c6fc672dae..ab3eeb08dc7 100644 --- a/mysql-test/suite/innodb/r/update_time.result +++ b/mysql-test/suite/innodb/r/update_time.result @@ -19,7 +19,7 @@ SELECT COUNT(*) FROM information_schema.tables WHERE table_name = 't' AND TIMESTAMPDIFF(SECOND, update_time, NOW()) < 120; COUNT(*) 1 -CREATE TABLE big (a TEXT) ENGINE=INNODB; +CREATE TEMPORARY TABLE big (a TEXT) ENGINE=INNODB; SELECT COUNT(*) FROM information_schema.innodb_buffer_page WHERE table_name = '`test`.`t`'; COUNT(*) @@ -34,20 +34,21 @@ SELECT COUNT(*) FROM information_schema.tables WHERE table_name = 't' AND update_time IS NOT NULL; COUNT(*) 1 -DROP TABLE big; +DROP TEMPORARY TABLE big; # Test the behavior after restart with a prepared XA transaction XA START 'xatrx'; INSERT INTO t VALUES (5); XA END 'xatrx'; XA PREPARE 'xatrx'; +CONNECT con1,localhost,root,,; call mtr.add_suppression("Found 1 prepared XA transactions"); +FLUSH TABLES; # Kill and restart SELECT update_time FROM information_schema.tables WHERE table_name = 't'; update_time NULL XA COMMIT 'xatrx'; -SELECT COUNT(*) FROM information_schema.tables WHERE table_name = 't' -AND update_time IS NOT NULL; -COUNT(*) +SELECT COUNT(update_time) FROM information_schema.tables WHERE table_name='t'; +COUNT(update_time) 1 DROP TABLE t; diff --git a/mysql-test/suite/innodb/r/update_time_wl6658.result b/mysql-test/suite/innodb/r/update_time_wl6658.result index ae02e7b487c..9c069478ace 100644 --- a/mysql-test/suite/innodb/r/update_time_wl6658.result +++ b/mysql-test/suite/innodb/r/update_time_wl6658.result @@ -1,154 +1,20 @@ -#create base table CREATE TABLE tab1(c1 int,c2 varchar(30), c3 BLOB) ENGINE=InnoDB; +CREATE TABLE tab1u LIKE tab1; +CREATE TABLE tab1d LIKE tab1; +CREATE TABLE tab1i LIKE tab1; 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; -#insert some base records +INSERT INTO tab1u VALUES(1,'Testing the wl6658','Testing the wl6658'); +INSERT INTO tab1d VALUES(1,'Updated','Updated'); INSERT INTO tab4 VALUES(1,'Test for Update'); INSERT INTO tab5 VALUES(1,'Test for Delete'); -#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 | -#restart the server -# restart -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'); -table_name update_time -tab1 NULL -tab3 NULL -tab4 NULL -tab5 NULL -SET AUTOCOMMIT=OFF; -#case1: -BEGIN WORK; -INSERT INTO tab1 -VALUES(1,'Testing the wl6658', 'Testing the wl6658'); -check the update_time Before commit, whether it is NULL -SELECT table_name,update_time -FROM information_schema.tables WHERE table_name='tab1'; -table_name update_time -tab1 NULL -COMMIT; -#check the record is inserted -SELECT * FROM tab1; -c1 c2 c3 -1 Testing the wl6658 Testing the wl6658 -#check the record is inserted -SELECT * FROM tab3; -c1 c2 -1 Inserted From Trigger -#check the record is updated -SELECT * FROM tab4; -c1 c2 -1 Updated from Trigger -#check no record exists -SELECT * FROM tab5; -c1 c2 -check the update_time After Commit, whether it is not NULL -SELECT table_name,COUNT(update_time) -FROM information_schema.tables -WHERE table_name IN ('tab1','tab3','tab4','tab5') -GROUP BY table_name; -table_name COUNT(update_time) -tab1 1 -tab3 1 -tab4 1 -tab5 1 -#restart the server -# restart -Testcase with UPDATE stmt and transaction -#check the record is existing -SELECT * FROM tab1; -c1 c2 c3 -1 Testing the wl6658 Testing the wl6658 -check the update_time Before DML, whether it is NULL -SELECT table_name,update_time -FROM information_schema.tables WHERE table_name='tab1'; -table_name update_time -tab1 NULL -SET AUTOCOMMIT=OFF; -#case2: -START TRANSACTION; -UPDATE tab1 SET c2='Updated',c3='Updated' WHERE c1=1; -check the update_time Before commit, whether it is NULL -SELECT table_name,update_time -FROM information_schema.tables WHERE table_name='tab1'; -table_name update_time -tab1 NULL -COMMIT; -#check the record is updated -SELECT * FROM tab1; -c1 c2 c3 -1 Updated Updated -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'; -table_name COUNT(update_time) -tab1 1 -#restart the server -# restart -#check the record is existing -SELECT * FROM tab1; -c1 c2 c3 -1 Updated Updated -check the update_time Before DML, whether it is NULL -SELECT table_name,update_time -FROM information_schema.tables WHERE table_name='tab1'; -table_name update_time -tab1 NULL -SET AUTOCOMMIT=OFF; -#case3: -START TRANSACTION; -DELETE FROM tab1; -check the update_time Before commit, whether it is NULL -SELECT table_name,update_time -FROM information_schema.tables WHERE table_name='tab1'; -table_name update_time -tab1 NULL -COMMIT; -#check the record is deleted -SELECT * FROM tab1; -c1 c2 c3 -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'; -table_name COUNT(update_time) -tab1 1 -#restart the server -# restart -#check no records are existing -SELECT * FROM tab1; -c1 c2 c3 -check the update_time Before DML, whether it is NULL -SELECT table_name,update_time -FROM information_schema.tables WHERE table_name='tab1'; -table_name update_time -tab1 NULL -SET AUTOCOMMIT=OFF; -#case4: -START TRANSACTION; -INSERT INTO tab1 -VALUES(1,'Testing the wl6658', 'Testing the wl6658'); -check the update_time Before Rollback, whether it is NULL -SELECT table_name,update_time -FROM information_schema.tables WHERE table_name='tab1'; -table_name update_time -tab1 NULL -ROLLBACK; -#check no record is inserted. -SELECT * FROM tab1; -c1 c2 c3 -check the update_time After Rollback, whether it is NULL -SELECT table_name,update_time -FROM information_schema.tables WHERE table_name='tab1'; -table_name update_time -tab1 NULL CREATE TABLE tab2( id INT NOT NULL, store_name VARCHAR(30), @@ -160,13 +26,10 @@ PARTITION pNorth VALUES IN (10,20,30), PARTITION pEast VALUES IN (40,50,60), PARTITION pWest VALUES IN (70,80,100) ); -check the update_time Before DML, whether it is NULL -SELECT table_name,update_time +SELECT update_time FROM information_schema.tables WHERE table_name='tab2'; -table_name update_time -tab2 NULL -#case5: -#create proc with DML +update_time +NULL CREATE PROCEDURE proc_wl6658() BEGIN INSERT INTO tab2 VALUES(1,'ORACLE','NUTT',10); @@ -174,22 +37,144 @@ INSERT INTO tab2 VALUES(2,'HUAWEI','BOLT',40); COMMIT; END | CALL proc_wl6658; -#check the records are inserted SELECT * FROM tab2 ORDER BY id,store_id; id store_name parts store_id 1 ORACLE NUTT 10 2 HUAWEI BOLT 40 -check the update_time After Commit, whether it is not NULL -SELECT table_name,COUNT(update_time) +SELECT COUNT(update_time) FROM information_schema.tables WHERE table_name='tab2'; -table_name COUNT(update_time) -tab2 1 -#delete all records +COUNT(update_time) +1 TRUNCATE TABLE tab2; +SELECT COUNT(update_time) +FROM information_schema.tables WHERE table_name='tab2'; +COUNT(update_time) +1 +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; +SELECT table_name,update_time +FROM information_schema.tables WHERE table_name IN ('tab7','tab8') +GROUP BY table_name ORDER BY table_name; +table_name update_time +tab7 NULL +tab8 NULL +INSERT INTO tab7 VALUES(1); +INSERT INTO tab8 VALUES(1,1); +SELECT table_name,COUNT(update_time) +FROM information_schema.tables WHERE table_name IN ('tab7','tab8') +GROUP BY table_name ORDER BY table_name; +table_name COUNT(update_time) +tab7 1 +tab8 1 #restart the server -# restart -#case6: -SET AUTOCOMMIT=off; +SELECT table_name,update_time +FROM information_schema.tables +WHERE table_name IN ('tab1','tab2','tab3','tab4','tab5','tab7','tab8') +ORDER BY table_name; +table_name update_time +tab1 NULL +tab2 NULL +tab3 NULL +tab4 NULL +tab5 NULL +tab7 NULL +tab8 NULL +#case1: +BEGIN WORK; +INSERT INTO tab1 +VALUES(1,'Testing the wl6658', 'Testing the wl6658'); +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1'; +update_time +NULL +COMMIT; +SELECT * FROM tab1; +c1 c2 c3 +1 Testing the wl6658 Testing the wl6658 +SELECT * FROM tab3; +c1 c2 +1 Inserted From Trigger +SELECT * FROM tab4; +c1 c2 +1 Updated from Trigger +SELECT * FROM tab5; +c1 c2 +SELECT table_name,COUNT(update_time) +FROM information_schema.tables +WHERE table_name IN ('tab1','tab3','tab4','tab5') +GROUP BY table_name ORDER BY table_name; +table_name COUNT(update_time) +tab1 1 +tab3 1 +tab4 1 +tab5 1 +Testcase with UPDATE stmt and transaction +SELECT * FROM tab1u; +c1 c2 c3 +1 Testing the wl6658 Testing the wl6658 +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1u'; +update_time +NULL +#case2: +START TRANSACTION; +UPDATE tab1u SET c2='Updated',c3='Updated' WHERE c1=1; +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1u'; +update_time +NULL +COMMIT; +SELECT * FROM tab1u; +c1 c2 c3 +1 Updated Updated +SELECT COUNT(update_time) +FROM information_schema.tables WHERE table_name='tab1u'; +COUNT(update_time) +1 +SELECT * FROM tab1d; +c1 c2 c3 +1 Updated Updated +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1d'; +update_time +NULL +#case3: +START TRANSACTION; +DELETE FROM tab1d; +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1d'; +update_time +NULL +COMMIT; +SELECT * FROM tab1d; +c1 c2 c3 +SELECT COUNT(update_time) +FROM information_schema.tables WHERE table_name='tab1d'; +COUNT(update_time) +1 +SELECT * FROM tab1i; +c1 c2 c3 +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1i'; +update_time +NULL +#case4: +START TRANSACTION; +INSERT INTO tab1i +VALUES(1,'Testing the wl6658', 'Testing the wl6658'); +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1i'; +update_time +NULL +ROLLBACK; +SELECT * FROM tab1i; +c1 c2 c3 +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1i'; +update_time +NULL BEGIN WORK; INSERT INTO tab2 VALUES(1,'Oracle','NUTT',10); SAVEPOINT A; @@ -198,104 +183,46 @@ SAVEPOINT B; INSERT INTO tab2 VALUES(3,'IBM','NAIL',70); SAVEPOINT C; ROLLBACK to A; -#check 1 record is inserted SELECT * FROM tab2; id store_name parts store_id 1 Oracle NUTT 10 -check the update_time Before DML, whether it is NULL -SELECT table_name,update_time +SELECT update_time FROM information_schema.tables WHERE table_name='tab2'; -table_name update_time -tab2 NULL +update_time +NULL #execute DDL instead of commit create table tab6(c1 int); -check the update_time After Commit, whether it is not NULL -SELECT table_name,COUNT(update_time) +SELECT COUNT(update_time) FROM information_schema.tables WHERE table_name='tab2'; -table_name COUNT(update_time) -tab2 1 -#case7: -#create some base tables -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; -check the update_time Before DML, whether it is NULL -SELECT table_name,update_time -FROM information_schema.tables WHERE table_name='tab7'; -table_name update_time -tab7 NULL -check the update_time Before DML, whether it is NULL -SELECT table_name,update_time -FROM information_schema.tables WHERE table_name='tab8'; -table_name update_time -tab8 NULL -INSERT INTO tab7 VALUES(1); -INSERT INTO tab8 VALUES(1,1); -#check the record is inserted -SELECT * FROM tab7; -c1 +COUNT(update_time) 1 -#check the record is inserted -SELECT * FROM tab8; -c1 c2 -1 1 -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'; -table_name COUNT(update_time) -tab7 1 -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'; -table_name COUNT(update_time) -tab8 1 -#restart the server -# restart -SET AUTOCOMMIT=off; START TRANSACTION; DELETE FROM tab7; ROLLBACK; -#check record exist SELECT * FROM tab7; c1 1 -#check record exist SELECT * FROM tab8; c1 c2 1 1 -check the update_time After Rollback, whether it is NULL SELECT table_name,update_time -FROM information_schema.tables WHERE table_name='tab7'; +FROM information_schema.tables WHERE table_name IN ('tab7','tab8') +GROUP BY table_name ORDER BY table_name; table_name update_time tab7 NULL -check the update_time After Rollback, whether it is NULL -SELECT table_name,update_time -FROM information_schema.tables WHERE table_name='tab8'; -table_name update_time tab8 NULL -START TRANSACTION; DELETE FROM tab7; -COMMIT; -#check no record exist SELECT * FROM tab7; c1 -#check no record exist SELECT * FROM tab8; c1 c2 -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'; +FROM information_schema.tables WHERE table_name IN ('tab7','tab8') +GROUP BY table_name ORDER BY table_name; table_name COUNT(update_time) tab7 1 -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'; -table_name COUNT(update_time) tab8 1 #cleanup DROP TRIGGER test_trig; -DROP TABLE tab1,tab2,tab3,tab4,tab5,tab6,tab8,tab7; +DROP TABLE tab1,tab1u,tab1d,tab1i,tab2,tab3,tab4,tab5,tab6,tab8,tab7; DROP PROCEDURE proc_wl6658; diff --git a/mysql-test/suite/innodb/t/update_time.test b/mysql-test/suite/innodb/t/update_time.test index 922fd40325f..e2213c5d9b7 100644 --- a/mysql-test/suite/innodb/t/update_time.test +++ b/mysql-test/suite/innodb/t/update_time.test @@ -25,7 +25,7 @@ AND update_time IS NOT NULL; SELECT COUNT(*) FROM information_schema.tables WHERE table_name = 't' AND TIMESTAMPDIFF(SECOND, update_time, NOW()) < 120; -CREATE TABLE big (a TEXT) ENGINE=INNODB; +CREATE TEMPORARY TABLE big (a TEXT) ENGINE=INNODB; SELECT COUNT(*) FROM information_schema.innodb_buffer_page WHERE table_name = '`test`.`t`'; @@ -44,7 +44,7 @@ COMMIT; -- enable_query_log -- echo # INSERT lots of data in table 'big': end -# confirm that table 't' has been evicted +# confirm that all pages for table 't' have been evicted SELECT COUNT(*) FROM information_schema.innodb_buffer_page WHERE table_name = '`test`.`t`'; @@ -53,7 +53,7 @@ WHERE table_name = '`test`.`t`'; SELECT COUNT(*) FROM information_schema.tables WHERE table_name = 't' AND update_time IS NOT NULL; -DROP TABLE big; +DROP TEMPORARY TABLE big; -- echo # Test the behavior after restart with a prepared XA transaction @@ -63,9 +63,9 @@ XA END 'xatrx'; XA PREPARE 'xatrx'; CONNECT (con1,localhost,root,,); -CONNECTION con1; call mtr.add_suppression("Found 1 prepared XA transactions"); +FLUSH TABLES; --source include/kill_and_restart_mysqld.inc @@ -73,7 +73,6 @@ SELECT update_time FROM information_schema.tables WHERE table_name = 't'; XA COMMIT 'xatrx'; -SELECT COUNT(*) FROM information_schema.tables WHERE table_name = 't' -AND update_time IS NOT NULL; +SELECT COUNT(update_time) FROM information_schema.tables WHERE table_name='t'; DROP TABLE t; diff --git a/mysql-test/suite/innodb/t/update_time_wl6658.test b/mysql-test/suite/innodb/t/update_time_wl6658.test index e796b6aabe5..0b2b94ae2a9 100644 --- a/mysql-test/suite/innodb/t/update_time_wl6658.test +++ b/mysql-test/suite/innodb/t/update_time_wl6658.test @@ -1,30 +1,33 @@ ################################################################### #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 +#case1: begin work with INSERT with Triggers +#case2: (tab1u) begin transaction with UPDATE +#case3: (tab1d) begin transaction with DELETE +#case4: (tab1i) Rollback & INSERT +#case5: (tab2) partitioned table and procedures +#case6: (tab2) SAVEPOINT +#case7: (tab7,tab8) pk-fk with ON DELETE CASCADE ################################################################### --source include/no_valgrind_without_big.inc --source include/have_innodb.inc +--source include/have_partition.inc --source include/not_embedded.inc ---echo #create base table CREATE TABLE tab1(c1 int,c2 varchar(30), c3 BLOB) ENGINE=InnoDB; +CREATE TABLE tab1u LIKE tab1; +CREATE TABLE tab1d LIKE tab1; +CREATE TABLE tab1i LIKE tab1; 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 tab1u VALUES(1,'Testing the wl6658','Testing the wl6658'); +INSERT INTO tab1d VALUES(1,'Updated','Updated'); 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'); @@ -34,141 +37,6 @@ 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), @@ -181,15 +49,11 @@ PARTITION BY LIST(store_id) ( PARTITION pWest VALUES IN (70,80,100) ); ---echo check the update_time Before DML, whether it is NULL -SELECT table_name,update_time +SELECT 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); @@ -201,22 +65,126 @@ 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) +SELECT COUNT(update_time) FROM information_schema.tables WHERE table_name='tab2'; ---echo #delete all records TRUNCATE TABLE tab2; +SELECT COUNT(update_time) +FROM information_schema.tables WHERE table_name='tab2'; + +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; + +SELECT table_name,update_time +FROM information_schema.tables WHERE table_name IN ('tab7','tab8') +GROUP BY table_name ORDER BY table_name; + +INSERT INTO tab7 VALUES(1); + +INSERT INTO tab8 VALUES(1,1); + +SELECT table_name,COUNT(update_time) +FROM information_schema.tables WHERE table_name IN ('tab7','tab8') +GROUP BY table_name ORDER BY table_name; + --echo #restart the server --source include/restart_mysqld.inc ---echo #case6: +SELECT table_name,update_time +FROM information_schema.tables +WHERE table_name IN ('tab1','tab2','tab3','tab4','tab5','tab7','tab8') +ORDER BY table_name; -SET AUTOCOMMIT=off; +--echo #case1: + +BEGIN WORK; + +INSERT INTO tab1 +VALUES(1,'Testing the wl6658', 'Testing the wl6658'); + +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1'; + +COMMIT; + +SELECT * FROM tab1; +SELECT * FROM tab3; +SELECT * FROM tab4; +SELECT * FROM tab5; + +SELECT table_name,COUNT(update_time) +FROM information_schema.tables +WHERE table_name IN ('tab1','tab3','tab4','tab5') +GROUP BY table_name ORDER BY table_name; + +--echo Testcase with UPDATE stmt and transaction + +SELECT * FROM tab1u; + +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1u'; + +--echo #case2: +START TRANSACTION; + +UPDATE tab1u SET c2='Updated',c3='Updated' WHERE c1=1; + +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1u'; + +COMMIT; + +SELECT * FROM tab1u; + +SELECT COUNT(update_time) +FROM information_schema.tables WHERE table_name='tab1u'; + +SELECT * FROM tab1d; + +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1d'; + +--echo #case3: +START TRANSACTION; + +DELETE FROM tab1d; + +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1d'; + +COMMIT; + +SELECT * FROM tab1d; + +SELECT COUNT(update_time) +FROM information_schema.tables WHERE table_name='tab1d'; + +SELECT * FROM tab1i; + +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1i'; + +--echo #case4: +START TRANSACTION; + +INSERT INTO tab1i +VALUES(1,'Testing the wl6658', 'Testing the wl6658'); + +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1i'; + +ROLLBACK; + +SELECT * FROM tab1i; + +SELECT update_time +FROM information_schema.tables WHERE table_name='tab1i'; BEGIN WORK; INSERT INTO tab2 VALUES(1,'Oracle','NUTT',10); @@ -227,104 +195,37 @@ 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 +SELECT 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) +SELECT 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; +FROM information_schema.tables WHERE table_name IN ('tab7','tab8') +GROUP BY table_name ORDER BY table_name; 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'; +FROM information_schema.tables WHERE table_name IN ('tab7','tab8') +GROUP BY table_name ORDER BY table_name; --echo #cleanup DROP TRIGGER test_trig; -DROP TABLE tab1,tab2,tab3,tab4,tab5,tab6,tab8,tab7; +DROP TABLE tab1,tab1u,tab1d,tab1i,tab2,tab3,tab4,tab5,tab6,tab8,tab7; DROP PROCEDURE proc_wl6658;