summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <gluh@gluh.mysql.r18.ru>2004-12-18 12:48:01 +0300
committerunknown <gluh@gluh.mysql.r18.ru>2004-12-18 12:48:01 +0300
commitfb8758d654d36d3c26b830dbcdbb11f904bc2d74 (patch)
tree3eb611f17e16297e0b147a9c47be999f9a3e1049 /sql
parent491baa972a2a2f373ae4dd3a1de2470169527326 (diff)
downloadmariadb-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.cc9
-rw-r--r--sql/sql_yacc.yy3
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 {}