Loading mysql-test/r/partition.result +3 −0 Original line number Diff line number Diff line Loading @@ -312,4 +312,7 @@ partition by hash(f_int1) partitions 2; insert into t1 values (1,1),(2,2); replace into t1 values (1,1),(2,2); drop table t1; create table t1 (s1 int, unique (s1)) partition by list (s1) (partition x1 VALUES in (10), partition x2 values in (20)); alter table t1 add partition (partition x3 values in (30)); drop table t1; End of 5.1 tests mysql-test/t/partition.test +7 −0 Original line number Diff line number Diff line Loading @@ -401,4 +401,11 @@ insert into t1 values (1,1),(2,2); replace into t1 values (1,1),(2,2); drop table t1; # # Bug #17169: Partitions: out of memory if add partition and unique # create table t1 (s1 int, unique (s1)) partition by list (s1) (partition x1 VALUES in (10), partition x2 values in (20)); alter table t1 add partition (partition x3 values in (30)); drop table t1; --echo End of 5.1 tests sql/sql_table.cc +9 −14 Original line number Diff line number Diff line Loading @@ -50,11 +50,6 @@ static int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info, handler *file, KEY **key_info_buffer, uint *key_count, int select_field_count); static int mysql_copy_create_lists(List<create_field> *orig_create_list, List<Key> *orig_key, List<create_field> *new_create_list, List<Key> *new_key); #define MYSQL50_TABLE_NAME_PREFIX "#mysql50#" #define MYSQL50_TABLE_NAME_PREFIX_LENGTH 9 Loading Loading @@ -164,7 +159,6 @@ uint build_tmptable_filename(THD* thd, char *buff, size_t bufflen) */ static int mysql_copy_create_list(List<create_field> *orig_create_list, List<create_field> *new_create_list) { List_iterator<create_field> prep_field_it(*orig_create_list); Loading Loading @@ -205,7 +199,7 @@ static int mysql_copy_key_list(List<Key> *orig_key, { List_iterator<Key> prep_key_it(*orig_key); Key *prep_key; DBUG_ENTER("mysql_copy_create_lists"); DBUG_ENTER("mysql_copy_key_list"); while ((prep_key= prep_key_it++)) { Loading @@ -217,7 +211,8 @@ static int mysql_copy_key_list(List<Key> *orig_key, while ((prep_col= prep_col_it++)) { key_part_spec *prep_key_part; if (prep_key_part= new key_part_spec(*prep_col)) if (!(prep_key_part= new key_part_spec(*prep_col))) { mem_alloc_error(sizeof(key_part_spec)); DBUG_RETURN(TRUE); Loading @@ -228,7 +223,7 @@ static int mysql_copy_key_list(List<Key> *orig_key, DBUG_RETURN(TRUE); } } if ((temp_key= new Key(prep_key->type, prep_key->name, if (!(temp_key= new Key(prep_key->type, prep_key->name, prep_key->algorithm, prep_key->generated, prep_columns, Loading Loading
mysql-test/r/partition.result +3 −0 Original line number Diff line number Diff line Loading @@ -312,4 +312,7 @@ partition by hash(f_int1) partitions 2; insert into t1 values (1,1),(2,2); replace into t1 values (1,1),(2,2); drop table t1; create table t1 (s1 int, unique (s1)) partition by list (s1) (partition x1 VALUES in (10), partition x2 values in (20)); alter table t1 add partition (partition x3 values in (30)); drop table t1; End of 5.1 tests
mysql-test/t/partition.test +7 −0 Original line number Diff line number Diff line Loading @@ -401,4 +401,11 @@ insert into t1 values (1,1),(2,2); replace into t1 values (1,1),(2,2); drop table t1; # # Bug #17169: Partitions: out of memory if add partition and unique # create table t1 (s1 int, unique (s1)) partition by list (s1) (partition x1 VALUES in (10), partition x2 values in (20)); alter table t1 add partition (partition x3 values in (30)); drop table t1; --echo End of 5.1 tests
sql/sql_table.cc +9 −14 Original line number Diff line number Diff line Loading @@ -50,11 +50,6 @@ static int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info, handler *file, KEY **key_info_buffer, uint *key_count, int select_field_count); static int mysql_copy_create_lists(List<create_field> *orig_create_list, List<Key> *orig_key, List<create_field> *new_create_list, List<Key> *new_key); #define MYSQL50_TABLE_NAME_PREFIX "#mysql50#" #define MYSQL50_TABLE_NAME_PREFIX_LENGTH 9 Loading Loading @@ -164,7 +159,6 @@ uint build_tmptable_filename(THD* thd, char *buff, size_t bufflen) */ static int mysql_copy_create_list(List<create_field> *orig_create_list, List<create_field> *new_create_list) { List_iterator<create_field> prep_field_it(*orig_create_list); Loading Loading @@ -205,7 +199,7 @@ static int mysql_copy_key_list(List<Key> *orig_key, { List_iterator<Key> prep_key_it(*orig_key); Key *prep_key; DBUG_ENTER("mysql_copy_create_lists"); DBUG_ENTER("mysql_copy_key_list"); while ((prep_key= prep_key_it++)) { Loading @@ -217,7 +211,8 @@ static int mysql_copy_key_list(List<Key> *orig_key, while ((prep_col= prep_col_it++)) { key_part_spec *prep_key_part; if (prep_key_part= new key_part_spec(*prep_col)) if (!(prep_key_part= new key_part_spec(*prep_col))) { mem_alloc_error(sizeof(key_part_spec)); DBUG_RETURN(TRUE); Loading @@ -228,7 +223,7 @@ static int mysql_copy_key_list(List<Key> *orig_key, DBUG_RETURN(TRUE); } } if ((temp_key= new Key(prep_key->type, prep_key->name, if (!(temp_key= new Key(prep_key->type, prep_key->name, prep_key->algorithm, prep_key->generated, prep_columns, Loading