diff options
Diffstat (limited to 'sql/ha_heap.cc')
-rw-r--r-- | sql/ha_heap.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sql/ha_heap.cc b/sql/ha_heap.cc index 46824033db9..29508207a70 100644 --- a/sql/ha_heap.cc +++ b/sql/ha_heap.cc @@ -481,16 +481,20 @@ int ha_heap::create(const char *name, TABLE *table_arg, { uint flag= key_part->key_type; Field *field= key_part->field; + if (pos->algorithm == HA_KEY_ALG_BTREE) seg->type= field->key_type(); else { - if ((seg->type = field->key_type()) != (int) HA_KEYTYPE_TEXT) + if ((seg->type = field->key_type()) != (int) HA_KEYTYPE_TEXT && + seg->type != HA_KEYTYPE_VARTEXT && + seg->type != HA_KEYTYPE_VARBINARY) seg->type= HA_KEYTYPE_BINARY; } seg->start= (uint) key_part->offset; seg->length= (uint) key_part->length; - seg->flag = 0; + seg->flag= key_part->key_part_flag; + seg->charset= field->charset(); if (field->null_ptr) { |