name.ex (810B)
1 defmodule Postgrex.Extensions.Name do 2 @moduledoc false 3 import Postgrex.BinaryUtils, warn: false 4 use Postgrex.BinaryExtension, send: "namesend" 5 6 def init(opts), do: Keyword.fetch!(opts, :decode_binary) 7 8 def encode(_) do 9 quote location: :keep, generated: true do 10 name when is_binary(name) and byte_size(name) < 64 -> 11 [<<byte_size(name)::int32()>> | name] 12 13 other -> 14 msg = "a binary string of less than 64 bytes" 15 raise DBConnection.EncodeError, Postgrex.Utils.encode_msg(other, msg) 16 end 17 end 18 19 def decode(:reference) do 20 quote location: :keep do 21 <<len::int32(), name::binary-size(len)>> -> name 22 end 23 end 24 25 def decode(:copy) do 26 quote location: :keep do 27 <<len::int32(), name::binary-size(len)>> -> :binary.copy(name) 28 end 29 end 30 end