Skip to content

Commit 674c1c8

Browse files
author
Debarun Banerjee
committed
Merge branch 'mysql-5.5' into mysql-5.6
2 parents 1edb764 + 359f102 commit 674c1c8

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

sql/partition_info.cc

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#include "ha_partition.h"
3232

3333

34-
partition_info *partition_info::get_clone()
34+
partition_info *partition_info::get_clone(bool reset /* = false */)
3535
{
3636
DBUG_ENTER("partition_info::get_clone");
3737
List_iterator<partition_element> part_it(partitions);
@@ -60,6 +60,26 @@ partition_info *partition_info::get_clone()
6060
DBUG_RETURN(NULL);
6161
}
6262
memcpy(part_clone, part, sizeof(partition_element));
63+
64+
/*
65+
Mark that RANGE and LIST values needs to be fixed so that we don't
66+
use old values. fix_column_value_functions would evaluate the values
67+
from Item expression.
68+
*/
69+
if (reset)
70+
{
71+
clone->defined_max_value = false;
72+
List_iterator<part_elem_value> list_it(part_clone->list_val_list);
73+
while (part_elem_value *list_value= list_it++)
74+
{
75+
part_column_list_val *col_val= list_value->col_val_array;
76+
for (uint i= 0; i < num_columns; col_val++, i++)
77+
{
78+
col_val->fixed= 0;
79+
}
80+
}
81+
}
82+
6383
part_clone->subpartitions.empty();
6484
while ((subpart= (subpart_it++)))
6585
{

sql/partition_info.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ class partition_info : public Sql_alloc
286286
}
287287
~partition_info() {}
288288

289-
partition_info *get_clone();
289+
partition_info *get_clone(bool reset = false);
290290
partition_info *get_full_clone();
291291
bool set_named_partition_bitmap(const char *part_name, uint length);
292292
bool set_partition_bitmaps(TABLE_LIST *table_list);

sql/sql_parse.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2909,7 +2909,7 @@ case SQLCOM_PREPARE:
29092909
#ifdef WITH_PARTITION_STORAGE_ENGINE
29102910
{
29112911
partition_info *part_info= thd->lex->part_info;
2912-
if (part_info && !(part_info= thd->lex->part_info->get_clone()))
2912+
if (part_info && !(part_info= thd->lex->part_info->get_clone(true)))
29132913
{
29142914
res= -1;
29152915
goto end_with_restore_list;

sql/sql_partition.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4824,7 +4824,7 @@ uint prep_alter_part_table(THD *thd, TABLE *table, Alter_info *alter_info,
48244824
thd->work_part_info= thd->lex->part_info;
48254825

48264826
if (thd->work_part_info &&
4827-
!(thd->work_part_info= thd->lex->part_info->get_clone()))
4827+
!(thd->work_part_info= thd->lex->part_info->get_clone(true)))
48284828
DBUG_RETURN(TRUE);
48294829

48304830
/* ALTER_ADMIN_PARTITION is handled in mysql_admin_table */

0 commit comments

Comments
 (0)