mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug #23427 (incompatible ABI change)
the incompatibility was caused by current_stmt member added to the MYSQL structure. It's possible to move it to THD structure instead which saves ABI
This commit is contained in:
@ -270,12 +270,6 @@ typedef struct st_mysql
|
|||||||
from mysql_stmt_close if close had to cancel result set of this object.
|
from mysql_stmt_close if close had to cancel result set of this object.
|
||||||
*/
|
*/
|
||||||
my_bool *unbuffered_fetch_owner;
|
my_bool *unbuffered_fetch_owner;
|
||||||
/*
|
|
||||||
In embedded server it points to the statement that is processed
|
|
||||||
in the current query. We store some results directly in statement
|
|
||||||
fields then.
|
|
||||||
*/
|
|
||||||
struct st_mysql_stmt *current_stmt;
|
|
||||||
} MYSQL;
|
} MYSQL;
|
||||||
|
|
||||||
typedef struct st_mysql_res {
|
typedef struct st_mysql_res {
|
||||||
|
@ -94,7 +94,7 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
|
|||||||
mysql->affected_rows= ~(my_ulonglong) 0;
|
mysql->affected_rows= ~(my_ulonglong) 0;
|
||||||
mysql->field_count= 0;
|
mysql->field_count= 0;
|
||||||
net->last_errno= 0;
|
net->last_errno= 0;
|
||||||
mysql->current_stmt= stmt;
|
thd->current_stmt= stmt;
|
||||||
|
|
||||||
thd->store_globals(); // Fix if more than one connect
|
thd->store_globals(); // Fix if more than one connect
|
||||||
/*
|
/*
|
||||||
@ -644,8 +644,8 @@ bool Protocol::send_fields(List<Item> *list, uint flag)
|
|||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
|
|
||||||
field_count= list->elements;
|
field_count= list->elements;
|
||||||
field_alloc= mysql->current_stmt ? &mysql->current_stmt->mem_root :
|
field_alloc= thd->current_stmt ? &thd->current_stmt->mem_root :
|
||||||
&mysql->field_alloc;
|
&mysql->field_alloc;
|
||||||
if (!(client_field= mysql->fields=
|
if (!(client_field= mysql->fields=
|
||||||
(MYSQL_FIELD *)alloc_root(field_alloc,
|
(MYSQL_FIELD *)alloc_root(field_alloc,
|
||||||
sizeof(MYSQL_FIELD) * field_count)))
|
sizeof(MYSQL_FIELD) * field_count)))
|
||||||
@ -751,8 +751,8 @@ bool Protocol_prep::write()
|
|||||||
{
|
{
|
||||||
MYSQL *mysql= thd->mysql;
|
MYSQL *mysql= thd->mysql;
|
||||||
|
|
||||||
if (mysql->current_stmt)
|
if (thd->current_stmt)
|
||||||
data= &mysql->current_stmt->result;
|
data= &thd->current_stmt->result;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!(data= (MYSQL_DATA*) my_malloc(sizeof(MYSQL_DATA),
|
if (!(data= (MYSQL_DATA*) my_malloc(sizeof(MYSQL_DATA),
|
||||||
|
@ -686,6 +686,12 @@ public:
|
|||||||
char *extra_data;
|
char *extra_data;
|
||||||
ulong extra_length;
|
ulong extra_length;
|
||||||
String query_rest;
|
String query_rest;
|
||||||
|
/*
|
||||||
|
In embedded server it points to the statement that is processed
|
||||||
|
in the current query. We store some results directly in statement
|
||||||
|
fields then.
|
||||||
|
*/
|
||||||
|
struct st_mysql_stmt *current_stmt;
|
||||||
#endif
|
#endif
|
||||||
NET net; // client connection descriptor
|
NET net; // client connection descriptor
|
||||||
MEM_ROOT warn_root; // For warnings and errors
|
MEM_ROOT warn_root; // For warnings and errors
|
||||||
|
Reference in New Issue
Block a user