Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
10a7b8ce
Commit
10a7b8ce
authored
Aug 03, 2006
by
msvensson@neptunus.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge neptunus.(none):/home/msvensson/mysql/mysql-5.0
into neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint
parents
c71ac0ef
61c5d973
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
208 additions
and
151 deletions
+208
-151
client/mysqldump.c
client/mysqldump.c
+152
-151
mysql-test/r/mysqldump.result
mysql-test/r/mysqldump.result
+16
-0
mysql-test/t/mysqldump.test
mysql-test/t/mysqldump.test
+40
-0
No files found.
client/mysqldump.c
View file @
10a7b8ce
...
...
@@ -83,7 +83,8 @@ static ulong find_set(TYPELIB *lib, const char *x, uint length,
static
char
*
alloc_query_str
(
ulong
size
);
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
,
opt_drop
=
1
,
opt_keywords
=
0
,
opt_lock
=
1
,
opt_compress
=
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,
opt_complete_insert
=
0
,
opt_drop_database
=
0
,
opt_dump_triggers
=
0
,
opt_routines
=
0
,
opt_tz_utc
=
1
;
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
DYNAMIC_STRING
insert_pat
;
static
char
*
opt_password
=
0
,
*
current_user
=
0
,
...
...
@@ -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
,
0
,
0
,
0
,
0
},
{
"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
},
{
"no-data"
,
'd'
,
"No row information."
,
(
gptr
*
)
&
dFlag
,
(
gptr
*
)
&
dFlag
,
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_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'
,
"Deprecated. Use --skip-set-charset instead."
,
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);
#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)
...
...
@@ -851,9 +877,9 @@ static int mysql_query_with_error_report(MYSQL *mysql_con, MYSQL_RES **res,
if
(
mysql_query
(
mysql_con
,
query
)
||
(
res
&&
!
((
*
res
)
=
mysql_store_result
(
mysql_con
))))
{
my_printf_error
(
0
,
"
%s: Couldn't execute '%s': %s (%d)"
,
MYF
(
0
),
my_progname
,
query
,
mysql_error
(
mysql_con
),
mysql_errno
(
mysql_con
)
);
my_printf_error
(
0
,
"
Couldn't execute '%s': %s (%d)"
,
MYF
(
0
)
,
query
,
mysql_error
(
mysql_con
),
mysql_errno
(
mysql_con
));
safe_exit
(
EX_MYSQLERR
);
return
1
;
}
return
0
;
...
...
@@ -887,8 +913,8 @@ static void safe_exit(int error)
first_error
=
error
;
if
(
ignore_errors
)
return
;
if
(
sock
)
mysql_close
(
sock
);
if
(
mysql
)
mysql_close
(
mysql
);
exit
(
error
);
}
/* safe_exit */
...
...
@@ -901,10 +927,8 @@ static int dbConnect(char *host, char *user,char *passwd)
{
char
buff
[
20
+
FN_REFLEN
];
DBUG_ENTER
(
"dbConnect"
);
if
(
verbose
)
{
fprintf
(
stderr
,
"-- Connecting to %s...
\n
"
,
host
?
host
:
"localhost"
);
}
verbose_msg
(
"-- Connecting to %s...
\n
"
,
host
?
host
:
"localhost"
);
mysql_init
(
&
mysql_connection
);
if
(
opt_compress
)
mysql_options
(
&
mysql_connection
,
MYSQL_OPT_COMPRESS
,
NullS
);
...
...
@@ -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
);
#endif
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
,
0
)))
{
...
...
@@ -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
cannot reconnect.
*/
sock
->
reconnect
=
0
;
mysql
->
reconnect
=
0
;
my_snprintf
(
buff
,
sizeof
(
buff
),
"/*!40100 SET @@SQL_MODE='%s' */"
,
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
);
return
1
;
}
...
...
@@ -954,9 +977,8 @@ static int dbConnect(char *host, char *user,char *passwd)
if
(
opt_tz_utc
)
{
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
);
return
1
;
}
...
...
@@ -970,9 +992,8 @@ static int dbConnect(char *host, char *user,char *passwd)
*/
static
void
dbDisconnect
(
char
*
host
)
{
if
(
verbose
)
fprintf
(
stderr
,
"-- Disconnecting from %s...
\n
"
,
host
?
host
:
"localhost"
);
mysql_close
(
sock
);
verbose_msg
(
"-- Disconnecting from %s...
\n
"
,
host
?
host
:
"localhost"
);
mysql_close
(
mysql
);
}
/* dbDisconnect */
...
...
@@ -1265,7 +1286,7 @@ static uint dump_routines_for_db(char *db)
DBUG_ENTER
(
"dump_routines_for_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 */
if
(
opt_comments
)
...
...
@@ -1276,7 +1297,7 @@ static uint dump_routines_for_db(char *db)
enough privileges to lock mysql.proc.
*/
if
(
lock_tables
)
mysql_query
(
sock
,
"LOCK TABLES mysql.proc READ"
);
mysql_query
(
mysql
,
"LOCK TABLES mysql.proc READ"
);
fprintf
(
sql_file
,
"DELIMITER ;;
\n
"
);
...
...
@@ -1287,7 +1308,7 @@ static uint dump_routines_for_db(char *db)
"SHOW %s STATUS WHERE Db = '%s'"
,
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
);
if
(
mysql_num_rows
(
routine_list_res
))
...
...
@@ -1301,7 +1322,7 @@ static uint dump_routines_for_db(char *db)
my_snprintf
(
query_buff
,
sizeof
(
query_buff
),
"SHOW CREATE %s %s"
,
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
);
while
((
row
=
mysql_fetch_row
(
routine_res
)))
...
...
@@ -1383,7 +1404,7 @@ static uint dump_routines_for_db(char *db)
fprintf
(
sql_file
,
"DELIMITER ;
\n
"
);
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
);
}
...
...
@@ -1425,10 +1446,8 @@ static uint get_table_structure(char *table, char *db, char *table_type,
if
(
delayed
&&
(
*
ignore_flag
&
IGNORE_INSERT_DELAYED
))
{
delayed
=
0
;
if
(
verbose
)
fprintf
(
stderr
,
"-- Warning: Unable to use delayed inserts for table '%s' "
"because it's of type %s
\n
"
,
table
,
table_type
);
verbose_msg
(
"-- Warning: Unable to use delayed inserts for table '%s' "
"because it's of type %s
\n
"
,
table
,
table_type
);
}
complete_insert
=
0
;
...
...
@@ -1444,8 +1463,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
insert_option
=
((
delayed
&&
opt_ignore
)
?
" DELAYED IGNORE "
:
delayed
?
" DELAYED "
:
opt_ignore
?
" IGNORE "
:
""
);
if
(
verbose
)
fprintf
(
stderr
,
"-- Retrieving table structure for table %s...
\n
"
,
table
);
verbose_msg
(
"-- Retrieving table structure for table %s...
\n
"
,
table
);
len
=
my_snprintf
(
query_buff
,
sizeof
(
query_buff
),
"SET OPTION SQL_QUOTE_SHOW_CREATE=%d"
,
...
...
@@ -1460,17 +1478,17 @@ static uint get_table_structure(char *table, char *db, char *table_type,
if
(
opt_order_by_primary
)
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 */
if
(
!
tFlag
)
if
(
!
opt_no_create_info
)
{
/* Make an sql-file, if path was given iow. option -T was given */
char
buff
[
20
+
FN_REFLEN
];
MYSQL_FIELD
*
field
;
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
);
DBUG_RETURN
(
0
);
...
...
@@ -1506,14 +1524,13 @@ static uint get_table_structure(char *table, char *db, char *table_type,
check_io
(
sql_file
);
}
result
=
mysql_store_result
(
sock
);
result
=
mysql_store_result
(
mysql
);
field
=
mysql_fetch_field_direct
(
result
,
0
);
if
(
strcmp
(
field
->
name
,
"View"
)
==
0
)
{
char
*
scv_buff
=
NULL
;
if
(
verbose
)
fprintf
(
stderr
,
"-- It's a view, create dummy table for view
\n
"
);
verbose_msg
(
"-- It's a view, create dummy table for view
\n
"
);
/* save "show create" statement for later */
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,
*/
my_snprintf
(
query_buff
,
sizeof
(
query_buff
),
"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),
...
...
@@ -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)
*/
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
:
""
);
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,
else
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
))
{
...
...
@@ -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"
,
result_table
);
if
(
mysql_query_with_error_report
(
sock
,
&
result
,
query_buff
))
if
(
mysql_query_with_error_report
(
mysql
,
&
result
,
query_buff
))
{
if
(
path
)
my_fclose
(
sql_file
,
MYF
(
MY_WME
));
...
...
@@ -1656,21 +1673,19 @@ static uint get_table_structure(char *table, char *db, char *table_type,
}
else
{
if
(
verbose
)
fprintf
(
stderr
,
"%s: Warning: Can't set SQL_QUOTE_SHOW_CREATE option (%s)
\n
"
,
my_progname
,
mysql_error
(
sock
));
verbose_msg
(
"%s: Warning: Can't set SQL_QUOTE_SHOW_CREATE option (%s)
\n
"
,
my_progname
,
mysql_error
(
mysql
));
my_snprintf
(
query_buff
,
sizeof
(
query_buff
),
"show fields from %s"
,
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
);
DBUG_RETURN
(
0
);
}
/* Make an sql-file, if path was given iow. option -T was given */
if
(
!
tFlag
)
if
(
!
opt_no_create_info
)
{
if
(
path
)
{
...
...
@@ -1714,7 +1729,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
ulong
*
lengths
=
mysql_fetch_lengths
(
result
);
if
(
init
)
{
if
(
!
opt_xml
&&
!
tFlag
)
if
(
!
opt_xml
&&
!
opt_no_create_info
)
{
fputs
(
",
\n
"
,
sql_file
);
check_io
(
sql_file
);
...
...
@@ -1726,7 +1741,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
if
(
opt_complete_insert
)
dynstr_append
(
&
insert_pat
,
quote_name
(
row
[
SHOW_FIELDNAME
],
name_buff
,
0
));
if
(
!
tFlag
)
if
(
!
opt_no_create_info
)
{
if
(
opt_xml
)
{
...
...
@@ -1756,22 +1771,22 @@ static uint get_table_structure(char *table, char *db, char *table_type,
}
num_fields
=
mysql_num_rows
(
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 */
char
buff
[
20
+
FN_REFLEN
];
uint
keynr
,
primary_key
;
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 */
fputs
(
"
\t\t
<options Comment=
\"
view
\"
/>
\n
"
,
sql_file
);
goto
continue_xml
;
}
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
)
my_fclose
(
sql_file
,
MYF
(
MY_WME
));
safe_exit
(
EX_MYSQLERR
);
...
...
@@ -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"
,
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
(
verbose
)
fprintf
(
stderr
,
"-- Warning: Couldn't get status information for table %s (%s)
\n
"
,
result_table
,
mysql_error
(
sock
));
verbose_msg
(
"-- Warning: Couldn't get status information for "
\
"table %s (%s)
\n
"
,
result_table
,
mysql_error
(
mysql
));
}
}
else
if
(
!
(
row
=
mysql_fetch_row
(
result
)))
{
fprintf
(
stderr
,
"Error: Couldn't read status information for table %s (%s)
\n
"
,
result_table
,
mysql_error
(
sock
));
result_table
,
mysql_error
(
mysql
));
}
else
{
...
...
@@ -1931,7 +1944,7 @@ static void dump_triggers_for_table (char *table, char *db)
"SHOW TRIGGERS LIKE %s"
,
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
)
my_fclose
(
sql_file
,
MYF
(
MY_WME
));
...
...
@@ -2101,12 +2114,10 @@ static void dump_table(char *table, char *db)
return
;
/* Check --no-data flag */
if
(
dFlag
)
if
(
opt_no_data
)
{
if
(
verbose
)
fprintf
(
stderr
,
"-- Skipping dump data for table '%s', --no-data was used
\n
"
,
table
);
verbose_msg
(
"-- Skipping dump data for table '%s', --no-data was used
\n
"
,
table
);
DBUG_VOID_RETURN
;
}
...
...
@@ -2119,27 +2130,22 @@ static void dump_table(char *table, char *db)
*/
if
(
ignore_flag
&
IGNORE_DATA
)
{
if
(
verbose
)
fprintf
(
stderr
,
"-- Warning: Skipping data for table '%s' because it's of type %s
\n
"
,
table
,
table_type
);
verbose_msg
(
"-- Warning: Skipping data for table '%s' because "
\
"it's of type %s
\n
"
,
table
,
table_type
);
DBUG_VOID_RETURN
;
}
/* Check that there are any fields in the table */
if
(
num_fields
==
0
)
{
if
(
verbose
)
fprintf
(
stderr
,
"-- Skipping dump data for table '%s', it has no fields
\n
"
,
table
);
verbose_msg
(
"-- Skipping dump data for table '%s', it has no fields
\n
"
,
table
);
DBUG_VOID_RETURN
;
}
result_table
=
quote_name
(
table
,
table_buff
,
1
);
opt_quoted_table
=
quote_name
(
table
,
table_buff2
,
0
);
if
(
verbose
)
fprintf
(
stderr
,
"-- Sending SELECT query...
\n
"
);
verbose_msg
(
"-- Sending SELECT query...
\n
"
);
if
(
path
)
{
char
filename
[
FN_REFLEN
],
tmp_path
[
FN_REFLEN
];
...
...
@@ -2177,9 +2183,9 @@ static void dump_table(char *table, char *db)
if
(
order_by
)
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
;
}
}
...
...
@@ -2225,19 +2231,19 @@ static void dump_table(char *table, char *db)
fputs
(
"
\n
"
,
md_result_file
);
check_io
(
md_result_file
);
}
if
(
mysql_query_with_error_report
(
sock
,
0
,
query
))
DB_error
(
sock
,
"when retrieving data from server"
);
if
(
mysql_query_with_error_report
(
mysql
,
0
,
query
))
DB_error
(
mysql
,
"when retrieving data from server"
);
if
(
quick
)
res
=
mysql_use_result
(
sock
);
res
=
mysql_use_result
(
mysql
);
else
res
=
mysql_store_result
(
sock
);
res
=
mysql_store_result
(
mysql
);
if
(
!
res
)
{
DB_error
(
sock
,
"when retrieving data from server"
);
DB_error
(
mysql
,
"when retrieving data from server"
);
goto
err
;
}
if
(
verbose
)
fprintf
(
stderr
,
"-- Retrieving rows...
\n
"
);
verbose_msg
(
"-- Retrieving rows...
\n
"
);
if
(
mysql_num_fields
(
res
)
!=
num_fields
)
{
fprintf
(
stderr
,
"%s: Error in field count for table: %s ! Aborting.
\n
"
,
...
...
@@ -2506,13 +2512,13 @@ static void dump_table(char *table, char *db)
fputs
(
";
\n
"
,
md_result_file
);
/* If not empty table */
fflush
(
md_result_file
);
check_io
(
md_result_file
);
if
(
mysql_errno
(
sock
))
if
(
mysql_errno
(
mysql
))
{
my_snprintf
(
query
,
QUERY_LENGTH
,
"%s: Error %d: %s when dumping table %s at row: %ld
\n
"
,
my_progname
,
mysql_errno
(
sock
),
mysql_error
(
sock
),
mysql_errno
(
mysql
),
mysql_error
(
mysql
),
result_table
,
rownr
);
fputs
(
query
,
stderr
);
...
...
@@ -2558,7 +2564,7 @@ static char *getTableName(int reset)
if
(
!
res
)
{
if
(
!
(
res
=
mysql_list_tables
(
sock
,
NullS
)))
if
(
!
(
res
=
mysql_list_tables
(
mysql
,
NullS
)))
return
(
NULL
);
}
if
((
row
=
mysql_fetch_row
(
res
)))
...
...
@@ -2581,7 +2587,7 @@ static int dump_all_databases()
MYSQL_RES
*
tableres
;
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
;
while
((
row
=
mysql_fetch_row
(
tableres
)))
{
...
...
@@ -2590,11 +2596,11 @@ static int dump_all_databases()
}
if
(
seen_views
)
{
if
(
mysql_query
(
sock
,
"SHOW DATABASES"
)
||
!
(
tableres
=
mysql_store_result
(
sock
)))
if
(
mysql_query
(
mysql
,
"SHOW DATABASES"
)
||
!
(
tableres
=
mysql_store_result
(
mysql
)))
{
my_printf_error
(
0
,
"Error: Couldn't execute 'SHOW DATABASES': %s"
,
MYF
(
0
),
mysql_error
(
sock
));
MYF
(
0
),
mysql_error
(
mysql
));
return
1
;
}
while
((
row
=
mysql_fetch_row
(
tableres
)))
...
...
@@ -2631,13 +2637,13 @@ static int dump_databases(char **db_names)
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"
))
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 */
}
if
(
!
path
&&
!
opt_xml
)
...
...
@@ -2664,7 +2670,7 @@ static int init_dumping(char *database)
"SHOW CREATE DATABASE IF NOT EXISTS %s"
,
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 */
if
(
opt_drop_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
,
" READ /*!32311 LOCAL */,"
);
}
if
(
numrows
&&
mysql_real_query
(
sock
,
query
.
str
,
query
.
length
-
1
))
DB_error
(
sock
,
"when using LOCK TABLES"
);
if
(
numrows
&&
mysql_real_query
(
mysql
,
query
.
str
,
query
.
length
-
1
))
DB_error
(
mysql
,
"when using LOCK TABLES"
);
/* We shall continue here, if --force was given */
dynstr_free
(
&
query
);
}
if
(
flush_logs
)
{
if
(
mysql_refresh
(
sock
,
REFRESH_LOG
))
DB_error
(
sock
,
"when doing refresh"
);
if
(
mysql_refresh
(
mysql
,
REFRESH_LOG
))
DB_error
(
mysql
,
"when doing refresh"
);
/* We shall continue here, if --force was given */
}
while
((
table
=
getTableName
(
0
)))
...
...
@@ -2752,12 +2758,12 @@ static int dump_all_tables_in_db(char *database)
my_free
(
order_by
,
MYF
(
MY_ALLOW_ZERO_PTR
));
order_by
=
0
;
if
(
opt_dump_triggers
&&
!
opt_xml
&&
mysql_get_server_version
(
sock
)
>=
50009
)
mysql_get_server_version
(
mysql
)
>=
50009
)
dump_triggers_for_table
(
table
,
database
);
}
}
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
));
dump_routines_for_db
(
database
);
...
...
@@ -2768,7 +2774,7 @@ static int dump_all_tables_in_db(char *database)
check_io
(
md_result_file
);
}
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
;
}
/* dump_all_tables_in_db */
...
...
@@ -2791,9 +2797,9 @@ static my_bool dump_all_views_in_db(char *database)
uint
numrows
;
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
;
}
if
(
opt_databases
||
opt_alldbs
)
...
...
@@ -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
,
" READ /*!32311 LOCAL */,"
);
}
if
(
numrows
&&
mysql_real_query
(
sock
,
query
.
str
,
query
.
length
-
1
))
DB_error
(
sock
,
"when using LOCK TABLES"
);
if
(
numrows
&&
mysql_real_query
(
mysql
,
query
.
str
,
query
.
length
-
1
))
DB_error
(
mysql
,
"when using LOCK TABLES"
);
/* We shall continue here, if --force was given */
dynstr_free
(
&
query
);
}
if
(
flush_logs
)
{
if
(
mysql_refresh
(
sock
,
REFRESH_LOG
))
DB_error
(
sock
,
"when doing refresh"
);
if
(
mysql_refresh
(
mysql
,
REFRESH_LOG
))
DB_error
(
mysql
,
"when doing refresh"
);
/* We shall continue here, if --force was given */
}
while
((
table
=
getTableName
(
0
)))
...
...
@@ -2838,7 +2844,7 @@ static my_bool dump_all_views_in_db(char *database)
check_io
(
md_result_file
);
}
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
;
}
/* dump_all_tables_in_db */
...
...
@@ -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"
,
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
);
}
if
((
table_res
=
mysql_store_result
(
sock
)))
if
((
table_res
=
mysql_store_result
(
mysql
)))
{
my_ulonglong
num_rows
=
mysql_num_rows
(
table_res
);
if
(
num_rows
>
0
)
...
...
@@ -2935,16 +2941,16 @@ static int dump_selected_tables(char *db, char **table_names, int 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
))
DB_error
(
sock
,
"when doing LOCK TABLES"
);
DB_error
(
mysql
,
"when doing LOCK TABLES"
);
/* We shall countinue here, if --force was given */
}
dynstr_free
(
&
lock_tables_query
);
if
(
flush_logs
)
{
if
(
mysql_refresh
(
sock
,
REFRESH_LOG
))
DB_error
(
sock
,
"when doing refresh"
);
if
(
mysql_refresh
(
mysql
,
REFRESH_LOG
))
DB_error
(
mysql
,
"when doing refresh"
);
/* We shall countinue here, if --force was given */
}
if
(
opt_xml
)
...
...
@@ -2956,7 +2962,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
DBUG_PRINT
(
"info"
,(
"Dumping table %s"
,
*
pos
));
dump_table
(
*
pos
,
db
);
if
(
opt_dump_triggers
&&
mysql_get_server_version
(
sock
)
>=
50009
)
mysql_get_server_version
(
mysql
)
>=
50009
)
dump_triggers_for_table
(
*
pos
,
db
);
}
...
...
@@ -2968,7 +2974,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
}
/* obtain dump of routines (procs/functions) */
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
));
dump_routines_for_db
(
db
);
...
...
@@ -2982,7 +2988,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
check_io
(
md_result_file
);
}
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
);
}
/* dump_selected_tables */
...
...
@@ -2995,8 +3001,6 @@ static int do_show_master_status(MYSQL *mysql_con)
(
opt_master_data
==
MYSQL_OPT_MASTER_DATA_COMMENTED_SQL
)
?
"-- "
:
""
;
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
;
}
else
...
...
@@ -3167,7 +3171,7 @@ static void print_value(FILE *file, MYSQL_RES *result, MYSQL_ROW row,
table_type Type of table
GLOBAL VARIABLES
sock MySQL socket
mysql MySQL connection
verbose Write warning messages
RETURN
...
...
@@ -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
));
my_snprintf
(
buff
,
sizeof
(
buff
),
"show table status like %s"
,
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
(
verbose
)
fprintf
(
stderr
,
"-- Warning: Couldn't get status information for table %s (%s)
\n
"
,
table_name
,
mysql_error
(
sock
));
verbose_msg
(
"-- Warning: Couldn't get status information for "
\
"table %s (%s)
\n
"
,
table_name
,
mysql_error
(
mysql
));
DBUG_RETURN
(
result
);
/* assume table is ok */
}
}
...
...
@@ -3201,7 +3203,7 @@ char check_if_ignore_table(const char *table_name, char *table_type)
{
fprintf
(
stderr
,
"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
);
DBUG_RETURN
(
result
);
/* assume table is ok */
}
...
...
@@ -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
(
!
dFlag
&&
if
(
!
opt_no_data
&&
(
!
strcmp
(
table_type
,
"MRG_MyISAM"
)
||
!
strcmp
(
table_type
,
"MRG_ISAM"
)))
result
=
IGNORE_DATA
;
}
...
...
@@ -3237,6 +3239,7 @@ char check_if_ignore_table(const char *table_name, char *table_type)
DBUG_RETURN
(
result
);
}
/*
Get string of comma-separated primary key field names
...
...
@@ -3266,12 +3269,12 @@ static char *primary_key_fields(const char *table_name)
my_snprintf
(
show_keys_buff
,
sizeof
(
show_keys_buff
),
"SHOW KEYS FROM %s"
,
table_name
);
if
(
mysql_query
(
sock
,
show_keys_buff
)
||
!
(
res
=
mysql_store_result
(
sock
)))
if
(
mysql_query
(
mysql
,
show_keys_buff
)
||
!
(
res
=
mysql_store_result
(
mysql
)))
{
fprintf
(
stderr
,
"Warning: Couldn't read keys from table %s;"
" 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 */
goto
cleanup
;
}
...
...
@@ -3376,11 +3379,10 @@ static my_bool get_view_structure(char *table, char* db)
FILE
*
sql_file
=
md_result_file
;
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
);
if
(
verbose
)
fprintf
(
stderr
,
"-- Retrieving view structure for table %s...
\n
"
,
table
);
verbose_msg
(
"-- Retrieving view structure for table %s...
\n
"
,
table
);
#ifdef NOT_REALLY_USED_YET
sprintf
(
insert_pat
,
"SET OPTION SQL_QUOTE_SHOW_CREATE=%d"
,
...
...
@@ -3391,7 +3393,7 @@ static my_bool get_view_structure(char *table, char* db)
opt_quoted_table
=
quote_name
(
table
,
table_buff2
,
0
);
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
);
DBUG_RETURN
(
0
);
...
...
@@ -3401,8 +3403,7 @@ static my_bool get_view_structure(char *table, char* db)
field
=
mysql_fetch_field_direct
(
table_res
,
0
);
if
(
strcmp
(
field
->
name
,
"View"
)
!=
0
)
{
if
(
verbose
)
fprintf
(
stderr
,
"-- It's base table, skipped
\n
"
);
verbose_msg
(
"-- It's base table, skipped
\n
"
);
DBUG_RETURN
(
0
);
}
...
...
@@ -3437,7 +3438,7 @@ static my_bool get_view_structure(char *table, char* db)
"SELECT CHECK_OPTION, DEFINER, SECURITY_TYPE "
\
"FROM information_schema.views "
\
"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
...
...
@@ -3463,7 +3464,7 @@ static my_bool get_view_structure(char *table, char* db)
mysql_free_result
(
table_res
);
/* 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
)))
{
safe_exit
(
EX_MYSQLERR
);
...
...
@@ -3558,21 +3559,21 @@ int main(int argc, char **argv)
write_header
(
md_result_file
,
*
argv
);
if
((
opt_lock_all_tables
||
opt_master_data
)
&&
do_flush_tables_read_lock
(
sock
))
do_flush_tables_read_lock
(
mysql
))
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
;
if
(
opt_delete_master_logs
&&
do_reset_master
(
sock
))
if
(
opt_delete_master_logs
&&
do_reset_master
(
mysql
))
goto
err
;
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
;
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
;
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
;
if
(
opt_alldbs
)
...
...
mysql-test/r/mysqldump.result
View file @
10a7b8ce
...
...
@@ -2875,3 +2875,19 @@ use mysqldump_dbb;
drop view v1;
drop table t1;
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;
mysql-test/t/mysqldump.test
View file @
10a7b8ce
...
...
@@ -1266,3 +1266,43 @@ use mysqldump_dbb;
drop
view
v1
;
drop
table
t1
;
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
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment