[MDEV-15264] Results of IFNULL(NULL,LAST_VALUE(a) OVER ()) are non-deterministic; Created: 2018-02-09  Updated: 2021-03-19

Status: Confirmed
Project: MariaDB Server
Component/s: Optimizer - Window functions
Affects Version/s: 10.2
Fix Version/s: 10.2

Type: Bug Priority: Major
Reporter: Alice Sherepa Assignee: Sergei Petrunia
Resolution: Unresolved Votes: 0
Labels: None


 Description   

CREATE TABLE t(a INT, b INT);
INSERT INTO t VALUES (100,1), (200,1),(300,2),(400,2),(500,3),(600,3);
SELECT IFNULL(NULL,LAST_VALUE(a) OVER ()) from t;

MariaDB [test]> SELECT IFNULL(NULL,LAST_VALUE(a) OVER ()) from t;
+------------------------------------+
| IFNULL(NULL,LAST_VALUE(a) OVER ()) |
+------------------------------------+
|                                600 |
|                                600 |
|                                600 |
|                                600 |
|                                600 |
|                                600 |
+------------------------------------+
6 rows in set (0.00 sec)
 
MariaDB [test]> SELECT IFNULL(NULL,LAST_VALUE(a) OVER ()) from t;
+------------------------------------+
| IFNULL(NULL,LAST_VALUE(a) OVER ()) |
+------------------------------------+
|                                100 |
|                                100 |
|                                100 |
|                                100 |
|                                100 |
|                                100 |
+------------------------------------+
6 rows in set (0.00 sec)
 
MariaDB [test]> SELECT IFNULL(NULL,LAST_VALUE(a) OVER ()) from t;
+------------------------------------+
| IFNULL(NULL,LAST_VALUE(a) OVER ()) |
+------------------------------------+
|                                200 |
|                                200 |
|                                200 |
|                                200 |
|                                200 |
|                                200 |
+------------------------------------+
6 rows in set (0.00 sec)



 Comments   
Comment by Alice Sherepa [ 2019-03-18 ]

still reproducible.

MariaDB [test]> CREATE TABLE t(a INT, b INT);
Query OK, 0 rows affected (0.04 sec)
 
MariaDB [test]> INSERT INTO t VALUES (100,1), (200,1),(300,2),(400,2),(500,3),(600,3);
Query OK, 6 rows affected (0.01 sec)
Records: 6  Duplicates: 0  Warnings: 0
 
MariaDB [test]>   SELECT sql_no_cache IFNULL(NULL,LAST_VALUE(a) OVER ()) from t;
+------------------------------------+
| IFNULL(NULL,LAST_VALUE(a) OVER ()) |
+------------------------------------+
|                                200 |
|                                200 |
|                                200 |
|                                200 |
|                                200 |
|                                200 |
+------------------------------------+
6 rows in set (0.00 sec)
 
MariaDB [test]>   SELECT sql_no_cache IFNULL(NULL,LAST_VALUE(a) OVER ()) from t;
+------------------------------------+
| IFNULL(NULL,LAST_VALUE(a) OVER ()) |
+------------------------------------+
|                                200 |
|                                200 |
|                                200 |
|                                200 |
|                                200 |
|                                200 |
+------------------------------------+
6 rows in set (0.00 sec)
 
MariaDB [test]>   SELECT sql_no_cache IFNULL(NULL,LAST_VALUE(a) OVER ()) from t;
+------------------------------------+
| IFNULL(NULL,LAST_VALUE(a) OVER ()) |
+------------------------------------+
|                                600 |
|                                600 |
|                                600 |
|                                600 |
|                                600 |
|                                600 |
+------------------------------------+
6 rows in set (0.00 sec)
 
MariaDB [test]>   SELECT sql_no_cache IFNULL(NULL,LAST_VALUE(a) OVER ()) from t;
+------------------------------------+
| IFNULL(NULL,LAST_VALUE(a) OVER ()) |
+------------------------------------+
|                                300 |
|                                300 |
|                                300 |
|                                300 |
|                                300 |
|                                300 |
+------------------------------------+
6 rows in set (0.00 sec)
 
MariaDB [test]>   SELECT sql_no_cache IFNULL(NULL,LAST_VALUE(a) OVER ()) from t;
+------------------------------------+
| IFNULL(NULL,LAST_VALUE(a) OVER ()) |
+------------------------------------+
|                                600 |
|                                600 |
|                                600 |
|                                600 |
|                                600 |
|                                600 |
+------------------------------------+
6 rows in set (0.00 sec)
 
MariaDB [test]>   SELECT sql_no_cache IFNULL(NULL,LAST_VALUE(a) OVER ()) from t;
+------------------------------------+
| IFNULL(NULL,LAST_VALUE(a) OVER ()) |
+------------------------------------+
|                                500 |
|                                500 |
|                                500 |
|                                500 |
|                                500 |
|                                500 |
+------------------------------------+
6 rows in set (0.00 sec)
 
MariaDB [test]>   SELECT sql_no_cache IFNULL(NULL,LAST_VALUE(a) OVER ()) from t;
+------------------------------------+
| IFNULL(NULL,LAST_VALUE(a) OVER ()) |
+------------------------------------+
|                                600 |
|                                600 |
|                                600 |
|                                600 |
|                                600 |
|                                600 |
+------------------------------------+
6 rows in set (0.00 sec)
 
MariaDB [test]> select version();
+-----------------+
| version()       |
+-----------------+
| 10.2.22-MariaDB |
+-----------------+
1 row in set (0.00 sec)

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