diff options
author | unknown <gluh@gluh.mysql.r18.ru> | 2004-12-18 12:48:01 +0300 |
---|---|---|
committer | unknown <gluh@gluh.mysql.r18.ru> | 2004-12-18 12:48:01 +0300 |
commit | fb8758d654d36d3c26b830dbcdbb11f904bc2d74 (patch) | |
tree | 3eb611f17e16297e0b147a9c47be999f9a3e1049 /sql | |
parent | 491baa972a2a2f373ae4dd3a1de2470169527326 (diff) | |
download | mariadb-git-fb8758d654d36d3c26b830dbcdbb11f904bc2d74.tar.gz |
Fix for bug #7210: information_schema: can't access when table-name = reserved word
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sql_parse.cc | 9 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 3 |
2 files changed, 12 insertions, 0 deletions
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 5720aac8dbd..3895102bf77 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1583,6 +1583,15 @@ bool dispatch_command(enum enum_server_command command, THD *thd, packet, (uint) (pend-packet), thd->charset()); table_list.alias= table_list.real_name= conv_name.str; packet= pend+1; + + if (!my_strcasecmp(system_charset_info, table_list.db, + information_schema_name.str)) + { + ST_SCHEMA_TABLE *schema_table= find_schema_table(thd, table_list.alias); + if (schema_table) + table_list.schema_table= schema_table; + } + /* command not cachable => no gap for data base name */ if (!(thd->query=fields=thd->memdup(packet,thd->query_length+1))) break; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 55a0f6ff692..98966374f2a 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -6885,6 +6885,7 @@ keyword: | CLIENT_SYM {} | CLOSE_SYM {} | COLLATION_SYM {} + | COLUMNS {} | COMMENT_SYM {} | COMMITTED_SYM {} | COMMIT_SYM {} @@ -7006,6 +7007,7 @@ keyword: | POLYGON {} | PREPARE_SYM {} | PREV_SYM {} + | PRIVILEGES {} | PROCESS {} | PROCESSLIST_SYM {} | QUARTER_SYM {} @@ -7057,6 +7059,7 @@ keyword: | SUBDATE_SYM {} | SUBJECT_SYM {} | SUPER_SYM {} + | TABLES {} | TABLESPACE {} | TEMPORARY {} | TEMPTABLE_SYM {} |