mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
10.0-monty merge
includes: * remove some remnants of "Bug#14521864: MYSQL 5.1 TO 5.5 BUGS PARTITIONING" * introduce LOCK_share, now LOCK_ha_data is strictly for engines * rea_create_table() always creates .par file (even in "frm-only" mode) * fix a 5.6 bug, temp file leak on dummy ALTER TABLE
This commit is contained in:
@ -5,7 +5,9 @@ SET DEBUG_SYNC= 'RESET';
|
||||
# Test when remove partitioning is done while drop table is waiting
|
||||
# for the table.
|
||||
# After MDL was introduced, there is no longer any race, so test is done
|
||||
# by adding a small sleep to verify that the delete waits.
|
||||
# by adding a small sleep to verify that the delete waits. This happens
|
||||
# only until ALTER tries to upgrade its MDL lock, which ends up in MDL
|
||||
# deadlock which is correctly reported.
|
||||
# Con 1
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
CREATE TABLE t1
|
||||
@ -19,14 +21,15 @@ PARTITION p1 VALUES LESS THAN (20),
|
||||
PARTITION p2 VALUES LESS THAN (100),
|
||||
PARTITION p3 VALUES LESS THAN MAXVALUE ) */;
|
||||
SET DEBUG_SYNC= 'alter_table_before_create_table_no_lock SIGNAL removing_partitioning WAIT_FOR waiting_for_alter';
|
||||
SET DEBUG_SYNC= 'alter_table_before_main_binlog SIGNAL partitioning_removed';
|
||||
SET DEBUG_SYNC= 'mdl_acquire_lock_wait SIGNAL waiting_for_upgrade';
|
||||
ALTER TABLE t1 REMOVE PARTITIONING;
|
||||
# Con default
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR removing_partitioning';
|
||||
SET DEBUG_SYNC= 'mdl_acquire_lock_wait SIGNAL waiting_for_alter';
|
||||
SET DEBUG_SYNC= 'rm_table_no_locks_before_delete_table WAIT_FOR partitioning_removed';
|
||||
SET DEBUG_SYNC= 'rm_table_no_locks_before_delete_table WAIT_FOR waiting_for_upgrade';
|
||||
DROP TABLE IF EXISTS t1;
|
||||
# Con 1
|
||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
#
|
||||
@ -58,3 +61,27 @@ SET DEBUG_SYNC= 'RESET';
|
||||
# Con default
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
End of 5.1 tests
|
||||
#
|
||||
# Coverage test for non pruned ha_partition::store_lock()
|
||||
#
|
||||
CREATE TABLE t1 (a int) ENGINE = InnoDB;
|
||||
CREATE TABLE t2 (a int PRIMARY KEY)
|
||||
ENGINE = InnoDB PARTITION BY HASH (a) PARTITIONS 3;
|
||||
HANDLER t1 OPEN;
|
||||
# Con1
|
||||
LOCK TABLES t1 WRITE, t2 READ;
|
||||
# Default
|
||||
SET DEBUG_SYNC="wait_for_lock SIGNAL locking";
|
||||
INSERT INTO t2 VALUES (1), (2), (3);
|
||||
# Con1
|
||||
SET DEBUG_SYNC="now WAIT_FOR locking";
|
||||
ALTER TABLE t1 ADD COLUMN b int;
|
||||
# Default
|
||||
ERROR HY000: Wait on a lock was aborted due to a pending exclusive lock
|
||||
SELECT 1;
|
||||
1
|
||||
1
|
||||
# Con1
|
||||
UNLOCK TABLES;
|
||||
# Default
|
||||
DROP TABLE t1, t2;
|
||||
|
Reference in New Issue
Block a user