mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Bug#48920: COUNT DISTINCT returns 1 for NULL values when in a
subquery in the select list
When a dependent subquery with count(distinct <col>) was
evaluated multiple times, the Distinct_Aggregator was reused.
However, the Aggregator was not reset, so when the subquery was
evaluated for the next record in the outer select, old dependent
info was used.
The fix is to clear() the existing aggregator in
Item_sum::set_aggregator(). This ensures that the aggregator is
reevaluated with the new dependent information.
This commit is contained in:
@@ -794,3 +794,50 @@ SHOW STATUS LIKE '%Handler_read_rnd_next';
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # BUG#48920: COUNT DISTINCT returns 1 for NULL values when in a subquery
|
||||
--echo # in the select list
|
||||
--echo #
|
||||
|
||||
--echo
|
||||
CREATE TABLE t1 (
|
||||
i int(11) DEFAULT NULL,
|
||||
v varchar(1) DEFAULT NULL
|
||||
);
|
||||
|
||||
--echo
|
||||
INSERT INTO t1 VALUES (8,'v');
|
||||
INSERT INTO t1 VALUES (9,'r');
|
||||
INSERT INTO t1 VALUES (NULL,'y');
|
||||
|
||||
--echo
|
||||
CREATE TABLE t2 (
|
||||
i int(11) DEFAULT NULL,
|
||||
v varchar(1) DEFAULT NULL,
|
||||
KEY i_key (i)
|
||||
);
|
||||
|
||||
--echo
|
||||
INSERT INTO t2 VALUES (NULL,'r');
|
||||
INSERT INTO t2 VALUES (0,'c');
|
||||
INSERT INTO t2 VALUES (0,'o');
|
||||
INSERT INTO t2 VALUES (2,'v');
|
||||
INSERT INTO t2 VALUES (7,'c');
|
||||
|
||||
--echo
|
||||
SELECT i, v, (SELECT COUNT(DISTINCT i)
|
||||
FROM t1
|
||||
WHERE v = t2.v) as subsel
|
||||
FROM t2;
|
||||
|
||||
--echo
|
||||
EXPLAIN EXTENDED
|
||||
SELECT i, v, (SELECT COUNT(DISTINCT i)
|
||||
FROM t1
|
||||
WHERE v = t2.v) as subsel
|
||||
FROM t2;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo End of 5.6 tests
|
||||
|
||||
Reference in New Issue
Block a user