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

Merging patch for BUG#52131 with mysql-5.5-bugteam.

This commit is contained in:
Mats Kindahl
2010-10-27 23:12:45 +02:00
3 changed files with 127 additions and 42 deletions

View File

@ -7725,12 +7725,6 @@ void Field_blob::sql_type(String &res) const
uchar *Field_blob::pack(uchar *to, const uchar *from,
uint max_length, bool low_byte_first)
{
DBUG_ENTER("Field_blob::pack");
DBUG_PRINT("enter", ("to: 0x%lx; from: 0x%lx;"
" max_length: %u; low_byte_first: %d",
(ulong) to, (ulong) from,
max_length, low_byte_first));
DBUG_DUMP("record", from, table->s->reclength);
uchar *save= ptr;
ptr= (uchar*) from;
uint32 length=get_length(); // Length of from string
@ -7751,8 +7745,7 @@ uchar *Field_blob::pack(uchar *to, const uchar *from,
memcpy(to+packlength, from,length);
}
ptr=save; // Restore org row pointer
DBUG_DUMP("packed", to, packlength + length);
DBUG_RETURN(to+packlength+length);
return to+packlength+length;
}
@ -8396,6 +8389,50 @@ uint Field_enum::is_equal(Create_field *new_field)
}
uchar *Field_enum::pack(uchar *to, const uchar *from,
uint max_length, bool low_byte_first)
{
DBUG_ENTER("Field_enum::pack");
DBUG_PRINT("debug", ("packlength: %d", packlength));
DBUG_DUMP("from", from, packlength);
switch (packlength)
{
case 1:
*to = *from;
DBUG_RETURN(to + 1);
case 2: DBUG_RETURN(pack_int16(to, from, low_byte_first));
case 3: DBUG_RETURN(pack_int24(to, from, low_byte_first));
case 4: DBUG_RETURN(pack_int32(to, from, low_byte_first));
case 8: DBUG_RETURN(pack_int64(to, from, low_byte_first));
default:
DBUG_ASSERT(0);
}
}
const uchar *Field_enum::unpack(uchar *to, const uchar *from,
uint param_data, bool low_byte_first)
{
DBUG_ENTER("Field_enum::unpack");
DBUG_PRINT("debug", ("packlength: %d", packlength));
DBUG_DUMP("from", from, packlength);
switch (packlength)
{
case 1:
*to = *from;
DBUG_RETURN(from + 1);
case 2: DBUG_RETURN(unpack_int16(to, from, low_byte_first));
case 3: DBUG_RETURN(unpack_int24(to, from, low_byte_first));
case 4: DBUG_RETURN(unpack_int32(to, from, low_byte_first));
case 8: DBUG_RETURN(unpack_int64(to, from, low_byte_first));
default:
DBUG_ASSERT(0);
}
}
/**
@return
returns 1 if the fields are equally defined