View Source Changelog

v0.17.4 (2023-12-04)

  • Enhancements
    • Trap exits from connect callback
    • Add configuration to skip querying of comp_oids
    • Handle duplicate column names in Table.Reader implementation

v0.17.3 (2023-08-29)

  • Enhancements

    • Automatically start :ssl application
  • Bug fix

    • Fix SSL configuration docs for failover case

v0.17.2 (2023-07-12)

  • Bug fix
    • Suppress improper list warnings

v0.17.1 (2023-04-13)

  • Bug fix
    • Fix timeout handling on SimpleConnection

v0.17.0 (2023-04-10)

  • Enhancements
    • Add SCRAM server signature verification
    • Support Multirange extension
    • Support lquery and ltree extensions

v0.16.5 (2022-09-20)

  • Enhancements
    • Allow the :search_path to be set for new connections

v0.16.4 (2022-07-29)

  • Enhancements
    • Support Unix sockets in hostname and PGHOST
    • Support infinity value on numerics/decimals (PG14+)
    • Add count to Table.Reader metadata
    • Fix warnings on Elixir v1.15

v0.16.3 (2022-04-27)

  • Enhancements
    • Implement the Table.Reader protocol for query result

v0.16.2 (2022-02-21)

  • Enhancements

    • Add :ping_timeout start option
  • Bug fixes

    • Replication streaming can be resumed after reconnect

v0.16.1 (2022-01-24)

v0.16.0 (2022-01-23)

Require Elixir v1.11+.

  • Enhancements
  • Bug fixes
    • Cancel any pending requests before closing the socket
    • Fix possible crash on getting default opts when PGPORT is invalid but a port is given

v0.15.11 (2021-09-26)

  • Enhancements
    • Support xid8 type introduced in PostgreSQL 13

v0.15.10 (2021-07-27)

  • Enhancements
    • Define child_spec for Postgrex.Notifications
    • Improve error handling when using multiple endpoints
  • Bug fixes
    • Fix dialyzer warnings
    • Fix invalid type error after failover

v0.15.9 (2021-04-24)

  • Enhancements
    • Support the new :endpoints and :target_server_type to make it faster to rotate across multiple instances in cases of failovers
  • Bug fixes
    • Do not warn on undefined JSON library
    • Fix bug when a message which is not a row description, data row, command completion or error message occurs and there is buffer remaining to be processed

v0.15.8 (2021-01-19)

  • Bug fixes
    • Make sure scram authentication method works on Erlang/OTP 24

v0.15.7 (2020-10-17)

  • Enhancements
  • Bug fixes
    • Allow deallocated queries to be re-prepared

v0.15.6 (2020-09-21)

v0.15.5 (2020-06-03)

  • Enhancements
    • Support optional decoding of infinite timestamps
  • Bug fixes
    • Remove cache statements that cannot be described from cache when on a savepoint transaction (such as when inside the SQL sandbox)

v0.15.4 (2020-05-09)

  • Enhancements
    • Fix warnings on Elixir v1.11.0-dev

v0.15.3 (2019-12-11)

  • Enhancements

    • Allow dynamic connection configuration with the :configure for notifications
    • Add :auto_reconnect option for notifications
    • Accept listen commands even if the notifications connection is down or yet to first connect
  • Bug fixes

    • Encode empty arrays in a mechanism compatible with CockroachDB
    • Cleanly terminate connection started with a socket

v0.15.2 (2019-10-08)

  • Enhancements
    • Improve performance of the bootstrap query

v0.15.1 (2019-09-16)

  • Enhancements
    • Add support for microseconds in Postgrex.Interval
    • Reduce bootstrap log message to debug and clarify error message

v0.15.0 (2019-07-18)

