Merged PRs
dolt
- 8655: Removed the
performance
server config block
Its only member was 'query_parallelism`, which was unused. Existing config files with this key will still parse.
go-mysql-server
- 2788: Fewer wire allocs in SQL() implementations
Optimizes SQL() implementations that convert interface values into type-specific byte arrays. Combination of skippingruntime.convT
checks, that unnecessarily allocated variables to the heap, redundant byte array copying, and other conversion inefficiencies.
dolt perf here: #8651goos: darwin goarch: arm64 pkg: github.com/dolthub/go-mysql-server/sql/types cpu: Apple M3 Pro │ before.txt │ after.txt │ │ sec/op │ sec/op vs base │ NumI64SQL-12 62.04n ± 2% 51.13n ± 1% -17.59% (p=0.002 n=6) Varchar10SQL-12 66.85n ± 1% 31.38n ± 2% -53.06% (p=0.002 n=6) TimespanSQL-12 62.36n ± 0% 40.31n ± 1% -35.35% (p=0.002 n=6) TimestampSQL-12 1960.0n ± 1% 255.0n ± 2% -86.99% (p=0.002 n=6) DatetimeSQL-12 1968.5n ± 0% 269.5n ± 3% -86.31% (p=0.002 n=6) EnumSQL-12 111.85n ± 1% 37.49n ± 1% -66.48% (p=0.002 n=6) SetSQL-12 175.15n ± 0% 63.55n ± 1% -63.72% (p=0.002 n=6) BitSQL-12 41.84n ± 1% 41.74n ± 1% ~ (p=0.589 n=6) DecimalSQL-12 683.8n ± 3% 281.9n ± 1% -58.77% (p=0.002 n=6) NumF64SQL-12 105.15n ± 1% 91.72n ± 0% -12.77% (p=0.002 n=6) geomean 189.2n 80.50n -57.45% │ before.txt │ after.txt │ │ B/op │ B/op vs base │ NumI64SQL-12 24.00 ± 0% 16.00 ± 0% -33.33% (p=0.002 n=6) Varchar10SQL-12 40.000 ± 0% 8.000 ± 0% -80.00% (p=0.002 n=6) TimespanSQL-12 24.00 ± 0% 16.00 ± 0% -33.33% (p=0.002 n=6) TimestampSQL-12 1520.00 ± 0% 56.00 ± 0% -96.32% (p=0.002 n=6) DatetimeSQL-12 1520.00 ± 0% 56.00 ± 0% -96.32% (p=0.002 n=6) EnumSQL-12 112.000 ± 0% 8.000 ± 0% -92.86% (p=0.002 n=6) SetSQL-12 136.00 ± 0% 16.00 ± 0% -88.24% (p=0.002 n=6) BitSQL-12 16.00 ± 0% 16.00 ± 0% ~ (p=1.000 n=6) ¹ DecimalSQL-12 439.0 ± 0% 228.0 ± 0% -48.06% (p=0.002 n=6) NumF64SQL-12 38.00 ± 0% 31.00 ± 0% -18.42% (p=0.002 n=6) geomean 108.0 24.94 -76.92% ¹ all samples are equal │ before.txt │ after.txt │ │ allocs/op │ allocs/op vs base │ NumI64SQL-12 2.000 ± 0% 1.000 ± 0% -50.00% (p=0.002 n=6) Varchar10SQL-12 2.000 ± 0% 1.000 ± 0% -50.00% (p=0.002 n=6) TimespanSQL-12 2.000 ± 0% 1.000 ± 0% -50.00% (p=0.002 n=6) TimestampSQL-12 42.000 ± 0% 3.000 ± 0% -92.86% (p=0.002 n=6) DatetimeSQL-12 42.000 ± 0% 3.000 ± 0% -92.86% (p=0.002 n=6) EnumSQL-12 3.000 ± 0% 1.000 ± 0% -66.67% (p=0.002 n=6) SetSQL-12 5.000 ± 0% 2.000 ± 0% -60.00% (p=0.002 n=6) BitSQL-12 2.000 ± 0% 2.000 ± 0% ~ (p=1.000 n=6) ¹ DecimalSQL-12 22.00 ± 0% 10.00 ± 0% -54.55% (p=0.002 n=6) NumF64SQL-12 3.000 ± 0% 2.000 ± 0% -33.33% (p=0.002 n=6) geomean 5.554 1.931 -65.24% ¹ all samples are equal
- 2787: Enable support for
caching_sha2_password
auth
This change enables users configured with thecaching_sha2_password
auth plugin to authenticate to a running SQL server. The default authentication plugin is stillmysql_native_password
, but users can opt-in tocaching_sha2_password
by creating a user and explicitly specifying the auth plugin.
Note that thecaching_sha2_password
auth plugin requires running the SQL server with a certificate so that TLS connections can be established.
Depends on: dolthub/vitess#390
Related to: #8496 - 2780: Add support for creating users with the
caching_sha2_password
auth plugin
This change enables customers to create users configured to authenticate with thecaching_sha2_password
auth plugin. The generated authentication string uses the same logic as MySQL'scaching_sha2_password
auth plugin. Users created withcaching_sha2_password
can not yet authenticate with a GMS server – the next change in this series will enable that.
Example usage:Depends on: dolthub/vitess#387CREATE USER fred@localhost identified with caching_sha2_password by 'pa$$w0rd';
Related to: #8496
vitess
- 390: Minor bug fixes for
caching_sha2_password
auth logic
For accounts without passwords, we need to account for the client sending the null byte when the server re-requests the client auth data, and then skip theAuthMoreDataPacket
, andCachingSha2FastAuth
packets. Otherwise themysql
client errors with "Malformed packet".
handleConnectionError
is used to report stats about failed connection attempts, but wasn't being called in the correct spot. The previous spot was over counting failed connection attempts, since it was called as part of the auth renegotiation flow. It has been moved to be called whenever we return an error or exit the function without a successful connection. - 389: syntax support for custom
explain plan
For debugging purposes, we replaced MySQL'sEXPLAIN
output with our very own.
Unfortunately, it is not causing problems, so we must move our syntax into its own thing. - 387: Add support for serializing/deserializing
caching_sha2_password
auth strings
Closed Issues
- 8649: Write timeout not always enforced