mirror of
https://github.com/MariaDB/server.git
synced 2025-02-10 07:34:11 +01:00
![Kartik Soneji](/assets/img/avatar_default.png)
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.
18 lines
672 B
Text
18 lines
672 B
Text
let $alg = $MTR_COMBINATIONS;
|
|
|
|
if (`SELECT COUNT(*) = 0 FROM information_schema.plugins WHERE plugin_name = "provider_$alg" AND plugin_status = "active"`)
|
|
{
|
|
skip Needs provider_$alg plugin;
|
|
}
|
|
|
|
--echo #
|
|
--echo # Testing unloaded compression provider: $alg
|
|
--echo #
|
|
|
|
--echo # Innodb_have_$alg reflects that the provider is loaded
|
|
eval SHOW GLOBAL STATUS WHERE Variable_name = "Innodb_have_$alg";
|
|
|
|
--echo # Innodb_compression_algorithm can be set to $alg
|
|
let $innodb_compression_algorithm_orig = `SELECT @@Innodb_compression_algorithm`;
|
|
eval SET GLOBAL Innodb_compression_algorithm = $alg;
|
|
eval SET GLOBAL Innodb_compression_algorithm = $innodb_compression_algorithm_orig;
|