mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 02:51:44 +01:00
2ca904f0ca
fil_page_decompress(): Replaces fil_decompress_page(). Allow the caller detect errors. Remove duplicated code. Use the "safe" instead of "fast" variants of decompression routines. fil_page_compress(): Replaces fil_compress_page(). The length of the input buffer always was srv_page_size (innodb_page_size). Remove printouts, and remove the fil_space_t* parameter. buf_tmp_buffer_t::reserved: Make private; the accessors acquire() and release() will use atomic memory access. buf_pool_reserve_tmp_slot(): Make static. Remove the second parameter. Do not acquire any mutex. Remove the allocation of the buffers. buf_tmp_reserve_crypt_buf(), buf_tmp_reserve_compression_buf(): Refactored away from buf_pool_reserve_tmp_slot(). buf_page_decrypt_after_read(): Make static, and simplify the logic. Use the encryption buffer also for decompressing. buf_page_io_complete(), buf_dblwr_process(): Check more failures. fil_space_encrypt(): Simplify the debug checks. fil_space_t::printed_compression_failure: Remove. fil_get_compression_alg_name(): Remove. fil_iterate(): Allocate a buffer for compression and decompression only once, instead of allocating and freeing it for every page that uses compression, during IMPORT TABLESPACE. Also, validate the page checksum before decryption, and reduce the scope of some variables. fil_page_is_index_page(), fil_page_is_lzo_compressed(): Remove (unused). AbstractCallback::operator()(): Remove the parameter 'offset'. The check for it in FetchIndexRootPages::operator() was basically redundant and dead code since the previous refactoring.
53 lines
2.2 KiB
C
53 lines
2.2 KiB
C
/*****************************************************************************
|
|
|
|
Copyright (C) 2013, 2018 MariaDB Corporation.
|
|
|
|
This program is free software; you can redistribute it and/or modify it under
|
|
the terms of the GNU General Public License as published by the Free Software
|
|
Foundation; version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
this program; if not, write to the Free Software Foundation, Inc.,
|
|
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
*****************************************************************************/
|
|
|
|
#ifndef fil0pagecompress_h
|
|
#define fil0pagecompress_h
|
|
|
|
#include "fsp0fsp.h"
|
|
#include "fsp0pagecompress.h"
|
|
|
|
/******************************************************************//**
|
|
@file include/fil0pagecompress.h
|
|
Helper functions for extracting/storing page compression and
|
|
atomic writes information to table space.
|
|
|
|
Created 11/12/2013 Jan Lindström jan.lindstrom@skysql.com
|
|
***********************************************************************/
|
|
|
|
/** Compress a page_compressed page before writing to a data file.
|
|
@param[in] buf page to be compressed
|
|
@param[out] out_buf compressed page
|
|
@param[in] level compression level
|
|
@param[in] block_size file system block size
|
|
@param[in] encrypted whether the page will be subsequently encrypted
|
|
@return actual length of compressed page
|
|
@retval 0 if the page was not compressed */
|
|
ulint fil_page_compress(const byte* buf, byte* out_buf, ulint level,
|
|
ulint block_size, bool encrypted)
|
|
MY_ATTRIBUTE((nonnull, warn_unused_result));
|
|
|
|
/** Decompress a page that may be subject to page_compressed compression.
|
|
@param[in,out] tmp_buf temporary buffer (of innodb_page_size)
|
|
@param[in,out] buf compressed page buffer
|
|
@return size of the compressed data
|
|
@retval 0 if decompression failed
|
|
@retval srv_page_size if the page was not compressed */
|
|
ulint fil_page_decompress(byte* tmp_buf, byte* buf)
|
|
MY_ATTRIBUTE((nonnull, warn_unused_result));
|
|
#endif
|