diff options
author | Sergei Petrunia <psergey@askmonty.org> | 2017-02-14 07:18:55 -0800 |
---|---|---|
committer | Sergei Petrunia <psergey@askmonty.org> | 2017-02-14 07:18:55 -0800 |
commit | 20a92ccc0439a1a02c336e397cc2cc4ec8aba797 (patch) | |
tree | b0bb7d3222e9e7a3de777f85ae4a98e9f6460e22 /mysql-test | |
parent | f76d5fefb818760f41488c1793fca27d97c9c2a0 (diff) | |
download | mariadb-git-bb-10.2-mdev10694.tar.gz |
MDEV-10694 - SIGFPE and/or huge memory allocation in maria_create ...bb-10.2-mdev10694
The issue was that JOIN::rollup_write_data() used
JOIN::tmp_table_param::[start_]recinfo, which had uninitialized data.
These fields have uninitialized data, because JOIN::tmp_table_param
currently only stores some grouping-related data fields. The data about
the work (temporary) tables themselves is stored in
join->join_tab[...].tmp_table_param.
The fix is to make JOIN::rollup_write_data follow this convention
and look at the right TMP_TABLE_PARAM object
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/group_by.result | 9 | ||||
-rw-r--r-- | mysql-test/t/group_by.test | 8 |
2 files changed, 17 insertions, 0 deletions
diff --git a/mysql-test/r/group_by.result b/mysql-test/r/group_by.result index 8788114583d..bd5f4bc1efd 100644 --- a/mysql-test/r/group_by.result +++ b/mysql-test/r/group_by.result @@ -2771,3 +2771,12 @@ SELECT 1 IN ( SELECT COUNT( DISTINCT f2 ) FROM t1 WHERE f1 <= 4 ); 1 IN ( SELECT COUNT( DISTINCT f2 ) FROM t1 WHERE f1 <= 4 ) 0 drop table t1; +# +# MDEV-10694 - SIGFPE and/or huge memory allocation in maria_create with distinct/group by/ rollup +# +create table t1 (a int,b int) ; +insert into t1 values(-126,7),(1,1),(0,0),(-1,1),(351,65534); +select distinct 1 from t1 group by a,b with rollup limit 1; +1 +1 +drop table t1; diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test index a97d8ef4248..acb33c2c115 100644 --- a/mysql-test/t/group_by.test +++ b/mysql-test/t/group_by.test @@ -1876,3 +1876,11 @@ INSERT INTO t1 VALUES (0,'foo'),(1,'bar'); SELECT 1 IN ( SELECT COUNT( DISTINCT f2 ) FROM t1 WHERE f1 <= 4 ); drop table t1; +--echo # +--echo # MDEV-10694 - SIGFPE and/or huge memory allocation in maria_create with distinct/group by/ rollup +--echo # +create table t1 (a int,b int) ; +insert into t1 values(-126,7),(1,1),(0,0),(-1,1),(351,65534); +select distinct 1 from t1 group by a,b with rollup limit 1; +drop table t1; + |