summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/warnings.result5
-rw-r--r--mysql-test/t/warnings.test7
-rw-r--r--sql/sql_table.cc2
-rw-r--r--tests/mysql_client_test.c2
4 files changed, 15 insertions, 1 deletions
diff --git a/mysql-test/r/warnings.result b/mysql-test/r/warnings.result
index 2e393aea9e4..8a87852d582 100644
--- a/mysql-test/r/warnings.result
+++ b/mysql-test/r/warnings.result
@@ -313,4 +313,9 @@ ERROR 22001: Data too long for column 'c_tinytext' at row 1
insert into t2 values(@q);
ERROR 22001: Data too long for column 'c_tinyblob' at row 1
drop table t1, t2;
+DROP TABLE t1;
+ERROR 42S02: Unknown table 't1'
+SHOW ERRORS;
+Level Code Message
+Error 1051 Unknown table 't1'
End of 5.0 tests
diff --git a/mysql-test/t/warnings.test b/mysql-test/t/warnings.test
index 12421170eba..176f320e390 100644
--- a/mysql-test/t/warnings.test
+++ b/mysql-test/t/warnings.test
@@ -225,4 +225,11 @@ insert into t2 values(@q);
drop table t1, t2;
+#
+# Bug#42364 SHOW ERRORS returns empty resultset after dropping non existent table
+#
+--error ER_BAD_TABLE_ERROR
+DROP TABLE t1;
+SHOW ERRORS;
+
--echo End of 5.0 tests
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index e752421223a..813a0472b76 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -1995,6 +1995,7 @@ int mysql_rm_table_part2(THD *thd, TABLE_LIST *tables, bool if_exists,
pthread_mutex_unlock(&LOCK_open);
thd->thread_specific_used|= tmp_table_deleted;
error= 0;
+ thd->no_warnings_for_error= 0;
if (wrong_tables.length())
{
if (!foreign_key_error)
@@ -2056,7 +2057,6 @@ int mysql_rm_table_part2(THD *thd, TABLE_LIST *tables, bool if_exists,
err_with_placeholders:
unlock_table_names(thd, tables, (TABLE_LIST*) 0);
pthread_mutex_unlock(&LOCK_open);
- thd->no_warnings_for_error= 0;
DBUG_RETURN(error);
}
diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c
index b836293442a..73d0ab6ce1e 100644
--- a/tests/mysql_client_test.c
+++ b/tests/mysql_client_test.c
@@ -4769,6 +4769,8 @@ static void test_errors()
result= mysql_store_result(mysql);
mytest(result);
+ DIE_UNLESS(mysql_num_rows(result) == 1);
+
(void) my_process_result_set(result);
mysql_free_result(result);
}