Commit 1b7aae90 authored by Alexey Botchkov's avatar Alexey Botchkov

MDEV-11904 Make Audit Plugin working with MySQL 8.0.

        MySQL 8.0 basically inherits the 5.7 model, though some
        modeifications required for the plugin.
parent 6364adb1
......@@ -2297,10 +2297,10 @@ typedef struct loc_system_variables
} LOC_SV;
static int init_done= 0;
static int server_audit_init(void *p __attribute__((unused)))
{
const void *my_hash_init_ptr;
if (!serv_ver)
{
#ifdef _WIN32
......@@ -2309,11 +2309,16 @@ static int server_audit_init(void *p __attribute__((unused)))
serv_ver= server_version;
#endif /*_WIN32*/
}
my_hash_init_ptr= dlsym(RTLD_DEFAULT, "_my_hash_init");
if (!my_hash_init_ptr)
if (!mysql_57_started)
{
maria_above_5= 1;
my_hash_init_ptr= dlsym(RTLD_DEFAULT, "my_hash_init2");
const void *my_hash_init_ptr= dlsym(RTLD_DEFAULT, "_my_hash_init");
if (!my_hash_init_ptr)
{
maria_above_5= 1;
my_hash_init_ptr= dlsym(RTLD_DEFAULT, "my_hash_init2");
}
if (!my_hash_init_ptr)
return 1;
}
if(!(int_mysql_data_home= dlsym(RTLD_DEFAULT, "mysql_data_home")))
......@@ -2322,7 +2327,7 @@ static int server_audit_init(void *p __attribute__((unused)))
int_mysql_data_home= &default_home;
}
if (!serv_ver || !my_hash_init_ptr)
if (!serv_ver)
return 1;
if (!started_mysql)
......@@ -2402,6 +2407,7 @@ static int server_audit_init(void *p __attribute__((unused)))
if (logging)
start_logging();
init_done= 1;
return 0;
}
......@@ -2417,6 +2423,10 @@ static int server_audit_init_mysql(void *p)
static int server_audit_deinit(void *p __attribute__((unused)))
{
if (!init_done)
return 0;
init_done= 0;
coll_free(&incl_user_coll);
coll_free(&excl_user_coll);
......@@ -2839,13 +2849,15 @@ void __attribute__ ((constructor)) audit_plugin_so_init(void)
if (sc >= 24)
use_event_data_for_disconnect= 1;
}
else if (serv_ver[0] == '5' && serv_ver[2] == '7')
else if ((serv_ver[0] == '5' && serv_ver[2] == '7') ||
(serv_ver[0] == '8' && serv_ver[2] == '0'))
{
mysql_57_started= 1;
_mysql_plugin_declarations_[0].info= mysql_v4_descriptor;
use_event_data_for_disconnect= 1;
}
MYSQL_SYSVAR_NAME(loc_info).flags= PLUGIN_VAR_READONLY | PLUGIN_VAR_MEMALLOC;
MYSQL_SYSVAR_NAME(loc_info).flags= PLUGIN_VAR_STR | PLUGIN_VAR_THDLOCAL |
PLUGIN_VAR_READONLY | PLUGIN_VAR_MEMALLOC;
}
memset(locinfo_ini_value, 'O', sizeof(locinfo_ini_value)-1);
......
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