Releases: vapor/postgres-nio
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:
UInt
Int8
UInt16
UInt32
UInt64
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
->Int16
UInt16
->Int32
UInt32
->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]
Update to Metrics 2.0
This patch was authored and released by @tanner0101.
Updates to SwiftMetrics 2.0 which adds a new case the TimeUnit
enum (#88, fixes #87)