CHANGES 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. In 4.3.0
  2. * Erlang 22 compatibility is tested; support for Erlang 17 was dropped. Last
  3. version that supports Erlang 17 is 4.2.1 (#195)
  4. * Fixed some corner-case bug in streaming replication (#181)
  5. * It's now possible to set-up JSON encoder/decoder callback for json/jsonb
  6. datatypes (#197)
  7. * Performance micro-optimizations on hot paths (#177)
  8. * Use PostgreSQL 10 for Travis tests (#195)
  9. * Improved connection error handling (#183)
  10. * TLS certificates used in tests had expired (epgsql project is more than
  11. 10 years old!), so, new ones were created (#187)
  12. * Some typespecs fixed
  13. In 4.2.1
  14. * Bug fix for `epgsql:connect(proplist())`
  15. In 4.2.0
  16. * Support for R16 was completely dropped. Maps are now used internally instead of proplists
  17. * Nested `record` datatype decoding bug, introduced in 4.0.0, was fixed
  18. * Added tsrange, tstzrange, daterange types
  19. * Passwords are obfuscated before they sent to connection process. This is to avoid plain
  20. DB passwords to be dumped to SASL crash log
  21. * Password can be provided as a fun: `fun ( () -> iodata() )`
  22. * `platform_define` macroses were simplified. It's now possible to build epgsql even without
  23. rebar on all supported OTP versions
  24. In 4.1.0
  25. * Fix Erlang 21 `get_stacktrace/0` warnings
  26. * Fix broken backward-compatibility in `bpchar` datatype
  27. * Fix compatibility issues between the newest rebar3 and Erlang R16
  28. In 4.0.1
  29. * Minor build bug fixed
  30. In 4.0.0
  31. Changes:
  32. * Make epgsql commands pluggable (see pluggable_commands.md).
  33. Now we are not limited only by API functions provided by epgsql (equery/squery/prepared_query etc),
  34. but may create own commands as a plugins. Still, understanding of PostgreSQL network protocol needed
  35. to be able to do so.
  36. * Make epgsql datatype encoding/decdoding pluggable (see pluggable_types.md).
  37. Now we are able to add or tweak codecs for existing as well as custom PostgreSQL
  38. datatypes (like datetime, varchar, enum, arrays etc).
  39. XXX: Highly recommend to add `{codecs, []}` option to your epgsql:connect/X calls if you don't use
  40. PostGIS and hstore datatypes: this will reduce connection setup time.
  41. * epgsql internals had a huge refactoring (4,000 additions and 1,750 deletions for ~5500 LOC project).
  42. Code now is much more modular, documented and have a lot of internal typespecs. Performance
  43. improvements are also expected.
  44. * Now we try to use iolists as much as possible and avoid binary and string concatenations when ever possible.
  45. Expect noticeable performance improvements for large BYTEA / TEXT / VARCHAR / JSON / JSONB etc fields.
  46. * Extended and documented epgsql:with_transaction/3.
  47. Now it's possible to preserve original exception's stacktrace, finally!
  48. * macaddr and macaddr8 datatypes support added
  49. * Float datatype support was extended with `nan`, `minus_infinity`, `plus_infinity`
  50. * elvis code style check was added to our travis pipeline
  51. * Brand-new PostgreSQL 10 scram-sha-256 auth method added
  52. (see https://www.postgresql.org/docs/10/static/auth-methods.html#AUTH-PASSWORD and
  53. https://www.postgresql.org/docs/current/static/sasl-authentication.html)
  54. * A lot of typespecs were rewritten and lots of internal typespecs were added
  55. Incompatibilities:
  56. * Some unexpected performance issues may appear, but we expect performance improvements, especially
  57. for a large result sets (when a lot of rows are returned by a query) and for large string/json/blob
  58. query parameters
  59. * Undocumented epgsql:update_type_cache/2 API was changed
  60. * A lot of typespecs were updated. Some typespecs were deprecated or moved from epgsql.erl to other
  61. modules. So, some new dialyzer warnings might pop-up
  62. * Some new error messages might be returned, especially from epgsql:connect/X functions
  63. * Memory consumption per-connection might slightly grow because we maintain per-connection OID<->codec
  64. mapping table, which might be quite big in some cases. This also may produce bigger error_logger
  65. reports in case of epgsql connection process crashes.
  66. * Some exported .hrl files have been changed. #column{} and #statement{} record definitions were extended.
  67. * PostGIS users might be affected by cleanup of ewkb.erl and epgsql_geometry.hrl
  68. * Streaming replication users should pay extra attention. No tests were broken, but a lot of
  69. modifications were made to this code.
  70. * Passing integer / atom / float as a value of a text / varchar / bytea query parameter is now
  71. deprecated (so, `epgsql:equery(C, "SELECT $1::text", [my_atom])` will still work but is not recommended)
  72. * Redshift and CockroachDB users might expirience some problems. Please, report bugs!
  73. In 3.4.0
  74. * Use rebar3 as default build and test tool
  75. * Move tests to common test; launch test postgresql server from Erlang
  76. * Compatibility with Erlang 20
  77. * `ssl_options` connection option fixed
  78. * New types: int8range and int4range
  79. In 3.3.0
  80. * Streaming replication protocol support (epgsql may act like PostgreSQL slave)
  81. https://github.com/epgsql/epgsql/blob/devel/streaming.md
  82. * Connection options now may be passed as map()
  83. * More error extra data fields returned in #error{extra}
  84. http://www.postgresql.org/docs/current/interactive/protocol-error-fields.html
  85. * Prefer non-localized severity in #error{severity} when available
  86. * Added `set_notice_receiver/2` function to dynamically change receiver for asynchronous notifications
  87. * Asynchronous notifications receiver may be set to registered process name (atom)
  88. * `get_cmd_status/1` function added
  89. * Fixed return value of `DELETE ... RETURNING ..` in case when 0 rows were deleted
  90. (now returns `{ok, 0, Columns, []}` instead of `{ok, 0}`)
  91. * TCP socket implicitly closed when epgsql connection process terminates
  92. * Some typespecs fixed
  93. In 3.2.0:
  94. * #error.codename (more readable errors)
  95. * Redshift support (by allowing dynamic typecache update fail)
  96. * Aggregate small binary packets to one in epgsql_sock (network performance improvement)
  97. * Handle situations, when server initiate connection close
  98. * prepared_query APIs (useful when you need to execute one query many times with different parameters)
  99. * array of records type support
  100. * jsonb type support
  101. In 3.1.1:
  102. * It dialyzes happily now
  103. In 3.1.0:
  104. * Deal with int4range type.
  105. In 3.0.0:
  106. * Renamed everything to use the epgsql namespace.