mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 04:22:27 +01:00
db9b2bdc1b
Fixed a missed case in the patch for Bug#31931. Also makes Bug#33722 a duplicate of Bug#31931. Added tests for better coverage. Replaced some legacy function calls. mysql-test/r/partition.result: Added tests for better coverage mysql-test/r/partition_datatype.result: Added tests for better coverage mysql-test/r/partition_error.result: Added tests for better coverage mysql-test/suite/parts/inc/partition_engine.inc: Bug#31931: Mix of handlers error message Bug#33722 is fixed within this patch too mysql-test/suite/parts/r/partition_engine_innodb.result: Bug#31931: Mix of handlers error message Bug#33722 is fixed within this patch too mysql-test/suite/parts/r/partition_engine_myisam.result: Bug#31931: Mix of handlers error message Bug#33722 is fixed within this patch too mysql-test/t/partition.test: Added tests for better coverage mysql-test/t/partition_datatype.test: Added tests for better coverage mysql-test/t/partition_error.test: Added tests for Bug#31931 sql/partition_info.cc: Bug#31931: Mix of handlers error message Fixed case where given info->db_type not matched thd->lex->create_info.db_type And the check for inconsistent subpartition engines-clauses. sql/sql_partition.cc: Changed ha_legacy_type to ha_resolve_storage_engine_name sql/sql_table.cc: Changed ha_legacy_type to ha_resolve_storage_engine_name
829 lines
18 KiB
Text
829 lines
18 KiB
Text
#
|
|
# Simple test for the erroneos create statements using the
|
|
# partition storage engine
|
|
#
|
|
-- source include/have_partition.inc
|
|
|
|
--disable_warnings
|
|
drop table if exists t1;
|
|
--enable_warnings
|
|
|
|
#
|
|
# Bug#31931: Mix of handlers error message
|
|
#
|
|
--error ER_MIX_HANDLER_ERROR
|
|
CREATE TABLE t1 (a INT)
|
|
PARTITION BY HASH (a)
|
|
( PARTITION p0 ENGINE=MyISAM,
|
|
PARTITION p1);
|
|
--error ER_MIX_HANDLER_ERROR
|
|
CREATE TABLE t1 (a INT)
|
|
PARTITION BY LIST (a)
|
|
SUBPARTITION BY HASH (a)
|
|
( PARTITION p0 VALUES IN (0)
|
|
( SUBPARTITION s0, SUBPARTITION s1 ENGINE=MyISAM, SUBPARTITION s2),
|
|
PARTITION p1 VALUES IN (1)
|
|
( SUBPARTITION s3 ENGINE=MyISAM, SUBPARTITION s4, SUBPARTITION s5 ENGINE=MyISAM));
|
|
|
|
|
|
#
|
|
# Bug 29368:
|
|
# Incorrect error, 1467, for syntax error when creating partition
|
|
--error ER_PARTITION_REQUIRES_VALUES_ERROR
|
|
CREATE TABLE t1 (
|
|
a int
|
|
)
|
|
PARTITION BY RANGE (a)
|
|
(
|
|
PARTITION p0 VALUES LESS THAN (1),
|
|
PARTITION p1 VALU ES LESS THAN (2)
|
|
);
|
|
|
|
#
|
|
# Partition by key stand-alone error
|
|
#
|
|
--error 1064
|
|
partition by list (a)
|
|
partitions 3
|
|
(partition x1 values in (1,2,9,4) tablespace ts1,
|
|
partition x2 values in (3, 11, 5, 7) tablespace ts2,
|
|
partition x3 values in (16, 8, 5+19, 70-43) tablespace ts3);
|
|
|
|
#
|
|
# Partition by key list, number of partitions defined, no partition defined
|
|
#
|
|
--error ER_PARTITIONS_MUST_BE_DEFINED_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by list (a)
|
|
partitions 2;
|
|
|
|
#
|
|
# Partition by key list, wrong result type
|
|
#
|
|
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by list (sin(a))
|
|
partitions 3
|
|
(partition x1 values in (1,2,9,4) tablespace ts1,
|
|
partition x2 values in (3, 11, 5, 7) tablespace ts2,
|
|
partition x3 values in (16, 8, 5+19, 70-43) tablespace ts3);
|
|
|
|
#
|
|
# Partition by key, partition function not allowed
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by key (a+2)
|
|
partitions 3
|
|
(partition x1 tablespace ts1,
|
|
partition x2 tablespace ts2,
|
|
partition x3 tablespace ts3);
|
|
|
|
#
|
|
# Partition by key, no partition name
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by key (a)
|
|
partitions 3
|
|
(partition tablespace ts1,
|
|
partition x2 tablespace ts2,
|
|
partition x3 tablespace ts3);
|
|
|
|
#
|
|
# Partition by key, invalid field in field list
|
|
#
|
|
--error ER_FIELD_NOT_FOUND_PART_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by key (a,d)
|
|
partitions 3
|
|
(partition x1 tablespace ts1,
|
|
partition x2 tablespace ts2,
|
|
partition x3 tablespace ts3);
|
|
|
|
select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par');
|
|
#
|
|
# Partition by hash, invalid field in function
|
|
#
|
|
--error 1054
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by hash (a + d)
|
|
partitions 3
|
|
(partition x1 tablespace ts1,
|
|
partition x2 tablespace ts2,
|
|
partition x3 tablespace ts3);
|
|
|
|
#
|
|
# Partition by hash, invalid result type
|
|
#
|
|
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by hash (sin(a))
|
|
partitions 3
|
|
(partition x1 tablespace ts1,
|
|
partition x2 tablespace ts2,
|
|
partition x3 tablespace ts3);
|
|
|
|
#
|
|
# Partition by key specified 3 partitions but only defined 2 => error
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by key (a)
|
|
partitions 3
|
|
(partition x1, partition x2);
|
|
|
|
#
|
|
# Partition by key specified 3 partitions but only defined 2 => error
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by hash (rand(a))
|
|
partitions 2
|
|
(partition x1, partition x2);
|
|
|
|
#
|
|
# Partition by key specified 3 partitions but only defined 2 => error
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (rand(a))
|
|
partitions 2
|
|
(partition x1 values less than (0), partition x2 values less than (2));
|
|
|
|
#
|
|
# Partition by key specified 3 partitions but only defined 2 => error
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by list (rand(a))
|
|
partitions 2
|
|
(partition x1 values in (1), partition x2 values in (2));
|
|
|
|
#
|
|
# Partition by hash, values less than error
|
|
#
|
|
--error ER_PARTITION_WRONG_VALUES_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by hash (a)
|
|
partitions 2
|
|
(partition x1 values less than (4),
|
|
partition x2 values less than (5));
|
|
select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par');
|
|
|
|
#
|
|
# Partition by hash, values in error
|
|
#
|
|
--error ER_PARTITION_WRONG_VALUES_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by hash (a)
|
|
partitions 2
|
|
(partition x1 values in (4),
|
|
partition x2 values in (5));
|
|
select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par');
|
|
|
|
#
|
|
# Partition by hash, values in error
|
|
#
|
|
--error ER_PARTITION_WRONG_VALUES_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by hash (a)
|
|
partitions 2
|
|
(partition x1 values in (4,6),
|
|
partition x2 values in (5,7));
|
|
select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par');
|
|
|
|
#
|
|
# Subpartition by key, no partitions defined, single field
|
|
#
|
|
--error ER_SUBPARTITION_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by key (a)
|
|
subpartition by key (b);
|
|
select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par');
|
|
|
|
#
|
|
# Subpartition by key, no partitions defined, list of fields
|
|
#
|
|
--error ER_SUBPARTITION_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by key (a)
|
|
subpartition by key (a, b);
|
|
select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par');
|
|
|
|
#
|
|
# Subpartition by hash, no partitions defined
|
|
#
|
|
--error ER_SUBPARTITION_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by key (a)
|
|
subpartition by hash (a+b);
|
|
select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par');
|
|
|
|
#
|
|
# Subpartition by key, no partitions defined, single field
|
|
#
|
|
--error ER_SUBPARTITION_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by key (a)
|
|
subpartition by key (b);
|
|
select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par');
|
|
|
|
#
|
|
# Subpartition by key, no partitions defined, list of fields
|
|
#
|
|
--error ER_SUBPARTITION_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by key (a)
|
|
subpartition by key (a, b);
|
|
select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par');
|
|
|
|
#
|
|
# Subpartition by hash, no partitions defined
|
|
#
|
|
--error ER_SUBPARTITION_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by key (a)
|
|
subpartition by hash (a+b);
|
|
select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par');
|
|
|
|
#
|
|
# Subpartition by hash, no partitions defined, wrong subpartition function
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by key (a)
|
|
subpartition by hash (rand(a+b));
|
|
|
|
#
|
|
# Subpartition by hash, wrong subpartition function
|
|
#
|
|
--error ER_SUBPARTITION_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by key (a)
|
|
subpartition by hash (sin(a+b))
|
|
(partition x1 (subpartition x11, subpartition x12),
|
|
partition x2 (subpartition x21, subpartition x22));
|
|
select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par');
|
|
|
|
#
|
|
# Subpartition by hash, no partitions defined, wrong subpartition function
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by range (a)
|
|
subpartition by key (a+b)
|
|
(partition x1 values less than (1) (subpartition x11, subpartition x12),
|
|
partition x2 values less than (2) (subpartition x21, subpartition x22));
|
|
|
|
#
|
|
# Subpartition by hash, no partitions defined, wrong subpartition function
|
|
#
|
|
--error ER_FIELD_NOT_FOUND_PART_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by range (a)
|
|
subpartition by key (a,d)
|
|
(partition x1 values less than (1) (subpartition x11, subpartition x12),
|
|
partition x2 values less than (2) (subpartition x21, subpartition x22));
|
|
select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par');
|
|
|
|
#
|
|
# Subpartition by hash, no partitions defined, wrong subpartition function
|
|
#
|
|
--error ER_SUBPARTITION_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by key (a)
|
|
subpartition by hash (3+4);
|
|
|
|
#
|
|
# Subpartition by hash, no partitions defined, wrong subpartition function
|
|
#
|
|
--error 1054
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by range (a)
|
|
subpartition by hash (a+d)
|
|
(partition x1 values less than (1) (subpartition x11, subpartition x12),
|
|
partition x2 values less than (2) (subpartition x21, subpartition x22));
|
|
|
|
#
|
|
# Partition by range, no partition => error
|
|
#
|
|
--error ER_PARTITIONS_MUST_BE_DEFINED_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (a);
|
|
select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par');
|
|
|
|
#
|
|
# Partition by range, invalid field in function
|
|
#
|
|
--error 1054
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (a+d)
|
|
partitions 2
|
|
(partition x1 values less than (4) tablespace ts1,
|
|
partition x2 values less than (8) tablespace ts2);
|
|
|
|
#
|
|
# Partition by range, inconsistent partition function and constants
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (a)
|
|
partitions 2
|
|
(partition x1 values less than (4.0) tablespace ts1,
|
|
partition x2 values less than (8) tablespace ts2);
|
|
|
|
#
|
|
# Partition by range, constant partition function not allowed
|
|
#
|
|
--error ER_CONST_EXPR_IN_PARTITION_FUNC_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (3+4)
|
|
partitions 2
|
|
(partition x1 values less than (4) tablespace ts1,
|
|
partition x2 values less than (8) tablespace ts2);
|
|
|
|
#
|
|
# Partition by range, no values less than definition
|
|
#
|
|
--error ER_PARTITION_REQUIRES_VALUES_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (a)
|
|
partitions 2
|
|
(partition x1 values less than (4),
|
|
partition x2);
|
|
|
|
#
|
|
# Partition by range, no values in definition allowed
|
|
#
|
|
--error ER_PARTITION_WRONG_VALUES_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (a)
|
|
partitions 2
|
|
(partition x1 values in (4),
|
|
partition x2);
|
|
|
|
#
|
|
# Partition by range, values in error
|
|
#
|
|
--error ER_PARTITION_WRONG_VALUES_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (a)
|
|
partitions 2
|
|
(partition x1 values in (4),
|
|
partition x2 values less than (5));
|
|
|
|
#
|
|
# Partition by range, missing parenthesis
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by list (a)
|
|
partitions 2
|
|
(partition x1 values less than 4,
|
|
partition x2 values less than (5));
|
|
|
|
#
|
|
# Partition by range, maxvalue in wrong place
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (a)
|
|
partitions 2
|
|
(partition x1 values less than maxvalue,
|
|
partition x2 values less than (5));
|
|
|
|
#
|
|
# Partition by range, maxvalue in several places
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (a)
|
|
partitions 2
|
|
(partition x1 values less than maxvalue,
|
|
partition x2 values less than maxvalue);
|
|
|
|
#
|
|
# Partition by range, not increasing ranges
|
|
#
|
|
--error ER_RANGE_NOT_INCREASING_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (a)
|
|
partitions 2
|
|
(partition x1 values less than (4),
|
|
partition x2 values less than (3));
|
|
|
|
#
|
|
# Partition by range, wrong result type of partition function
|
|
#
|
|
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (sin(a))
|
|
partitions 2
|
|
(partition x1 values less than (4),
|
|
partition x2 values less than (5));
|
|
|
|
#
|
|
# Subpartition by hash, wrong number of subpartitions
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by list (a)
|
|
subpartition by hash (a+b)
|
|
subpartitions 3
|
|
( partition x1 values in (1,2,4)
|
|
( subpartition x11 nodegroup 0,
|
|
subpartition x12 nodegroup 1),
|
|
partition x2 values in (3,5,6)
|
|
( subpartition x21 nodegroup 0,
|
|
subpartition x22 nodegroup 1)
|
|
);
|
|
|
|
#
|
|
# Subpartition by hash, wrong number of subpartitions
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by list (a)
|
|
subpartition by hash (a+b)
|
|
( partition x1 values in (1)
|
|
( subpartition x11 nodegroup 0,
|
|
subpartition xextra,
|
|
subpartition x12 nodegroup 1),
|
|
partition x2 values in (2)
|
|
( subpartition x21 nodegroup 0,
|
|
subpartition x22 nodegroup 1)
|
|
);
|
|
|
|
#
|
|
# Subpartition by list => error
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by key (a)
|
|
subpartition by list (a+b)
|
|
( partition x1
|
|
( subpartition x11 engine myisam,
|
|
subpartition x12 engine myisam),
|
|
partition x2
|
|
( subpartition x21 engine myisam,
|
|
subpartition x22 engine myisam)
|
|
);
|
|
|
|
#
|
|
# Subpartition by list => error
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by key (a)
|
|
subpartition by list (a+b)
|
|
( partition x1
|
|
( subpartition x11 engine myisam values in (0),
|
|
subpartition x12 engine myisam values in (1)),
|
|
partition x2
|
|
( subpartition x21 engine myisam values in (0),
|
|
subpartition x22 engine myisam values in (1))
|
|
);
|
|
|
|
#
|
|
# Partition by list, no partition => error
|
|
#
|
|
--error ER_PARTITIONS_MUST_BE_DEFINED_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by list (a);
|
|
|
|
#
|
|
# Partition by list, constant partition function not allowed
|
|
#
|
|
--error ER_CONST_EXPR_IN_PARTITION_FUNC_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by list (3+4)
|
|
partitions 2
|
|
(partition x1 values in (4) tablespace ts1,
|
|
partition x2 values in (8) tablespace ts2);
|
|
|
|
#
|
|
# Partition by list, invalid field in function
|
|
#
|
|
--error 1054
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by list (a+d)
|
|
partitions 2
|
|
(partition x1 values in (4) tablespace ts1,
|
|
partition x2 values in (8) tablespace ts2);
|
|
|
|
#
|
|
# Partition by list, no values in definition
|
|
#
|
|
--error ER_PARTITION_REQUIRES_VALUES_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by list (a)
|
|
partitions 2
|
|
(partition x1 values in (4),
|
|
partition x2);
|
|
|
|
#
|
|
# Partition by list, values less than error
|
|
#
|
|
--error ER_PARTITION_WRONG_VALUES_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by list (a)
|
|
partitions 2
|
|
(partition x1 values in (4),
|
|
partition x2 values less than (5));
|
|
|
|
#
|
|
# Partition by list, no values in definition
|
|
#
|
|
--error ER_PARTITION_REQUIRES_VALUES_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by list (a)
|
|
partitions 2
|
|
(partition x1 values in (4,6),
|
|
partition x2);
|
|
|
|
#
|
|
# Partition by list, duplicate values
|
|
#
|
|
--error ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by list (a)
|
|
partitions 2
|
|
(partition x1 values in (4, 12+9),
|
|
partition x2 values in (3, 21));
|
|
|
|
#
|
|
# Partition by list, wrong constant result type (not INT)
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by list (a)
|
|
partitions 2
|
|
(partition x1 values in (4.0, 12+8),
|
|
partition x2 values in (3, 21));
|
|
|
|
#
|
|
# Partition by list, missing parenthesis
|
|
#
|
|
--error 1064
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by list (a)
|
|
partitions 2
|
|
(partition x1 values in 4,
|
|
partition x2 values in (5));
|
|
|
|
#
|
|
# Bug #13439: Crash when LESS THAN (non-literal)
|
|
#
|
|
--error 1054
|
|
CREATE TABLE t1 (a int)
|
|
PARTITION BY RANGE (a)
|
|
(PARTITION p0 VALUES LESS THAN (x1));
|
|
|
|
#
|
|
# No partition for the given value
|
|
#
|
|
CREATE TABLE t1(a int)
|
|
PARTITION BY RANGE (a) (PARTITION p1 VALUES LESS THAN(5));
|
|
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
|
insert into t1 values (10);
|
|
drop table t1;
|
|
|
|
--error ER_PARTITION_CONST_DOMAIN_ERROR
|
|
create table t1 (a bigint unsigned)
|
|
partition by range (a)
|
|
(partition p0 values less than (-1));
|
|
#
|
|
# Bug 18198 Partitions: Verify that erroneus partition functions doesn't work
|
|
#
|
|
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
|
create table t1 (v varchar(12))
|
|
partition by range (ascii(v))
|
|
(partition p0 values less than (10));
|
|
#drop table t1;
|
|
|
|
-- error 1064
|
|
create table t1 (a int)
|
|
partition by hash (rand(a));
|
|
-- error 1064
|
|
create table t1 (a int)
|
|
partition by hash(CURTIME() + a);
|
|
-- error 1064
|
|
create table t1 (a int)
|
|
partition by hash (NOW()+a);
|
|
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
|
create table t1 (a int)
|
|
partition by hash (extract(hour from convert_tz(a, '+00:00', '+00:00')));
|
|
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
|
create table t1 (a int)
|
|
partition by range (a + (select count(*) from t1))
|
|
(partition p1 values less than (1));
|
|
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
|
create table t1 (a char(10))
|
|
partition by hash (extractvalue(a,'a'));
|
|
|
|
|