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