Loading mysql-test/r/func_group.result +13 −0 Original line number Diff line number Diff line Loading @@ -845,6 +845,19 @@ EXPLAIN SELECT MAX(b) FROM t1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 DROP TABLE t1; CREATE TABLE t1 (id int , b varchar(512), INDEX(b(250))) COLLATE latin1_bin; Warnings: Warning 1246 Converting column 'b' from CHAR to TEXT INSERT INTO t1 VALUES (1,CONCAT(REPEAT('_', 250), "qq")), (1,CONCAT(REPEAT('_', 250), "zz")), (1,CONCAT(REPEAT('_', 250), "aa")), (1,CONCAT(REPEAT('_', 250), "ff")); SELECT MAX(b) FROM t1; MAX(b) __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________zz EXPLAIN SELECT MAX(b) FROM t1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 4 DROP TABLE t1; create table t2 (ff double); insert into t2 values (2.2); select cast(sum(distinct ff) as decimal(5,2)) from t2; Loading mysql-test/t/func_group.test +9 −0 Original line number Diff line number Diff line Loading @@ -558,6 +558,15 @@ SELECT MAX(b) FROM t1; EXPLAIN SELECT MAX(b) FROM t1; DROP TABLE t1; CREATE TABLE t1 (id int , b varchar(512), INDEX(b(250))) COLLATE latin1_bin; INSERT INTO t1 VALUES (1,CONCAT(REPEAT('_', 250), "qq")), (1,CONCAT(REPEAT('_', 250), "zz")), (1,CONCAT(REPEAT('_', 250), "aa")), (1,CONCAT(REPEAT('_', 250), "ff")); SELECT MAX(b) FROM t1; EXPLAIN SELECT MAX(b) FROM t1; DROP TABLE t1; # End of 4.1 tests # Loading sql/opt_sum.cc +4 −2 Original line number Diff line number Diff line Loading @@ -711,7 +711,9 @@ static bool find_key_for_maxmin(bool max_fl, TABLE_REF *ref, return 0; /* Check whether the index component is partial */ if (part->length < table->field[part->fieldnr-1]->pack_length()) Field *part_field= table->field[part->fieldnr-1]; if ((part_field->flags & BLOB_FLAG) || part->length < part_field->key_length()) break; if (field->eq(part->field)) Loading Loading
mysql-test/r/func_group.result +13 −0 Original line number Diff line number Diff line Loading @@ -845,6 +845,19 @@ EXPLAIN SELECT MAX(b) FROM t1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 DROP TABLE t1; CREATE TABLE t1 (id int , b varchar(512), INDEX(b(250))) COLLATE latin1_bin; Warnings: Warning 1246 Converting column 'b' from CHAR to TEXT INSERT INTO t1 VALUES (1,CONCAT(REPEAT('_', 250), "qq")), (1,CONCAT(REPEAT('_', 250), "zz")), (1,CONCAT(REPEAT('_', 250), "aa")), (1,CONCAT(REPEAT('_', 250), "ff")); SELECT MAX(b) FROM t1; MAX(b) __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________zz EXPLAIN SELECT MAX(b) FROM t1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 4 DROP TABLE t1; create table t2 (ff double); insert into t2 values (2.2); select cast(sum(distinct ff) as decimal(5,2)) from t2; Loading
mysql-test/t/func_group.test +9 −0 Original line number Diff line number Diff line Loading @@ -558,6 +558,15 @@ SELECT MAX(b) FROM t1; EXPLAIN SELECT MAX(b) FROM t1; DROP TABLE t1; CREATE TABLE t1 (id int , b varchar(512), INDEX(b(250))) COLLATE latin1_bin; INSERT INTO t1 VALUES (1,CONCAT(REPEAT('_', 250), "qq")), (1,CONCAT(REPEAT('_', 250), "zz")), (1,CONCAT(REPEAT('_', 250), "aa")), (1,CONCAT(REPEAT('_', 250), "ff")); SELECT MAX(b) FROM t1; EXPLAIN SELECT MAX(b) FROM t1; DROP TABLE t1; # End of 4.1 tests # Loading
sql/opt_sum.cc +4 −2 Original line number Diff line number Diff line Loading @@ -711,7 +711,9 @@ static bool find_key_for_maxmin(bool max_fl, TABLE_REF *ref, return 0; /* Check whether the index component is partial */ if (part->length < table->field[part->fieldnr-1]->pack_length()) Field *part_field= table->field[part->fieldnr-1]; if ((part_field->flags & BLOB_FLAG) || part->length < part_field->key_length()) break; if (field->eq(part->field)) Loading