summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
Diffstat (limited to 'sql')
-rw-r--r--sql/key.cc4
-rw-r--r--sql/opt_sum.cc12
2 files changed, 9 insertions, 7 deletions
diff --git a/sql/key.cc b/sql/key.cc
index 809c5a164b9..0a5937fc881 100644
--- a/sql/key.cc
+++ b/sql/key.cc
@@ -182,9 +182,9 @@ int key_cmp(TABLE *table,const byte *key,uint idx,uint key_length)
}
if (key_part->key_part_flag & (HA_BLOB_PART | HA_VAR_LENGTH))
{
- if (key_part->field->key_cmp(key, key_part->length+2))
+ if (key_part->field->key_cmp(key, key_part->length+ HA_KEY_BLOB_LENGTH))
return 1;
- length=key_part->length+2;
+ length=key_part->length+HA_KEY_BLOB_LENGTH;
}
else
{
diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc
index abf04cf5517..b5eec2d5dd4 100644
--- a/sql/opt_sum.cc
+++ b/sql/opt_sum.cc
@@ -440,14 +440,16 @@ static bool find_range_key(TABLE_REF *ref, Field* field, COND *cond)
left_length < part->store_length ||
(table->file->index_flags(idx) & HA_WRONG_ASCII_ORDER))
break;
+ uint store_length= part->store_length;
// Save found constant
if (part->null_bit)
+ {
*key_ptr++= (byte) test(part->field->is_null());
- part->field->get_key_image((char*) key_ptr,
- (part->field->type() == FIELD_TYPE_BLOB) ?
- part->length + HA_KEY_BLOB_LENGTH : part->length);
- key_ptr+=part->store_length - test(part->null_bit);
- left_length-=part->store_length;
+ store_length--;
+ }
+ part->field->get_key_image((char*) key_ptr, store_length);
+ key_ptr+= store_length;
+ left_length-= part->store_length;
}
if (part == part_end && part->field == field)
{