diff options
author | unknown <igor@rurik.mysql.com> | 2005-03-17 20:18:19 -0800 |
---|---|---|
committer | unknown <igor@rurik.mysql.com> | 2005-03-17 20:18:19 -0800 |
commit | ee2633a7e2d21b55d814d7f34fd47d229409e0e5 (patch) | |
tree | f90e085274bd53f24ec71c24832c0d2b68e124aa | |
parent | 39a0645a8adb7b9038d7466562f2c47180e643f5 (diff) | |
download | mariadb-git-ee2633a7e2d21b55d814d7f34fd47d229409e0e5.tar.gz |
olap.test:
Added a test case for bug #8617.
sql_select.cc:
Fixed bug #8617.
Queries with ROLLUP and LIMIT n returned more than n rows
if SQL_CALC_FOUND_ROWS was used.
sql/sql_select.cc:
Fixed bug #8617.
Queries with ROLLUP and LIMIT n returned more than n rows
if SQL_CALC_FOUND_ROWS was used.
mysql-test/t/olap.test:
Added a test case for bug #8617.
-rw-r--r-- | mysql-test/r/olap.result | 13 | ||||
-rw-r--r-- | mysql-test/t/olap.test | 16 | ||||
-rw-r--r-- | sql/sql_select.cc | 2 |
3 files changed, 30 insertions, 1 deletions
diff --git a/mysql-test/r/olap.result b/mysql-test/r/olap.result index fe83800f658..6500edf478f 100644 --- a/mysql-test/r/olap.result +++ b/mysql-test/r/olap.result @@ -379,3 +379,16 @@ a sum(b) 4 4 NULL 14 DROP TABLE t1; +CREATE TABLE t1 (a int, b int); +INSERT INTO t1 VALUES +(1,4), +(2,2), (2,2), +(4,1), (4,1), (4,1), (4,1), +(2,1), (2,1); +SELECT a, SUM(b) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1; +a SUM(b) +1 4 +SELECT SQL_CALC_FOUND_ROWS a, SUM(b) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1; +a SUM(b) +1 4 +DROP TABLE t1; diff --git a/mysql-test/t/olap.test b/mysql-test/t/olap.test index 6778af3d533..3aac0f45ead 100644 --- a/mysql-test/t/olap.test +++ b/mysql-test/t/olap.test @@ -155,3 +155,19 @@ SELECT DISTINCT a, sum(b) FROM t1 GROUP BY a,b WITH ROLLUP; DROP TABLE t1; +# +# Tests for bugs #8617: SQL_CACL_FOUND_ROWS with rollup and limit +# + +CREATE TABLE t1 (a int, b int); + +INSERT INTO t1 VALUES + (1,4), + (2,2), (2,2), + (4,1), (4,1), (4,1), (4,1), + (2,1), (2,1); + +SELECT a, SUM(b) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1; +SELECT SQL_CALC_FOUND_ROWS a, SUM(b) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1; + +DROP TABLE t1; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 5bfe1346568..4b2484d1e06 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -9210,7 +9210,7 @@ int JOIN::rollup_send_data(uint idx) ref_pointer_array_size); if ((!having || having->val_int())) { - if (send_records < unit->select_limit_cnt && + if (send_records < unit->select_limit_cnt && do_send_rows && result->send_data(rollup.fields[i])) return 1; send_records++; |