summaryrefslogtreecommitdiff
path: root/mysql-test/suite/compat/oracle/t/func_concat.test
blob: e1d8a5c477fd40d3fbb1b3c2237de2724e89b5fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#
# Testing CONCAT with null values
#

SET sql_mode=ORACLE;

EXPLAIN EXTENDED SELECT 'a'||'b'||'c';
EXPLAIN EXTENDED SELECT CONCAT('a'||'b'||'c');

SELECT ''   || '';
SELECT ''   || 'b';
SELECT ''   || NULL;
SELECT 'a'  || '';
SELECT 'a'  || 'b';
SELECT 'a'  || NULL;
SELECT NULL || '';
SELECT NULL || 'b';
SELECT NULL || NULL;

SELECT ''   || ''    || '';
SELECT ''   || ''    || 'c';
SELECT ''   || ''    || NULL;
SELECT ''   || 'b'   || '';
SELECT ''   || 'b'   || 'c';
SELECT ''   || 'b'   || NULL;
SELECT ''   || NULL  || '';
SELECT ''   || NULL  || 'c';
SELECT ''   || NULL  || NULL;

SELECT 'a'  || ''    || '';
SELECT 'a'  || ''    || 'c';
SELECT 'a'  || ''    || NULL;
SELECT 'a'  || 'b'   || '';
SELECT 'a'  || 'b'   || 'c';
SELECT 'a'  || 'b'   || NULL;
SELECT 'a'  || NULL  || '';
SELECT 'a'  || NULL  || 'c';
SELECT 'a'  || NULL  || NULL;

SELECT NULL || ''    || '';
SELECT NULL || ''    || 'c';
SELECT NULL || ''    || NULL;
SELECT NULL || 'b'   || '';
SELECT NULL || 'b'   || 'c';
SELECT NULL || 'b'   || NULL;
SELECT NULL || NULL  || '';
SELECT NULL || NULL  || 'c';
SELECT NULL || NULL  || NULL;

CREATE TABLE t1 (a VARCHAR(10), b VARCHAR(10), c VARCHAR(10));

INSERT INTO t1 VALUES ('',   '',   '');
INSERT INTO t1 VALUES ('',   '',   'c');
INSERT INTO t1 VALUES ('',   '',   NULL);
INSERT INTO t1 VALUES ('',   'b',  '');
INSERT INTO t1 VALUES ('',   'b',  'c');
INSERT INTO t1 VALUES ('',   'b',  NULL);
INSERT INTO t1 VALUES ('',   NULL, '');
INSERT INTO t1 VALUES ('',   NULL, 'c');
INSERT INTO t1 VALUES ('',   NULL, NULL);

INSERT INTO t1 VALUES ('a',  '',   '');
INSERT INTO t1 VALUES ('a',  '',   'c');
INSERT INTO t1 VALUES ('a',  '',   NULL);
INSERT INTO t1 VALUES ('a',  'b',  '');
INSERT INTO t1 VALUES ('a',  'b',  'c');
INSERT INTO t1 VALUES ('a',  'b',  NULL);
INSERT INTO t1 VALUES ('a',  NULL, '');
INSERT INTO t1 VALUES ('a',  NULL, 'c');
INSERT INTO t1 VALUES ('a',  NULL, NULL);

INSERT INTO t1 VALUES (NULL, '',   '');
INSERT INTO t1 VALUES (NULL, '',   'c');
INSERT INTO t1 VALUES (NULL, '',   NULL);
INSERT INTO t1 VALUES (NULL, 'b',  '');
INSERT INTO t1 VALUES (NULL, 'b',  'c');
INSERT INTO t1 VALUES (NULL, 'b',  NULL);
INSERT INTO t1 VALUES (NULL, NULL, '');
INSERT INTO t1 VALUES (NULL, NULL, 'c');
INSERT INTO t1 VALUES (NULL, NULL, NULL);

SELECT LENGTH(a||b||c), a||b||c FROM t1 ORDER BY a,b,c;
SELECT LENGTH(CONCAT(a||b||c)), CONCAT(a||b||c) FROM t1 ORDER BY a,b,c;

DROP TABLE t1;

--echo #
--echo # MDEV-12478 CONCAT function inside view casts values incorrectly with Oracle sql_mode
--echo #

SET sql_mode=ORACLE;
CREATE VIEW v1 AS SELECT 'foo'||NULL||'bar' AS test;
SHOW CREATE VIEW v1;
SELECT * FROM v1;
SET sql_mode=DEFAULT;
SHOW CREATE VIEW v1;
SELECT * FROM v1;
DROP VIEW v1;

SET sql_mode=DEFAULT;
CREATE VIEW v1 AS SELECT CONCAT('foo',NULL,'bar') AS test;
SHOW CREATE VIEW v1;
SELECT * FROM v1;
SET sql_mode=ORACLE;
SHOW CREATE VIEW v1;
SELECT * FROM v1;
DROP VIEW v1;

SET sql_mode=DEFAULT;
CREATE VIEW v1 AS SELECT '0'||'1' AS test;
SHOW CREATE VIEW v1;
SELECT * FROM v1;
SET sql_mode=ORACLE;
SHOW CREATE VIEW v1;
SELECT * FROM v1;
DROP VIEW v1;