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/result.ex
defmodule Postgrex.Result do
@moduledoc """
Result struct returned from any successful query. Its fields are:
* `command` - An atom or a list of atoms of the query command, for example:
`:select`, `:insert`, or `[:rollback, :release]`;
* `columns` - The column names;
* `rows` - The result set. A list of lists, each inner list corresponding to a
row, each element in the inner list corresponds to a column;
* `num_rows` - The number of fetched or affected rows;
* `connection_id` - The OS pid of the PostgreSQL backend that executed the query;
* `messages` - A list of maps of messages, such as hints and notices, sent by the
driver during the execution of the query.
"""
@type t :: %__MODULE__{
command: atom | [atom],
columns: [String.t()] | nil,
rows: [[term] | binary] | nil,
num_rows: integer,
connection_id: pos_integer,
messages: [map()]
}
defstruct [:command, :columns, :rows, :num_rows, :connection_id, messages: nil]
end
if Code.ensure_loaded?(Table.Reader) do
defimpl Table.Reader, for: Postgrex.Result do
def init(%{columns: columns}) when columns in [nil, []] do
{:rows, %{columns: [], count: 0}, []}
end
def init(result) do
{columns, _} =
Enum.map_reduce(result.columns, %{}, fn column, counts ->
counts = Map.update(counts, column, 1, &(&1 + 1))
case counts[column] do
1 -> {column, counts}
n -> {"#{column}_#{n}", counts}
end
end)
{:rows, %{columns: columns, count: result.num_rows}, result.rows}
end
end
end