Commit 4b579171 authored by unknown's avatar unknown

Merge neptunus.(none):/home/msvensson/mysql/mysql-5.0

into  neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint


client/mysql.cc:
  Auto merged
client/mysqldump.c:
  Auto merged
configure.in:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_func.h:
  Auto merged
sql/item_strfunc.cc:
  Auto merged
sql/item_strfunc.h:
  Auto merged
sql/item_subselect.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
parents 9744e7f8 234bb881
...@@ -83,7 +83,8 @@ static ulong find_set(TYPELIB *lib, const char *x, uint length, ...@@ -83,7 +83,8 @@ static ulong find_set(TYPELIB *lib, const char *x, uint length,
static char *alloc_query_str(ulong size); static char *alloc_query_str(ulong size);
static char *field_escape(char *to,const char *from,uint length); static char *field_escape(char *to,const char *from,uint length);
static my_bool verbose=0,tFlag=0,dFlag=0,quick= 1, extended_insert= 1, static my_bool verbose= 0, opt_no_create_info= 0, opt_no_data= 0,
quick= 1, extended_insert= 1,
lock_tables=1,ignore_errors=0,flush_logs=0, lock_tables=1,ignore_errors=0,flush_logs=0,
opt_drop=1,opt_keywords=0,opt_lock=1,opt_compress=0, opt_drop=1,opt_keywords=0,opt_lock=1,opt_compress=0,
opt_delayed=0,create_options=1,opt_quoted=0,opt_databases=0, opt_delayed=0,create_options=1,opt_quoted=0,opt_databases=0,
...@@ -96,7 +97,7 @@ static my_bool verbose=0,tFlag=0,dFlag=0,quick= 1, extended_insert= 1, ...@@ -96,7 +97,7 @@ static my_bool verbose=0,tFlag=0,dFlag=0,quick= 1, extended_insert= 1,
opt_complete_insert= 0, opt_drop_database= 0, opt_complete_insert= 0, opt_drop_database= 0,
opt_dump_triggers= 0, opt_routines=0, opt_tz_utc=1; opt_dump_triggers= 0, opt_routines=0, opt_tz_utc=1;
static ulong opt_max_allowed_packet, opt_net_buffer_length; static ulong opt_max_allowed_packet, opt_net_buffer_length;
static MYSQL mysql_connection,*sock=0; static MYSQL mysql_connection,*mysql=0;
static my_bool insert_pat_inited=0; static my_bool insert_pat_inited=0;
static DYNAMIC_STRING insert_pat; static DYNAMIC_STRING insert_pat;
static char *opt_password=0,*current_user=0, static char *opt_password=0,*current_user=0,
...@@ -312,9 +313,10 @@ static struct my_option my_long_options[] = ...@@ -312,9 +313,10 @@ static struct my_option my_long_options[] =
(gptr*) &opt_create_db, (gptr*) &opt_create_db, 0, GET_BOOL, NO_ARG, 0, 0, (gptr*) &opt_create_db, (gptr*) &opt_create_db, 0, GET_BOOL, NO_ARG, 0, 0,
0, 0, 0, 0}, 0, 0, 0, 0},
{"no-create-info", 't', "Don't write table creation info.", {"no-create-info", 't', "Don't write table creation info.",
(gptr*) &tFlag, (gptr*) &tFlag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, (gptr*) &opt_no_create_info, (gptr*) &opt_no_create_info, 0, GET_BOOL,
{"no-data", 'd', "No row information.", (gptr*) &dFlag, (gptr*) &dFlag, 0, NO_ARG, 0, 0, 0, 0, 0, 0},
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"no-data", 'd', "No row information.", (gptr*) &opt_no_data,
(gptr*) &opt_no_data, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"no-set-names", 'N', {"no-set-names", 'N',
"Deprecated. Use --skip-set-charset instead.", "Deprecated. Use --skip-set-charset instead.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
...@@ -426,6 +428,30 @@ static my_bool dump_all_views_in_db(char *database); ...@@ -426,6 +428,30 @@ static my_bool dump_all_views_in_db(char *database);
#include <help_start.h> #include <help_start.h>
/*
Print the supplied message if in verbose mode
SYNOPSIS
verbose_msg()
fmt format specifier
... variable number of parameters
*/
static void verbose_msg(const char *fmt, ...)
{
va_list args;
DBUG_ENTER("verbose_msg");
if (!verbose)
DBUG_VOID_RETURN;
va_start(args, fmt);
vfprintf(stderr, fmt, args);
va_end(args);
DBUG_VOID_RETURN;
}
/* /*
exit with message if ferror(file) exit with message if ferror(file)
...@@ -851,9 +877,9 @@ static int mysql_query_with_error_report(MYSQL *mysql_con, MYSQL_RES **res, ...@@ -851,9 +877,9 @@ static int mysql_query_with_error_report(MYSQL *mysql_con, MYSQL_RES **res,
if (mysql_query(mysql_con, query) || if (mysql_query(mysql_con, query) ||
(res && !((*res)= mysql_store_result(mysql_con)))) (res && !((*res)= mysql_store_result(mysql_con))))
{ {
my_printf_error(0, "%s: Couldn't execute '%s': %s (%d)", my_printf_error(0, "Couldn't execute '%s': %s (%d)", MYF(0),
MYF(0), my_progname, query, query, mysql_error(mysql_con), mysql_errno(mysql_con));
mysql_error(mysql_con), mysql_errno(mysql_con)); safe_exit(EX_MYSQLERR);
return 1; return 1;
} }
return 0; return 0;
...@@ -887,8 +913,8 @@ static void safe_exit(int error) ...@@ -887,8 +913,8 @@ static void safe_exit(int error)
first_error= error; first_error= error;
if (ignore_errors) if (ignore_errors)
return; return;
if (sock) if (mysql)
mysql_close(sock); mysql_close(mysql);
exit(error); exit(error);
} }
/* safe_exit */ /* safe_exit */
...@@ -901,10 +927,8 @@ static int dbConnect(char *host, char *user,char *passwd) ...@@ -901,10 +927,8 @@ static int dbConnect(char *host, char *user,char *passwd)
{ {
char buff[20+FN_REFLEN]; char buff[20+FN_REFLEN];
DBUG_ENTER("dbConnect"); DBUG_ENTER("dbConnect");
if (verbose)
{ verbose_msg("-- Connecting to %s...\n", host ? host : "localhost");
fprintf(stderr, "-- Connecting to %s...\n", host ? host : "localhost");
}
mysql_init(&mysql_connection); mysql_init(&mysql_connection);
if (opt_compress) if (opt_compress)
mysql_options(&mysql_connection,MYSQL_OPT_COMPRESS,NullS); mysql_options(&mysql_connection,MYSQL_OPT_COMPRESS,NullS);
...@@ -922,7 +946,7 @@ static int dbConnect(char *host, char *user,char *passwd) ...@@ -922,7 +946,7 @@ static int dbConnect(char *host, char *user,char *passwd)
mysql_options(&mysql_connection,MYSQL_SHARED_MEMORY_BASE_NAME,shared_memory_base_name); mysql_options(&mysql_connection,MYSQL_SHARED_MEMORY_BASE_NAME,shared_memory_base_name);
#endif #endif
mysql_options(&mysql_connection, MYSQL_SET_CHARSET_NAME, default_charset); mysql_options(&mysql_connection, MYSQL_SET_CHARSET_NAME, default_charset);
if (!(sock= mysql_real_connect(&mysql_connection,host,user,passwd, if (!(mysql= mysql_real_connect(&mysql_connection,host,user,passwd,
NULL,opt_mysql_port,opt_mysql_unix_port, NULL,opt_mysql_port,opt_mysql_unix_port,
0))) 0)))
{ {
...@@ -938,12 +962,11 @@ static int dbConnect(char *host, char *user,char *passwd) ...@@ -938,12 +962,11 @@ static int dbConnect(char *host, char *user,char *passwd)
As we're going to set SQL_MODE, it would be lost on reconnect, so we As we're going to set SQL_MODE, it would be lost on reconnect, so we
cannot reconnect. cannot reconnect.
*/ */
sock->reconnect= 0; mysql->reconnect= 0;
my_snprintf(buff, sizeof(buff), "/*!40100 SET @@SQL_MODE='%s' */", my_snprintf(buff, sizeof(buff), "/*!40100 SET @@SQL_MODE='%s' */",
compatible_mode_normal_str); compatible_mode_normal_str);
if (mysql_query_with_error_report(sock, 0, buff)) if (mysql_query_with_error_report(mysql, 0, buff))
{ {
mysql_close(sock);
safe_exit(EX_MYSQLERR); safe_exit(EX_MYSQLERR);
return 1; return 1;
} }
...@@ -954,9 +977,8 @@ static int dbConnect(char *host, char *user,char *passwd) ...@@ -954,9 +977,8 @@ static int dbConnect(char *host, char *user,char *passwd)
if (opt_tz_utc) if (opt_tz_utc)
{ {
my_snprintf(buff, sizeof(buff), "/*!40103 SET TIME_ZONE='+00:00' */"); my_snprintf(buff, sizeof(buff), "/*!40103 SET TIME_ZONE='+00:00' */");
if (mysql_query_with_error_report(sock, 0, buff)) if (mysql_query_with_error_report(mysql, 0, buff))
{ {
mysql_close(sock);
safe_exit(EX_MYSQLERR); safe_exit(EX_MYSQLERR);
return 1; return 1;
} }
...@@ -970,9 +992,8 @@ static int dbConnect(char *host, char *user,char *passwd) ...@@ -970,9 +992,8 @@ static int dbConnect(char *host, char *user,char *passwd)
*/ */
static void dbDisconnect(char *host) static void dbDisconnect(char *host)
{ {
if (verbose) verbose_msg("-- Disconnecting from %s...\n", host ? host : "localhost");
fprintf(stderr, "-- Disconnecting from %s...\n", host ? host : "localhost"); mysql_close(mysql);
mysql_close(sock);
} /* dbDisconnect */ } /* dbDisconnect */
...@@ -1265,7 +1286,7 @@ static uint dump_routines_for_db(char *db) ...@@ -1265,7 +1286,7 @@ static uint dump_routines_for_db(char *db)
DBUG_ENTER("dump_routines_for_db"); DBUG_ENTER("dump_routines_for_db");
DBUG_PRINT("enter", ("db: '%s'", db)); DBUG_PRINT("enter", ("db: '%s'", db));
mysql_real_escape_string(sock, db_name_buff, db, strlen(db)); mysql_real_escape_string(mysql, db_name_buff, db, strlen(db));
/* nice comments */ /* nice comments */
if (opt_comments) if (opt_comments)
...@@ -1276,7 +1297,7 @@ static uint dump_routines_for_db(char *db) ...@@ -1276,7 +1297,7 @@ static uint dump_routines_for_db(char *db)
enough privileges to lock mysql.proc. enough privileges to lock mysql.proc.
*/ */
if (lock_tables) if (lock_tables)
mysql_query(sock, "LOCK TABLES mysql.proc READ"); mysql_query(mysql, "LOCK TABLES mysql.proc READ");
fprintf(sql_file, "DELIMITER ;;\n"); fprintf(sql_file, "DELIMITER ;;\n");
...@@ -1287,7 +1308,7 @@ static uint dump_routines_for_db(char *db) ...@@ -1287,7 +1308,7 @@ static uint dump_routines_for_db(char *db)
"SHOW %s STATUS WHERE Db = '%s'", "SHOW %s STATUS WHERE Db = '%s'",
routine_type[i], db_name_buff); routine_type[i], db_name_buff);
if (mysql_query_with_error_report(sock, &routine_list_res, query_buff)) if (mysql_query_with_error_report(mysql, &routine_list_res, query_buff))
DBUG_RETURN(1); DBUG_RETURN(1);
if (mysql_num_rows(routine_list_res)) if (mysql_num_rows(routine_list_res))
...@@ -1301,7 +1322,7 @@ static uint dump_routines_for_db(char *db) ...@@ -1301,7 +1322,7 @@ static uint dump_routines_for_db(char *db)
my_snprintf(query_buff, sizeof(query_buff), "SHOW CREATE %s %s", my_snprintf(query_buff, sizeof(query_buff), "SHOW CREATE %s %s",
routine_type[i], routine_name); routine_type[i], routine_name);
if (mysql_query_with_error_report(sock, &routine_res, query_buff)) if (mysql_query_with_error_report(mysql, &routine_res, query_buff))
DBUG_RETURN(1); DBUG_RETURN(1);
while ((row= mysql_fetch_row(routine_res))) while ((row= mysql_fetch_row(routine_res)))
...@@ -1383,7 +1404,7 @@ static uint dump_routines_for_db(char *db) ...@@ -1383,7 +1404,7 @@ static uint dump_routines_for_db(char *db)
fprintf(sql_file, "DELIMITER ;\n"); fprintf(sql_file, "DELIMITER ;\n");
if (lock_tables) if (lock_tables)
VOID(mysql_query_with_error_report(sock, 0, "UNLOCK TABLES")); VOID(mysql_query_with_error_report(mysql, 0, "UNLOCK TABLES"));
DBUG_RETURN(0); DBUG_RETURN(0);
} }
...@@ -1425,10 +1446,8 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -1425,10 +1446,8 @@ static uint get_table_structure(char *table, char *db, char *table_type,
if (delayed && (*ignore_flag & IGNORE_INSERT_DELAYED)) if (delayed && (*ignore_flag & IGNORE_INSERT_DELAYED))
{ {
delayed= 0; delayed= 0;
if (verbose) verbose_msg("-- Warning: Unable to use delayed inserts for table '%s' "
fprintf(stderr, "because it's of type %s\n", table, table_type);
"-- Warning: Unable to use delayed inserts for table '%s' "
"because it's of type %s\n", table, table_type);
} }
complete_insert= 0; complete_insert= 0;
...@@ -1444,8 +1463,7 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -1444,8 +1463,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
insert_option= ((delayed && opt_ignore) ? " DELAYED IGNORE " : insert_option= ((delayed && opt_ignore) ? " DELAYED IGNORE " :
delayed ? " DELAYED " : opt_ignore ? " IGNORE " : ""); delayed ? " DELAYED " : opt_ignore ? " IGNORE " : "");
if (verbose) verbose_msg("-- Retrieving table structure for table %s...\n", table);
fprintf(stderr, "-- Retrieving table structure for table %s...\n", table);
len= my_snprintf(query_buff, sizeof(query_buff), len= my_snprintf(query_buff, sizeof(query_buff),
"SET OPTION SQL_QUOTE_SHOW_CREATE=%d", "SET OPTION SQL_QUOTE_SHOW_CREATE=%d",
...@@ -1460,17 +1478,17 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -1460,17 +1478,17 @@ static uint get_table_structure(char *table, char *db, char *table_type,
if (opt_order_by_primary) if (opt_order_by_primary)
order_by = primary_key_fields(result_table); order_by = primary_key_fields(result_table);
if (!opt_xml && !mysql_query_with_error_report(sock, 0, query_buff)) if (!opt_xml && !mysql_query_with_error_report(mysql, 0, query_buff))
{ {
/* using SHOW CREATE statement */ /* using SHOW CREATE statement */
if (!tFlag) if (!opt_no_create_info)
{ {
/* Make an sql-file, if path was given iow. option -T was given */ /* Make an sql-file, if path was given iow. option -T was given */
char buff[20+FN_REFLEN]; char buff[20+FN_REFLEN];
MYSQL_FIELD *field; MYSQL_FIELD *field;
my_snprintf(buff, sizeof(buff), "show create table %s", result_table); my_snprintf(buff, sizeof(buff), "show create table %s", result_table);
if (mysql_query_with_error_report(sock, 0, buff)) if (mysql_query_with_error_report(mysql, 0, buff))
{ {
safe_exit(EX_MYSQLERR); safe_exit(EX_MYSQLERR);
DBUG_RETURN(0); DBUG_RETURN(0);
...@@ -1506,14 +1524,13 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -1506,14 +1524,13 @@ static uint get_table_structure(char *table, char *db, char *table_type,
check_io(sql_file); check_io(sql_file);
} }
result= mysql_store_result(sock); result= mysql_store_result(mysql);
field= mysql_fetch_field_direct(result, 0); field= mysql_fetch_field_direct(result, 0);
if (strcmp(field->name, "View") == 0) if (strcmp(field->name, "View") == 0)
{ {
char *scv_buff = NULL; char *scv_buff = NULL;
if (verbose) verbose_msg("-- It's a view, create dummy table for view\n");
fprintf(stderr, "-- It's a view, create dummy table for view\n");
/* save "show create" statement for later */ /* save "show create" statement for later */
if ((row= mysql_fetch_row(result)) && (scv_buff=row[1])) if ((row= mysql_fetch_row(result)) && (scv_buff=row[1]))
...@@ -1534,7 +1551,7 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -1534,7 +1551,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
*/ */
my_snprintf(query_buff, sizeof(query_buff), my_snprintf(query_buff, sizeof(query_buff),
"SHOW FIELDS FROM %s", result_table); "SHOW FIELDS FROM %s", result_table);
if (mysql_query_with_error_report(sock, 0, query_buff)) if (mysql_query_with_error_report(mysql, 0, query_buff))
{ {
/* /*
View references invalid or privileged table/col/fun (err 1356), View references invalid or privileged table/col/fun (err 1356),
...@@ -1542,7 +1559,7 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -1542,7 +1559,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
a comment with the view's 'show create' statement. (Bug #17371) a comment with the view's 'show create' statement. (Bug #17371)
*/ */
if (mysql_errno(sock) == ER_VIEW_INVALID) if (mysql_errno(mysql) == ER_VIEW_INVALID)
fprintf(sql_file, "\n-- failed on view %s: %s\n\n", result_table, scv_buff ? scv_buff : ""); 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)); my_free(scv_buff, MYF(MY_ALLOW_ZERO_PTR));
...@@ -1553,7 +1570,7 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -1553,7 +1570,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
else else
my_free(scv_buff, MYF(MY_ALLOW_ZERO_PTR)); my_free(scv_buff, MYF(MY_ALLOW_ZERO_PTR));
if ((result= mysql_store_result(sock))) if ((result= mysql_store_result(mysql)))
{ {
if (mysql_num_rows(result)) if (mysql_num_rows(result))
{ {
...@@ -1606,7 +1623,7 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -1606,7 +1623,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
} }
my_snprintf(query_buff, sizeof(query_buff), "show fields from %s", my_snprintf(query_buff, sizeof(query_buff), "show fields from %s",
result_table); result_table);
if (mysql_query_with_error_report(sock, &result, query_buff)) if (mysql_query_with_error_report(mysql, &result, query_buff))
{ {
if (path) if (path)
my_fclose(sql_file, MYF(MY_WME)); my_fclose(sql_file, MYF(MY_WME));
...@@ -1656,21 +1673,19 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -1656,21 +1673,19 @@ static uint get_table_structure(char *table, char *db, char *table_type,
} }
else else
{ {
if (verbose) verbose_msg("%s: Warning: Can't set SQL_QUOTE_SHOW_CREATE option (%s)\n",
fprintf(stderr, my_progname, mysql_error(mysql));
"%s: Warning: Can't set SQL_QUOTE_SHOW_CREATE option (%s)\n",
my_progname, mysql_error(sock));
my_snprintf(query_buff, sizeof(query_buff), "show fields from %s", my_snprintf(query_buff, sizeof(query_buff), "show fields from %s",
result_table); result_table);
if (mysql_query_with_error_report(sock, &result, query_buff)) if (mysql_query_with_error_report(mysql, &result, query_buff))
{ {
safe_exit(EX_MYSQLERR); safe_exit(EX_MYSQLERR);
DBUG_RETURN(0); DBUG_RETURN(0);
} }
/* Make an sql-file, if path was given iow. option -T was given */ /* Make an sql-file, if path was given iow. option -T was given */
if (!tFlag) if (!opt_no_create_info)
{ {
if (path) if (path)
{ {
...@@ -1714,7 +1729,7 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -1714,7 +1729,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
ulong *lengths= mysql_fetch_lengths(result); ulong *lengths= mysql_fetch_lengths(result);
if (init) if (init)
{ {
if (!opt_xml && !tFlag) if (!opt_xml && !opt_no_create_info)
{ {
fputs(",\n",sql_file); fputs(",\n",sql_file);
check_io(sql_file); check_io(sql_file);
...@@ -1726,7 +1741,7 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -1726,7 +1741,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
if (opt_complete_insert) if (opt_complete_insert)
dynstr_append(&insert_pat, dynstr_append(&insert_pat,
quote_name(row[SHOW_FIELDNAME], name_buff, 0)); quote_name(row[SHOW_FIELDNAME], name_buff, 0));
if (!tFlag) if (!opt_no_create_info)
{ {
if (opt_xml) if (opt_xml)
{ {
...@@ -1756,22 +1771,22 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -1756,22 +1771,22 @@ static uint get_table_structure(char *table, char *db, char *table_type,
} }
num_fields= mysql_num_rows(result); num_fields= mysql_num_rows(result);
mysql_free_result(result); mysql_free_result(result);
if (!tFlag) if (!opt_no_create_info)
{ {
/* Make an sql-file, if path was given iow. option -T was given */ /* Make an sql-file, if path was given iow. option -T was given */
char buff[20+FN_REFLEN]; char buff[20+FN_REFLEN];
uint keynr,primary_key; uint keynr,primary_key;
my_snprintf(buff, sizeof(buff), "show keys from %s", result_table); my_snprintf(buff, sizeof(buff), "show keys from %s", result_table);
if (mysql_query_with_error_report(sock, &result, buff)) if (mysql_query_with_error_report(mysql, &result, buff))
{ {
if (mysql_errno(sock) == ER_WRONG_OBJECT) if (mysql_errno(mysql) == ER_WRONG_OBJECT)
{ {
/* it is VIEW */ /* it is VIEW */
fputs("\t\t<options Comment=\"view\" />\n", sql_file); fputs("\t\t<options Comment=\"view\" />\n", sql_file);
goto continue_xml; goto continue_xml;
} }
fprintf(stderr, "%s: Can't get keys for table %s (%s)\n", fprintf(stderr, "%s: Can't get keys for table %s (%s)\n",
my_progname, result_table, mysql_error(sock)); my_progname, result_table, mysql_error(mysql));
if (path) if (path)
my_fclose(sql_file, MYF(MY_WME)); my_fclose(sql_file, MYF(MY_WME));
safe_exit(EX_MYSQLERR); safe_exit(EX_MYSQLERR);
...@@ -1844,21 +1859,19 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -1844,21 +1859,19 @@ static uint get_table_structure(char *table, char *db, char *table_type,
my_snprintf(buff, sizeof(buff), "show table status like %s", my_snprintf(buff, sizeof(buff), "show table status like %s",
quote_for_like(table, show_name_buff)); quote_for_like(table, show_name_buff));
if (mysql_query_with_error_report(sock, &result, buff)) if (mysql_query_with_error_report(mysql, &result, buff))
{ {
if (mysql_errno(sock) != ER_PARSE_ERROR) if (mysql_errno(mysql) != ER_PARSE_ERROR)
{ /* If old MySQL version */ { /* If old MySQL version */
if (verbose) verbose_msg("-- Warning: Couldn't get status information for " \
fprintf(stderr, "table %s (%s)\n", result_table,mysql_error(mysql));
"-- Warning: Couldn't get status information for table %s (%s)\n",
result_table,mysql_error(sock));
} }
} }
else if (!(row= mysql_fetch_row(result))) else if (!(row= mysql_fetch_row(result)))
{ {
fprintf(stderr, fprintf(stderr,
"Error: Couldn't read status information for table %s (%s)\n", "Error: Couldn't read status information for table %s (%s)\n",
result_table,mysql_error(sock)); result_table,mysql_error(mysql));
} }
else else
{ {
...@@ -1931,7 +1944,7 @@ static void dump_triggers_for_table (char *table, char *db) ...@@ -1931,7 +1944,7 @@ static void dump_triggers_for_table (char *table, char *db)
"SHOW TRIGGERS LIKE %s", "SHOW TRIGGERS LIKE %s",
quote_for_like(table, name_buff)); quote_for_like(table, name_buff));
if (mysql_query_with_error_report(sock, &result, query_buff)) if (mysql_query_with_error_report(mysql, &result, query_buff))
{ {
if (path) if (path)
my_fclose(sql_file, MYF(MY_WME)); my_fclose(sql_file, MYF(MY_WME));
...@@ -2101,12 +2114,10 @@ static void dump_table(char *table, char *db) ...@@ -2101,12 +2114,10 @@ static void dump_table(char *table, char *db)
return; return;
/* Check --no-data flag */ /* Check --no-data flag */
if (dFlag) if (opt_no_data)
{ {
if (verbose) verbose_msg("-- Skipping dump data for table '%s', --no-data was used\n",
fprintf(stderr, table);
"-- Skipping dump data for table '%s', --no-data was used\n",
table);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
...@@ -2119,27 +2130,22 @@ static void dump_table(char *table, char *db) ...@@ -2119,27 +2130,22 @@ static void dump_table(char *table, char *db)
*/ */
if (ignore_flag & IGNORE_DATA) if (ignore_flag & IGNORE_DATA)
{ {
if (verbose) verbose_msg("-- Warning: Skipping data for table '%s' because " \
fprintf(stderr, "it's of type %s\n", table, table_type);
"-- Warning: Skipping data for table '%s' because it's of type %s\n",
table, table_type);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
/* Check that there are any fields in the table */ /* Check that there are any fields in the table */
if (num_fields == 0) if (num_fields == 0)
{ {
if (verbose) verbose_msg("-- Skipping dump data for table '%s', it has no fields\n",
fprintf(stderr, table);
"-- Skipping dump data for table '%s', it has no fields\n",
table);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
result_table= quote_name(table,table_buff, 1); result_table= quote_name(table,table_buff, 1);
opt_quoted_table= quote_name(table, table_buff2, 0); opt_quoted_table= quote_name(table, table_buff2, 0);
if (verbose) verbose_msg("-- Sending SELECT query...\n");
fprintf(stderr, "-- Sending SELECT query...\n");
if (path) if (path)
{ {
char filename[FN_REFLEN], tmp_path[FN_REFLEN]; char filename[FN_REFLEN], tmp_path[FN_REFLEN];
...@@ -2177,9 +2183,9 @@ static void dump_table(char *table, char *db) ...@@ -2177,9 +2183,9 @@ static void dump_table(char *table, char *db)
if (order_by) if (order_by)
end = strxmov(end, " ORDER BY ", order_by, NullS); end = strxmov(end, " ORDER BY ", order_by, NullS);
} }
if (mysql_real_query(sock, query, (uint) (end - query))) if (mysql_real_query(mysql, query, (uint) (end - query)))
{ {
DB_error(sock, "when executing 'SELECT INTO OUTFILE'"); DB_error(mysql, "when executing 'SELECT INTO OUTFILE'");
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
} }
...@@ -2225,19 +2231,19 @@ static void dump_table(char *table, char *db) ...@@ -2225,19 +2231,19 @@ static void dump_table(char *table, char *db)
fputs("\n", md_result_file); fputs("\n", md_result_file);
check_io(md_result_file); check_io(md_result_file);
} }
if (mysql_query_with_error_report(sock, 0, query)) if (mysql_query_with_error_report(mysql, 0, query))
DB_error(sock, "when retrieving data from server"); DB_error(mysql, "when retrieving data from server");
if (quick) if (quick)
res=mysql_use_result(sock); res=mysql_use_result(mysql);
else else
res=mysql_store_result(sock); res=mysql_store_result(mysql);
if (!res) if (!res)
{ {
DB_error(sock, "when retrieving data from server"); DB_error(mysql, "when retrieving data from server");
goto err; goto err;
} }
if (verbose)
fprintf(stderr, "-- Retrieving rows...\n"); verbose_msg("-- Retrieving rows...\n");
if (mysql_num_fields(res) != num_fields) if (mysql_num_fields(res) != num_fields)
{ {
fprintf(stderr,"%s: Error in field count for table: %s ! Aborting.\n", fprintf(stderr,"%s: Error in field count for table: %s ! Aborting.\n",
...@@ -2506,13 +2512,13 @@ static void dump_table(char *table, char *db) ...@@ -2506,13 +2512,13 @@ static void dump_table(char *table, char *db)
fputs(";\n", md_result_file); /* If not empty table */ fputs(";\n", md_result_file); /* If not empty table */
fflush(md_result_file); fflush(md_result_file);
check_io(md_result_file); check_io(md_result_file);
if (mysql_errno(sock)) if (mysql_errno(mysql))
{ {
my_snprintf(query, QUERY_LENGTH, my_snprintf(query, QUERY_LENGTH,
"%s: Error %d: %s when dumping table %s at row: %ld\n", "%s: Error %d: %s when dumping table %s at row: %ld\n",
my_progname, my_progname,
mysql_errno(sock), mysql_errno(mysql),
mysql_error(sock), mysql_error(mysql),
result_table, result_table,
rownr); rownr);
fputs(query,stderr); fputs(query,stderr);
...@@ -2558,7 +2564,7 @@ static char *getTableName(int reset) ...@@ -2558,7 +2564,7 @@ static char *getTableName(int reset)
if (!res) if (!res)
{ {
if (!(res = mysql_list_tables(sock,NullS))) if (!(res = mysql_list_tables(mysql,NullS)))
return(NULL); return(NULL);
} }
if ((row = mysql_fetch_row(res))) if ((row = mysql_fetch_row(res)))
...@@ -2581,7 +2587,7 @@ static int dump_all_databases() ...@@ -2581,7 +2587,7 @@ static int dump_all_databases()
MYSQL_RES *tableres; MYSQL_RES *tableres;
int result=0; int result=0;
if (mysql_query_with_error_report(sock, &tableres, "SHOW DATABASES")) if (mysql_query_with_error_report(mysql, &tableres, "SHOW DATABASES"))
return 1; return 1;
while ((row = mysql_fetch_row(tableres))) while ((row = mysql_fetch_row(tableres)))
{ {
...@@ -2590,11 +2596,11 @@ static int dump_all_databases() ...@@ -2590,11 +2596,11 @@ static int dump_all_databases()
} }
if (seen_views) if (seen_views)
{ {
if (mysql_query(sock, "SHOW DATABASES") || if (mysql_query(mysql, "SHOW DATABASES") ||
!(tableres = mysql_store_result(sock))) !(tableres = mysql_store_result(mysql)))
{ {
my_printf_error(0, "Error: Couldn't execute 'SHOW DATABASES': %s", my_printf_error(0, "Error: Couldn't execute 'SHOW DATABASES': %s",
MYF(0), mysql_error(sock)); MYF(0), mysql_error(mysql));
return 1; return 1;
} }
while ((row = mysql_fetch_row(tableres))) while ((row = mysql_fetch_row(tableres)))
...@@ -2631,13 +2637,13 @@ static int dump_databases(char **db_names) ...@@ -2631,13 +2637,13 @@ static int dump_databases(char **db_names)
static int init_dumping(char *database) static int init_dumping(char *database)
{ {
if (mysql_get_server_version(sock) >= 50003 && if (mysql_get_server_version(mysql) >= 50003 &&
!my_strcasecmp(&my_charset_latin1, database, "information_schema")) !my_strcasecmp(&my_charset_latin1, database, "information_schema"))
return 1; return 1;
if (mysql_select_db(sock, database)) if (mysql_select_db(mysql, database))
{ {
DB_error(sock, "when selecting the database"); DB_error(mysql, "when selecting the database");
return 1; /* If --force */ return 1; /* If --force */
} }
if (!path && !opt_xml) if (!path && !opt_xml)
...@@ -2664,7 +2670,7 @@ static int init_dumping(char *database) ...@@ -2664,7 +2670,7 @@ static int init_dumping(char *database)
"SHOW CREATE DATABASE IF NOT EXISTS %s", "SHOW CREATE DATABASE IF NOT EXISTS %s",
qdatabase); qdatabase);
if (mysql_query(sock, qbuf) || !(dbinfo = mysql_store_result(sock))) if (mysql_query(mysql, qbuf) || !(dbinfo = mysql_store_result(mysql)))
{ {
/* Old server version, dump generic CREATE DATABASE */ /* Old server version, dump generic CREATE DATABASE */
if (opt_drop_database) if (opt_drop_database)
...@@ -2732,15 +2738,15 @@ static int dump_all_tables_in_db(char *database) ...@@ -2732,15 +2738,15 @@ static int dump_all_tables_in_db(char *database)
dynstr_append(&query, quote_name(table, table_buff, 1)); dynstr_append(&query, quote_name(table, table_buff, 1));
dynstr_append(&query, " READ /*!32311 LOCAL */,"); dynstr_append(&query, " READ /*!32311 LOCAL */,");
} }
if (numrows && mysql_real_query(sock, query.str, query.length-1)) if (numrows && mysql_real_query(mysql, query.str, query.length-1))
DB_error(sock, "when using LOCK TABLES"); DB_error(mysql, "when using LOCK TABLES");
/* We shall continue here, if --force was given */ /* We shall continue here, if --force was given */
dynstr_free(&query); dynstr_free(&query);
} }
if (flush_logs) if (flush_logs)
{ {
if (mysql_refresh(sock, REFRESH_LOG)) if (mysql_refresh(mysql, REFRESH_LOG))
DB_error(sock, "when doing refresh"); DB_error(mysql, "when doing refresh");
/* We shall continue here, if --force was given */ /* We shall continue here, if --force was given */
} }
while ((table= getTableName(0))) while ((table= getTableName(0)))
...@@ -2752,12 +2758,12 @@ static int dump_all_tables_in_db(char *database) ...@@ -2752,12 +2758,12 @@ static int dump_all_tables_in_db(char *database)
my_free(order_by, MYF(MY_ALLOW_ZERO_PTR)); my_free(order_by, MYF(MY_ALLOW_ZERO_PTR));
order_by= 0; order_by= 0;
if (opt_dump_triggers && ! opt_xml && if (opt_dump_triggers && ! opt_xml &&
mysql_get_server_version(sock) >= 50009) mysql_get_server_version(mysql) >= 50009)
dump_triggers_for_table(table, database); dump_triggers_for_table(table, database);
} }
} }
if (opt_routines && !opt_xml && if (opt_routines && !opt_xml &&
mysql_get_server_version(sock) >= 50009) mysql_get_server_version(mysql) >= 50009)
{ {
DBUG_PRINT("info", ("Dumping routines for database %s", database)); DBUG_PRINT("info", ("Dumping routines for database %s", database));
dump_routines_for_db(database); dump_routines_for_db(database);
...@@ -2768,7 +2774,7 @@ static int dump_all_tables_in_db(char *database) ...@@ -2768,7 +2774,7 @@ static int dump_all_tables_in_db(char *database)
check_io(md_result_file); check_io(md_result_file);
} }
if (lock_tables) if (lock_tables)
VOID(mysql_query_with_error_report(sock, 0, "UNLOCK TABLES")); VOID(mysql_query_with_error_report(mysql, 0, "UNLOCK TABLES"));
return 0; return 0;
} /* dump_all_tables_in_db */ } /* dump_all_tables_in_db */
...@@ -2791,9 +2797,9 @@ static my_bool dump_all_views_in_db(char *database) ...@@ -2791,9 +2797,9 @@ static my_bool dump_all_views_in_db(char *database)
uint numrows; uint numrows;
char table_buff[NAME_LEN*2+3]; char table_buff[NAME_LEN*2+3];
if (mysql_select_db(sock, database)) if (mysql_select_db(mysql, database))
{ {
DB_error(sock, "when selecting the database"); DB_error(mysql, "when selecting the database");
return 1; return 1;
} }
if (opt_databases || opt_alldbs) if (opt_databases || opt_alldbs)
...@@ -2819,15 +2825,15 @@ static my_bool dump_all_views_in_db(char *database) ...@@ -2819,15 +2825,15 @@ static my_bool dump_all_views_in_db(char *database)
dynstr_append(&query, quote_name(table, table_buff, 1)); dynstr_append(&query, quote_name(table, table_buff, 1));
dynstr_append(&query, " READ /*!32311 LOCAL */,"); dynstr_append(&query, " READ /*!32311 LOCAL */,");
} }
if (numrows && mysql_real_query(sock, query.str, query.length-1)) if (numrows && mysql_real_query(mysql, query.str, query.length-1))
DB_error(sock, "when using LOCK TABLES"); DB_error(mysql, "when using LOCK TABLES");
/* We shall continue here, if --force was given */ /* We shall continue here, if --force was given */
dynstr_free(&query); dynstr_free(&query);
} }
if (flush_logs) if (flush_logs)
{ {
if (mysql_refresh(sock, REFRESH_LOG)) if (mysql_refresh(mysql, REFRESH_LOG))
DB_error(sock, "when doing refresh"); DB_error(mysql, "when doing refresh");
/* We shall continue here, if --force was given */ /* We shall continue here, if --force was given */
} }
while ((table= getTableName(0))) while ((table= getTableName(0)))
...@@ -2838,7 +2844,7 @@ static my_bool dump_all_views_in_db(char *database) ...@@ -2838,7 +2844,7 @@ static my_bool dump_all_views_in_db(char *database)
check_io(md_result_file); check_io(md_result_file);
} }
if (lock_tables) if (lock_tables)
VOID(mysql_query_with_error_report(sock, 0, "UNLOCK TABLES")); VOID(mysql_query_with_error_report(mysql, 0, "UNLOCK TABLES"));
return 0; return 0;
} /* dump_all_tables_in_db */ } /* dump_all_tables_in_db */
...@@ -2868,12 +2874,12 @@ static char *get_actual_table_name(const char *old_table_name, MEM_ROOT *root) ...@@ -2868,12 +2874,12 @@ static char *get_actual_table_name(const char *old_table_name, MEM_ROOT *root)
my_snprintf(query, sizeof(query), "SHOW TABLES LIKE %s", my_snprintf(query, sizeof(query), "SHOW TABLES LIKE %s",
quote_for_like(old_table_name, show_name_buff)); quote_for_like(old_table_name, show_name_buff));
if (mysql_query_with_error_report(sock, 0, query)) if (mysql_query_with_error_report(mysql, 0, query))
{ {
safe_exit(EX_MYSQLERR); safe_exit(EX_MYSQLERR);
} }
if ((table_res= mysql_store_result(sock))) if ((table_res= mysql_store_result(mysql)))
{ {
my_ulonglong num_rows= mysql_num_rows(table_res); my_ulonglong num_rows= mysql_num_rows(table_res);
if (num_rows > 0) if (num_rows > 0)
...@@ -2935,16 +2941,16 @@ static int dump_selected_tables(char *db, char **table_names, int tables) ...@@ -2935,16 +2941,16 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
if (lock_tables) if (lock_tables)
{ {
if (mysql_real_query(sock, lock_tables_query.str, if (mysql_real_query(mysql, lock_tables_query.str,
lock_tables_query.length-1)) lock_tables_query.length-1))
DB_error(sock, "when doing LOCK TABLES"); DB_error(mysql, "when doing LOCK TABLES");
/* We shall countinue here, if --force was given */ /* We shall countinue here, if --force was given */
} }
dynstr_free(&lock_tables_query); dynstr_free(&lock_tables_query);
if (flush_logs) if (flush_logs)
{ {
if (mysql_refresh(sock, REFRESH_LOG)) if (mysql_refresh(mysql, REFRESH_LOG))
DB_error(sock, "when doing refresh"); DB_error(mysql, "when doing refresh");
/* We shall countinue here, if --force was given */ /* We shall countinue here, if --force was given */
} }
if (opt_xml) if (opt_xml)
...@@ -2956,7 +2962,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables) ...@@ -2956,7 +2962,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
DBUG_PRINT("info",("Dumping table %s", *pos)); DBUG_PRINT("info",("Dumping table %s", *pos));
dump_table(*pos, db); dump_table(*pos, db);
if (opt_dump_triggers && if (opt_dump_triggers &&
mysql_get_server_version(sock) >= 50009) mysql_get_server_version(mysql) >= 50009)
dump_triggers_for_table(*pos, db); dump_triggers_for_table(*pos, db);
} }
...@@ -2968,7 +2974,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables) ...@@ -2968,7 +2974,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
} }
/* obtain dump of routines (procs/functions) */ /* obtain dump of routines (procs/functions) */
if (opt_routines && !opt_xml && if (opt_routines && !opt_xml &&
mysql_get_server_version(sock) >= 50009) mysql_get_server_version(mysql) >= 50009)
{ {
DBUG_PRINT("info", ("Dumping routines for database %s", db)); DBUG_PRINT("info", ("Dumping routines for database %s", db));
dump_routines_for_db(db); dump_routines_for_db(db);
...@@ -2982,7 +2988,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables) ...@@ -2982,7 +2988,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
check_io(md_result_file); check_io(md_result_file);
} }
if (lock_tables) if (lock_tables)
VOID(mysql_query_with_error_report(sock, 0, "UNLOCK TABLES")); VOID(mysql_query_with_error_report(mysql, 0, "UNLOCK TABLES"));
DBUG_RETURN(0); DBUG_RETURN(0);
} /* dump_selected_tables */ } /* dump_selected_tables */
...@@ -2995,8 +3001,6 @@ static int do_show_master_status(MYSQL *mysql_con) ...@@ -2995,8 +3001,6 @@ static int do_show_master_status(MYSQL *mysql_con)
(opt_master_data == MYSQL_OPT_MASTER_DATA_COMMENTED_SQL) ? "-- " : ""; (opt_master_data == MYSQL_OPT_MASTER_DATA_COMMENTED_SQL) ? "-- " : "";
if (mysql_query_with_error_report(mysql_con, &master, "SHOW MASTER STATUS")) if (mysql_query_with_error_report(mysql_con, &master, "SHOW MASTER STATUS"))
{ {
my_printf_error(0, "Error: Couldn't execute 'SHOW MASTER STATUS': %s",
MYF(0), mysql_error(mysql_con));
return 1; return 1;
} }
else else
...@@ -3167,7 +3171,7 @@ static void print_value(FILE *file, MYSQL_RES *result, MYSQL_ROW row, ...@@ -3167,7 +3171,7 @@ static void print_value(FILE *file, MYSQL_RES *result, MYSQL_ROW row,
table_type Type of table table_type Type of table
GLOBAL VARIABLES GLOBAL VARIABLES
sock MySQL socket mysql MySQL connection
verbose Write warning messages verbose Write warning messages
RETURN RETURN
...@@ -3186,14 +3190,12 @@ char check_if_ignore_table(const char *table_name, char *table_type) ...@@ -3186,14 +3190,12 @@ char check_if_ignore_table(const char *table_name, char *table_type)
DBUG_ASSERT(2*sizeof(table_name) < sizeof(show_name_buff)); DBUG_ASSERT(2*sizeof(table_name) < sizeof(show_name_buff));
my_snprintf(buff, sizeof(buff), "show table status like %s", my_snprintf(buff, sizeof(buff), "show table status like %s",
quote_for_like(table_name, show_name_buff)); quote_for_like(table_name, show_name_buff));
if (mysql_query_with_error_report(sock, &res, buff)) if (mysql_query_with_error_report(mysql, &res, buff))
{ {
if (mysql_errno(sock) != ER_PARSE_ERROR) if (mysql_errno(mysql) != ER_PARSE_ERROR)
{ /* If old MySQL version */ { /* If old MySQL version */
if (verbose) verbose_msg("-- Warning: Couldn't get status information for " \
fprintf(stderr, "table %s (%s)\n", table_name,mysql_error(mysql));
"-- Warning: Couldn't get status information for table %s (%s)\n",
table_name,mysql_error(sock));
DBUG_RETURN(result); /* assume table is ok */ DBUG_RETURN(result); /* assume table is ok */
} }
} }
...@@ -3201,7 +3203,7 @@ char check_if_ignore_table(const char *table_name, char *table_type) ...@@ -3201,7 +3203,7 @@ char check_if_ignore_table(const char *table_name, char *table_type)
{ {
fprintf(stderr, fprintf(stderr,
"Error: Couldn't read status information for table %s (%s)\n", "Error: Couldn't read status information for table %s (%s)\n",
table_name, mysql_error(sock)); table_name, mysql_error(mysql));
mysql_free_result(res); mysql_free_result(res);
DBUG_RETURN(result); /* assume table is ok */ DBUG_RETURN(result); /* assume table is ok */
} }
...@@ -3229,7 +3231,7 @@ char check_if_ignore_table(const char *table_name, char *table_type) ...@@ -3229,7 +3231,7 @@ char check_if_ignore_table(const char *table_name, char *table_type)
/* /*
If these two types, we do want to skip dumping the table If these two types, we do want to skip dumping the table
*/ */
if (!dFlag && if (!opt_no_data &&
(!strcmp(table_type,"MRG_MyISAM") || !strcmp(table_type,"MRG_ISAM"))) (!strcmp(table_type,"MRG_MyISAM") || !strcmp(table_type,"MRG_ISAM")))
result= IGNORE_DATA; result= IGNORE_DATA;
} }
...@@ -3237,6 +3239,7 @@ char check_if_ignore_table(const char *table_name, char *table_type) ...@@ -3237,6 +3239,7 @@ char check_if_ignore_table(const char *table_name, char *table_type)
DBUG_RETURN(result); DBUG_RETURN(result);
} }
/* /*
Get string of comma-separated primary key field names Get string of comma-separated primary key field names
...@@ -3266,12 +3269,12 @@ static char *primary_key_fields(const char *table_name) ...@@ -3266,12 +3269,12 @@ static char *primary_key_fields(const char *table_name)
my_snprintf(show_keys_buff, sizeof(show_keys_buff), my_snprintf(show_keys_buff, sizeof(show_keys_buff),
"SHOW KEYS FROM %s", table_name); "SHOW KEYS FROM %s", table_name);
if (mysql_query(sock, show_keys_buff) || if (mysql_query(mysql, show_keys_buff) ||
!(res = mysql_store_result(sock))) !(res = mysql_store_result(mysql)))
{ {
fprintf(stderr, "Warning: Couldn't read keys from table %s;" fprintf(stderr, "Warning: Couldn't read keys from table %s;"
" records are NOT sorted (%s)\n", " records are NOT sorted (%s)\n",
table_name, mysql_error(sock)); table_name, mysql_error(mysql));
/* Don't exit, because it's better to print out unsorted records */ /* Don't exit, because it's better to print out unsorted records */
goto cleanup; goto cleanup;
} }
...@@ -3376,11 +3379,10 @@ static my_bool get_view_structure(char *table, char* db) ...@@ -3376,11 +3379,10 @@ static my_bool get_view_structure(char *table, char* db)
FILE *sql_file = md_result_file; FILE *sql_file = md_result_file;
DBUG_ENTER("get_view_structure"); DBUG_ENTER("get_view_structure");
if (tFlag) /* Don't write table creation info */ if (opt_no_create_info) /* Don't write table creation info */
DBUG_RETURN(0); DBUG_RETURN(0);
if (verbose) verbose_msg("-- Retrieving view structure for table %s...\n", table);
fprintf(stderr, "-- Retrieving view structure for table %s...\n", table);
#ifdef NOT_REALLY_USED_YET #ifdef NOT_REALLY_USED_YET
sprintf(insert_pat,"SET OPTION SQL_QUOTE_SHOW_CREATE=%d", sprintf(insert_pat,"SET OPTION SQL_QUOTE_SHOW_CREATE=%d",
...@@ -3391,7 +3393,7 @@ static my_bool get_view_structure(char *table, char* db) ...@@ -3391,7 +3393,7 @@ static my_bool get_view_structure(char *table, char* db)
opt_quoted_table= quote_name(table, table_buff2, 0); opt_quoted_table= quote_name(table, table_buff2, 0);
my_snprintf(query, sizeof(query), "SHOW CREATE TABLE %s", result_table); my_snprintf(query, sizeof(query), "SHOW CREATE TABLE %s", result_table);
if (mysql_query_with_error_report(sock, &table_res, query)) if (mysql_query_with_error_report(mysql, &table_res, query))
{ {
safe_exit(EX_MYSQLERR); safe_exit(EX_MYSQLERR);
DBUG_RETURN(0); DBUG_RETURN(0);
...@@ -3401,8 +3403,7 @@ static my_bool get_view_structure(char *table, char* db) ...@@ -3401,8 +3403,7 @@ static my_bool get_view_structure(char *table, char* db)
field= mysql_fetch_field_direct(table_res, 0); field= mysql_fetch_field_direct(table_res, 0);
if (strcmp(field->name, "View") != 0) if (strcmp(field->name, "View") != 0)
{ {
if (verbose) verbose_msg("-- It's base table, skipped\n");
fprintf(stderr, "-- It's base table, skipped\n");
DBUG_RETURN(0); DBUG_RETURN(0);
} }
...@@ -3437,7 +3438,7 @@ static my_bool get_view_structure(char *table, char* db) ...@@ -3437,7 +3438,7 @@ static my_bool get_view_structure(char *table, char* db)
"SELECT CHECK_OPTION, DEFINER, SECURITY_TYPE " \ "SELECT CHECK_OPTION, DEFINER, SECURITY_TYPE " \
"FROM information_schema.views " \ "FROM information_schema.views " \
"WHERE table_name=\"%s\" AND table_schema=\"%s\"", table, db); "WHERE table_name=\"%s\" AND table_schema=\"%s\"", table, db);
if (mysql_query(sock, query)) if (mysql_query(mysql, query))
{ {
/* /*
Use the raw output from SHOW CREATE TABLE if Use the raw output from SHOW CREATE TABLE if
...@@ -3463,7 +3464,7 @@ static my_bool get_view_structure(char *table, char* db) ...@@ -3463,7 +3464,7 @@ static my_bool get_view_structure(char *table, char* db)
mysql_free_result(table_res); mysql_free_result(table_res);
/* Get the result from "select ... information_schema" */ /* Get the result from "select ... information_schema" */
if (!(table_res= mysql_store_result(sock)) || if (!(table_res= mysql_store_result(mysql)) ||
!(row= mysql_fetch_row(table_res))) !(row= mysql_fetch_row(table_res)))
{ {
safe_exit(EX_MYSQLERR); safe_exit(EX_MYSQLERR);
...@@ -3558,21 +3559,21 @@ int main(int argc, char **argv) ...@@ -3558,21 +3559,21 @@ int main(int argc, char **argv)
write_header(md_result_file, *argv); write_header(md_result_file, *argv);
if ((opt_lock_all_tables || opt_master_data) && if ((opt_lock_all_tables || opt_master_data) &&
do_flush_tables_read_lock(sock)) do_flush_tables_read_lock(mysql))
goto err; goto err;
if (opt_single_transaction && start_transaction(sock, test(opt_master_data))) if (opt_single_transaction && start_transaction(mysql, test(opt_master_data)))
goto err; goto err;
if (opt_delete_master_logs && do_reset_master(sock)) if (opt_delete_master_logs && do_reset_master(mysql))
goto err; goto err;
if (opt_lock_all_tables || opt_master_data) if (opt_lock_all_tables || opt_master_data)
{ {
if (flush_logs && mysql_refresh(sock, REFRESH_LOG)) if (flush_logs && mysql_refresh(mysql, REFRESH_LOG))
goto err; goto err;
flush_logs= 0; /* not anymore; that would not be sensible */ flush_logs= 0; /* not anymore; that would not be sensible */
} }
if (opt_master_data && do_show_master_status(sock)) if (opt_master_data && do_show_master_status(mysql))
goto err; goto err;
if (opt_single_transaction && do_unlock_tables(sock)) /* unlock but no commit! */ if (opt_single_transaction && do_unlock_tables(mysql)) /* unlock but no commit! */
goto err; goto err;
if (opt_alldbs) if (opt_alldbs)
......
...@@ -2875,3 +2875,19 @@ use mysqldump_dbb; ...@@ -2875,3 +2875,19 @@ use mysqldump_dbb;
drop view v1; drop view v1;
drop table t1; drop table t1;
drop database mysqldump_dbb; drop database mysqldump_dbb;
use test;
create user mysqltest_1;
create table t1(a int, b varchar(34));
mysqldump: Couldn't execute 'FLUSH TABLES': Access denied; you need the RELOAD privilege for this operation (1227)
mysqldump: Couldn't execute 'FLUSH TABLES': Access denied; you need the RELOAD privilege for this operation (1227)
grant RELOAD on *.* to mysqltest_1@localhost;
mysqldump: Couldn't execute 'SHOW MASTER STATUS': Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation (1227)
mysqldump: Couldn't execute 'SHOW MASTER STATUS': Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation (1227)
grant REPLICATION CLIENT on *.* to mysqltest_1@localhost;
CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000003', MASTER_LOG_POS=9227;
CREATE TABLE `t1` (
`a` int(11) default NULL,
`b` varchar(34) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
drop table t1;
drop user mysqltest_1;
...@@ -1266,3 +1266,43 @@ use mysqldump_dbb; ...@@ -1266,3 +1266,43 @@ use mysqldump_dbb;
drop view v1; drop view v1;
drop table t1; drop table t1;
drop database mysqldump_dbb; drop database mysqldump_dbb;
#
# Bug#21215 mysqldump creating incomplete backups without warning
#
use test;
# Create user without sufficient privs to perform the requested operation
create user mysqltest_1;
create table t1(a int, b varchar(34));
# Execute mysqldump, will fail on FLUSH TABLES
--error 2
--exec $MYSQL_DUMP --compact --master-data -u mysqltest_1 test 2>&1
# Execute mysqldump, will fail on FLUSH TABLES
# use --force, should no affect behaviour
--error 2
--exec $MYSQL_DUMP --compact --force --master-data -u mysqltest_1 test 2>&1
# Add RELOAD grants
grant RELOAD on *.* to mysqltest_1@localhost;
# Execute mysqldump, will fail on SHOW MASTER STATUS
--error 2
--exec $MYSQL_DUMP --compact --master-data -u mysqltest_1 test 2>&1
# Execute mysqldump, will fail on SHOW MASTER STATUS.
# use --force, should not alter behaviour
--error 2
--exec $MYSQL_DUMP --compact --force --master-data -u mysqltest_1 test 2>&1
# Add REPLICATION CLIENT grants
grant REPLICATION CLIENT on *.* to mysqltest_1@localhost;
# Execute mysqldump, should now succeed
--exec $MYSQL_DUMP --compact --master-data -u mysqltest_1 test 2>&1
# Clean up
drop table t1;
drop user mysqltest_1;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment