mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Fixed all remaining failures in partition tests.
Commented out the test case for bug 50036 as it was done in mysql-5.6.10.
This commit is contained in:
@ -9,7 +9,7 @@ PARTITION BY RANGE (id)
|
|||||||
PARTITION pmax VALUES LESS THAN (MAXVALUE));
|
PARTITION pmax VALUES LESS THAN (MAXVALUE));
|
||||||
INSERT INTO t1 VALUES (1), (10), (100), (1000);
|
INSERT INTO t1 VALUES (1), (10), (100), (1000);
|
||||||
ALTER TABLE t1 TRUNCATE PARTITION p1;
|
ALTER TABLE t1 TRUNCATE PARTITION p1;
|
||||||
ERROR HY000: Incorrect partition name
|
ERROR HY000: Unknown partition 'p1' in table 't1'
|
||||||
ALTER TABLE t1 DROP PARTITION p1;
|
ALTER TABLE t1 DROP PARTITION p1;
|
||||||
ERROR HY000: Error in list of partitions to DROP
|
ERROR HY000: Error in list of partitions to DROP
|
||||||
# No error returned, output in table format instead:
|
# No error returned, output in table format instead:
|
||||||
|
@ -20,14 +20,15 @@ PARTITION p2 VALUES LESS THAN (100),
|
|||||||
PARTITION p3 VALUES LESS THAN MAXVALUE ) */;
|
PARTITION p3 VALUES LESS THAN MAXVALUE ) */;
|
||||||
SET SESSION debug_dbug= "+d,sleep_before_create_table_no_lock";
|
SET SESSION debug_dbug= "+d,sleep_before_create_table_no_lock";
|
||||||
SET DEBUG_SYNC= 'alter_table_before_create_table_no_lock SIGNAL removing_partitioning WAIT_FOR waiting_for_alter';
|
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;
|
ALTER TABLE t1 REMOVE PARTITIONING;
|
||||||
# Con default
|
# Con default
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR removing_partitioning';
|
SET DEBUG_SYNC= 'now WAIT_FOR removing_partitioning';
|
||||||
SET DEBUG_SYNC= 'mdl_acquire_lock_wait SIGNAL waiting_for_alter';
|
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;
|
DROP TABLE IF EXISTS t1;
|
||||||
# Con 1
|
# Con 1
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
SET SESSION debug_dbug= "-d,sleep_before_create_table_no_lock";
|
SET SESSION debug_dbug= "-d,sleep_before_create_table_no_lock";
|
||||||
SET DEBUG_SYNC= 'RESET';
|
SET DEBUG_SYNC= 'RESET';
|
||||||
SET DEBUG_SYNC= 'RESET';
|
SET DEBUG_SYNC= 'RESET';
|
||||||
|
@ -98,7 +98,7 @@ PARTITION BY KEY (a)
|
|||||||
(PARTITION x0, PARTITION x1);
|
(PARTITION x0, PARTITION x1);
|
||||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 0;
|
ALTER TABLE t1 ADD PARTITION PARTITIONS 0;
|
||||||
ERROR HY000: At least one partition must be added
|
ERROR HY000: At least one partition must be added
|
||||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 1024;
|
ALTER TABLE t1 ADD PARTITION PARTITIONS 8192;
|
||||||
ERROR HY000: Too many partitions (including subpartitions) were defined
|
ERROR HY000: Too many partitions (including subpartitions) were defined
|
||||||
ALTER TABLE t1 DROP PARTITION x0;
|
ALTER TABLE t1 DROP PARTITION x0;
|
||||||
ERROR HY000: DROP PARTITION can only be used on RANGE/LIST partitions
|
ERROR HY000: DROP PARTITION can only be used on RANGE/LIST partitions
|
||||||
|
@ -1,82 +1,5 @@
|
|||||||
DROP TABLE IF EXISTS t1, t2;
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
#
|
#
|
||||||
# Bug#50036: Inconsistent errors when using TIMESTAMP
|
|
||||||
# columns/expressions
|
|
||||||
# Added test with existing TIMESTAMP partitioning (when it was allowed).
|
|
||||||
CREATE TABLE t1 (a TIMESTAMP)
|
|
||||||
ENGINE = MyISAM
|
|
||||||
PARTITION BY HASH (UNIX_TIMESTAMP(a));
|
|
||||||
INSERT INTO t1 VALUES ('2000-01-02 03:04:05');
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a
|
|
||||||
2000-01-02 03:04:05
|
|
||||||
FLUSH TABLES;
|
|
||||||
# replacing t1.frm with TO_DAYS(a) which was allowed earlier.
|
|
||||||
# Disable warnings, since the result would differ when running with
|
|
||||||
# --ps-protocol (only for the 'SELECT * FROM t1' statement).
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a
|
|
||||||
2000-01-02 03:04:05
|
|
||||||
SHOW CREATE TABLE t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=<curr_engine> DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY HASH (TO_DAYS(a)) */
|
|
||||||
INSERT INTO t1 VALUES ('2001-02-03 04:05:06');
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a
|
|
||||||
2000-01-02 03:04:05
|
|
||||||
2001-02-03 04:05:06
|
|
||||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 2;
|
|
||||||
Warnings:
|
|
||||||
Warning 1486 Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
|
||||||
ALTER TABLE t1
|
|
||||||
PARTITION BY RANGE (TO_DAYS(a))
|
|
||||||
(PARTITION p0 VALUES LESS THAN (10000),
|
|
||||||
PARTITION p1 VALUES LESS THAN (MAXVALUE));
|
|
||||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
|
||||||
SHOW CREATE TABLE t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY HASH (TO_DAYS(a))
|
|
||||||
PARTITIONS 3 */
|
|
||||||
CREATE TABLE t2 LIKE t1;
|
|
||||||
SHOW CREATE TABLE t2;
|
|
||||||
Table Create Table
|
|
||||||
t2 CREATE TABLE `t2` (
|
|
||||||
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY HASH (TO_DAYS(a))
|
|
||||||
PARTITIONS 3 */
|
|
||||||
Warnings:
|
|
||||||
Warning 1486 Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
|
||||||
DROP TABLE t2;
|
|
||||||
CREATE TABLE t2 SELECT * FROM t1;
|
|
||||||
DROP TABLE t2;
|
|
||||||
ALTER TABLE t1 PARTITION BY HASH (UNIX_TIMESTAMP(a));
|
|
||||||
SHOW CREATE TABLE t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY HASH (UNIX_TIMESTAMP(a)) */
|
|
||||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 2;
|
|
||||||
SHOW CREATE TABLE t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY HASH (UNIX_TIMESTAMP(a))
|
|
||||||
PARTITIONS 3 */
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a
|
|
||||||
2000-01-02 03:04:05
|
|
||||||
2001-02-03 04:05:06
|
|
||||||
DROP TABLE t1;
|
|
||||||
#
|
|
||||||
# Bug#31931: Mix of handlers error message
|
# Bug#31931: Mix of handlers error message
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a INT)
|
CREATE TABLE t1 (a INT)
|
||||||
@ -109,7 +32,7 @@ ERROR HY000: Failed to read from the .par file
|
|||||||
# Note that it is currently impossible to drop a partitioned table
|
# Note that it is currently impossible to drop a partitioned table
|
||||||
# without the .par file
|
# without the .par file
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
ERROR 42S02: Unknown table 't1'
|
ERROR 42S02: Unknown table 'test.t1'
|
||||||
#
|
#
|
||||||
# Bug#50392: insert_id is not reset for partitioned tables
|
# Bug#50392: insert_id is not reset for partitioned tables
|
||||||
# auto_increment on duplicate entry
|
# auto_increment on duplicate entry
|
||||||
|
@ -20,7 +20,7 @@ INSERT INTO t1 VALUES (1), (10), (100), (1000);
|
|||||||
--let $binlog_file=query_get_value(SHOW MASTER STATUS, File, 1)
|
--let $binlog_file=query_get_value(SHOW MASTER STATUS, File, 1)
|
||||||
--let $binlog_start=query_get_value(SHOW MASTER STATUS, Position, 1)
|
--let $binlog_start=query_get_value(SHOW MASTER STATUS, Position, 1)
|
||||||
|
|
||||||
--error ER_WRONG_PARTITION_NAME
|
--error ER_UNKNOWN_PARTITION
|
||||||
ALTER TABLE t1 TRUNCATE PARTITION p1;
|
ALTER TABLE t1 TRUNCATE PARTITION p1;
|
||||||
--error ER_DROP_PARTITION_NON_EXISTENT
|
--error ER_DROP_PARTITION_NON_EXISTENT
|
||||||
ALTER TABLE t1 DROP PARTITION p1;
|
ALTER TABLE t1 DROP PARTITION p1;
|
||||||
|
@ -32,16 +32,17 @@ ENGINE = MYISAM
|
|||||||
PARTITION p3 VALUES LESS THAN MAXVALUE ) */;
|
PARTITION p3 VALUES LESS THAN MAXVALUE ) */;
|
||||||
SET SESSION debug_dbug= "+d,sleep_before_create_table_no_lock";
|
SET SESSION debug_dbug= "+d,sleep_before_create_table_no_lock";
|
||||||
SET DEBUG_SYNC= 'alter_table_before_create_table_no_lock SIGNAL removing_partitioning WAIT_FOR waiting_for_alter';
|
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';
|
||||||
--send ALTER TABLE t1 REMOVE PARTITIONING
|
--send ALTER TABLE t1 REMOVE PARTITIONING
|
||||||
connection default;
|
connection default;
|
||||||
--echo # Con default
|
--echo # Con default
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR removing_partitioning';
|
SET DEBUG_SYNC= 'now WAIT_FOR removing_partitioning';
|
||||||
SET DEBUG_SYNC= 'mdl_acquire_lock_wait SIGNAL waiting_for_alter';
|
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;
|
DROP TABLE IF EXISTS t1;
|
||||||
--echo # Con 1
|
--echo # Con 1
|
||||||
connection con1;
|
connection con1;
|
||||||
|
--error ER_LOCK_DEADLOCK
|
||||||
--reap
|
--reap
|
||||||
SET SESSION debug_dbug= "-d,sleep_before_create_table_no_lock";
|
SET SESSION debug_dbug= "-d,sleep_before_create_table_no_lock";
|
||||||
connection default;
|
connection default;
|
||||||
|
@ -147,7 +147,7 @@ PARTITION BY KEY (a)
|
|||||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 0;
|
ALTER TABLE t1 ADD PARTITION PARTITIONS 0;
|
||||||
|
|
||||||
--error ER_TOO_MANY_PARTITIONS_ERROR
|
--error ER_TOO_MANY_PARTITIONS_ERROR
|
||||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 1024;
|
ALTER TABLE t1 ADD PARTITION PARTITIONS 8192;
|
||||||
|
|
||||||
--error ER_ONLY_ON_RANGE_LIST_PARTITION
|
--error ER_ONLY_ON_RANGE_LIST_PARTITION
|
||||||
ALTER TABLE t1 DROP PARTITION x0;
|
ALTER TABLE t1 DROP PARTITION x0;
|
||||||
|
@ -11,51 +11,54 @@ DROP TABLE IF EXISTS t1, t2;
|
|||||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
#
|
||||||
--echo # Bug#50036: Inconsistent errors when using TIMESTAMP
|
# Disabled by WL#946: binary format for timestamp column is not compatible.
|
||||||
--echo # columns/expressions
|
# So the trick with replacing FRM file does not work any more.
|
||||||
|
#--echo #
|
||||||
--echo # Added test with existing TIMESTAMP partitioning (when it was allowed).
|
#--echo # Bug#50036: Inconsistent errors when using TIMESTAMP
|
||||||
CREATE TABLE t1 (a TIMESTAMP)
|
#--echo # columns/expressions
|
||||||
ENGINE = MyISAM
|
#
|
||||||
PARTITION BY HASH (UNIX_TIMESTAMP(a));
|
#--echo # Added test with existing TIMESTAMP partitioning (when it was allowed).
|
||||||
INSERT INTO t1 VALUES ('2000-01-02 03:04:05');
|
#CREATE TABLE t1 (a TIMESTAMP)
|
||||||
--sorted_result
|
#ENGINE = MyISAM
|
||||||
SELECT * FROM t1;
|
#PARTITION BY HASH (UNIX_TIMESTAMP(a));
|
||||||
FLUSH TABLES;
|
#INSERT INTO t1 VALUES ('2000-01-02 03:04:05');
|
||||||
--echo # replacing t1.frm with TO_DAYS(a) which was allowed earlier.
|
#--sorted_result
|
||||||
--remove_file $MYSQLD_DATADIR/test/t1.frm
|
#SELECT * FROM t1;
|
||||||
--copy_file std_data/parts/t1TIMESTAMP.frm $MYSQLD_DATADIR/test/t1.frm
|
#FLUSH TABLES;
|
||||||
--echo # Disable warnings, since the result would differ when running with
|
#--echo # replacing t1.frm with TO_DAYS(a) which was allowed earlier.
|
||||||
--echo # --ps-protocol (only for the 'SELECT * FROM t1' statement).
|
#--remove_file $MYSQLD_DATADIR/test/t1.frm
|
||||||
--disable_warnings
|
#--copy_file std_data/parts/t1TIMESTAMP.frm $MYSQLD_DATADIR/test/t1.frm
|
||||||
--sorted_result
|
#--echo # Disable warnings, since the result would differ when running with
|
||||||
SELECT * FROM t1;
|
#--echo # --ps-protocol (only for the 'SELECT * FROM t1' statement).
|
||||||
--enable_warnings
|
#--disable_warnings
|
||||||
--replace_result MyISAM <curr_engine> InnoDB <curr_engine>
|
#--sorted_result
|
||||||
SHOW CREATE TABLE t1;
|
#SELECT * FROM t1;
|
||||||
INSERT INTO t1 VALUES ('2001-02-03 04:05:06');
|
#--enable_warnings
|
||||||
--sorted_result
|
#--replace_result MyISAM <curr_engine> InnoDB <curr_engine>
|
||||||
SELECT * FROM t1;
|
#SHOW CREATE TABLE t1;
|
||||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 2;
|
#INSERT INTO t1 VALUES ('2001-02-03 04:05:06');
|
||||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
#--sorted_result
|
||||||
ALTER TABLE t1
|
#SELECT * FROM t1;
|
||||||
PARTITION BY RANGE (TO_DAYS(a))
|
#ALTER TABLE t1 ADD PARTITION PARTITIONS 2;
|
||||||
(PARTITION p0 VALUES LESS THAN (10000),
|
#--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||||
PARTITION p1 VALUES LESS THAN (MAXVALUE));
|
#ALTER TABLE t1
|
||||||
SHOW CREATE TABLE t1;
|
#PARTITION BY RANGE (TO_DAYS(a))
|
||||||
CREATE TABLE t2 LIKE t1;
|
#(PARTITION p0 VALUES LESS THAN (10000),
|
||||||
SHOW CREATE TABLE t2;
|
# PARTITION p1 VALUES LESS THAN (MAXVALUE));
|
||||||
DROP TABLE t2;
|
#SHOW CREATE TABLE t1;
|
||||||
CREATE TABLE t2 SELECT * FROM t1;
|
#CREATE TABLE t2 LIKE t1;
|
||||||
DROP TABLE t2;
|
#SHOW CREATE TABLE t2;
|
||||||
ALTER TABLE t1 PARTITION BY HASH (UNIX_TIMESTAMP(a));
|
#DROP TABLE t2;
|
||||||
SHOW CREATE TABLE t1;
|
#CREATE TABLE t2 SELECT * FROM t1;
|
||||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 2;
|
#DROP TABLE t2;
|
||||||
SHOW CREATE TABLE t1;
|
#ALTER TABLE t1 PARTITION BY HASH (UNIX_TIMESTAMP(a));
|
||||||
--sorted_result
|
#SHOW CREATE TABLE t1;
|
||||||
SELECT * FROM t1;
|
#ALTER TABLE t1 ADD PARTITION PARTITIONS 2;
|
||||||
DROP TABLE t1;
|
#SHOW CREATE TABLE t1;
|
||||||
|
#--sorted_result
|
||||||
|
#SELECT * FROM t1;
|
||||||
|
#DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
Reference in New Issue
Block a user