mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
First stage of table definition cache
Split TABLE to TABLE and TABLE_SHARE (TABLE_SHARE is still allocated as part of table, will be fixed soon) Created Field::make_field() and made Field_num::make_field() to call this Added 'TABLE_SHARE->db' that points to database name; Changed all usage of table_cache_key as database name to use this instead Changed field->table_name to point to pointer to alias. This allows us to change alias for a table by just updating one pointer. Renamed TABLE_SHARE->real_name to table_name Renamed TABLE->table_name to alias Renamed TABLE_LIST->real_name to table_name include/myisam.h: Added const before names mysql-test/r/group_min_max.result: Make results repeatable mysql-test/t/group_min_max.test: Make results repeatable sql/field.cc: Created Field::make_field() and made Field_num::make_field() to call this Use TABLE_SHARE Use sql_strmake() instead of sql_memdup() to simplify code sql/field.h: Changed table_name to be pointer to table_name. This allows us to change alias for all fields by just changing one pointer. Use TABLE_SHARE sql/field_conv.cc: Use TABLE_SHARE sql/filesort.cc: Use TABLE_SHARE sql/ha_berkeley.cc: Use TABLE_SHARE sql/ha_heap.cc: Use TABLE_SHARE sql/ha_innodb.cc: Use TABLE_SHARE sql/ha_myisam.cc: Use TABLE_SHARE sql/ha_myisammrg.cc: Use TABLE_SHARE Change some pointer handling to use const char* sql/ha_ndbcluster.cc: Use TABLE_SHARE sql/handler.cc: Use TABLE_SHARE sql/item.cc: Use TABLE_SHARE sql/item_func.cc: Use TABLE_SHARE sql/item_subselect.cc: Use TABLE_SHARE sql/item_sum.cc: Use TABLE_SHARE sql/key.cc: Use TABLE_SHARE sql/lock.cc: Use TABLE_SHARE sql/log_event.cc: real_name -> table_name sql/mysql_priv.h: Use TABLE_SHARE sql/opt_range.cc: Use TABLE_SHARE sql/opt_sum.cc: Use TABLE_SHARE sql/records.cc: Use TABLE_SHARE sql/repl_failsafe.cc: real_name -> table_name sql/slave.cc: Use TABLE_SHARE sql/sp.cc: Use TABLE_SHARE sql/sp_head.cc: real_name -> table_name sql/sql_acl.cc: Use TABLE_SHARE removed unnecessary assert fixed indentation changed some char * -> const char* sql/sql_acl.h: changed some char* -> const char* sql/sql_base.cc: Use TABLE_SHARE sql/sql_cache.cc: Use TABLE_SHARE sql/sql_class.cc: Use TABLE_SHARE sql/sql_db.cc: real_name -> table_name sql/sql_delete.cc: Use TABLE_SHARE sql/sql_derived.cc: Use TABLE_SHARE sql/sql_handler.cc: Use TABLE_SHARE sql/sql_help.cc: Use TABLE_SHARE sql/sql_insert.cc: Use TABLE_SHARE sql/sql_load.cc: Use TABLE_SHARE sql/sql_parse.cc: Use TABLE_SHARE sql/sql_rename.cc: real_name -> table_name sql/sql_select.cc: Use TABLE_SHARE table->blob_fields now points to field offsets, not fields tmp_table->table_name now points to alias name sql/sql_show.cc: Use TABLE_SHARE sql/sql_table.cc: Use TABLE_SHARE sql/sql_test.cc: Use TABLE_SHARE sql/sql_trigger.cc: Use TABLE_SHARE sql/sql_udf.cc: Use TABLE_SHARE sql/sql_union.cc: real_name -> table_name sql/sql_update.cc: Use TABLE_SHARE sql/sql_view.cc: Use TABLE_SHARE sql/table.cc: Split TABLE to TABLE and TABLE_SHARE Changed blob_field to be field offsets instead of pointer to fields Only initialize table->s->default_values with default record (not all table->record[#]) Some indentation changes sql/table.h: Split TABLE to TABLE and TABLE_SHARE sql/tztime.cc: real_name -> table_name sql/unireg.cc: Use TABLE_SHARE sql/unireg.h: Use TABLE_SHARE
This commit is contained in:
@ -79,7 +79,7 @@ void print_cached_tables(void)
|
||||
{
|
||||
TABLE *entry=(TABLE*) hash_element(&open_cache,idx);
|
||||
printf("%-14.14s %-32s%6ld%8ld%10ld%6d %s\n",
|
||||
entry->table_cache_key,entry->real_name,entry->version,
|
||||
entry->s->db, entry->s->table_name, entry->s->version,
|
||||
entry->in_use ? entry->in_use->thread_id : 0L,
|
||||
entry->in_use ? entry->in_use->dbug_thread_id : 0L,
|
||||
entry->db_stat ? 1 : 0, entry->in_use ? lock_descriptions[(int)entry->reginfo.lock_type] : "Not in use");
|
||||
@ -131,7 +131,7 @@ void TEST_filesort(SORT_FIELD *sortorder,uint s_length)
|
||||
{
|
||||
if (sortorder->field->table_name)
|
||||
{
|
||||
out.append(sortorder->field->table_name);
|
||||
out.append(*sortorder->field->table_name);
|
||||
out.append('.');
|
||||
}
|
||||
out.append(sortorder->field->field_name ? sortorder->field->field_name:
|
||||
@ -167,7 +167,7 @@ TEST_join(JOIN *join)
|
||||
TABLE *form=tab->table;
|
||||
char key_map_buff[128];
|
||||
fprintf(DBUG_FILE,"%-16.16s type: %-7s q_keys: %s refs: %d key: %d len: %d\n",
|
||||
form->table_name,
|
||||
form->alias,
|
||||
join_type_str[tab->type],
|
||||
tab->keys.print(key_map_buff),
|
||||
tab->ref.key_parts,
|
||||
@ -261,7 +261,7 @@ print_plan(JOIN* join, double read_time, double record_count,
|
||||
pos = join->positions[i];
|
||||
table= pos.table->table;
|
||||
if (table)
|
||||
fputs(table->real_name, DBUG_FILE);
|
||||
fputs(table->s->table_name, DBUG_FILE);
|
||||
fputc(' ', DBUG_FILE);
|
||||
}
|
||||
fputc('\n', DBUG_FILE);
|
||||
@ -278,7 +278,7 @@ print_plan(JOIN* join, double read_time, double record_count,
|
||||
pos= join->best_positions[i];
|
||||
table= pos.table->table;
|
||||
if (table)
|
||||
fputs(table->real_name, DBUG_FILE);
|
||||
fputs(table->s->table_name, DBUG_FILE);
|
||||
fputc(' ', DBUG_FILE);
|
||||
}
|
||||
}
|
||||
@ -289,7 +289,7 @@ print_plan(JOIN* join, double read_time, double record_count,
|
||||
for (plan_nodes= join->best_ref ; *plan_nodes ; plan_nodes++)
|
||||
{
|
||||
join_table= (*plan_nodes);
|
||||
fputs(join_table->table->real_name, DBUG_FILE);
|
||||
fputs(join_table->table->s->table_name, DBUG_FILE);
|
||||
fprintf(DBUG_FILE, "(%lu,%lu,%lu)",
|
||||
(ulong) join_table->found_records,
|
||||
(ulong) join_table->records,
|
||||
@ -332,12 +332,12 @@ static void push_locks_into_array(DYNAMIC_ARRAY *ar, THR_LOCK_DATA *data,
|
||||
if (data)
|
||||
{
|
||||
TABLE *table=(TABLE *)data->debug_print_param;
|
||||
if (table && table->tmp_table == NO_TMP_TABLE)
|
||||
if (table && table->s->tmp_table == NO_TMP_TABLE)
|
||||
{
|
||||
TABLE_LOCK_INFO table_lock_info;
|
||||
table_lock_info.thread_id=table->in_use->thread_id;
|
||||
memcpy(table_lock_info.table_name, table->table_cache_key,
|
||||
table->key_length);
|
||||
table_lock_info.thread_id= table->in_use->thread_id;
|
||||
memcpy(table_lock_info.table_name, table->s->table_cache_key,
|
||||
table->s->key_length);
|
||||
table_lock_info.table_name[strlen(table_lock_info.table_name)]='.';
|
||||
table_lock_info.waiting=wait;
|
||||
table_lock_info.lock_text=text;
|
||||
|
Reference in New Issue
Block a user