@@ -97,7 +97,7 @@ static ulong find_set(TYPELIB *lib, const char *x, uint length,
97
97
static char * alloc_query_str (ulong size );
98
98
99
99
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 ,
101
101
quick = 1 , extended_insert = 1 ,
102
102
lock_tables = 1 ,ignore_errors = 0 ,flush_logs = 0 ,flush_privileges = 0 ,
103
103
opt_drop = 1 ,opt_keywords = 0 ,opt_lock = 1 ,opt_compress = 0 ,
@@ -203,6 +203,8 @@ const char *compatible_mode_names[]=
203
203
TYPELIB compatible_mode_typelib = {array_elements (compatible_mode_names ) - 1 ,
204
204
"" , compatible_mode_names , NULL };
205
205
206
+ #define MED_ENGINES "MRG_MyISAM, MRG_ISAM, CONNECT, OQGRAPH, SPIDER, VP, FEDERATED"
207
+
206
208
HASH ignore_table ;
207
209
208
210
static struct my_option my_long_options [] =
@@ -429,6 +431,9 @@ static struct my_option my_long_options[] =
429
431
NO_ARG , 0 , 0 , 0 , 0 , 0 , 0 },
430
432
{"no-data" , 'd' , "No row information." , & opt_no_data ,
431
433
& 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 },
432
437
{"no-set-names" , 'N' , "Same as --skip-set-charset." ,
433
438
0 , 0 , 0 , GET_NO_ARG , NO_ARG , 0 , 0 , 0 , 0 , 0 , 0 },
434
439
{"opt" , OPT_OPTIMIZE ,
@@ -5406,12 +5411,12 @@ char check_if_ignore_table(const char *table_name, char *table_type)
5406
5411
/*
5407
5412
If these two types, we do want to skip dumping the table
5408
5413
*/
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
+ }
5415
5420
}
5416
5421
mysql_free_result (res );
5417
5422
DBUG_RETURN (result );
0 commit comments