opt_sum.cc:

  A fix for a bug #3189, pertaining to crashing MySQL server when a query with MIN / MAX on the BLOB column is to be optimised
parent 704284d4
...@@ -601,3 +601,9 @@ id txt ...@@ -601,3 +601,9 @@ id txt
2 Chevy 2 Chevy
4 Ford 4 Ford
drop table t1; drop table t1;
CREATE TABLE t1 ( i int(11) NOT NULL default '0', c text NOT NULL, PRIMARY KEY (i), KEY (c(1),c(1)));
INSERT t1 VALUES (1,''),(2,''),(3,'asdfh'),(4,'');
select max(i) from t1 where c = '';
max(i)
4
drop table t1;
...@@ -312,3 +312,9 @@ select * from t1 where txt <= 'Chevy'; ...@@ -312,3 +312,9 @@ select * from t1 where txt <= 'Chevy';
select * from t1 where txt > 'Chevy'; select * from t1 where txt > 'Chevy';
select * from t1 where txt >= 'Chevy'; select * from t1 where txt >= 'Chevy';
drop table t1; drop table t1;
CREATE TABLE t1 ( i int(11) NOT NULL default '0', c text NOT NULL, PRIMARY KEY (i), KEY (c(1),c(1)));
INSERT t1 VALUES (1,''),(2,''),(3,'asdfh'),(4,'');
select max(i) from t1 where c = '';
drop table t1;
...@@ -443,7 +443,9 @@ static bool find_range_key(TABLE_REF *ref, Field* field, COND *cond) ...@@ -443,7 +443,9 @@ static bool find_range_key(TABLE_REF *ref, Field* field, COND *cond)
// Save found constant // Save found constant
if (part->null_bit) if (part->null_bit)
*key_ptr++= (byte) test(part->field->is_null()); *key_ptr++= (byte) test(part->field->is_null());
part->field->get_key_image((char*) key_ptr,part->length); 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); key_ptr+=part->store_length - test(part->null_bit);
left_length-=part->store_length; left_length-=part->store_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