diff --git a/test/ch/connection_test.exs b/test/ch/connection_test.exs index ff00898..d97c443 100644 --- a/test/ch/connection_test.exs +++ b/test/ch/connection_test.exs @@ -582,6 +582,32 @@ defmodule Ch.ConnectionTest do assert_raise ArgumentError, fn -> Ch.query!(conn, "SELECT o FROM json") end end + test "json as string", %{conn: conn} do + assert Ch.query!(conn, ~s|select '{"answer":42}'::JSON::String|, [], + settings: [enable_json_type: 1] + ).rows == [[~s|{"answer":"42"}|]] + + Ch.query!(conn, "CREATE TABLE test_json_as_string(json JSON) ENGINE = Memory", [], + settings: [enable_json_type: 1] + ) + + Ch.query!( + conn, + "INSERT INTO test_json_as_string(json) FORMAT RowBinary", + _rows = [[Jason.encode_to_iodata!(%{"a" => 42})], [Jason.encode_to_iodata!(%{"b" => 10})]], + types: [:string], + settings: [ + enable_json_type: 1, + input_format_binary_read_json_as_string: 1 + ] + ) + + assert Ch.query!(conn, "select json::String from test_json_as_string", [], + settings: [enable_json_type: 1] + ).rows == + [[~s|{"a":"42"}|], [~s|{"b":"10"}|]] + end + # TODO enum16 test "enum8", %{conn: conn} do