Releases: go-sql-driver/mysql
v1.9.3
What's Changed
- [1.9] test stability improvement. by @methane in #1699
- [1.9] Transaction Commit/Rollback returns conn's cached error by @methane in #1702
- backport benchmark_test by @methane in #1706
- [1.9] optimize readPacket (#1705) by @methane in #1707
- [1.9] fix PING on compressed connections by @methane in #1723
- release v1.9.3 by @methane in #1725
Full Changelog: v1.9.2...v1.9.3
v1.9.2
What's Changed
v1.9.2 is a re-release of v1.9.1 due to a release process issue; no changes were made to the content.
Full Changelog: v1.9.1...v1.9.2
v1.9.1
v1.9.0
Major Changes
- Implement zlib compression. (#1487)
- Supported Go version is updated to Go 1.21+. (#1639)
- Add support for VECTOR type introduced in MySQL 9.0. (#1609)
- Config object can have custom dial function. (#1527)
Bugfixes
- Fix auth errors when username/password are too long. (#1625)
- Check if MySQL supports CLIENT_CONNECT_ATTRS before sending client attributes. (#1640)
- Fix auth switch request handling. (#1666)
Other changes
- Add "filename:line" prefix to log in go-mysql. Custom loggers now show it. (#1589)
- Improve error handling. It reduces the "busy buffer" errors. (#1595, #1601, #1641)
- Use
strconv.Atoito parse max_allowed_packet. (#1661) rejectReadOnlyoption now handles ER_READ_ONLY_MODE (1290) error too. (#1660)
Full Changelog: v1.8.1...v1.9.0
New Contributors
- @dbussink made their first contribution in #1609
- @yokonao made their first contribution in #1615
- @pengbanban made their first contribution in #1620
- @aaronjheng made their first contribution in #1527
- @kratkyzobak made their first contribution in #1625
- @raffertyyu made their first contribution in #1640
- @minhquang4334 made their first contribution in #1647
- @joe-mann made their first contribution in #1487
- @arturmelanchyk made their first contribution in #1653
- @kolbe made their first contribution in #1660
- @bdollma-te made their first contribution in #1667
v1.8.1
v1.8.0
What's Changed
Major changes
Use
SET NAMES charset COLLATE collation. by @methane in #1437- Older go-mysql-driver used
collation_idin the handshake packet. But it caused collation mismatch in some situation. - If you don't specify charset nor collation, go-mysql-driver sends
SET NAMES utf8mb4for new connection. This uses server's default collation for utf8mb4. - If you specify charset, go-mysql-driver sends
SET NAMES <charset>. This uses the server's default collation for<charset>. - If you specify collation and/or charset, go-mysql-driver sends
SET NAMES charset COLLATE collation.
- Older go-mysql-driver used
PathEscape dbname in DSN. by @methane in #1432
- This is backward incompatible in rare case. Check your DSN.
Drop Go 1.13-17 support by @methane in #1420
- Use Go 1.18+
Parse numbers on text protocol too by @methane in #1452
- When text protocol is used, go-mysql-driver passed bare
[]byteto database/sql for avoid unnecessary allocation and conversion. - If user specified
*anytoScan(), database/sql passed the[]byteinto the target variabe. - This confused users because most user doesn't know when text/binary protocol used.
- go-mysql-driver 1.8 converts integer/float values into int64/double even in text protocol. This doesn't increase allocation compared to
[]byteand conversion cost is negilible.
- When text protocol is used, go-mysql-driver passed bare
New options start using the Functional Option Pattern to avoid increasing technical debt in the Config object. Future version may introduce Functional Option for existing options, but not for now.
- Make TimeTruncate functional option by @methane in #1552
- Add BeforeConnect callback to configuration object by @ItalyPaleAle in #1469
Other changes
Adding DeregisterDialContext to prevent memory leaks with dialers we don't need anymore by @jypelle in #1422
Make logger configurable per connection by @frozenbonito in #1408
Fix ColumnType.DatabaseTypeName for mediumint unsigned by @evanelias in #1428
Add connection attributes by @Daemonxiao in #1389
Stop
ColumnTypeScanType()from returningsql.RawBytesby @methane in #1424Exec() now provides access to status of multiple statements. by @mherr-google in #1309
Allow to change (or disable) the default driver name for registration by @dolmen in #1499
Add default connection attribute '_server_host' by @oblitorum in #1506
QueryUnescape DSN ConnectionAttribute value by @zhangyangyu in #1470
Reduced allocation on connection.go by @EPuncker in #1421
Avoid panic in TestRowsColumnTypes by @wayyoungboy in #1426
Reduce map lookup in ColumnTypeDatabaseTypeName. by @methane in #1436
doc: add link to NewConnector from FormatDSN by @dolmen in #1442
Add fuzz test for ParseDSN / FormatDSN roundtrip by @dolmen in #1444
TestDSNReformat: add more roundtrip checks by @dolmen in #1443
tcp: handle errors returned by SetKeepAlive by @achille-roussel in #1448
Add Daemonxiao to AUTHORS by @Daemonxiao in #1459
Update link about
LOAD DATA LOCALin README.md by @i7a7467 in #1468add Go 1.21 and MySQL 8.1 to the build matrix by @shogo82148 in #1472
Improve DSN docstsrings by @golddranks in #1475
Fix #1478 remove length check by @ShenFeng312 in #1481
Close connection on ErrPktSync and ErrPktSyncMul by @owbone in #1473
move stale connection check to ResetSession() by @methane in #1496
fix race condition of TestConcurrent by @shogo82148 in #1490
mark fail, mustExec and mustQuery as test helpers by @shogo82148 in #1488
testing: expose testing.TB in DBTest instead of full *testing.T by @dolmen in #1500
symbol removed from installation command by @panvalkar1994 in #1510
fix issue 1361 by @keeplearning20221 in #1462
Fix sql.RawBytes corruption issue by @shogo82148 in #1523
fix for enum and set field type to column type identifying by @jennifersp in #1520
Parallelize test by @shogo82148 in #1525
Fix unsigned int overflow by @shiyuhang0 in #1530
Introduce
timeTruncateparameter fortime.Timearguments by @PauliusLozys in #1541add TiDB support in README.md by @crazycs520 in #1333
New Contributors
- @EPuncker made their first contribution in #1421
- @jypelle made their first contribution in #1422
- @frozenbonito made their first contribution in #1408
- @wayyoungboy made their first contribution in #1426
- @evanelias made their first contribution in #1428
- @Daemonxiao made their first contribution in #1389
- @uji made their first contribution in #1438
- @testwill made their first contribution in #1439
- @i7a7467 made their first contribution in #1468
- @Netzer7 made their first contribution in #1464
- @golddranks made their first contribution in #1475
- @ShenFeng312 made their first contribution in #1481
- @owbone made their first contribution in #1473
- @scop made their first contribution in #1485
- @panvalkar1994 made their first contribution in #1510
- @zhangyangyu made their first contribution in #1470
- @keeplearning20221 made their first contribution in #1462
- @oblitorum made their first contribution in #1506
- @Gusted made their first contribution in #1518
- @jennifersp made their first contribution in #1520
- @shiyuhang0 made their first contribution in #1530
- @PauliusLozys made their first contribution in #1541
- @crazycs520 made their first contribution in #1333
- @ItalyPaleAle made their first contribution in #1469
Full Changelog: v1.7.1...v1.8.0
v1.7.1
What's Changed
- bump actions/checkout@v3 and actions/setup-go@v3 by @shogo82148 in #1375
- Use SET syntax as specified in the MySQL documentation by @beautifulentropy in #1402
- Add go1.20 and mariadb10.11 to the testing matrix by @pgporada in #1403
- Increase default maxAllowedPacket size. by @methane in #1411
- Correct maxAllowedPacket default value mentioned in docs to match the… by @sjmudd in #1412
- fix some comments by @cuishuang in #1417
- Update changelog for version 1.7.1 by @methane in #1418
New Contributors
- @beautifulentropy made their first contribution in #1402
- @pgporada made their first contribution in #1403
Full Changelog: v1.7.0...v1.7.1
Version 1.7
Changes:
- Drop support of Go 1.12 (#1211)
- Refactoring
(*textRows).readRowin a more clear way (#1230) - util: Reduce boundary check in escape functions. (#1316)
- enhancement for mysqlConn handleAuthResult (#1250)
New Features:
- support Is comparison on MySQLError (#1210)
- return unsigned in database type name when necessary (#1238)
- Add API to express like a --ssl-mode=PREFERRED MySQL client (#1370)
- Add SQLState to MySQLError (#1321)
Bugfixes:
- Fix parsing 0 year. (#1257)
Version 1.6.0
Major Release
- Migrate the CI service from travis-ci to GitHub Actions (#1176, #1183, #1190)
NullTimeis deprecated (#960, #1144)- Reduce allocations when building SET command (#1111)
- Performance improvement for time formatting (#1118)
- Performance improvement for time parsing (#1098, #1113)
See CHANGELOG.md for full details
Version 1.5.0
Major Release
- Added Go Module support
- Dropped support for Go 1.9 and lower
- Implemented
Connectorinterface - Improved buffering
- Added connection liveness check
- Improved marking of bad connnections
- Updated collations and made
utf8mb4default - Made
mysql.NullTimecompatible withsql.NullTime - Removed support for CloudSQL via
appengine/cloudsql
See CHANGELOG.md for full details