Commit 8c3a1fde authored by unknown's avatar unknown

A fix for bit type.

pack_length_in_rec() func has been introduced.


sql/field.h:
  A fix for bit type. 
  As from now the pack_length_in_rec() function is used for MyISAM 
  record length calculation instead of the pack_length().
  For bit field it doesn't count uneven bits.
sql/ha_myisam.cc:
  A fix for bit type. 
  As from now the pack_length_in_rec() function is used for MyISAM 
  record length calculation instead of the pack_length().
  For bit field it doesn't count uneven bits.
parent 60ff25ca
......@@ -123,6 +123,7 @@ public:
}
virtual bool eq_def(Field *field);
virtual uint32 pack_length() const { return (uint32) field_length; }
virtual uint32 pack_length_in_rec() const { return pack_length(); }
virtual void reset(void) { bzero(ptr,pack_length()); }
virtual void reset_fields() {}
virtual void set_default()
......@@ -1237,6 +1238,7 @@ public:
{ get_key_image(buff, length, itRAW); }
uint32 pack_length() const
{ return (uint32) field_length + (bit_len > 0); }
uint32 pack_length_in_rec() const { return field_length; }
void sql_type(String &str) const;
field_cast_enum field_cast_type() { return FIELD_CAST_BIT; }
char *pack(char *to, const char *from, uint max_length=~(uint) 0);
......
......@@ -1467,7 +1467,7 @@ int ha_myisam::create(const char *name, register TABLE *table_arg,
fieldpos <= minpos)
{
/* skip null fields */
if (!(temp_length= (*field)->pack_length()))
if (!(temp_length= (*field)->pack_length_in_rec()))
continue; /* Skip null-fields */
if (! found || fieldpos < minpos ||
(fieldpos == minpos && temp_length < length))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment