mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
9cba6c5aa3
This allows one to run the test suite even if any of the following options are changed: - character-set-server - collation-server - join-cache-level - log-basename - max-allowed-packet - optimizer-switch - query-cache-size and query-cache-type - skip-name-resolve - table-definition-cache - table-open-cache - Some innodb options etc Changes: - Don't print out the value of system variables as one can't depend on them to being constants. - Don't set global variables to 'default' as the default may not be the same as the test was started with if there was an additional option file. Instead save original value and reset it at end of test. - Test that depends on the latin1 character set should include default_charset.inc or set the character set to latin1 - Test that depends on the original optimizer switch, should include default_optimizer_switch.inc - Test that depends on the value of a specific system variable should set it in the test (like optimizer_use_condition_selectivity) - Split subselect3.test into subselect3.test and subselect3.inc to make it easier to set and reset system variables. - Added .opt files for test that required specfic options that could be changed by external configuration files. - Fixed result files in rockdsb & tokudb that had not been updated for a while.
104 lines
2.6 KiB
Text
104 lines
2.6 KiB
Text
#
|
|
# Bug#49907: ALTER TABLE ... TRUNCATE PARTITION
|
|
# does not wait for locks on the table
|
|
#
|
|
CREATE TABLE t1 (a INT)
|
|
ENGINE = InnoDB
|
|
PARTITION BY RANGE (a)
|
|
(PARTITION p0 VALUES LESS THAN (15),
|
|
PARTITION pMax VALUES LESS THAN MAXVALUE);
|
|
INSERT INTO t1 VALUES (1), (11), (21), (33);
|
|
BEGIN;
|
|
DELETE FROM t1 WHERE a = 11;
|
|
SELECT * FROM t1;
|
|
a
|
|
1
|
|
21
|
|
33
|
|
connect con1, localhost, root,,;
|
|
ALTER TABLE t1 TRUNCATE PARTITION pMax;
|
|
connection default;
|
|
SELECT * FROM t1;
|
|
a
|
|
1
|
|
21
|
|
33
|
|
# Commit will allow the TRUNCATE to finish
|
|
COMMIT;
|
|
connection con1;
|
|
disconnect con1;
|
|
connection default;
|
|
SELECT * FROM t1;
|
|
a
|
|
1
|
|
DROP TABLE t1;
|
|
#
|
|
# Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with
|
|
# concurrent I_S query
|
|
create table t1 (a int)
|
|
engine = innodb
|
|
partition by range (a)
|
|
(partition p0 values less than MAXVALUE);
|
|
insert into t1 values (1), (11), (21), (33);
|
|
SELECT * FROM t1;
|
|
a
|
|
1
|
|
11
|
|
21
|
|
33
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
PARTITION BY RANGE (`a`)
|
|
(PARTITION `p0` VALUES LESS THAN MAXVALUE ENGINE = InnoDB)
|
|
db.opt
|
|
t1#P#p0.ibd
|
|
t1.frm
|
|
t1.par
|
|
SET DEBUG_SYNC='before_open_in_get_all_tables SIGNAL parked WAIT_FOR open';
|
|
SET DEBUG_SYNC='partition_open_error SIGNAL alter WAIT_FOR finish';
|
|
SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION,
|
|
PARTITION_DESCRIPTION, TABLE_ROWS
|
|
FROM INFORMATION_SCHEMA.PARTITIONS
|
|
WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test';
|
|
connect con1, localhost, root,,;
|
|
SET DEBUG_SYNC = 'now WAIT_FOR parked';
|
|
# When waiting for the name lock in get_all_tables in sql_show.cc
|
|
# this will not be concurrent any more, thus the TIMEOUT
|
|
SET DEBUG_SYNC = 'before_rename_partitions SIGNAL open WAIT_FOR alter TIMEOUT 1';
|
|
# Needs to be executed twice, since first is this 'SET DEBUG_SYNC ...'
|
|
SET DEBUG_SYNC = 'before_close_thread_tables SIGNAL finish EXECUTE 2';
|
|
ALTER TABLE t1 REORGANIZE PARTITION p0 INTO
|
|
(PARTITION p0 VALUES LESS THAN (10),
|
|
PARTITION p10 VALUES LESS THAN MAXVALUE);
|
|
Warnings:
|
|
Warning 1639 debug sync point wait timed out
|
|
disconnect con1;
|
|
connection default;
|
|
TABLE_SCHEMA TABLE_NAME PARTITION_NAME PARTITION_ORDINAL_POSITION PARTITION_DESCRIPTION TABLE_ROWS
|
|
test t1 p0 1 10 1
|
|
test t1 p10 2 MAXVALUE 3
|
|
db.opt
|
|
t1#P#p0.ibd
|
|
t1#P#p10.ibd
|
|
t1.frm
|
|
t1.par
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
PARTITION BY RANGE (`a`)
|
|
(PARTITION `p0` VALUES LESS THAN (10) ENGINE = InnoDB,
|
|
PARTITION `p10` VALUES LESS THAN MAXVALUE ENGINE = InnoDB)
|
|
SELECT * FROM t1;
|
|
a
|
|
1
|
|
11
|
|
21
|
|
33
|
|
drop table t1;
|
|
db.opt
|
|
SET DEBUG_SYNC = 'RESET';
|