[MDEV-7005] NULLIF does not work as documented Created: 2014-11-01  Updated: 2014-12-01  Resolved: 2014-11-20

Status: Closed
Project: MariaDB Server
Component/s: Temporal Types
Affects Version/s: 5.5.40, 10.0.14
Fix Version/s: 10.1.2

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


 Description   

The manual at https://mariadb.com/kb/en/mariadb/documentation/functions-and-operators/control-flow-functions/nullif/ says that NULLIF(expr1,expr2) is the same as CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.
In fact it is not always true.

DROP TABLE IF EXISTS t1,t2;
CREATE TABLE t1 (a TIME);
CREATE TABLE t2 AS SELECT a,NULLIF(a,a), CASE WHEN a=a THEN NULL ELSE a END FROM t1;
SHOW CREATE TABLE t2;

returns:

+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                           |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t2    | CREATE TABLE `t2` (
  `a` time DEFAULT NULL,
  `NULLIF(a,a)` varchar(10) DEFAULT NULL,
  `CASE WHEN a=a THEN NULL ELSE a END` time DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Notice, NULLIF erroneously created a VARCHAR column, while CASE correctly created a TIME column.


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