403Webshell
Server IP : 104.21.38.3  /  Your IP : 172.71.124.170
Web Server : Apache
System : Linux krdc-ubuntu-s-2vcpu-4gb-amd-blr1-01.localdomain 5.15.0-142-generic #152-Ubuntu SMP Mon May 19 10:54:31 UTC 2025 x86_64
User : www ( 1000)
PHP Version : 7.4.33
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /www/server/mysql/src/mysql-test/suite/innodb/t/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/server/mysql/src/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;

Youez - 2016 - github.com/yon3zu
LinuXploit