mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
MDEV-11905: encryption.innodb-discard-import test fails
Problem was that on import with buffered input/output trim is not possible as we write several pages in one write.
This commit is contained in:
@ -1 +0,0 @@
|
|||||||
--loose-innodb-use-trim=0
|
|
@ -5669,7 +5669,9 @@ struct fil_iterator_t {
|
|||||||
for IO */
|
for IO */
|
||||||
byte* io_buffer; /*!< Buffer to use for IO */
|
byte* io_buffer; /*!< Buffer to use for IO */
|
||||||
fil_space_crypt_t *crypt_data; /*!< MariaDB Crypt data (if encrypted) */
|
fil_space_crypt_t *crypt_data; /*!< MariaDB Crypt data (if encrypted) */
|
||||||
byte* crypt_io_buffer; /*!< MariaDB IO buffer when encrypted */
|
byte* crypt_io_buffer; /*!< MariaDB IO buffer when
|
||||||
|
encrypted */
|
||||||
|
dict_table_t* table; /*!< Imported table */
|
||||||
};
|
};
|
||||||
|
|
||||||
/********************************************************************//**
|
/********************************************************************//**
|
||||||
@ -5877,16 +5879,21 @@ fil_iterate(
|
|||||||
|
|
||||||
if (page_compressed) {
|
if (page_compressed) {
|
||||||
ulint len = 0;
|
ulint len = 0;
|
||||||
fil_compress_page(space_id,
|
|
||||||
|
byte * res = fil_compress_page(space_id,
|
||||||
src,
|
src,
|
||||||
NULL,
|
NULL,
|
||||||
size,
|
size,
|
||||||
fil_space_get_page_compression_level(space_id),
|
dict_table_page_compression_level(iter.table),
|
||||||
fil_space_get_block_size(space_id, offset, size),
|
fil_space_get_block_size(space_id, offset, size),
|
||||||
encrypted,
|
encrypted,
|
||||||
&len,
|
&len,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
if (len != size) {
|
||||||
|
memset(res+len, 0, size-len);
|
||||||
|
}
|
||||||
|
|
||||||
updated = true;
|
updated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5936,6 +5943,9 @@ fil_iterate(
|
|||||||
ib::error() << "os_file_write() failed";
|
ib::error() << "os_file_write() failed";
|
||||||
return(err);
|
return(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Clean up the temporal buffer. */
|
||||||
|
memset(writeptr, 0, n_bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(DB_SUCCESS);
|
return(DB_SUCCESS);
|
||||||
@ -6054,6 +6064,7 @@ fil_tablespace_iterate(
|
|||||||
iter.file_size = file_size;
|
iter.file_size = file_size;
|
||||||
iter.n_io_buffers = n_io_buffers;
|
iter.n_io_buffers = n_io_buffers;
|
||||||
iter.page_size = callback.get_page_size().physical();
|
iter.page_size = callback.get_page_size().physical();
|
||||||
|
iter.table = table;
|
||||||
|
|
||||||
/* read (optional) crypt data */
|
/* read (optional) crypt data */
|
||||||
iter.crypt_data = fil_space_read_crypt_data(
|
iter.crypt_data = fil_space_read_crypt_data(
|
||||||
|
@ -355,6 +355,7 @@ fil_compress_page(
|
|||||||
if (allocated) {
|
if (allocated) {
|
||||||
/* TODO: reduce number of memcpy's */
|
/* TODO: reduce number of memcpy's */
|
||||||
memcpy(buf, out_buf, len);
|
memcpy(buf, out_buf, len);
|
||||||
|
goto exit_free;
|
||||||
} else {
|
} else {
|
||||||
return(out_buf);
|
return(out_buf);
|
||||||
}
|
}
|
||||||
@ -380,6 +381,7 @@ err_exit:
|
|||||||
srv_stats.pages_page_compression_error.inc();
|
srv_stats.pages_page_compression_error.inc();
|
||||||
*out_len = len;
|
*out_len = len;
|
||||||
|
|
||||||
|
exit_free:
|
||||||
if (allocated) {
|
if (allocated) {
|
||||||
ut_free(out_buf);
|
ut_free(out_buf);
|
||||||
#ifdef HAVE_LZO
|
#ifdef HAVE_LZO
|
||||||
|
Reference in New Issue
Block a user