summaryrefslogtreecommitdiff
path: root/sql/sp.cc
diff options
context:
space:
mode:
authorunknown <pem@mysql.com>2006-04-25 16:20:49 +0200
committerunknown <pem@mysql.com>2006-04-25 16:20:49 +0200
commit225330cd5b92e2804f50e881e77fd29c50d8f9a5 (patch)
tree40ffe6379859774d2addc10bead47b5667662667 /sql/sp.cc
parentea564a7215b7267855892b3ef40898821d688ba5 (diff)
parent8e28ab1f40e60cbd9837468fc0d357335209f877 (diff)
downloadmariadb-git-225330cd5b92e2804f50e881e77fd29c50d8f9a5.tar.gz
Merge mysql.com:/extern/mysql/5.1/generic/mysql-5.0-merge
into mysql.com:/extern/mysql/5.1/generic/mysql-5.1-new mysql-test/r/innodb.result: Auto merged mysql-test/r/sp.result: Auto merged mysql-test/r/timezone_grant.result: Auto merged mysql-test/r/trigger.result: Auto merged mysql-test/r/view.result: Auto merged mysql-test/t/innodb.test: Auto merged mysql-test/t/sp.test: Auto merged mysql-test/t/trigger.test: Auto merged mysql-test/t/view.test: Auto merged sql/lex.h: Auto merged sql/sp.cc: Auto merged sql/sp_head.cc: Auto merged sql/sp_head.h: Auto merged sql/sql_class.cc: Auto merged sql/sql_view.cc: Auto merged mysql-test/r/rpl_insert_id.result: Manual merge. mysql-test/t/disabled.def: Manual merge. mysql-test/t/rpl_insert_id.test: Manual merge. sql/item_func.cc: Manual merge. sql/sql_yacc.yy: Manual merge - not complete yet.
Diffstat (limited to 'sql/sp.cc')
-rw-r--r--sql/sp.cc20
1 files changed, 8 insertions, 12 deletions
diff --git a/sql/sp.cc b/sql/sp.cc
index 7fc388860d1..f7a6772146d 100644
--- a/sql/sp.cc
+++ b/sql/sp.cc
@@ -885,28 +885,23 @@ int
sp_drop_db_routines(THD *thd, char *db)
{
TABLE *table;
- byte key[64]; // db
- uint keylen;
int ret;
+ uint key_len;
DBUG_ENTER("sp_drop_db_routines");
DBUG_PRINT("enter", ("db: %s", db));
- // Put the key used to read the row together
- keylen= strlen(db);
- if (keylen > 64)
- keylen= 64;
- memcpy(key, db, keylen);
- memset(key+keylen, (int)' ', 64-keylen); // Pad with space
- keylen= sizeof(key);
-
ret= SP_OPEN_TABLE_FAILED;
if (!(table= open_proc_table_for_update(thd)))
goto err;
+ table->field[MYSQL_PROC_FIELD_DB]->store(db, strlen(db), system_charset_info);
+ key_len= table->key_info->key_part[0].store_length;
+
ret= SP_OK;
table->file->ha_index_init(0, 1);
if (! table->file->index_read(table->record[0],
- key, keylen, HA_READ_KEY_EXACT))
+ (byte *)table->field[MYSQL_PROC_FIELD_DB]->ptr,
+ key_len, HA_READ_KEY_EXACT))
{
int nxtres;
bool deleted= FALSE;
@@ -922,7 +917,8 @@ sp_drop_db_routines(THD *thd, char *db)
break;
}
} while (! (nxtres= table->file->index_next_same(table->record[0],
- key, keylen)));
+ (byte *)table->field[MYSQL_PROC_FIELD_DB]->ptr,
+ key_len)));
if (nxtres != HA_ERR_END_OF_FILE)
ret= SP_KEY_NOT_FOUND;
if (deleted)