mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
merge
This commit is contained in:
@ -148,3 +148,25 @@ COMMIT;
|
|||||||
# Connection default
|
# Connection default
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
|
#
|
||||||
|
# Bug#11815600 [ERROR] INNODB COULD NOT FIND INDEX PRIMARY
|
||||||
|
# KEY NO 0 FOR TABLE IN ERROR LOG
|
||||||
|
#
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
# Connection default
|
||||||
|
CREATE TABLE t1 (id INT PRIMARY KEY, value INT) ENGINE = InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1, 12345);
|
||||||
|
START TRANSACTION;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id value
|
||||||
|
1 12345
|
||||||
|
# Connection con1
|
||||||
|
SET lock_wait_timeout=1;
|
||||||
|
ALTER TABLE t1 ADD INDEX idx(value);
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
|
# Connection default
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id value
|
||||||
|
1 12345
|
||||||
|
COMMIT;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -94,74 +94,7 @@ SET DEBUG_SYNC= 'RESET';
|
|||||||
# Bug#42230 during add index, cannot do queries on storage engines
|
# Bug#42230 during add index, cannot do queries on storage engines
|
||||||
# that implement add_index
|
# that implement add_index
|
||||||
#
|
#
|
||||||
DROP DATABASE IF EXISTS db1;
|
#
|
||||||
DROP TABLE IF EXISTS t1;
|
# DISABLED due to Bug#11815600
|
||||||
# Test 1: Secondary index, should not block reads (original test case).
|
#
|
||||||
# Connection default
|
|
||||||
CREATE DATABASE db1;
|
|
||||||
CREATE TABLE db1.t1(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, value INT) engine=innodb;
|
|
||||||
INSERT INTO db1.t1(value) VALUES (1), (2);
|
|
||||||
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
|
||||||
# Sending:
|
|
||||||
ALTER TABLE db1.t1 ADD INDEX(value);
|
|
||||||
# Connection con1
|
|
||||||
SET DEBUG_SYNC= "now WAIT_FOR manage";
|
|
||||||
USE db1;
|
|
||||||
SELECT * FROM t1;
|
|
||||||
id value
|
|
||||||
1 1
|
|
||||||
2 2
|
|
||||||
SET DEBUG_SYNC= "now SIGNAL query";
|
|
||||||
# Connection default
|
|
||||||
# Reaping: ALTER TABLE db1.t1 ADD INDEX(value)
|
|
||||||
DROP DATABASE db1;
|
|
||||||
# Test 2: Primary index (implicit), should block reads.
|
|
||||||
CREATE TABLE t1(a INT NOT NULL, b INT NOT NULL) engine=innodb;
|
|
||||||
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
|
||||||
# Sending:
|
|
||||||
ALTER TABLE t1 ADD UNIQUE INDEX(a);
|
|
||||||
# Connection con1
|
|
||||||
SET DEBUG_SYNC= "now WAIT_FOR manage";
|
|
||||||
USE test;
|
|
||||||
# Sending:
|
|
||||||
SELECT * FROM t1;
|
|
||||||
# Connection con2
|
|
||||||
# Waiting for SELECT to be blocked by the metadata lock on t1
|
|
||||||
SET DEBUG_SYNC= "now SIGNAL query";
|
|
||||||
# Connection default
|
|
||||||
# Reaping: ALTER TABLE t1 ADD UNIQUE INDEX(a)
|
|
||||||
# Connection con1
|
|
||||||
# Reaping: SELECT * FROM t1
|
|
||||||
a b
|
|
||||||
# Test 3: Primary index (explicit), should block reads.
|
|
||||||
# Connection default
|
|
||||||
ALTER TABLE t1 DROP INDEX a;
|
|
||||||
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
|
||||||
# Sending:
|
|
||||||
ALTER TABLE t1 ADD PRIMARY KEY (a);
|
|
||||||
# Connection con1
|
|
||||||
SET DEBUG_SYNC= "now WAIT_FOR manage";
|
|
||||||
# Sending:
|
|
||||||
SELECT * FROM t1;
|
|
||||||
# Connection con2
|
|
||||||
# Waiting for SELECT to be blocked by the metadata lock on t1
|
|
||||||
SET DEBUG_SYNC= "now SIGNAL query";
|
|
||||||
# Connection default
|
|
||||||
# Reaping: ALTER TABLE t1 ADD PRIMARY KEY (a)
|
|
||||||
# Connection con1
|
|
||||||
# Reaping: SELECT * FROM t1
|
|
||||||
a b
|
|
||||||
# Test 4: Secondary unique index, should not block reads.
|
|
||||||
# Connection default
|
|
||||||
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
|
||||||
# Sending:
|
|
||||||
ALTER TABLE t1 ADD UNIQUE (b);
|
|
||||||
# Connection con1
|
|
||||||
SET DEBUG_SYNC= "now WAIT_FOR manage";
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a b
|
|
||||||
SET DEBUG_SYNC= "now SIGNAL query";
|
|
||||||
# Connection default
|
|
||||||
# Reaping: ALTER TABLE t1 ADD UNIQUE (b)
|
|
||||||
SET DEBUG_SYNC= "RESET";
|
|
||||||
DROP TABLE t1;
|
|
||||||
|
@ -279,6 +279,38 @@ disconnect con2;
|
|||||||
disconnect con3;
|
disconnect con3;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#11815600 [ERROR] INNODB COULD NOT FIND INDEX PRIMARY
|
||||||
|
--echo # KEY NO 0 FOR TABLE IN ERROR LOG
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
--connect (con1,localhost,root)
|
||||||
|
|
||||||
|
--echo # Connection default
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (id INT PRIMARY KEY, value INT) ENGINE = InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1, 12345);
|
||||||
|
START TRANSACTION;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
--echo # Connection con1
|
||||||
|
--connection con1
|
||||||
|
SET lock_wait_timeout=1;
|
||||||
|
--error ER_LOCK_WAIT_TIMEOUT
|
||||||
|
ALTER TABLE t1 ADD INDEX idx(value);
|
||||||
|
|
||||||
|
--echo # Connection default
|
||||||
|
--connection default
|
||||||
|
SELECT * FROM t1;
|
||||||
|
COMMIT;
|
||||||
|
DROP TABLE t1;
|
||||||
|
disconnect con1;
|
||||||
|
|
||||||
|
|
||||||
# Check that all connections opened by test cases in this file are really
|
# Check that all connections opened by test cases in this file are really
|
||||||
# gone so execution of other tests won't be affected by their presence.
|
# gone so execution of other tests won't be affected by their presence.
|
||||||
--source include/wait_until_count_sessions.inc
|
--source include/wait_until_count_sessions.inc
|
||||||
|
@ -152,129 +152,133 @@ disconnect con1;
|
|||||||
--echo # that implement add_index
|
--echo # that implement add_index
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
--disable_warnings
|
--echo #
|
||||||
DROP DATABASE IF EXISTS db1;
|
--echo # DISABLED due to Bug#11815600
|
||||||
DROP TABLE IF EXISTS t1;
|
--echo #
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
connect(con1,localhost,root);
|
#--disable_warnings
|
||||||
connect(con2,localhost,root);
|
#DROP DATABASE IF EXISTS db1;
|
||||||
|
#DROP TABLE IF EXISTS t1;
|
||||||
--echo # Test 1: Secondary index, should not block reads (original test case).
|
#--enable_warnings
|
||||||
|
#
|
||||||
--echo # Connection default
|
#connect(con1,localhost,root);
|
||||||
connection default;
|
#connect(con2,localhost,root);
|
||||||
CREATE DATABASE db1;
|
#
|
||||||
CREATE TABLE db1.t1(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, value INT) engine=innodb;
|
#--echo # Test 1: Secondary index, should not block reads (original test case).
|
||||||
INSERT INTO db1.t1(value) VALUES (1), (2);
|
#
|
||||||
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
#--echo # Connection default
|
||||||
--echo # Sending:
|
#connection default;
|
||||||
--send ALTER TABLE db1.t1 ADD INDEX(value)
|
#CREATE DATABASE db1;
|
||||||
|
#CREATE TABLE db1.t1(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, value INT) engine=innodb;
|
||||||
--echo # Connection con1
|
#INSERT INTO db1.t1(value) VALUES (1), (2);
|
||||||
connection con1;
|
#SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
||||||
SET DEBUG_SYNC= "now WAIT_FOR manage";
|
#--echo # Sending:
|
||||||
# Neither of these two statements should be blocked
|
#--send ALTER TABLE db1.t1 ADD INDEX(value)
|
||||||
USE db1;
|
#
|
||||||
SELECT * FROM t1;
|
#--echo # Connection con1
|
||||||
SET DEBUG_SYNC= "now SIGNAL query";
|
#connection con1;
|
||||||
|
#SET DEBUG_SYNC= "now WAIT_FOR manage";
|
||||||
--echo # Connection default
|
# # Neither of these two statements should be blocked
|
||||||
connection default;
|
#USE db1;
|
||||||
--echo # Reaping: ALTER TABLE db1.t1 ADD INDEX(value)
|
#SELECT * FROM t1;
|
||||||
--reap
|
#SET DEBUG_SYNC= "now SIGNAL query";
|
||||||
DROP DATABASE db1;
|
#
|
||||||
|
#--echo # Connection default
|
||||||
--echo # Test 2: Primary index (implicit), should block reads.
|
#connection default;
|
||||||
|
#--echo # Reaping: ALTER TABLE db1.t1 ADD INDEX(value)
|
||||||
CREATE TABLE t1(a INT NOT NULL, b INT NOT NULL) engine=innodb;
|
#--reap
|
||||||
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
#DROP DATABASE db1;
|
||||||
--echo # Sending:
|
#
|
||||||
--send ALTER TABLE t1 ADD UNIQUE INDEX(a)
|
#--echo # Test 2: Primary index (implicit), should block reads.
|
||||||
|
#
|
||||||
--echo # Connection con1
|
#CREATE TABLE t1(a INT NOT NULL, b INT NOT NULL) engine=innodb;
|
||||||
connection con1;
|
#SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
||||||
SET DEBUG_SYNC= "now WAIT_FOR manage";
|
#--echo # Sending:
|
||||||
USE test;
|
#--send ALTER TABLE t1 ADD UNIQUE INDEX(a)
|
||||||
--echo # Sending:
|
#
|
||||||
--send SELECT * FROM t1
|
#--echo # Connection con1
|
||||||
|
#connection con1;
|
||||||
--echo # Connection con2
|
#SET DEBUG_SYNC= "now WAIT_FOR manage";
|
||||||
connection con2;
|
#USE test;
|
||||||
--echo # Waiting for SELECT to be blocked by the metadata lock on t1
|
#--echo # Sending:
|
||||||
let $wait_condition= SELECT COUNT(*)= 1 FROM information_schema.processlist
|
#--send SELECT * FROM t1
|
||||||
WHERE state= 'Waiting for table metadata lock'
|
#
|
||||||
AND info='SELECT * FROM t1';
|
#--echo # Connection con2
|
||||||
--source include/wait_condition.inc
|
#connection con2;
|
||||||
SET DEBUG_SYNC= "now SIGNAL query";
|
#--echo # Waiting for SELECT to be blocked by the metadata lock on t1
|
||||||
|
#let $wait_condition= SELECT COUNT(*)= 1 FROM information_schema.processlist
|
||||||
--echo # Connection default
|
# WHERE state= 'Waiting for table metadata lock'
|
||||||
connection default;
|
# AND info='SELECT * FROM t1';
|
||||||
--echo # Reaping: ALTER TABLE t1 ADD UNIQUE INDEX(a)
|
#--source include/wait_condition.inc
|
||||||
--reap
|
#SET DEBUG_SYNC= "now SIGNAL query";
|
||||||
|
#
|
||||||
--echo # Connection con1
|
#--echo # Connection default
|
||||||
connection con1;
|
#connection default;
|
||||||
--echo # Reaping: SELECT * FROM t1
|
#--echo # Reaping: ALTER TABLE t1 ADD UNIQUE INDEX(a)
|
||||||
--reap
|
#--reap
|
||||||
|
#
|
||||||
--echo # Test 3: Primary index (explicit), should block reads.
|
#--echo # Connection con1
|
||||||
|
#connection con1;
|
||||||
--echo # Connection default
|
#--echo # Reaping: SELECT * FROM t1
|
||||||
connection default;
|
#--reap
|
||||||
ALTER TABLE t1 DROP INDEX a;
|
#
|
||||||
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
#--echo # Test 3: Primary index (explicit), should block reads.
|
||||||
--echo # Sending:
|
#
|
||||||
--send ALTER TABLE t1 ADD PRIMARY KEY (a)
|
#--echo # Connection default
|
||||||
|
#connection default;
|
||||||
--echo # Connection con1
|
#ALTER TABLE t1 DROP INDEX a;
|
||||||
connection con1;
|
#SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
||||||
SET DEBUG_SYNC= "now WAIT_FOR manage";
|
#--echo # Sending:
|
||||||
--echo # Sending:
|
#--send ALTER TABLE t1 ADD PRIMARY KEY (a)
|
||||||
--send SELECT * FROM t1
|
#
|
||||||
|
#--echo # Connection con1
|
||||||
--echo # Connection con2
|
#connection con1;
|
||||||
connection con2;
|
#SET DEBUG_SYNC= "now WAIT_FOR manage";
|
||||||
--echo # Waiting for SELECT to be blocked by the metadata lock on t1
|
#--echo # Sending:
|
||||||
let $wait_condition= SELECT COUNT(*)= 1 FROM information_schema.processlist
|
#--send SELECT * FROM t1
|
||||||
WHERE state= 'Waiting for table metadata lock'
|
#
|
||||||
AND info='SELECT * FROM t1';
|
#--echo # Connection con2
|
||||||
--source include/wait_condition.inc
|
#connection con2;
|
||||||
SET DEBUG_SYNC= "now SIGNAL query";
|
#--echo # Waiting for SELECT to be blocked by the metadata lock on t1
|
||||||
|
#let $wait_condition= SELECT COUNT(*)= 1 FROM information_schema.processlist
|
||||||
--echo # Connection default
|
# WHERE state= 'Waiting for table metadata lock'
|
||||||
connection default;
|
# AND info='SELECT * FROM t1';
|
||||||
--echo # Reaping: ALTER TABLE t1 ADD PRIMARY KEY (a)
|
#--source include/wait_condition.inc
|
||||||
--reap
|
#SET DEBUG_SYNC= "now SIGNAL query";
|
||||||
|
#
|
||||||
--echo # Connection con1
|
#--echo # Connection default
|
||||||
connection con1;
|
#connection default;
|
||||||
--echo # Reaping: SELECT * FROM t1
|
#--echo # Reaping: ALTER TABLE t1 ADD PRIMARY KEY (a)
|
||||||
--reap
|
#--reap
|
||||||
|
#
|
||||||
--echo # Test 4: Secondary unique index, should not block reads.
|
#--echo # Connection con1
|
||||||
|
#connection con1;
|
||||||
--echo # Connection default
|
#--echo # Reaping: SELECT * FROM t1
|
||||||
connection default;
|
#--reap
|
||||||
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
#
|
||||||
--echo # Sending:
|
#--echo # Test 4: Secondary unique index, should not block reads.
|
||||||
--send ALTER TABLE t1 ADD UNIQUE (b)
|
#
|
||||||
|
#--echo # Connection default
|
||||||
--echo # Connection con1
|
#connection default;
|
||||||
connection con1;
|
#SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
||||||
SET DEBUG_SYNC= "now WAIT_FOR manage";
|
#--echo # Sending:
|
||||||
SELECT * FROM t1;
|
#--send ALTER TABLE t1 ADD UNIQUE (b)
|
||||||
SET DEBUG_SYNC= "now SIGNAL query";
|
#
|
||||||
|
#--echo # Connection con1
|
||||||
--echo # Connection default
|
#connection con1;
|
||||||
connection default;
|
#SET DEBUG_SYNC= "now WAIT_FOR manage";
|
||||||
--echo # Reaping: ALTER TABLE t1 ADD UNIQUE (b)
|
#SELECT * FROM t1;
|
||||||
--reap
|
#SET DEBUG_SYNC= "now SIGNAL query";
|
||||||
|
#
|
||||||
disconnect con1;
|
#--echo # Connection default
|
||||||
disconnect con2;
|
#connection default;
|
||||||
SET DEBUG_SYNC= "RESET";
|
#--echo # Reaping: ALTER TABLE t1 ADD UNIQUE (b)
|
||||||
DROP TABLE t1;
|
#--reap
|
||||||
|
#
|
||||||
|
#disconnect con1;
|
||||||
|
#disconnect con2;
|
||||||
|
#SET DEBUG_SYNC= "RESET";
|
||||||
|
#DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
# Check that all connections opened by test cases in this file are really
|
# Check that all connections opened by test cases in this file are really
|
||||||
|
@ -2594,7 +2594,6 @@ innobase_alter_table_flags(
|
|||||||
uint flags)
|
uint flags)
|
||||||
{
|
{
|
||||||
return(HA_INPLACE_ADD_INDEX_NO_READ_WRITE
|
return(HA_INPLACE_ADD_INDEX_NO_READ_WRITE
|
||||||
| HA_INPLACE_ADD_INDEX_NO_WRITE
|
|
||||||
| HA_INPLACE_DROP_INDEX_NO_READ_WRITE
|
| HA_INPLACE_DROP_INDEX_NO_READ_WRITE
|
||||||
| HA_INPLACE_ADD_UNIQUE_INDEX_NO_READ_WRITE
|
| HA_INPLACE_ADD_UNIQUE_INDEX_NO_READ_WRITE
|
||||||
| HA_INPLACE_ADD_UNIQUE_INDEX_NO_WRITE
|
| HA_INPLACE_ADD_UNIQUE_INDEX_NO_WRITE
|
||||||
|
Reference in New Issue
Block a user