1SET sql_mode=ORACLE;
2
3--error ER_PARSE_ERROR
4SELECT DECODE(10);
5--error ER_PARSE_ERROR
6SELECT DECODE(10,10);
7
8SELECT DECODE(10,10,'x10');
9SELECT DECODE(11,10,'x10');
10
11SELECT DECODE(10,10,'x10','def');
12SELECT DECODE(11,10,'x10','def');
13
14SELECT DECODE(10,10,'x10',11,'x11','def');
15SELECT DECODE(11,10,'x10',11,'x11','def');
16SELECT DECODE(12,10,'x10',11,'x11','def');
17
18EXPLAIN EXTENDED SELECT DECODE(12,10,'x10',11,'x11','def');
19
20CREATE TABLE decode (decode int);
21DROP TABLE decode;
22
23
24--echo #
25--echo # MDEV-13863 sql_mode=ORACLE: DECODE does not treat two NULLs as equivalent
26--echo #
27
28--error ER_PARSE_ERROR
29SELECT DECODE(10);
30--error ER_PARSE_ERROR
31SELECT DECODE(10,10);
32
33--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
34SELECT DECODE_ORACLE(10);
35--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
36SELECT DECODE_ORACLE(10,10);
37
38
39EXPLAIN EXTENDED SELECT DECODE(12,10,'x10',11,'x11');
40EXPLAIN EXTENDED SELECT DECODE(12,10,'x10',11,'x11','def');
41EXPLAIN EXTENDED SELECT DECODE_ORACLE(12,10,'x10',11,'x11');
42EXPLAIN EXTENDED SELECT DECODE_ORACLE(12,10,'x10',11,'x11','def');
43
44CREATE TABLE t1 (a INT);
45CREATE VIEW v1 AS
46  SELECT
47    DECODE(a,1,'x1',NULL,'xNULL') AS d1,
48    DECODE(a,1,'x1',NULL,'xNULL','xELSE') AS d2,
49    DECODE_ORACLE(a,1,'x1',NULL,'xNULL') AS d3,
50    DECODE_ORACLE(a,1,'x1',NULL,'xNULL','xELSE') AS d4
51  FROM t1;
52SHOW CREATE VIEW v1;
53DROP VIEW v1;
54DROP TABLE t1;
55
56SELECT DECODE(TIME'10:20:31','10:20:31','then1','10:20:32','then2','def');
57SELECT DECODE(TIME'10:20:32','10:20:31','then1','10:20:32','then2','def');
58SELECT DECODE(TIME'10:20:33','10:20:31','then1',NULL,'then2NULL','10:20:33','then3','def');
59SELECT DECODE(NULL,TIME'10:20:31','then1',NULL,'then2NULL','10:20:33','then3','def');
60
61SELECT DECODE(TIMESTAMP'2001-01-01 10:20:31','2001-01-01 10:20:31','then1','2001-01-01 10:20:32','then2','def');
62SELECT DECODE(TIMESTAMP'2001-01-01 10:20:32','2001-01-01 10:20:31','then1','2001-01-01 10:20:32','then2','def');
63SELECT DECODE(TIMESTAMP'2001-01-01 10:20:33','2001-01-01 10:20:31','then1',NULL,'then2NULL','2001-01-01 10:20:33','then3','def');
64SELECT DECODE(NULL,TIMESTAMP'2001-01-01 10:20:31','then1',NULL,'then2NULL','2001-01-01 10:20:33','then3','def');
65
66SELECT DECODE('w1','w1','then1','w2','then2','def');
67SELECT DECODE('w2','w1','then1','w2','then2','def');
68SELECT DECODE('w3','w1','then1',NULL,'then2NULL','w3','then3','def');
69SELECT DECODE(NULL,'w1','then1',NULL,'then2NULL','w3','then3','def');
70
71SELECT DECODE(1,1,'then1',2,'then2','def');
72SELECT DECODE(2,1,'then1',2,'then2','def');
73SELECT DECODE(3,1,'then1',NULL,'then2NULL',3,'then3','def');
74SELECT DECODE(NULL,1,'then1',NULL,'then2NULL',3,'then3','def');
75SELECT DECODE(CAST(NULL AS SIGNED),1,'then1',NULL,'then2NULL',3,'then3','def');
76
77SELECT DECODE(1.0,1.0,'then1',2.0,'then2','def');
78SELECT DECODE(2.0,1.0,'then1',2.0,'then2','def');
79SELECT DECODE(3.0,1.0,'then1',NULL,'then2NULL',3.0,'then3','def');
80SELECT DECODE(NULL,1.0,'then1',NULL,'then2NULL',3.0,'then3','def');
81SELECT DECODE(CAST(NULL AS DECIMAL),1.0,'then1',NULL,'then2NULL',3.0,'then3','def');
82
83SELECT DECODE(1e0,1e0,'then1',2e0,'then2','def');
84SELECT DECODE(2e0,1e0,'then1',2e0,'then2','def');
85SELECT DECODE(3e0,1e0,'then1',NULL,'then2NULL',3e0,'then3','def');
86SELECT DECODE(NULL,1e0,'then1',NULL,'then2NULL',3e0,'then3','def');
87SELECT DECODE(CAST(NULL AS DOUBLE),1e0,'then1',NULL,'then2NULL',3e0,'then3','def');
88
89SELECT DECODE(NULL,NULL,1,2) FROM DUAL;
90SELECT DECODE(NULL,10,10,NULL,1,2) FROM DUAL;
91
92SELECT DECODE_ORACLE(NULL,NULL,1,2) FROM DUAL;
93SELECT DECODE_ORACLE(NULL,10,10,NULL,1,2) FROM DUAL;
94
95CREATE OR REPLACE TABLE t1 (a VARCHAR(10) DEFAULT NULL);
96INSERT INTO t1 VALUES (NULL),(1);
97SELECT a, DECODE(a,NULL,1,2) FROM t1;
98DROP TABLE t1;
99