-
Notifications
You must be signed in to change notification settings - Fork 78
/
CHANGELOG
293 lines (243 loc) · 10.4 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
v? upcoming
=====================
v0.29.0 2024-11-05
=====================
* fix: enable SNI (thanks @conradludgate)
* Drop official support for Postgres v11
* Support encoding PG::Interval params (thanks @Blacksmoke16)
* Encode Crystal enum args as integers (thanks @jgaskins)
* Handle Array(Bytes) encoding for query params containing non-Unicode text (thanks @jgaskins)
* Avoid calling LibC.getuid on windows
v0.28.0 2023-12-21
=====================
* Add support for application_name in UIR paramaters and the
PGAPPNAME env var (thanks @cyberdelia)
* Fix error when used with non-postgres database drivers (thanks @ysbaddaden)
* Update crystal-db to 0.13 (thanks @jgaskins, @bcardiff)
v0.27.0 2023-06-25
=====================
* Add support for LSN data type (thanks @louiseGrandjonc)
* Add support for ENV vars (PGPORT, PGUSER, PGHOST, PGDATABASE, PGPASS) and
pgpass files (thanks @wishdev)
* timestamptz now parse into the connection's timezone if set (thanks @jgaskins)
* add `sslmode=disable` to prevent TLS negotiation (thanks @ellmetha)
* update to crystal-db 0.12.0 (refactor connection factory) (thanks @bcardiff)
v0.26.0 2022-01-27
=====================
* Update crystal-db to 0.11. This requires Crystal 1.0.0 or later.
* Drop official support for all 9.x versions.
v0.25.0 2022-01-27
=====================
* Add defense-in-depth for CVE-2021-23222
* Add scram-sha-256-plus "scram with channel binding". If your version of
postgres does support this, you should provide only this as your
`auth_methods` in order to exclude the non-plus/non-channel-binding version
of scram, as it's possible for a MITM to downgrade if the non-plus version is
on the list. However this driver can't remove support for the non-plus version
since not all supported versions of postgres support channel binding.
* Give a name to error notice field V (the same as S/severity but not localized)
* Add support for decoding arrays of UUIDs (thanks @jwoertink)
* Allow socket connections to have paramaters from URIs (thanks @grepsedawk)
* Allow blocking connections to PG.connect_listen
* Properly encode null values in arrays (thanks @robcole and @grepsedawk)
v0.24.0 2021-07-21
=====================
* Decode json columns as JSON::PullParser instead of JSON::Any (thanks @matthewmcgarvey)
v0.23.2 2021-03-27
=====================
* Greatly reduce CPU consumption while reading result sets (thanks @jgaskins)
v0.23.1 2021-01-30
=====================
* update for Crystal 0.36.0 (thanks @bcardiff)
v0.23.0 2021-01-12
=====================
* (breaking) Numeric#to_f for NaN now returns a NaN float instead of 0.0
* add auth_methods config setting to control which methods the client can
accpet. Defaults to `scram-sha-256` and `md5`. Also optionally adds support
for `cleartext`, but it is not on by default as simply having this on can let
MITM attackers steal your password. (thanks @straight-shoota)
* add support for decoding interval type (thanks @pascalbetz)
* Postgres 13 is now officially supported and tested on CI and Postgres 9.4
support has ended, though as the postgres protocol itself hasn't changed,
it still probably works.
* Fix overflow for Numeric#to_f for numerics with many digits. This change
potentially introduces more floating point errors. If you require full
precision use the optional big rational conversion instead.
* Read Slice(UInt8) as String if given as type. This allows text datayptes with
unstable OIDs such as citext to be more easliy used. (thanks @matthewmcgarvey)
* Add UUIDs to array decoders (thanks @jwoertink)
v0.22.1 2020-10-12
=====================
* fix shard.yml mistake in v0.22.0
v0.22.0 2020-10-07
=====================
* (breaking) UUIDs decode into UUID type instead of String (thanks @jgaskins)
* Update crystal-db to 0.10 for logging support (thanks @bcardiff)
v0.21.1 2020-06-09
=====================
* Support Crystal v0.35.0 (thanks @bcardiff)
v0.21.0 2020-04-08
=====================
* Support Crystal v0.34.0 (thanks @straight-shoota, @bcardiff)
* Update crystal db support to 0.9.0 (thanks @bcardiff)
* Add Error Handling sample in README (thanks @ArtLinkov)
v0.20.0 2019-12-17
=====================
* bugfix: negative bigint decoding (thanks @asterite)
* Update crystal db support to 0.8.0 (thanks @bcardiff)
v0.19.0 2019-09-21
=====================
* fix ipv6 hostnames (thanks @j8r)
* Update crystal db support to 0.7.0 (thanks @bcardiff)
v0.18.1 2019-08-09
=====================
* bugfix: Fix Time encoding for non-zero-offset times (thanks @straight-shoota)
v0.18.0 2019-08-04
=====================
* Add SCRAM-SHA-256 support
* NOTE: SASLPrep is missing as of this realease, so not all passwords work
* Fix reading large number of UUIDs (thanks @asterite)
* Correctly encode timestamp values to consider microseconds (thanks @asterite)
* Update crystal db support to 0.6.0 (thanks @bcardiff)
v0.17.0 2019-07-19
=====================
* Add `Enumerable` channels overload for `PG.connect_listen` (thanks @vladfaust)
* Fixes Time.new deprecation warning (thanks @bcardiff)
* Ensure PQ::Connection#do_close does not raise (thanks @bcardiff)
* Fix IOError on closed connection (thanks @omarroth)
* Array fixes (thanks @asterite)
* properly handle exceptions during decoding array
* add Numeric#inspect
* prevent decoding array of numeric as floats
* internal: map each type to decoder
v0.16.1 2019-04-15
=====================
* Support Crystal v0.28.0 (thanks @bcardiff)
* Fix support for reading a NoticeResponse at row start (thanks @straight-shoota)
v0.16.0 2019-04-02
=====================
* Support connection negotiation without BackendKeyData frame (thanks @rx14)
* Make connection client encoding check case insesitive (thanks @yumoose)
* Support client cert auth (thanks @sanderhahn)
* Fix reading null when expecting array (thanks @straight-shoota)
* Fix encoding string arrays with special characters (thanks @straight-shoota)
* Fix version parser (thanks @straight-shoota)
v0.15.0 2018-06-15
=====================
* Support Crystal v0.25 (thanks @greenbigfrog)
* fix PG::Numeric#to_s on numbers with >= weight than ndigits, eg 800000 (#133)
* fix PG::Numeric#to_s on numbers where the `digits` expected to be zero padded
and other cases (#134)
* Set cause when raising DB::ConnectionRefused (thanks @rx14)
v0.14.1 2017-12-26
=====================
* Update crystal db support to 0.5.0 (thanks @bcardiff)
v0.14.0 2017-12-26
=====================
* Support Crystal v0.24, breaks support for older versions
* Support Postgres v10.0+ new two digit version scheme in #version
v0.13.4 2017-10-16
=====================
* fix CI (thanks @waghanza)
* bugfix: make sure to read all nulls (thanks @ZeWebDev)
* bugfix: no longer hangs on unhandeled exceptions (thanks @bigtunacan)
v0.13.3 2017-03-21
=====================
* Increased precision when encoding times
* Use DB.connect in ListenConnection to avoid creating a connection pool (thanks @bcardiff)
* Updates to use db 0.4.0. (thanks again @bcardiff)
v0.13.2 2017-02-21
=====================
* update to crystal 0.21.0 (thanks @felipeelias)
v0.13.1 2016-12-25
=====================
* update to crystal 0.20.3 (thanks @bcardiff)
v0.13.0 2016-12-21
=====================
* Update to support crystal-db's connection pooling (thanks @bcardiff)
v0.12.0 2016-12-10
=====================
* Uses crystal-db api (thanks @asterite)
v0.11.0 2016-09-04
=====================
* Adds dedicated LISTEN connection
v0.10.0 2016-09-03
=====================
* Adds support for array types
v0.9.1 2016-08-23
=====================
* Wrap query execution in a mutext to prevent protocol desynchronization
v0.9.0 2016-07-26
=====================
* remove support for plaintext auth to prevent downgrade mitm attacks
* fix for multibyte characters in query strings
v0.8.0 2016-06-17
=====================
* (breaking) geo points now all have own types (thanks @asterite)
* support crystal 0.18
v0.7.1 2016-05-15
=====================
* (breaking) unknown oids decoded as byte slices instead of string
* fix shard.yml
* Adds optional BigRational extension to PG::Numeric
* bugfixes in protocol
* adds geo types
v0.7.0 2016-05-05
=====================
new features
* 100% crystal, using crystal's native async io (no longer using libpq)
* each Connection#exec form can take a block, and stream the rows as they
come in. This does not store any rows in memory and is very fast.
* adds #on_notification for listen/notify support
incompatable changes:
* Result.each now yields the entire row and an array of fields
* The notice callback now yields an entire
* Error classes have changed, some removed
* "db_name" changed to "dbname" in hash #initialize to match postgres
* on_notice callback gets an object instead of just a string
v0.6.1 2016-05-15
====================
* fix shard.yml
v0.6.0 2016-05-04
====================
* Adds Adds on_notice callback (thanks @radiospiel)
* Adds PG::Numeric for numeric/decimal support
* Note: this will be the last release that links LibPQ
v0.5.0 2015-12-21
====================
* Adds Result#each which allows to map a PG result to a struct or class,
avoiding temporary memory structures (thanks @ysbaddaden)
* Connection#exec is now async (thanks @ysbaddaden)
v0.4.3 2015-10-21
====================
* Support for byta (thanks @jhass)
* `Connection`s can be made with a hash of params (thanks @tebakane)
* Support Crystal 0.9.0 and bytea encoding fix (thanks @technorama)
v0.4.2 2015-09-29
====================
* fix UUIDs to have appropriate dashes
v0.4.1 2015-09-29
====================
* Fix UUID type
v0.4.0 2015-09-19
====================
* Fix and require Crystal 0.8.0
* Allow #to_hash with typed querying interface (thanks @werner)
v0.3.2 2015-08-28
====================
* Connection#exec_all (thanks @solisoft)
* BUGFIX: bigint and smallint were broken since v0.3.0
v0.3.1 2015-08-25
====================
* BUGFIX: previous release would give wrong reults under --release
* 3x fater again on time parsing, total ~10x faster than text format
v0.3.0 2015-08-24
====================
* switch to much faster binary result format (time parsing 3.4x faster than text)
* decoders are now pluggable with PG::Decoder.register_decoder
v0.2.0 2015-07-25
====================
* Add Connection#escape_literal and Connection#escape_identifier
v0.1.0 2015-06-14
====================
* first named version using crystal shards