Sophie

Sophie

distrib > Mandriva > 2007.0 > x86_64 > media > main-updates-src > by-pkgid > 5575eac4ce565ab6e7d565718d088911 > files > 1

mysql-5.0.45-8.1mdv2007.0.src.rpm

#! /bin/sh /usr/share/dpatch/dpatch-run
## 50_fix_mysqldump.dpatch by Norbert Tretkowski <nobse@debian.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: SHOW FIELDS FROM a view with no valid definer was possible (since fix
## DP: for Bug#26817), but gave NULL as a field-type. This led to mysqldump-ing
## DP: of such views being successful, but loading such a dump with the client
## DP: failing. Patch allows SHOW FIELDS to give data-type of field in underlying
## DP: table.

@DPATCH@
diff -Nrup a/mysql-test/r/information_schema_db.result b/mysql-test/r/information_schema_db.result
--- a/mysql-test/r/information_schema_db.result	2007-08-20 08:23:06 +02:00
+++ b/mysql-test/r/information_schema_db.result	2007-10-26 09:01:28 +02:00
@@ -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
 show fields from testdb_1.v7;
 Field	Type	Null	Key	Default	Extra
-f1	null	YES		NULL	
+f1	char(4)	YES		NULL	
 Warnings:
 Note	1449	There is no 'no_such_user'@'no_such_host' registered
 create table t3 (f1 char(4), f2 char(4));
@@ -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`
 show fields from testdb_1.v7;
 Field	Type	Null	Key	Default	Extra
-f1	null	YES		NULL	
+f1	char(4)	YES		NULL	
 Warnings:
 Note	1449	There is no 'no_such_user'@'no_such_host' registered
 show create view testdb_1.v7;
@@ -178,7 +178,7 @@ show create view v4;
 ERROR HY000: EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
 show fields from v4;
 Field	Type	Null	Key	Default	Extra
-f1	null	YES		NULL	
+f1	char(4)	YES		NULL	
 f2	char(4)	YES		NULL	
 show fields from v2;
 Field	Type	Null	Key	Default	Extra
diff -Nrup a/sql/sql_base.cc b/sql/sql_base.cc
--- a/sql/sql_base.cc	2007-09-27 11:17:13 +02:00
+++ b/sql/sql_base.cc	2007-10-26 09:01:28 +02:00
@@ -3958,7 +3958,9 @@ find_field_in_tables(THD *thd, Item_iden
   {
     Field *cur_field= find_field_in_table_ref(thd, cur_table, name, length,
                                               item->name, db, table_name, ref,
-                                              check_privileges,
+                                              (thd->lex->sql_command ==
+                                               SQLCOM_SHOW_FIELDS)
+                                              ? false : check_privileges,
                                               allow_rowid,
                                               &(item->cached_field_index),
                                               register_tree_change,