~percona-dev/percona-server/release-5.5.11-20.2-fix-bug-764138

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# name       : mysql_dump_ignore_ct.patch
# introduced : 11 or before
# maintainer : Yasufumi
#
#!!! notice !!!
# Any small change to this file in the main branch
# should be done or reviewed by the maintainer!
diff -ruN a/client/client_priv.h b/client/client_priv.h
--- a/client/client_priv.h	2010-11-03 07:01:14.000000000 +0900
+++ b/client/client_priv.h	2010-12-03 13:39:32.317046060 +0900
@@ -58,6 +58,7 @@
   OPT_MYSQL_LOCK_DIRECTORY,
   OPT_USE_THREADS,
   OPT_IMPORT_USE_THREADS,
+  OPT_IGNORE_CREATE_ERROR,
   OPT_MYSQL_NUMBER_OF_QUERY,
   OPT_IGNORE_TABLE,OPT_INSERT_IGNORE,OPT_SHOW_WARNINGS,OPT_DROP_DATABASE,
   OPT_TZ_UTC, OPT_CREATE_SLAP_SCHEMA,
diff -ruN a/client/mysqldump.c b/client/mysqldump.c
--- a/client/mysqldump.c	2010-11-03 07:01:14.000000000 +0900
+++ b/client/mysqldump.c	2010-12-03 13:44:55.000069761 +0900
@@ -101,7 +101,7 @@
                 opt_dump_triggers= 0, opt_routines=0, opt_tz_utc=1,
                 opt_slave_apply= 0, 
                 opt_include_master_host_port= 0,
-                opt_events= 0,
+                opt_events= 0, opt_ignore_show_create_table_error=0,
                 opt_alltspcs=0, opt_notspcs= 0;
 static my_bool insert_pat_inited= 0, debug_info_flag= 0, debug_check_flag= 0;
 static ulong opt_max_allowed_packet, opt_net_buffer_length;
@@ -350,6 +350,9 @@
   {"insert-ignore", OPT_INSERT_IGNORE, "Insert rows with INSERT IGNORE.",
    &opt_ignore, &opt_ignore, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
    0, 0},
+  {"ignore-create-error", OPT_IGNORE_CREATE_ERROR, "Don't exit on show create table errors.",
+   (uchar**) &opt_ignore_show_create_table_error, (uchar**) &opt_ignore_show_create_table_error, 0, GET_BOOL,
+   NO_ARG, 0, 0, 0, 0, 0, 0},
   {"lines-terminated-by", OPT_LTB,
    "Lines in the output file are terminated by the given string.",
    &lines_terminated, &lines_terminated, 0, GET_STR,
@@ -2302,13 +2305,21 @@
       /* Make an sql-file, if path was given iow. option -T was given */
       char buff[20+FN_REFLEN];
       MYSQL_FIELD *field;
+   
+      my_bool old_ignore_errors=ignore_errors;
+      //fprintf(stderr, "ignore create table %d\n", opt_ignore_show_create_table_error);
+      if (opt_ignore_show_create_table_error)
+         ignore_errors=1;
 
       my_snprintf(buff, sizeof(buff), "show create table %s", result_table);
 
       if (switch_character_set_results(mysql, "binary") ||
           mysql_query_with_error_report(mysql, &result, buff) ||
           switch_character_set_results(mysql, default_charset))
+      {
+        ignore_errors=old_ignore_errors;
         DBUG_RETURN(0);
+      }
 
       if (path)
       {