@@ -19,8 +19,9 @@ defmodule Ch.JSONTest do
1919
2020 assert select . ( ~s| {"a":"b","c":"d"}| ) == % { "a" => "b" , "c" => "d" }
2121
22- # note that 42 is a string here, not an integer
23- assert select . ( ~s| {"a":42}| ) == % { "a" => "42" }
22+ # note that 42 was a string in pre-25.0 and post-25.8 ClickHouse versions
23+
24+ assert select . ( ~s| {"a":42}| ) == % { "a" => 42 }
2425
2526 assert select . ( ~s| {}| ) == % { }
2627
@@ -36,7 +37,7 @@ defmodule Ch.JSONTest do
3637 assert select . ( ~s| {"a":{"b":"c"}}| ) == % { "a" => % { "b" => "c" } }
3738
3839 # numbers in arrays become strings
39- assert select . ( ~s| {"a":[1,2,3]}| ) == % { "a" => [ "1" , "2" , "3" ] }
40+ assert select . ( ~s| {"a":[1,2,3]}| ) == % { "a" => [ 1 , 2 , 3 ] }
4041
4142 # this is weird, fields with dots are treated as nested objects
4243 assert select . ( ~s| {"a.b":"c"}| ) == % { "a" => % { "b" => "c" } }
@@ -46,10 +47,10 @@ defmodule Ch.JSONTest do
4647 assert select . ( ~s| {"a":[null]}| ) == % { "a" => [ nil ] }
4748
4849 # everything in an array gets converted to "lcd" type, aka string
49- assert select . ( ~s| {"a":[1,3.14,"hello",null]}| ) == % { "a" => [ "1" , " 3.14" , "hello" , nil ] }
50+ assert select . ( ~s| {"a":[1,3.14,"hello",null]}| ) == % { "a" => [ 1 , 3.14 , "hello" , nil ] }
5051
5152 # but not if the array has nested objects, then the array becomes a tuple and can support mixed types
52- assert select . ( ~s| {"a":[1,2.13,"s",{"a":"b"}]}| ) == % { "a" => [ "1" , 2.13 , "s" , % { "a" => "b" } ] }
53+ assert select . ( ~s| {"a":[1,2.13,"s",{"a":"b"}]}| ) == % { "a" => [ 1 , 2.13 , "s" , % { "a" => "b" } ] }
5354 end
5455
5556 # https://clickhouse.com/docs/sql-reference/data-types/newjson#using-json-in-a-table-column-definition
@@ -67,9 +68,9 @@ defmodule Ch.JSONTest do
6768 conn ,
6869 "SELECT json FROM json_test ORDER BY id"
6970 ) . rows == [
70- [ % { "a" => % { "b" => "42" } , "c" => [ "1" , "2" , "3" ] } ] ,
71+ [ % { "a" => % { "b" => 42 } , "c" => [ 1 , 2 , 3 ] } ] ,
7172 [ % { "f" => "Hello, World!" } ] ,
72- [ % { "a" => % { "b" => "43" , "e" => "10" } , "c" => [ "4" , "5" , "6" ] } ]
73+ [ % { "a" => % { "b" => 43 , "e" => 10 } , "c" => [ 4 , 5 , 6 ] } ]
7374 ]
7475
7576 Ch . query! (
@@ -83,7 +84,7 @@ defmodule Ch.JSONTest do
8384 conn ,
8485 "SELECT json FROM json_test where json.from = 'rowbinary'"
8586 ) . rows == [
86- [ % { "from" => "rowbinary" , "some other" => "json value" , "a" => % { "b" => " 999" } } ]
87+ [ % { "from" => "rowbinary" , "some other" => "json value" , "a" => % { "b" => 999 } } ]
8788 ]
8889
8990 assert Ch . query! ( conn , "select json.a.b, json.a.g, json.c, json.d from json_test order by id" ) . rows ==
@@ -110,9 +111,9 @@ defmodule Ch.JSONTest do
110111 conn ,
111112 "SELECT json FROM json_test"
112113 ) . rows == [
113- [ % { "a" => % { "b" => 42 } , "c" => [ "1" , "2" , "3" ] } ] ,
114+ [ % { "a" => % { "b" => 42 } , "c" => [ 1 , 2 , 3 ] } ] ,
114115 [ % { "a" => % { "b" => 0 } , "f" => "Hello, World!" } ] ,
115- [ % { "a" => % { "b" => 43 } , "c" => [ "4" , "5" , "6" ] } ]
116+ [ % { "a" => % { "b" => 43 } , "c" => [ 4 , 5 , 6 ] } ]
116117 ]
117118 end
118119
@@ -131,9 +132,9 @@ defmodule Ch.JSONTest do
131132 conn ,
132133 "SELECT json FROM json_test"
133134 ) . rows == [
134- [ % { "a" => % { "b" => 42 , "g" => 42.42 } , "c" => [ "1" , "2" , "3" ] , "d" => "2020-01-01" } ] ,
135+ [ % { "a" => % { "b" => 42 , "g" => 42.42 } , "c" => [ 1 , 2 , 3 ] , "d" => "2020-01-01" } ] ,
135136 [ % { "a" => % { "b" => 0 } , "d" => "2020-01-02" , "f" => "Hello, World!" } ] ,
136- [ % { "a" => % { "b" => 43 , "g" => 43.43 } , "c" => [ "4" , "5" , "6" ] } ]
137+ [ % { "a" => % { "b" => 43 , "g" => 43.43 } , "c" => [ 4 , 5 , 6 ] } ]
137138 ]
138139
139140 assert Ch . query! ( conn , "SELECT json.a.b, json.a.g, json.c, json.d FROM json_test" ) . rows == [
@@ -204,24 +205,24 @@ defmodule Ch.JSONTest do
204205 assert Ch . query! ( conn , "SELECT json FROM json_test;" ) . rows == [
205206 [
206207 % {
207- "a" => % { "b" => % { "c" => "42" , "g" => 42.42 } } ,
208- "c" => [ "1" , "2" , "3" ] ,
209- "d" => % { "e" => % { "f" => % { "g" => "Hello, World" , "h" => [ "1" , "2" , "3" ] } } }
208+ "a" => % { "b" => % { "c" => 42 , "g" => 42.42 } } ,
209+ "c" => [ 1 , 2 , 3 ] ,
210+ "d" => % { "e" => % { "f" => % { "g" => "Hello, World" , "h" => [ 1 , 2 , 3 ] } } }
210211 }
211212 ] ,
212- [ % { "d" => % { "e" => % { "f" => % { "h" => [ "4" , "5" , "6" ] } } } , "f" => "Hello, World!" } ] ,
213+ [ % { "d" => % { "e" => % { "f" => % { "h" => [ 4 , 5 , 6 ] } } } , "f" => "Hello, World!" } ] ,
213214 [
214215 % {
215- "a" => % { "b" => % { "c" => "43" , "e" => "10" , "g" => 43.43 } } ,
216- "c" => [ "4" , "5" , "6" ]
216+ "a" => % { "b" => % { "c" => 43 , "e" => 10 , "g" => 43.43 } } ,
217+ "c" => [ 4 , 5 , 6 ]
217218 }
218219 ]
219220 ]
220221
221222 assert Ch . query! ( conn , "SELECT json.^a.b, json.^d.e.f FROM json_test;" ) . rows == [
222- [ % { "c" => "42" , "g" => 42.42 } , % { "g" => "Hello, World" , "h" => [ "1" , "2" , "3" ] } ] ,
223- [ % { } , % { "h" => [ "4" , "5" , "6" ] } ] ,
224- [ % { "c" => "43" , "e" => "10" , "g" => 43.43 } , % { } ]
223+ [ % { "c" => 42 , "g" => 42.42 } , % { "g" => "Hello, World" , "h" => [ 1 , 2 , 3 ] } ] ,
224+ [ % { } , % { "h" => [ 4 , 5 , 6 ] } ] ,
225+ [ % { "c" => 43 , "e" => 10 , "g" => 43.43 } , % { } ]
225226 ]
226227 end
227228
@@ -243,33 +244,33 @@ defmodule Ch.JSONTest do
243244 "a" => % {
244245 "b" => [
245246 % {
246- "c" => "42" ,
247+ "c" => 42 ,
247248 "d" => "Hello" ,
248249 "f" => [ [ % { "g" => 42.42 } ] ] ,
249- "k" => % { "j" => " 1000" }
250+ "k" => % { "j" => 1000 }
250251 } ,
251- % { "c" => "43" } ,
252+ % { "c" => 43 } ,
252253 % {
253254 "d" => "My" ,
254- "e" => [ "1" , "2" , "3" ] ,
255+ "e" => [ 1 , 2 , 3 ] ,
255256 "f" => [ [ % { "g" => 43.43 , "h" => "2020-01-01" } ] ] ,
256- "k" => % { "j" => " 2000" }
257+ "k" => % { "j" => 2000 }
257258 }
258259 ]
259260 }
260261 }
261262 ] ,
262- [ % { "a" => % { "b" => [ "1" , "2" , "3" ] } } ] ,
263+ [ % { "a" => % { "b" => [ 1 , 2 , 3 ] } } ] ,
263264 [
264265 % {
265266 "a" => % {
266267 "b" => [
267- % { "c" => "44" , "f" => [ [ % { "h" => "2020-01-02" } ] ] } ,
268+ % { "c" => 44 , "f" => [ [ % { "h" => "2020-01-02" } ] ] } ,
268269 % {
269270 "d" => "World" ,
270- "e" => [ "4" , "5" , "6" ] ,
271+ "e" => [ 4 , 5 , 6 ] ,
271272 "f" => [ [ % { "g" => 44.44 } ] ] ,
272- "k" => % { "j" => " 3000" }
273+ "k" => % { "j" => 3000 }
273274 }
274275 ]
275276 }
0 commit comments