Commit 89402314 authored by igor@rurik.mysql.com's avatar igor@rurik.mysql.com

Fixed bug #20076.

Server crashed in some cases when a query required a MIN/MAX
agrregation for a 'ucs2' field. 
In these cases  the aggregation caused calls of the function
update_tmptable_sum_func that indirectly invoked 
the method Item_sum_hybrid::min_max_update_str_field() 
containing a call to strip_sp for a ucs2 character set.
The latter led directly to the crash as it used my_isspace
undefined for the ucs2 character set.
Actually the call of strip_sp is not needed at all in this
situation and has been removed by the fix.
parent e307b5b2
...@@ -715,3 +715,10 @@ lily ...@@ -715,3 +715,10 @@ lily
river river
drop table t1; drop table t1;
deallocate prepare stmt; deallocate prepare stmt;
CREATE TABLE t1 (id int, s char(5) CHARACTER SET ucs2 COLLATE ucs2_unicode_ci);
INSERT INTO t1 VALUES (1, 'ZZZZZ'), (1, 'ZZZ'), (2, 'ZZZ'), (2, 'ZZZZZ');
SELECT id, MIN(s) FROM t1 GROUP BY id;
id MIN(s)
1 ZZZ
2 ZZZ
DROP TABLE t1;
...@@ -451,4 +451,16 @@ execute stmt using @param1; ...@@ -451,4 +451,16 @@ execute stmt using @param1;
select utext from t1 where utext like '%%'; select utext from t1 where utext like '%%';
drop table t1; drop table t1;
deallocate prepare stmt; deallocate prepare stmt;
#
# Bug #20076: server crashes for a query with GROUP BY if MIN/MAX aggregation
# over a 'ucs2' field uses a temporary table
#
CREATE TABLE t1 (id int, s char(5) CHARACTER SET ucs2 COLLATE ucs2_unicode_ci);
INSERT INTO t1 VALUES (1, 'ZZZZZ'), (1, 'ZZZ'), (2, 'ZZZ'), (2, 'ZZZZZ');
SELECT id, MIN(s) FROM t1 GROUP BY id;
DROP TABLE t1;
# End of 4.1 tests # End of 4.1 tests
...@@ -930,7 +930,6 @@ Item_sum_hybrid::min_max_update_str_field() ...@@ -930,7 +930,6 @@ Item_sum_hybrid::min_max_update_str_field()
if (!args[0]->null_value) if (!args[0]->null_value)
{ {
res_str->strip_sp();
result_field->val_str(&tmp_value); result_field->val_str(&tmp_value);
if (result_field->is_null() || if (result_field->is_null() ||
......
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