Commit 42d39e6e authored by Tatjana Azundris Nuernberg's avatar Tatjana Azundris Nuernberg

Bug12589870 post merge fixes - manual merge

parents d6d11c8e 8444b6a1
...@@ -1053,7 +1053,7 @@ subst_spvars(THD *thd, sp_instr *instr, LEX_STRING *query_str) ...@@ -1053,7 +1053,7 @@ subst_spvars(THD *thd, sp_instr *instr, LEX_STRING *query_str)
{ {
memcpy(pbuf, qbuf.ptr(), qbuf.length()); memcpy(pbuf, qbuf.ptr(), qbuf.length());
pbuf[qbuf.length()]= 0; pbuf[qbuf.length()]= 0;
*(size_t *)(pbuf+qbuf.length()+1)= thd->db_length; memcpy(pbuf+qbuf.length()+1, (char *) &thd->db_length, sizeof(size_t));
} }
else else
DBUG_RETURN(TRUE); DBUG_RETURN(TRUE);
......
...@@ -1515,8 +1515,9 @@ Query_cache::send_result_to_client(THD *thd, char *sql, uint query_length) ...@@ -1515,8 +1515,9 @@ Query_cache::send_result_to_client(THD *thd, char *sql, uint query_length)
sure the new current database has a name with the same length sure the new current database has a name with the same length
as the previous one. as the previous one.
*/ */
size_t *db_len= (size_t *) (sql + query_length + 1); size_t db_len;
if (thd->db_length != *db_len) memcpy((char *) &db_len, (sql + query_length + 1), sizeof(size_t));
if (thd->db_length != db_len)
{ {
/* /*
We should probably reallocate the buffer in this case, We should probably reallocate the buffer in this case,
......
...@@ -536,6 +536,8 @@ static void handle_bootstrap_impl(THD *thd) ...@@ -536,6 +536,8 @@ static void handle_bootstrap_impl(THD *thd)
query= (char *) thd->memdup_w_gap(buff, length + 1, query= (char *) thd->memdup_w_gap(buff, length + 1,
thd->db_length + 1 + thd->db_length + 1 +
QUERY_CACHE_FLAGS_SIZE); QUERY_CACHE_FLAGS_SIZE);
size_t db_len= 0;
memcpy(query + length + 1, (char *) &db_len, sizeof(size_t));
thd->set_query_and_id(query, length, thd->charset(), next_query_id()); thd->set_query_and_id(query, length, thd->charset(), next_query_id());
DBUG_PRINT("query",("%-.4096s",thd->query())); DBUG_PRINT("query",("%-.4096s",thd->query()));
#if defined(ENABLED_PROFILING) #if defined(ENABLED_PROFILING)
...@@ -1658,8 +1660,8 @@ bool alloc_query(THD *thd, const char *packet, uint packet_length) ...@@ -1658,8 +1660,8 @@ bool alloc_query(THD *thd, const char *packet, uint packet_length)
also store this length, in case current database is changed during also store this length, in case current database is changed during
execution. We might need to reallocate the 'query' buffer execution. We might need to reallocate the 'query' buffer
*/ */
size_t *len = (size_t *) (query + packet_length + 1); char *len_pos = (query + packet_length + 1);
*len= thd->db_length; memcpy(len_pos, (char *) &thd->db_length, sizeof(size_t));
thd->set_query(query, packet_length); thd->set_query(query, packet_length);
......
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