mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
BUG#47059 - In audit plugin I cannot see the event subclasses,
e.g.MYSQL_AUDIT_GENERAL_ERROR General audit API (MYSQL_AUDIT_GENERAL_CLASS) didn't expose event subclass to plugins. This patch exposes event subclass to plugins via struct mysql_event_general::event_subclass. This change is not compatible with existing general audit plugins. Audit interface major version has been incremented.
This commit is contained in:
@ -22,6 +22,9 @@
|
||||
#endif
|
||||
|
||||
static volatile int number_of_calls; /* for SHOW STATUS, see below */
|
||||
static volatile int number_of_calls_general_log;
|
||||
static volatile int number_of_calls_general_error;
|
||||
static volatile int number_of_calls_general_result;
|
||||
|
||||
|
||||
/*
|
||||
@ -41,6 +44,9 @@ static volatile int number_of_calls; /* for SHOW STATUS, see below */
|
||||
static int audit_null_plugin_init(void *arg __attribute__((unused)))
|
||||
{
|
||||
number_of_calls= 0;
|
||||
number_of_calls_general_log= 0;
|
||||
number_of_calls_general_error= 0;
|
||||
number_of_calls_general_result= 0;
|
||||
return(0);
|
||||
}
|
||||
|
||||
@ -60,7 +66,6 @@ static int audit_null_plugin_init(void *arg __attribute__((unused)))
|
||||
|
||||
static int audit_null_plugin_deinit(void *arg __attribute__((unused)))
|
||||
{
|
||||
printf("audit_null was invoked %u times\n", number_of_calls);
|
||||
return(0);
|
||||
}
|
||||
|
||||
@ -76,11 +81,29 @@ static int audit_null_plugin_deinit(void *arg __attribute__((unused)))
|
||||
*/
|
||||
|
||||
static void audit_null_notify(MYSQL_THD thd __attribute__((unused)),
|
||||
const struct mysql_event *event
|
||||
__attribute__((unused)))
|
||||
const struct mysql_event *event)
|
||||
{
|
||||
/* prone to races, oh well */
|
||||
number_of_calls++;
|
||||
if (event->event_class == MYSQL_AUDIT_GENERAL_CLASS)
|
||||
{
|
||||
const struct mysql_event_general *event_general=
|
||||
(const struct mysql_event_general *) event;
|
||||
switch (event_general->event_subclass)
|
||||
{
|
||||
case MYSQL_AUDIT_GENERAL_LOG:
|
||||
number_of_calls_general_log++;
|
||||
break;
|
||||
case MYSQL_AUDIT_GENERAL_ERROR:
|
||||
number_of_calls_general_error++;
|
||||
break;
|
||||
case MYSQL_AUDIT_GENERAL_RESULT:
|
||||
number_of_calls_general_result++;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -90,10 +113,10 @@ static void audit_null_notify(MYSQL_THD thd __attribute__((unused)),
|
||||
|
||||
static struct st_mysql_audit audit_null_descriptor=
|
||||
{
|
||||
MYSQL_AUDIT_INTERFACE_VERSION, /* interface version */
|
||||
NULL, /* release_thd function */
|
||||
audit_null_notify, /* notify function */
|
||||
{ (unsigned long) -1 } /* class mask */
|
||||
MYSQL_AUDIT_INTERFACE_VERSION, /* interface version */
|
||||
NULL, /* release_thd function */
|
||||
audit_null_notify, /* notify function */
|
||||
{ (unsigned long) MYSQL_AUDIT_GENERAL_CLASSMASK } /* class mask */
|
||||
};
|
||||
|
||||
/*
|
||||
@ -102,8 +125,13 @@ static struct st_mysql_audit audit_null_descriptor=
|
||||
|
||||
static struct st_mysql_show_var simple_status[]=
|
||||
{
|
||||
{"audit_null_called", (char *)&number_of_calls, SHOW_INT},
|
||||
{0,0,0}
|
||||
{ "Audit_null_called", (char *) &number_of_calls, SHOW_INT },
|
||||
{ "Audit_null_general_log", (char *) &number_of_calls_general_log, SHOW_INT },
|
||||
{ "Audit_null_general_error", (char *) &number_of_calls_general_error,
|
||||
SHOW_INT },
|
||||
{ "Audit_null_general_result", (char *) &number_of_calls_general_result,
|
||||
SHOW_INT },
|
||||
{ 0, 0, 0}
|
||||
};
|
||||
|
||||
|
||||
@ -121,7 +149,7 @@ mysql_declare_plugin(audit_null)
|
||||
PLUGIN_LICENSE_GPL,
|
||||
audit_null_plugin_init, /* init function (when loaded) */
|
||||
audit_null_plugin_deinit, /* deinit function (when unloaded) */
|
||||
0x0001, /* version */
|
||||
0x0002, /* version */
|
||||
simple_status, /* status variables */
|
||||
NULL, /* system variables */
|
||||
NULL
|
||||
|
Reference in New Issue
Block a user