1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

MDEV-13089 identifier quoting in partitioning

don't print partitioning expression as it was entered by the user,
use Item::print() according to the sql_mode and sql_quote_show_create
This commit is contained in:
Sergei Golubchik
2017-06-27 20:46:45 +02:00
parent 504eff0ca1
commit 785e2248bd
140 changed files with 12910 additions and 12831 deletions

View File

@ -990,9 +990,7 @@ static bool fix_fields_part_func(THD *thd, Item* func_expr, TABLE *table,
result= set_up_field_array(thd, table, is_sub_part);
end:
end_lex_with_single_table(thd, table, old_lex);
#if !defined(DBUG_OFF)
func_expr->walk(&Item::change_context_processor, 0, 0);
#endif
DBUG_RETURN(result);
}
@ -2254,12 +2252,9 @@ char *generate_partition_syntax(THD *thd, partition_info *part_info,
partition_element *part_elem;
int err= 0;
List_iterator<partition_element> part_it(part_info->partitions);
ulonglong save_options= thd->variables.option_bits;
StringBuffer<1024> str;
DBUG_ENTER("generate_partition_syntax");
thd->variables.option_bits&= ~OPTION_QUOTE_SHOW_CREATE;
err+= str.append(STRING_WITH_LEN(" PARTITION BY "));
switch (part_info->part_type)
{
@ -2289,7 +2284,7 @@ char *generate_partition_syntax(THD *thd, partition_info *part_info,
if (part_info->part_expr)
{
err+= str.append('(');
err+= str.append(part_info->part_func_string, part_info->part_func_len);
part_info->part_expr->print_for_table_def(&str);
err+= str.append(')');
}
else if (part_info->column_list)
@ -2319,7 +2314,7 @@ char *generate_partition_syntax(THD *thd, partition_info *part_info,
if (part_info->subpart_expr)
{
err+= str.append('(');
err+= str.append(part_info->subpart_func_string, part_info->subpart_func_len);
part_info->subpart_expr->print_for_table_def(&str);
err+= str.append(')');
}
if ((!part_info->use_default_num_subpartitions) &&
@ -2381,7 +2376,6 @@ char *generate_partition_syntax(THD *thd, partition_info *part_info,
err+= str.append(')');
} while (++i < tot_num_parts);
}
thd->variables.option_bits= save_options;
if (err)
DBUG_RETURN(NULL);
*buf_length= str.length();