Packages
postgrex
0.12.1
1.0.0-rc.1
retired
1.0.0-rc.0
retired
0.22.3
0.22.2
0.22.1
0.22.0
0.21.1
0.21.0
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.0
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.13
0.15.12
0.15.11
0.15.10
0.15.9
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.14.0-rc.1
0.14.0-rc.0
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.13.0-rc.0
0.12.2
0.12.1
0.12.0
0.11.2
0.11.1
0.11.0
0.10.0
0.9.1
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.0
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.2
PostgreSQL driver for Elixir
Current section
Files
Jump to
Current section
Files
lib/postgrex/extensions/oid.ex
defmodule Postgrex.Extensions.OID do
@moduledoc false
@oid_senders ~w(oidsend regprocsend regproceduresend regopersend
regoperatorsend regclasssend regtypesend xidsend cidsend)
import Postgrex.BinaryUtils
use Postgrex.BinaryExtension, Enum.map(@oid_senders, &{:send, &1})
@oid_range 0..4294967295
def encode(_, n, _, _) when is_integer(n) and n in @oid_range,
do: <<n :: uint32>>
def encode(%Postgrex.TypeInfo{send: sender}, value, _, _) when is_binary(value) do
raise Postgrex.Error, message: """
you tried to use a binary instead for an oid type (#{sender}) when an
integer was expected. See https://github.com/elixir-ecto/postgrex#oid-type-encoding
"""
end
def encode(type_info, value, _, _) do
raise ArgumentError,
Postgrex.Utils.encode_msg(type_info, value, @oid_range)
end
def decode(_, <<n :: uint32>>, _, _),
do: n
end