1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

SCRUM: embedded library

mysql_fetch_length fixed for embedded library. Now data length is stored
before the data. Pointers in row still points to the data so you have to
get *(uint*)(data_ptr - sizeof(uint)) to get data length


libmysqld/lib_sql.cc:
  bug fixed - user didn't get error description
  Protocol::net_store_data changed to store data length before the data
libmysqld/libmysqld.c:
  emb_fetch_length changed to retrive data length stored before the data
This commit is contained in:
unknown
2003-09-10 12:09:24 +05:00
parent 479c3766d6
commit 12e063b5e2
2 changed files with 7 additions and 10 deletions

View File

@ -80,10 +80,8 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
if ((net->last_errno= thd->net.last_errno))
{
memcpy(net->last_error, net->last_error,
sizeof(net->last_error));
memcpy(net->sqlstate, thd->net.sqlstate,
sizeof(net->sqlstate));
memcpy(net->last_error, thd->net.last_error, sizeof(net->last_error));
memcpy(net->sqlstate, thd->net.sqlstate, sizeof(net->sqlstate));
}
mysql->warning_count= ((THD*)mysql->thd)->total_warn_count;
return result;
@ -482,15 +480,16 @@ bool Protocol_simple::store_null()
bool Protocol::net_store_data(const char *from, uint length)
{
if (!(*next_field=alloc_root(alloc, length + 1)))
char *field_buf;
if (!(field_buf=alloc_root(alloc, length + sizeof(uint))))
return true;
*(uint *)field_buf= length;
*next_field= field_buf + sizeof(uint);
memcpy(*next_field, from, length);
(*next_field)[length]= 0;
if (next_mysql_field->max_length < length)
next_mysql_field->max_length=length;
++next_field;
++next_mysql_field;
return false;
}