mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
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. mysql-test/r/ctype_ucs.result: Added a test case for bug #20076. mysql-test/t/ctype_ucs.test: Added a test case for bug #20076.
This commit is contained in:
@ -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;
|
|||||||
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()
|
|||||||
|
|
||||||
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() ||
|
||||||
|
Reference in New Issue
Block a user