Releases: vapor/postgres-nio
Fix prepare(query:) when no data returned
This patch was authored by @Jerry-Carter and released by @tanner0101.
Fixes prepare(query:) when used with queries that return no results (like DELETE ...) (#123, fixes #122).
Integer overflow fixes
This patch was authored and released by @tanner0101.
Deprecates PostgresData integer conversion methods that could lead to overflow errors (#120, fixes #119).
Using the following types in release-mode should no longer be susceptible to overflow (or underflow) crashes:
UIntInt8UInt16UInt32UInt64
assertion.
To migrate away from these types, there are two options:
1: Use a wider integer (or type) that does not overflow or underflow.
For example:
Int8->Int16UInt16->Int32UInt32->Int(Int64)UInt/UInt64->String
The caveats with this method are increased storage size and a database migration is required.
2: Do an explicit bitPattern conversion to the inversely signed type with same bit width.
For example, using Fluent:
// Store the value as `Int32` in Postgres
@Field(key: "foo")
var _foo: Int32
// Access the value as if it were a `UInt32`.
var foo: UInt32 {
get {
.init(bitPattern: self._foo)
}
set {
self._foo = .init(bitPattern: newValue)
}
}The caveat with this method is that other clients may misinterpret the stored value.
Fix warnings + update CI
This patch was authored and released by @tanner0101.
Fix Xcode 12 beta 3 warnings and add additional test cases to CI (#117).
Support parameter status messages in query / simpleQuery
This patch was authored and released by @tanner0101.
Adds support for parameter status (S) messages in query and simpleQuery calls (#116, fixes #115).
Add support for VARCHAR[]
This patch was authored and released by @tanner0101.
Adds support for CHARACTER VARYING[] a.k.a VARCHAR[] (#114, fixes #113).
Support remote close
This patch was authored and released by @tanner0101.
Adds support for recognizing a remote close as calling close() (fixes #107, #110)
RawRepresentable + PostgresData
This patch was authored and released by @tanner0101.
Add default PostgresDataConvertible conformance to RawRepresentable where the raw value is postgres convertible (#105, vapor/postgres-kit#179).
Too many binds error
This patch was authored and released by @tanner0101.
Throw an error if too many binds (>= Int16.max) are sent in a parameterized query (#103, fixes #102).
PostgresNIO 1.0.0
Docs:
https://github.com/vapor/postgres-nio/blob/master/README.md
More information on Vapor 4 official release:
https://forums.swift.org/t/vapor-4-official-release-begins/34802
Add query metadata
This patch was authored and released by @tanner0101.
Adds new API for accessing query metadata via conn.query (fixes #93).
conn.query("...", onMetadata: { metadata in
print(metadata.rows) // Int?
}) { row in
print(row) // PostgresRow
}.wait()This is a breaking change since conn.query now returns PostgresQueryResult instead of [PostgresRow]. However, PostgresQueryResult conforms to Collection so most code should be unaffected.
let result = try conn.query("...").wait()
for row in result {
print(row) // PostgresRow
}
print(result.metadata) // PostgresQueryMetadata
print(result.rows) // [PostgresRow]