Skip to content

Commit a61c48e

Browse files
add variant_get_bool coverage
1 parent 265f53f commit a61c48e

1 file changed

Lines changed: 98 additions & 0 deletions

File tree

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
statement ok
2+
CREATE TABLE json_data (id INT, json_str TEXT) AS VALUES
3+
(1, '{"name": "Alice", "age": 30}'),
4+
(2, '{"name": "Bob", "age": 25}'),
5+
(3, '{"items": [1, 2, 3], "count": 3}'),
6+
(4, 'null'),
7+
(5, '"simple string"'),
8+
(6, '123'),
9+
(7, 'true'),
10+
(8, '{"active": true, "deleted": false}');
11+
12+
# boolean values are returned as boolean
13+
query B
14+
select variant_get_bool(json_to_variant(json_str), 'active') from json_data;
15+
----
16+
NULL
17+
NULL
18+
NULL
19+
NULL
20+
NULL
21+
NULL
22+
NULL
23+
true
24+
25+
# missing paths return null
26+
query B
27+
select variant_get_bool(json_to_variant(json_str), 'nonexistent') from json_data;
28+
----
29+
NULL
30+
NULL
31+
NULL
32+
NULL
33+
NULL
34+
NULL
35+
NULL
36+
NULL
37+
38+
# non-boolean values return null (string field)
39+
query B
40+
select variant_get_bool(json_to_variant(json_str), 'name') from json_data;
41+
----
42+
NULL
43+
NULL
44+
NULL
45+
NULL
46+
NULL
47+
NULL
48+
NULL
49+
NULL
50+
51+
# non-boolean values return null (integer field)
52+
query B
53+
select variant_get_bool(json_to_variant(json_str), 'age') from json_data;
54+
----
55+
NULL
56+
NULL
57+
NULL
58+
NULL
59+
NULL
60+
NULL
61+
NULL
62+
NULL
63+
64+
# scalar variant with true value
65+
query B
66+
select variant_get_bool(json_to_variant('{"flag": true}'), 'flag');
67+
----
68+
true
69+
70+
# scalar variant with false value
71+
query B
72+
select variant_get_bool(json_to_variant('{"flag": false}'), 'flag');
73+
----
74+
false
75+
76+
# scalar variant with string value returns null
77+
query B
78+
select variant_get_bool(json_to_variant('{"greeting": "hello world"}'), 'greeting');
79+
----
80+
NULL
81+
82+
# scalar variant with numeric value returns null
83+
query B
84+
select variant_get_bool(json_to_variant('{"count": 42}'), 'count');
85+
----
86+
NULL
87+
88+
# nested boolean path
89+
query B
90+
select variant_get_bool(json_to_variant('{"obj": {"a": true}}'), 'obj.a');
91+
----
92+
true
93+
94+
# boolean false via nested path
95+
query B
96+
select variant_get_bool(json_to_variant('{"obj": {"a": false}}'), 'obj.a');
97+
----
98+
false

0 commit comments

Comments
 (0)