1
0
mirror of https://github.com/mariadb-corporation/mariadb-connector-c.git synced 2025-08-07 02:42:49 +03:00

Added st_mariadb_api structure which contains api definition for use

in dynamic plugins
This commit is contained in:
Georg Richter
2015-12-28 09:00:24 +01:00
parent d73e4c23a2
commit 46a975bd04
4 changed files with 270 additions and 13 deletions

View File

@@ -443,7 +443,6 @@ int STDCALL mysql_ssl_set(MYSQL *mysql, const char *key,
const char *cert, const char *ca,
const char *capath, const char *cipher);
const char * STDCALL mysql_get_ssl_cipher(MYSQL *mysql);
int STDCALL mysql_ssl_clear(MYSQL *mysql);
MYSQL * STDCALL mysql_connect(MYSQL *mysql, const char *host,
const char *user, const char *passwd);
my_bool STDCALL mysql_change_user(MYSQL *mysql, const char *user,
@@ -640,6 +639,128 @@ int STDCALL mysql_stmt_send_long_data_cont(my_bool *ret, MYSQL_STMT *stmt,
int status);
/* API function calls (used by dynmic plugins) */
struct st_mariadb_api {
my_ulonglong (*mysql_num_rows)(MYSQL_RES *res);
unsigned int (*mysql_num_fields)(MYSQL_RES *res);
my_bool (*mysql_eof)(MYSQL_RES *res);
MYSQL_FIELD *(*mysql_fetch_field_direct)(MYSQL_RES *res, unsigned int fieldnr);
MYSQL_FIELD * (*mysql_fetch_fields)(MYSQL_RES *res);
MYSQL_ROWS * (*mysql_row_tell)(MYSQL_RES *res);
unsigned int (*mysql_field_tell)(MYSQL_RES *res);
unsigned int (*mysql_field_count)(MYSQL *mysql);
my_bool (*mysql_more_results)(MYSQL *mysql);
int (*mysql_next_result)(MYSQL *mysql);
my_ulonglong (*mysql_affected_rows)(MYSQL *mysql);
my_bool (*mysql_autocommit)(MYSQL *mysql, my_bool mode);
my_bool (*mysql_commit)(MYSQL *mysql);
my_bool (*mysql_rollback)(MYSQL *mysql);
my_ulonglong (*mysql_insert_id)(MYSQL *mysql);
unsigned int (*mysql_errno)(MYSQL *mysql);
char * (*mysql_error)(MYSQL *mysql);
char * (*mysql_info)(MYSQL *mysql);
unsigned long (*mysql_thread_id)(MYSQL *mysql);
const char * (*mysql_character_set_name)(MYSQL *mysql);
void (*mysql_get_character_set_info)(MYSQL *mysql, MY_CHARSET_INFO *cs);
int (*mysql_set_character_set)(MYSQL *mysql, const char *csname);
my_bool (*mariadb_get_infov)(MYSQL *mysql, enum mariadb_value value, void *arg, ...);
my_bool (*mariadb_get_info)(MYSQL *mysql, enum mariadb_value value, void *arg);
MYSQL * (*mysql_init)(MYSQL *mysql);
int (*mysql_ssl_set)(MYSQL *mysql, const char *key, const char *cert, const char *ca, const char *capath, const char *cipher);
const char * (*mysql_get_ssl_cipher)(MYSQL *mysql);
MYSQL * (*mysql_connect)(MYSQL *mysql, const char *host, const char *user, const char *passwd);
my_bool (*mysql_change_user)(MYSQL *mysql, const char *user, const char *passwd, const char *db);
MYSQL * (*mysql_real_connect)(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long clientflag);
void (*mysql_close)(MYSQL *sock);
int (*mysql_select_db)(MYSQL *mysql, const char *db);
int (*mysql_query)(MYSQL *mysql, const char *q);
int (*mysql_send_query)(MYSQL *mysql, const char *q, size_t length);
my_bool (*mysql_read_query_result)(MYSQL *mysql);
int (*mysql_real_query)(MYSQL *mysql, const char *q, size_t length);
int (*mysql_create_db)(MYSQL *mysql, const char *DB);
int (*mysql_drop_db)(MYSQL *mysql, const char *DB);
int (*mysql_shutdown)(MYSQL *mysql, enum mysql_enum_shutdown_level shutdown_level);
int (*mysql_dump_debug_info)(MYSQL *mysql);
int (*mysql_refresh)(MYSQL *mysql, unsigned int refresh_options);
int (*mysql_kill)(MYSQL *mysql,unsigned long pid);
int (*mysql_ping)(MYSQL *mysql);
char * (*mysql_stat)(MYSQL *mysql);
char * (*mysql_get_server_info)(MYSQL *mysql);
unsigned long (*mysql_get_server_version)(MYSQL *mysql);
char * (*mysql_get_host_info)(MYSQL *mysql);
unsigned int (*mysql_get_proto_info)(MYSQL *mysql);
MYSQL_RES * (*mysql_list_dbs)(MYSQL *mysql,const char *wild);
MYSQL_RES * (*mysql_list_tables)(MYSQL *mysql,const char *wild);
MYSQL_RES * (*mysql_list_fields)(MYSQL *mysql, const char *table, const char *wild);
MYSQL_RES * (*mysql_list_processes)(MYSQL *mysql);
MYSQL_RES * (*mysql_store_result)(MYSQL *mysql);
MYSQL_RES * (*mysql_use_result)(MYSQL *mysql);
int (*mysql_options)(MYSQL *mysql,enum mysql_option option, const void *arg);
void (*mysql_free_result)(MYSQL_RES *result);
void (*mysql_data_seek)(MYSQL_RES *result, my_ulonglong offset);
MYSQL_ROW_OFFSET (*mysql_row_seek)(MYSQL_RES *result, MYSQL_ROW_OFFSET);
MYSQL_FIELD_OFFSET (*mysql_field_seek)(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset);
MYSQL_ROW (*mysql_fetch_row)(MYSQL_RES *result);
unsigned long * (*mysql_fetch_lengths)(MYSQL_RES *result);
MYSQL_FIELD * (*mysql_fetch_field)(MYSQL_RES *result);
unsigned long (*mysql_escape_string)(char *to,const char *from, unsigned long from_length);
unsigned long (*mysql_real_escape_string)(MYSQL *mysql, char *to,const char *from, unsigned long length);
void (*mysql_debug)(const char *debug);
void (*mysql_debug_end)(void);
unsigned int (*mysql_thread_safe)(void);
unsigned int (*mysql_warning_count)(MYSQL *mysql);
const char * (*mysql_sqlstate)(MYSQL *mysql);
int (*mysql_server_init)(int argc, char **argv, char **groups);
void (*mysql_server_end)(void);
void (*mysql_thread_end)(void);
my_bool (*mysql_thread_init)(void);
int (*mysql_set_server_option)(MYSQL *mysql, enum enum_mysql_set_option option);
const char * (*mysql_get_client_info)(void);
unsigned long (*mysql_get_client_version)(void);
my_bool (*mariadb_connection)(MYSQL *mysql);
const char * (*mysql_get_server_name)(MYSQL *mysql);
CHARSET_INFO * (*mariadb_get_charset_by_name)(const char *csname);
CHARSET_INFO * (*mariadb_get_charset_by_nr)(unsigned int csnr);
size_t (*mariadb_convert_string)(const char *from, size_t *from_len, CHARSET_INFO *from_cs, char *to, size_t *to_len, CHARSET_INFO *to_cs, int *errorcode);
int (*mysql_optionsv)(MYSQL *mysql,enum mysql_option option, ...);
int (*mysql_get_optionv)(MYSQL *mysql, enum mysql_option option, void *arg, ...);
int (*mysql_get_option)(MYSQL *mysql, enum mysql_option option, void *arg);
MYSQL_PARAMETERS *(*mysql_get_parameters)(void);
unsigned long (*mysql_hex_string)(char *to, const char *from, size_t len);
my_socket (*mysql_get_socket)(MYSQL *mysql);
unsigned int (*mysql_get_timeout_value)(const MYSQL *mysql);
unsigned int (*mysql_get_timeout_value_ms)(const MYSQL *mysql);
my_bool (*mysql_reconnect)(MYSQL *mysql);
MYSQL_STMT * (*mysql_stmt_init)(MYSQL *mysql);
int (*mysql_stmt_prepare)(MYSQL_STMT *stmt, const char *query, size_t length);
int (*mysql_stmt_execute)(MYSQL_STMT *stmt);
int (*mysql_stmt_fetch)(MYSQL_STMT *stmt);
int (*mysql_stmt_fetch_column)(MYSQL_STMT *stmt, MYSQL_BIND *bind_arg, unsigned int column, unsigned long offset);
int (*mysql_stmt_store_result)(MYSQL_STMT *stmt);
unsigned long (*mysql_stmt_param_count)(MYSQL_STMT * stmt);
my_bool (*mysql_stmt_attr_set)(MYSQL_STMT *stmt, enum enum_stmt_attr_type attr_type, const void *attr);
my_bool (*mysql_stmt_attr_get)(MYSQL_STMT *stmt, enum enum_stmt_attr_type attr_type, void *attr);
my_bool (*mysql_stmt_bind_param)(MYSQL_STMT * stmt, MYSQL_BIND * bnd);
my_bool (*mysql_stmt_bind_result)(MYSQL_STMT * stmt, MYSQL_BIND * bnd);
my_bool (*mysql_stmt_close)(MYSQL_STMT * stmt);
my_bool (*mysql_stmt_reset)(MYSQL_STMT * stmt);
my_bool (*mysql_stmt_free_result)(MYSQL_STMT *stmt);
my_bool (*mysql_stmt_send_long_data)(MYSQL_STMT *stmt, unsigned int param_number, const char *data, size_t length);
MYSQL_RES *(*mysql_stmt_result_metadata)(MYSQL_STMT *stmt);
MYSQL_RES *(*mysql_stmt_param_metadata)(MYSQL_STMT *stmt);
unsigned int (*mysql_stmt_errno)(MYSQL_STMT * stmt);
const char *(*mysql_stmt_error)(MYSQL_STMT * stmt);
const char *(*mysql_stmt_sqlstate)(MYSQL_STMT * stmt);
MYSQL_ROW_OFFSET (*mysql_stmt_row_seek)(MYSQL_STMT *stmt, MYSQL_ROW_OFFSET offset);
MYSQL_ROW_OFFSET (*mysql_stmt_row_tell)(MYSQL_STMT *stmt);
void (*mysql_stmt_data_seek)(MYSQL_STMT *stmt, my_ulonglong offset);
my_ulonglong (*mysql_stmt_num_rows)(MYSQL_STMT *stmt);
my_ulonglong (*mysql_stmt_affected_rows)(MYSQL_STMT *stmt);
my_ulonglong (*mysql_stmt_insert_id)(MYSQL_STMT *stmt);
unsigned int (*mysql_stmt_field_count)(MYSQL_STMT *stmt);
int (*mysql_stmt_next_result)(MYSQL_STMT *stmt);
my_bool (*mysql_stmt_more_results)(MYSQL_STMT *stmt);
};
/* these methods can be overwritten by db plugins */
struct st_mysql_methods {
@@ -663,6 +784,7 @@ struct st_mysql_methods {
int (*db_stmt_fetch_to_bind)(MYSQL_STMT *stmt, unsigned char *row);
void (*db_stmt_flush_unbuffered)(MYSQL_STMT *stmt);
void (*set_error)(MYSQL *mysql, unsigned int error_nr, const char *sqlstate, const char *format, ...);
struct st_mariadb_api *api;
};
/* synonyms/aliases functions */