diff options
-rw-r--r-- | mysql-test/r/warnings.result | 5 | ||||
-rw-r--r-- | mysql-test/t/warnings.test | 7 | ||||
-rw-r--r-- | sql/sql_table.cc | 2 | ||||
-rw-r--r-- | tests/mysql_client_test.c | 2 |
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); } |