Commit 5099d6de authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-12863 No table can be created after second encryption plugin attempted to load

when deinitializing encryption plugins, disable server-wide encryption
only if this plugin is the one that is used for encryption.
parent 8e8d42dd
call mtr.add_suppression('debug.key.management');
install soname 'debug_key_management';
ERROR HY000: Can't initialize function 'debug_key_management'; Plugin initialization function failed.
create table t1 (a varchar(255)) engine=innodb encrypted=yes;
create table t2 (a varchar(255)) engine=innodb;
create table t3 (a varchar(255)) engine=innodb encrypted=no;
drop table t1, t2, t3;
#
# MDEV-12863 No table can be created after second encryption plugin attempted to load
#
--source include/have_innodb.inc
--source include/have_file_key_management_plugin.inc
call mtr.add_suppression('debug.key.management');
--error 1123
install soname 'debug_key_management';
create table t1 (a varchar(255)) engine=innodb encrypted=yes;
create table t2 (a varchar(255)) engine=innodb;
create table t3 (a varchar(255)) engine=innodb encrypted=no;
drop table t1, t2, t3;
......@@ -98,19 +98,27 @@ int initialize_encryption_plugin(st_plugin_int *plugin)
int finalize_encryption_plugin(st_plugin_int *plugin)
{
encryption_handler.encryption_key_get_func=
(uint (*)(uint, uint, uchar*, uint*))no_key;
encryption_handler.encryption_key_get_latest_version_func= no_key;
encryption_handler.encryption_ctx_size_func= zero_size;
bool used= plugin_ref_to_int(encryption_manager) == plugin;
if (used)
{
encryption_handler.encryption_key_get_func=
(uint (*)(uint, uint, uchar*, uint*))no_key;
encryption_handler.encryption_key_get_latest_version_func= no_key;
encryption_handler.encryption_ctx_size_func= zero_size;
}
if (plugin && plugin->plugin->deinit && plugin->plugin->deinit(NULL))
{
DBUG_PRINT("warning", ("Plugin '%s' deinit function returned error.",
plugin->name.str));
}
if (encryption_manager)
if (used)
{
plugin_unlock(NULL, encryption_manager);
encryption_manager= 0;
encryption_manager= 0;
}
return 0;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment