summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authortomas@whalegate.ndb.mysql.com <>2007-08-27 15:40:49 +0200
committertomas@whalegate.ndb.mysql.com <>2007-08-27 15:40:49 +0200
commite1f827da84e7d024ce33bf8c0899f92183fae7fc (patch)
tree959ae6879729a10a8a436fe9fb2902bbb9f30f31 /sql/field.cc
parent857a157c3ca4a5fcc4c66667155da31ca17b099b (diff)
downloadmariadb-git-e1f827da84e7d024ce33bf8c0899f92183fae7fc.tar.gz
Bug#29549 rpl_ndb_myisam2ndb,rpl_ndb_innodb2ndb failed on Solaris for pack_length issue
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc18
1 files changed, 17 insertions, 1 deletions
diff --git a/sql/field.cc b/sql/field.cc
index 49ffc6a252e..3a90d605b86 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -7622,6 +7622,13 @@ uchar *Field_blob::pack(uchar *to, const uchar *from, uint max_length)
ptr= (uchar*) from;
}
else
+#ifdef WORDS_BIGENDIAN
+ if (table->s->db_low_byte_first)
+ {
+ store_length(to,packlength,length,0);
+ }
+ else
+#endif
memcpy(to,from,packlength); // Copy length
if (length)
{
@@ -7658,8 +7665,17 @@ const uchar *Field_blob::unpack(uchar *to,
const uchar *Field_blob::unpack(uchar *to, const uchar *from)
{
- memcpy(to,from,packlength);
uint32 length=get_length(from);
+#ifdef WORDS_BIGENDIAN
+ if (table->s->db_low_byte_first)
+ {
+ store_length(to,packlength,length,1);
+ }
+ else
+#endif
+ {
+ memcpy(to,from,packlength);
+ }
from+=packlength;
if (length)
memcpy_fixed(to+packlength, &from, sizeof(from));