From 7370b241a1bcd81fa24e793c30df5e09923e071a Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 17 Aug 2005 17:51:10 +0200 Subject: [PATCH] fix for bug #12591 (SHOW TABLES FROM dbname produces wrong error message) mysql-test/r/show_check.result: results for test for bug #12591 mysql-test/t/show_check.test: test for bug #12591 sql/sql_show.cc: don't let my_dir() emit a message bug catch the errno (my_errno - a thread specific variable) and check it for ENOENT - not existing. For other errors emulate the message used to be emitted by my_dir() --- mysql-test/r/show_check.result | 2 ++ mysql-test/t/show_check.test | 5 +++++ sql/sql_show.cc | 8 +++++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result index 94d1ac7ac11..c143c7f0f29 100644 --- a/mysql-test/r/show_check.result +++ b/mysql-test/r/show_check.result @@ -555,3 +555,5 @@ Database Table In_use Name_locked DROP TABLE txt1; DROP TABLE tyt2; DROP TABLE urkunde; +SHOW TABLES FROM non_existing_database; +ERROR 42000: Unknown database 'non_existing_database' diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test index 41b8a9e401c..b9fc991dc80 100644 --- a/mysql-test/t/show_check.test +++ b/mysql-test/t/show_check.test @@ -405,3 +405,8 @@ SHOW OPEN TABLES; DROP TABLE txt1; DROP TABLE tyt2; DROP TABLE urkunde; +# +# BUG #12591 (SHOW TABLES FROM dbname produces wrong error message) +# +--error 1049 +SHOW TABLES FROM non_existing_database; diff --git a/sql/sql_show.cc b/sql/sql_show.cc index e1d5f80ebc2..1c6d86793e6 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -264,8 +264,14 @@ mysql_find_files(THD *thd,List *files, const char *db,const char *path, bzero((char*) &table_list,sizeof(table_list)); - if (!(dirp = my_dir(path,MYF(MY_WME | (dir ? MY_WANT_STAT : 0))))) + if (!(dirp = my_dir(path,MYF(dir ? MY_WANT_STAT : 0)))) + { + if (my_errno == ENOENT) + my_error(ER_BAD_DB_ERROR, MYF(ME_BELL+ME_WAITTANG), db); + else + my_error(ER_CANT_READ_DIR, MYF(ME_BELL+ME_WAITTANG), path, my_errno); DBUG_RETURN(-1); + } for (i=0 ; i < (uint) dirp->number_off_files ; i++) {