mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			364 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			364 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
#--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;
 | 
						|
show create table 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;
 | 
						|
show create table 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 ER_NO_PARTITION_FOR_GIVEN_VALUE
 | 
						|
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;
 | 
						|
 | 
						|
#
 | 
						|
# 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;
 | 
						|
show create table t1;
 | 
						|
 | 
						|
ALTER TABLE t1 ADD COLUMN d int;
 | 
						|
show create table 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 ER_NO_PARTITION_FOR_GIVEN_VALUE
 | 
						|
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 ER_NO_PARTITION_FOR_GIVEN_VALUE
 | 
						|
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 ER_NO_PARTITION_FOR_GIVEN_VALUE
 | 
						|
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 ER_NO_PARTITION_FOR_GIVEN_VALUE
 | 
						|
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;
 |