diff --git a/mysql-test/r/handler.result b/mysql-test/r/handler.result index dc3750e16ea..4906111982f 100644 --- a/mysql-test/r/handler.result +++ b/mysql-test/r/handler.result @@ -502,3 +502,7 @@ handler t1_alias READ a next where inexistent > 0; ERROR 42S22: Unknown column 'inexistent' in 'field list' handler t1_alias close; drop table t1; +USE information_schema; +HANDLER COLUMNS OPEN; +ERROR HY000: Incorrect usage of HANDLER OPEN and information_schema +USE test; diff --git a/mysql-test/t/handler.test b/mysql-test/t/handler.test index 6ef216f6ed2..70d4157a272 100644 --- a/mysql-test/t/handler.test +++ b/mysql-test/t/handler.test @@ -460,3 +460,11 @@ handler t1_alias read a next; handler t1_alias READ a next where inexistent > 0; handler t1_alias close; drop table t1; + +# +# Bug#44151 using handler commands on information_schema tables crashes server +# +USE information_schema; +--error ER_WRONG_USAGE +HANDLER COLUMNS OPEN; +USE test; diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index c376f1b3d1d..721b365a7b9 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -190,6 +190,14 @@ bool mysql_ha_open(THD *thd, TABLE_LIST *tables, bool reopen) tables->db, tables->table_name, tables->alias, (int) reopen)); + if (tables->schema_table) + { + my_error(ER_WRONG_USAGE, MYF(0), "HANDLER OPEN", + INFORMATION_SCHEMA_NAME.str); + DBUG_PRINT("exit",("ERROR")); + DBUG_RETURN(TRUE); + } + if (! hash_inited(&thd->handler_tables_hash)) { /*