diff options
author | pem@mysql.com <> | 2006-04-25 16:20:49 +0200 |
---|---|---|
committer | pem@mysql.com <> | 2006-04-25 16:20:49 +0200 |
commit | 0e2d20b1cbc977242d63a9e189c42d7cf9cbb3d4 (patch) | |
tree | 40ffe6379859774d2addc10bead47b5667662667 /sql/sp.cc | |
parent | 8d04fd256d811bd051b71945ce4c042da3ad8bff (diff) | |
parent | 8301e6f62526b63a1153e8bb624f04da4c9d8927 (diff) | |
download | mariadb-git-0e2d20b1cbc977242d63a9e189c42d7cf9cbb3d4.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
Diffstat (limited to 'sql/sp.cc')
-rw-r--r-- | sql/sp.cc | 20 |
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) |