mirror of
https://github.com/MariaDB/server.git
synced 2025-07-13 02:22:51 +03:00
SCRUM
embedded library some fixes - cleanup procedure changed for embedded library - deletion of embedded mysql->thd
This commit is contained in:
@ -564,8 +564,8 @@ typedef struct st_mysql_methods
|
||||
int (STDCALL *stmt_execute)(MYSQL_STMT *stmt);
|
||||
MYSQL_DATA *(STDCALL *read_binary_rows)(MYSQL_STMT *stmt);
|
||||
int (STDCALL *unbuffered_fetch)(MYSQL *mysql, char **row);
|
||||
void (STDCALL *free_embedded_thd)(MYSQL *mysql);
|
||||
#endif
|
||||
|
||||
} MYSQL_METHODS;
|
||||
|
||||
MYSQL_STMT * STDCALL mysql_prepare(MYSQL * mysql, const char *query,
|
||||
|
@ -26,7 +26,6 @@ C_MODE_START
|
||||
extern void lib_connection_phase(NET *net, int phase);
|
||||
extern void init_embedded_mysql(MYSQL *mysql, int client_flag, char *db);
|
||||
extern void *create_embedded_thd(int client_flag, char *db);
|
||||
extern void free_embedded_thd(MYSQL *mysql);
|
||||
extern MYSQL_METHODS embedded_methods;
|
||||
void free_old_query(MYSQL *mysql);
|
||||
extern my_bool server_inited;
|
||||
|
@ -210,6 +210,14 @@ int STDCALL emb_unbuffered_fetch(MYSQL *mysql, char **row)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void STDCALL emb_free_embedded_thd(MYSQL *mysql)
|
||||
{
|
||||
THD *thd= (THD*)mysql->thd;
|
||||
if (thd->data)
|
||||
free_rows(thd->data);
|
||||
delete thd;
|
||||
}
|
||||
|
||||
MYSQL_METHODS embedded_methods=
|
||||
{
|
||||
emb_mysql_read_query_result,
|
||||
@ -221,7 +229,8 @@ MYSQL_METHODS embedded_methods=
|
||||
emb_read_prepare_result,
|
||||
emb_stmt_execute,
|
||||
emb_read_binary_rows,
|
||||
emb_unbuffered_fetch
|
||||
emb_unbuffered_fetch,
|
||||
emb_free_embedded_thd
|
||||
};
|
||||
|
||||
C_MODE_END
|
||||
@ -493,16 +502,6 @@ err:
|
||||
}
|
||||
#endif
|
||||
|
||||
void free_embedded_thd(MYSQL *mysql)
|
||||
{
|
||||
THD *thd= (THD*)mysql->thd;
|
||||
if (!thd)
|
||||
return;
|
||||
if (thd->data)
|
||||
free_rows(thd->data);
|
||||
delete thd;
|
||||
}
|
||||
|
||||
C_MODE_END
|
||||
|
||||
bool Protocol::send_fields(List<Item> *list, uint flag)
|
||||
|
@ -1409,7 +1409,8 @@ static MYSQL_METHODS client_methods=
|
||||
cli_read_prepare_result,
|
||||
cli_stmt_execute,
|
||||
cli_read_binary_rows,
|
||||
cli_unbuffered_fetch
|
||||
cli_unbuffered_fetch,
|
||||
NULL
|
||||
#endif
|
||||
};
|
||||
|
||||
@ -2207,6 +2208,10 @@ void STDCALL mysql_close(MYSQL *mysql)
|
||||
#endif
|
||||
if (mysql != mysql->master)
|
||||
mysql_close(mysql->master);
|
||||
#ifndef MYSQL_SERVER
|
||||
if (mysql->thd)
|
||||
(*mysql->methods->free_embedded_thd)(mysql);
|
||||
#endif
|
||||
if (mysql->free_me)
|
||||
my_free((gptr) mysql,MYF(0));
|
||||
}
|
||||
|
Reference in New Issue
Block a user