Postgrex v0.15+ requires Elixir v1.6+.

  • Enhancements

    • Filter bootstrap more efficiently by avoiding loading tables information on startup
    • Only bootstrap new oids during describe: this means reconnects don't run a bootstrap query and describe runs minimal query
    • Parse Postgrex 12beta new version format
    • Raise error when :ssl is required and not started in child_spec/1
  • Bug fixes

    • Don't encode DateTime, NaiveDateTime or Time unless Calendar.ISO

v0.14.3 (2019-05-08)

  • Enhancements
    • Make bootstrap query compatible with CockroachDB 19.1
    • Improve error message when encoding bad tuple

v0.14.2 (2019-04-12)

  • Bug fixes
    • Fix Elixir deprecation warnings
    • Do not crash when receiving notices during authentication
    • Do not crash when receiving an error (caused by a raise) during query execution

v0.14.1 (2018-11-24)

  • Bug fixes
    • Bump decimal dependency to avoid runtime warnings

v0.14.0 (2018-10-29)

  • Enhancements

    • Postgrex.INET will add a /32 netmask to an IPv4 address and a /128 netmask to an IPv6 address during encoding where netmask: nil. When decoding, a /32 netmask (for IPv4) or /128 netmask (for IPv6) will be removed, resulting in netmask: nil for the struct
    • Add :disconnect_on_error_codes which allows Postgrex to automatically disconnect and then reconnect on certain errors. This is useful when using Postgrex against systems that support failover, which would emit certain errors on failover. This change allow those errors to be recovered from transparently
    • Add :cache_statement to Postgrex.query/4 as a built-in statement cache
    • Support scram-sha-256 authentication from PostgreSQL 10
    • Add Postgrex.prepare_execute/4
    • Automatically re-prepare queries that failed to encode due to a database type change
  • Backwards incompatible changes

    • Invoke encode_to_iodata! instead of encode! in JSON encoder
    • Remove Postgrex.CIDR and use Postgrex.INET to encode both inet/cidr (as PostgreSQL may perform implicit/explicit casting at any time)
    • Postgrex.Time, Postgrex.Date and Postgrex.Timestamp were deprecated and now have been effectively removed
    • Postgrex.execute/4 now always returns the prepared query
    • :pool_timeout is removed in favor of :queue_target and :queue_interval. See DBConnection.start_link/2 for more information

v0.13.4 (2018-01-25)

  • Enhancements

    • Support custom range domains
    • Support custom array domains
    • Add support for UNIX domain sockets via the :socket_dir option
    • Remove warnings on Elixir v1.6
  • Bug fixes

    • Fix encoding of empty ranges
    • Fix Postgrex.Path open/closed byte parity

v0.13.3 (2017-05-31)

  • Enhancements

    • Reload types on unknown oid during prepare
  • Bug fixes

    • Fix default timeout for connection process from 5000s to 15000s

v0.13.2 (2017-03-05)

  • Bug fixes
    • Do not build invalid dates at compilation time on Elixir master

v0.13.1 (2017-02-20)

  • Enhancements

    • Allow naming Postgrex.Notifications server
    • Provide tsvector and lexeme support using binary formats
  • Bug fixes

    • Fix encoding of Decimal values that would be wrong in certain circumstances
    • Add :crypto to applications
    • Specify proper Elixir dependency
    • Restore compatibility with postgres versions prior to 8.4 and with redshift

v0.13.0 (2016-12-17)

  • Enhancements

    • Support built-in geometry types
    • Fallback to PGDATABASE system env for the database
    • Support bit and varbit types
    • Add postgres error code to error messages
    • Support unprepared when using a stream
    • :connect_timeout and :handshake_timeout to configure TCP connect and handshake timeouts
    • Improve numeric encode/decode
  • Bug fixes

    • Quote channel on listen/unlisten
    • Check datetime structs available before defining calendar extension
    • Backoff all awaiting connections if a bootstrap fails to prevent timeout loop
    • Handle idle admin shutdown of postgres backend
    • Fix rebootstrap query to be O(Nlog(N)) instead of O(N^2)
    • Fix encoding of numerical values
  • Backwards incompatible changes

    • :copy_data query option is no longer supported and data can only be copied to the database using a collectable
    • Query struct has removed encoders/decoders and changed param_info/result_info values
    • Extensions now use a new encoder/decoder API based on quoted expressions
    • The :extensions, :decode_binary and :null options in start_link are no longer supported in favor of defining custom types with Postgrex.Types.define(module, extra_extensions, options). Postgrex.Types.define/3 must be called on its own file, outside of any module and function, as it only needs to be defined once during compilation.

