403Webshell
Server IP : 88.99.149.37  /  Your IP : 216.73.216.141
Web Server : nginx/1.31.2
System : Linux server-88-99-149-37 6.12.0-124.56.5.el10_1.x86_64 #1 SMP PREEMPT_DYNAMIC Fri May 15 06:12:08 EDT 2026 x86_64
User : muralimurth ( 1015)
PHP Version : 8.4.23
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/local/mysql/mysql-test/main/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/local/mysql/mysql-test/main/long_unique_innodb_debug.test
--source include/have_innodb.inc
--source include/have_debug_sync.inc

--echo #
--echo # MDEV-37199 UNIQUE KEY USING HASH accepting duplicate records
--echo #

--disable_view_protocol
--echo ## INSERT
create table t1 (
  col1 int primary key,
  col2 varchar(3000),
  unique (col2) using hash) engine=innodb;
--echo # Keep a Read View open to prevent purge
start transaction;
select * from t1;
--connect con1,localhost,root
--echo # Create delete marked secondary index Record ('a', 10)
insert t1 values(10, 'a');
delete from t1;
--echo # Insert secondary index key ('a', 15) in the GAP between ('a', 10) and Supremum
set transaction isolation level read committed;
set debug_sync="innodb_row_ins_step_enter SIGNAL checked_duplicate WAIT_FOR do_insert";
--send insert t1 values(15, 'a')
--connect con2,localhost,root
set debug_sync="now WAIT_FOR checked_duplicate";
--echo # Insert secondary index key ('a', 5) in the GAP between Infimum and ('a', 10)
set transaction isolation level read committed;
insert t1 values(5, 'a');
set debug_sync="now SIGNAL do_insert";
--connection con1
--error ER_DUP_ENTRY
--reap
--connection default
select * from t1;
commit;
select * from t1;
--disconnect con1
--disconnect con2
set debug_sync='RESET';
drop table t1;

--echo ## INSERT, row-level locking proof
create table t1 (
  col1 int primary key,
  col2 varchar(3000),
  unique (col2) using hash) engine=innodb;
--echo # Keep a Read View open to prevent purge
start transaction;
select * from t1;

--connect con1,localhost,root
--echo # Create delete marked secondary index Record ('a', 10)
insert t1 values(10, 'a');
delete from t1;
--echo # Insert secondary index key ('a', 15) in the GAP between ('a', 10) and Supremum
set transaction isolation level read committed;
set debug_sync="ha_write_row_end SIGNAL checked_duplicate WAIT_FOR do_insert";
--send insert t1 values(15, 'a')

--connect con2,localhost,root
set debug_sync="now WAIT_FOR checked_duplicate";
--echo # Insert secondary index key ('a', 5) in the GAP between Infimum and ('a', 10)
set session innodb_lock_wait_timeout= 1;
set transaction isolation level read committed;
--error ER_LOCK_WAIT_TIMEOUT
insert t1 values(5, 'a');
set debug_sync="now SIGNAL do_insert";

--connection con1
--reap

--connection default
select * from t1;
commit;
select * from t1;
--disconnect con1
--disconnect con2
set debug_sync='RESET';
drop table t1;

--echo ## UPDATE
create table t1 (
  col1 int primary key,
  col2 varchar(3000),
  unique (col2) using hash) engine=innodb;
start transaction;
select * from t1;
--connect con1,localhost,root
insert into t1 values(10, 'a');
delete from t1;
insert into t1 values( 5, 'b');
insert into t1 values(15, 'c');
set transaction isolation level read committed;
set debug_sync="innodb_row_update_for_mysql_begin SIGNAL checked_duplicate WAIT_FOR do_insert";
--send update t1 set col2='a' where col1=5
--connect con2,localhost,root
set debug_sync="now WAIT_FOR checked_duplicate";
set transaction isolation level read committed;
update t1 set col2='a' where col1=15;
set debug_sync="now SIGNAL do_insert";
--connection con1
--error ER_DUP_ENTRY
--reap
--connection default
select * from t1;
commit;
select * from t1;
--disconnect con1
--disconnect con2
set debug_sync='RESET';
drop table t1;

