summaryrefslogtreecommitdiff
path: root/sql/sql_base.cc
diff options
context:
space:
mode:
authorMonty <monty@mariadb.org>2018-04-04 12:16:12 +0300
committerMonty <monty@mariadb.org>2018-05-07 00:07:32 +0300
commit30ebc3ee9efcab635b1f3e14b9198a58ae93c233 (patch)
tree81e3ad66cd4ec8693964317cbf23515d0e9ecf35 /sql/sql_base.cc
parenta22a339f8e044a1e8df011beb0b4c8f43792ac96 (diff)
downloadmariadb-git-30ebc3ee9efcab635b1f3e14b9198a58ae93c233.tar.gz
Add likely/unlikely to speed up execution
Added to: - if (error) - Lex - sql_yacc.yy and sql_yacc_ora.yy - In header files to alloc() calls - Added thd argument to thd_net_is_killed()
Diffstat (limited to 'sql/sql_base.cc')
-rw-r--r--sql/sql_base.cc79
1 files changed, 41 insertions, 38 deletions
diff --git a/sql/sql_base.cc b/sql/sql_base.cc
index 0081365793b..daae00fac76 100644
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
@@ -1785,7 +1785,7 @@ retry_share:
share= tdc_acquire_share(thd, table_list, gts_flags, &table);
- if (!share)
+ if (unlikely(!share))
{
/*
Hide "Table doesn't exist" errors if the table belongs to a view.
@@ -1927,7 +1927,7 @@ retry_share:
thd->open_options, table, FALSE,
IF_PARTITIONING(table_list->partition_names,0));
- if (error)
+ if (unlikely(error))
{
my_free(table);
@@ -1972,7 +1972,7 @@ retry_share:
table_list->table= table;
#ifdef WITH_PARTITION_STORAGE_ENGINE
- if (table->part_info)
+ if (unlikely(table->part_info))
{
/* Partitions specified were incorrect.*/
if (part_names_error)
@@ -2057,7 +2057,7 @@ TABLE *find_table_for_mdl_upgrade(THD *thd, const char *db,
{
TABLE *tab= find_locked_table(thd->open_tables, db, table_name);
- if (!tab)
+ if (unlikely(!tab))
{
if (!no_error)
my_error(ER_TABLE_NOT_LOCKED, MYF(0), table_name);
@@ -2070,8 +2070,8 @@ TABLE *find_table_for_mdl_upgrade(THD *thd, const char *db,
cases don't take a global IX lock in order to be compatible with
global read lock.
*/
- if (!thd->mdl_context.is_lock_owner(MDL_key::GLOBAL, "", "",
- MDL_INTENTION_EXCLUSIVE))
+ if (unlikely(!thd->mdl_context.is_lock_owner(MDL_key::GLOBAL, "", "",
+ MDL_INTENTION_EXCLUSIVE)))
{
if (!no_error)
my_error(ER_TABLE_NOT_LOCKED_FOR_WRITE, MYF(0), table_name);
@@ -2083,7 +2083,7 @@ TABLE *find_table_for_mdl_upgrade(THD *thd, const char *db,
(tab= find_locked_table(tab->next, db, table_name)))
continue;
- if (!tab && !no_error)
+ if (unlikely(!tab && !no_error))
my_error(ER_TABLE_NOT_LOCKED_FOR_WRITE, MYF(0), table_name);
return tab;
@@ -3529,7 +3529,7 @@ open_and_process_table(THD *thd, LEX *lex, TABLE_LIST *tables,
error= open_table(thd, tables, ot_ctx);
}
- if (error)
+ if (unlikely(error))
{
if (! ot_ctx->can_recover_from_failed_open() && safe_to_ignore_table)
{
@@ -3609,7 +3609,7 @@ open_and_process_table(THD *thd, LEX *lex, TABLE_LIST *tables,
if (need_prelocking && ! lex->requires_prelocking())
lex->mark_as_requiring_prelocking(save_query_tables_last);
- if (error)
+ if (unlikely(error))
goto end;
}
@@ -3619,7 +3619,7 @@ open_and_process_table(THD *thd, LEX *lex, TABLE_LIST *tables,
/* Check and update metadata version of a base table. */
error= check_and_update_table_version(thd, tables, tables->table->s);
- if (error)
+ if (unlikely(error))
goto end;
/*
After opening a MERGE table add the children to the query list of
@@ -3679,7 +3679,7 @@ process_view_routines:
if (need_prelocking && ! lex->requires_prelocking())
lex->mark_as_requiring_prelocking(save_query_tables_last);
- if (error)
+ if (unlikely(error))
goto end;
}
@@ -4048,7 +4048,7 @@ restart:
flags, prelocking_strategy,
has_prelocking_list, &ot_ctx);
- if (error)
+ if (unlikely(error))
{
if (ot_ctx.can_recover_from_failed_open())
{
@@ -4130,7 +4130,7 @@ restart:
if (need_prelocking && ! *start)
*start= thd->lex->query_tables;
- if (error)
+ if (unlikely(error))
{
if (ot_ctx.can_recover_from_failed_open())
{
@@ -4226,7 +4226,7 @@ error:
THD_STAGE_INFO(thd, stage_after_opening_tables);
thd_proc_info(thd, 0);
- if (error && *table_to_open)
+ if (unlikely(error) && *table_to_open)
{
(*table_to_open)->table= NULL;
}
@@ -4404,7 +4404,7 @@ handle_table(THD *thd, Query_tables_list *prelocking_ctx,
arena= thd->activate_stmt_arena_if_needed(&backup);
table->file->get_parent_foreign_key_list(thd, &fk_list);
- if (thd->is_error())
+ if (unlikely(thd->is_error()))
{
if (arena)
thd->restore_active_arena(arena, &backup);
@@ -4455,7 +4455,7 @@ handle_table(THD *thd, Query_tables_list *prelocking_ctx,
table->internal_tables);
if (arena)
thd->restore_active_arena(arena, &backup);
- if (error)
+ if (unlikely(error))
{
*need_prelocking= TRUE;
return TRUE;
@@ -4696,7 +4696,7 @@ static bool check_lock_and_start_stmt(THD *thd,
table_list->table->alias.c_ptr());
DBUG_RETURN(1);
}
- if ((error= table_list->table->file->start_stmt(thd, lock_type)))
+ if (unlikely((error= table_list->table->file->start_stmt(thd, lock_type))))
{
table_list->table->file->print_error(error, MYF(0));
DBUG_RETURN(1);
@@ -4836,7 +4836,7 @@ TABLE *open_ltable(THD *thd, TABLE_LIST *table_list, thr_lock_type lock_type,
break;
}
- if (!error)
+ if (likely(!error))
{
/*
We can't have a view or some special "open_strategy" in this function
@@ -6178,7 +6178,7 @@ find_field_in_tables(THD *thd, Item_ident *item,
if (db)
return cur_field;
- if (found)
+ if (unlikely(found))
{
if (report_error == REPORT_ALL_ERRORS ||
report_error == IGNORE_EXCEPT_NON_UNIQUE)
@@ -6190,7 +6190,7 @@ find_field_in_tables(THD *thd, Item_ident *item,
}
}
- if (found)
+ if (likely(found))
return found;
/*
@@ -6309,7 +6309,7 @@ find_item_in_list(Item *find, List<Item> &items, uint *counter,
(if this field created from expression argument of group_concat()),
=> we have to check presence of name before compare
*/
- if (!item_field->name.str)
+ if (unlikely(!item_field->name.str))
continue;
if (table_name)
@@ -6427,24 +6427,27 @@ find_item_in_list(Item *find, List<Item> &items, uint *counter,
}
}
}
- if (!found)
+
+ if (likely(found))
+ return found;
+
+ if (unlikely(found_unaliased_non_uniq))
{
- if (found_unaliased_non_uniq)
- {
- if (report_error != IGNORE_ERRORS)
- my_error(ER_NON_UNIQ_ERROR, MYF(0),
- find->full_name(), current_thd->where);
- return (Item **) 0;
- }
- if (found_unaliased)
- {
- found= found_unaliased;
- *counter= unaliased_counter;
- *resolution= RESOLVED_BEHIND_ALIAS;
- }
+ if (report_error != IGNORE_ERRORS)
+ my_error(ER_NON_UNIQ_ERROR, MYF(0),
+ find->full_name(), current_thd->where);
+ return (Item **) 0;
}
+ if (found_unaliased)
+ {
+ found= found_unaliased;
+ *counter= unaliased_counter;
+ *resolution= RESOLVED_BEHIND_ALIAS;
+ }
+
if (found)
return found;
+
if (report_error != REPORT_EXCEPT_NOT_FOUND)
{
if (report_error == REPORT_ALL_ERRORS)
@@ -8187,7 +8190,7 @@ fill_record(THD *thd, TABLE *table_arg, List<Item> &fields, List<Item> &values,
if (rfield->stored_in_db())
{
- if (value->save_in_field(rfield, 0) < 0 && !ignore_errors)
+ if (unlikely(value->save_in_field(rfield, 0) < 0) && !ignore_errors)
{
my_message(ER_UNKNOWN_ERROR, ER_THD(thd, ER_UNKNOWN_ERROR), MYF(0));
goto err;
@@ -8442,7 +8445,7 @@ fill_record(THD *thd, TABLE *table, Field **ptr, List<Item> &values,
/* Ensure that all fields are from the same table */
DBUG_ASSERT(field->table == table);
- if (field->invisible)
+ if (unlikely(field->invisible))
{
all_fields_have_values= false;
continue;
@@ -8454,7 +8457,7 @@ fill_record(THD *thd, TABLE *table, Field **ptr, List<Item> &values,
if (field->field_index == autoinc_index)
table->auto_increment_field_not_null= TRUE;
- if (field->vcol_info || (vers_sys_field && !ignore_errors))
+ if (unlikely(field->vcol_info) || (vers_sys_field && !ignore_errors))
{
Item::Type type= value->type();
if (type != Item::DEFAULT_VALUE_ITEM &&