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

Fixed mysql_api methods: On Windows functions need to be declared with

STDCALL.
Fixed warning in my_context.h
This commit is contained in:
Georg Richter
2015-12-29 20:37:18 +01:00
parent 46a975bd04
commit 5f98f7710a
7 changed files with 140 additions and 149 deletions

View File

@@ -112,11 +112,6 @@ struct my_context {
}; };
#endif #endif
extern void
my_context_install_suspend_resume_hook(struct mysql_async_context *b,
void (*hook)(my_bool, void *),
void *user_data);
/* /*
Initialize an asynchroneous context object. Initialize an asynchroneous context object.
Returns 0 on success, non-zero on failure. Returns 0 on success, non-zero on failure.

View File

@@ -165,6 +165,7 @@ struct st_mysqlnd_stmt_methods
my_bool (*get_attribute)(const MYSQL_STMT * stmt, enum enum_stmt_attr_type attr_type, const void * value); my_bool (*get_attribute)(const MYSQL_STMT * stmt, enum enum_stmt_attr_type attr_type, const void * value);
my_bool (*set_attribute)(const MYSQL_STMT * stmt, enum enum_stmt_attr_type attr_type, const void * value); my_bool (*set_attribute)(const MYSQL_STMT * stmt, enum enum_stmt_attr_type attr_type, const void * value);
void (*set_error)(MYSQL_STMT *stmt, unsigned int error_nr, const char *sqlstate, const char *format, ...);
}; };
typedef int (*mysql_stmt_fetch_row_func)(MYSQL_STMT *stmt, unsigned char **row); typedef int (*mysql_stmt_fetch_row_func)(MYSQL_STMT *stmt, unsigned char **row);

View File

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

View File

@@ -519,7 +519,7 @@ append_wild(char *to, char *end, const char *wild)
/************************************************************************** /**************************************************************************
** Init debugging if MYSQL_DEBUG environment variable is found ** Init debugging if MYSQL_DEBUG environment variable is found
**************************************************************************/ **************************************************************************/
void STDCALL mysql_debug_end() void STDCALL mysql_debug_end(void)
{ {
#ifndef DBUG_OFF #ifndef DBUG_OFF
DEBUGGER_OFF; DEBUGGER_OFF;
@@ -1806,8 +1806,7 @@ my_bool STDCALL mysql_reconnect(MYSQL *mysql)
DBUG_RETURN(0); DBUG_RETURN(0);
} }
void ma_invalidate_stmts(MYSQL *mysql, const char *function_name)
static void ma_invalidate_stmts(MYSQL *mysql, const char *function_name)
{ {
if (mysql->stmts) if (mysql->stmts)
{ {
@@ -3352,7 +3351,7 @@ static void mariadb_get_charset_info(MYSQL *mysql, MY_CHARSET_INFO *cs)
void STDCALL mysql_get_character_set_info(MYSQL *mysql, MY_CHARSET_INFO *cs) void STDCALL mysql_get_character_set_info(MYSQL *mysql, MY_CHARSET_INFO *cs)
{ {
return mariadb_get_charset_info(mysql, cs); mariadb_get_charset_info(mysql, cs);
} }
int STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname) int STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname)
@@ -3451,7 +3450,7 @@ void STDCALL mysql_server_end()
my_init_done= 0; my_init_done= 0;
} }
my_bool STDCALL mysql_thread_init() my_bool STDCALL mysql_thread_init(void)
{ {
#ifdef THREAD #ifdef THREAD
return my_thread_init(); return my_thread_init();
@@ -3459,7 +3458,7 @@ my_bool STDCALL mysql_thread_init()
return 0; return 0;
} }
void STDCALL mysql_thread_end() void STDCALL mysql_thread_end(void)
{ {
#ifdef THREAD #ifdef THREAD
my_thread_end(); my_thread_end();
@@ -3743,8 +3742,10 @@ my_bool STDCALL mariadb_get_info(MYSQL *mysql, enum mariadb_value value, void *a
return mariadb_get_infov(mysql, value, arg); return mariadb_get_infov(mysql, value, arg);
} }
#undef STDCALL
/* API functions for usage in dynamic plugins */ /* API functions for usage in dynamic plugins */
struct st_mariadb_api MARIADB_API= { struct st_mariadb_api MARIADB_API=
{
mysql_num_rows, mysql_num_rows,
mysql_num_fields, mysql_num_fields,
mysql_eof, mysql_eof,
@@ -3906,5 +3907,7 @@ struct st_mysql_methods MARIADB_DEFAULT_METHODS = {
mthd_stmt_flush_unbuffered, mthd_stmt_flush_unbuffered,
/* set error */ /* set error */
my_set_error, my_set_error,
/* invalidate statements */
ma_invalidate_stmts,
&MARIADB_API &MARIADB_API
}; };

View File

@@ -60,7 +60,7 @@ my_bool aurora_reconnect(MYSQL *mysql);
#define DISABLE_AURORA(mysql)\ #define DISABLE_AURORA(mysql)\
(mysql)->net.conn_hdlr->active= 0; (mysql)->net.conn_hdlr->active= 0;
#ifndef HAVE_REPLICATION_DYNAMIC #ifndef HAVE_AURORA_DYNAMIC
MARIADB_CONNECTION_PLUGIN connection_aurora_plugin = MARIADB_CONNECTION_PLUGIN connection_aurora_plugin =
#else #else
MARIADB_CONNECTION_PLUGIN _mysql_client_plugin_declaration_ = MARIADB_CONNECTION_PLUGIN _mysql_client_plugin_declaration_ =
@@ -394,18 +394,8 @@ MYSQL *aurora_connect_instance(AURORA *aurora, AURORA_INSTANCE *instance, MYSQL
/* {{{ void aurora_copy_mysql() */ /* {{{ void aurora_copy_mysql() */
void aurora_copy_mysql(MYSQL *from, MYSQL *to) void aurora_copy_mysql(MYSQL *from, MYSQL *to)
{ {
LIST *li_stmt= to->stmts; /* invalidate statements */
to->methods->invalidate_stmts(to, "aurora connect/reconnect");
for (;li_stmt;li_stmt= li_stmt->next)
{
MYSQL_STMT *stmt= (MYSQL_STMT *)li_stmt->data;
if (stmt->state != MYSQL_STMT_INITTED)
{
stmt->state= MYSQL_STMT_INITTED;
SET_CLIENT_STMT_ERROR(stmt, CR_SERVER_LOST, SQLSTATE_UNKNOWN, 0);
}
}
from->free_me= to->free_me; from->free_me= to->free_me;
from->reconnect= to->reconnect; from->reconnect= to->reconnect;
@@ -431,7 +421,6 @@ my_bool aurora_find_replica(AURORA *aurora)
my_bool replica_found= 0; my_bool replica_found= 0;
AURORA_INSTANCE *instance[AURORA_MAX_INSTANCES]; AURORA_INSTANCE *instance[AURORA_MAX_INSTANCES];
MYSQL mysql; MYSQL mysql;
// struct st_dynamic_array *init_command= aurora->mysql[AURORA_PRIMARY]->options.init_command;
if (aurora->num_instances < 2) if (aurora->num_instances < 2)
return 0; return 0;
@@ -565,6 +554,8 @@ MYSQL *aurora_connect(MYSQL *mysql, const char *host, const char *user, const ch
if (!mariadb_api) if (!mariadb_api)
mariadb_api= mysql->methods->api; mariadb_api= mysql->methods->api;
mariadb_api->mariadb_get_info(mysql, MARIADB_CLIENT_ERRORS, &client_errors);
if ((aurora= (AURORA *)hdlr->data)) if ((aurora= (AURORA *)hdlr->data))
{ {
aurora_refresh_blacklist(aurora); aurora_refresh_blacklist(aurora);
@@ -577,7 +568,7 @@ MYSQL *aurora_connect(MYSQL *mysql, const char *host, const char *user, const ch
} }
else else
{ {
if (!(aurora= (AURORA *)my_malloc(sizeof(AURORA), MYF(MY_ZEROFILL)))) if (!(aurora= (AURORA *)calloc(1, sizeof(AURORA))))
{ {
mysql->methods->set_error(mysql, CR_OUT_OF_MEMORY, SQLSTATE_UNKNOWN, 0); mysql->methods->set_error(mysql, CR_OUT_OF_MEMORY, SQLSTATE_UNKNOWN, 0);
return NULL; return NULL;

View File

@@ -57,7 +57,7 @@ IF(WITH_SSL)
ENDIF() ENDIF()
FOREACH(API_TEST ${API_TESTS}) FOREACH(API_TEST ${API_TESTS})
ADD_EXECUTABLE(${API_TEST} ${API_TEST}.c) ADD_EXECUTABLE(${API_TEST} ${API_TEST}.c ${CMAKE_SOURCE_DIR}/libmariadb/getopt.c)
TARGET_LINK_LIBRARIES(${API_TEST} mytap libmariadb) TARGET_LINK_LIBRARIES(${API_TEST} mytap libmariadb)
ADD_TEST(${API_TEST} ${EXECUTABLE_OUTPUT_PATH}/${API_TEST}) ADD_TEST(${API_TEST} ${EXECUTABLE_OUTPUT_PATH}/${API_TEST})
SET_TESTS_PROPERTIES(${API_TEST} PROPERTIES TIMEOUT 120) SET_TESTS_PROPERTIES(${API_TEST} PROPERTIES TIMEOUT 120)

View File

@@ -266,7 +266,7 @@ static int test_frm_bug(MYSQL *mysql)
sprintf(test_frm, "%s/%s/test_frm_bug.frm", data_dir, schema); sprintf(test_frm, "%s/%s/test_frm_bug.frm", data_dir, schema);
if (!(test_file= my_fopen(test_frm, (int) (O_RDWR | O_CREAT), MYF(MY_WME)))) if (!(test_file= fopen(test_frm, "rw")))
{ {
mysql_stmt_close(stmt); mysql_stmt_close(stmt);
diag("Can't write to file %s -> SKIP", test_frm); diag("Can't write to file %s -> SKIP", test_frm);
@@ -294,7 +294,7 @@ static int test_frm_bug(MYSQL *mysql)
mysql_free_result(result); mysql_free_result(result);
mysql_stmt_close(stmt); mysql_stmt_close(stmt);
my_fclose(test_file, MYF(0)); fclose(test_file);
mysql_query(mysql, "drop table if exists test_frm_bug"); mysql_query(mysql, "drop table if exists test_frm_bug");
return OK; return OK;
} }