Releases: vapor/postgres-nio
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)
Other changes
PostgresNIO 1.6.1
SemVer Patch
- Fix NIOSSL deprecation warnings (#168) (patch credit to @jareyesda)
- Fix NIO imports (#171)
Other Changes
1.6.0
- Add platform requirements for iOS, watchOS and tvOS (#154)
- Update api-docs.yml (#156) Thanks @JaapWijnen
- Split out
IntegrationTests
into separatetestTarget
(#157) - Use sync pipeline operations, update NIO dependencies (#152)
- Add one Auth and one SSL test case (#159)
- Fix API docs link. Resolves (#163)
- Add link to our SECURITY.md (#164)
- Use
PSQLFormat
when encoding and decoding (#158) - Support AWS Redshift queries - SELECT Metadata without row number (#167) Thanks @grennis
Ignore errors when closing the connection
This patch was authored by @fabianfett and released by @0xTim.
Resolves an issue where errors thrown by some database servers during closing a connection would cause an error in PostgresNIO. Resolves #150
Modifications
- We ignore errors when the connection is already closing
- Updated logging to only issue debug and trace logs.
- Don't print password in trace logging mode.