diff options
author | unknown <pem@mysql.com> | 2006-04-25 16:20:49 +0200 |
---|---|---|
committer | unknown <pem@mysql.com> | 2006-04-25 16:20:49 +0200 |
commit | 225330cd5b92e2804f50e881e77fd29c50d8f9a5 (patch) | |
tree | 40ffe6379859774d2addc10bead47b5667662667 /sql/sp.cc | |
parent | ea564a7215b7267855892b3ef40898821d688ba5 (diff) | |
parent | 8e28ab1f40e60cbd9837468fc0d357335209f877 (diff) | |
download | mariadb-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.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) |