Skip to content
Permalink
Browse files
MDEV-13023 mariabackup does not preserve holes for page compressed ta…
…bles.

Changed "local" datasink logic to detect page compressed Innodb tables.

Whenever such table is detected, holes in the copied files are created by
skipping over binary zeros at the end of each compressed page.
  • Loading branch information
vaintroub committed Mar 23, 2018
1 parent ca29101 commit af86422
Show file tree
Hide file tree
Showing 11 changed files with 281 additions and 166 deletions.
@@ -61,7 +61,7 @@ MYSQL_ADD_EXECUTABLE(mariabackup
datasink.c
ds_buffer.c
ds_compress.c
ds_local.c
ds_local.cc
ds_stdout.c
ds_tmpfile.c
ds_xbstream.c
@@ -98,7 +98,7 @@ ENDIF()
########################################################################
MYSQL_ADD_EXECUTABLE(mbstream
ds_buffer.c
ds_local.c
ds_local.cc
ds_stdout.c
datasink.c
xbstream.c
@@ -112,6 +112,7 @@ TARGET_LINK_LIBRARIES(mbstream
mysys
crc
)
ADD_DEPENDENCIES(mbstream GenError)

IF(MSVC)
SET_TARGET_PROPERTIES(mbstream PROPERTIES LINK_FLAGS setargv.obj)
@@ -108,7 +108,7 @@ Write to a datasink file.
int
ds_write(ds_file_t *file, const void *buf, size_t len)
{
return file->datasink->write(file, buf, len);
return file->datasink->write(file, (const uchar *)buf, len);
}

/************************************************************************
@@ -48,7 +48,7 @@ typedef struct {
struct datasink_struct {
ds_ctxt_t *(*init)(const char *root);
ds_file_t *(*open)(ds_ctxt_t *ctxt, const char *path, MY_STAT *stat);
int (*write)(ds_file_t *file, const void *buf, size_t len);
int (*write)(ds_file_t *file, const unsigned char *buf, size_t len);
int (*close)(ds_file_t *file);
void (*deinit)(ds_ctxt_t *ctxt);
};
@@ -45,7 +45,7 @@ typedef struct {
static ds_ctxt_t *buffer_init(const char *root);
static ds_file_t *buffer_open(ds_ctxt_t *ctxt, const char *path,
MY_STAT *mystat);
static int buffer_write(ds_file_t *file, const void *buf, size_t len);
static int buffer_write(ds_file_t *file, const uchar *buf, size_t len);
static int buffer_close(ds_file_t *file);
static void buffer_deinit(ds_ctxt_t *ctxt);

@@ -119,7 +119,7 @@ buffer_open(ds_ctxt_t *ctxt, const char *path, MY_STAT *mystat)
}

static int
buffer_write(ds_file_t *file, const void *buf, size_t len)
buffer_write(ds_file_t *file, const uchar *buf, size_t len)
{
ds_buffer_file_t *buffer_file;

@@ -65,7 +65,7 @@ extern ulonglong xtrabackup_compress_chunk_size;
static ds_ctxt_t *compress_init(const char *root);
static ds_file_t *compress_open(ds_ctxt_t *ctxt, const char *path,
MY_STAT *mystat);
static int compress_write(ds_file_t *file, const void *buf, size_t len);
static int compress_write(ds_file_t *file, const uchar *buf, size_t len);
static int compress_close(ds_file_t *file);
static void compress_deinit(ds_ctxt_t *ctxt);

@@ -178,7 +178,7 @@ compress_open(ds_ctxt_t *ctxt, const char *path, MY_STAT *mystat)

static
int
compress_write(ds_file_t *file, const void *buf, size_t len)
compress_write(ds_file_t *file, const uchar *buf, size_t len)
{
ds_compress_file_t *comp_file;
ds_compress_ctxt_t *comp_ctxt;

This file was deleted.

0 comments on commit af86422

Please sign in to comment.