mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
MDEV-9181 (NULLIF(count(table.col)), 0) gives wrong result on 10.1.x
Wrapping args[0] and args[2] into an Item_cache for aggregate functions.
This commit is contained in:
@ -1465,5 +1465,65 @@ Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where ((`test`.`t1`.`a` = 2020) and ((case when 2020 = 2010 then NULL else `test`.`t1`.`a` end) = concat('2020',rand())))
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-9181 (NULLIF(count(table.col)), 0) gives wrong result on 10.1.x
|
||||
#
|
||||
CREATE TABLE t1 (c1 varchar(50) DEFAULT NULL);
|
||||
INSERT INTO t1 (c1) VALUES ('hello'), ('hello\r\n'), ('hello'),('hello');
|
||||
SELECT NULLIF(COUNT(c1),0) FROM t1;
|
||||
NULLIF(COUNT(c1),0)
|
||||
4
|
||||
SELECT CASE WHEN COUNT(c1)=0 THEN NULL ELSE COUNT(c1) END FROM t1;
|
||||
CASE WHEN COUNT(c1)=0 THEN NULL ELSE COUNT(c1) END
|
||||
4
|
||||
SELECT NULLIF(COUNT(c1)+0,0) AS c1,NULLIF(CAST(COUNT(c1) AS SIGNED),0) AS c2,NULLIF(CONCAT(COUNT(c1)),0) AS c3 FROM t1;
|
||||
c1 c2 c3
|
||||
4 4 4
|
||||
SELECT NULLIF(COUNT(DISTINCT c1),0) FROM t1;
|
||||
NULLIF(COUNT(DISTINCT c1),0)
|
||||
2
|
||||
SELECT CASE WHEN COUNT(DISTINCT c1)=0 THEN NULL ELSE COUNT(DISTINCT c1) END FROM t1;
|
||||
CASE WHEN COUNT(DISTINCT c1)=0 THEN NULL ELSE COUNT(DISTINCT c1) END
|
||||
2
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
id INT NOT NULL,
|
||||
c1 INT DEFAULT NULL
|
||||
);
|
||||
INSERT INTO t1 VALUES (1,1),(1,2),(2,3),(2,4);
|
||||
SELECT NULLIF(COUNT(c1),0) AS c1,NULLIF(COUNT(c1)+0,0) AS c1_wrapped,CASE WHEN COUNT(c1) IS NULL THEN 0 ELSE COUNT(c1) END AS c1_case FROM t1 GROUP BY id;
|
||||
c1 c1_wrapped c1_case
|
||||
2 2 2
|
||||
2 2 2
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
SET @a=0;
|
||||
SELECT NULLIF(LAST_VALUE(@a:=@a+1,a),0) FROM t1;
|
||||
NULLIF(LAST_VALUE(@a:=@a+1,a),0)
|
||||
1
|
||||
2
|
||||
3
|
||||
SELECT @a;
|
||||
@a
|
||||
6
|
||||
SET @a=0;
|
||||
SELECT NULLIF(AVG(a),0), NULLIF(AVG(LAST_VALUE(@a:=@a+1,a)),0) FROM t1;
|
||||
NULLIF(AVG(a),0) NULLIF(AVG(LAST_VALUE(@a:=@a+1,a)),0)
|
||||
2.0000 2.0000
|
||||
SELECT @a;
|
||||
@a
|
||||
3
|
||||
EXPLAIN EXTENDED SELECT NULLIF(a,0) FROM t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1003 select nullif(`test`.`t1`.`a`,0) AS `NULLIF(a,0)` from `test`.`t1`
|
||||
EXPLAIN EXTENDED SELECT NULLIF(AVG(a),0) FROM t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1003 select nullif(<cache>(avg(`test`.`t1`.`a`)),0) AS `NULLIF(AVG(a),0)` from `test`.`t1`
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
|
Reference in New Issue
Block a user