Older go-mysql-driver used collation_id in 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 utf8mb4 for 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.
When text protocol is used, go-mysql-driver passed bare []byte to database/sql for avoid unnecessary allocation and conversion.
If user specified *any to Scan(), database/sql passed the []byte into 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 []byte and conversion cost is negilible.
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.
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [github.com/go-sql-driver/mysql](https://github.com/go-sql-driver/mysql) | require | minor | `v1.7.1` -> `v1.8.0` |
---
### Release Notes
<details>
<summary>go-sql-driver/mysql (github.com/go-sql-driver/mysql)</summary>
### [`v1.8.0`](https://github.com/go-sql-driver/mysql/releases/tag/v1.8.0)
[Compare Source](https://github.com/go-sql-driver/mysql/compare/v1.7.1...v1.8.0)
#### What's Changed
#### Major changes
- Use `SET NAMES charset COLLATE collation`. by [@​methane](https://github.com/methane) in https://github.com/go-sql-driver/mysql/pull/1437
- Older go-mysql-driver used `collation_id` in 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 utf8mb4` for 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`.
- PathEscape dbname in DSN. by [@​methane](https://github.com/methane) in https://github.com/go-sql-driver/mysql/pull/1432
- This is backward incompatible in rare case. Check your DSN.
- Drop Go 1.13-17 support by [@​methane](https://github.com/methane) in https://github.com/go-sql-driver/mysql/pull/1420
- Use Go 1.18+
- Parse numbers on text protocol too by [@​methane](https://github.com/methane) in https://github.com/go-sql-driver/mysql/pull/1452
- When text protocol is used, go-mysql-driver passed bare `[]byte` to database/sql for avoid unnecessary allocation and conversion.
- If user specified `*any` to `Scan()`, database/sql passed the `[]byte` into 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 `[]byte` and conversion cost is negilible.
- 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](https://github.com/methane) in https://github.com/go-sql-driver/mysql/pull/1552
- Add BeforeConnect callback to configuration object by [@​ItalyPaleAle](https://github.com/ItalyPaleAle) in https://github.com/go-sql-driver/mysql/pull/1469
##### Other changes
- Adding DeregisterDialContext to prevent memory leaks with dialers we don't need anymore by [@​jypelle](https://github.com/jypelle) in https://github.com/go-sql-driver/mysql/pull/1422
- Make logger configurable per connection by [@​frozenbonito](https://github.com/frozenbonito) in https://github.com/go-sql-driver/mysql/pull/1408
- Fix ColumnType.DatabaseTypeName for mediumint unsigned by [@​evanelias](https://github.com/evanelias) in https://github.com/go-sql-driver/mysql/pull/1428
- Add connection attributes by [@​Daemonxiao](https://github.com/Daemonxiao) in https://github.com/go-sql-driver/mysql/pull/1389
- Stop `ColumnTypeScanType()` from returning `sql.RawBytes` by [@​methane](https://github.com/methane) in https://github.com/go-sql-driver/mysql/pull/1424
- Exec() now provides access to status of multiple statements. by [@​mherr-google](https://github.com/mherr-google) in https://github.com/go-sql-driver/mysql/pull/1309
- Allow to change (or disable) the default driver name for registration by [@​dolmen](https://github.com/dolmen) in https://github.com/go-sql-driver/mysql/pull/1499
- Add default connection attribute '\_server_host' by [@​oblitorum](https://github.com/oblitorum) in https://github.com/go-sql-driver/mysql/pull/1506
- QueryUnescape DSN ConnectionAttribute value by [@​zhangyangyu](https://github.com/zhangyangyu) in https://github.com/go-sql-driver/mysql/pull/1470
- Add client_ed25519 authentication by [@​Gusted](https://github.com/Gusted) in https://github.com/go-sql-driver/mysql/pull/1518
- Reduced allocation on connection.go by [@​EPuncker](https://github.com/EPuncker) in https://github.com/go-sql-driver/mysql/pull/1421
- Avoid panic in TestRowsColumnTypes by [@​wayyoungboy](https://github.com/wayyoungboy) in https://github.com/go-sql-driver/mysql/pull/1426
- Add benchmark to receive massive rows. by [@​methane](https://github.com/methane) in https://github.com/go-sql-driver/mysql/pull/1415
- README: Update multistatement by [@​methane](https://github.com/methane) in https://github.com/go-sql-driver/mysql/pull/1431
- all: replace ioutil pkg to new package by [@​uji](https://github.com/uji) in https://github.com/go-sql-driver/mysql/pull/1438
- chore: code optimization by [@​testwill](https://github.com/testwill) in https://github.com/go-sql-driver/mysql/pull/1439
- Reduce map lookup in ColumnTypeDatabaseTypeName. by [@​methane](https://github.com/methane) in https://github.com/go-sql-driver/mysql/pull/1436
- doc: add link to NewConnector from FormatDSN by [@​dolmen](https://github.com/dolmen) in https://github.com/go-sql-driver/mysql/pull/1442
- Add fuzz test for ParseDSN / FormatDSN roundtrip by [@​dolmen](https://github.com/dolmen) in https://github.com/go-sql-driver/mysql/pull/1444
- TestDSNReformat: add more roundtrip checks by [@​dolmen](https://github.com/dolmen) in https://github.com/go-sql-driver/mysql/pull/1443
- tcp: handle errors returned by SetKeepAlive by [@​achille-roussel](https://github.com/achille-roussel) in https://github.com/go-sql-driver/mysql/pull/1448
- use staticcheck by [@​methane](https://github.com/methane) in https://github.com/go-sql-driver/mysql/pull/1449
- Add Daemonxiao to AUTHORS by [@​Daemonxiao](https://github.com/Daemonxiao) in https://github.com/go-sql-driver/mysql/pull/1459
- Update link about `LOAD DATA LOCAL` in README.md by [@​i7a7467](https://github.com/i7a7467) in https://github.com/go-sql-driver/mysql/pull/1468
- Update README.md by [@​Netzer7](https://github.com/Netzer7) in https://github.com/go-sql-driver/mysql/pull/1464
- add Go 1.21 and MySQL 8.1 to the build matrix by [@​shogo82148](https://github.com/shogo82148) in https://github.com/go-sql-driver/mysql/pull/1472
- Improve DSN docstsrings by [@​golddranks](https://github.com/golddranks) in https://github.com/go-sql-driver/mysql/pull/1475
- Fix [#​1478](https://github.com/go-sql-driver/mysql/issues/1478) remove length check by [@​ShenFeng312](https://github.com/ShenFeng312) in https://github.com/go-sql-driver/mysql/pull/1481
- README: fix markup error by [@​methane](https://github.com/methane) in https://github.com/go-sql-driver/mysql/pull/1480
- Close connection on ErrPktSync and ErrPktSyncMul by [@​owbone](https://github.com/owbone) in https://github.com/go-sql-driver/mysql/pull/1473
- Spelling, grammar, and link fixes by [@​scop](https://github.com/scop) in https://github.com/go-sql-driver/mysql/pull/1485
- Make use of strings.Cut by [@​scop](https://github.com/scop) in https://github.com/go-sql-driver/mysql/pull/1486
- move stale connection check to ResetSession() by [@​methane](https://github.com/methane) in https://github.com/go-sql-driver/mysql/pull/1496
- fix race condition of TestConcurrent by [@​shogo82148](https://github.com/shogo82148) in https://github.com/go-sql-driver/mysql/pull/1490
- mark fail, mustExec and mustQuery as test helpers by [@​shogo82148](https://github.com/shogo82148) in https://github.com/go-sql-driver/mysql/pull/1488
- Remove obsolete fuzz.go [#​1445](https://github.com/go-sql-driver/mysql/issues/1445) by [@​dolmen](https://github.com/dolmen) in https://github.com/go-sql-driver/mysql/pull/1498
- testing: expose testing.TB in DBTest instead of full \*testing.T by [@​dolmen](https://github.com/dolmen) in https://github.com/go-sql-driver/mysql/pull/1500
- symbol removed from installation command by [@​panvalkar1994](https://github.com/panvalkar1994) in https://github.com/go-sql-driver/mysql/pull/1510
- fix issue 1361 by [@​keeplearning20221](https://github.com/keeplearning20221) in https://github.com/go-sql-driver/mysql/pull/1462
- fix fragile test by [@​methane](https://github.com/methane) in https://github.com/go-sql-driver/mysql/pull/1522
- Fix sql.RawBytes corruption issue by [@​shogo82148](https://github.com/shogo82148) in https://github.com/go-sql-driver/mysql/pull/1523
- fix for enum and set field type to column type identifying by [@​jennifersp](https://github.com/jennifersp) in https://github.com/go-sql-driver/mysql/pull/1520
- Parallelize test by [@​shogo82148](https://github.com/shogo82148) in https://github.com/go-sql-driver/mysql/pull/1525
- Fix unsigned int overflow by [@​shiyuhang0](https://github.com/shiyuhang0) in https://github.com/go-sql-driver/mysql/pull/1530
- Introduce `timeTruncate` parameter for `time.Time` arguments by [@​PauliusLozys](https://github.com/PauliusLozys) in https://github.com/go-sql-driver/mysql/pull/1541
- add TiDB support in README.md by [@​crazycs520](https://github.com/crazycs520) in https://github.com/go-sql-driver/mysql/pull/1333
- Update workflows by [@​methane](https://github.com/methane) in https://github.com/go-sql-driver/mysql/pull/1547
#### New Contributors
- [@​EPuncker](https://github.com/EPuncker) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1421
- [@​jypelle](https://github.com/jypelle) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1422
- [@​frozenbonito](https://github.com/frozenbonito) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1408
- [@​wayyoungboy](https://github.com/wayyoungboy) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1426
- [@​evanelias](https://github.com/evanelias) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1428
- [@​Daemonxiao](https://github.com/Daemonxiao) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1389
- [@​uji](https://github.com/uji) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1438
- [@​testwill](https://github.com/testwill) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1439
- [@​i7a7467](https://github.com/i7a7467) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1468
- [@​Netzer7](https://github.com/Netzer7) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1464
- [@​golddranks](https://github.com/golddranks) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1475
- [@​ShenFeng312](https://github.com/ShenFeng312) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1481
- [@​owbone](https://github.com/owbone) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1473
- [@​scop](https://github.com/scop) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1485
- [@​panvalkar1994](https://github.com/panvalkar1994) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1510
- [@​zhangyangyu](https://github.com/zhangyangyu) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1470
- [@​keeplearning20221](https://github.com/keeplearning20221) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1462
- [@​oblitorum](https://github.com/oblitorum) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1506
- [@​Gusted](https://github.com/Gusted) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1518
- [@​jennifersp](https://github.com/jennifersp) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1520
- [@​shiyuhang0](https://github.com/shiyuhang0) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1530
- [@​PauliusLozys](https://github.com/PauliusLozys) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1541
- [@​crazycs520](https://github.com/crazycs520) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1333
- [@​ItalyPaleAle](https://github.com/ItalyPaleAle) made their first contribution in https://github.com/go-sql-driver/mysql/pull/1469
**Full Changelog**: https://github.com/go-sql-driver/mysql/compare/v1.7.1...v1.8.0
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNDAuMyIsInVwZGF0ZWRJblZlciI6IjM3LjE0MC4zIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIn0=-->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
v1.7.1->v1.8.0Release Notes
go-sql-driver/mysql (github.com/go-sql-driver/mysql)
v1.8.0Compare Source
What's Changed
Major changes
Use
SET NAMES charset COLLATE collation. by @methane in https://github.com/go-sql-driver/mysql/pull/1437collation_idin the handshake packet. But it caused collation mismatch in some situation.SET NAMES utf8mb4for new connection. This uses server's default collation for utf8mb4.SET NAMES <charset>. This uses the server's default collation for<charset>.SET NAMES charset COLLATE collation.PathEscape dbname in DSN. by @methane in https://github.com/go-sql-driver/mysql/pull/1432
Drop Go 1.13-17 support by @methane in https://github.com/go-sql-driver/mysql/pull/1420
Parse numbers on text protocol too by @methane in https://github.com/go-sql-driver/mysql/pull/1452
[]byteto database/sql for avoid unnecessary allocation and conversion.*anytoScan(), database/sql passed the[]byteinto the target variabe.[]byteand conversion cost is negilible.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.
Other changes
Adding DeregisterDialContext to prevent memory leaks with dialers we don't need anymore by @jypelle in https://github.com/go-sql-driver/mysql/pull/1422
Make logger configurable per connection by @frozenbonito in https://github.com/go-sql-driver/mysql/pull/1408
Fix ColumnType.DatabaseTypeName for mediumint unsigned by @evanelias in https://github.com/go-sql-driver/mysql/pull/1428
Add connection attributes by @Daemonxiao in https://github.com/go-sql-driver/mysql/pull/1389
Stop
ColumnTypeScanType()from returningsql.RawBytesby @methane in https://github.com/go-sql-driver/mysql/pull/1424Exec() now provides access to status of multiple statements. by @mherr-google in https://github.com/go-sql-driver/mysql/pull/1309
Allow to change (or disable) the default driver name for registration by @dolmen in https://github.com/go-sql-driver/mysql/pull/1499
Add default connection attribute '_server_host' by @oblitorum in https://github.com/go-sql-driver/mysql/pull/1506
QueryUnescape DSN ConnectionAttribute value by @zhangyangyu in https://github.com/go-sql-driver/mysql/pull/1470
Add client_ed25519 authentication by @Gusted in https://github.com/go-sql-driver/mysql/pull/1518
Reduced allocation on connection.go by @EPuncker in https://github.com/go-sql-driver/mysql/pull/1421
Avoid panic in TestRowsColumnTypes by @wayyoungboy in https://github.com/go-sql-driver/mysql/pull/1426
Add benchmark to receive massive rows. by @methane in https://github.com/go-sql-driver/mysql/pull/1415
README: Update multistatement by @methane in https://github.com/go-sql-driver/mysql/pull/1431
all: replace ioutil pkg to new package by @uji in https://github.com/go-sql-driver/mysql/pull/1438
chore: code optimization by @testwill in https://github.com/go-sql-driver/mysql/pull/1439
Reduce map lookup in ColumnTypeDatabaseTypeName. by @methane in https://github.com/go-sql-driver/mysql/pull/1436
doc: add link to NewConnector from FormatDSN by @dolmen in https://github.com/go-sql-driver/mysql/pull/1442
Add fuzz test for ParseDSN / FormatDSN roundtrip by @dolmen in https://github.com/go-sql-driver/mysql/pull/1444
TestDSNReformat: add more roundtrip checks by @dolmen in https://github.com/go-sql-driver/mysql/pull/1443
tcp: handle errors returned by SetKeepAlive by @achille-roussel in https://github.com/go-sql-driver/mysql/pull/1448
use staticcheck by @methane in https://github.com/go-sql-driver/mysql/pull/1449
Add Daemonxiao to AUTHORS by @Daemonxiao in https://github.com/go-sql-driver/mysql/pull/1459
Update link about
LOAD DATA LOCALin README.md by @i7a7467 in https://github.com/go-sql-driver/mysql/pull/1468Update README.md by @Netzer7 in https://github.com/go-sql-driver/mysql/pull/1464
add Go 1.21 and MySQL 8.1 to the build matrix by @shogo82148 in https://github.com/go-sql-driver/mysql/pull/1472
Improve DSN docstsrings by @golddranks in https://github.com/go-sql-driver/mysql/pull/1475
Fix #1478 remove length check by @ShenFeng312 in https://github.com/go-sql-driver/mysql/pull/1481
README: fix markup error by @methane in https://github.com/go-sql-driver/mysql/pull/1480
Close connection on ErrPktSync and ErrPktSyncMul by @owbone in https://github.com/go-sql-driver/mysql/pull/1473
Spelling, grammar, and link fixes by @scop in https://github.com/go-sql-driver/mysql/pull/1485
Make use of strings.Cut by @scop in https://github.com/go-sql-driver/mysql/pull/1486
move stale connection check to ResetSession() by @methane in https://github.com/go-sql-driver/mysql/pull/1496
fix race condition of TestConcurrent by @shogo82148 in https://github.com/go-sql-driver/mysql/pull/1490
mark fail, mustExec and mustQuery as test helpers by @shogo82148 in https://github.com/go-sql-driver/mysql/pull/1488
Remove obsolete fuzz.go #1445 by @dolmen in https://github.com/go-sql-driver/mysql/pull/1498
testing: expose testing.TB in DBTest instead of full *testing.T by @dolmen in https://github.com/go-sql-driver/mysql/pull/1500
symbol removed from installation command by @panvalkar1994 in https://github.com/go-sql-driver/mysql/pull/1510
fix issue 1361 by @keeplearning20221 in https://github.com/go-sql-driver/mysql/pull/1462
fix fragile test by @methane in https://github.com/go-sql-driver/mysql/pull/1522
Fix sql.RawBytes corruption issue by @shogo82148 in https://github.com/go-sql-driver/mysql/pull/1523
fix for enum and set field type to column type identifying by @jennifersp in https://github.com/go-sql-driver/mysql/pull/1520
Parallelize test by @shogo82148 in https://github.com/go-sql-driver/mysql/pull/1525
Fix unsigned int overflow by @shiyuhang0 in https://github.com/go-sql-driver/mysql/pull/1530
Introduce
timeTruncateparameter fortime.Timearguments by @PauliusLozys in https://github.com/go-sql-driver/mysql/pull/1541add TiDB support in README.md by @crazycs520 in https://github.com/go-sql-driver/mysql/pull/1333
Update workflows by @methane in https://github.com/go-sql-driver/mysql/pull/1547
New Contributors
Full Changelog: https://github.com/go-sql-driver/mysql/compare/v1.7.1...v1.8.0
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.