Bug #30444: 5.0 mysqldump silently allows wrong backup to be taken against a 4.0 database
The combination of --single-transaction and --master-data requires START TRANSACTION WITH CONSISTENT SNAPSHOT which is available from mysqld 4.1 on. When trying this against an older server, print diagnostic, then, if --force is not given, abort. No test-case given since it would require a mysqld < 4.1.
This commit is contained in:
parent
7dbf738f4a
commit
c623e73e8f
@ -2428,6 +2428,18 @@ static int start_transaction(MYSQL *mysql_con)
|
|||||||
need the REPEATABLE READ level (not anything lower, for example READ
|
need the REPEATABLE READ level (not anything lower, for example READ
|
||||||
COMMITTED would give one new consistent read per dumped table).
|
COMMITTED would give one new consistent read per dumped table).
|
||||||
*/
|
*/
|
||||||
|
if ((mysql_get_server_version(mysql_con) < 40100) && opt_master_data)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "-- %s: the combination of --single-transaction and "
|
||||||
|
"--master-data requires a MySQL server version of at least 4.1 "
|
||||||
|
"(current server's version is %s). %s\n",
|
||||||
|
ignore_errors ? "Warning" : "Error",
|
||||||
|
mysql_con->server_version ? mysql_con->server_version : "unknown",
|
||||||
|
ignore_errors ? "Continuing due to --force, backup may not be consistent across all tables!" : "Aborting.");
|
||||||
|
if (!ignore_errors)
|
||||||
|
exit(EX_MYSQLERR);
|
||||||
|
}
|
||||||
|
|
||||||
return (mysql_query_with_error_report(mysql_con, 0,
|
return (mysql_query_with_error_report(mysql_con, 0,
|
||||||
"SET SESSION TRANSACTION ISOLATION "
|
"SET SESSION TRANSACTION ISOLATION "
|
||||||
"LEVEL REPEATABLE READ") ||
|
"LEVEL REPEATABLE READ") ||
|
||||||
|
Loading…
x
Reference in New Issue
Block a user