blob: a15d27d7cee9cd0132f783ccc9f6354e292f8eaf [file] [log] [blame]
# name: test/sql/function/generic/test_case.test
# description: Test case statement
# group: [generic]
statement ok
CREATE TABLE test (a INTEGER, b INTEGER);
statement ok
INSERT INTO test VALUES (11, 22), (12, 21), (13, 22)
query I
SELECT CASE WHEN test.a=11 THEN b ELSE NULL END FROM test ORDER BY a
----
22
NULL
NULL
# constant case statements
# all constant
query I
SELECT CASE WHEN 1=1 THEN 1 ELSE NULL END FROM test ORDER BY b
----
1
1
1
# check + res_if_false constant
query I
SELECT CASE WHEN 1=1 THEN b ELSE NULL END FROM test ORDER BY b
----
21
22
22
# check + res_if_true constant
query I
SELECT CASE WHEN 3>2 THEN NULL ELSE b+1 END FROM test ORDER BY b
----
NULL
NULL
NULL
# check constant
query I
SELECT CASE WHEN 1=0 THEN b ELSE b+1 END FROM test ORDER BY b
----
22
23
23
# res_if_true and res_if_false constant
query I
SELECT CASE WHEN b=22 THEN NULL ELSE 1 END FROM test ORDER BY b
----
1
NULL
NULL
# res_if_false constant
query I
SELECT CASE WHEN b=22 THEN b+1 ELSE 1 END FROM test ORDER BY b
----
1
23
23
# res_if_true constant
query I
SELECT CASE WHEN b=22 THEN NULL ELSE b+1 END FROM test ORDER BY b
----
22
NULL
NULL
# fail case on types that can't be cast to boolean
statement error
SELECT CASE WHEN 'hello' THEN b ELSE a END FROM test
# but only when cast cannot be performed
query I
SELECT CASE WHEN true THEN NULL ELSE b+1 END FROM test ORDER BY b
----
NULL
NULL
NULL
query I
SELECT CASE WHEN false THEN NULL ELSE b+1 END FROM test ORDER BY b
----
22
23
23