diff --git a/mysql-test/r/ndb_dd_basic.result b/mysql-test/r/ndb_dd_basic.result index 724b42b6db3..014858e6856 100644 --- a/mysql-test/r/ndb_dd_basic.result +++ b/mysql-test/r/ndb_dd_basic.result @@ -11,7 +11,7 @@ ADD UNDOFILE 'undofile02.dat' INITIAL_SIZE = 4M ENGINE=XYZ; Warnings: -Error 1286 Unknown table engine 'XYZ' +Warning 1286 Unknown table engine 'XYZ' Error 1466 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP' CREATE TABLESPACE ts1 ADD DATAFILE 'datafile.dat' diff --git a/mysql-test/r/partition_innodb.result b/mysql-test/r/partition_innodb.result index 8619d0909ee..4449d105db0 100644 --- a/mysql-test/r/partition_innodb.result +++ b/mysql-test/r/partition_innodb.result @@ -54,7 +54,7 @@ create table t1 (a int) engine = x partition by key (a); Warnings: -Error 1286 Unknown table engine 'x' +Warning 1286 Unknown table engine 'x' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -67,7 +67,7 @@ partition by list (a) (partition p0 values in (0)); alter table t1 engine = x; Warnings: -Error 1286 Unknown table engine 'x' +Warning 1286 Unknown table engine 'x' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( diff --git a/mysql-test/r/ps_1general.result b/mysql-test/r/ps_1general.result index 762ceeaa03b..391d22d232b 100644 --- a/mysql-test/r/ps_1general.result +++ b/mysql-test/r/ps_1general.result @@ -304,7 +304,9 @@ execute stmt4; Variable_name Value sql_mode prepare stmt4 from ' show engine bdb logs '; -execute stmt4; +ERROR 42000: Unknown table engine 'bdb' +prepare stmt4 from ' show engine foo logs '; +ERROR 42000: Unknown table engine 'foo' prepare stmt4 from ' show grants for user '; prepare stmt4 from ' show create table t2 '; prepare stmt4 from ' show master status '; diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result index 516355839b5..986fe32ff98 100644 --- a/mysql-test/r/show_check.result +++ b/mysql-test/r/show_check.result @@ -730,4 +730,18 @@ show keys from `mysqlttest\1`.`a\b`; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment drop table `mysqlttest\1`.`a\b`; drop database `mysqlttest\1`; +show engine foobar status; +ERROR 42000: Unknown table engine 'foobar' +show engine foobar logs; +ERROR 42000: Unknown table engine 'foobar' +show engine foobar mutex; +ERROR 42000: Unknown table engine 'foobar' +show engine mutex status; +ERROR 42000: Unknown table engine 'mutex' +show engine csv status; +Type Name Status +show engine csv logs; +Type Name Status +show engine csv mutex; +Type Name Status End of 5.1 tests diff --git a/mysql-test/t/ps_1general.test b/mysql-test/t/ps_1general.test index dd70f7edfa7..5b0118ced49 100644 --- a/mysql-test/t/ps_1general.test +++ b/mysql-test/t/ps_1general.test @@ -321,14 +321,10 @@ prepare stmt4 from ' show status like ''Threads_running'' '; execute stmt4; prepare stmt4 from ' show variables like ''sql_mode'' '; execute stmt4; -# The output depends on the bdb being enabled and on the history -# history (actions of the bdb engine). -# That is the reason why, we switch the output here off. -# (The real output will be tested in ps_6bdb.test) ---disable_result_log +--error ER_UNKNOWN_STORAGE_ENGINE prepare stmt4 from ' show engine bdb logs '; -execute stmt4; ---enable_result_log +--error ER_UNKNOWN_STORAGE_ENGINE +prepare stmt4 from ' show engine foo logs '; prepare stmt4 from ' show grants for user '; prepare stmt4 from ' show create table t2 '; prepare stmt4 from ' show master status '; diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test index be803a74c7b..198e676065d 100644 --- a/mysql-test/t/show_check.test +++ b/mysql-test/t/show_check.test @@ -563,4 +563,22 @@ show keys from `mysqlttest\1`.`a\b`; drop table `mysqlttest\1`.`a\b`; drop database `mysqlttest\1`; +# +# Bug#24392: SHOW ENGINE MUTEX STATUS is a synonym for SHOW INNODB STATUS +# + +--error ER_UNKNOWN_STORAGE_ENGINE +show engine foobar status; +--error ER_UNKNOWN_STORAGE_ENGINE +show engine foobar logs; +--error ER_UNKNOWN_STORAGE_ENGINE +show engine foobar mutex; + +--error ER_UNKNOWN_STORAGE_ENGINE +show engine mutex status; + +show engine csv status; +show engine csv logs; +show engine csv mutex; + --echo End of 5.1 tests diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 3755f6d3b67..6ec460be7d0 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -1021,7 +1021,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); %type interval_time_st -%type storage_engines +%type storage_engines known_storage_engines %type row_types @@ -4228,19 +4228,31 @@ default_collation: Lex->create_info.used_fields|= HA_CREATE_USED_DEFAULT_CHARSET; }; +known_storage_engines: + ident_or_text + { + $$ = ha_resolve_by_name(YYTHD, &$1); + if ($$ == NULL) + { + my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), $1.str); + YYABORT; + } + } + ; + storage_engines: ident_or_text { $$ = ha_resolve_by_name(YYTHD, &$1); if ($$ == NULL) - if (YYTHD->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION) - { - my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), $1.str); - YYABORT; - } - else { - push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_ERROR, + if (YYTHD->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION) + { + my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), $1.str); + YYABORT; + } + + push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN, ER_UNKNOWN_STORAGE_ENGINE, ER(ER_UNKNOWN_STORAGE_ENGINE), $1.str); } @@ -8433,12 +8445,10 @@ show_param: if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS)) YYABORT; } - | ENGINE_SYM storage_engines + | ENGINE_SYM known_storage_engines show_engine_param { Lex->create_info.db_type= $2; } - show_engine_param - | ENGINE_SYM ALL + | ENGINE_SYM ALL show_engine_param { Lex->create_info.db_type= NULL; } - show_engine_param | opt_full COLUMNS from_or_in table_ident opt_db wild_and_where { LEX *lex= Lex;