#--disable_abort_on_error # # Simple test for the partition storage engine # testing list partitioning # -- source include/have_partition.inc --disable_warnings drop table if exists t1; --enable_warnings # # Test ordinary list partitioning that it works ok # CREATE TABLE t1 ( a int not null, b int not null, c int not null) partition by list(a) partitions 2 (partition x123 values in (1,5,6), partition x234 values in (4,7,8)); INSERT into t1 VALUES (1,1,1); --error ER_NO_PARTITION_FOR_GIVEN_VALUE INSERT into t1 VALUES (2,1,1); --error ER_NO_PARTITION_FOR_GIVEN_VALUE INSERT into t1 VALUES (3,1,1); INSERT into t1 VALUES (4,1,1); INSERT into t1 VALUES (5,1,1); INSERT into t1 VALUES (6,1,1); INSERT into t1 VALUES (7,1,1); INSERT into t1 VALUES (8,1,1); --error ER_NO_PARTITION_FOR_GIVEN_VALUE INSERT into t1 VALUES (9,1,1); INSERT into t1 VALUES (1,2,1); INSERT into t1 VALUES (1,3,1); INSERT into t1 VALUES (1,4,1); INSERT into t1 VALUES (7,2,1); INSERT into t1 VALUES (7,3,1); INSERT into t1 VALUES (7,4,1); SELECT * from t1; SELECT * from t1 WHERE a=1; SELECT * from t1 WHERE a=7; SELECT * from t1 WHERE b=2; UPDATE t1 SET a=8 WHERE a=7 AND b=3; SELECT * from t1; UPDATE t1 SET a=8 WHERE a=5 AND b=1; SELECT * from t1; DELETE from t1 WHERE a=8; SELECT * from t1; DELETE from t1 WHERE a=2; SELECT * from t1; DELETE from t1 WHERE a=5 OR a=6; SELECT * from t1; ALTER TABLE t1 partition by list(a) partitions 2 (partition x123 values in (1,5,6), partition x234 values in (4,7,8)); SELECT * from t1; INSERT into t1 VALUES (6,2,1); --error ER_NO_PARTITION_FOR_GIVEN_VALUE INSERT into t1 VALUES (2,2,1); drop table t1; # # Subpartition by hash, two partitions and two subpartitions # Defined node group # 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,2,3) ( subpartition x11 nodegroup 0, subpartition x12 nodegroup 1), partition x2 values in (4,5,6) ( subpartition x21 nodegroup 0, subpartition x22 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 (7,1,1); UPDATE t1 SET a=5 WHERE a=1; SELECT * from t1; UPDATE t1 SET a=6 WHERE a=4; SELECT * from t1; DELETE from t1 WHERE a=6; SELECT * from t1; drop table t1; # CREATE TABLE t1 ( a int not null, b int not null, c int not null, primary key(a,b)) partition by list (a) (partition x1 values in (1,2,9,4) tablespace ts1); drop table t1;