Loading mysql-test/r/partition_error.result +39 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,9 @@ partitions 3 partition x2 tablespace ts2, partition x3 tablespace ts3); ERROR HY000: Field in list of fields for partition function not found in table select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading Loading @@ -163,6 +166,9 @@ partitions 2 (partition x1 values less than (4), partition x2 values less than (5)); ERROR HY000: Only RANGE PARTITIONING can use VALUES LESS THAN in partition definition select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -173,6 +179,9 @@ partitions 2 (partition x1 values in (4), partition x2 values in (5)); ERROR HY000: Only LIST PARTITIONING can use VALUES IN in partition definition select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -183,6 +192,9 @@ partitions 2 (partition x1 values in (4,6), partition x2 values in (5,7)); ERROR HY000: Only LIST PARTITIONING can use VALUES IN in partition definition select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -191,6 +203,9 @@ primary key (a,b)) partition by key (a) subpartition by key (b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -199,6 +214,9 @@ primary key (a,b)) partition by key (a) subpartition by key (a, b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -207,6 +225,9 @@ primary key (a,b)) partition by key (a) subpartition by hash (a+b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -215,6 +236,9 @@ primary key (a,b)) partition by key (a) subpartition by key (b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -223,6 +247,9 @@ primary key (a,b)) partition by key (a) subpartition by key (a, b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -231,6 +258,9 @@ primary key (a,b)) partition by key (a) subpartition by hash (a+b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -249,6 +279,9 @@ subpartition by hash (sin(a+b)) (partition x1 (subpartition x11, subpartition x12), partition x2 (subpartition x21, subpartition x22)); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -271,6 +304,9 @@ 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)); ERROR HY000: Field in list of fields for partition function not found in table select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -296,6 +332,9 @@ c int not null, primary key(a,b)) partition by range (a); ERROR HY000: For RANGE partitions each partition must be defined select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading mysql-test/r/partition_mgm.result +10 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,12 @@ t1 CREATE TABLE `t1` ( `f_date` date DEFAULT NULL, `f_varchar` varchar(30) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2 hello/master-data/test/t1#P#p0.MYD hello/master-data/test/t1#P#p0.MYI hello/master-data/test/t1#P#p1.MYD hello/master-data/test/t1#P#p1.MYI hello/master-data/test/t1.frm hello/master-data/test/t1.par ALTER TABLE t1 COALESCE PARTITION 1; SHOW CREATE TABLE t1; Table Create Table Loading @@ -14,3 +20,7 @@ t1 CREATE TABLE `t1` ( `f_date` date DEFAULT NULL, `f_varchar` varchar(30) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 1 hello/master-data/test/t1#P#p0.MYD hello/master-data/test/t1#P#p0.MYI hello/master-data/test/t1.frm hello/master-data/test/t1.par mysql-test/t/partition_error.test +14 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,8 @@ 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 # Loading Loading @@ -202,6 +204,7 @@ 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 Loading @@ -216,6 +219,7 @@ 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 Loading @@ -230,6 +234,7 @@ 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 Loading @@ -242,6 +247,7 @@ 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 Loading @@ -254,6 +260,7 @@ 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 Loading @@ -266,6 +273,7 @@ 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 Loading @@ -278,6 +286,7 @@ 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 Loading @@ -290,6 +299,7 @@ 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 Loading @@ -302,6 +312,7 @@ 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 Loading @@ -328,6 +339,7 @@ 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 Loading Loading @@ -356,6 +368,7 @@ 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 Loading Loading @@ -393,6 +406,7 @@ 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 Loading mysql-test/t/partition_mgm.test +4 −2 Original line number Diff line number Diff line Loading @@ -6,10 +6,12 @@ CREATE TABLE t1 (f_date DATE, f_varchar VARCHAR(30)) PARTITION BY HASH(CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2; SHOW CREATE TABLE t1; #--exec ls $MYSQLTEST_VARDIR/master-data/test/t1* --replace_result $MYSQLTEST_VARDIR "hello" --exec ls $MYSQLTEST_VARDIR/master-data/test/t1* ALTER TABLE t1 COALESCE PARTITION 1; SHOW CREATE TABLE t1; #--exec ls $MYSQLTEST_VARDIR/master-data/test/t1* --replace_result $MYSQLTEST_VARDIR "hello" --exec ls $MYSQLTEST_VARDIR/master-data/test/t1* Loading sql/table.cc +11 −0 Original line number Diff line number Diff line Loading @@ -1484,8 +1484,19 @@ int open_table_from_share(THD *thd, TABLE_SHARE *share, const char *alias, tmp= fix_partition_func(thd, outparam, is_create_table); *root_ptr= old_root; if (tmp) { if (is_create_table) { /* During CREATE/ALTER TABLE it is ok to receive errors here. It is not ok if it happens during the opening of an frm file as part of a normal query. */ error_reported= TRUE; } goto err; } } #endif /* Allocate bitmaps */ Loading Loading
mysql-test/r/partition_error.result +39 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,9 @@ partitions 3 partition x2 tablespace ts2, partition x3 tablespace ts3); ERROR HY000: Field in list of fields for partition function not found in table select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading Loading @@ -163,6 +166,9 @@ partitions 2 (partition x1 values less than (4), partition x2 values less than (5)); ERROR HY000: Only RANGE PARTITIONING can use VALUES LESS THAN in partition definition select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -173,6 +179,9 @@ partitions 2 (partition x1 values in (4), partition x2 values in (5)); ERROR HY000: Only LIST PARTITIONING can use VALUES IN in partition definition select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -183,6 +192,9 @@ partitions 2 (partition x1 values in (4,6), partition x2 values in (5,7)); ERROR HY000: Only LIST PARTITIONING can use VALUES IN in partition definition select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -191,6 +203,9 @@ primary key (a,b)) partition by key (a) subpartition by key (b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -199,6 +214,9 @@ primary key (a,b)) partition by key (a) subpartition by key (a, b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -207,6 +225,9 @@ primary key (a,b)) partition by key (a) subpartition by hash (a+b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -215,6 +236,9 @@ primary key (a,b)) partition by key (a) subpartition by key (b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -223,6 +247,9 @@ primary key (a,b)) partition by key (a) subpartition by key (a, b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -231,6 +258,9 @@ primary key (a,b)) partition by key (a) subpartition by hash (a+b); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -249,6 +279,9 @@ subpartition by hash (sin(a+b)) (partition x1 (subpartition x11, subpartition x12), partition x2 (subpartition x21, subpartition x22)); ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -271,6 +304,9 @@ 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)); ERROR HY000: Field in list of fields for partition function not found in table select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading @@ -296,6 +332,9 @@ c int not null, primary key(a,b)) partition by range (a); ERROR HY000: For RANGE partitions each partition must be defined select load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par'); load_file('$MYSQLTEST_VARDIR/master-data/test/t1.par') NULL CREATE TABLE t1 ( a int not null, b int not null, Loading
mysql-test/r/partition_mgm.result +10 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,12 @@ t1 CREATE TABLE `t1` ( `f_date` date DEFAULT NULL, `f_varchar` varchar(30) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2 hello/master-data/test/t1#P#p0.MYD hello/master-data/test/t1#P#p0.MYI hello/master-data/test/t1#P#p1.MYD hello/master-data/test/t1#P#p1.MYI hello/master-data/test/t1.frm hello/master-data/test/t1.par ALTER TABLE t1 COALESCE PARTITION 1; SHOW CREATE TABLE t1; Table Create Table Loading @@ -14,3 +20,7 @@ t1 CREATE TABLE `t1` ( `f_date` date DEFAULT NULL, `f_varchar` varchar(30) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 1 hello/master-data/test/t1#P#p0.MYD hello/master-data/test/t1#P#p0.MYI hello/master-data/test/t1.frm hello/master-data/test/t1.par
mysql-test/t/partition_error.test +14 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,8 @@ 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 # Loading Loading @@ -202,6 +204,7 @@ 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 Loading @@ -216,6 +219,7 @@ 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 Loading @@ -230,6 +234,7 @@ 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 Loading @@ -242,6 +247,7 @@ 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 Loading @@ -254,6 +260,7 @@ 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 Loading @@ -266,6 +273,7 @@ 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 Loading @@ -278,6 +286,7 @@ 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 Loading @@ -290,6 +299,7 @@ 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 Loading @@ -302,6 +312,7 @@ 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 Loading @@ -328,6 +339,7 @@ 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 Loading Loading @@ -356,6 +368,7 @@ 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 Loading Loading @@ -393,6 +406,7 @@ 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 Loading
mysql-test/t/partition_mgm.test +4 −2 Original line number Diff line number Diff line Loading @@ -6,10 +6,12 @@ CREATE TABLE t1 (f_date DATE, f_varchar VARCHAR(30)) PARTITION BY HASH(CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2; SHOW CREATE TABLE t1; #--exec ls $MYSQLTEST_VARDIR/master-data/test/t1* --replace_result $MYSQLTEST_VARDIR "hello" --exec ls $MYSQLTEST_VARDIR/master-data/test/t1* ALTER TABLE t1 COALESCE PARTITION 1; SHOW CREATE TABLE t1; #--exec ls $MYSQLTEST_VARDIR/master-data/test/t1* --replace_result $MYSQLTEST_VARDIR "hello" --exec ls $MYSQLTEST_VARDIR/master-data/test/t1* Loading
sql/table.cc +11 −0 Original line number Diff line number Diff line Loading @@ -1484,8 +1484,19 @@ int open_table_from_share(THD *thd, TABLE_SHARE *share, const char *alias, tmp= fix_partition_func(thd, outparam, is_create_table); *root_ptr= old_root; if (tmp) { if (is_create_table) { /* During CREATE/ALTER TABLE it is ok to receive errors here. It is not ok if it happens during the opening of an frm file as part of a normal query. */ error_reported= TRUE; } goto err; } } #endif /* Allocate bitmaps */ Loading