|
| 1 | +SELECT firstNonDefault(NULL, 0, 43, 256) AS result; |
| 2 | +SELECT firstNonDefault(NULL :: Nullable(UInt8), 0 :: Nullable(UInt8), 42 :: UInt8) AS result; |
| 3 | +SELECT firstNonDefault('', '0', 'hello') AS result; |
| 4 | +SELECT firstNonDefault(NULL::Nullable(UInt8), 0::UInt8) AS result; |
| 5 | +SELECT firstNonDefault(false, true) AS result; |
| 6 | + |
| 7 | +SELECT firstNonDefault([] :: Array(UInt8), [1, 2, 3] :: Array(UInt8)) AS result; |
| 8 | +SELECT firstNonDefault(NULL::Nullable(String), ''::String, 'foo') as result, toTypeName(result); |
| 9 | + |
| 10 | +SELECT firstNonDefault(0::UInt8, 0::UInt16, 42::UInt32) AS result, toTypeName(result); |
| 11 | +SELECT firstNonDefault(0::Int8, 0::Int16, 42::Int32) AS result, toTypeName(result); |
| 12 | +SELECT firstNonDefault(0::UInt32, 0::UInt64, 42::UInt128) AS result, toTypeName(result); |
| 13 | +SELECT firstNonDefault(0::Int128, 0::Int128, 42::Int128) AS result, toTypeName(result); |
| 14 | +SELECT firstNonDefault(0::UInt8, 0::Int8, 42::Int16) AS result, toTypeName(result); |
| 15 | +SELECT firstNonDefault(0::Int64, 0::Int64, 42::Int64) AS result, toTypeName(result); |
| 16 | +SELECT firstNonDefault(0.0::Float32, 0.0::Float64, 42.5::Float64) AS result, toTypeName(result); |
| 17 | +SELECT firstNonDefault(0::Float64, 0.0::Float64, 42.0::Float64) AS result, toTypeName(result); |
| 18 | +SELECT firstNonDefault(NULL::Nullable(Int32), 0::Nullable(Int32), 42::Nullable(Int32)) AS result, toTypeName(result); |
| 19 | +SELECT firstNonDefault(NULL, 0::Int32, 42::Nullable(Int32)) AS result, toTypeName(result); |
| 20 | +SELECT firstNonDefault(''::String, '0'::String, 'hello'::String) AS result, toTypeName(result); |
| 21 | +SELECT firstNonDefault(''::FixedString(5), '0'::String, 'hello'::String) AS result, toTypeName(result); |
| 22 | +SELECT firstNonDefault([]::Array(Int32), [0]::Array(Int32), [1, 2, 3]::Array(Int32)) AS result, toTypeName(result); |
| 23 | +SELECT firstNonDefault([]::Array(String), ['']::Array(String), ['hello']::Array(String)) AS result, toTypeName(result); |
| 24 | +SELECT firstNonDefault(NULL::Nullable(UInt8), 0::UInt8, 42::UInt8, 100::UInt8) AS result, toTypeName(result); |
| 25 | +SELECT firstNonDefault(NULL::Nullable(String), ''::String, '0'::String, 'hello'::String) AS result, toTypeName(result); |
| 26 | + |
| 27 | +SELECT firstNonDefault(NULL) AS result, toTypeName(result); |
| 28 | +SELECT firstNonDefault(0) AS result, toTypeName(result); |
| 29 | +SELECT firstNonDefault(''::String) AS result, toTypeName(result); |
| 30 | +SELECT firstNonDefault([]::Array(UInt8)) AS result, toTypeName(result); |
| 31 | + |
| 32 | +SELECT firstNonDefault(); -- { serverError NUMBER_OF_ARGUMENTS_DOESNT_MATCH } |
| 33 | + |
| 34 | +SELECT firstNonDefault(0, 'hello'); -- { serverError NO_COMMON_TYPE } |
| 35 | +SELECT firstNonDefault([]::Array(UInt8), 42); -- { serverError NO_COMMON_TYPE } |
| 36 | +SELECT firstNonDefault([]::Array(UInt8), 'hello'); -- { serverError NO_COMMON_TYPE } |
| 37 | +SELECT firstNonDefault(0::UInt64, 1::Int64); -- { serverError NO_COMMON_TYPE } |
| 38 | +SELECT firstNonDefault(NULL::Nullable(Array(UInt8)), []::Array(UInt8)); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT } |
| 39 | + |
| 40 | +SELECT firstNonDefault( |
| 41 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 42 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 43 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 44 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 45 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 46 | + number |
| 47 | +) FROM numbers(3); |
| 48 | + |
| 49 | +DROP TABLE IF EXISTS test_first_truthy; |
| 50 | + |
| 51 | +CREATE TABLE test_first_truthy |
| 52 | +( |
| 53 | + a Nullable(Int32), |
| 54 | + b Nullable(Int32), |
| 55 | + c Nullable(String), |
| 56 | + d Array(Int32) |
| 57 | +) ENGINE = Memory; |
| 58 | + |
| 59 | +INSERT INTO test_first_truthy VALUES |
| 60 | +(NULL, 0, NULL, []), |
| 61 | +(0, NULL, '', []), |
| 62 | +(NULL, NULL, NULL, []), |
| 63 | +(0, 0, '', []), |
| 64 | +(1, 0, '', []), |
| 65 | +(0, 2, '', []), |
| 66 | +(0, 0, 'hello', []), |
| 67 | +(0, 0, '', [1, 2, 3]); |
| 68 | + |
| 69 | +SELECT |
| 70 | + a, b, |
| 71 | + firstNonDefault(a, b) AS result, |
| 72 | + toTypeName(firstNonDefault(a, b)) AS type |
| 73 | +FROM test_first_truthy |
| 74 | +ORDER BY ALL; |
| 75 | + |
| 76 | +SELECT |
| 77 | + c, |
| 78 | + firstNonDefault(c, 'default'::String) AS result, |
| 79 | + toTypeName(firstNonDefault(c, 'default'::String)) AS type |
| 80 | +FROM test_first_truthy |
| 81 | +ORDER BY ALL; |
| 82 | + |
| 83 | +SELECT |
| 84 | + d, |
| 85 | + firstNonDefault(d, [99, 100]::Array(Int32)) AS result, |
| 86 | + toTypeName(firstNonDefault(d, [99, 100]::Array(Int32))) AS type |
| 87 | +FROM test_first_truthy |
| 88 | +ORDER BY length(result); |
| 89 | + |
| 90 | +SELECT |
| 91 | + a, b, |
| 92 | + firstNonDefault(a + b, a * b, a - b) AS result, |
| 93 | + toTypeName(firstNonDefault(a + b, a * b, a - b)) AS type |
| 94 | +FROM test_first_truthy |
| 95 | +ORDER BY ALL; |
| 96 | + |
| 97 | +SELECT |
| 98 | + a, b, |
| 99 | + firstNonDefault(42, a, b) AS result1, |
| 100 | + firstNonDefault(0, a, b) AS result2, |
| 101 | + firstNonDefault(NULL, a, b) AS result3 |
| 102 | +FROM test_first_truthy |
| 103 | +ORDER BY ALL; |
| 104 | + |
| 105 | +DROP TABLE test_first_truthy; |
0 commit comments