[MDEV-14213] Wrong result set from a query aggregation and HAVING over SF call Created: 2017-10-30  Updated: 2023-11-28

Status: Confirmed
Project: MariaDB Server
Component/s: Optimizer
Affects Version/s: 10.7, 10.8, 10.9, 10.10
Fix Version/s: 10.11

Type: Bug Priority: Major
Reporter: Igor Babaev Assignee: Michael Widenius
Resolution: Unresolved Votes: 0
Labels: 11.0-sel


 Description   

The query with HAVING from the following result test case

SET @@sql_mode = '';
 
CREATE TABLE series (
  val INT(10) UNSIGNED NOT NULL
);
INSERT INTO series VALUES(1);
CREATE TABLE seq_calls (
  c INT
);
INSERT INTO seq_calls VALUES(0);
 
DELIMITER |;
CREATE FUNCTION next_seq_value() RETURNS INT
BEGIN
 DECLARE next_val INT;
 SELECT val INTO next_val FROM series;
 UPDATE series SET val=mod(val + 1, 2);
 UPDATE seq_calls SET c=c+1;
 RETURN next_val;
END;
|
DELIMITER ;|
 
CREATE TABLE t1 (t INT, u INT, KEY(t));
INSERT INTO t1 VALUES(10, 10), (11, 11), (12, 12), (12, 13),(14, 15), (15, 16),
                     (16, 17), (17, 18);
ANALYZE TABLE t1;
 
INSERT INTO t1 SELECT * FROM t1;
ALTER TABLE t1 ADD KEY(t, u);
ANALYZE TABLE t1;
SELECT * FROM series, seq_calls;
SELECT next_seq_value() r, MIN(u) FROM t1 GROUP BY t HAVING r = 1;
 
DROP TABLE t1;
DROP FUNCTION next_seq_value;
DROP TABLE series, seq_calls;

returns an empty result set.

5.5, 10.0, 10.1  resturn the correct result:

MariaDB [test]> SELECT next_seq_value() r, MIN(u) FROM t1 GROUP BY t HAVING r = 1;
------------+

r MIN(u)

------------+

1 10
1 12
1 16
1 18

------------+

 



 Comments   
Comment by Alice Sherepa [ 2022-12-05 ]

currently, 10.3-10.6 return empty results, but the bug repeatable on 10.7 b7ae4d442aa32752798 -10.11

Generated at Thu Feb 08 08:11:49 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.