diff options
-rw-r--r-- | libmysqld/Makefile.am | 1 | ||||
-rw-r--r-- | mysql-test/r/information_schema.result | 8 | ||||
-rw-r--r-- | mysql-test/r/information_schema_db.result | 1 | ||||
-rw-r--r-- | mysql-test/t/information_schema.test | 6 | ||||
-rw-r--r-- | sql/ha_partition.cc | 2 | ||||
-rw-r--r-- | sql/sql_parse.cc | 1 | ||||
-rw-r--r-- | sql/sql_show.cc | 58 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 3 | ||||
-rw-r--r-- | sql/table.h | 4 |
9 files changed, 81 insertions, 3 deletions
diff --git a/libmysqld/Makefile.am b/libmysqld/Makefile.am index 12531a553eb..fb34b3a2bca 100644 --- a/libmysqld/Makefile.am +++ b/libmysqld/Makefile.am @@ -64,6 +64,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \ spatial.cc gstream.cc sql_help.cc tztime.cc sql_cursor.cc \ sp_head.cc sp_pcontext.cc sp.cc sp_cache.cc sp_rcontext.cc \ parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc \ + item_xmlfunc.cc \ rpl_filter.cc sql_partition.cc handlerton.cc sql_plugin.cc libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index c7c3de9451a..d1901b725a1 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -41,6 +41,7 @@ COLLATIONS COLLATION_CHARACTER_SET_APPLICABILITY COLUMNS COLUMN_PRIVILEGES +ENGINES KEY_COLUMN_USAGE ROUTINES SCHEMATA @@ -723,7 +724,7 @@ CREATE TABLE t_crashme ( f1 BIGINT); CREATE VIEW a1 (t_CRASHME) AS SELECT f1 FROM t_crashme GROUP BY f1; CREATE VIEW a2 AS SELECT t_CRASHME FROM a1; count(*) -102 +103 drop view a2, a1; drop table t_crashme; select table_schema,table_name, column_name from @@ -793,7 +794,7 @@ delete from mysql.db where user='mysqltest_4'; flush privileges; SELECT table_schema, count(*) FROM information_schema.TABLES GROUP BY TABLE_SCHEMA; table_schema count(*) -information_schema 16 +information_schema 17 mysql 18 create table t1 (i int, j int); create trigger trg1 before insert on t1 for each row @@ -1056,3 +1057,6 @@ where table_name="v1"; table_type VIEW drop view v1; +select * from information_schema.engines WHERE ENGINE="MyISAM"; +ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS +MyISAM ENABLED Default engine as of MySQL 3.23 with great performance NO NO NO diff --git a/mysql-test/r/information_schema_db.result b/mysql-test/r/information_schema_db.result index d3ff310b812..a3cf0840903 100644 --- a/mysql-test/r/information_schema_db.result +++ b/mysql-test/r/information_schema_db.result @@ -6,6 +6,7 @@ COLLATIONS COLLATION_CHARACTER_SET_APPLICABILITY COLUMNS COLUMN_PRIVILEGES +ENGINES KEY_COLUMN_USAGE ROUTINES SCHEMATA diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index acbc62f1364..1f4933c9bb4 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -748,3 +748,9 @@ drop table t1; select table_type from information_schema.tables where table_name="v1"; drop view v1; + +# +# Show engines +# + +select * from information_schema.engines WHERE ENGINE="MyISAM"; diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index b0b4ac3fdcd..c2d8dfaa7b8 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -98,7 +98,7 @@ handlerton partition_hton = { NULL, /* Flush logs */ NULL, /* Show status */ NULL, /* Replication Report Sent Binlog */ - HTON_NOT_USER_SELECTABLE + HTON_NOT_USER_SELECTABLE | HTON_HIDDEN }; static handler *partition_create_handler(TABLE_SHARE *share) diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 986e87c7d01..19f15ab8151 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2229,6 +2229,7 @@ int prepare_schema_table(THD *thd, LEX *lex, Table_ident *table_ident, case SCH_STATUS: case SCH_PROCEDURES: case SCH_CHARSETS: + case SCH_ENGINES: case SCH_COLLATIONS: case SCH_COLLATION_CHARACTER_SET_APPLICABILITY: case SCH_USER_PRIVILEGES: diff --git a/sql/sql_show.cc b/sql/sql_show.cc index badc15f2ab5..0cb6215c57b 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2767,6 +2767,46 @@ int fill_schema_charsets(THD *thd, TABLE_LIST *tables, COND *cond) } +int fill_schema_engines(THD *thd, TABLE_LIST *tables, COND *cond) +{ + const char *wild= thd->lex->wild ? thd->lex->wild->ptr() : NullS; + TABLE *table= tables->table; + CHARSET_INFO *scs= system_charset_info; + handlerton **types; + + DBUG_ENTER("fill_schema_engines"); + + for (types= sys_table_types; *types; types++) + { + if ((*types)->flags & HTON_HIDDEN) + continue; + + if (!(wild && wild[0] && + wild_case_compare(scs, (*types)->name,wild))) + { + const char *tmp; + restore_record(table, s->default_values); + + table->field[0]->store((*types)->name, strlen((*types)->name), scs); + tmp= (*types)->state ? "DISABLED" : "ENABLED"; + table->field[1]->store( tmp, strlen(tmp), scs); + table->field[2]->store((*types)->comment, strlen((*types)->comment), scs); + tmp= (*types)->commit ? "YES" : "NO"; + table->field[3]->store( tmp, strlen(tmp), scs); + tmp= (*types)->prepare ? "YES" : "NO"; + table->field[4]->store( tmp, strlen(tmp), scs); + tmp= (*types)->savepoint_set ? "YES" : "NO"; + table->field[5]->store( tmp, strlen(tmp), scs); + + if (schema_table_store_record(thd, table)) + DBUG_RETURN(1); + } + } + + DBUG_RETURN(0); +} + + int fill_schema_collation(THD *thd, TABLE_LIST *tables, COND *cond) { CHARSET_INFO **cs; @@ -3821,6 +3861,7 @@ int make_schema_select(THD *thd, SELECT_LEX *sel, ST_SCHEMA_TABLE *schema_table= get_schema_table(schema_table_idx); LEX_STRING db, table; DBUG_ENTER("mysql_schema_select"); + DBUG_PRINT("enter", ("mysql_schema_select: %s", schema_table->table_name)); /* We have to make non const db_name & table_name because of lower_case_table_names @@ -3974,6 +4015,18 @@ ST_FIELD_INFO collation_fields_info[]= }; +ST_FIELD_INFO engines_fields_info[]= +{ + {"ENGINE", 64, MYSQL_TYPE_STRING, 0, 0, "Engine"}, + {"SUPPORT", 8, MYSQL_TYPE_STRING, 0, 0, "Support"}, + {"COMMENT", 80, MYSQL_TYPE_STRING, 0, 0, "Comment"}, + {"TRANSACTIONS", 3, MYSQL_TYPE_STRING, 0, 0, "Transactions"}, + {"XA", 3, MYSQL_TYPE_STRING, 0, 0, "XA"}, + {"SAVEPOINTS", 3 ,MYSQL_TYPE_STRING, 0, 0, "Savepoints"}, + {0, 0, MYSQL_TYPE_STRING, 0, 0, 0} +}; + + ST_FIELD_INFO coll_charset_app_fields_info[]= { {"COLLATION_NAME", 64, MYSQL_TYPE_STRING, 0, 0, 0}, @@ -4174,6 +4227,9 @@ ST_FIELD_INFO variables_fields_info[]= /* Description of ST_FIELD_INFO in table.h + + Make sure that the order of schema_tables and enum_schema_tables are the same. + */ ST_SCHEMA_TABLE schema_tables[]= @@ -4188,6 +4244,8 @@ ST_SCHEMA_TABLE schema_tables[]= get_all_tables, make_columns_old_format, get_schema_column_record, 1, 2, 0}, {"COLUMN_PRIVILEGES", column_privileges_fields_info, create_schema_table, fill_schema_column_privileges, 0, 0, -1, -1, 0}, + {"ENGINES", engines_fields_info, create_schema_table, + fill_schema_engines, make_old_format, 0, -1, -1, 0}, {"KEY_COLUMN_USAGE", key_column_usage_fields_info, create_schema_table, get_all_tables, 0, get_schema_key_column_usage_record, 4, 5, 0}, {"OPEN_TABLES", open_tables_fields_info, create_schema_table, diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 01dfd9f2f5a..dc7e8628dc3 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -7098,6 +7098,9 @@ show_param: { LEX *lex=Lex; lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES; + lex->orig_sql_command= SQLCOM_SHOW_AUTHORS; + if (prepare_schema_table(YYTHD, lex, 0, SCH_ENGINES)) + YYABORT; } | AUTHORS_SYM { diff --git a/sql/table.h b/sql/table.h index c4e99ed2a0d..93f8e2942bc 100644 --- a/sql/table.h +++ b/sql/table.h @@ -314,6 +314,9 @@ typedef struct st_foreign_key_info List<LEX_STRING> referenced_fields; } FOREIGN_KEY_INFO; +/* + Make sure that the order of schema_tables and enum_schema_tables are the same. +*/ enum enum_schema_tables { @@ -322,6 +325,7 @@ enum enum_schema_tables SCH_COLLATION_CHARACTER_SET_APPLICABILITY, SCH_COLUMNS, SCH_COLUMN_PRIVILEGES, + SCH_ENGINES, SCH_KEY_COLUMN_USAGE, SCH_OPEN_TABLES, SCH_PROCEDURES, |