Commit 67c96c78 authored by unknown's avatar unknown

This patch does the following:

1) Fixes breakage in embedded server build for XMLPath push.
2) Hides PARTITION engine from view.
3) Add ENGINES information schema (and it should now be clear from this patch on how to turn any show command into an information schema).


libmysqld/Makefile.am:
  Fix for embedded server to build.
mysql-test/r/information_schema.result:
  Fix for additional information_schema
mysql-test/r/information_schema_db.result:
  Fix for adding additional engines information schema.
mysql-test/t/information_schema.test:
  Added test to make sure that engines information schema works.
sql/ha_partition.cc:
  Made PARTITION hidden in information schema.
sql/sql_parse.cc:
  Added additional case for engine information schema.
sql/sql_show.cc:
  Code for ENGINES information schema.
sql/sql_yacc.yy:
  Extended grammer to support new ENGINES information schema
sql/table.h:
  Comment on dependency in information schema.
libmysqld/item_xmlfunc.cc:
  New BitKeeper file ``libmysqld/item_xmlfunc.cc''
parent ec6121fb
...@@ -64,6 +64,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \ ...@@ -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 \ 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 \ 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 \ 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 rpl_filter.cc sql_partition.cc handlerton.cc sql_plugin.cc
libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources)
......
...@@ -41,6 +41,7 @@ COLLATIONS ...@@ -41,6 +41,7 @@ COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS COLUMNS
COLUMN_PRIVILEGES COLUMN_PRIVILEGES
ENGINES
KEY_COLUMN_USAGE KEY_COLUMN_USAGE
ROUTINES ROUTINES
SCHEMATA SCHEMATA
...@@ -723,7 +724,7 @@ CREATE TABLE t_crashme ( f1 BIGINT); ...@@ -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 a1 (t_CRASHME) AS SELECT f1 FROM t_crashme GROUP BY f1;
CREATE VIEW a2 AS SELECT t_CRASHME FROM a1; CREATE VIEW a2 AS SELECT t_CRASHME FROM a1;
count(*) count(*)
102 103
drop view a2, a1; drop view a2, a1;
drop table t_crashme; drop table t_crashme;
select table_schema,table_name, column_name from select table_schema,table_name, column_name from
...@@ -793,7 +794,7 @@ delete from mysql.db where user='mysqltest_4'; ...@@ -793,7 +794,7 @@ delete from mysql.db where user='mysqltest_4';
flush privileges; flush privileges;
SELECT table_schema, count(*) FROM information_schema.TABLES GROUP BY TABLE_SCHEMA; SELECT table_schema, count(*) FROM information_schema.TABLES GROUP BY TABLE_SCHEMA;
table_schema count(*) table_schema count(*)
information_schema 16 information_schema 17
mysql 18 mysql 18
create table t1 (i int, j int); create table t1 (i int, j int);
create trigger trg1 before insert on t1 for each row create trigger trg1 before insert on t1 for each row
...@@ -1056,3 +1057,6 @@ where table_name="v1"; ...@@ -1056,3 +1057,6 @@ where table_name="v1";
table_type table_type
VIEW VIEW
drop view v1; 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
...@@ -6,6 +6,7 @@ COLLATIONS ...@@ -6,6 +6,7 @@ COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS COLUMNS
COLUMN_PRIVILEGES COLUMN_PRIVILEGES
ENGINES
KEY_COLUMN_USAGE KEY_COLUMN_USAGE
ROUTINES ROUTINES
SCHEMATA SCHEMATA
......
...@@ -748,3 +748,9 @@ drop table t1; ...@@ -748,3 +748,9 @@ drop table t1;
select table_type from information_schema.tables select table_type from information_schema.tables
where table_name="v1"; where table_name="v1";
drop view v1; drop view v1;
#
# Show engines
#
select * from information_schema.engines WHERE ENGINE="MyISAM";
...@@ -98,7 +98,7 @@ handlerton partition_hton = { ...@@ -98,7 +98,7 @@ handlerton partition_hton = {
NULL, /* Flush logs */ NULL, /* Flush logs */
NULL, /* Show status */ NULL, /* Show status */
NULL, /* Replication Report Sent Binlog */ NULL, /* Replication Report Sent Binlog */
HTON_NOT_USER_SELECTABLE HTON_NOT_USER_SELECTABLE | HTON_HIDDEN
}; };
static handler *partition_create_handler(TABLE_SHARE *share) static handler *partition_create_handler(TABLE_SHARE *share)
......
...@@ -2229,6 +2229,7 @@ int prepare_schema_table(THD *thd, LEX *lex, Table_ident *table_ident, ...@@ -2229,6 +2229,7 @@ int prepare_schema_table(THD *thd, LEX *lex, Table_ident *table_ident,
case SCH_STATUS: case SCH_STATUS:
case SCH_PROCEDURES: case SCH_PROCEDURES:
case SCH_CHARSETS: case SCH_CHARSETS:
case SCH_ENGINES:
case SCH_COLLATIONS: case SCH_COLLATIONS:
case SCH_COLLATION_CHARACTER_SET_APPLICABILITY: case SCH_COLLATION_CHARACTER_SET_APPLICABILITY:
case SCH_USER_PRIVILEGES: case SCH_USER_PRIVILEGES:
......
...@@ -2767,6 +2767,46 @@ int fill_schema_charsets(THD *thd, TABLE_LIST *tables, COND *cond) ...@@ -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) int fill_schema_collation(THD *thd, TABLE_LIST *tables, COND *cond)
{ {
CHARSET_INFO **cs; CHARSET_INFO **cs;
...@@ -3821,6 +3861,7 @@ int make_schema_select(THD *thd, SELECT_LEX *sel, ...@@ -3821,6 +3861,7 @@ int make_schema_select(THD *thd, SELECT_LEX *sel,
ST_SCHEMA_TABLE *schema_table= get_schema_table(schema_table_idx); ST_SCHEMA_TABLE *schema_table= get_schema_table(schema_table_idx);
LEX_STRING db, table; LEX_STRING db, table;
DBUG_ENTER("mysql_schema_select"); 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 We have to make non const db_name & table_name
because of lower_case_table_names because of lower_case_table_names
...@@ -3974,6 +4015,18 @@ ST_FIELD_INFO collation_fields_info[]= ...@@ -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[]= ST_FIELD_INFO coll_charset_app_fields_info[]=
{ {
{"COLLATION_NAME", 64, MYSQL_TYPE_STRING, 0, 0, 0}, {"COLLATION_NAME", 64, MYSQL_TYPE_STRING, 0, 0, 0},
...@@ -4174,6 +4227,9 @@ ST_FIELD_INFO variables_fields_info[]= ...@@ -4174,6 +4227,9 @@ ST_FIELD_INFO variables_fields_info[]=
/* /*
Description of ST_FIELD_INFO in table.h 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[]= ST_SCHEMA_TABLE schema_tables[]=
...@@ -4188,6 +4244,8 @@ 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}, get_all_tables, make_columns_old_format, get_schema_column_record, 1, 2, 0},
{"COLUMN_PRIVILEGES", column_privileges_fields_info, create_schema_table, {"COLUMN_PRIVILEGES", column_privileges_fields_info, create_schema_table,
fill_schema_column_privileges, 0, 0, -1, -1, 0}, 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, {"KEY_COLUMN_USAGE", key_column_usage_fields_info, create_schema_table,
get_all_tables, 0, get_schema_key_column_usage_record, 4, 5, 0}, get_all_tables, 0, get_schema_key_column_usage_record, 4, 5, 0},
{"OPEN_TABLES", open_tables_fields_info, create_schema_table, {"OPEN_TABLES", open_tables_fields_info, create_schema_table,
......
...@@ -7098,6 +7098,9 @@ show_param: ...@@ -7098,6 +7098,9 @@ show_param:
{ {
LEX *lex=Lex; LEX *lex=Lex;
lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES; 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 | AUTHORS_SYM
{ {
......
...@@ -314,6 +314,9 @@ typedef struct st_foreign_key_info ...@@ -314,6 +314,9 @@ typedef struct st_foreign_key_info
List<LEX_STRING> referenced_fields; List<LEX_STRING> referenced_fields;
} FOREIGN_KEY_INFO; } FOREIGN_KEY_INFO;
/*
Make sure that the order of schema_tables and enum_schema_tables are the same.
*/
enum enum_schema_tables enum enum_schema_tables
{ {
...@@ -322,6 +325,7 @@ enum enum_schema_tables ...@@ -322,6 +325,7 @@ enum enum_schema_tables
SCH_COLLATION_CHARACTER_SET_APPLICABILITY, SCH_COLLATION_CHARACTER_SET_APPLICABILITY,
SCH_COLUMNS, SCH_COLUMNS,
SCH_COLUMN_PRIVILEGES, SCH_COLUMN_PRIVILEGES,
SCH_ENGINES,
SCH_KEY_COLUMN_USAGE, SCH_KEY_COLUMN_USAGE,
SCH_OPEN_TABLES, SCH_OPEN_TABLES,
SCH_PROCEDURES, SCH_PROCEDURES,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment