Merge mysql.com:/home/jimw/my/mysql-5.1-17097
into mysql.com:/home/jimw/my/mysql-5.1-clean sql/sql_partition.cc: Auto merged mysql-test/r/partition.result: e Resolve conflict mysql-test/t/partition.test: Resolve conflict
This commit is contained in:
commit
51cae9210f
@ -453,4 +453,15 @@ s1
|
||||
drop table t2;
|
||||
create temporary table t1 (a int) partition by hash(a);
|
||||
ERROR HY000: Cannot create temporary table with partitions
|
||||
create table t1 (a int, b int) partition by list (a)
|
||||
(partition p1 values in (1), partition p2 values in (2));
|
||||
alter table t1 add primary key (b);
|
||||
ERROR HY000: A PRIMARY KEY need to include all fields in the partition function
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY LIST (a) (PARTITION p1 VALUES IN (1) ENGINE = MyISAM, PARTITION p2 VALUES IN (2) ENGINE = MyISAM)
|
||||
drop table t1;
|
||||
End of 5.1 tests
|
||||
|
@ -577,4 +577,15 @@ drop table t2;
|
||||
--error ER_PARTITION_NO_TEMPORARY
|
||||
create temporary table t1 (a int) partition by hash(a);
|
||||
|
||||
#
|
||||
# Bug #17097: Partitions: failing ADD PRIMARY KEY leads to temporary rotten
|
||||
# metadata,crash
|
||||
#
|
||||
create table t1 (a int, b int) partition by list (a)
|
||||
(partition p1 values in (1), partition p2 values in (2));
|
||||
--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
|
||||
alter table t1 add primary key (b);
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@ -4061,6 +4061,15 @@ uint prep_alter_part_table(THD *thd, TABLE *table, ALTER_INFO *alter_info,
|
||||
{
|
||||
DBUG_ENTER("prep_alter_part_table");
|
||||
|
||||
/*
|
||||
We are going to manipulate the partition info on the table object
|
||||
so we need to ensure that the data structure of the table object
|
||||
is freed by setting version to 0. table->s->version= 0 forces a
|
||||
flush of the table object in close_thread_tables().
|
||||
*/
|
||||
if (table->part_info)
|
||||
table->s->version= 0L;
|
||||
|
||||
if (alter_info->flags &
|
||||
(ALTER_ADD_PARTITION | ALTER_DROP_PARTITION |
|
||||
ALTER_COALESCE_PARTITION | ALTER_REORGANIZE_PARTITION |
|
||||
@ -4069,19 +4078,12 @@ uint prep_alter_part_table(THD *thd, TABLE *table, ALTER_INFO *alter_info,
|
||||
ALTER_REPAIR_PARTITION | ALTER_REBUILD_PARTITION))
|
||||
{
|
||||
partition_info *tab_part_info= table->part_info;
|
||||
uint flags= 0;
|
||||
if (!tab_part_info)
|
||||
{
|
||||
my_error(ER_PARTITION_MGMT_ON_NONPARTITIONED, MYF(0));
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
/*
|
||||
We are going to manipulate the partition info on the table object
|
||||
so we need to ensure that the data structure of the table object
|
||||
is freed by setting version to 0. table->s->version= 0 forces a
|
||||
flush of the table object in close_thread_tables().
|
||||
*/
|
||||
uint flags= 0;
|
||||
table->s->version= 0L;
|
||||
if (alter_info->flags == ALTER_TABLE_REORG)
|
||||
{
|
||||
uint new_part_no, curr_part_no;
|
||||
|
Loading…
x
Reference in New Issue
Block a user