--echo ## INSERT IGNORE
create table t1 (
  col1 int primary key,
  col2 varchar(3000),
  unique (col2) using hash) engine=innodb;
start transaction;
select * from t1;
--connect con1,localhost,root
insert t1 values(10, 'a');
delete from t1;
set transaction isolation level read committed;
set debug_sync="innodb_row_ins_step_enter SIGNAL checked_duplicate WAIT_FOR do_insert";
--send insert ignore t1 values(15, 'a'), (16, 'b')
--connect con2,localhost,root
set debug_sync="now WAIT_FOR checked_duplicate";
set transaction isolation level read committed;
insert t1 values(5, 'a');
set debug_sync="now SIGNAL do_insert";
--connection con1
--reap
--connection default
select * from t1;
commit;
select * from t1;
--disconnect con1
--disconnect con2
set debug_sync='RESET';
drop table t1;

--echo ## UPDATE IGNORE
create table t1 (
  col1 int primary key,
  col2 varchar(3000),
  unique (col2) using hash) engine=innodb;
start transaction;
select * from t1;
--connect con1,localhost,root
insert into t1 values(10, 'a');
delete from t1;
insert into t1 values( 5, 'b');
insert into t1 values(15, 'c');
insert into t1 values( 9, 'd');
set transaction isolation level read committed;
set debug_sync="innodb_row_update_for_mysql_begin SIGNAL checked_duplicate WAIT_FOR do_insert";
--send update ignore t1 set col2=chr(92+col1) where col1<=9
--connect con2,localhost,root
set debug_sync="now WAIT_FOR checked_duplicate";
set transaction isolation level read committed;
update t1 set col2='a' where col1=15;
set debug_sync="now SIGNAL do_insert";
--connection con1
--error ER_NOT_SUPPORTED_YET
--reap
--connection default
select * from t1;
commit;
select * from t1;
--disconnect con1
--disconnect con2
set debug_sync='RESET';
drop table t1;

--echo ## UPDATE modifying PK
create table t1 (
  col1 int primary key,
  col2 varchar(3000),
  unique (col2) using hash) engine=innodb;
start transaction;
select * from t1;
--connect con1,localhost,root
insert into t1 values(10, 'a');
delete from t1;
insert into t1 values( 5, 'b');
insert into t1 values(15, 'c');
set transaction isolation level read committed;
set debug_sync="innodb_row_update_for_mysql_begin SIGNAL checked_duplicate WAIT_FOR do_insert";
--send update t1 set col2='a', col1=4 where col1=5
--connect con2,localhost,root
set debug_sync="now WAIT_FOR checked_duplicate";
set transaction isolation level read committed;
update t1 set col2='a' where col1=15;
set debug_sync="now SIGNAL do_insert";
--connection con1
--error ER_DUP_ENTRY
--reap
--connection default
select * from t1;
commit;
select * from t1;
--disconnect con1
--disconnect con2
set debug_sync='RESET';
drop table t1;

--echo ## UPDATE IGNORE modifying PK
create table t1 (
  col1 int primary key,
  col2 varchar(3000),
  unique (col2) using hash) engine=innodb;
start transaction;
select * from t1;
--connect con1,localhost,root
insert into t1 values(10, 'a');
delete from t1;
insert into t1 values( 5, 'b');
insert into t1 values(15, 'c');
insert into t1 values( 9, 'd');
set transaction isolation level read committed;
set debug_sync="innodb_row_update_for_mysql_begin SIGNAL checked_duplicate WAIT_FOR do_insert";
--send update ignore t1 set col2=chr(92+col1), col1=col1-1 where col1<=9
--connect con2,localhost,root
set debug_sync="now WAIT_FOR checked_duplicate";
set transaction isolation level read committed;
update t1 set col2='a' where col1=15;
set debug_sync="now SIGNAL do_insert";
--connection con1
--error ER_NOT_SUPPORTED_YET
--reap
--connection default
select * from t1;
commit;
select * from t1;
--disconnect con1
--disconnect con2
set debug_sync='RESET';
drop table t1;
--enable_view_protocol

--echo # End of 10.6 tests

Youez - 2016 - github.com/yon3zu
LinuXploit