diff options
author | unknown <SergeyV@selena.> | 2005-11-14 17:42:14 +0300 |
---|---|---|
committer | unknown <SergeyV@selena.> | 2005-11-14 17:42:14 +0300 |
commit | 14637f97cdd7ff4a7d60c09052e2e280ee57c957 (patch) | |
tree | 3242a90aa4f84b86958e1a32054f6e9de61afc22 | |
parent | bfef85a188194e865a534a2dc6e095414e14e2d8 (diff) | |
parent | 1c677f8c559f244b72ff4f6f1c7528889af05f45 (diff) | |
download | mariadb-git-14637f97cdd7ff4a7d60c09052e2e280ee57c957.tar.gz |
Merge svlasenko@bk-internal.mysql.com:/home/bk/mysql-5.0
into selena.:H:/MYSQL/src/#14569-mysql-5.0
sql/sql_parse.cc:
Auto merged
-rw-r--r-- | mysql-test/r/sp-error.result | 13 | ||||
-rw-r--r-- | mysql-test/t/sp-error.test | 16 | ||||
-rw-r--r-- | sql/sql_db.cc | 13 | ||||
-rw-r--r-- | sql/sql_parse.cc | 2 |
4 files changed, 41 insertions, 3 deletions
diff --git a/mysql-test/r/sp-error.result b/mysql-test/r/sp-error.result index 50ff7ea264a..fabbf13a96b 100644 --- a/mysql-test/r/sp-error.result +++ b/mysql-test/r/sp-error.result @@ -916,3 +916,16 @@ ERROR 42S22: Unknown column 'bug13037_foo' in 'field list' DROP PROCEDURE bug13037_p1; DROP PROCEDURE bug13037_p2; DROP PROCEDURE bug13037_p3; +create database mysqltest1; +create database mysqltest2; +use mysqltest1; +drop database mysqltest1; +create procedure mysqltest2.p1() select version(); +create procedure p2() select version(); +ERROR 3D000: No database selected +use mysqltest2; +show procedure status; +Db Name Type Definer Modified Created Security_type Comment +mysqltest2 p1 PROCEDURE root@localhost 0000-00-00 00:00:00 0000-00-00 00:00:00 DEFINER +drop database mysqltest2; +use test; diff --git a/mysql-test/t/sp-error.test b/mysql-test/t/sp-error.test index e2343cd905c..3c1efe73c18 100644 --- a/mysql-test/t/sp-error.test +++ b/mysql-test/t/sp-error.test @@ -1337,6 +1337,22 @@ DROP PROCEDURE bug13037_p1; DROP PROCEDURE bug13037_p2; DROP PROCEDURE bug13037_p3; +# +# Bug#14569 "editing a stored procedure kills mysqld-nt" +# +create database mysqltest1; +create database mysqltest2; +use mysqltest1; +drop database mysqltest1; +create procedure mysqltest2.p1() select version(); +--error ER_NO_DB_ERROR +create procedure p2() select version(); +use mysqltest2; +--replace_column 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00' +show procedure status; +drop database mysqltest2; +use test; + # BUG#NNNN: New bug synopsis # diff --git a/sql/sql_db.cc b/sql/sql_db.cc index a5dabc8140c..bde6522a38b 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -1163,8 +1163,17 @@ bool mysql_change_db(THD *thd, const char *name, bool no_access_check) } end: x_free(thd->db); - thd->db=dbname; // THD::~THD will free this - thd->db_length=db_length; + if (dbname && dbname[0] == 0) + { + x_free(dbname); + thd->db= NULL; + thd->db_length= 0; + } + else + { + thd->db= dbname; // THD::~THD will free this + thd->db_length= db_length; + } #ifndef NO_EMBEDDED_ACCESS_CHECKS if (!no_access_check) sctx->db_access= db_access; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index e196a84d134..c19d54feda5 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -4099,7 +4099,7 @@ end_with_restore_list: if (!lex->sphead->m_db.str || !lex->sphead->m_db.str[0]) { - if (! thd->db) + if (!thd->db) { my_message(ER_NO_DB_ERROR, ER(ER_NO_DB_ERROR), MYF(0)); delete lex->sphead; |