Releases: vapor/mysql-nio
Fix handling of null columns in TextResultSetRow
This patch was authored by @NobodyNada and released by @tanner0101.
When TextResultSetRow
encountered a null column, it did not increment the buffer index, and so it would repeatedly read NULL
into every remaining column. This patch fixes the issue and adds regression tests (#57).
Fix auth using empty password with MySQL 5.7
This patch was authored and released by @gwynne.
The following changes have been made:
-
When using the
mysql_native_password
auth plugin (or when authenticating with MySQL 5.7 in general), an empty password is now correctly treated as specifying no password at all. Fixes vapor/fluent-mysql-driver#195. -
The
.CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA
capability, which improves and simplifies auth handling in some common cases, is now correctly supported and reported as such. -
The unit tests now support the
MYSQL_USERNAME
,MYSQL_PASSWORD
,MYSQL_DATABASE
, andMYSQL_PORT
env vars. -
Small code cleanups.
Major fixes to authentication support
This patch was authored and released by @gwynne.
Fixes the following failure modes:
- In tests, certain errors would crash instead of failing
- The
xor(_:_:)
utility did not correctly apply the operation to the entire buffer. - Most protocol errors now throw a much more specific error.
- Trace logging is now more verbose during authentication.
- The
AuthSwitchRequest
packet (tagged with0xfe
during the authentication phase, incorrectly treated as EOF before) is now correctly handled; this permits both the use of arbitrary auth plugins and the use of the "fast auth" mechanism. - The
caching_sha2_password
handling would previously incorrectly treat the trailingNUL
as part of the auth data. - The
fast_auth_success
(0x1 0x3
) packet during authentication is now correctly handled. - When the
caching_sha2_password
plugin fails to authenticate on non-TLS connections, we now log a useful error message and throw a meaningful error. The framework is in place to implement this fully as soon as a usable implementation of the RSA public-key encrypt operation (with PEM armor and PKCS#1-OAEP padding support) is available.
This massively increases compatibility with all supported versions of MySQL and MariaDB and paves the way for further improvements.
Tagged semver-minor
due to the new enumerators for the more specific errors.
Fix MYSQL_TIME data type
This patch was authored and released by @tanner0101.
Fixes an issue causing MYSQL_TIME
to use an incorrect data type when sending time or date only values (#54).
Docs + missing functionality
This patch was authored and released by @tanner0101.
Adds docs and implements missing functionality from PostgresNIO (#52).
- Adds
README
docs. - Adds
contributing.md
docs - Adds missing
MySQLData
fixed-width integer properties (int8
,int16
,uint32
, etc). - Adds
serverHostname
parameter toMySQLConnection.connect
.
MYSQL_TIME improvements
This patch was authored and released by @tanner0101.
Adds support for 8 and 12 byte (time only) MYSQL_TIME
formats (#50, fixes #49).
MySQLTime
stored properties and date
optional. Previously these methods could crash when used with a time-only value.
MySQLNIO 1.0.0
More information on Vapor 4 official release:
https://forums.swift.org/t/vapor-4-official-release-begins/34802
Add server version check
This patch was authored and released by @tanner0101.
Adds a check to ensure the server version is supported (#41, fixes #39).
Unsupported MySQL server versions will now log an error during handshake.
Improve CI
This patch was authored and released by @tanner0101.
Adds additional Swift image tests, MariaDB tests, and dependent package tests (#40, fixes #21).
Improve CI
This patch was authored and released by @tanner0101.
Adds additional Swift image tests, MariaDB tests, and dependent package tests (#40, fixes #21).