summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/ha_partition.cc11
-rw-r--r--sql/partition_info.cc62
-rw-r--r--sql/sql_partition.cc97
-rw-r--r--sql/sql_partition.h1
-rw-r--r--sql/sql_partition_admin.cc3
-rw-r--r--sql/sql_table.cc29
-rw-r--r--sql/sql_yacc.yy14
-rw-r--r--sql/sql_yacc_ora.yy19
8 files changed, 67 insertions, 169 deletions
diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc
index 4e94ca16413..7df76fcc298 100644
--- a/sql/ha_partition.cc
+++ b/sql/ha_partition.cc
@@ -1769,7 +1769,6 @@ int ha_partition::change_partitions(HA_CREATE_INFO *create_info,
!(m_reorged_file= (handler**) thd->calloc(sizeof(handler*)*
(m_reorged_parts + 1))))
{
- mem_alloc_error(sizeof(handler*)*(m_reorged_parts+1));
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
}
@@ -1802,7 +1801,6 @@ int ha_partition::change_partitions(HA_CREATE_INFO *create_info,
thd->calloc(sizeof(handler*)*
(2*(num_remain_partitions + 1))))))
{
- mem_alloc_error(sizeof(handler*)*2*(num_remain_partitions+1));
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
}
m_added_file= &new_file_array[num_remain_partitions + 1];
@@ -1894,7 +1892,6 @@ int ha_partition::change_partitions(HA_CREATE_INFO *create_info,
thd->mem_root,
part_elem->engine_type)))
{
- mem_alloc_error(sizeof(handler));
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
}
if ((*new_file)->set_ha_share_ref(&p_share_refs->ha_shares[j]))
@@ -2922,10 +2919,8 @@ bool ha_partition::new_handlers_from_part_info(MEM_ROOT *mem_root)
DBUG_ENTER("ha_partition::new_handlers_from_part_info");
if (!(m_file= (handler **) alloc_root(mem_root, alloc_len)))
- {
- mem_alloc_error(alloc_len);
- goto error_end;
- }
+ goto error;
+
m_file_tot_parts= m_tot_parts;
bzero((char*) m_file, alloc_len);
DBUG_ASSERT(m_part_info->num_parts > 0);
@@ -2966,8 +2961,6 @@ bool ha_partition::new_handlers_from_part_info(MEM_ROOT *mem_root)
}
DBUG_RETURN(FALSE);
error:
- mem_alloc_error(sizeof(handler));
-error_end:
DBUG_RETURN(TRUE);
}
diff --git a/sql/partition_info.cc b/sql/partition_info.cc
index edb2d891386..746d00ef8d1 100644
--- a/sql/partition_info.cc
+++ b/sql/partition_info.cc
@@ -48,11 +48,9 @@ partition_info *partition_info::get_clone(THD *thd)
List_iterator<partition_element> part_it(partitions);
partition_element *part;
partition_info *clone= new (mem_root) partition_info(*this);
- if (!clone)
- {
- mem_alloc_error(sizeof(partition_info));
+ if (unlikely(!clone))
DBUG_RETURN(NULL);
- }
+
memset(&(clone->read_partitions), 0, sizeof(clone->read_partitions));
memset(&(clone->lock_partitions), 0, sizeof(clone->lock_partitions));
clone->bitmaps_are_initialized= FALSE;
@@ -64,20 +62,16 @@ partition_info *partition_info::get_clone(THD *thd)
partition_element *subpart;
partition_element *part_clone= new (mem_root) partition_element();
if (!part_clone)
- {
- mem_alloc_error(sizeof(partition_element));
DBUG_RETURN(NULL);
- }
+
memcpy(part_clone, part, sizeof(partition_element));
part_clone->subpartitions.empty();
while ((subpart= (subpart_it++)))
{
partition_element *subpart_clone= new (mem_root) partition_element();
if (!subpart_clone)
- {
- mem_alloc_error(sizeof(partition_element));
DBUG_RETURN(NULL);
- }
+
memcpy(subpart_clone, subpart, sizeof(partition_element));
part_clone->subpartitions.push_back(subpart_clone, mem_root);
}
@@ -88,20 +82,15 @@ partition_info *partition_info::get_clone(THD *thd)
(part_elem_value *)alloc_root(mem_root, sizeof(part_elem_value) *
part->list_val_list.elements);
if (!new_val_arr)
- {
- mem_alloc_error(sizeof(part_elem_value) * part->list_val_list.elements);
DBUG_RETURN(NULL);
- }
+
p_column_list_val *new_colval_arr=
(p_column_list_val*)alloc_root(mem_root, sizeof(p_column_list_val) *
num_columns *
part->list_val_list.elements);
if (!new_colval_arr)
- {
- mem_alloc_error(sizeof(p_column_list_val) * num_columns *
- part->list_val_list.elements);
DBUG_RETURN(NULL);
- }
+
part_elem_value *val;
while ((val= list_val_it++))
{
@@ -394,10 +383,6 @@ char *partition_info::create_default_partition_names(THD *thd, uint part_no,
move_ptr+= MAX_PART_NAME_SIZE;
} while (++i < num_parts_arg);
}
- else
- {
- mem_alloc_error(num_parts_arg*MAX_PART_NAME_SIZE);
- }
DBUG_RETURN(ptr);
}
@@ -422,13 +407,8 @@ char *partition_info::create_default_subpartition_name(THD *thd, uint subpart_no
DBUG_ENTER("create_default_subpartition_name");
if (likely(ptr != NULL))
- {
my_snprintf(ptr, size_alloc, "%ssp%u", part_name, subpart_no);
- }
- else
- {
- mem_alloc_error(size_alloc);
- }
+
DBUG_RETURN(ptr);
}
@@ -505,10 +485,7 @@ bool partition_info::set_up_default_partitions(THD *thd, handler *file,
default_name+=MAX_PART_NAME_SIZE;
}
else
- {
- mem_alloc_error(sizeof(partition_element));
goto end;
- }
} while (++i < num_parts);
result= FALSE;
end:
@@ -574,10 +551,7 @@ bool partition_info::set_up_default_subpartitions(THD *thd, handler *file,
subpart_elem->partition_name= ptr;
}
else
- {
- mem_alloc_error(sizeof(partition_element));
goto end;
- }
} while (++j < num_subparts);
} while (++i < num_parts);
result= FALSE;
@@ -1506,11 +1480,9 @@ bool partition_info::set_part_expr(THD *thd, char *start_token, Item *item_ptr,
size_t expr_len= end_token - start_token;
char *func_string= (char*) thd->memdup(start_token, expr_len);
- if (!func_string)
- {
- mem_alloc_error(expr_len);
+ if (unlikely(!func_string))
return TRUE;
- }
+
if (is_subpart)
{
list_of_subpart_fields= FALSE;
@@ -1665,7 +1637,6 @@ bool partition_info::set_up_charset_field_preps(THD *thd)
}
DBUG_RETURN(FALSE);
error:
- mem_alloc_error(size);
DBUG_RETURN(TRUE);
}
@@ -1972,10 +1943,8 @@ bool partition_info::init_column_part(THD *thd)
if (!(list_val=
(part_elem_value*) thd->calloc(sizeof(part_elem_value))) ||
p_elem->list_val_list.push_back(list_val, thd->mem_root))
- {
- mem_alloc_error(sizeof(part_elem_value));
DBUG_RETURN(TRUE);
- }
+
if (num_columns)
loc_num_columns= num_columns;
else
@@ -1983,10 +1952,8 @@ bool partition_info::init_column_part(THD *thd)
if (!(col_val_array=
(part_column_list_val*) thd->calloc(loc_num_columns *
sizeof(part_column_list_val))))
- {
- mem_alloc_error(loc_num_columns * sizeof(part_elem_value));
DBUG_RETURN(TRUE);
- }
+
list_val->col_val_array= col_val_array;
list_val->added_items= 0;
curr_list_val= list_val;
@@ -2202,7 +2169,6 @@ bool partition_info::fix_column_value_functions(THD *thd,
thd->variables.sql_mode= save_sql_mode;
if (!(val_ptr= (uchar*) thd->memdup(field->ptr, len)))
{
- mem_alloc_error(len);
result= TRUE;
goto end;
}
@@ -2717,11 +2683,9 @@ bool partition_info::vers_init_info(THD * thd)
column_list= TRUE;
num_columns= 1;
vers_info= new (thd->mem_root) Vers_part_info;
- if (!vers_info)
- {
- mem_alloc_error(sizeof(Vers_part_info));
+ if (unlikely(!vers_info))
return true;
- }
+
return false;
}
diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc
index 5c6c236a074..fb33a893a12 100644
--- a/sql/sql_partition.cc
+++ b/sql/sql_partition.cc
@@ -343,7 +343,7 @@ static bool set_up_field_array(THD *thd, TABLE *table,
if (field->flags & GET_FIXED_FIELDS_FLAG)
num_fields++;
}
- if (num_fields > MAX_REF_PARTS)
+ if (unlikely(num_fields > MAX_REF_PARTS))
{
char *err_str;
if (is_sub_part)
@@ -359,15 +359,13 @@ static bool set_up_field_array(THD *thd, TABLE *table,
We are using hidden key as partitioning field
*/
DBUG_ASSERT(!is_sub_part);
- DBUG_RETURN(result);
+ DBUG_RETURN(FALSE);
}
size_field_array= (num_fields+1)*sizeof(Field*);
field_array= (Field**) thd->calloc(size_field_array);
if (unlikely(!field_array))
- {
- mem_alloc_error(size_field_array);
- result= TRUE;
- }
+ DBUG_RETURN(TRUE);
+
ptr= table->field;
while ((field= *(ptr++)))
{
@@ -490,7 +488,6 @@ static bool create_full_part_field_array(THD *thd, TABLE *table,
field_array= (Field**) thd->calloc(size_field_array);
if (unlikely(!field_array))
{
- mem_alloc_error(size_field_array);
result= TRUE;
goto end;
}
@@ -515,14 +512,12 @@ static bool create_full_part_field_array(THD *thd, TABLE *table,
if (!(bitmap_buf= (my_bitmap_map*)
thd->alloc(bitmap_buffer_size(table->s->fields))))
{
- mem_alloc_error(bitmap_buffer_size(table->s->fields));
result= TRUE;
goto end;
}
- if (my_bitmap_init(&part_info->full_part_field_set, bitmap_buf,
- table->s->fields, FALSE))
+ if (unlikely(my_bitmap_init(&part_info->full_part_field_set, bitmap_buf,
+ table->s->fields, FALSE)))
{
- mem_alloc_error(table->s->fields);
result= TRUE;
goto end;
}
@@ -1088,12 +1083,11 @@ static bool set_up_partition_bitmaps(THD *thd, partition_info *part_info)
DBUG_ASSERT(!part_info->bitmaps_are_initialized);
/* Allocate for both read and lock_partitions */
- if (!(bitmap_buf= (uint32*) alloc_root(&part_info->table->mem_root,
- bitmap_bytes * 2)))
- {
- mem_alloc_error(bitmap_bytes * 2);
+ if (unlikely(!(bitmap_buf=
+ (uint32*) alloc_root(&part_info->table->mem_root,
+ bitmap_bytes * 2))))
DBUG_RETURN(TRUE);
- }
+
my_bitmap_init(&part_info->read_partitions, bitmap_buf, bitmap_bits, FALSE);
/* Use the second half of the allocated buffer for lock_partitions */
my_bitmap_init(&part_info->lock_partitions, bitmap_buf + (bitmap_bytes / 4),
@@ -1291,11 +1285,9 @@ static bool check_range_constants(THD *thd, partition_info *part_info)
uint size_entries= sizeof(part_column_list_val) * num_column_values;
part_info->range_col_array= (part_column_list_val*)
thd->calloc(part_info->num_parts * size_entries);
- if (part_info->range_col_array == NULL)
- {
- mem_alloc_error(part_info->num_parts * size_entries);
+ if (unlikely(part_info->range_col_array == NULL))
goto end;
- }
+
loc_range_col_array= part_info->range_col_array;
i= 0;
do
@@ -1329,11 +1321,9 @@ static bool check_range_constants(THD *thd, partition_info *part_info)
part_info->range_int_array= (longlong*)
thd->alloc(part_info->num_parts * sizeof(longlong));
- if (part_info->range_int_array == NULL)
- {
- mem_alloc_error(part_info->num_parts * sizeof(longlong));
+ if (unlikely(part_info->range_int_array == NULL))
goto end;
- }
+
i= 0;
do
{
@@ -4455,26 +4445,24 @@ bool mysql_unpack_partition(THD *thd,
thd->variables.character_set_client= system_charset_info;
Parser_state parser_state;
- if (parser_state.init(thd, part_buf, part_info_len))
+ if (unlikely(parser_state.init(thd, part_buf, part_info_len)))
goto end;
- if (init_lex_with_single_table(thd, table, &lex))
+ if (unlikely(init_lex_with_single_table(thd, table, &lex)))
goto end;
*work_part_info_used= FALSE;
- lex.part_info= new partition_info();
- lex.part_info->table= table; /* Indicates MYSQLparse from this place */
- if (!lex.part_info)
- {
- mem_alloc_error(sizeof(partition_info));
+
+ if (unlikely(!(lex.part_info= new partition_info())))
goto end;
- }
+
+ lex.part_info->table= table; /* Indicates MYSQLparse from this place */
part_info= lex.part_info;
DBUG_PRINT("info", ("Parse: %s", part_buf));
thd->m_statement_psi= NULL;
- if (parse_sql(thd, & parser_state, NULL) ||
- part_info->fix_parser_data(thd))
+ if (unlikely(parse_sql(thd, & parser_state, NULL)) ||
+ unlikely(part_info->fix_parser_data(thd)))
{
thd->free_items();
thd->m_statement_psi= parent_locker;
@@ -5328,21 +5316,17 @@ that are reorganised.
partition_element *part_elem= alt_it++;
if (*fast_alter_table)
part_elem->part_state= PART_TO_BE_ADDED;
- if (tab_part_info->partitions.push_back(part_elem, thd->mem_root))
- {
- mem_alloc_error(1);
+ if (unlikely(tab_part_info->partitions.push_back(part_elem,
+ thd->mem_root)))
goto err;
- }
} while (++part_count < num_new_partitions);
tab_part_info->num_parts+= num_new_partitions;
if (tab_part_info->part_type == VERSIONING_PARTITION)
{
DBUG_ASSERT(now_part);
- if (tab_part_info->partitions.push_back(now_part, thd->mem_root))
- {
- mem_alloc_error(1);
+ if (unlikely(tab_part_info->partitions.push_back(now_part,
+ thd->mem_root)))
goto err;
- }
}
}
/*
@@ -5675,12 +5659,10 @@ the generated partition syntax in a correct manner.
else
tab_max_range= part_elem->range_value;
if (*fast_alter_table &&
- tab_part_info->temp_partitions.push_back(part_elem,
- thd->mem_root))
- {
- mem_alloc_error(1);
+ unlikely(tab_part_info->temp_partitions.
+ push_back(part_elem, thd->mem_root)))
goto err;
- }
+
if (*fast_alter_table)
part_elem->part_state= PART_TO_BE_REORGED;
if (!found_first)
@@ -7541,27 +7523,6 @@ void append_row_to_str(String &str, const uchar *row, TABLE *table)
}
-/*
- SYNOPSIS
- mem_alloc_error()
- size Size of memory attempted to allocate
- None
-
- RETURN VALUES
- None
-
- DESCRIPTION
- A routine to use for all the many places in the code where memory
- allocation error can happen, a tremendous amount of them, needs
- simple routine that signals this error.
-*/
-
-void mem_alloc_error(size_t size)
-{
- my_error(ER_OUTOFMEMORY, MYF(ME_FATALERROR),
- static_cast<int>(size));
-}
-
#ifdef WITH_PARTITION_STORAGE_ENGINE
/**
Return comma-separated list of used partitions in the provided given string.
diff --git a/sql/sql_partition.h b/sql/sql_partition.h
index 4315c84e4f0..170ae8ccee1 100644
--- a/sql/sql_partition.h
+++ b/sql/sql_partition.h
@@ -133,7 +133,6 @@ Item* convert_charset_partition_constant(Item *item, CHARSET_INFO *cs);
@param[in] table Table containing read_set and fields for the row.
*/
void append_row_to_str(String &str, const uchar *row, TABLE *table);
-void mem_alloc_error(size_t size);
void truncate_partition_filename(char *path);
/*
diff --git a/sql/sql_partition_admin.cc b/sql/sql_partition_admin.cc
index 26a6f4be03e..99fe09d5afe 100644
--- a/sql/sql_partition_admin.cc
+++ b/sql/sql_partition_admin.cc
@@ -342,10 +342,7 @@ static bool exchange_name_with_ddl_log(THD *thd,
DBUG_ENTER("exchange_name_with_ddl_log");
if (unlikely(!(file= get_new_handler(NULL, thd->mem_root, ht))))
- {
- mem_alloc_error(sizeof(handler));
DBUG_RETURN(TRUE);
- }
/* prepare the action entry */
exchange_entry.entry_type= DDL_LOG_ENTRY_CODE;
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 6b8efd3c170..4570be0c6ce 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -29,8 +29,7 @@
#include "lock.h" // mysql_unlock_tables
#include "strfunc.h" // find_type2, find_set
#include "sql_truncate.h" // regenerate_locked_table
-#include "sql_partition.h" // mem_alloc_error,
- // generate_partition_syntax,
+#include "sql_partition.h" // generate_partition_syntax,
// partition_info
// NOT_A_PARTITION_ID
#include "sql_db.h" // load_db_opt_by_name
@@ -1146,11 +1145,8 @@ static int execute_ddl_log_action(THD *thd, DDL_LOG_ENTRY *ddl_log_entry)
}
hton= plugin_data(plugin, handlerton*);
file= get_new_handler((TABLE_SHARE*)0, &mem_root, hton);
- if (!file)
- {
- mem_alloc_error(sizeof(handler));
+ if (unlikely(!file))
goto error;
- }
}
switch (ddl_log_entry->action_type)
{
@@ -4492,12 +4488,10 @@ handler *mysql_create_frm_image(THD *thd,
db_options= create_info->table_options_with_row_type();
- if (!(file= get_new_handler((TABLE_SHARE*) 0, thd->mem_root,
- create_info->db_type)))
- {
- mem_alloc_error(sizeof(handler));
+ if (unlikely(!(file= get_new_handler((TABLE_SHARE*) 0, thd->mem_root,
+ create_info->db_type))))
DBUG_RETURN(NULL);
- }
+
#ifdef WITH_PARTITION_STORAGE_ENGINE
partition_info *part_info= thd->work_part_info;
@@ -4510,11 +4504,9 @@ handler *mysql_create_frm_image(THD *thd,
object with the default settings.
*/
thd->work_part_info= part_info= new partition_info();
- if (!part_info)
- {
- mem_alloc_error(sizeof(partition_info));
+ if (unlikely(!part_info))
goto err;
- }
+
file->set_auto_partitions(part_info);
part_info->default_engine_type= create_info->db_type;
part_info->is_auto_partitioned= TRUE;
@@ -4685,12 +4677,9 @@ handler *mysql_create_frm_image(THD *thd,
engines in partition clauses.
*/
delete file;
- if (!(file= get_new_handler((TABLE_SHARE*) 0, thd->mem_root,
- engine_type)))
- {
- mem_alloc_error(sizeof(handler));
+ if (unlikely(!(file= get_new_handler((TABLE_SHARE*) 0, thd->mem_root,
+ engine_type))))
DBUG_RETURN(NULL);
- }
}
}
/*
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 03d4d3b674f..8395135b00e 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -37,7 +37,7 @@
#include "sql_priv.h"
#include "sql_parse.h" /* comp_*_creator */
#include "sql_table.h" /* primary_key_name */
-#include "sql_partition.h" /* mem_alloc_error, partition_info, HASH_PARTITION */
+#include "sql_partition.h" /* partition_info, HASH_PARTITION */
#include "sql_acl.h" /* *_ACL */
#include "sql_class.h" /* Key_part_spec, enum_filetype, Diag_condition_item_name */
#include "slave.h"
@@ -764,11 +764,8 @@ bool LEX::set_bincmp(CHARSET_INFO *cs, bool bin)
Virtual_column_info *add_virtual_expression(THD *thd, Item *expr)
{
Virtual_column_info *v= new (thd->mem_root) Virtual_column_info();
- if (!v)
- {
- mem_alloc_error(sizeof(Virtual_column_info));
+ if (unlikely(!v))
return 0;
- }
v->expr= expr;
v->utf8= 0; /* connection charset */
return v;
@@ -5316,7 +5313,7 @@ part_field_item:
if (unlikely(part_info->part_field_list.push_back($1.str,
thd->mem_root)))
MYSQL_YYABORT;
- if (part_info->num_columns > MAX_REF_PARTS)
+ if (unlikely(part_info->num_columns > MAX_REF_PARTS))
my_yyabort_error((ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR, MYF(0),
"list of partition fields"));
}
@@ -5393,6 +5390,7 @@ sub_part_field_item:
if (unlikely(part_info->subpart_field_list.push_back($1.str,
thd->mem_root)))
MYSQL_YYABORT;
+
if (unlikely(part_info->subpart_field_list.elements > MAX_REF_PARTS))
my_yyabort_error((ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR, MYF(0),
"list of subpartition fields"));
@@ -5470,6 +5468,7 @@ part_definition:
if (unlikely(!p_elem) ||
unlikely(part_info->partitions.push_back(p_elem, thd->mem_root)))
MYSQL_YYABORT;
+
p_elem->part_state= PART_NORMAL;
p_elem->id= part_info->partitions.elements - 1;
part_info->curr_part_elem= p_elem;
@@ -5819,6 +5818,7 @@ sub_part_definition:
if (unlikely(!sub_p_elem) ||
unlikely(curr_part->subpartitions.push_back(sub_p_elem, thd->mem_root)))
MYSQL_YYABORT;
+
sub_p_elem->id= curr_part->subpartitions.elements - 1;
part_info->curr_part_elem= sub_p_elem;
part_info->use_default_subpartitions= FALSE;
@@ -8049,6 +8049,7 @@ add_partition_rule:
lex->part_info= new (thd->mem_root) partition_info();
if (unlikely(!lex->part_info))
MYSQL_YYABORT;
+
lex->alter_info.partition_flags|= ALTER_PARTITION_ADD;
DBUG_ASSERT(!Lex->create_info.if_not_exists());
lex->create_info.set($3);
@@ -8078,6 +8079,7 @@ reorg_partition_rule:
lex->part_info= new (thd->mem_root) partition_info();
if (unlikely(!lex->part_info))
MYSQL_YYABORT;
+
lex->no_write_to_binlog= $3;
}
reorg_parts_rule
diff --git a/sql/sql_yacc_ora.yy b/sql/sql_yacc_ora.yy
index 411a5dbfe33..c40f0ddb307 100644
--- a/sql/sql_yacc_ora.yy
+++ b/sql/sql_yacc_ora.yy
@@ -37,7 +37,7 @@
#include "sql_priv.h"
#include "sql_parse.h" /* comp_*_creator */
#include "sql_table.h" /* primary_key_name */
-#include "sql_partition.h" /* mem_alloc_error, partition_info, HASH_PARTITION */
+#include "sql_partition.h" /* partition_info, HASH_PARTITION */
#include "sql_acl.h" /* *_ACL */
#include "sql_class.h" /* Key_part_spec, enum_filetype, Diag_condition_item_name */
#include "slave.h"
@@ -5135,10 +5135,8 @@ partitioning:
LEX *lex= Lex;
lex->part_info= new (thd->mem_root) partition_info();
if (unlikely(!lex->part_info))
- {
- mem_alloc_error(sizeof(partition_info));
MYSQL_YYABORT;
- }
+
if (lex->sql_command == SQLCOM_ALTER_TABLE)
{
lex->alter_info.partition_flags|= ALTER_PARTITION_INFO;
@@ -5255,10 +5253,8 @@ part_field_item:
part_info->num_columns++;
if (unlikely(part_info->part_field_list.push_back($1.str,
thd->mem_root)))
- {
- mem_alloc_error(1);
MYSQL_YYABORT;
- }
+
if (unlikely(part_info->num_columns > MAX_REF_PARTS))
my_yyabort_error((ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR, MYF(0),
"list of partition fields"));
@@ -5335,10 +5331,8 @@ sub_part_field_item:
partition_info *part_info= Lex->part_info;
if (unlikely(part_info->subpart_field_list.push_back($1.str,
thd->mem_root)))
- {
- mem_alloc_error(1);
MYSQL_YYABORT;
- }
+
if (unlikely(part_info->subpart_field_list.elements > MAX_REF_PARTS))
my_yyabort_error((ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR, MYF(0),
"list of subpartition fields"));
@@ -5713,10 +5707,8 @@ sub_part_definition:
}
if (unlikely(!sub_p_elem) ||
unlikely(curr_part->subpartitions.push_back(sub_p_elem, thd->mem_root)))
- {
- mem_alloc_error(sizeof(partition_element));
MYSQL_YYABORT;
- }
+
part_info->curr_part_elem= sub_p_elem;
part_info->use_default_subpartitions= FALSE;
part_info->use_default_num_subpartitions= FALSE;
@@ -7923,6 +7915,7 @@ reorg_partition_rule:
lex->part_info= new (thd->mem_root) partition_info();
if (unlikely(!lex->part_info))
MYSQL_YYABORT;
+
lex->no_write_to_binlog= $3;
}
reorg_parts_rule