← Back to team overview

drizzle-discuss team mailing list archive

Re: drizzle - pbxt merge status

 

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




Follow ups

References