403Webshell
Server IP : 172.67.216.182  /  Your IP : 172.71.124.155
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/rpl/t/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/server/mysql/src/mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test
#
# Bug#49132 
# This test verifies if executing DDL statement before trying to manipulate
# a temporary table causes row-based replication to break with error 'table
# does not exist' base on myisam engine.
#

--source include/not_group_replication_plugin.inc
source include/have_binlog_format_row.inc;
source include/have_myisam.inc;
source include/master-slave.inc;

LET $ENGINE_TYPE= MyISAM;
source extra/rpl_tests/rpl_tmp_table_and_DDL.test;
--source include/sync_slave_sql_with_master.inc

#
# BUG #51839
# The test makes sure the binlog format is not changed 
# after a execution of DDL with a table locked, so that
# the following DML statements will not cause the slave 
# to stop.
#

--connection master
--disable_abort_on_error

CREATE TABLE t1 (a CHAR(30));
CREATE TEMPORARY TABLE t2 (b CHAR(60));

# CREATE FUNCTION when a table is locked.
LOCK TABLE t1 WRITE;
CREATE FUNCTION f1 () RETURNS TINYINT RETURN 13;
INSERT INTO t2 VALUES ("CREATE FUNCTION f1 with table locked");

UNLOCK TABLE;
CREATE FUNCTION f2 () RETURNS TINYINT RETURN 13;

# ALTER FUNCTION when a table is locked.
LOCK TABLE t1 WRITE;
ALTER FUNCTION f2 SQL SECURITY INVOKER;
INSERT INTO t2 VALUES ("ALTER FUNCTION f2 with table locked");

# DROP FUNCTION when a table is locked.
LOCK TABLE t1 WRITE;
DROP FUNCTION f2;
INSERT INTO t2 VALUES ("DROP FUNCTION f2 with table locked");


# CREATE PROCEDURE when a table is locked.
CREATE PROCEDURE p1() SELECT 1;
INSERT INTO t2 VALUES ("CREATE PROCEDURE p1 with table locked");

UNLOCK TABLE;
CREATE PROCEDURE p2() SELECT 1;

# ALTER PROCEDURE when a table is locked.
LOCK TABLE t1 WRITE;
ALTER PROCEDURE p2 SQL SECURITY INVOKER;
INSERT INTO t2 VALUES ("ALTER PROCEDURE P2 with table locked");

# DROP PROCEDURE when a table is locked.
DROP PROCEDURE p2;
INSERT INTO t2 VALUES ("DROP PROCEDURE p2 with table locked");


# CREATE EVENT when a table is locked.
CREATE EVENT e1 ON SCHEDULE EVERY 10 HOUR DO SELECT 1;
INSERT INTO t2 VALUES ("CREATE EVENT e1 with table locked");

UNLOCK TABLE;
CREATE EVENT e2 ON SCHEDULE EVERY 10 HOUR DO SELECT 1;

# ALTER EVENT when a table is locked.
LOCK TABLE t1 WRITE;
ALTER EVENT e2 ON SCHEDULE EVERY 20 HOUR DO SELECT 1;
INSERT INTO t2 VALUES ("ALTER EVENT e2 with table locked");

# DROP EVENT when a table is locked.
DROP EVENT e2;
INSERT INTO t2 VALUES ("DROP EVENT e2 with table locked");


# CREATE DATABASE when a table is locked.
CREATE DATABASE mysqltest1;
INSERT INTO t2 VALUES ("CREATE DATABASE mysqltest1 with table locked");

UNLOCK TABLE;
CREATE DATABASE mysqltest2;

# DROP DATABASE when a table is locked.
LOCK TABLE t1 WRITE;
DROP DATABASE mysqltest2;
INSERT INTO t2 VALUES ("DROP DATABASE mysqltest2 with table locked");

UNLOCK TABLE;
DROP DATABASE mysqltest2;

# CREATE USER when a table is locked.
LOCK TABLE t1 WRITE;
CREATE USER test_1@localhost;
INSERT INTO t2 VALUES ("CREATE USER test_1@localhost with table locked");

UNLOCK TABLE;
CREATE USER test_2@localhost;

# GRANT select on table to user when a table is locked.
LOCK TABLE t1 WRITE;
GRANT SELECT ON t1 TO test_2@localhost;
INSERT INTO t2 VALUES ("GRANT select on table to user with table locked");

# GRANT all on function to user when a table is locked.
GRANT ALL ON f2 TO test_2@localhost;
INSERT INTO t2 VALUES ("GRANT ALL ON f2 TO test_2 with table locked");

# GRANT all on procdure to user when a table is locked.
GRANT ALL ON p2 TO test_2@localhost;
INSERT INTO t2 VALUES ("GRANT ALL ON p2 TO test_2 with table locked");

