Bug#31662: 'null' is shown as type of fields for view with bad definer, breaks mysqldump

SHOW FIELDS FROM a view with no valid definer was possible (since fix
for Bug#26817), but gave NULL as a field-type. This led to mysqldump-ing
of such views being successful, but loading such a dump with the client
failing. Patch allows SHOW FIELDS to give data-type of field in underlying
table.
parent 5b67dca4
...@@ -130,7 +130,7 @@ Warnings: ...@@ -130,7 +130,7 @@ Warnings:
Warning 1356 View 'testdb_1.v7' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them Warning 1356 View 'testdb_1.v7' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
show fields from testdb_1.v7; show fields from testdb_1.v7;
Field Type Null Key Default Extra Field Type Null Key Default Extra
f1 null YES NULL f1 char(4) YES NULL
Warnings: Warnings:
Note 1449 There is no 'no_such_user'@'no_such_host' registered Note 1449 There is no 'no_such_user'@'no_such_host' registered
create table t3 (f1 char(4), f2 char(4)); create table t3 (f1 char(4), f2 char(4));
...@@ -150,7 +150,7 @@ View Create View ...@@ -150,7 +150,7 @@ View Create View
v6 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `testdb_1`.`v6` AS select `testdb_1`.`t1`.`f1` AS `f1` from `testdb_1`.`t1` v6 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `testdb_1`.`v6` AS select `testdb_1`.`t1`.`f1` AS `f1` from `testdb_1`.`t1`
show fields from testdb_1.v7; show fields from testdb_1.v7;
Field Type Null Key Default Extra Field Type Null Key Default Extra
f1 null YES NULL f1 char(4) YES NULL
Warnings: Warnings:
Note 1449 There is no 'no_such_user'@'no_such_host' registered Note 1449 There is no 'no_such_user'@'no_such_host' registered
show create view testdb_1.v7; show create view testdb_1.v7;
...@@ -178,7 +178,7 @@ show create view v4; ...@@ -178,7 +178,7 @@ show create view v4;
ERROR HY000: EXPLAIN/SHOW can not be issued; lacking privileges for underlying table ERROR HY000: EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
show fields from v4; show fields from v4;
Field Type Null Key Default Extra Field Type Null Key Default Extra
f1 null YES NULL f1 char(4) YES NULL
f2 char(4) YES NULL f2 char(4) YES NULL
show fields from v2; show fields from v2;
Field Type Null Key Default Extra Field Type Null Key Default Extra
......
...@@ -3958,7 +3958,9 @@ find_field_in_tables(THD *thd, Item_ident *item, ...@@ -3958,7 +3958,9 @@ find_field_in_tables(THD *thd, Item_ident *item,
{ {
Field *cur_field= find_field_in_table_ref(thd, cur_table, name, length, Field *cur_field= find_field_in_table_ref(thd, cur_table, name, length,
item->name, db, table_name, ref, item->name, db, table_name, ref,
check_privileges, (thd->lex->sql_command ==
SQLCOM_SHOW_FIELDS)
? false : check_privileges,
allow_rowid, allow_rowid,
&(item->cached_field_index), &(item->cached_field_index),
register_tree_change, register_tree_change,
......
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