Commit f566698f authored by marko's avatar marko

branches/zip: fil_node_open_file(): In InnoDB Hot Backup,

determine the page size of single-file tablespaces before computing
the file node size.  Otherwise, the space->size of compressed tablespaces
would be computed with UNIV_PAGE_SIZE instead of key_block_size.
This should fix Issue #313.
parent 8c71c0fd
...@@ -613,12 +613,10 @@ fil_node_open_file( ...@@ -613,12 +613,10 @@ fil_node_open_file(
ulint size_high; ulint size_high;
ibool ret; ibool ret;
ibool success; ibool success;
#ifndef UNIV_HOTBACKUP
byte* buf2; byte* buf2;
byte* page; byte* page;
ulint space_id; ulint space_id;
ulint flags; ulint flags;
#endif /* !UNIV_HOTBACKUP */
ut_ad(mutex_own(&(system->mutex))); ut_ad(mutex_own(&(system->mutex)));
ut_a(node->n_pending == 0); ut_a(node->n_pending == 0);
...@@ -654,9 +652,11 @@ fil_node_open_file( ...@@ -654,9 +652,11 @@ fil_node_open_file(
size_bytes = (((ib_int64_t)size_high) << 32) size_bytes = (((ib_int64_t)size_high) << 32)
+ (ib_int64_t)size_low; + (ib_int64_t)size_low;
#ifdef UNIV_HOTBACKUP #ifdef UNIV_HOTBACKUP
if (space->id == 0) {
node->size = (ulint) (size_bytes / UNIV_PAGE_SIZE); node->size = (ulint) (size_bytes / UNIV_PAGE_SIZE);
/* TODO: adjust to zip_size, like below? */ goto add_size;
#else }
#endif /* UNIV_HOTBACKUP */
ut_a(space->purpose != FIL_LOG); ut_a(space->purpose != FIL_LOG);
ut_a(space->id != 0); ut_a(space->id != 0);
...@@ -735,7 +735,10 @@ fil_node_open_file( ...@@ -735,7 +735,10 @@ fil_node_open_file(
(size_bytes (size_bytes
/ dict_table_flags_to_zip_size(flags)); / dict_table_flags_to_zip_size(flags));
} }
#endif
#ifdef UNIV_HOTBACKUP
add_size:
#endif /* UNIV_HOTBACKUP */
space->size += node->size; space->size += node->size;
} }
......
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