Releases: vapor/postgres-nio
PostgresNIO 1.10.0
SemVer Minor
- Drop Swift 5.2 and 5.3 support #287
- Make
PostgresRowSequence.collect
public by @nicholas-otto in #281 - Rename
PostgresCastingError
toPostgresDecodingError
and make public by @nicholas-otto in #286
Other Changes
- Switch this repo to doing its CI independently, plus some updates #284
- Remove unused scripts #288
- Update README to reflect latest changes #289
New Contributors
- @nicholas-otto made their first contribution in #281
Full Changelog: 1.9.0...1.10.0
PostgresNIO 1.9.0
SemVer Minor
- Allow unescaped SQL in
PostgresQuery
in #258 - Remove connection state machine log in #266
- Add EventLoop API that uses
PostgresQuery
in #265 - Add
contains(_:)
toPostgresRandomAccessRow
in #270
SemVer Patch
- Use
Int(exactly:)
instead of restricting to 64 bit platforms in #267 - Continue to make forward progress when cancelled in #261
Other Changes
Full Changelog: 1.8.0...1.9.0
PostgresNIO 1.8.0 (async/await)
This release adds Swift structured concurrency APIs (async/await). It is now possible to run queries like this:
let role = "admin"
let rows = try await connection.query("SELECT id, username, birthday FROM users WHERE role = \(role)", logger: logger)
for try await (id, username, birthday) in rows.decode((Int, String, Date).self, context: .default) {
// do something with the returned values
}
For more information please read the updated README.
What's Changed
- Fix typo in README.md by @flix477 in #208
- Remove PSQLJSONDecoder from PSQLConnection in #214
- Merge type PSQLFormat into PostgresFormat in #212
- Remove PSQLJSONDecoder in #216
- Merge PSQLDataType with PostgresDataType in #213
- Remove PSQLJSONEncoder in #215
- PSQLDecodingError improvements in #211
- Add async option to PSQLRowStream in #206
- Make PSQLDecodingContext generic in #217
- Cut back on number of CI jobs in #218
- Extend PostgresCastingError in #221
- Add PostgresCell in #220
- Add PSQLRow multi decode in #222
- Add PostgresQuery in #223
- Rename PSQLDecodable to PostgresDecodable in #224
- Rename PSQLCodable to PostgresCodable in #225
- Rename PSQLRowSequence to PostgresRowSequence in #226
- Rename PSQLEncodingContext to PostgresEncodingContext in #227
- Move all PostgresConnection code into one file in #228
- Deprecate unused postgres messages in #229
- Cleanup encoding and decoding in #230
- Merge PSQLRow into PostgresRow in #219
- Replace all EncoderContext/DecoderContext uses of
.forTests
with.default
in #231 - Add an async query API (internal for now) in #233
- Add PostgresRowSequence multi decode in #232
- [BufferMessageEncoder] Reduce the number of force unwraps in #234
- [PostgresRowSequence] Make StateMachine private in #235
- Rename PSQLRow multi decode to PostgresRow multi decode in #236
- Explicit TLS config in #237
- Rename PSQLFrontendMessage to PostgresFrontendMessage in #239
- Rename PSQLBackendMessage to PostgresBackendMessage in #238
- Merge PSQLConnection into PostgresConnection in #240
- Cleanup PostgresDecodable in #241
- Make PostgresEncodingContext & PostgresDecodingContext public in #243
- Add Sendable checking in #242
- Add good first issue project board workflow to repository by @BennyDeBock in #246
- New PostgresConnection connect API in #245
- Make new Postgres decoding public in #244
- Make PostgresRowSequence public in #247
- Make Postgres Encodable public in #248
- Make Postgres async query public in #249
- Rename PostgresBackendMessageDecoder in #252
- Add support for Network.framework in #253
- Make DataRow Sendable in #250
- Rename PostgresChannelHandler in #251
- README update for async/await in #254
- Fix missing links in #255
New Contributors
- @flix477 made their first contribution in #208
- @BennyDeBock made their first contribution in #246
Full Changelog: 1.7.2...1.8.0
Refactor PSQLRowStream to make async/await easier
This patch was authored and released by @fabianfett.
Motivation
PSQLRowStream
's current implementation is interesting. It should be better tested and easier to follow for async/await support later.
Changes
- Make
PSQLRowStream
's implementation more sensible - Add unit tests for
PSQLRowStream
Result
Adding async/await support becomes easier.
Faster decoding, thanks to fewer bound checks.
This patch was authored by @fabianfett and released by @gwynne.
Motivation
We like faster code. This removes a ton of unnecessary bounds checks.
Result
Faster code
In draft since it requires a new NIO release.
Add proper support for `Decimal`
This patch was authored by @madsodgaard and released by @gwynne.
Fixes an issue when trying to decode/encode numeric
columns as Decimal
, that would result in an error such as: server: column "balance" is of type numeric but expression is of type text (transformAssignedExpr)
.
ByteBuffer extension, prevent naming conflicts
This patch was authored and released by @fabianfett.
Motivation
We currently extend ByteBuffer with non prefixed utility methods. This may lead to breaking code, if NIO introduces those utilities itself. As potentially planned here: apple/swift-nio#1990
Changes
Prefix all ByteBuffer utility methods
Result
Chances reduced of breaking code.
DataRow without allocation; DataRow as Collection; RowDescription top level
This patch was authored and released by @fabianfett.
This is a cherry pick of #188.
Modifications
DataRow
andRowDescription
have been moved out of thePSQLBackendMessage
namespace. This allows us to mark them as@inlinable
or@usableFromInline
at a later point, without marking everything inPSQLBackendMessage
as@inlinable
DataRow
does not use an internal array for its columns anymore. Instead all read operations are directly done on its ByteBuffer slice.DataRow
implements theCollection
protocol now.
Result
One allocation fewer per queried row.
Make password hashing fast
This patch was authored by @fabianfett and released by @gwynne.
This is just a really quick patch to reduce the 320 allocations we have for hashing the password to something sensible (less than 10).
Result
In allocation analysis, password hashing doesn't appear as a biggy anymore.
PostgresNIO 1.6.2
Semver Patch
- PSQLBackendMessageDecoder is a SingleStepDecoder (#174)
- Add conveniences to PSQLFrontendMessage (#173)
- Add RowStreamStateMachine (#176)
- Extract PSQLRow (#177)
- Add BufferedMessageEncoder, fix PSQLFrontendMessageEncoder (#179)
- Batch rows for consumption (#180)
- Depend on Swift Crypto
"1.0.0" ..< "3.0.0"
(#183) - Move Decoding into PSQLChannelHandler (#182)
- Move message encoding into PSQLChannelHandler (#181)
- Bump SwiftNIO dependency to 2.33.0 (#184)