Commit 186e3ee5 authored by unknown's avatar unknown
Browse files

Bug#24392 (SHOW ENGINE MUTEX STATUS is a synonym for SHOW INNODB STATUS)

Before this fix, the command SHOW ENGINE <name> STATUS would:
- print a warning if the engine name is unknown,
- proceed and implement the same behavior as SHOW ENGINE ALL STATUS,
and list the status of all the storage engines registered.

In particular, this behavior caused confusion about the command :
SHOW ENGINE MUTEX STATUS, which as a side effect would print the status
of the innodb engine when that engine is registered.

Also, before this fix, every time an unknown engine name was substituted by
the default engine (which happen unless SQL_MODE NO_ENGINE_SUBSTITUTION is
set), a malformed warning was raised.
For example, the command ALTER TABLE T1 ENGINE = X would print :
Warnings:
Error 1286 Unknown table engine 'X'

With this fix:
SHOW ENGINE <name> STATUS|LOGS|MUTEX
always fails with an error when the engine <name> is unknown.

For other commands, warnings about unknown engines are raised as:
Warnings:
Warning 1286 Unknown table engine 'X'

In other words, engine substitution never affect the SHOW ENGINE command,
since this would lead to very confusing results.


mysql-test/r/ndb_dd_basic.result:
  Warnings for unknown engines.
mysql-test/r/partition_innodb.result:
  Warnings for unknown engines.
mysql-test/r/ps_1general.result:
  Fixed SHOW ENGINE <name> STATUS|LOGS|MUTEX
mysql-test/r/show_check.result:
  Fixed SHOW ENGINE <name> STATUS|LOGS|MUTEX
mysql-test/t/ps_1general.test:
  Fixed SHOW ENGINE <name> STATUS|LOGS|MUTEX
mysql-test/t/show_check.test:
  Fixed SHOW ENGINE <name> STATUS|LOGS|MUTEX
sql/sql_yacc.yy:
  Fixed SHOW ENGINE <name> STATUS|LOGS|MUTEX
parent a361cf1b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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'
+2 −2
Original line number Diff line number Diff line
@@ -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` (
+3 −1
Original line number Diff line number Diff line
@@ -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 ';
+14 −0
Original line number Diff line number Diff line
@@ -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
+3 −7
Original line number Diff line number Diff line
@@ -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 ';
Loading