Commit 92224b87 authored by unknown's avatar unknown

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


include/mysql.h:
  member moved to the THD structure
libmysqld/lib_sql.cc:
  now we use THD member here
sql/sql_class.h:
  current_stmt member added for the embedded server
parent a2a77ea2
......@@ -270,12 +270,6 @@ typedef struct st_mysql
from mysql_stmt_close if close had to cancel result set of this object.
*/
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;
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->field_count= 0;
net->last_errno= 0;
mysql->current_stmt= stmt;
thd->current_stmt= stmt;
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);
field_count= list->elements;
field_alloc= mysql->current_stmt ? &mysql->current_stmt->mem_root :
&mysql->field_alloc;
field_alloc= thd->current_stmt ? &thd->current_stmt->mem_root :
&mysql->field_alloc;
if (!(client_field= mysql->fields=
(MYSQL_FIELD *)alloc_root(field_alloc,
sizeof(MYSQL_FIELD) * field_count)))
......@@ -751,8 +751,8 @@ bool Protocol_prep::write()
{
MYSQL *mysql= thd->mysql;
if (mysql->current_stmt)
data= &mysql->current_stmt->result;
if (thd->current_stmt)
data= &thd->current_stmt->result;
else
{
if (!(data= (MYSQL_DATA*) my_malloc(sizeof(MYSQL_DATA),
......
......@@ -686,6 +686,12 @@ class THD :public ilink,
char *extra_data;
ulong extra_length;
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
NET net; // client connection descriptor
MEM_ROOT warn_root; // For warnings and errors
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment