summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorTatjana Azundris Nuernberg <tatjana.nuernberg@oracle.com>2011-10-19 03:21:31 +0100
committerTatjana Azundris Nuernberg <tatjana.nuernberg@oracle.com>2011-10-19 03:21:31 +0100
commit7d882c19ecad83af921dd7bd9d77f088da594ac0 (patch)
treedad66f78fd97dc1c6ad37787e2824fbe831506bf /sql
parentcf66b6511f8b9293152e60dcefaa0e67a34c242f (diff)
downloadmariadb-git-7d882c19ecad83af921dd7bd9d77f088da594ac0.tar.gz
Bug12589870 post-merge fixes for Sparc64 and friends
Diffstat (limited to 'sql')
-rw-r--r--sql/sp_head.cc2
-rw-r--r--sql/sql_cache.cc5
-rw-r--r--sql/sql_parse.cc6
3 files changed, 8 insertions, 5 deletions
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index 70ffb0a36ab..8bea0be0f56 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -1044,7 +1044,7 @@ subst_spvars(THD *thd, sp_instr *instr, LEX_STRING *query_str)
{
memcpy(pbuf, qbuf.ptr(), qbuf.length());
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
DBUG_RETURN(TRUE);
diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc
index 4800fdedbe5..8a6d4bf9802 100644
--- a/sql/sql_cache.cc
+++ b/sql/sql_cache.cc
@@ -1471,8 +1471,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
as the previous one.
*/
- size_t *db_len= (size_t *) (sql + query_length + 1);
- if (thd->db_length != *db_len)
+ size_t 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,
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index a88cc2fa8e5..989c3e0f42f 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -492,6 +492,8 @@ static void handle_bootstrap_impl(THD *thd)
query= (char *) thd->memdup_w_gap(buff, length + 1,
thd->db_length + 1 +
QUERY_CACHE_FLAGS_SIZE);
+ size_t db_len= 0;
+ memcpy(query + length + 1, (char *) &db_len, sizeof(size_t));
thd->set_query(query, length);
DBUG_PRINT("query",("%-.4096s", thd->query()));
#if defined(ENABLED_PROFILING) && defined(COMMUNITY_SERVER)
@@ -1933,8 +1935,8 @@ bool alloc_query(THD *thd, const char *packet, uint packet_length)
also store this length, in case current database is changed during
execution. We might need to reallocate the 'query' buffer
*/
- size_t *len = (size_t *) (query + packet_length + 1);
- *len= thd->db_length;
+ char *len_pos = (query + packet_length + 1);
+ memcpy(len_pos, (char *) &thd->db_length, sizeof(size_t));
thd->set_query(query, packet_length);