Fix for bug #7210: information_schema: can't access when table-name = reserved word

parent 0cca5405
...@@ -590,6 +590,23 @@ TABLES ...@@ -590,6 +590,23 @@ TABLES
TABLE_PRIVILEGES TABLE_PRIVILEGES
TABLE_CONSTRAINTS TABLE_CONSTRAINTS
TABLE_NAMES TABLE_NAMES
select table_name from tables where table_name='user';
table_name
user
select column_name, privileges from columns
where table_name='user' and column_name like '%o%';
column_name privileges
Host select,insert,update,references
Password select,insert,update,references
Drop_priv select,insert,update,references
Reload_priv select,insert,update,references
Shutdown_priv select,insert,update,references
Process_priv select,insert,update,references
Show_db_priv select,insert,update,references
Lock_tables_priv select,insert,update,references
Show_view_priv select,insert,update,references
max_questions select,insert,update,references
max_connections select,insert,update,references
use test; use test;
create function sub1(i int) returns int create function sub1(i int) returns int
return i+1; return i+1;
......
...@@ -293,6 +293,13 @@ show tables; ...@@ -293,6 +293,13 @@ show tables;
use information_schema; use information_schema;
show tables like "T%"; show tables like "T%";
#
# Bug#7210: information_schema: can't access when table-name = reserved word
#
select table_name from tables where table_name='user';
select column_name, privileges from columns
where table_name='user' and column_name like '%o%';
# #
# Bug#7212: information_schema: "Can't find file" errors if storage engine gone # Bug#7212: information_schema: "Can't find file" errors if storage engine gone
# Bug#7211: information_schema: crash if bad view # Bug#7211: information_schema: crash if bad view
......
...@@ -1583,6 +1583,15 @@ bool dispatch_command(enum enum_server_command command, THD *thd, ...@@ -1583,6 +1583,15 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
packet, (uint) (pend-packet), thd->charset()); packet, (uint) (pend-packet), thd->charset());
table_list.alias= table_list.real_name= conv_name.str; table_list.alias= table_list.real_name= conv_name.str;
packet= pend+1; 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 */ /* command not cachable => no gap for data base name */
if (!(thd->query=fields=thd->memdup(packet,thd->query_length+1))) if (!(thd->query=fields=thd->memdup(packet,thd->query_length+1)))
break; break;
......
...@@ -6885,6 +6885,7 @@ keyword: ...@@ -6885,6 +6885,7 @@ keyword:
| CLIENT_SYM {} | CLIENT_SYM {}
| CLOSE_SYM {} | CLOSE_SYM {}
| COLLATION_SYM {} | COLLATION_SYM {}
| COLUMNS {}
| COMMENT_SYM {} | COMMENT_SYM {}
| COMMITTED_SYM {} | COMMITTED_SYM {}
| COMMIT_SYM {} | COMMIT_SYM {}
...@@ -7006,6 +7007,7 @@ keyword: ...@@ -7006,6 +7007,7 @@ keyword:
| POLYGON {} | POLYGON {}
| PREPARE_SYM {} | PREPARE_SYM {}
| PREV_SYM {} | PREV_SYM {}
| PRIVILEGES {}
| PROCESS {} | PROCESS {}
| PROCESSLIST_SYM {} | PROCESSLIST_SYM {}
| QUARTER_SYM {} | QUARTER_SYM {}
...@@ -7057,6 +7059,7 @@ keyword: ...@@ -7057,6 +7059,7 @@ keyword:
| SUBDATE_SYM {} | SUBDATE_SYM {}
| SUBJECT_SYM {} | SUBJECT_SYM {}
| SUPER_SYM {} | SUPER_SYM {}
| TABLES {}
| TABLESPACE {} | TABLESPACE {}
| TEMPORARY {} | TEMPORARY {}
| TEMPTABLE_SYM {} | TEMPTABLE_SYM {}
......
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