Skip to content

Commit c0b77f3

Browse files
committed
manual opts
1 parent 0fad98e commit c0b77f3

File tree

2 files changed

+57
-21
lines changed

2 files changed

+57
-21
lines changed

test/ch/json_test.exs

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,7 @@ defmodule Ch.JSONTest do
22
use ExUnit.Case
33

44
setup do
5-
conn =
6-
start_supervised!(
7-
{Ch,
8-
database: Ch.Test.database(),
9-
settings: [
10-
enable_json_type: 1,
11-
input_format_binary_read_json_as_string: 1,
12-
output_format_binary_write_json_as_string: 1
13-
]}
14-
)
5+
conn = start_supervised!({Ch, database: Ch.Test.database(), settings: [enable_json_type: 1]})
156

167
on_exit(fn ->
178
Ch.Test.sql_exec("DROP TABLE test", [], database: Ch.Test.database())
@@ -31,7 +22,14 @@ defmodule Ch.JSONTest do
3122
('{"a" : {"b" : 43, "e" : 10}, "c" : [4, 5, 6]}')
3223
""")
3324

34-
assert Ch.query!(conn, "SELECT json FROM test").rows == [
25+
assert Ch.query!(
26+
conn,
27+
"SELECT json FROM test",
28+
_no_params = [],
29+
settings: [
30+
output_format_binary_write_json_as_string: 1
31+
]
32+
).rows == [
3533
[%{"a" => %{"b" => "42"}, "c" => ["1", "2", "3"]}],
3634
[%{"f" => "Hello, World!"}],
3735
[%{"a" => %{"b" => "43", "e" => "10"}, "c" => ["4", "5", "6"]}]
@@ -48,17 +46,31 @@ defmodule Ch.JSONTest do
4846
('{"a" : {"b" : 43, "e" : 10}, "c" : [4, 5, 6]}')
4947
""")
5048

51-
assert Ch.query!(conn, "SELECT json FROM test").rows == [
49+
assert Ch.query!(
50+
conn,
51+
"SELECT json FROM test",
52+
_no_params = [],
53+
settings: [
54+
output_format_binary_write_json_as_string: 1
55+
]
56+
).rows == [
5257
[%{"a" => %{"b" => 42}, "c" => ["1", "2", "3"]}],
5358
[%{"a" => %{"b" => 0}, "f" => "Hello, World!"}],
5459
[%{"a" => %{"b" => 43}, "c" => ["4", "5", "6"]}]
5560
]
5661
end
5762

5863
test "Creating JSON using CAST from String", %{conn: conn} do
59-
assert Ch.query!(conn, """
60-
SELECT '{"a" : {"b" : 42},"c" : [1, 2, 3], "d" : "Hello, World!"}'::JSON AS json
61-
""").rows == [
64+
assert Ch.query!(
65+
conn,
66+
"""
67+
SELECT '{"a" : {"b" : 42},"c" : [1, 2, 3], "d" : "Hello, World!"}'::JSON AS json
68+
""",
69+
_no_params = [],
70+
settings: [
71+
output_format_binary_write_json_as_string: 1
72+
]
73+
).rows == [
6274
[%{"a" => %{"b" => "42"}, "c" => ["1", "2", "3"], "d" => "Hello, World!"}]
6375
]
6476
end
@@ -69,8 +81,11 @@ defmodule Ch.JSONTest do
6981
"""
7082
SELECT (tuple(42 AS b) AS a, [1, 2, 3] AS c, 'Hello, World!' AS d)::JSON AS json
7183
""",
72-
[],
73-
settings: [enable_named_columns_in_function_tuple: 1]
84+
_no_params = [],
85+
settings: [
86+
enable_named_columns_in_function_tuple: 1,
87+
output_format_binary_write_json_as_string: 1
88+
]
7489
).rows == [[%{"a" => %{"b" => "42"}, "c" => ["1", "2", "3"], "d" => "Hello, World!"}]]
7590
end
7691

@@ -80,8 +95,12 @@ defmodule Ch.JSONTest do
8095
"""
8196
SELECT map('a', map('b', 42), 'c', [1,2,3], 'd', 'Hello, World!')::JSON AS json;
8297
""",
83-
[],
84-
settings: [enable_variant_type: 1, use_variant_as_common_type: 1]
98+
_no_params = [],
99+
settings: [
100+
enable_variant_type: 1,
101+
use_variant_as_common_type: 1,
102+
output_format_binary_write_json_as_string: 1
103+
]
85104
).rows == [[%{"a" => %{"b" => "42"}, "c" => ["1", "2", "3"], "d" => "Hello, World!"}]]
86105
end
87106

@@ -96,7 +115,14 @@ defmodule Ch.JSONTest do
96115
('{"a" : {"b" : 43, "e" : 10, "g" : 43.43}, "c" : [4, 5, 6]}')
97116
""")
98117

99-
assert Ch.query!(conn, "SELECT json FROM test").rows == [
118+
assert Ch.query!(
119+
conn,
120+
"SELECT json FROM test",
121+
_no_params = [],
122+
settings: [
123+
output_format_binary_write_json_as_string: 1
124+
]
125+
).rows == [
100126
[%{"a" => %{"b" => 42, "g" => 42.42}, "c" => ["1", "2", "3"], "d" => "2020-01-01"}],
101127
[%{"a" => %{"b" => 0}, "d" => "2020-01-02", "f" => "Hello, World!"}],
102128
[%{"a" => %{"b" => 43, "g" => 43.43}, "c" => ["4", "5", "6"]}]

test/ch/row_binary_test.exs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,6 @@ defmodule Ch.RowBinaryTest do
212212
{"Decimal(23, 11)", {:decimal, _size = 128, _scale = 11}},
213213
{"Bool", :boolean},
214214
{"String", :string},
215-
{"JSON", :json},
216215
{"FixedString(2)", {:fixed_string, _size = 2}},
217216
{"FixedString(22)", {:fixed_string, _size = 22}},
218217
{"FixedString(222)", {:fixed_string, _size = 222}},
@@ -252,6 +251,17 @@ defmodule Ch.RowBinaryTest do
252251
test "preserves order" do
253252
assert decode_types(["UInt8", "UInt16"], _opts = []) == [:u8, :u16]
254253
end
254+
255+
test "JSON raises without options" do
256+
assert_raise ArgumentError,
257+
~r/Native JSON decoding is not yet supported/,
258+
fn -> decode_types(["JSON"], _opts = []) end
259+
end
260+
261+
test "JSON becomes string_json with options" do
262+
opts = [settings: [output_format_binary_write_json_as_string: 1]]
263+
assert decode_types(["JSON"], opts) == [:string_json]
264+
end
255265
end
256266

257267
describe "decode_rows/1" do

0 commit comments

Comments
 (0)