[MDEV-7147] CASE returns unexpected result with a YEAR(2) field Created: 2014-11-20  Updated: 2022-12-15

Status: Open
Project: MariaDB Server
Component/s: None
Affects Version/s: 10.2, 10.3, 10.4, 10.5, 10.6
Fix Version/s: 10.1, 10.3

Type: Bug Priority: Minor
Reporter: Alexander Barkov Assignee: Alexander Barkov
Resolution: Unresolved Votes: 0
Labels: None


 Description   

DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a YEAR(2));
INSERT INTO t1 VALUES (0);
SELECT a,NULLIF(a,2000),CASE a WHEN 2000 THEN NULL ELSE 2000 END FROM t1;

returns

+------+----------------+------------------------------------------+
| a    | NULLIF(a,2000) | CASE a WHEN 2000 THEN NULL ELSE 2000 END |
+------+----------------+------------------------------------------+
|   00 |           NULL |                                     2000 |
+------+----------------+------------------------------------------+

The result for CASE looks wrong. It should return NULL, similar to what NULLIF does.

Note, if I slightly rewrite CASE, it works fine:

mysql> SELECT CASE WHEN a=2000 THEN NULL ELSE 2000 END FROM t1;
+------------------------------------------+
| CASE WHEN a=2000 THEN NULL ELSE 2000 END |
+------------------------------------------+
|                                     NULL |
+------------------------------------------+


Generated at Thu Feb 08 07:17:23 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.