-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MDEV-12933 sort out the compression library chaos
bzip2/lz4/lzma/lzo/snappy compression is now provided via *services* they're almost like normal services, but in include/providers/ and they're supposed to provide exactly the same interface as original compression libraries (but not everything, only enough of if for the code to compile). the services are implemented via dummy functions that return corresponding error values (LZMA_PROG_ERROR, LZO_E_INTERNAL_ERROR, etc). the actual compression libraries are linked into corresponding provider plugins. Providers are daemon plugins that when loaded replace service pointers to point to actual compression functions. That is, run-time dependency on compression libraries is now on plugins, and the server doesn't need any compression libraries to run, but will automatically support the compression when a plugin is loaded. InnoDB and Mroonga use compression plugins now. RocksDB doesn't, because it comes with standalone utility binaries that cannot load plugins.
- Loading branch information
1 parent
c356714
commit bf8b699
Showing
94 changed files
with
1,954 additions
and
451 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
etc/mysql/mariadb.conf.d/provider_bzip2.cnf | ||
usr/lib/mysql/plugin/provider_bzip2.so |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
etc/mysql/mariadb.conf.d/provider_lz4.cnf | ||
usr/lib/mysql/plugin/provider_lz4.so |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
etc/mysql/mariadb.conf.d/provider_lzma.cnf | ||
usr/lib/mysql/plugin/provider_lzma.so |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
etc/mysql/mariadb.conf.d/provider_lzo.cnf | ||
usr/lib/mysql/plugin/provider_lzo.so |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
etc/mysql/mariadb.conf.d/provider_snappy.cnf | ||
usr/lib/mysql/plugin/provider_snappy.so |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
/** | ||
@file bzlib.h | ||
This service provides dynamic access to BZip2. | ||
*/ | ||
|
||
#ifndef BZIP2_INCLUDED | ||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
#ifndef MYSQL_ABI_CHECK | ||
#include <stdbool.h> | ||
#endif | ||
|
||
#ifndef BZ_RUN | ||
#define BZ_RUN 0 | ||
#define BZ_FINISH 2 | ||
|
||
#define BZ_OK 0 | ||
#define BZ_RUN_OK 1 | ||
#define BZ_FINISH_OK 3 | ||
#define BZ_STREAM_END 4 | ||
|
||
typedef struct | ||
{ | ||
char *next_in; | ||
unsigned int avail_in; | ||
unsigned int total_in_lo32; | ||
unsigned int total_in_hi32; | ||
|
||
char *next_out; | ||
unsigned int avail_out; | ||
unsigned int total_out_lo32; | ||
unsigned int total_out_hi32; | ||
|
||
void *state; | ||
|
||
void *(*bzalloc)(void *, int, int); | ||
void (*bzfree)(void *, void *); | ||
void *opaque; | ||
} bz_stream; | ||
|
||
#define BZ2_bzBuffToBuffCompress(...) provider_service_bzip2->BZ2_bzBuffToBuffCompress_ptr (__VA_ARGS__) | ||
#define BZ2_bzBuffToBuffDecompress(...) provider_service_bzip2->BZ2_bzBuffToBuffDecompress_ptr (__VA_ARGS__) | ||
#define BZ2_bzCompress(...) provider_service_bzip2->BZ2_bzCompress_ptr (__VA_ARGS__) | ||
#define BZ2_bzCompressEnd(...) provider_service_bzip2->BZ2_bzCompressEnd_ptr (__VA_ARGS__) | ||
#define BZ2_bzCompressInit(...) provider_service_bzip2->BZ2_bzCompressInit_ptr (__VA_ARGS__) | ||
#define BZ2_bzDecompress(...) provider_service_bzip2->BZ2_bzDecompress_ptr (__VA_ARGS__) | ||
#define BZ2_bzDecompressEnd(...) provider_service_bzip2->BZ2_bzDecompressEnd_ptr (__VA_ARGS__) | ||
#define BZ2_bzDecompressInit(...) provider_service_bzip2->BZ2_bzDecompressInit_ptr (__VA_ARGS__) | ||
#endif | ||
|
||
#define DEFINE_BZ2_bzBuffToBuffCompress(NAME) NAME( \ | ||
char *dest, \ | ||
unsigned int *destLen, \ | ||
char *source, \ | ||
unsigned int sourceLen, \ | ||
int blockSize100k, \ | ||
int verbosity, \ | ||
int workFactor \ | ||
) | ||
|
||
#define DEFINE_BZ2_bzBuffToBuffDecompress(NAME) NAME( \ | ||
char *dest, \ | ||
unsigned int *destLen, \ | ||
char *source, \ | ||
unsigned int sourceLen, \ | ||
int small, \ | ||
int verbosity \ | ||
) | ||
|
||
#define DEFINE_BZ2_bzCompress(NAME) NAME( \ | ||
bz_stream *strm, \ | ||
int action \ | ||
) | ||
|
||
#define DEFINE_BZ2_bzCompressEnd(NAME) NAME( \ | ||
bz_stream *strm \ | ||
) | ||
|
||
#define DEFINE_BZ2_bzCompressInit(NAME) NAME( \ | ||
bz_stream *strm, \ | ||
int blockSize100k, \ | ||
int verbosity, \ | ||
int workFactor \ | ||
) | ||
|
||
#define DEFINE_BZ2_bzDecompress(NAME) NAME( \ | ||
bz_stream *strm \ | ||
) | ||
|
||
#define DEFINE_BZ2_bzDecompressEnd(NAME) NAME( \ | ||
bz_stream *strm \ | ||
) | ||
|
||
#define DEFINE_BZ2_bzDecompressInit(NAME) NAME( \ | ||
bz_stream *strm, \ | ||
int verbosity, \ | ||
int small \ | ||
) | ||
|
||
struct provider_service_bzip2_st{ | ||
int DEFINE_BZ2_bzBuffToBuffCompress((*BZ2_bzBuffToBuffCompress_ptr)); | ||
int DEFINE_BZ2_bzBuffToBuffDecompress((*BZ2_bzBuffToBuffDecompress_ptr)); | ||
int DEFINE_BZ2_bzCompress((*BZ2_bzCompress_ptr)); | ||
int DEFINE_BZ2_bzCompressEnd((*BZ2_bzCompressEnd_ptr)); | ||
int DEFINE_BZ2_bzCompressInit((*BZ2_bzCompressInit_ptr)); | ||
int DEFINE_BZ2_bzDecompress((*BZ2_bzDecompress_ptr)); | ||
int DEFINE_BZ2_bzDecompressEnd((*BZ2_bzDecompressEnd_ptr)); | ||
int DEFINE_BZ2_bzDecompressInit((*BZ2_bzDecompressInit_ptr)); | ||
|
||
bool is_loaded; | ||
}; | ||
|
||
extern struct provider_service_bzip2_st *provider_service_bzip2; | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#define BZIP2_INCLUDED | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
/** | ||
@file lz4.h | ||
This service provides dynamic access to LZ4. | ||
*/ | ||
|
||
#ifndef LZ4_INCLUDED | ||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
#ifndef MYSQL_ABI_CHECK | ||
#include <stdbool.h> | ||
#include <stddef.h> | ||
#include <stdint.h> | ||
#endif | ||
|
||
#ifndef LZ4_VERSION_NUMBER | ||
#define LZ4_MAX_INPUT_SIZE 0x7E000000 | ||
|
||
#define LZ4_compressBound(...) provider_service_lz4->LZ4_compressBound_ptr (__VA_ARGS__) | ||
#define LZ4_compress_default(...) provider_service_lz4->LZ4_compress_default_ptr (__VA_ARGS__) | ||
#define LZ4_decompress_safe(...) provider_service_lz4->LZ4_decompress_safe_ptr (__VA_ARGS__) | ||
#endif | ||
|
||
#define DEFINE_LZ4_compressBound(NAME) NAME( \ | ||
int inputSize \ | ||
) | ||
|
||
#define DEFINE_LZ4_compress_default(NAME) NAME( \ | ||
const char *src, \ | ||
char *dst, \ | ||
int srcSize, \ | ||
int dstCapacity \ | ||
) | ||
|
||
#define DEFINE_LZ4_decompress_safe(NAME) NAME( \ | ||
const char *src, \ | ||
char *dst, \ | ||
int compressedSize, \ | ||
int dstCapacity \ | ||
) | ||
|
||
struct provider_service_lz4_st | ||
{ | ||
int DEFINE_LZ4_compressBound((*LZ4_compressBound_ptr)); | ||
int DEFINE_LZ4_compress_default((*LZ4_compress_default_ptr)); | ||
int DEFINE_LZ4_decompress_safe((*LZ4_decompress_safe_ptr)); | ||
|
||
bool is_loaded; | ||
}; | ||
|
||
extern struct provider_service_lz4_st *provider_service_lz4; | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#define LZ4_INCLUDED | ||
#endif |
Oops, something went wrong.