v0.12.1 (2016-09-29)

  • Enhancements

    • Support special "char" type
  • Bug fixes

    • Limit re-bootstrap to one connection at a time
    • Fix re-bootstrap of new composite types that use old types

v0.12.0 (2016-09-06)

  • Enhancements
    • Raise DBConnection.ConnectionError on connection error
    • Use send encoding to determine citext encoding
    • Use Map in favor of deprecated modules (to avoid warnings on v1.4)
    • Run rebootstrap test synchronously on every connect
    • Add support for Elixir 1.3+ Calendar types

v0.11.2 (2016-06-16)

  • Enhancements

    • Add support for COPY TO STDOUT and COPY FROM STDIN
    • Support packets bigger than 64MB
    • Introduce mode: :savepoint for prepare/execute/close that allows wrapping a request in a savepoint so that an error does not fail the transaction
    • Introduce streaming queries
    • Add :decode_binary option which is either :copy (default) or :reference.
  • Bug fixes

    • Consistently convert the port number to integer
    • Remove type server entry on disconnect

v0.11.1 (2016-02-15)

  • Enhancements

    • Support PgBouncer transaction/statement pooling
    • Include more information in error messages
    • Add support for built-in postgres point type
    • Add Postgrex.child_spec/1
    • Allow custom encoding/decoding of postgres' NULL on a per query basis
  • Bug fixes

    • Correctly pad decimal digits during encoding

v0.11.0 (2016-01-21)

  • Enhancements

    • Rely on DBConnection. This means better performance by copying less data between processes, faster encoding/decoding, support for transactions, after_connect hooks, connection backoff, logging, prepared queries, the ability to use both Poolboy and Sojourn as pools out of the box, and more
  • Backwards incompatible change

v0.10.0 (2015-11-17)

  • Enhancements

    • Improve error message on encoding/decoding failures
    • Add network types such as: inet, cidr and macaddr
    • Improve TCP error messages
    • Support PGPORT environment variable
    • Improve decoding performance by caching extension information
    • Improve query performance by decoding in the client process hence not blocking the connection
    • Raise if number of parameters to query is wrong
  • Bug fixes

    • Correctly handle errors in connection initialization with sync_connect: true
    • Do not fail on custom error codes
    • Correctly handle large number of parameters, also fixes some protocol issues where unsigned integers were treated as signed

v0.9.1 (2015-07-14)

  • Enhancements
    • Revert client side decoding as affects performance negatively (around 15% slower)
    • Cast floats and integers to decimal if a decimal is requested

v0.9.0 (2015-07-12)

  • Enhancements

    • Cached type bootstrapping for less memory usage and faster connection set up
    • The result set is now decoded in the calling process to reduce time spent in the connection process
    • Add a decode: :manual option to Postgrex.query/4 and the function Postgrex.decode/2 for manually decoding the result
    • Add :sync_connect option to Postgrex.start_link/1
  • Bug fixes

    • Correctly handle extension types created inside schemas
  • Backwards incompatible changes

    • Each row in Postgrex.Result.rows is now a list of columns instead of a tuple

v0.8.4 (2015-06-24)

  • Bug fixes
    • Fix version detection

v0.8.3 (2015-06-22)

  • Enhancements
    • Add Postgrex.Extensions.JSON extension for json and jsonb types
    • Set suitable TCP buffer size automatically

