Skip to content

Commit

Permalink
Add tagged parameters to encode.
Browse files Browse the repository at this point in the history
  • Loading branch information
kzemek committed Aug 24, 2017
1 parent c654c88 commit b697a9e
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
4 changes: 4 additions & 0 deletions lib/mariaex/query.ex
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,10 @@ defimpl DBConnection.Query, for: Mariaex.Query do

defp encode_param(nil, _binary_as),
do: {1, :field_type_null, ""}
defp encode_param({:binary, bin}, _binary_as) when is_binary(bin),
do: encode_param(bin, :field_type_blob)
defp encode_param({:string, bin}, _binary_as) when is_binary(bin),
do: encode_param(bin, :field_type_var_string)
defp encode_param(bin, binary_as) when is_binary(bin),
do: {0, binary_as, << to_length_encoded_integer(byte_size(bin)) :: binary, bin :: binary >>}
defp encode_param(int, _binary_as) when is_integer(int),
Expand Down
16 changes: 16 additions & 0 deletions test/query_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,22 @@ defmodule QueryTest do
assert query("SELECT active, tiny from #{table} WHERE id = ?", [2]) == [[1, 0]]
end

test "tagged binary and string tests", context do
table = "tagged_test"
binary = 15..0 |> Enum.into([]) |> IO.iodata_to_binary()
string = "☀☁☂☃☄★☆☇☈☉☊☋☌☍☎☏"

:ok = query("CREATE TABLE #{table} (id serial, bin binary(16), str varchar(16))", [])

:ok = query(~s{INSERT INTO #{table} (id, bin, str) VALUES (?, ?, ?)},
[1, {:binary, binary}, {:string, string}])

assert query("SELECT bin, str from #{table} WHERE id = ?", [1]) == [[binary, string]]

assert query("SELECT bin, str from #{table} WHERE id = ? AND bin = ? AND str = ?",
[1, {:binary, binary}, {:string, string}]) == [[binary, string]]
end

test "support numeric data types using prepared statements", context do
integer = 16
float = 0.1
Expand Down

0 comments on commit b697a9e

Please sign in to comment.