summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <SergeyV@selena.>2005-11-14 17:42:14 +0300
committerunknown <SergeyV@selena.>2005-11-14 17:42:14 +0300
commit14637f97cdd7ff4a7d60c09052e2e280ee57c957 (patch)
tree3242a90aa4f84b86958e1a32054f6e9de61afc22
parentbfef85a188194e865a534a2dc6e095414e14e2d8 (diff)
parent1c677f8c559f244b72ff4f6f1c7528889af05f45 (diff)
downloadmariadb-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.result13
-rw-r--r--mysql-test/t/sp-error.test16
-rw-r--r--sql/sql_db.cc13
-rw-r--r--sql/sql_parse.cc2
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;