v0.8.2 (2015-06-01)

  • Enhancements

    • Add :socket_options option to Postgrex.start_link/1
    • Improved performance regarding binary handling
    • Add hstore support
  • Backwards incompatible changes

    • Remove :async_connect option and make it the default

v0.8.1 (2015-04-09)

  • Enhancements

    • Keep the postgres error code in :pg_code
    • Support oid types and all its aliases (regclass etc)
  • Backwards incompatible changes

    • Rename :msec field to :usec on Postgrex.Time and Postgrex.Timestamp
  • Bug fixes

    • Fix numeric encoding for fractional numbers with less digits than the numeric base
    • Support encoding timetz type
    • Fix time and timestamp off-by-one bounds

v0.8.0 (2015-02-26)

  • Enhancements

    • Add extensions
    • Encode/decode ranges generically
    • Add bounds when encoding integer types to error instead of overflowing the integer
    • Log unhandled PostgreSQL errors (when it cant be replied to anyone)
    • Add support for enum types
    • Add support for citext type
    • Add microseconds to times and timestamps
    • Add the ability to rebootstrap types for an open connection
  • Backwards incompatible changes

    • Remove the support for type-hinted queries
    • Remove encoder, decoder and formatter functions, use extensions instead
    • Use structs for dates, times, timestamps, interval and ranges
    • Change the default timeout for all operations to 5000ms
    • Show PostgreSQL error codes as their names instead

v0.7.0 (2015-01-20)

  • Enhancements

    • Add asynchronous notifications through listen and unlisten
    • Add support for range types
    • Add support for uuid type
    • Add :async_connect option to start_link/1
  • Bug fixes

    • Fix encoding nil values in arrays and composite types

v0.6.0 (2014-09-07)

  • Enhancements

    • Queries can be constructed of iodata
    • Support "type hinted" queries to save one client-server round trip which will reduce query latency
  • Backwards incompatible changes

    • Postgrex.Error postgres field is converted from keyword list to map
    • Postgrex.Connect.query params parameter is no longer optional (pass an empty list if query has no parameters)
    • The timeout parameter for all functions have been moved to a keyword list with the key :timeout

v0.5.5 (2014-08-20)

  • Enhancements
    • Reduce the amount of intermediary binaries constructed with the help of iodata

v0.5.4 (2014-08-04)

v0.5.3 (2014-07-13)

v0.5.2 (2014-06-18)

v0.5.1 (2014-05-24)

  • Backwards incompatible changes

v0.5.0 (2014-05-01)

v0.4.2 (2014-04-21)

  • Enhancements
    • Add timeouts to all synchronous calls. When a timeout is hit an exit error will be raised in the caller process and the connection process will exit
    • Add automatic fallback to environment variables PGUSER, PGHOST and PGPASSWORD

v0.4.0 (2014-01-16)

  • Enhancements
    • Numerics decode and encode to Decimal

v0.3.1 (2014-01-15)

  • Enhancements
    • Compact state before printing to logs and hide password
    • Concurrency support, safe to use connection from multiple processes concurrently

v0.3.0 (2013-12-16)

  • Bug fixes

    • Don't try to decode values of text format
  • Backwards incompatible changes

    • Types are stored as binaries instead of atoms, update your custom encoders and decoders

v0.2.1 (2013-12-10)

  • Enhancements

    • Add support for SSL
  • Bug fixes

    • Fix decoding of unknown type when using custom decoder

v0.2.0 (2013-11-14)

  • Enhancements

    • Floats handles NaN, inf and -inf
    • Add support for numerics
    • Custom encoders and decoders works on elements in arrays
    • Add support for composite types
    • Add functions that raise on error
  • Bug fixes

    • INSERT query works with extended query parameters
    • Return proper num_rows on PostgreSQL 8.4
    • Fix race condition
  • Backwards incompatible changes

    • Simplify custom decoding and encoding with default function

v0.1.0 (2013-10-14)

First release!