summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authortnurnberg@mysql.com <>2006-06-12 02:46:26 +0200
committertnurnberg@mysql.com <>2006-06-12 02:46:26 +0200
commit2b613e4ce70ea2af0005e1a334e42852e5758800 (patch)
treed8b722c8ad526c1f18681f62dada8edae95b1d76 /client
parent0754cb788b9c1f8f29c4239e4d3611303d3dce4e (diff)
parentc7ae355d89b5d0d85175403a26addea338736f50 (diff)
downloadmariadb-git-2b613e4ce70ea2af0005e1a334e42852e5758800.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into mysql.com:/home/mysql-5.0-maint-17371
Diffstat (limited to 'client')
-rw-r--r--client/mysqldump.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/client/mysqldump.c b/client/mysqldump.c
index c0a3c55746e..ddf15dec2c0 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -1494,9 +1494,15 @@ static uint get_table_structure(char *table, char *db, char *table_type,
field= mysql_fetch_field_direct(result, 0);
if (strcmp(field->name, "View") == 0)
{
+ char *scv_buff = NULL;
+
if (verbose)
fprintf(stderr, "-- It's a view, create dummy table for view\n");
+ /* save "show create" statement for later */
+ if ((row= mysql_fetch_row(result)) && (scv_buff=row[1]))
+ scv_buff= my_strdup(scv_buff, MYF(0));
+
mysql_free_result(result);
/*
@@ -1514,9 +1520,22 @@ static uint get_table_structure(char *table, char *db, char *table_type,
"SHOW FIELDS FROM %s", result_table);
if (mysql_query_with_error_report(sock, 0, query_buff))
{
+ /*
+ View references invalid or privileged table/col/fun (err 1356),
+ so we cannot create a stand-in table. Be defensive and dump
+ a comment with the view's 'show create' statement. (Bug #17371)
+ */
+
+ if (mysql_errno(sock) == ER_VIEW_INVALID)
+ fprintf(sql_file, "\n-- failed on view %s: %s\n\n", result_table, scv_buff ? scv_buff : "");
+
+ my_free(scv_buff, MYF(MY_ALLOW_ZERO_PTR));
+
safe_exit(EX_MYSQLERR);
- DBUG_RETURN(0);
+ DBUG_RETURN(0);
}
+ else
+ my_free(scv_buff, MYF(MY_ALLOW_ZERO_PTR));
if ((result= mysql_store_result(sock)))
{