summaryrefslogtreecommitdiff
path: root/client/mysqldump.c
diff options
context:
space:
mode:
authorunknown <stewart@willster.(none)>2006-09-19 17:07:21 +1000
committerunknown <stewart@willster.(none)>2006-09-19 17:07:21 +1000
commit11d3c64f67914dc456f6526d36abcb70a29726ec (patch)
tree0fdea4710ba2fa5aee6ed5e42c017a8cf731ffe7 /client/mysqldump.c
parentc7f93b417054ed747b1e6ae97261a50019175fba (diff)
downloadmariadb-git-11d3c64f67914dc456f6526d36abcb70a29726ec.tar.gz
BUG#20809 mysqldump does not backup TS and LG information correctly.
We were not parsing the EXTRA field to get UNDO_BUFFER_SIZE for the CREATE LOGFILE GROUP statement in the dump. client/mysqldump.c: parse the EXTRA field of INFORMATION_SCHEMA.FILES to determine the UNDO_BUFFER_SIZE
Diffstat (limited to 'client/mysqldump.c')
-rw-r--r--client/mysqldump.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/client/mysqldump.c b/client/mysqldump.c
index 83a7d0f335e..445b4043ca6 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -2737,6 +2737,12 @@ static int dump_all_tablespaces()
MYSQL_RES *tableres;
char buf[FN_REFLEN];
int first;
+ /*
+ The following are used for parsing the EXTRA field
+ */
+ char extra_format[]= "UNDO_BUFFER_SIZE=";
+ char *ubs;
+ char *endsemi;
if (mysql_query_with_error_report(mysql, &tableres,
"SELECT DISTINCT"
@@ -2744,9 +2750,11 @@ static int dump_all_tablespaces()
" FILE_NAME,"
" TOTAL_EXTENTS,"
" INITIAL_SIZE,"
- " ENGINE"
+ " ENGINE,"
+ " EXTRA"
" FROM INFORMATION_SCHEMA.FILES"
" WHERE FILE_TYPE = \"UNDO LOG\""
+ " AND FILE_NAME IS NOT NULL"
" ORDER BY LOGFILE_GROUP_NAME"))
return 1;
@@ -2775,9 +2783,16 @@ static int dump_all_tablespaces()
row[1]);
if (first)
{
+ ubs= strstr(row[5],extra_format);
+ if(!ubs)
+ break;
+ ubs+= strlen(extra_format);
+ endsemi= strstr(ubs,";");
+ if(endsemi)
+ endsemi[0]= '\0';
fprintf(md_result_file,
" UNDO_BUFFER_SIZE %s\n",
- row[2]);
+ ubs);
}
fprintf(md_result_file,
" INITIAL_SIZE %s\n"