mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
a fix.
(Bug#3738: SQL_CALC_FOUND_ROWS ignores WHERE if LIMIT used, Bug#3845: wrong FOUND_ROWS result)
This commit is contained in:
@@ -206,3 +206,20 @@ WHERE ( r = 1 AND a IN ( 1, 2 ) AND ( u = 'w' OR u LIKE 'w/%' ) )
|
|||||||
OR ( r = 1 AND a IN ( 3 ) AND ( u = 'w/U' OR u LIKE 'w/U/%' ) )
|
OR ( r = 1 AND a IN ( 3 ) AND ( u = 'w/U' OR u LIKE 'w/U/%' ) )
|
||||||
OR ( r = 1 AND a IN ( 1, 2, 3 ) AND ( u = 'w' ) );
|
OR ( r = 1 AND a IN ( 1, 2, 3 ) AND ( u = 'w' ) );
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (a VARCHAR(16), UNIQUE(a));
|
||||||
|
INSERT INTO t1 VALUES ('1'), ('2'), ('3');
|
||||||
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a = '2' LIMIT 0, 1;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
SELECT FOUND_ROWS();
|
||||||
|
FOUND_ROWS()
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
INSERT INTO t1 VALUES (0), (0), (1), (2);
|
||||||
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a = 0 GROUP BY a HAVING a > 10;
|
||||||
|
a
|
||||||
|
SELECT FOUND_ROWS();
|
||||||
|
FOUND_ROWS()
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -127,3 +127,22 @@ WHERE ( r = 1 AND a IN ( 1, 2 ) AND ( u = 'w' OR u LIKE 'w/%' ) )
|
|||||||
OR ( r = 1 AND a IN ( 1, 2, 3 ) AND ( u = 'w' ) );
|
OR ( r = 1 AND a IN ( 1, 2, 3 ) AND ( u = 'w' ) );
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #3738: we have a ref key
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a VARCHAR(16), UNIQUE(a));
|
||||||
|
INSERT INTO t1 VALUES ('1'), ('2'), ('3');
|
||||||
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a = '2' LIMIT 0, 1;
|
||||||
|
SELECT FOUND_ROWS();
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #3845: group by, having and empty result
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
INSERT INTO t1 VALUES (0), (0), (1), (2);
|
||||||
|
SELECT SQL_CALC_FOUND_ROWS * FROM t1 WHERE a = 0 GROUP BY a HAVING a > 10;
|
||||||
|
SELECT FOUND_ROWS();
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -5348,7 +5348,8 @@ end_send(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)),
|
|||||||
if ((join->tables == 1) && !join->tmp_table && !join->sort_and_group
|
if ((join->tables == 1) && !join->tmp_table && !join->sort_and_group
|
||||||
&& !join->send_group_parts && !join->having && !jt->select_cond &&
|
&& !join->send_group_parts && !join->having && !jt->select_cond &&
|
||||||
!(jt->select && jt->select->quick) &&
|
!(jt->select && jt->select->quick) &&
|
||||||
!(jt->table->file->table_flags() & HA_NOT_EXACT_COUNT))
|
!(jt->table->file->table_flags() & HA_NOT_EXACT_COUNT) &&
|
||||||
|
(jt->ref.key < 0))
|
||||||
{
|
{
|
||||||
/* Join over all rows in table; Return number of found rows */
|
/* Join over all rows in table; Return number of found rows */
|
||||||
TABLE *table=jt->table;
|
TABLE *table=jt->table;
|
||||||
@@ -5429,6 +5430,7 @@ end_send_group(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)),
|
|||||||
DBUG_RETURN(-1); /* purecov: inspected */
|
DBUG_RETURN(-1); /* purecov: inspected */
|
||||||
if (end_of_records)
|
if (end_of_records)
|
||||||
{
|
{
|
||||||
|
if (!error)
|
||||||
join->send_records++;
|
join->send_records++;
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user