Packages
postgrex
0.22.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
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
lib/postgrex/extensions/ltxtquery.ex
defmodule Postgrex.Extensions.Ltxtquery do
@moduledoc false
import Postgrex.BinaryUtils, warn: false
use Postgrex.BinaryExtension, type: "ltxtquery"
@impl true
def init(opts), do: Keyword.get(opts, :decode_binary, :copy)
# ltxtquery binary formats are versioned
# https://github.com/postgres/postgres/blob/master/contrib/ltree/ltxtquery_io.c
@impl true
def encode(_state) do
quote location: :keep, generated: true do
bin when is_binary(bin) ->
version = 1
size = byte_size(bin) + 1
[<<size::int32(), version::int8()>> | bin]
end
end
@impl true
def decode(:reference) do
quote location: :keep do
<<len::int32(), bin::binary-size(len)>> ->
<<_version::int8(), ltxtquery::binary>> = bin
ltxtquery
end
end
def decode(:copy) do
quote location: :keep do
<<len::int32(), bin::binary-size(len)>> ->
<<_version::int8(), ltxtquery::binary>> = bin
:binary.copy(ltxtquery)
end
end
end