mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
automerge
This commit is contained in:
14
mysql-test/r/bug46080.result
Normal file
14
mysql-test/r/bug46080.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#
|
||||||
|
# Bug #46080: group_concat(... order by) crashes server when
|
||||||
|
# sort_buffer_size cannot allocate
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a CHAR(255));
|
||||||
|
INSERT INTO t1 VALUES ('a');
|
||||||
|
SET @@SESSION.sort_buffer_size=5*16*1000000;
|
||||||
|
SET @@SESSION.max_heap_table_size=5*1000000;
|
||||||
|
# Must not crash.
|
||||||
|
SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SESSION.sort_buffer_size=default;
|
||||||
|
SET @@SESSION.max_heap_table_size=default;
|
||||||
|
End of 5.0 tests
|
1
mysql-test/t/bug46080-master.opt
Normal file
1
mysql-test/t/bug46080-master.opt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
--skip-grant-tables --skip-name-resolve --safemalloc-mem-limit=4000000
|
19
mysql-test/t/bug46080.test
Normal file
19
mysql-test/t/bug46080.test
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
--echo #
|
||||||
|
--echo # Bug #46080: group_concat(... order by) crashes server when
|
||||||
|
--echo # sort_buffer_size cannot allocate
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1(a CHAR(255));
|
||||||
|
INSERT INTO t1 VALUES ('a');
|
||||||
|
|
||||||
|
SET @@SESSION.sort_buffer_size=5*16*1000000;
|
||||||
|
SET @@SESSION.max_heap_table_size=5*1000000;
|
||||||
|
|
||||||
|
echo # Must not crash.
|
||||||
|
SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SESSION.sort_buffer_size=default;
|
||||||
|
SET @@SESSION.max_heap_table_size=default;
|
||||||
|
|
||||||
|
--echo End of 5.0 tests
|
@@ -3327,8 +3327,13 @@ bool Item_func_group_concat::add()
|
|||||||
|
|
||||||
TREE_ELEMENT *el= 0; // Only for safety
|
TREE_ELEMENT *el= 0; // Only for safety
|
||||||
if (row_eligible && tree)
|
if (row_eligible && tree)
|
||||||
|
{
|
||||||
el= tree_insert(tree, table->record[0] + table->s->null_bytes, 0,
|
el= tree_insert(tree, table->record[0] + table->s->null_bytes, 0,
|
||||||
tree->custom_arg);
|
tree->custom_arg);
|
||||||
|
/* check if there was enough memory to insert the row */
|
||||||
|
if (!el)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
If the row is not a duplicate (el->count == 1)
|
If the row is not a duplicate (el->count == 1)
|
||||||
we can dump the row here in case of GROUP_CONCAT(DISTINCT...)
|
we can dump the row here in case of GROUP_CONCAT(DISTINCT...)
|
||||||
|
Reference in New Issue
Block a user