# 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, --- mysql-5.5.9/client/mysqldump.c~ 2011-03-10 20:05:49.000000000 +0200 +++ mysql-5.5.9/client/mysqldump.c 2011-03-10 20:19:55.962339580 +0200 @@ -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_comments_used= 0, + opt_events= 0, opt_comments_used= 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, @@ -2297,21 +2297,35 @@ 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 (opt_set_charset) /* Was forced to false if server is too old. */ { if (switch_character_set_results(mysql, "binary") != 0) + { + ignore_errors=old_ignore_errors; DBUG_RETURN(0); + } } if (mysql_query_with_error_report(mysql, &result, buff) != 0) + { + ignore_errors=old_ignore_errors; DBUG_RETURN(0); + } if (opt_set_charset) /* Was forced to false if server is too old. */ { if (switch_character_set_results(mysql, default_charset) != 0) + { + ignore_errors=old_ignore_errors; DBUG_RETURN(0); + } } if (path)