# GRANT USAGE ON *.* to user when a table is locked.
GRANT USAGE ON *.* TO test_2@localhost;
INSERT INTO t2 VALUES ("GRANT USAGE ON *.* TO test_2 with table locked");


# REVOKE ALL PRIVILEGES on function to user when a table is locked.
REVOKE ALL PRIVILEGES ON f2 FROM test_2@localhost;
INSERT INTO t2 VALUES ("REVOKE ALL PRIVILEGES on function to user with table locked");

# REVOKE ALL PRIVILEGES on procedure to user when a table is locked.
REVOKE ALL PRIVILEGES ON p2 FROM test_2@localhost;
INSERT INTO t2 VALUES ("REVOKE ALL PRIVILEGES on procedure to user with table locked");

# REVOKE ALL PRIVILEGES on table to user when a table is locked.
REVOKE ALL PRIVILEGES ON t1 FROM test_2@localhost;
INSERT INTO t2 VALUES ("REVOKE ALL PRIVILEGES on table to user with table locked");

# REVOKE USAGE ON *.* to user when a table is locked.
REVOKE USAGE ON *.* FROM test_2@localhost;
INSERT INTO t2 VALUES ("REVOKE USAGE ON *.* TO test_2 with table locked");


# RENAME USER when a table is locked.
RENAME USER test_2@localhost TO test_3@localhost;
INSERT INTO t2 VALUES ("RENAME USER test_2 TO test_3 with table locked");

UNLOCK TABLE;
RENAME USER test_2@localhost TO test_3@localhost;

# DROP USER when a table is locked.
LOCK TABLE t1 WRITE;
DROP USER test_3@localhost;
INSERT INTO t2 VALUES ("DROP USER test_3@localhost with table locked");

UNLOCK TABLE;

# Bug #20439913 CREATE TABLE DB.TABLE LIKE TMPTABLE IS
# BINLOGGED INCORRECTLY - BREAKS A SLAVE
CREATE DATABASE db;
CREATE TABLE db.t1 LIKE t2;
CREATE TABLE t3 LIKE t2;
DROP TABLE t3;
DROP DATABASE db;
# end of Bug #20439913 test

DROP USER test_3@localhost;
DROP FUNCTION f2;
DROP PROCEDURE p2;
DROP EVENT e2;
DROP TABLE t1, t2;

--sync_slave_with_master
#
# BUG#20574550
# CREATE TABLE LIKE <TEMP_TABLE> does not preserve original table storage
# engine when using row based replication
#
--connection master

# Define temp_t1 and temp_t2 storage engines
--let $engine_temp_t1= InnoDB
--let $engine_temp_t2= MyISAM

# Create the two temporary tables
--eval CREATE TEMPORARY TABLE temp_t1 (c1 INT) ENGINE=$engine_temp_t1
--eval CREATE TEMPORARY TABLE temp_t2 (c1 INT) ENGINE=$engine_temp_t2

# Create t1 and t2 based on temporary tables
CREATE TABLE t1 LIKE temp_t1;
CREATE TABLE t2 LIKE temp_t2;
--sync_slave_with_master

# On master
--connection master
# Assert that t1 and t2 have the same storage engines as temp_t1 and temp_t2
--let $engine_t1= query_get_value(SHOW TABLE STATUS WHERE Name='t1', Engine, 1)
--let $assert_cond= "$engine_t1" = "$engine_temp_t1"
--let $assert_text= "t1 on master and temp_t1 have the same storage engine"
--source include/assert.inc

--let $engine_t2= query_get_value(SHOW TABLE STATUS WHERE Name='t2', Engine, 1)
--let $assert_cond= "$engine_t2" = "$engine_temp_t2"
--let $assert_text= "t2 on master and temp_t2 have the same storage engine"
--source include/assert.inc

# On slave
--connection slave
# Assert that t1 and t2 have the same storage engines as temp_t1 and temp_t2
--let $engine_t1= query_get_value(SHOW TABLE STATUS WHERE Name='t1', Engine, 1)
--let $assert_cond= "$engine_t1" = "$engine_temp_t1"
--let $assert_text= "t1 on slave and temp_t1 have the same storage engine"
--source include/assert.inc

--let $engine_t2= query_get_value(SHOW TABLE STATUS WHERE Name='t2', Engine, 1)
--let $assert_cond= "$engine_t2" = "$engine_temp_t2"
--let $assert_text= "t2 on slave and temp_t2 have the same storage engine"
--source include/assert.inc

# Cleanup
--connection master
DROP TEMPORARY TABLE temp_t1, temp_t2;
DROP TABLE t1, t2;
--source include/rpl_end.inc

Youez - 2016 - github.com/yon3zu
LinuXploit