You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
MCOL-4044: Add oracle mode functions.
This commit is contained in:
389
mysql-test/columnstore/compat/oracle/func_concat_oracle.result
Normal file
389
mysql-test/columnstore/compat/oracle/func_concat_oracle.result
Normal file
@ -0,0 +1,389 @@
|
||||
SET sql_mode=ORACLE;
|
||||
SET default_storage_engine=ColumnStore;
|
||||
EXPLAIN EXTENDED SELECT 'a'||'b'||'c';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select concat_operator_oracle(concat_operator_oracle('a','b'),'c') AS "'a'||'b'||'c'"
|
||||
EXPLAIN EXTENDED SELECT CONCAT('a'||'b'||'c');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select concat_operator_oracle(concat_operator_oracle(concat_operator_oracle('a','b'),'c')) AS "CONCAT('a'||'b'||'c')"
|
||||
SELECT '' || '';
|
||||
'' || ''
|
||||
|
||||
SELECT '' || 'b';
|
||||
'' || 'b'
|
||||
b
|
||||
SELECT '' || NULL;
|
||||
'' || NULL
|
||||
|
||||
SELECT 'a' || '';
|
||||
'a' || ''
|
||||
a
|
||||
SELECT 'a' || 'b';
|
||||
'a' || 'b'
|
||||
ab
|
||||
SELECT 'a' || NULL;
|
||||
'a' || NULL
|
||||
a
|
||||
SELECT NULL || '';
|
||||
NULL || ''
|
||||
|
||||
SELECT NULL || 'b';
|
||||
NULL || 'b'
|
||||
b
|
||||
SELECT NULL || NULL;
|
||||
NULL || NULL
|
||||
NULL
|
||||
SELECT '' || '' || '';
|
||||
'' || '' || ''
|
||||
|
||||
SELECT '' || '' || 'c';
|
||||
'' || '' || 'c'
|
||||
c
|
||||
SELECT '' || '' || NULL;
|
||||
'' || '' || NULL
|
||||
|
||||
SELECT '' || 'b' || '';
|
||||
'' || 'b' || ''
|
||||
b
|
||||
SELECT '' || 'b' || 'c';
|
||||
'' || 'b' || 'c'
|
||||
bc
|
||||
SELECT '' || 'b' || NULL;
|
||||
'' || 'b' || NULL
|
||||
b
|
||||
SELECT '' || NULL || '';
|
||||
'' || NULL || ''
|
||||
|
||||
SELECT '' || NULL || 'c';
|
||||
'' || NULL || 'c'
|
||||
c
|
||||
SELECT '' || NULL || NULL;
|
||||
'' || NULL || NULL
|
||||
|
||||
SELECT 'a' || '' || '';
|
||||
'a' || '' || ''
|
||||
a
|
||||
SELECT 'a' || '' || 'c';
|
||||
'a' || '' || 'c'
|
||||
ac
|
||||
SELECT 'a' || '' || NULL;
|
||||
'a' || '' || NULL
|
||||
a
|
||||
SELECT 'a' || 'b' || '';
|
||||
'a' || 'b' || ''
|
||||
ab
|
||||
SELECT 'a' || 'b' || 'c';
|
||||
'a' || 'b' || 'c'
|
||||
abc
|
||||
SELECT 'a' || 'b' || NULL;
|
||||
'a' || 'b' || NULL
|
||||
ab
|
||||
SELECT 'a' || NULL || '';
|
||||
'a' || NULL || ''
|
||||
a
|
||||
SELECT 'a' || NULL || 'c';
|
||||
'a' || NULL || 'c'
|
||||
ac
|
||||
SELECT 'a' || NULL || NULL;
|
||||
'a' || NULL || NULL
|
||||
a
|
||||
SELECT NULL || '' || '';
|
||||
NULL || '' || ''
|
||||
|
||||
SELECT NULL || '' || 'c';
|
||||
NULL || '' || 'c'
|
||||
c
|
||||
SELECT NULL || '' || NULL;
|
||||
NULL || '' || NULL
|
||||
|
||||
SELECT NULL || 'b' || '';
|
||||
NULL || 'b' || ''
|
||||
b
|
||||
SELECT NULL || 'b' || 'c';
|
||||
NULL || 'b' || 'c'
|
||||
bc
|
||||
SELECT NULL || 'b' || NULL;
|
||||
NULL || 'b' || NULL
|
||||
b
|
||||
SELECT NULL || NULL || '';
|
||||
NULL || NULL || ''
|
||||
|
||||
SELECT NULL || NULL || 'c';
|
||||
NULL || NULL || 'c'
|
||||
c
|
||||
SELECT NULL || NULL || NULL;
|
||||
NULL || 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;
|
||||
LENGTH(a||b||c) a||b||c
|
||||
0 NULL
|
||||
0 NULL
|
||||
0 NULL
|
||||
0 NULL
|
||||
0 NULL
|
||||
0 NULL
|
||||
0 NULL
|
||||
0 NULL
|
||||
1 c
|
||||
1 c
|
||||
1 c
|
||||
1 c
|
||||
1 b
|
||||
1 b
|
||||
1 b
|
||||
1 b
|
||||
2 bc
|
||||
2 bc
|
||||
1 a
|
||||
1 a
|
||||
1 a
|
||||
1 a
|
||||
2 ac
|
||||
2 ac
|
||||
2 ab
|
||||
2 ab
|
||||
3 abc
|
||||
SELECT LENGTH(CONCAT(a||b||c)), CONCAT(a||b||c) FROM t1 ORDER BY a,b,c;
|
||||
LENGTH(CONCAT(a||b||c)) CONCAT(a||b||c)
|
||||
0 NULL
|
||||
0 NULL
|
||||
0 NULL
|
||||
0 NULL
|
||||
0 NULL
|
||||
0 NULL
|
||||
0 NULL
|
||||
0 NULL
|
||||
1 c
|
||||
1 c
|
||||
1 c
|
||||
1 c
|
||||
1 b
|
||||
1 b
|
||||
1 b
|
||||
1 b
|
||||
2 bc
|
||||
2 bc
|
||||
1 a
|
||||
1 a
|
||||
1 a
|
||||
1 a
|
||||
2 ac
|
||||
2 ac
|
||||
2 ab
|
||||
2 ab
|
||||
3 abc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-12478 CONCAT function inside view casts values incorrectly with Oracle sql_mode
|
||||
#
|
||||
SET sql_mode=ORACLE;
|
||||
CREATE VIEW v1 AS SELECT 'foo'||NULL||'bar' AS test;
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE VIEW "v1" AS select concat_operator_oracle(concat_operator_oracle('foo',NULL),'bar') AS "test" latin1 latin1_swedish_ci
|
||||
SELECT * FROM v1;
|
||||
test
|
||||
foobar
|
||||
SET sql_mode=DEFAULT;
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select concat_operator_oracle(concat_operator_oracle('foo',NULL),'bar') AS `test` latin1 latin1_swedish_ci
|
||||
SELECT * FROM v1;
|
||||
test
|
||||
foobar
|
||||
DROP VIEW v1;
|
||||
SET sql_mode=DEFAULT;
|
||||
CREATE VIEW v1 AS SELECT CONCAT('foo',NULL,'bar') AS test;
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select concat('foo',NULL,'bar') AS `test` latin1 latin1_swedish_ci
|
||||
SELECT * FROM v1;
|
||||
test
|
||||
NULL
|
||||
SET sql_mode=ORACLE;
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE VIEW "v1" AS select concat('foo',NULL,'bar') AS "test" latin1 latin1_swedish_ci
|
||||
SELECT * FROM v1;
|
||||
test
|
||||
NULL
|
||||
DROP VIEW v1;
|
||||
SET sql_mode=DEFAULT;
|
||||
CREATE VIEW v1 AS SELECT '0'||'1' AS test;
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select '0' or '1' AS `test` latin1 latin1_swedish_ci
|
||||
SELECT * FROM v1;
|
||||
test
|
||||
1
|
||||
SET sql_mode=ORACLE;
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE VIEW "v1" AS select '0' or '1' AS "test" latin1 latin1_swedish_ci
|
||||
SELECT * FROM v1;
|
||||
test
|
||||
1
|
||||
DROP VIEW v1;
|
||||
#
|
||||
# MDEV-16186 Concatenation operator || returns wrong results in sql_mode=ORACLE
|
||||
#
|
||||
SELECT -1<<1||1 AS a FROM DUAL;
|
||||
a
|
||||
18446744073709549568
|
||||
SELECT -1||0<<1 AS a FROM DUAL;
|
||||
a
|
||||
18446744073709551596
|
||||
EXPLAIN EXTENDED SELECT -1<<1||1 AS a FROM DUAL;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select -1 << concat_operator_oracle(1,1) AS "a"
|
||||
EXPLAIN EXTENDED SELECT -1||0<<1 AS a FROM DUAL;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select concat_operator_oracle(-1,0) << 1 AS "a"
|
||||
SELECT -1+1||1 AS a FROM DUAL;
|
||||
a
|
||||
01
|
||||
SELECT -1||0+1 AS a FROM DUAL;
|
||||
a
|
||||
-9
|
||||
EXPLAIN EXTENDED SELECT -1+1||1 AS a FROM DUAL;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select concat_operator_oracle(-1 + 1,1) AS "a"
|
||||
EXPLAIN EXTENDED SELECT -1||0+1 AS a FROM DUAL;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select concat_operator_oracle(-1,0) + 1 AS "a"
|
||||
SELECT 1*1||-1 AS a FROM DUAL;
|
||||
a
|
||||
1-1
|
||||
SELECT 1||1*-1 AS a FROM DUAL;
|
||||
a
|
||||
1-1
|
||||
EXPLAIN EXTENDED SELECT 1*1||-1 AS a FROM DUAL;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select concat_operator_oracle(1 * 1,-1) AS "a"
|
||||
EXPLAIN EXTENDED SELECT 1||1*-1 AS a FROM DUAL;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select concat_operator_oracle(1,1 * -1) AS "a"
|
||||
SELECT -1^1||1 AS a FROM DUAL;
|
||||
a
|
||||
184467440737095516141
|
||||
SELECT -1||0^1 AS a FROM DUAL;
|
||||
a
|
||||
-11
|
||||
EXPLAIN EXTENDED SELECT -1^1||1 AS a FROM DUAL;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select concat_operator_oracle(-1 ^ 1,1) AS "a"
|
||||
EXPLAIN EXTENDED SELECT -1||0^1 AS a FROM DUAL;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select concat_operator_oracle(-1,0 ^ 1) AS "a"
|
||||
#
|
||||
# MDEV-17359 Concatenation operator || in like expression failed in sql_mode=ORACLE
|
||||
#
|
||||
SELECT 'abc' LIKE 'a'||'%';
|
||||
'abc' LIKE 'a'||'%'
|
||||
1
|
||||
EXPLAIN EXTENDED SELECT 'abc' LIKE 'a'||'%';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select 'abc' like concat_operator_oracle('a','%') AS "'abc' LIKE 'a'||'%'"
|
||||
SELECT 'x' FROM DUAL WHERE 11 LIKE 1||1;
|
||||
x
|
||||
x
|
||||
SELECT 'x' FROM DUAL WHERE 1||1 LIKE 11;
|
||||
x
|
||||
x
|
||||
SELECT 'x' FROM DUAL WHERE 1||1 LIKE 1||1;
|
||||
x
|
||||
x
|
||||
CREATE TABLE t1 (c1 VARCHAR(10),c2 VARCHAR(10), ord INTEGER);
|
||||
INSERT INTO t1 VALUES ('a', 'ab' ,1);
|
||||
INSERT INTO t1 VALUES ('ab', 'ab', 2);
|
||||
INSERT INTO t1 VALUES ('abc', 'ab', 3);
|
||||
SELECT c1 FROM t1 WHERE c1 LIKE '%'||'b' ORDER BY ord;
|
||||
c1
|
||||
ab
|
||||
EXPLAIN EXTENDED SELECT c1 FROM t1 WHERE c1 LIKE '%'||'b' ORDER BY ord;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PUSHED SELECT NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||
Warnings:
|
||||
Note 1003 select "test"."t1"."c1" AS "c1" from "test"."t1" USE INDEX () where "test"."t1"."c1" like concat_operator_oracle('%','b') order by "test"."t1"."ord"
|
||||
SELECT c1 FROM t1 WHERE c1 LIKE c2||'%'||'c' ORDER BY ord;
|
||||
c1
|
||||
abc
|
||||
EXPLAIN EXTENDED SELECT c1 FROM t1 WHERE c1 LIKE c2||'%'||'c' ORDER BY ord;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PUSHED SELECT NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||
Warnings:
|
||||
Note 1003 select "test"."t1"."c1" AS "c1" from "test"."t1" USE INDEX () where "test"."t1"."c1" like concat_operator_oracle(concat_operator_oracle("test"."t1"."c2",'%'),'c') order by "test"."t1"."ord"
|
||||
SELECT 'x' FROM t1 WHERE c1||c2 LIKE 'aa%';
|
||||
x
|
||||
x
|
||||
EXPLAIN EXTENDED SELECT 'x' FROM t1 WHERE c1||c2 LIKE 'aa%';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PUSHED SELECT NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||
Warnings:
|
||||
Note 1003 select 'x' AS "x" from "test"."t1" USE INDEX () where concat_operator_oracle("test"."t1"."c1","test"."t1"."c2") like 'aa%'
|
||||
SELECT 'x' FROM t1 WHERE c1||c2 LIKE c2||c1;
|
||||
x
|
||||
x
|
||||
EXPLAIN EXTENDED SELECT 'x' FROM t1 WHERE c1||c2 LIKE c2||c1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PUSHED SELECT NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||
Warnings:
|
||||
Note 1003 select 'x' AS "x" from "test"."t1" USE INDEX () where concat_operator_oracle("test"."t1"."c1","test"."t1"."c2") like concat_operator_oracle("test"."t1"."c2","test"."t1"."c1")
|
||||
CREATE VIEW v1 AS SELECT c1, c2, c1 LIKE c2||'_' FROM t1 ORDER BY ord;
|
||||
EXPLAIN EXTENDED SELECT * FROM v1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PUSHED SELECT NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||
Warnings:
|
||||
Note 1003 select "test"."t1"."c1" AS "c1","test"."t1"."c2" AS "c2","test"."t1"."c1" like concat_operator_oracle("test"."t1"."c2",'_') AS "c1 LIKE c2||'_'" from "test"."t1" USE INDEX () order by "test"."t1"."ord"
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
189
mysql-test/columnstore/compat/oracle/func_concat_oracle.test
Normal file
189
mysql-test/columnstore/compat/oracle/func_concat_oracle.test
Normal file
@ -0,0 +1,189 @@
|
||||
#
|
||||
# Testing CONCAT with null values
|
||||
#
|
||||
|
||||
SET sql_mode=ORACLE;
|
||||
SET default_storage_engine=ColumnStore;
|
||||
|
||||
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;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-16186 Concatenation operator || returns wrong results in sql_mode=ORACLE
|
||||
--echo #
|
||||
|
||||
# Concatenation operator || has the same precedence with +
|
||||
# (stronger than << and weaker than * ^)
|
||||
|
||||
SELECT -1<<1||1 AS a FROM DUAL;
|
||||
SELECT -1||0<<1 AS a FROM DUAL;
|
||||
|
||||
EXPLAIN EXTENDED SELECT -1<<1||1 AS a FROM DUAL;
|
||||
EXPLAIN EXTENDED SELECT -1||0<<1 AS a FROM DUAL;
|
||||
|
||||
SELECT -1+1||1 AS a FROM DUAL;
|
||||
SELECT -1||0+1 AS a FROM DUAL;
|
||||
|
||||
EXPLAIN EXTENDED SELECT -1+1||1 AS a FROM DUAL;
|
||||
EXPLAIN EXTENDED SELECT -1||0+1 AS a FROM DUAL;
|
||||
|
||||
SELECT 1*1||-1 AS a FROM DUAL;
|
||||
SELECT 1||1*-1 AS a FROM DUAL;
|
||||
|
||||
EXPLAIN EXTENDED SELECT 1*1||-1 AS a FROM DUAL;
|
||||
EXPLAIN EXTENDED SELECT 1||1*-1 AS a FROM DUAL;
|
||||
|
||||
SELECT -1^1||1 AS a FROM DUAL;
|
||||
SELECT -1||0^1 AS a FROM DUAL;
|
||||
|
||||
EXPLAIN EXTENDED SELECT -1^1||1 AS a FROM DUAL;
|
||||
EXPLAIN EXTENDED SELECT -1||0^1 AS a FROM DUAL;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-17359 Concatenation operator || in like expression failed in sql_mode=ORACLE
|
||||
--echo #
|
||||
|
||||
SELECT 'abc' LIKE 'a'||'%';
|
||||
EXPLAIN EXTENDED SELECT 'abc' LIKE 'a'||'%';
|
||||
|
||||
SELECT 'x' FROM DUAL WHERE 11 LIKE 1||1;
|
||||
SELECT 'x' FROM DUAL WHERE 1||1 LIKE 11;
|
||||
SELECT 'x' FROM DUAL WHERE 1||1 LIKE 1||1;
|
||||
|
||||
CREATE TABLE t1 (c1 VARCHAR(10),c2 VARCHAR(10), ord INTEGER);
|
||||
INSERT INTO t1 VALUES ('a', 'ab' ,1);
|
||||
INSERT INTO t1 VALUES ('ab', 'ab', 2);
|
||||
INSERT INTO t1 VALUES ('abc', 'ab', 3);
|
||||
|
||||
SELECT c1 FROM t1 WHERE c1 LIKE '%'||'b' ORDER BY ord;
|
||||
EXPLAIN EXTENDED SELECT c1 FROM t1 WHERE c1 LIKE '%'||'b' ORDER BY ord;
|
||||
|
||||
SELECT c1 FROM t1 WHERE c1 LIKE c2||'%'||'c' ORDER BY ord;
|
||||
EXPLAIN EXTENDED SELECT c1 FROM t1 WHERE c1 LIKE c2||'%'||'c' ORDER BY ord;
|
||||
|
||||
SELECT 'x' FROM t1 WHERE c1||c2 LIKE 'aa%';
|
||||
EXPLAIN EXTENDED SELECT 'x' FROM t1 WHERE c1||c2 LIKE 'aa%';
|
||||
|
||||
SELECT 'x' FROM t1 WHERE c1||c2 LIKE c2||c1;
|
||||
EXPLAIN EXTENDED SELECT 'x' FROM t1 WHERE c1||c2 LIKE c2||c1;
|
||||
|
||||
CREATE VIEW v1 AS SELECT c1, c2, c1 LIKE c2||'_' FROM t1 ORDER BY ord;
|
||||
EXPLAIN EXTENDED SELECT * FROM v1;
|
||||
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
171
mysql-test/columnstore/compat/oracle/func_decode_oracle.result
Normal file
171
mysql-test/columnstore/compat/oracle/func_decode_oracle.result
Normal file
@ -0,0 +1,171 @@
|
||||
SET sql_mode=ORACLE;
|
||||
SET default_storage_engine=ColumnStore;
|
||||
SELECT DECODE(10);
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
|
||||
SELECT DECODE(10,10);
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
|
||||
SELECT DECODE(10,10,'x10');
|
||||
DECODE(10,10,'x10')
|
||||
x10
|
||||
SELECT DECODE(11,10,'x10');
|
||||
DECODE(11,10,'x10')
|
||||
NULL
|
||||
SELECT DECODE(10,10,'x10','def');
|
||||
DECODE(10,10,'x10','def')
|
||||
x10
|
||||
SELECT DECODE(11,10,'x10','def');
|
||||
DECODE(11,10,'x10','def')
|
||||
def
|
||||
SELECT DECODE(10,10,'x10',11,'x11','def');
|
||||
DECODE(10,10,'x10',11,'x11','def')
|
||||
x10
|
||||
SELECT DECODE(11,10,'x10',11,'x11','def');
|
||||
DECODE(11,10,'x10',11,'x11','def')
|
||||
x11
|
||||
SELECT DECODE(12,10,'x10',11,'x11','def');
|
||||
DECODE(12,10,'x10',11,'x11','def')
|
||||
def
|
||||
EXPLAIN EXTENDED SELECT DECODE(12,10,'x10',11,'x11','def');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select decode_oracle(12,10,'x10',11,'x11','def') AS "DECODE(12,10,'x10',11,'x11','def')"
|
||||
CREATE TABLE decode (decode int);
|
||||
DROP TABLE decode;
|
||||
#
|
||||
# MDEV-13863 sql_mode=ORACLE: DECODE does not treat two NULLs as equivalent
|
||||
#
|
||||
SELECT DECODE(10);
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
|
||||
SELECT DECODE(10,10);
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
|
||||
SELECT DECODE_ORACLE(10);
|
||||
ERROR 42000: Incorrect parameter count in the call to native function 'DECODE_ORACLE'
|
||||
SELECT DECODE_ORACLE(10,10);
|
||||
ERROR 42000: Incorrect parameter count in the call to native function 'DECODE_ORACLE'
|
||||
EXPLAIN EXTENDED SELECT DECODE(12,10,'x10',11,'x11');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select decode_oracle(12,10,'x10',11,'x11') AS "DECODE(12,10,'x10',11,'x11')"
|
||||
EXPLAIN EXTENDED SELECT DECODE(12,10,'x10',11,'x11','def');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select decode_oracle(12,10,'x10',11,'x11','def') AS "DECODE(12,10,'x10',11,'x11','def')"
|
||||
EXPLAIN EXTENDED SELECT DECODE_ORACLE(12,10,'x10',11,'x11');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select decode_oracle(12,10,'x10',11,'x11') AS "DECODE_ORACLE(12,10,'x10',11,'x11')"
|
||||
EXPLAIN EXTENDED SELECT DECODE_ORACLE(12,10,'x10',11,'x11','def');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select decode_oracle(12,10,'x10',11,'x11','def') AS "DECODE_ORACLE(12,10,'x10',11,'x11','def')"
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE VIEW v1 AS
|
||||
SELECT
|
||||
DECODE(a,1,'x1',NULL,'xNULL') AS d1,
|
||||
DECODE(a,1,'x1',NULL,'xNULL','xELSE') AS d2,
|
||||
DECODE_ORACLE(a,1,'x1',NULL,'xNULL') AS d3,
|
||||
DECODE_ORACLE(a,1,'x1',NULL,'xNULL','xELSE') AS d4
|
||||
FROM t1;
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE VIEW "v1" AS select decode_oracle("t1"."a",1,'x1',NULL,'xNULL') AS "d1",decode_oracle("t1"."a",1,'x1',NULL,'xNULL','xELSE') AS "d2",decode_oracle("t1"."a",1,'x1',NULL,'xNULL') AS "d3",decode_oracle("t1"."a",1,'x1',NULL,'xNULL','xELSE') AS "d4" from "t1" latin1 latin1_swedish_ci
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
SELECT DECODE(TIME'10:20:31','10:20:31','then1','10:20:32','then2','def');
|
||||
DECODE(TIME'10:20:31','10:20:31','then1','10:20:32','then2','def')
|
||||
then1
|
||||
SELECT DECODE(TIME'10:20:32','10:20:31','then1','10:20:32','then2','def');
|
||||
DECODE(TIME'10:20:32','10:20:31','then1','10:20:32','then2','def')
|
||||
then2
|
||||
SELECT DECODE(TIME'10:20:33','10:20:31','then1',NULL,'then2NULL','10:20:33','then3','def');
|
||||
DECODE(TIME'10:20:33','10:20:31','then1',NULL,'then2NULL','10:20:33','then3','def')
|
||||
then3
|
||||
SELECT DECODE(NULL,TIME'10:20:31','then1',NULL,'then2NULL','10:20:33','then3','def');
|
||||
DECODE(NULL,TIME'10:20:31','then1',NULL,'then2NULL','10:20:33','then3','def')
|
||||
then2NULL
|
||||
SELECT DECODE(TIMESTAMP'2001-01-01 10:20:31','2001-01-01 10:20:31','then1','2001-01-01 10:20:32','then2','def');
|
||||
DECODE(TIMESTAMP'2001-01-01 10:20:31','2001-01-01 10:20:31','then1','2001-01-01 10:20:32','then2','def')
|
||||
then1
|
||||
SELECT DECODE(TIMESTAMP'2001-01-01 10:20:32','2001-01-01 10:20:31','then1','2001-01-01 10:20:32','then2','def');
|
||||
DECODE(TIMESTAMP'2001-01-01 10:20:32','2001-01-01 10:20:31','then1','2001-01-01 10:20:32','then2','def')
|
||||
then2
|
||||
SELECT 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');
|
||||
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')
|
||||
then3
|
||||
SELECT DECODE(NULL,TIMESTAMP'2001-01-01 10:20:31','then1',NULL,'then2NULL','2001-01-01 10:20:33','then3','def');
|
||||
DECODE(NULL,TIMESTAMP'2001-01-01 10:20:31','then1',NULL,'then2NULL','2001-01-01 10:20:33','then3','def')
|
||||
then2NULL
|
||||
SELECT DECODE('w1','w1','then1','w2','then2','def');
|
||||
DECODE('w1','w1','then1','w2','then2','def')
|
||||
then1
|
||||
SELECT DECODE('w2','w1','then1','w2','then2','def');
|
||||
DECODE('w2','w1','then1','w2','then2','def')
|
||||
then2
|
||||
SELECT DECODE('w3','w1','then1',NULL,'then2NULL','w3','then3','def');
|
||||
DECODE('w3','w1','then1',NULL,'then2NULL','w3','then3','def')
|
||||
then3
|
||||
SELECT DECODE(NULL,'w1','then1',NULL,'then2NULL','w3','then3','def');
|
||||
DECODE(NULL,'w1','then1',NULL,'then2NULL','w3','then3','def')
|
||||
then2NULL
|
||||
SELECT DECODE(1,1,'then1',2,'then2','def');
|
||||
DECODE(1,1,'then1',2,'then2','def')
|
||||
then1
|
||||
SELECT DECODE(2,1,'then1',2,'then2','def');
|
||||
DECODE(2,1,'then1',2,'then2','def')
|
||||
then2
|
||||
SELECT DECODE(3,1,'then1',NULL,'then2NULL',3,'then3','def');
|
||||
DECODE(3,1,'then1',NULL,'then2NULL',3,'then3','def')
|
||||
then3
|
||||
SELECT DECODE(NULL,1,'then1',NULL,'then2NULL',3,'then3','def');
|
||||
DECODE(NULL,1,'then1',NULL,'then2NULL',3,'then3','def')
|
||||
then2NULL
|
||||
SELECT DECODE(CAST(NULL AS SIGNED),1,'then1',NULL,'then2NULL',3,'then3','def');
|
||||
DECODE(CAST(NULL AS SIGNED),1,'then1',NULL,'then2NULL',3,'then3','def')
|
||||
then2NULL
|
||||
SELECT DECODE(1.0,1.0,'then1',2.0,'then2','def');
|
||||
DECODE(1.0,1.0,'then1',2.0,'then2','def')
|
||||
then1
|
||||
SELECT DECODE(2.0,1.0,'then1',2.0,'then2','def');
|
||||
DECODE(2.0,1.0,'then1',2.0,'then2','def')
|
||||
then2
|
||||
SELECT DECODE(3.0,1.0,'then1',NULL,'then2NULL',3.0,'then3','def');
|
||||
DECODE(3.0,1.0,'then1',NULL,'then2NULL',3.0,'then3','def')
|
||||
then3
|
||||
SELECT DECODE(NULL,1.0,'then1',NULL,'then2NULL',3.0,'then3','def');
|
||||
DECODE(NULL,1.0,'then1',NULL,'then2NULL',3.0,'then3','def')
|
||||
then2NULL
|
||||
SELECT DECODE(CAST(NULL AS DECIMAL),1.0,'then1',NULL,'then2NULL',3.0,'then3','def');
|
||||
DECODE(CAST(NULL AS DECIMAL),1.0,'then1',NULL,'then2NULL',3.0,'then3','def')
|
||||
then2NULL
|
||||
SELECT DECODE(1e0,1e0,'then1',2e0,'then2','def');
|
||||
DECODE(1e0,1e0,'then1',2e0,'then2','def')
|
||||
then1
|
||||
SELECT DECODE(2e0,1e0,'then1',2e0,'then2','def');
|
||||
DECODE(2e0,1e0,'then1',2e0,'then2','def')
|
||||
then2
|
||||
SELECT DECODE(3e0,1e0,'then1',NULL,'then2NULL',3e0,'then3','def');
|
||||
DECODE(3e0,1e0,'then1',NULL,'then2NULL',3e0,'then3','def')
|
||||
then3
|
||||
SELECT DECODE(NULL,1e0,'then1',NULL,'then2NULL',3e0,'then3','def');
|
||||
DECODE(NULL,1e0,'then1',NULL,'then2NULL',3e0,'then3','def')
|
||||
then2NULL
|
||||
SELECT DECODE(CAST(NULL AS DOUBLE),1e0,'then1',NULL,'then2NULL',3e0,'then3','def');
|
||||
DECODE(CAST(NULL AS DOUBLE),1e0,'then1',NULL,'then2NULL',3e0,'then3','def')
|
||||
then2NULL
|
||||
SELECT DECODE(NULL,NULL,1,2) FROM DUAL;
|
||||
DECODE(NULL,NULL,1,2)
|
||||
1
|
||||
SELECT DECODE(NULL,10,10,NULL,1,2) FROM DUAL;
|
||||
DECODE(NULL,10,10,NULL,1,2)
|
||||
1
|
||||
SELECT DECODE_ORACLE(NULL,NULL,1,2) FROM DUAL;
|
||||
DECODE_ORACLE(NULL,NULL,1,2)
|
||||
1
|
||||
SELECT DECODE_ORACLE(NULL,10,10,NULL,1,2) FROM DUAL;
|
||||
DECODE_ORACLE(NULL,10,10,NULL,1,2)
|
||||
1
|
94
mysql-test/columnstore/compat/oracle/func_decode_oracle.test
Normal file
94
mysql-test/columnstore/compat/oracle/func_decode_oracle.test
Normal file
@ -0,0 +1,94 @@
|
||||
SET sql_mode=ORACLE;
|
||||
SET default_storage_engine=ColumnStore;
|
||||
--error ER_PARSE_ERROR
|
||||
SELECT DECODE(10);
|
||||
--error ER_PARSE_ERROR
|
||||
SELECT DECODE(10,10);
|
||||
|
||||
SELECT DECODE(10,10,'x10');
|
||||
SELECT DECODE(11,10,'x10');
|
||||
|
||||
SELECT DECODE(10,10,'x10','def');
|
||||
SELECT DECODE(11,10,'x10','def');
|
||||
|
||||
SELECT DECODE(10,10,'x10',11,'x11','def');
|
||||
SELECT DECODE(11,10,'x10',11,'x11','def');
|
||||
SELECT DECODE(12,10,'x10',11,'x11','def');
|
||||
|
||||
EXPLAIN EXTENDED SELECT DECODE(12,10,'x10',11,'x11','def');
|
||||
|
||||
CREATE TABLE decode (decode int);
|
||||
DROP TABLE decode;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-13863 sql_mode=ORACLE: DECODE does not treat two NULLs as equivalent
|
||||
--echo #
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
SELECT DECODE(10);
|
||||
--error ER_PARSE_ERROR
|
||||
SELECT DECODE(10,10);
|
||||
|
||||
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||
SELECT DECODE_ORACLE(10);
|
||||
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||
SELECT DECODE_ORACLE(10,10);
|
||||
|
||||
|
||||
EXPLAIN EXTENDED SELECT DECODE(12,10,'x10',11,'x11');
|
||||
EXPLAIN EXTENDED SELECT DECODE(12,10,'x10',11,'x11','def');
|
||||
EXPLAIN EXTENDED SELECT DECODE_ORACLE(12,10,'x10',11,'x11');
|
||||
EXPLAIN EXTENDED SELECT DECODE_ORACLE(12,10,'x10',11,'x11','def');
|
||||
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE VIEW v1 AS
|
||||
SELECT
|
||||
DECODE(a,1,'x1',NULL,'xNULL') AS d1,
|
||||
DECODE(a,1,'x1',NULL,'xNULL','xELSE') AS d2,
|
||||
DECODE_ORACLE(a,1,'x1',NULL,'xNULL') AS d3,
|
||||
DECODE_ORACLE(a,1,'x1',NULL,'xNULL','xELSE') AS d4
|
||||
FROM t1;
|
||||
SHOW CREATE VIEW v1;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
|
||||
SELECT DECODE(TIME'10:20:31','10:20:31','then1','10:20:32','then2','def');
|
||||
SELECT DECODE(TIME'10:20:32','10:20:31','then1','10:20:32','then2','def');
|
||||
SELECT DECODE(TIME'10:20:33','10:20:31','then1',NULL,'then2NULL','10:20:33','then3','def');
|
||||
SELECT DECODE(NULL,TIME'10:20:31','then1',NULL,'then2NULL','10:20:33','then3','def');
|
||||
|
||||
SELECT DECODE(TIMESTAMP'2001-01-01 10:20:31','2001-01-01 10:20:31','then1','2001-01-01 10:20:32','then2','def');
|
||||
SELECT DECODE(TIMESTAMP'2001-01-01 10:20:32','2001-01-01 10:20:31','then1','2001-01-01 10:20:32','then2','def');
|
||||
SELECT 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');
|
||||
SELECT DECODE(NULL,TIMESTAMP'2001-01-01 10:20:31','then1',NULL,'then2NULL','2001-01-01 10:20:33','then3','def');
|
||||
|
||||
SELECT DECODE('w1','w1','then1','w2','then2','def');
|
||||
SELECT DECODE('w2','w1','then1','w2','then2','def');
|
||||
SELECT DECODE('w3','w1','then1',NULL,'then2NULL','w3','then3','def');
|
||||
SELECT DECODE(NULL,'w1','then1',NULL,'then2NULL','w3','then3','def');
|
||||
|
||||
SELECT DECODE(1,1,'then1',2,'then2','def');
|
||||
SELECT DECODE(2,1,'then1',2,'then2','def');
|
||||
SELECT DECODE(3,1,'then1',NULL,'then2NULL',3,'then3','def');
|
||||
SELECT DECODE(NULL,1,'then1',NULL,'then2NULL',3,'then3','def');
|
||||
SELECT DECODE(CAST(NULL AS SIGNED),1,'then1',NULL,'then2NULL',3,'then3','def');
|
||||
|
||||
SELECT DECODE(1.0,1.0,'then1',2.0,'then2','def');
|
||||
SELECT DECODE(2.0,1.0,'then1',2.0,'then2','def');
|
||||
SELECT DECODE(3.0,1.0,'then1',NULL,'then2NULL',3.0,'then3','def');
|
||||
SELECT DECODE(NULL,1.0,'then1',NULL,'then2NULL',3.0,'then3','def');
|
||||
SELECT DECODE(CAST(NULL AS DECIMAL),1.0,'then1',NULL,'then2NULL',3.0,'then3','def');
|
||||
|
||||
SELECT DECODE(1e0,1e0,'then1',2e0,'then2','def');
|
||||
SELECT DECODE(2e0,1e0,'then1',2e0,'then2','def');
|
||||
SELECT DECODE(3e0,1e0,'then1',NULL,'then2NULL',3e0,'then3','def');
|
||||
SELECT DECODE(NULL,1e0,'then1',NULL,'then2NULL',3e0,'then3','def');
|
||||
SELECT DECODE(CAST(NULL AS DOUBLE),1e0,'then1',NULL,'then2NULL',3e0,'then3','def');
|
||||
|
||||
SELECT DECODE(NULL,NULL,1,2) FROM DUAL;
|
||||
SELECT DECODE(NULL,10,10,NULL,1,2) FROM DUAL;
|
||||
|
||||
SELECT DECODE_ORACLE(NULL,NULL,1,2) FROM DUAL;
|
||||
SELECT DECODE_ORACLE(NULL,10,10,NULL,1,2) FROM DUAL;
|
||||
|
@ -0,0 +1,33 @@
|
||||
SET sql_mode=ORACLE;
|
||||
SET default_storage_engine=ColumnStore;
|
||||
#
|
||||
# MDEV-13003 - Oracle compatibility : Replace function
|
||||
#
|
||||
SELECT REPLACE(null,'a','b') ;
|
||||
REPLACE(null,'a','b')
|
||||
NULL
|
||||
SELECT REPLACE('ab',null,'b') ;
|
||||
REPLACE('ab',null,'b')
|
||||
ab
|
||||
SELECT REPLACE('ab','a',null) ;
|
||||
REPLACE('ab','a',null)
|
||||
b
|
||||
SELECT REPLACE('ab',null,null) ;
|
||||
REPLACE('ab',null,null)
|
||||
ab
|
||||
SELECT REPLACE('aaa','a',null) ;
|
||||
REPLACE('aaa','a',null)
|
||||
NULL
|
||||
EXPLAIN EXTENDED SELECT REPLACE('ab','a',null) ;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select replace_oracle('ab','a',NULL) AS "REPLACE('ab','a',null)"
|
||||
CREATE VIEW v1 AS SELECT REPLACE('ab','a',null) ;
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE VIEW "v1" AS select replace_oracle('ab','a',NULL) AS "REPLACE('ab','a',null)" latin1 latin1_swedish_ci
|
||||
SELECT * FROM v1;
|
||||
REPLACE('ab','a',null)
|
||||
b
|
||||
DROP VIEW v1;
|
@ -0,0 +1,22 @@
|
||||
#
|
||||
# Testing replace with null args
|
||||
#
|
||||
|
||||
SET sql_mode=ORACLE;
|
||||
SET default_storage_engine=ColumnStore;
|
||||
--echo #
|
||||
--echo # MDEV-13003 - Oracle compatibility : Replace function
|
||||
--echo #
|
||||
|
||||
SELECT REPLACE(null,'a','b') ;
|
||||
SELECT REPLACE('ab',null,'b') ;
|
||||
SELECT REPLACE('ab','a',null) ;
|
||||
SELECT REPLACE('ab',null,null) ;
|
||||
SELECT REPLACE('aaa','a',null) ;
|
||||
|
||||
EXPLAIN EXTENDED SELECT REPLACE('ab','a',null) ;
|
||||
|
||||
CREATE VIEW v1 AS SELECT REPLACE('ab','a',null) ;
|
||||
SHOW CREATE VIEW v1;
|
||||
SELECT * FROM v1;
|
||||
DROP VIEW v1;
|
171
mysql-test/columnstore/compat/oracle/func_trim_oracle.result
Normal file
171
mysql-test/columnstore/compat/oracle/func_trim_oracle.result
Normal file
@ -0,0 +1,171 @@
|
||||
SET sql_mode=ORACLE;
|
||||
SET default_storage_engine=ColumnStore;
|
||||
#
|
||||
# MDEV-15664 sql_mode=ORACLE: Make TRIM return NULL instead of empty string
|
||||
#
|
||||
SELECT TRIM('abc'), TRIM('abc ')||'.', '.'||TRIM(' abc ')||'.', TRIM(' '), TRIM(NULL), TRIM(SPACE(0)),TRIM(SPACE(10)) FROM dual;
|
||||
TRIM('abc') TRIM('abc ')||'.' '.'||TRIM(' abc ')||'.' TRIM(' ') TRIM(NULL) TRIM(SPACE(0)) TRIM(SPACE(10))
|
||||
abc abc. .abc. NULL NULL NULL NULL
|
||||
SELECT TRIM(TRAILING 'abc' FROM 'abc');
|
||||
TRIM(TRAILING 'abc' FROM 'abc')
|
||||
NULL
|
||||
SELECT TRIM(TRAILING 'abc' FROM 'abc ');
|
||||
TRIM(TRAILING 'abc' FROM 'abc ')
|
||||
abc
|
||||
SELECT TRIM(TRAILING 'abc' FROM ' abc');
|
||||
TRIM(TRAILING 'abc' FROM ' abc')
|
||||
|
||||
SELECT TRIM(LEADING 'abc' FROM 'abc');
|
||||
TRIM(LEADING 'abc' FROM 'abc')
|
||||
NULL
|
||||
SELECT TRIM(LEADING 'abc' FROM 'abc ');
|
||||
TRIM(LEADING 'abc' FROM 'abc ')
|
||||
|
||||
SELECT TRIM(LEADING 'abc' FROM ' abc');
|
||||
TRIM(LEADING 'abc' FROM ' abc')
|
||||
abc
|
||||
SELECT TRIM(BOTH 'abc' FROM 'abc');
|
||||
TRIM(BOTH 'abc' FROM 'abc')
|
||||
NULL
|
||||
SELECT TRIM(BOTH 'abc' FROM 'abc ');
|
||||
TRIM(BOTH 'abc' FROM 'abc ')
|
||||
|
||||
SELECT TRIM(BOTH 'abc' FROM ' abc');
|
||||
TRIM(BOTH 'abc' FROM ' abc')
|
||||
|
||||
SELECT RTRIM('abc'), RTRIM('abc ')||'.', RTRIM(' abc ')||'.', RTRIM(' '), RTRIM(NULL), RTRIM(SPACE(0)),RTRIM(SPACE(10)) FROM dual;
|
||||
RTRIM('abc') RTRIM('abc ')||'.' RTRIM(' abc ')||'.' RTRIM(' ') RTRIM(NULL) RTRIM(SPACE(0)) RTRIM(SPACE(10))
|
||||
abc abc. abc. NULL NULL NULL NULL
|
||||
SELECT LTRIM('abc'), LTRIM('abc '), LTRIM(' abc '), LTRIM(' '), LTRIM(NULL), LTRIM(SPACE(0)),LTRIM(SPACE(10)) FROM dual;
|
||||
LTRIM('abc') LTRIM('abc ') LTRIM(' abc ') LTRIM(' ') LTRIM(NULL) LTRIM(SPACE(0)) LTRIM(SPACE(10))
|
||||
abc abc abc NULL NULL NULL NULL
|
||||
CREATE TABLE t1 (c1 VARCHAR(10),ord INTEGER);
|
||||
INSERT INTO t1 VALUES ('abc',1);
|
||||
INSERT INTO t1 VALUES (SPACE(0),2);
|
||||
INSERT INTO t1 VALUES ('',3);
|
||||
INSERT INTO t1 VALUES (' ',4);
|
||||
INSERT INTO t1 VALUES (' ',5);
|
||||
INSERT INTO t1 VALUES (' a ',6);
|
||||
INSERT INTO t1 VALUES ('aa',7);
|
||||
INSERT INTO t1 VALUES ('aabb',8);
|
||||
INSERT INTO t1 VALUES ('bbaa',9);
|
||||
INSERT INTO t1 VALUES ('aabbaa',10);
|
||||
SELECT ord,'['||c1||']','.'||COALESCE(TRIM(LEADING 'a' FROM c1),'NULL')||'.' FROM t1 ORDER BY ord;
|
||||
ord '['||c1||']' '.'||COALESCE(TRIM(LEADING 'a' FROM c1),'NULL')||'.'
|
||||
1 [abc] .bc.
|
||||
2 [] .NULL.
|
||||
3 [] .NULL.
|
||||
4 [ ] . .
|
||||
5 [ ] . .
|
||||
6 [ a ] . a .
|
||||
7 [aa] .NULL.
|
||||
8 [aabb] .bb.
|
||||
9 [bbaa] .bbaa.
|
||||
10 [aabbaa] .bbaa.
|
||||
SELECT ord,'['||c1||']','.'||COALESCE(TRIM(TRAILING 'a' FROM c1),'NULL')||'.' FROM t1 ORDER BY ord;
|
||||
ord '['||c1||']' '.'||COALESCE(TRIM(TRAILING 'a' FROM c1),'NULL')||'.'
|
||||
1 [abc] .abc.
|
||||
2 [] .NULL.
|
||||
3 [] .NULL.
|
||||
4 [ ] . .
|
||||
5 [ ] . .
|
||||
6 [ a ] . a .
|
||||
7 [aa] .NULL.
|
||||
8 [aabb] .aabb.
|
||||
9 [bbaa] .bb.
|
||||
10 [aabbaa] .aabb.
|
||||
SELECT ord,'['||c1||']','.'||COALESCE(TRIM(BOTH 'a' FROM c1),'NULL')||'.' FROM t1 ORDER BY ord;
|
||||
ord '['||c1||']' '.'||COALESCE(TRIM(BOTH 'a' FROM c1),'NULL')||'.'
|
||||
1 [abc] .bc.
|
||||
2 [] .NULL.
|
||||
3 [] .NULL.
|
||||
4 [ ] . .
|
||||
5 [ ] . .
|
||||
6 [ a ] . a .
|
||||
7 [aa] .NULL.
|
||||
8 [aabb] .bb.
|
||||
9 [bbaa] .bb.
|
||||
10 [aabbaa] .bb.
|
||||
SELECT ord,'['||c1||']',COALESCE(LTRIM(c1),'NULL') FROM t1 ORDER BY ord;
|
||||
ord '['||c1||']' COALESCE(LTRIM(c1),'NULL')
|
||||
1 [abc] abc
|
||||
2 [] NULL
|
||||
3 [] NULL
|
||||
4 [ ] NULL
|
||||
5 [ ] NULL
|
||||
6 [ a ] a
|
||||
7 [aa] aa
|
||||
8 [aabb] aabb
|
||||
9 [bbaa] bbaa
|
||||
10 [aabbaa] aabbaa
|
||||
SELECT ord,'['||c1||']',COALESCE(RTRIM(c1),'NULL')||'.' FROM t1 ORDER BY ord;
|
||||
ord '['||c1||']' COALESCE(RTRIM(c1),'NULL')||'.'
|
||||
1 [abc] abc.
|
||||
2 [] NULL.
|
||||
3 [] NULL.
|
||||
4 [ ] NULL.
|
||||
5 [ ] NULL.
|
||||
6 [ a ] a.
|
||||
7 [aa] aa.
|
||||
8 [aabb] aabb.
|
||||
9 [bbaa] bbaa.
|
||||
10 [aabbaa] aabbaa.
|
||||
EXPLAIN EXTENDED SELECT TRIM('abc'),
|
||||
TRIM(BOTH 'a' FROM 'abc'),
|
||||
TRIM(LEADING 'a' FROM 'abc'),
|
||||
TRIM(TRAILING 'a' FROM 'abc') ;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select trim_oracle('abc') AS "TRIM('abc')",trim_oracle(both 'a' from 'abc') AS "TRIM(BOTH 'a' FROM 'abc')",trim_oracle(leading 'a' from 'abc') AS "TRIM(LEADING 'a' FROM 'abc')",trim_oracle(trailing 'a' from 'abc') AS "TRIM(TRAILING 'a' FROM 'abc')"
|
||||
EXPLAIN EXTENDED SELECT RTRIM('abc'),
|
||||
LTRIM('abc');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select rtrim_oracle('abc') AS "RTRIM('abc')",ltrim_oracle('abc') AS "LTRIM('abc')"
|
||||
CREATE VIEW v1 AS SELECT ord,TRIM('abc'),RTRIM('abc'),LTRIM('abc'),
|
||||
'['||c1||']',
|
||||
TRIM(LEADING 'a' FROM c1),
|
||||
TRIM(TRAILING 'a' FROM c1),
|
||||
TRIM(BOTH 'a' FROM c1),
|
||||
LTRIM(c1),
|
||||
RTRIM(c1)
|
||||
FROM t1 ORDER BY ord ;
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE VIEW "v1" AS select "t1"."ord" AS "ord",trim_oracle('abc') AS "TRIM('abc')",rtrim_oracle('abc') AS "RTRIM('abc')",ltrim_oracle('abc') AS "LTRIM('abc')",concat_operator_oracle(concat_operator_oracle('[',"t1"."c1"),']') AS "'['||c1||']'",trim_oracle(leading 'a' from "t1"."c1") AS "TRIM(LEADING 'a' FROM c1)",trim_oracle(trailing 'a' from "t1"."c1") AS "TRIM(TRAILING 'a' FROM c1)",trim_oracle(both 'a' from "t1"."c1") AS "TRIM(BOTH 'a' FROM c1)",ltrim_oracle("t1"."c1") AS "LTRIM(c1)",rtrim_oracle("t1"."c1") AS "RTRIM(c1)" from "t1" order by "t1"."ord" latin1 latin1_swedish_ci
|
||||
SELECT * FROM v1;
|
||||
ord TRIM('abc') RTRIM('abc') LTRIM('abc') '['||c1||']' TRIM(LEADING 'a' FROM c1) TRIM(TRAILING 'a' FROM c1) TRIM(BOTH 'a' FROM c1) LTRIM(c1) RTRIM(c1)
|
||||
1 abc abc abc [abc] bc abc bc abc abc
|
||||
2 abc abc abc [] NULL NULL NULL NULL NULL
|
||||
3 abc abc abc [] NULL NULL NULL NULL NULL
|
||||
4 abc abc abc [ ] NULL NULL
|
||||
5 abc abc abc [ ] NULL NULL
|
||||
6 abc abc abc [ a ] a a a a a
|
||||
7 abc abc abc [aa] NULL NULL NULL aa aa
|
||||
8 abc abc abc [aabb] bb aabb bb aabb aabb
|
||||
9 abc abc abc [bbaa] bbaa bb bb bbaa bbaa
|
||||
10 abc abc abc [aabbaa] bbaa aabb bb aabbaa aabbaa
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 VARCHAR(10) NOT NULL);
|
||||
CREATE TABLE t2 AS SELECT TRIM(LEADING 'a' FROM c1) AS C1,
|
||||
TRIM(TRAILING 'a' FROM c1) AS C2,
|
||||
TRIM(BOTH 'a' FROM c1) AS C3,
|
||||
LTRIM(c1) AS C4,
|
||||
RTRIM(c1) AS C5
|
||||
FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE "t2" (
|
||||
"C1" varchar(10) DEFAULT NULL,
|
||||
"C2" varchar(10) DEFAULT NULL,
|
||||
"C3" varchar(10) DEFAULT NULL,
|
||||
"C4" varchar(10) DEFAULT NULL,
|
||||
"C5" varchar(10) DEFAULT NULL
|
||||
)
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE trim_oracle (trim_oracle int);
|
||||
DROP TABLE trim_oracle;
|
78
mysql-test/columnstore/compat/oracle/func_trim_oracle.test
Normal file
78
mysql-test/columnstore/compat/oracle/func_trim_oracle.test
Normal file
@ -0,0 +1,78 @@
|
||||
SET sql_mode=ORACLE;
|
||||
SET default_storage_engine=ColumnStore;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-15664 sql_mode=ORACLE: Make TRIM return NULL instead of empty string
|
||||
--echo #
|
||||
|
||||
SELECT TRIM('abc'), TRIM('abc ')||'.', '.'||TRIM(' abc ')||'.', TRIM(' '), TRIM(NULL), TRIM(SPACE(0)),TRIM(SPACE(10)) FROM dual;
|
||||
|
||||
SELECT TRIM(TRAILING 'abc' FROM 'abc');
|
||||
SELECT TRIM(TRAILING 'abc' FROM 'abc ');
|
||||
SELECT TRIM(TRAILING 'abc' FROM ' abc');
|
||||
|
||||
SELECT TRIM(LEADING 'abc' FROM 'abc');
|
||||
SELECT TRIM(LEADING 'abc' FROM 'abc ');
|
||||
SELECT TRIM(LEADING 'abc' FROM ' abc');
|
||||
|
||||
SELECT TRIM(BOTH 'abc' FROM 'abc');
|
||||
SELECT TRIM(BOTH 'abc' FROM 'abc ');
|
||||
SELECT TRIM(BOTH 'abc' FROM ' abc');
|
||||
|
||||
SELECT RTRIM('abc'), RTRIM('abc ')||'.', RTRIM(' abc ')||'.', RTRIM(' '), RTRIM(NULL), RTRIM(SPACE(0)),RTRIM(SPACE(10)) FROM dual;
|
||||
SELECT LTRIM('abc'), LTRIM('abc '), LTRIM(' abc '), LTRIM(' '), LTRIM(NULL), LTRIM(SPACE(0)),LTRIM(SPACE(10)) FROM dual;
|
||||
|
||||
CREATE TABLE t1 (c1 VARCHAR(10),ord INTEGER);
|
||||
INSERT INTO t1 VALUES ('abc',1);
|
||||
INSERT INTO t1 VALUES (SPACE(0),2);
|
||||
INSERT INTO t1 VALUES ('',3);
|
||||
INSERT INTO t1 VALUES (' ',4);
|
||||
INSERT INTO t1 VALUES (' ',5);
|
||||
INSERT INTO t1 VALUES (' a ',6);
|
||||
INSERT INTO t1 VALUES ('aa',7);
|
||||
INSERT INTO t1 VALUES ('aabb',8);
|
||||
INSERT INTO t1 VALUES ('bbaa',9);
|
||||
INSERT INTO t1 VALUES ('aabbaa',10);
|
||||
|
||||
SELECT ord,'['||c1||']','.'||COALESCE(TRIM(LEADING 'a' FROM c1),'NULL')||'.' FROM t1 ORDER BY ord;
|
||||
SELECT ord,'['||c1||']','.'||COALESCE(TRIM(TRAILING 'a' FROM c1),'NULL')||'.' FROM t1 ORDER BY ord;
|
||||
SELECT ord,'['||c1||']','.'||COALESCE(TRIM(BOTH 'a' FROM c1),'NULL')||'.' FROM t1 ORDER BY ord;
|
||||
SELECT ord,'['||c1||']',COALESCE(LTRIM(c1),'NULL') FROM t1 ORDER BY ord;
|
||||
SELECT ord,'['||c1||']',COALESCE(RTRIM(c1),'NULL')||'.' FROM t1 ORDER BY ord;
|
||||
|
||||
EXPLAIN EXTENDED SELECT TRIM('abc'),
|
||||
TRIM(BOTH 'a' FROM 'abc'),
|
||||
TRIM(LEADING 'a' FROM 'abc'),
|
||||
TRIM(TRAILING 'a' FROM 'abc') ;
|
||||
|
||||
EXPLAIN EXTENDED SELECT RTRIM('abc'),
|
||||
LTRIM('abc');
|
||||
|
||||
|
||||
CREATE VIEW v1 AS SELECT ord,TRIM('abc'),RTRIM('abc'),LTRIM('abc'),
|
||||
'['||c1||']',
|
||||
TRIM(LEADING 'a' FROM c1),
|
||||
TRIM(TRAILING 'a' FROM c1),
|
||||
TRIM(BOTH 'a' FROM c1),
|
||||
LTRIM(c1),
|
||||
RTRIM(c1)
|
||||
FROM t1 ORDER BY ord ;
|
||||
SHOW CREATE VIEW v1;
|
||||
SELECT * FROM v1;
|
||||
DROP VIEW v1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (c1 VARCHAR(10) NOT NULL);
|
||||
CREATE TABLE t2 AS SELECT TRIM(LEADING 'a' FROM c1) AS C1,
|
||||
TRIM(TRAILING 'a' FROM c1) AS C2,
|
||||
TRIM(BOTH 'a' FROM c1) AS C3,
|
||||
LTRIM(c1) AS C4,
|
||||
RTRIM(c1) AS C5
|
||||
FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE trim_oracle (trim_oracle int);
|
||||
DROP TABLE trim_oracle;
|
Reference in New Issue
Block a user