diff --git a/test/cases/function/func_coalesce_1.sql b/test/cases/function/func_coalesce_1.sql new file mode 100644 index 0000000000000000000000000000000000000000..c20fe5c732f7211ab4156fec1052aee82db6c59c --- /dev/null +++ b/test/cases/function/func_coalesce_1.sql @@ -0,0 +1,132 @@ + +-- test coalesce function + +drop table if exists t1; +create table t1( +a int, +b varchar(25) +); + +insert into t1 values (0, 'a'); +insert into t1 values (1, NULL); +insert into t1 values (NULL, NULL); +insert into t1 values (null, 'b'); + +select * from t1; +select coalesce(a, 1) from t1; +-- echo error +select coalesce(b, 1) from t1; + +-- @bvt:issue#4744 +select coalesce(b, '1') from t1; +-- @bvt:issue + +drop table t1; + + +drop table if exists t2; +create table t2( +a float, +b datetime +); + +insert into t2 values (12.345, '2022-02-20 10:10:10.999999'); +insert into t2 values (3.45646, NULL); +insert into t2 values(NULL, '2023-04-03 22:10:29.999999'); +insert into t2 values (NULL, NULL); + +select * from t2; +select coalesce(a, 1.0) from t2; +select coalesce(a, 1) from t2; + +-- @bvt:issue#4744 +select coalesce(b, 2022-01-01) from t2; +select coalesce(b, 2022) from t2; +select coalesce(b, 2) from t2; +-- @bvt:issue + + +select coalesce(b, '2022-10-01') from t2; +select coalesce(b, '2022-10-01 10:10:10.999999') from t2; + +-- echo error +select coalesce(b, '2022') from t2; + +-- echo error +select coalesce(b, '2022/10/01') from t2; +drop table t2; + + +drop table if exists t3; +create table t3( +a bool, +b text +); + +insert into t3 values (0, 'a'); +insert into t3 values (1, 'b'); +insert into t3 values (NULL, 'c'); +insert into t3 values (TRUE, NULL); +insert into t3 values (NULL, NULL); + +select * from t3; + +select coalesce(a, 1) from t3; +select coalesce(a, 0) from t3; +-- echo error +select coalesce(a, 200) from t3; + +-- @bvt:issue#4744 +select coalesce(b, '1') from t3; +select coalesce(b, 'bull') from t3; +-- @bvt:issue + +drop table t3; + + +-- test create view +drop table if exists t4; +create table t4 (f1 date, f2 datetime, f3 varchar(20)); + +drop view if exists view_t1; +create view view_t1 as select coalesce(f1,f1) as f4 from t4; +desc view_t1; +drop view view_t1; + +drop view if exists view_t2; +create view view_t2 as select coalesce(f1,f2) as f4 from t4; +desc view_t2; +drop view view_t2; + + +drop view if exists view_t3; +create view view_t3 as select coalesce(f2,f2) as f4 from t4; +desc view_t3; +drop view view_t3; + +-- @bvt:issue#4755 +drop view if exists view_t4; +create view view_t4 as select coalesce(f1,f3) as f4 from t4; +desc view_t4; +drop view view_t4; +-- @bvt:issue + +-- @bvt:issue#4755 +drop view if exists view_t5; +create view view_t5 as select coalesce(f2,f3) as f4 from t4; +desc view_t5; +drop view view_t5; +-- @bvt:issue + +drop table t4; + + +-- @bvt:issue#3588 +drop table if exists t5; +CREATE TABLE t5 (b datetime); + +INSERT INTO t5 VALUES ('2010-01-01 00:00:00'), ('2010-01-01 00:00:00'); +SELECT * FROM t5 WHERE b <= coalesce(NULL, now()); + +DROP TABLE t5; +-- @bvt:issue diff --git a/test/result/function/func_coalesce_1.result b/test/result/function/func_coalesce_1.result new file mode 100644 index 0000000000000000000000000000000000000000..857464c0a5f44fff599d43fbd3c00da9c28f11e4 --- /dev/null +++ b/test/result/function/func_coalesce_1.result @@ -0,0 +1,179 @@ +drop table if exists t1; +create table t1( +a int, +b varchar(25) +); +insert into t1 values (0, 'a'); +insert into t1 values (1, NULL); +insert into t1 values (NULL, NULL); +insert into t1 values (null, 'b'); +select * from t1; +a b +0 a +1 null +null null +null b +select coalesce(a, 1) from t1; +coalesce(a, 1) +0 +1 +1 +1 +select coalesce(b, 1) from t1; +Can't cast column from VARCHAR type to BIGINT type because of one or more values in that column. +select coalesce(b, '1') from t1; +coalesce(b, 1) +a + + +b +drop table t1; +drop table if exists t2; +create table t2( +a float, +b datetime +); +insert into t2 values (12.345, '2022-02-20 10:10:10.999999'); +insert into t2 values (3.45646, NULL); +insert into t2 values(NULL, '2023-04-03 22:10:29.999999'); +insert into t2 values (NULL, NULL); +select * from t2; +a b +12.345 2022-02-20 10:10:11 +3.45646 null +null 2023-04-03 22:10:30 +null null +select coalesce(a, 1.0) from t2; +coalesce(a, 1.0) +12.345000267028809 +3.4564599990844727 +1.0 +1.0 +select coalesce(a, 1) from t2; +coalesce(a, 1) +12.345000267028809 +3.4564599990844727 +1.0 +1.0 +select coalesce(b, 2022-01-01) from t2; +coalesce(b, 2022 - 1 - 1) +2022-02-20 10:10:11 + +2023-04-03 22:10:30 + +select coalesce(b, 2022) from t2; +coalesce(b, 2022) +2022-02-20 10:10:11 + +2023-04-03 22:10:30 + +select coalesce(b, 2) from t2; +coalesce(b, 2) +2022-02-20 10:10:11 + +2023-04-03 22:10:30 + +select coalesce(b, '2022-10-01') from t2; +coalesce(b, 2022-10-01) +2022-02-20 10:10:11 +2022-10-01 00:00:00 +2023-04-03 22:10:30 +2022-10-01 00:00:00 +select coalesce(b, '2022-10-01 10:10:10.999999') from t2; +coalesce(b, 2022-10-01 10:10:10.999999) +2022-02-20 10:10:11 +2022-10-01 10:10:10 +2023-04-03 22:10:30 +2022-10-01 10:10:10 +select coalesce(b, '2022') from t2; +Can't cast '2022' from VARCHAR type to DATETIME type. +select coalesce(b, '2022/10/01') from t2; +Can't cast '2022/10/01' from VARCHAR type to DATETIME type. +drop table t2; +drop table if exists t3; +create table t3( +a bool, +b text +); +insert into t3 values (0, 'a'); +insert into t3 values (1, 'b'); +insert into t3 values (NULL, 'c'); +insert into t3 values (TRUE, NULL); +insert into t3 values (NULL, NULL); +select * from t3; +a b +false a +true b +null c +true null +null null +select coalesce(a, 1) from t3; +coalesce(a, 1) +false +true +true +true +true +select coalesce(a, 0) from t3; +coalesce(a, 0) +false +true +false +true +false +select coalesce(a, 200) from t3; +Can't cast '200' from BIGINT type to BOOL type. +select coalesce(b, '1') from t3; +coalesce(b, 1) +a +b +c + + +select coalesce(b, 'bull') from t3; +coalesce(b, bull) +a +b +c + + +drop table t3; +drop table if exists t4; +create table t4 (f1 date, f2 datetime, f3 varchar(20)); +drop view if exists view_t1; +create view view_t1 as select coalesce(f1,f1) as f4 from t4; +desc view_t1; +Field Type Null Key Default Comment +f4 DATE YES NULL +drop view view_t1; +drop view if exists view_t2; +create view view_t2 as select coalesce(f1,f2) as f4 from t4; +desc view_t2; +Field Type Null Key Default Comment +f4 DATETIME YES NULL +drop view view_t2; +drop view if exists view_t3; +create view view_t3 as select coalesce(f2,f2) as f4 from t4; +desc view_t3; +Field Type Null Key Default Comment +f4 DATETIME YES NULL +drop view view_t3; +drop view if exists view_t4; +create view view_t4 as select coalesce(f1,f3) as f4 from t4; +desc view_t4; +Field Type Null Key Default Comment +f4 DATE YES NULL +drop view view_t4; +drop view if exists view_t5; +create view view_t5 as select coalesce(f2,f3) as f4 from t4; +desc view_t5; +Field Type Null Key Default Comment +f4 DATETIME YES NULL +drop view view_t5; +drop table t4; +drop table if exists t5; +CREATE TABLE t5 (b datetime); +INSERT INTO t5 VALUES ('2010-01-01 00:00:00'), ('2010-01-01 00:00:00'); +SELECT * FROM t5 WHERE b <= coalesce(NULL, now()); +Operator '<=' with parameters [DATETIME TIMESTAMP] will be implemented in future version. +DROP TABLE t5; \ No newline at end of file