1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

MDEV-19275 Provide SQL service to plugins.

Protocol_local fixed so it can be used now.
Some Protocol:: methods made virtual so they can adapt.
as well as net_ok and net_send_error functions.
execute_sql_string function is exported to the plugins.
To be changed with the mysql_use_result.
This commit is contained in:
Alexey Botchkov
2020-08-14 21:04:25 +04:00
parent 68cba09173
commit b01c426146
15 changed files with 816 additions and 416 deletions

View File

@ -254,35 +254,36 @@ void mysql_audit_notify_connection_disconnect(THD *thd, int errcode)
}
static inline
void mysql_audit_notify_connection_change_user(THD *thd)
void mysql_audit_notify_connection_change_user(THD *thd,
const Security_context *old_ctx)
{
if (mysql_audit_connection_enabled())
{
const Security_context *sctx= thd->security_ctx;
mysql_event_connection event;
event.event_subclass= MYSQL_AUDIT_CONNECTION_CHANGE_USER;
event.status= thd->get_stmt_da()->is_error() ?
thd->get_stmt_da()->sql_errno() : 0;
event.thread_id= (unsigned long)thd->thread_id;
event.user= sctx->user;
event.user_length= safe_strlen_uint(sctx->user);
event.priv_user= sctx->priv_user;
event.priv_user_length= strlen_uint(sctx->priv_user);
event.external_user= sctx->external_user;
event.external_user_length= safe_strlen_uint(sctx->external_user);
event.proxy_user= sctx->proxy_user;
event.proxy_user_length= strlen_uint(sctx->proxy_user);
event.host= sctx->host;
event.host_length= safe_strlen_uint(sctx->host);
event.ip= sctx->ip;
event.ip_length= safe_strlen_uint(sctx->ip);
event.user= old_ctx->user;
event.user_length= safe_strlen_uint(old_ctx->user);
event.priv_user= old_ctx->priv_user;
event.priv_user_length= strlen_uint(old_ctx->priv_user);
event.external_user= old_ctx->external_user;
event.external_user_length= safe_strlen_uint(old_ctx->external_user);
event.proxy_user= old_ctx->proxy_user;
event.proxy_user_length= strlen_uint(old_ctx->proxy_user);
event.host= old_ctx->host;
event.host_length= safe_strlen_uint(old_ctx->host);
event.ip= old_ctx->ip;
event.ip_length= safe_strlen_uint(old_ctx->ip);
event.database= thd->db;
mysql_audit_notify(thd, MYSQL_AUDIT_CONNECTION_CLASS, &event);
}
}
static inline
void mysql_audit_external_lock_ex(THD *thd, my_thread_id thread_id,
const char *user, const char *host, const char *ip, query_id_t query_id,