mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +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.
63 lines
2.3 KiB
Text
63 lines
2.3 KiB
Text
/*****************************************************************************
|
|
|
|
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
|
|
|
|
*****************************************************************************/
|
|
|
|
/******************************************************************//**
|
|
@file include/fsp0pagecompress.ic
|
|
Implementation for helper functions for extracting/storing page
|
|
compression and atomic writes information to file space.
|
|
|
|
Created 11/12/2013 Jan Lindström jan.lindstrom@mariadb.com
|
|
|
|
***********************************************************************/
|
|
|
|
/********************************************************************//**
|
|
Determine the tablespace is page compression level from dict_table_t::flags.
|
|
@return page compression level or 0 if not compressed*/
|
|
UNIV_INLINE
|
|
ulint
|
|
fsp_flags_get_page_compression_level(
|
|
/*=================================*/
|
|
ulint flags) /*!< in: tablespace flags */
|
|
{
|
|
return(FSP_FLAGS_GET_PAGE_COMPRESSION_LEVEL(flags));
|
|
}
|
|
|
|
|
|
/*******************************************************************//**
|
|
Find out wheather the page is page compressed
|
|
@return true if page is page compressed, false if not */
|
|
UNIV_INLINE
|
|
bool
|
|
fil_page_is_compressed(
|
|
/*===================*/
|
|
const byte* buf) /*!< in: page */
|
|
{
|
|
return(mach_read_from_2(buf+FIL_PAGE_TYPE) == FIL_PAGE_PAGE_COMPRESSED);
|
|
}
|
|
|
|
/*******************************************************************//**
|
|
Find out wheather the page is page compressed
|
|
@return true if page is page compressed, false if not */
|
|
UNIV_INLINE
|
|
bool
|
|
fil_page_is_compressed_encrypted(
|
|
/*=============================*/
|
|
const byte* buf) /*!< in: page */
|
|
{
|
|
return(mach_read_from_2(buf+FIL_PAGE_TYPE) == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED);
|
|
}
|