diff options
author | unknown <monty@mysql.com> | 2004-01-19 23:44:39 +0100 |
---|---|---|
committer | unknown <monty@mysql.com> | 2004-01-19 23:44:39 +0100 |
commit | bbc009e8d648bd1199f3cd957e99420391465f9a (patch) | |
tree | c0e63a06e46430c928e8049a26c964692c5415f4 /sql | |
parent | a5f2c9493e97c318ee1237c3b0b0f791294409da (diff) | |
download | mariadb-git-bbc009e8d648bd1199f3cd957e99420391465f9a.tar.gz |
Proper fix for bug with BLOB in MIN/MAX
sql/key.cc:
Change constant to define
Diffstat (limited to 'sql')
-rw-r--r-- | sql/key.cc | 4 | ||||
-rw-r--r-- | sql/opt_sum.cc | 12 |
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) { |