mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
Speedup:
- Don't call update_virtual_fields() if table->vfield is not set - Don't prealloc memory for in open_tables() as this is very seldom used. sql/records.cc: Don't call update_virtual_fields() if table->vfield is not set sql/sql_base.cc: Don't prealloc memory for in open_tables() as this is very seldom used. Don't call update_virtual_fields() if table->vfield is not set sql/sql_delete.cc: Don't call update_virtual_fields() if table->vfield is not set sql/sql_handler.cc: Don't call update_virtual_fields() if table->vfield is not set sql/sql_join_cache.cc: Don't call update_virtual_fields() if table->vfield is not set Move some frequent values to local variables sql/sql_table.cc: Don't call update_virtual_fields() if table->vfield is not set sql/sql_update.cc: Don't call update_virtual_fields() if table->vfield is not set sql/table.cc: Assert if update_virtual_fields is called with wrong parameters
This commit is contained in:
@ -3344,23 +3344,26 @@ int JOIN_TAB_SCAN::next()
|
||||
int skip_rc;
|
||||
READ_RECORD *info= &join_tab->read_record;
|
||||
SQL_SELECT *select= join_tab->cache_select;
|
||||
TABLE *table= join_tab->table;
|
||||
THD *thd= join->thd;
|
||||
|
||||
if (is_first_record)
|
||||
is_first_record= FALSE;
|
||||
else
|
||||
err= info->read_record(info);
|
||||
if (!err)
|
||||
update_virtual_fields(join->thd, join_tab->table);
|
||||
while (!err && select && (skip_rc= select->skip_record(join->thd)) <= 0)
|
||||
if (!err && table->vfield)
|
||||
update_virtual_fields(thd, table);
|
||||
while (!err && select && (skip_rc= select->skip_record(thd)) <= 0)
|
||||
{
|
||||
if (join->thd->killed || skip_rc < 0)
|
||||
if (thd->killed || skip_rc < 0)
|
||||
return 1;
|
||||
/*
|
||||
Move to the next record if the last retrieved record does not
|
||||
meet the condition pushed to the table join_tab.
|
||||
*/
|
||||
err= info->read_record(info);
|
||||
if (!err)
|
||||
update_virtual_fields(join->thd, join_tab->table);
|
||||
if (!err && table->vfield)
|
||||
update_virtual_fields(thd, table);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
@ -3874,7 +3877,8 @@ int JOIN_TAB_SCAN_MRR::next()
|
||||
*/
|
||||
DBUG_ASSERT(cache->buff <= (uchar *) (*ptr) &&
|
||||
(uchar *) (*ptr) <= cache->end_pos);
|
||||
update_virtual_fields(join->thd, join_tab->table);
|
||||
if (join_tab->table->vfield)
|
||||
update_virtual_fields(join->thd, join_tab->table);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
Reference in New Issue
Block a user