mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
560 lines
12 KiB
Text
560 lines
12 KiB
Text
#--disable_abort_on_error
|
|
#
|
|
# Simple test for the partition storage engine
|
|
# Focuses on range partitioning tests
|
|
#
|
|
-- source include/have_partition.inc
|
|
|
|
--disable_warnings
|
|
drop table if exists t1;
|
|
--enable_warnings
|
|
|
|
#
|
|
# Partition by range, basic
|
|
#
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (a)
|
|
partitions 3
|
|
(partition x1 values less than (5) tablespace ts1,
|
|
partition x2 values less than (10) tablespace ts2,
|
|
partition x3 values less than maxvalue tablespace ts3);
|
|
|
|
# Simple insert and verify test
|
|
INSERT into t1 values (1, 1, 1);
|
|
INSERT into t1 values (6, 1, 1);
|
|
INSERT into t1 values (10, 1, 1);
|
|
INSERT into t1 values (15, 1, 1);
|
|
|
|
select * from t1;
|
|
|
|
ALTER TABLE t1
|
|
partition by range (a)
|
|
partitions 3
|
|
(partition x1 values less than (5) tablespace ts1,
|
|
partition x2 values less than (10) tablespace ts2,
|
|
partition x3 values less than maxvalue tablespace ts3);
|
|
|
|
select * from t1;
|
|
|
|
drop table if exists t1;
|
|
|
|
#
|
|
# Partition by range, basic
|
|
# No primary key
|
|
#
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null)
|
|
partition by range (a)
|
|
partitions 3
|
|
(partition x1 values less than (5) tablespace ts1,
|
|
partition x2 values less than (10) tablespace ts2,
|
|
partition x3 values less than maxvalue tablespace ts3);
|
|
|
|
# Simple insert and verify test
|
|
INSERT into t1 values (1, 1, 1);
|
|
INSERT into t1 values (6, 1, 1);
|
|
INSERT into t1 values (10, 1, 1);
|
|
INSERT into t1 values (15, 1, 1);
|
|
|
|
select * from t1;
|
|
|
|
ALTER TABLE t1
|
|
partition by range (a)
|
|
partitions 3
|
|
(partition x1 values less than (5) tablespace ts1,
|
|
partition x2 values less than (10) tablespace ts2,
|
|
partition x3 values less than maxvalue tablespace ts3);
|
|
|
|
select * from t1;
|
|
|
|
drop table if exists t1;
|
|
|
|
#
|
|
# Partition by range, basic
|
|
# No max value used
|
|
#
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (a)
|
|
partitions 3
|
|
(partition x1 values less than (5) tablespace ts1,
|
|
partition x2 values less than (10) tablespace ts2,
|
|
partition x3 values less than (15) tablespace ts3);
|
|
|
|
|
|
# Simple insert and verify test
|
|
INSERT into t1 values (1, 1, 1);
|
|
INSERT into t1 values (6, 1, 1);
|
|
INSERT into t1 values (10, 1, 1);
|
|
--error 1030
|
|
INSERT into t1 values (15, 1, 1);
|
|
|
|
select * from t1;
|
|
|
|
ALTER TABLE t1
|
|
partition by range (a)
|
|
partitions 3
|
|
(partition x1 values less than (5) tablespace ts1,
|
|
partition x2 values less than (10) tablespace ts2,
|
|
partition x3 values less than (15) tablespace ts3);
|
|
|
|
select * from t1;
|
|
|
|
drop table t1;
|
|
|
|
#
|
|
# Partition by range, only one partition
|
|
#
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (a)
|
|
(partition x1 values less than (1));
|
|
|
|
drop table t1;
|
|
#
|
|
# Partition by range, no partition => error
|
|
#
|
|
--error 1441
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key(a,b))
|
|
partition by range (a);
|
|
|
|
#
|
|
# 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 1443
|
|
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 1435
|
|
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 1429
|
|
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 1430
|
|
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 1430
|
|
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 1442
|
|
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 1440
|
|
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, two partitions and two subpartitions
|
|
#
|
|
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+b)
|
|
( partition x1 values less than (1)
|
|
( subpartition x11,
|
|
subpartition x12),
|
|
partition x2 values less than (5)
|
|
( subpartition x21,
|
|
subpartition x22)
|
|
);
|
|
|
|
SELECT * from t1;
|
|
|
|
drop table t1;
|
|
|
|
#
|
|
# Subpartition by hash, two partitions and two subpartitions
|
|
# Defined tablespace, engine and node group
|
|
#
|
|
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+b)
|
|
( partition x1 values less than (1)
|
|
( subpartition x11 tablespace t1 engine myisam nodegroup 0,
|
|
subpartition x12 tablespace t2 engine myisam nodegroup 1),
|
|
partition x2 values less than (5)
|
|
( subpartition x21 tablespace t1 engine myisam nodegroup 0,
|
|
subpartition x22 tablespace t2 engine myisam nodegroup 1)
|
|
);
|
|
|
|
SELECT * from t1;
|
|
|
|
drop table t1;
|
|
|
|
#
|
|
# Subpartition by hash, two partitions and two subpartitions
|
|
# Defined tablespace, node group
|
|
#
|
|
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+b)
|
|
( partition x1 values less than (1)
|
|
( subpartition x11 tablespace t1 nodegroup 0,
|
|
subpartition x12 tablespace t2 nodegroup 1),
|
|
partition x2 values less than (5)
|
|
( subpartition x21 tablespace t1 nodegroup 0,
|
|
subpartition x22 tablespace t2 nodegroup 1)
|
|
);
|
|
|
|
SELECT * from t1;
|
|
|
|
drop table t1;
|
|
|
|
#
|
|
# Subpartition by hash, two partitions and two subpartitions
|
|
# Defined engine and node group
|
|
#
|
|
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+b)
|
|
( partition x1 values less than (1)
|
|
( subpartition x11 engine myisam nodegroup 0,
|
|
subpartition x12 engine myisam nodegroup 1),
|
|
partition x2 values less than (5)
|
|
( subpartition x21 engine myisam nodegroup 0,
|
|
subpartition x22 engine myisam nodegroup 1)
|
|
);
|
|
|
|
INSERT into t1 VALUES (1,1,1);
|
|
INSERT into t1 VALUES (4,1,1);
|
|
--error 1030
|
|
INSERT into t1 VALUES (5,1,1);
|
|
|
|
SELECT * from t1;
|
|
|
|
ALTER TABLE t1
|
|
partition by range (a)
|
|
subpartition by hash (a+b)
|
|
( partition x1 values less than (1)
|
|
( subpartition x11 engine myisam nodegroup 0,
|
|
subpartition x12 engine myisam nodegroup 1),
|
|
partition x2 values less than (5)
|
|
( subpartition x21 engine myisam nodegroup 0,
|
|
subpartition x22 engine myisam nodegroup 1)
|
|
);
|
|
|
|
SELECT * from t1;
|
|
|
|
drop table t1;
|
|
|
|
#
|
|
# Subpartition by hash, two partitions and two subpartitions
|
|
# Defined tablespace, engine
|
|
#
|
|
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+b)
|
|
( partition x1 values less than (1)
|
|
( subpartition x11 tablespace t1 engine myisam,
|
|
subpartition x12 tablespace t2 engine myisam),
|
|
partition x2 values less than (5)
|
|
( subpartition x21 tablespace t1 engine myisam,
|
|
subpartition x22 tablespace t2 engine myisam)
|
|
);
|
|
|
|
INSERT into t1 VALUES (1,1,1);
|
|
INSERT into t1 VALUES (4,1,1);
|
|
--error 1030
|
|
INSERT into t1 VALUES (5,1,1);
|
|
|
|
SELECT * from t1;
|
|
|
|
ALTER TABLE t1
|
|
partition by range (a)
|
|
subpartition by hash (a+b)
|
|
( partition x1 values less than (1)
|
|
( subpartition x11 tablespace t1 engine myisam,
|
|
subpartition x12 tablespace t2 engine myisam),
|
|
partition x2 values less than (5)
|
|
( subpartition x21 tablespace t1 engine myisam,
|
|
subpartition x22 tablespace t2 engine myisam)
|
|
);
|
|
|
|
SELECT * from t1;
|
|
|
|
drop table t1;
|
|
|
|
#
|
|
# Subpartition by hash, two partitions and two subpartitions
|
|
# Defined tablespace
|
|
#
|
|
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+b)
|
|
( partition x1 values less than (1)
|
|
( subpartition x11 tablespace t1,
|
|
subpartition x12 tablespace t2),
|
|
partition x2 values less than (5)
|
|
( subpartition x21 tablespace t1,
|
|
subpartition x22 tablespace t2)
|
|
);
|
|
|
|
INSERT into t1 VALUES (1,1,1);
|
|
INSERT into t1 VALUES (4,1,1);
|
|
--error 1030
|
|
INSERT into t1 VALUES (5,1,1);
|
|
|
|
SELECT * from t1;
|
|
|
|
ALTER TABLE t1
|
|
partition by range (a)
|
|
subpartition by hash (a+b)
|
|
( partition x1 values less than (1)
|
|
( subpartition x11 tablespace t1 engine myisam,
|
|
subpartition x12 tablespace t2 engine myisam),
|
|
partition x2 values less than (5)
|
|
( subpartition x21 tablespace t1 engine myisam,
|
|
subpartition x22 tablespace t2 engine myisam)
|
|
);
|
|
|
|
SELECT * from t1;
|
|
|
|
drop table t1;
|
|
|
|
#
|
|
# Subpartition by hash, two partitions and two subpartitions
|
|
# Defined engine
|
|
#
|
|
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+b)
|
|
( partition x1 values less than (1)
|
|
( subpartition x11 engine myisam,
|
|
subpartition x12 engine myisam),
|
|
partition x2 values less than (5)
|
|
( subpartition x21 engine myisam,
|
|
subpartition x22 engine myisam)
|
|
);
|
|
|
|
INSERT into t1 VALUES (1,1,1);
|
|
INSERT into t1 VALUES (4,1,1);
|
|
--error 1030
|
|
INSERT into t1 VALUES (5,1,1);
|
|
|
|
SELECT * from t1;
|
|
|
|
ALTER TABLE t1
|
|
partition by range (a)
|
|
subpartition by hash (a+b)
|
|
( partition x1 values less than (1)
|
|
( subpartition x11 engine myisam,
|
|
subpartition x12 engine myisam),
|
|
partition x2 values less than (5)
|
|
( subpartition x21 engine myisam,
|
|
subpartition x22 engine myisam)
|
|
);
|
|
|
|
SELECT * from t1;
|
|
|
|
drop table t1;
|
|
|
|
#
|
|
# Subpartition with range => error
|
|
#
|
|
--error 1429
|
|
CREATE TABLE t1 (
|
|
a int not null,
|
|
b int not null,
|
|
c int not null,
|
|
primary key (a,b))
|
|
partition by range (a+b)
|
|
subpartition by key (a)
|
|
( partition x1
|
|
( subpartition x11 engine myisam,
|
|
subpartition x12 engine myisam),
|
|
partition x2
|
|
( subpartition x21 engine myisam,
|
|
subpartition x22 engine myisam)
|
|
);
|
|
|
|
#
|
|
# Subpartition with range => 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 range (a+b)
|
|
( partition x1
|
|
( subpartition x11 engine myisam values less than (0),
|
|
subpartition x12 engine myisam values less than (1)),
|
|
partition x2
|
|
( subpartition x21 engine myisam values less than (0),
|
|
subpartition x22 engine myisam values less than (1))
|
|
);
|
|
|