Skip to content

Commit 26b0cf4

Browse files
committed
MDEV-8183 Adding option mysqldump --no-data-med
* new mysqldump option * add more engines to the "external data engines" list * redo the check to be able to print the list of engines in --help
1 parent 569d2f8 commit 26b0cf4

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

client/mysqldump.c

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ static ulong find_set(TYPELIB *lib, const char *x, uint length,
9797
static char *alloc_query_str(ulong size);
9898

9999
static void field_escape(DYNAMIC_STRING* in, const char *from);
100-
static my_bool verbose= 0, opt_no_create_info= 0, opt_no_data= 0,
100+
static my_bool verbose= 0, opt_no_create_info= 0, opt_no_data= 0, opt_no_data_med= 1,
101101
quick= 1, extended_insert= 1,
102102
lock_tables=1,ignore_errors=0,flush_logs=0,flush_privileges=0,
103103
opt_drop=1,opt_keywords=0,opt_lock=1,opt_compress=0,
@@ -203,6 +203,8 @@ const char *compatible_mode_names[]=
203203
TYPELIB compatible_mode_typelib= {array_elements(compatible_mode_names) - 1,
204204
"", compatible_mode_names, NULL};
205205

206+
#define MED_ENGINES "MRG_MyISAM, MRG_ISAM, CONNECT, OQGRAPH, SPIDER, VP, FEDERATED"
207+
206208
HASH ignore_table;
207209

208210
static struct my_option my_long_options[] =
@@ -429,6 +431,9 @@ static struct my_option my_long_options[] =
429431
NO_ARG, 0, 0, 0, 0, 0, 0},
430432
{"no-data", 'd', "No row information.", &opt_no_data,
431433
&opt_no_data, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
434+
{"no-data-med", 0, "No row information for engines that "
435+
"Manage External Data (" MED_ENGINES ").", &opt_no_data_med,
436+
&opt_no_data_med, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
432437
{"no-set-names", 'N', "Same as --skip-set-charset.",
433438
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
434439
{"opt", OPT_OPTIMIZE,
@@ -5406,12 +5411,12 @@ char check_if_ignore_table(const char *table_name, char *table_type)
54065411
/*
54075412
If these two types, we do want to skip dumping the table
54085413
*/
5409-
if (!opt_no_data &&
5410-
(!my_strcasecmp(&my_charset_latin1, table_type, "MRG_MyISAM") ||
5411-
!strcmp(table_type,"MRG_ISAM") ||
5412-
!strcmp(table_type,"CONNECT") ||
5413-
!strcmp(table_type,"FEDERATED")))
5414-
result= IGNORE_DATA;
5414+
if (!opt_no_data && opt_no_data_med)
5415+
{
5416+
const char *found= strstr(" " MED_ENGINES ",", table_type);
5417+
if (found && found[-1] == ' ' && found[strlen(table_type)] == ',')
5418+
result= IGNORE_DATA;
5419+
}
54155420
}
54165421
mysql_free_result(res);
54175422
DBUG_RETURN(result);

0 commit comments

Comments
 (0)