Server IP : 185.86.78.101 / Your IP : 216.73.216.124 Web Server : Apache System : Linux 675867-vds-valikoshka1996.gmhost.pp.ua 5.4.0-150-generic #167-Ubuntu SMP Mon May 15 17:35:05 UTC 2023 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 : OFF Directory : /www/server/mysql/mysql-test/t/ |
Upload File : |
# The include statement below is a temp one for tests that are yet to #be ported to run with InnoDB, #but needs to be kept for tests that would need MyISAM in future. --source include/force_myisam_default.inc # # Bug#38691 segfault/abort in ``UPDATE ...JOIN'' while # ``FLUSH TABLES WITH READ LOCK'' # 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; # Test to see if select will get the lock ahead of low priority update connect (locker,localhost,root,,); connect (writer,localhost,root,,); --connection default --disable_warnings DROP TABLE IF EXISTS t1,t2,t3; --enable_warnings CREATE TABLE t1 ( a int(11) unsigned default NULL, b varchar(255) default NULL, UNIQUE KEY a (a), KEY b (b) ); INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3); CREATE TABLE t2 SELECT * FROM t1; CREATE TABLE t3 SELECT * FROM t1; --echo # test altering of columns that multiupdate doesn't use --echo # normal mode --disable_query_log let $i = 100; while ($i) { --dec $i --connection writer send UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a) SET a = NULL WHERE t1.b <> t2.b; --connection locker ALTER TABLE t2 ADD COLUMN (c INT); ALTER TABLE t2 DROP COLUMN c; --connection writer --reap } --echo # PS mode --connection writer PREPARE stmt FROM 'UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a) SET a = NULL WHERE t1.b <> t2.b'; let $i = 100; while ($i) { --dec $i --connection writer --send EXECUTE stmt --connection locker ALTER TABLE t2 ADD COLUMN (c INT); ALTER TABLE t2 DROP COLUMN c; --connection writer --reap } --enable_query_log --echo # test altering of columns that multiupdate uses --echo # normal mode --connection default --disable_query_log let $i = 100; while ($i) { dec $i; --connection locker --error 0,ER_DUP_FIELDNAME ALTER TABLE t2 ADD COLUMN a int(11) unsigned default NULL; UPDATE t2 SET a=b; --connection writer --send UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a) SET a = NULL WHERE t1.b <> t2.b --connection locker --error 0,ER_CANT_DROP_FIELD_OR_KEY ALTER TABLE t2 DROP COLUMN a; --connection writer --error 0,ER_BAD_FIELD_ERROR --reap } --enable_query_log --echo # PS mode --disable_query_log let $i = 100; while ($i) { dec $i; --connection locker --error 0,ER_DUP_FIELDNAME ALTER TABLE t2 ADD COLUMN a int(11) unsigned default NULL; UPDATE t2 SET a=b; --connection writer PREPARE stmt FROM 'UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a) SET a = NULL WHERE t1.b <> t2.b'; --send EXECUTE stmt --connection locker --error 0,ER_CANT_DROP_FIELD_OR_KEY ALTER TABLE t2 DROP COLUMN a; --connection writer --error 0,ER_BAD_FIELD_ERROR --reap } --enable_query_log --connection default DROP TABLE t1, t2, t3; # Close connections --disconnect locker --disconnect writer SET @@global.sync_frm = @odl_sync_frm; # Wait till all disconnects are completed --source include/wait_until_count_sessions.inc