diff options
-rw-r--r-- | include/my_alloc.h | 2 | ||||
-rw-r--r-- | include/mysql.h | 4 | ||||
-rw-r--r-- | include/mysql.h.pp | 5 | ||||
-rw-r--r-- | include/mysql/plugin_audit.h.pp | 24 | ||||
-rw-r--r-- | include/mysql/plugin_auth.h.pp | 24 | ||||
-rw-r--r-- | include/mysql/plugin_data_type.h.pp | 24 | ||||
-rw-r--r-- | include/mysql/plugin_encryption.h.pp | 24 | ||||
-rw-r--r-- | include/mysql/plugin_ftparser.h.pp | 24 | ||||
-rw-r--r-- | include/mysql/plugin_function.h.pp | 24 | ||||
-rw-r--r-- | include/mysql/plugin_password_validation.h.pp | 24 | ||||
-rw-r--r-- | include/mysql/service_sql.h | 52 | ||||
-rw-r--r-- | plugin/server_audit/server_audit.c | 1 | ||||
-rw-r--r-- | plugin/test_sql_service/CMakeLists.txt | 1 | ||||
-rw-r--r-- | plugin/test_sql_service/test_sql_service.c | 7 |
14 files changed, 201 insertions, 39 deletions
diff --git a/include/my_alloc.h b/include/my_alloc.h index 3001c4efcec..659cc16ea14 100644 --- a/include/my_alloc.h +++ b/include/my_alloc.h @@ -20,7 +20,7 @@ #ifndef _my_alloc_h #define _my_alloc_h -#include <mysql/psi/psi_memory.h> +typedef unsigned int PSI_memory_key; #define ALLOC_MAX_BLOCK_TO_DROP 4096 #define ALLOC_MAX_BLOCK_USAGE_BEFORE_DROP 10 diff --git a/include/mysql.h b/include/mysql.h index 87def05dc7e..217725c6576 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -322,7 +322,7 @@ typedef struct st_mysql_res { } MYSQL_RES; -#if !defined(MYSQL_SERVER) && !defined(MYSQL_CLIENT) +#if !defined(MYSQL_SERVICE_SQL) && !defined(MYSQL_CLIENT) #define MYSQL_CLIENT #endif @@ -354,7 +354,7 @@ typedef struct st_mysql_parameters */ #define MYSQL_WAIT_TIMEOUT 8 -#if !defined(MYSQL_SERVER) && !defined(EMBEDDED_LIBRARY) +#if !defined(MYSQL_SERVICE_SQL) #define max_allowed_packet (*mysql_get_parameters()->p_max_allowed_packet) #define net_buffer_length (*mysql_get_parameters()->p_net_buffer_length) #endif diff --git a/include/mysql.h.pp b/include/mysql.h.pp index 4ffc271a644..7ae47ac836e 100644 --- a/include/mysql.h.pp +++ b/include/mysql.h.pp @@ -238,12 +238,7 @@ typedef struct st_mysql_field { typedef char **MYSQL_ROW; typedef unsigned int MYSQL_FIELD_OFFSET; typedef unsigned long long my_ulonglong; -extern "C" { -} -extern "C" { -struct PSI_thread; typedef unsigned int PSI_memory_key; -} extern "C" { typedef struct st_used_mem { diff --git a/include/mysql/plugin_audit.h.pp b/include/mysql/plugin_audit.h.pp index 2e0cdff4b50..5ba1307ccda 100644 --- a/include/mysql/plugin_audit.h.pp +++ b/include/mysql/plugin_audit.h.pp @@ -464,6 +464,30 @@ int json_escape_string(const char *str,const char *str_end, int json_unescape_json(const char *json_str, const char *json_end, char *res, char *res_end); } +extern "C" { +extern struct sql_service_st { + MYSQL *(STDCALL *mysql_init_func)(MYSQL *mysql); + MYSQL *(*mysql_real_connect_local_func)(MYSQL *mysql, + const char *host, const char *user, const char *db, + unsigned long clientflag); + MYSQL *(STDCALL *mysql_real_connect_func)(MYSQL *mysql, const char *host, + const char *user, const char *passwd, const char *db, unsigned int port, + const char *unix_socket, unsigned long clientflag); + unsigned int(STDCALL *mysql_errno_func)(MYSQL *mysql); + const char *(STDCALL *mysql_error_func)(MYSQL *mysql); + int (STDCALL *mysql_real_query_func)(MYSQL *mysql, const char *q, + unsigned long length); + my_ulonglong (STDCALL *mysql_affected_rows_func)(MYSQL *mysql); + my_ulonglong (STDCALL *mysql_num_rows_func)(MYSQL_RES *res); + MYSQL_RES *(STDCALL *mysql_store_result_func)(MYSQL *mysql); + void (STDCALL *mysql_free_result_func)(MYSQL_RES *result); + MYSQL_ROW (STDCALL *mysql_fetch_row_func)(MYSQL_RES *result); + void (STDCALL *mysql_close_func)(MYSQL *mysql); +} *sql_service; +MYSQL *mysql_real_connect_local(MYSQL *mysql, + const char *host, const char *user, const char *db, + unsigned long clientflag); +} } struct st_mysql_xid { long formatID; diff --git a/include/mysql/plugin_auth.h.pp b/include/mysql/plugin_auth.h.pp index 464c5514acb..334c49304ce 100644 --- a/include/mysql/plugin_auth.h.pp +++ b/include/mysql/plugin_auth.h.pp @@ -464,6 +464,30 @@ int json_escape_string(const char *str,const char *str_end, int json_unescape_json(const char *json_str, const char *json_end, char *res, char *res_end); } +extern "C" { +extern struct sql_service_st { + MYSQL *(STDCALL *mysql_init_func)(MYSQL *mysql); + MYSQL *(*mysql_real_connect_local_func)(MYSQL *mysql, + const char *host, const char *user, const char *db, + unsigned long clientflag); + MYSQL *(STDCALL *mysql_real_connect_func)(MYSQL *mysql, const char *host, + const char *user, const char *passwd, const char *db, unsigned int port, + const char *unix_socket, unsigned long clientflag); + unsigned int(STDCALL *mysql_errno_func)(MYSQL *mysql); + const char *(STDCALL *mysql_error_func)(MYSQL *mysql); + int (STDCALL *mysql_real_query_func)(MYSQL *mysql, const char *q, + unsigned long length); + my_ulonglong (STDCALL *mysql_affected_rows_func)(MYSQL *mysql); + my_ulonglong (STDCALL *mysql_num_rows_func)(MYSQL_RES *res); + MYSQL_RES *(STDCALL *mysql_store_result_func)(MYSQL *mysql); + void (STDCALL *mysql_free_result_func)(MYSQL_RES *result); + MYSQL_ROW (STDCALL *mysql_fetch_row_func)(MYSQL_RES *result); + void (STDCALL *mysql_close_func)(MYSQL *mysql); +} *sql_service; +MYSQL *mysql_real_connect_local(MYSQL *mysql, + const char *host, const char *user, const char *db, + unsigned long clientflag); +} } struct st_mysql_xid { long formatID; diff --git a/include/mysql/plugin_data_type.h.pp b/include/mysql/plugin_data_type.h.pp index cb256e00cd7..9e7ddd6bec5 100644 --- a/include/mysql/plugin_data_type.h.pp +++ b/include/mysql/plugin_data_type.h.pp @@ -464,6 +464,30 @@ int json_escape_string(const char *str,const char *str_end, int json_unescape_json(const char *json_str, const char *json_end, char *res, char *res_end); } +extern "C" { +extern struct sql_service_st { + MYSQL *(STDCALL *mysql_init_func)(MYSQL *mysql); + MYSQL *(*mysql_real_connect_local_func)(MYSQL *mysql, + const char *host, const char *user, const char *db, + unsigned long clientflag); + MYSQL *(STDCALL *mysql_real_connect_func)(MYSQL *mysql, const char *host, + const char *user, const char *passwd, const char *db, unsigned int port, + const char *unix_socket, unsigned long clientflag); + unsigned int(STDCALL *mysql_errno_func)(MYSQL *mysql); + const char *(STDCALL *mysql_error_func)(MYSQL *mysql); + int (STDCALL *mysql_real_query_func)(MYSQL *mysql, const char *q, + unsigned long length); + my_ulonglong (STDCALL *mysql_affected_rows_func)(MYSQL *mysql); + my_ulonglong (STDCALL *mysql_num_rows_func)(MYSQL_RES *res); + MYSQL_RES *(STDCALL *mysql_store_result_func)(MYSQL *mysql); + void (STDCALL *mysql_free_result_func)(MYSQL_RES *result); + MYSQL_ROW (STDCALL *mysql_fetch_row_func)(MYSQL_RES *result); + void (STDCALL *mysql_close_func)(MYSQL *mysql); +} *sql_service; +MYSQL *mysql_real_connect_local(MYSQL *mysql, + const char *host, const char *user, const char *db, + unsigned long clientflag); +} } struct st_mysql_xid { long formatID; diff --git a/include/mysql/plugin_encryption.h.pp b/include/mysql/plugin_encryption.h.pp index 11cd622861c..f33d4ca0960 100644 --- a/include/mysql/plugin_encryption.h.pp +++ b/include/mysql/plugin_encryption.h.pp @@ -464,6 +464,30 @@ int json_escape_string(const char *str,const char *str_end, int json_unescape_json(const char *json_str, const char *json_end, char *res, char *res_end); } +extern "C" { +extern struct sql_service_st { + MYSQL *(STDCALL *mysql_init_func)(MYSQL *mysql); + MYSQL *(*mysql_real_connect_local_func)(MYSQL *mysql, + const char *host, const char *user, const char *db, + unsigned long clientflag); + MYSQL *(STDCALL *mysql_real_connect_func)(MYSQL *mysql, const char *host, + const char *user, const char *passwd, const char *db, unsigned int port, + const char *unix_socket, unsigned long clientflag); + unsigned int(STDCALL *mysql_errno_func)(MYSQL *mysql); + const char *(STDCALL *mysql_error_func)(MYSQL *mysql); + int (STDCALL *mysql_real_query_func)(MYSQL *mysql, const char *q, + unsigned long length); + my_ulonglong (STDCALL *mysql_affected_rows_func)(MYSQL *mysql); + my_ulonglong (STDCALL *mysql_num_rows_func)(MYSQL_RES *res); + MYSQL_RES *(STDCALL *mysql_store_result_func)(MYSQL *mysql); + void (STDCALL *mysql_free_result_func)(MYSQL_RES *result); + MYSQL_ROW (STDCALL *mysql_fetch_row_func)(MYSQL_RES *result); + void (STDCALL *mysql_close_func)(MYSQL *mysql); +} *sql_service; +MYSQL *mysql_real_connect_local(MYSQL *mysql, + const char *host, const char *user, const char *db, + unsigned long clientflag); +} } struct st_mysql_xid { long formatID; diff --git a/include/mysql/plugin_ftparser.h.pp b/include/mysql/plugin_ftparser.h.pp index 9a798627518..acdfef16298 100644 --- a/include/mysql/plugin_ftparser.h.pp +++ b/include/mysql/plugin_ftparser.h.pp @@ -464,6 +464,30 @@ int json_escape_string(const char *str,const char *str_end, int json_unescape_json(const char *json_str, const char *json_end, char *res, char *res_end); } +extern "C" { +extern struct sql_service_st { + MYSQL *(STDCALL *mysql_init_func)(MYSQL *mysql); + MYSQL *(*mysql_real_connect_local_func)(MYSQL *mysql, + const char *host, const char *user, const char *db, + unsigned long clientflag); + MYSQL *(STDCALL *mysql_real_connect_func)(MYSQL *mysql, const char *host, + const char *user, const char *passwd, const char *db, unsigned int port, + const char *unix_socket, unsigned long clientflag); + unsigned int(STDCALL *mysql_errno_func)(MYSQL *mysql); + const char *(STDCALL *mysql_error_func)(MYSQL *mysql); + int (STDCALL *mysql_real_query_func)(MYSQL *mysql, const char *q, + unsigned long length); + my_ulonglong (STDCALL *mysql_affected_rows_func)(MYSQL *mysql); + my_ulonglong (STDCALL *mysql_num_rows_func)(MYSQL_RES *res); + MYSQL_RES *(STDCALL *mysql_store_result_func)(MYSQL *mysql); + void (STDCALL *mysql_free_result_func)(MYSQL_RES *result); + MYSQL_ROW (STDCALL *mysql_fetch_row_func)(MYSQL_RES *result); + void (STDCALL *mysql_close_func)(MYSQL *mysql); +} *sql_service; +MYSQL *mysql_real_connect_local(MYSQL *mysql, + const char *host, const char *user, const char *db, + unsigned long clientflag); +} } struct st_mysql_xid { long formatID; diff --git a/include/mysql/plugin_function.h.pp b/include/mysql/plugin_function.h.pp index 4b2a0fc7082..715cb392a9a 100644 --- a/include/mysql/plugin_function.h.pp +++ b/include/mysql/plugin_function.h.pp @@ -464,6 +464,30 @@ int json_escape_string(const char *str,const char *str_end, int json_unescape_json(const char *json_str, const char *json_end, char *res, char *res_end); } +extern "C" { +extern struct sql_service_st { + MYSQL *(STDCALL *mysql_init_func)(MYSQL *mysql); + MYSQL *(*mysql_real_connect_local_func)(MYSQL *mysql, + const char *host, const char *user, const char *db, + unsigned long clientflag); + MYSQL *(STDCALL *mysql_real_connect_func)(MYSQL *mysql, const char *host, + const char *user, const char *passwd, const char *db, unsigned int port, + const char *unix_socket, unsigned long clientflag); + unsigned int(STDCALL *mysql_errno_func)(MYSQL *mysql); + const char *(STDCALL *mysql_error_func)(MYSQL *mysql); + int (STDCALL *mysql_real_query_func)(MYSQL *mysql, const char *q, + unsigned long length); + my_ulonglong (STDCALL *mysql_affected_rows_func)(MYSQL *mysql); + my_ulonglong (STDCALL *mysql_num_rows_func)(MYSQL_RES *res); + MYSQL_RES *(STDCALL *mysql_store_result_func)(MYSQL *mysql); + void (STDCALL *mysql_free_result_func)(MYSQL_RES *result); + MYSQL_ROW (STDCALL *mysql_fetch_row_func)(MYSQL_RES *result); + void (STDCALL *mysql_close_func)(MYSQL *mysql); +} *sql_service; +MYSQL *mysql_real_connect_local(MYSQL *mysql, + const char *host, const char *user, const char *db, + unsigned long clientflag); +} } struct st_mysql_xid { long formatID; diff --git a/include/mysql/plugin_password_validation.h.pp b/include/mysql/plugin_password_validation.h.pp index eae776a753b..0674591ade6 100644 --- a/include/mysql/plugin_password_validation.h.pp +++ b/include/mysql/plugin_password_validation.h.pp @@ -464,6 +464,30 @@ int json_escape_string(const char *str,const char *str_end, int json_unescape_json(const char *json_str, const char *json_end, char *res, char *res_end); } +extern "C" { +extern struct sql_service_st { + MYSQL *(STDCALL *mysql_init_func)(MYSQL *mysql); + MYSQL *(*mysql_real_connect_local_func)(MYSQL *mysql, + const char *host, const char *user, const char *db, + unsigned long clientflag); + MYSQL *(STDCALL *mysql_real_connect_func)(MYSQL *mysql, const char *host, + const char *user, const char *passwd, const char *db, unsigned int port, + const char *unix_socket, unsigned long clientflag); + unsigned int(STDCALL *mysql_errno_func)(MYSQL *mysql); + const char *(STDCALL *mysql_error_func)(MYSQL *mysql); + int (STDCALL *mysql_real_query_func)(MYSQL *mysql, const char *q, + unsigned long length); + my_ulonglong (STDCALL *mysql_affected_rows_func)(MYSQL *mysql); + my_ulonglong (STDCALL *mysql_num_rows_func)(MYSQL_RES *res); + MYSQL_RES *(STDCALL *mysql_store_result_func)(MYSQL *mysql); + void (STDCALL *mysql_free_result_func)(MYSQL_RES *result); + MYSQL_ROW (STDCALL *mysql_fetch_row_func)(MYSQL_RES *result); + void (STDCALL *mysql_close_func)(MYSQL *mysql); +} *sql_service; +MYSQL *mysql_real_connect_local(MYSQL *mysql, + const char *host, const char *user, const char *db, + unsigned long clientflag); +} } struct st_mysql_xid { long formatID; diff --git a/include/mysql/service_sql.h b/include/mysql/service_sql.h index 22770883be2..075b7794d49 100644 --- a/include/mysql/service_sql.h +++ b/include/mysql/service_sql.h @@ -13,10 +13,12 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ -#if defined(MYSQL_SERVER) && !defined MYSQL_SERVICE_SQL +#ifndef MYSQL_SERVICE_SQL #define MYSQL_SERVICE_SQL +#ifndef MYSQL_ABI_CHECK #include <mysql.h> +#endif /** @file @@ -45,39 +47,39 @@ extern "C" { #endif extern struct sql_service_st { - MYSQL *(STDCALL *mysql_init)(MYSQL *mysql); - MYSQL *(*mysql_real_connect_local)(MYSQL *mysql, + MYSQL *(STDCALL *mysql_init_func)(MYSQL *mysql); + MYSQL *(*mysql_real_connect_local_func)(MYSQL *mysql, const char *host, const char *user, const char *db, unsigned long clientflag); - MYSQL *(STDCALL *mysql_real_connect)(MYSQL *mysql, const char *host, + MYSQL *(STDCALL *mysql_real_connect_func)(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long clientflag); - unsigned int(STDCALL *mysql_errno)(MYSQL *mysql); - const char *(STDCALL *mysql_error)(MYSQL *mysql); - int (STDCALL *mysql_real_query)(MYSQL *mysql, const char *q, + unsigned int(STDCALL *mysql_errno_func)(MYSQL *mysql); + const char *(STDCALL *mysql_error_func)(MYSQL *mysql); + int (STDCALL *mysql_real_query_func)(MYSQL *mysql, const char *q, unsigned long length); - my_ulonglong (STDCALL *mysql_affected_rows)(MYSQL *mysql); - my_ulonglong (STDCALL *mysql_num_rows)(MYSQL_RES *res); - MYSQL_RES *(STDCALL *mysql_store_result)(MYSQL *mysql); - void (STDCALL *mysql_free_result)(MYSQL_RES *result); - MYSQL_ROW (STDCALL *mysql_fetch_row)(MYSQL_RES *result); - void (STDCALL *mysql_close)(MYSQL *sock); + my_ulonglong (STDCALL *mysql_affected_rows_func)(MYSQL *mysql); + my_ulonglong (STDCALL *mysql_num_rows_func)(MYSQL_RES *res); + MYSQL_RES *(STDCALL *mysql_store_result_func)(MYSQL *mysql); + void (STDCALL *mysql_free_result_func)(MYSQL_RES *result); + MYSQL_ROW (STDCALL *mysql_fetch_row_func)(MYSQL_RES *result); + void (STDCALL *mysql_close_func)(MYSQL *mysql); } *sql_service; #ifdef MYSQL_DYNAMIC_PLUGIN -#define mysql_init sql_service->mysql_init -#define mysql_real_connect_local sql_service->mysql_real_connect_local -#define mysql_real_connect sql_service->mysql_real_connect -#define mysql_errno(M) sql_service->mysql_errno(M) -#define mysql_error(M) sql_service->mysql_error(M) -#define mysql_real_query sql_service->mysql_real_query -#define mysql_affected_rows sql_service->mysql_affected_rows -#define mysql_num_rows sql_service->mysql_num_rows -#define mysql_store_result sql_service->mysql_store_result -#define mysql_free_result sql_service->mysql_free_result -#define mysql_fetch_row sql_service->mysql_fetch_row -#define mysql_close sql_service->mysql_close +#define mysql_init(M) sql_service->mysql_init_func(M) +#define mysql_real_connect_local(M,H,U,D,F) sql_service->mysql_real_connect_local_func(M,H,U,D,F) +#define mysql_real_connect(M,H,U,PW,D,P,S,F) sql_service->mysql_real_connect_func(M,H,U,PW,D,P,S,F) +#define mysql_errno(M) sql_service->mysql_errno_func(M) +#define mysql_error(M) sql_service->mysql_error_func(M) +#define mysql_real_query sql_service->mysql_real_query_func +#define mysql_affected_rows(M) sql_service->mysql_affected_rows_func(M) +#define mysql_num_rows(R) sql_service->mysql_num_rows_func(R) +#define mysql_store_result(M) sql_service->mysql_store_result_func(M) +#define mysql_free_result(R) sql_service->mysql_free_result_func(R) +#define mysql_fetch_row(R) sql_service->mysql_fetch_row_func(R) +#define mysql_close(M) sql_service->mysql_close_func(M) #else diff --git a/plugin/server_audit/server_audit.c b/plugin/server_audit/server_audit.c index 49d41627275..864dd9e1222 100644 --- a/plugin/server_audit/server_audit.c +++ b/plugin/server_audit/server_audit.c @@ -1151,7 +1151,6 @@ static void setup_connection_simple(struct connection_info *ci) #define MAX_HOSTNAME (HOSTNAME_LENGTH + 1) /* len+1 in mysql.user */ -#define USERNAME_LENGTH 384 static void setup_connection_connect(MYSQL_THD thd,struct connection_info *cn, const struct mysql_event_connection *event) diff --git a/plugin/test_sql_service/CMakeLists.txt b/plugin/test_sql_service/CMakeLists.txt index 7c61a1c3c7a..615508bdc4e 100644 --- a/plugin/test_sql_service/CMakeLists.txt +++ b/plugin/test_sql_service/CMakeLists.txt @@ -15,5 +15,4 @@ SET(SOURCES test_sql_service.c) -ADD_DEFINITIONS(-DMYSQL_SERVER) MYSQL_ADD_PLUGIN(test_sql_service ${SOURCES} MODULE_ONLY) diff --git a/plugin/test_sql_service/test_sql_service.c b/plugin/test_sql_service/test_sql_service.c index e1155a98c40..8fef013c526 100644 --- a/plugin/test_sql_service/test_sql_service.c +++ b/plugin/test_sql_service/test_sql_service.c @@ -14,8 +14,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ -#define PLUGIN_VERSION 0x20000 -#define PLUGIN_STR_VERSION "2.0" +#define PLUGIN_VERSION 0x200 #include <my_config.h> #include <my_global.h> @@ -266,8 +265,8 @@ maria_declare_plugin(test_sql_service) PLUGIN_VERSION, test_sql_status, test_sql_vars, - PLUGIN_STR_VERSION, - MariaDB_PLUGIN_MATURITY_STABLE + NULL, + MariaDB_PLUGIN_MATURITY_EXPERIMENTAL } maria_declare_plugin_end; |