Hi all!
I have finished work on all issues but one. And here I need some input
from Drizzle developers. The problem is that for enums reported key size
is not consistent with reported key type:
inline uint32_t get_enum_pack_length(int elements)
{
return elements < 256 ? 1 : 2;
}
But at the same time:
enum ha_base_keytype Field_enum::key_type() const
{
switch (packlength)
{
default: return HA_KEYTYPE_BINARY;
case 2: assert(1);
case 3: assert(1);
case 4: return HA_KEYTYPE_ULONG_INT;
case 8: return HA_KEYTYPE_ULONGLONG;
}
}
this code reports HA_KEYTYPE_ULONG_INT for the keys of size 2. Our key
management code assumes that all keys of type HA_KEYTYPE_ULONG_INT are
4-byte long. So either this is a bug on drizzle side or our assumption
is wrong. Please comment. FYI: upating get_enum_pack_length to "return
elements < 256 ? 1 : 4;" works fine for PBXT, but of course makes key
values larger...
This problem might affect other engines and it might be not easy to
reproduce - surprisingly the memory is usually zeroed right after the
key value, unless there was a heavy load before the test.
BR,
Vlad
Hi all!
I have just pushed an important fix for a bug that sometimes caused
index scans to hang. Rev.1052.
--
--
Best Regards,
Vladimir
_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help : https://help.launchpad.net/ListHelp