summaryrefslogtreecommitdiff
path: root/sql/sp.cc
diff options
context:
space:
mode:
authorunknown <monty@mysql.com>2005-01-06 13:00:13 +0200
committerunknown <monty@mysql.com>2005-01-06 13:00:13 +0200
commitacf76e3b88b4ec294c8f63f0fb2a29f895228259 (patch)
treeed8b3e5bd637f4d9661ed2ba57849e7e56d5178a /sql/sp.cc
parentbd365f76222e6263095e079ab9e634e88f06b7e1 (diff)
downloadmariadb-git-acf76e3b88b4ec294c8f63f0fb2a29f895228259.tar.gz
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
Diffstat (limited to 'sql/sp.cc')
-rw-r--r--sql/sp.cc28
1 files changed, 14 insertions, 14 deletions
diff --git a/sql/sp.cc b/sql/sp.cc
index 65dad60cda7..84b126e5ecd 100644
--- a/sql/sp.cc
+++ b/sql/sp.cc
@@ -97,8 +97,8 @@ db_find_routine_aux(THD *thd, int type, sp_name *name,
else
{
for (table= thd->open_tables ; table ; table= table->next)
- if (strcmp(table->table_cache_key, "mysql") == 0 &&
- strcmp(table->real_name, "proc") == 0)
+ if (strcmp(table->s->db, "mysql") == 0 &&
+ strcmp(table->s->table_name, "proc") == 0)
break;
}
if (table)
@@ -109,7 +109,7 @@ db_find_routine_aux(THD *thd, int type, sp_name *name,
memset(&tables, 0, sizeof(tables));
tables.db= (char*)"mysql";
- tables.real_name= tables.alias= (char*)"proc";
+ tables.table_name= tables.alias= (char*)"proc";
if (! (table= open_ltable(thd, &tables, ltype)))
{
*tablep= NULL;
@@ -158,7 +158,7 @@ db_find_routine(THD *thd, int type, sp_name *name, sp_head **sphp)
if (ret != SP_OK)
goto done;
- if (table->fields != MYSQL_PROC_FIELD_COUNT)
+ if (table->s->fields != MYSQL_PROC_FIELD_COUNT)
{
ret= SP_GET_FIELD_FAILED;
goto done;
@@ -356,16 +356,16 @@ db_create_routine(THD *thd, int type, sp_head *sp)
memset(&tables, 0, sizeof(tables));
tables.db= (char*)"mysql";
- tables.real_name= tables.alias= (char*)"proc";
+ tables.table_name= tables.alias= (char*)"proc";
if (! (table= open_ltable(thd, &tables, TL_WRITE)))
ret= SP_OPEN_TABLE_FAILED;
else
{
- restore_record(table, default_values); // Get default values for fields
+ restore_record(table, s->default_values); // Get default values for fields
strxmov(definer, thd->priv_user, "@", thd->priv_host, NullS);
- if (table->fields != MYSQL_PROC_FIELD_COUNT)
+ if (table->s->fields != MYSQL_PROC_FIELD_COUNT)
{
ret= SP_GET_FIELD_FAILED;
goto done;
@@ -562,7 +562,7 @@ db_show_routine_status(THD *thd, int type, const char *wild)
memset(&tables, 0, sizeof(tables));
tables.db= (char*)"mysql";
- tables.real_name= tables.alias= (char*)"proc";
+ tables.table_name= tables.alias= (char*)"proc";
if (! (table= open_ltable(thd, &tables, TL_READ)))
{
@@ -668,8 +668,8 @@ sp_drop_db_routines(THD *thd, char *db)
keylen= sizeof(key);
for (table= thd->open_tables ; table ; table= table->next)
- if (strcmp(table->table_cache_key, "mysql") == 0 &&
- strcmp(table->real_name, "proc") == 0)
+ if (strcmp(table->s->db, "mysql") == 0 &&
+ strcmp(table->s->table_name, "proc") == 0)
break;
if (! table)
{
@@ -677,7 +677,7 @@ sp_drop_db_routines(THD *thd, char *db)
memset(&tables, 0, sizeof(tables));
tables.db= (char*)"mysql";
- tables.real_name= tables.alias= (char*)"proc";
+ tables.table_name= tables.alias= (char*)"proc";
if (! (table= open_ltable(thd, &tables, TL_WRITE)))
DBUG_RETURN(SP_OPEN_TABLE_FAILED);
}
@@ -749,9 +749,9 @@ sp_exists_routine(THD *thd, TABLE_LIST *tables, bool any, bool no_error)
LEX_STRING lex_db;
LEX_STRING lex_name;
lex_db.length= strlen(table->db);
- lex_name.length= strlen(table->real_name);
+ lex_name.length= strlen(table->table_name);
lex_db.str= thd->strmake(table->db, lex_db.length);
- lex_name.str= thd->strmake(table->real_name, lex_name.length);
+ lex_name.str= thd->strmake(table->table_name, lex_name.length);
name= new sp_name(lex_db, lex_name);
name->init_qname(thd);
if (sp_find_procedure(thd, name) != NULL ||
@@ -766,7 +766,7 @@ sp_exists_routine(THD *thd, TABLE_LIST *tables, bool any, bool no_error)
if (!no_error)
{
my_error(ER_SP_DOES_NOT_EXIST, MYF(0), "FUNCTION or PROCEDURE",
- table->real_name);
+ table->table_name);
DBUG_RETURN(-1);
}
DBUG_RETURN(0);