-type epgsql_type() :: atom() | {array, atom()} | {unknown_oid, integer()}.

-record(column,    {name :: binary(),
                    type :: epgsql_type(),
                    size :: -1 | pos_integer(),
                    modifier :: -1 | pos_integer(),
                    format :: integer()}).

-record(statement, {name :: string(),
                    columns :: [#column{}],
                    types :: [epgsql_type()]}).

-record(error,  {severity :: fatal | error | atom(), %TODO: concretize
                 code :: binary(),
                 message :: binary(),
                 extra :: [{detail, binary()}
                           | {hint, binary()}
                           | {position, binary()}]}).