Releases: dolthub/dolt
Releases · dolthub/dolt
1.45.5
Merged PRs
dolt
- 8725: More information about types in int conversions
Closed Issues
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 0.67 | 0.35 |
groupby_scan | 13.22 | 17.32 | 1.31 |
index_join | 1.47 | 2.48 | 1.69 |
index_join_scan | 1.44 | 1.47 | 1.02 |
index_scan | 34.33 | 30.81 | 0.9 |
oltp_point_select | 0.18 | 0.27 | 1.5 |
oltp_read_only | 3.49 | 5.37 | 1.54 |
select_random_points | 0.34 | 0.6 | 1.76 |
select_random_ranges | 0.37 | 0.63 | 1.7 |
table_scan | 34.33 | 33.12 | 0.96 |
types_table_scan | 75.82 | 114.72 | 1.51 |
reads_mean_multiplier | 1.29 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.9 | 6.32 | 0.71 |
oltp_insert | 4.1 | 3.13 | 0.76 |
oltp_read_write | 8.9 | 11.45 | 1.29 |
oltp_update_index | 4.18 | 3.19 | 0.76 |
oltp_update_non_index | 4.18 | 3.07 | 0.73 |
oltp_write_only | 5.67 | 6.32 | 1.11 |
types_delete_insert | 8.43 | 6.67 | 0.79 |
writes_mean_multiplier | 0.88 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 96.35 | 39.77 | 2.42 |
tpcc_tps_multiplier | 2.42 |
Overall Mean Multiple | 1.53 |
---|
1.45.4
Merged PRs
dolt
- 8723: If a JSON document contains strings that can't fit in a single chunk, use the naive Blob chunker instead of the smart JSON chunker.
The JSON chunker never creates a chunk boundary inside of a string.
Originally, this PR added functionality to allow the JSON chunker to split JSON document inside a string. This was supposed to be safe and backwards compatible, because older versions of Dolt reading documents written by newer versions of Dolt are supposed to fall back on ignoring JSON document metadata if they don't understand it and treat the document like a blob.
However, tests revealed that older clients were not checking for this in enough places and would hang when trying to read documents written with this fix. This PR also contains fixes to check the JSON metadata in more places... but this doesn't do anything for existing Dolt servers running older versions.
So instead, this PR detects when a document contains strings that exceed some limit, and instead the writer falls back on writing the document as a plain blob without metadata. The limit is currently 32KB, but can be raised in the future.
I chose to keep the logic for splitting JSON documents inside a string, although the chunker doesn't currently use it, since we may decide to enable it in the future.
Closed Issues
1.45.3
Merged PRs
dolt
- 8722: Add "dolt_optimize_json" system variable.
When set to 0, Dolt will write Json documents to storage as simple blobs instead of path-indexed trees.
This is useful as a workaround to a current issue where the JSON chunker won't chunk in the middle of large string literals, resulting in larger-than-expected chunks. - 8721: Updating journal to allow chunk records larger than 1MB
Also adds tests for JSON cases that triggered these larger chunks - 8720: unhide
dolt ci
commands - 8713: Allow storing/reading 32 bit offsets in nodes.
This change allows future node messages to use 32 bit offsets in their encoding.
This increases the side of the Node struct, but given that each Node is much smaller than the message that it backs, this isn't really a memory concern.
Currently, none of the node types use this, so this change shouldn't have any immediate effect on observable behavior. - 8708: dolt bootstrap refactor
This change alters the way we resolve the data-dir and initialized dolt processes. It originated from discovering that the tmp dirreplace
test at startup was leaving a test file in the current working directory. Long story short - the resolution of data-dir was too late in the process startup when sql-server was starting.
External behavior which will change:- Specifying
data_dir
in sql-server config file will correctly test the ability to rename files on the same partition, and override the TMPDIR environment variable when necessary, using $DATADIR/tmp when the user specified directory is on the wrong partition - Fail to start the server when the data-dir is specified multiple times. This will result in server startup failure for existing deployments which "work" (we choose the data-dir deterministically now, but not in the expected precedence)
Fixes: #8498
- Specifying
- 8668: Bump golang.org/x/crypto from 0.23.0 to 0.31.0 in /go
Bumps golang.org/x/crypto from 0.23.0 to 0.31.0.Commits
b4f1988
ssh: make the public key cache a 1-entry FIFO cache7042ebc
openpgp/clearsign: just use rand.Reader in tests3e90321
go.mod: update golang.org/x dependencies8c4e668
x509roots/fallback: update bundle6018723
go.mod: update golang.org/x dependencies71ed71b
README: don't recommend go get750a45f
sha3: add MarshalBinary, AppendBinary, and UnmarshalBinary36b1725
sha3: avoid trailing permutation80ea76e
sha3: fix padding for long cSHAKE parametersc17aa50
sha3: avoid buffer copy- Additional commits viewable in compare view
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/crypto&package-manager=go_modules&previous-version=0.23.0&new-version=0.31.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/dolthub/dolt/network/alerts).
Closed Issues
- 7512: Dolt binlog Provider Support
- 1992:
dolt branch -d
can't delete remote branches - 1492:
dolt checkout
should support a commit + table argument - 6207:
fetch
way slower thanclone
- 8548: Dolt reset should stage working set
- 8585: Tool dolphie needs
@@admin_version
system variable to return a numeric type. - 8635: "AS OF" doesn't work with partial commit hashes, trying to improvise this crashes Dolt
- 8712: I'm pushing to self-hosting (DoltLab error occurred)
- 8592: Make Dolt work with mydumper
- 8498: tmpDir doesn't seem to be configurable
1.45.2
Merged PRs
dolt
go-mysql-server
- 2802: exempt processlist column renaming through aliases
needed for dolphie to work; extension of dolthub/go-mysql-server#2764 - 2800: Pass metrics server listener to DefaultProtocolListenerFunc for doltgres metrics
vitess
- 393: fix
starting by
andterminated by
order
thestarting by
andterminated by
clauses inload data
statements can appear in any order and any number of times. - 392: [sqltypes] no value buffer leakage
Closed Issues
- 8706: LOAD DATA INFILE syntax error on different order of params 'starting by' and 'terminated by'
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.89 | 0.62 | 0.33 |
groupby_scan | 13.46 | 16.71 | 1.24 |
index_join | 1.44 | 2.3 | 1.6 |
index_join_scan | 1.42 | 1.44 | 1.01 |
index_scan | 34.33 | 30.26 | 0.88 |
oltp_point_select | 0.18 | 0.27 | 1.5 |
oltp_read_only | 3.49 | 5.28 | 1.51 |
select_random_points | 0.33 | 0.59 | 1.79 |
select_random_ranges | 0.37 | 0.62 | 1.68 |
table_scan | 34.33 | 33.12 | 0.96 |
types_table_scan | 74.46 | 108.68 | 1.46 |
reads_mean_multiplier | 1.27 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.9 | 6.21 | 0.7 |
oltp_insert | 4.1 | 3.07 | 0.75 |
oltp_read_write | 8.9 | 11.45 | 1.29 |
oltp_update_index | 4.18 | 3.13 | 0.75 |
oltp_update_non_index | 4.18 | 3.07 | 0.73 |
oltp_write_only | 5.67 | 6.21 | 1.1 |
types_delete_insert | 8.28 | 6.55 | 0.79 |
writes_mean_multiplier | 0.87 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 96.01 | 40.05 | 2.4 |
tpcc_tps_multiplier | 2.4 |
Overall Mean Multiple | 1.51 |
---|
1.45.1
Merged PRs
dolt
- 8699: [sqle] Fix diff table merge join bugs
Inappropriately using kv merge join, in several ways. No diff table support both for kvexec and diff table indexes aren't sorted, so default merge also fails. Test suite was also being skipped.
GMS side here: dolthub/go-mysql-server#2803
fixes: #8700 - 8698: Replace
cespare/xxhash
withcespare/xxhash/v2
Currently, we are using two versions of the same package for xxHash:
https://github.com/dolthub/dolt/blob/d98baafd3e8248a9818e21442f4dfbdeffe78ac4/go/go.mod#L56-L57
github.com/cespare/xxhash/v2
is the latest version, which includes bug fixes and improvements. This PR updates the codebase to replacegithub.com/cespare/xxhash
withgithub.com/cespare/xxhash/v2
.
No breaking changes, see https://go.dev/play/p/ZXuwERoBlEi. - 8691: cache charset bump
- 8684: [stats] stats table name sensitivity tests
Fix bugs related to table casing, loading deleted tables, and making sure we're using the appropriate branch root when updating statistics.
go-mysql-server
- 2803: [memo] merge joins must use globally sorted indexes
- 2802: exempt processlist column renaming through aliases
needed for dolphie to work; extension of dolthub/go-mysql-server#2764 - 2799: pool wire write buffer
BytesBuffer
is a class that lets us avoid most allocations for spooling values to wire. Notably, the object is responsible for doubling the backing array size when appropriate, and aGrow(n int)
interface is necessary to track when this should happen. Letting the runtime do all of this would be preferable, but the runtime doubles based on slice size, and the refactors required to make that workable are more invasive. We pay for 2 mallocs on doubling, because the first one is never big enough. Not callingGrow
after allocing, or growing by too small of length compared to the allocations used will stomp previously written memory.
As long as we track bytes used with theGrow
interface this works smoothly and shaves ~30% off of tablescans.
perf here: #8693 - 2798: cache session charset
perf: #8691 - 2796: apply table projections through
Distinct
nodes
We weren't pruning table columns when there was a distinct clause over the projections, this resulted the deserialization of every column, even if they weren't going to make it to the result. This is bad for performance, especially if the unread columns are ofTEXT
,LONGTEXT
, 'BLOB,
LONGBLOB` type as those are stored out of band, and take longer to deserialize.
fixes: #8689 - 2795: allow using function as table function
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.
Closed Issues
- 8700: Panic in join against diff table
- 8689: Prune columns from select distinct
- 8688: P
- 2790: Any plan to make a new patch release?
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.89 | 0.61 | 0.32 |
groupby_scan | 13.22 | 16.12 | 1.22 |
index_join | 1.47 | 2.3 | 1.56 |
index_join_scan | 1.42 | 1.39 | 0.98 |
index_scan | 34.33 | 30.26 | 0.88 |
oltp_point_select | 0.18 | 0.26 | 1.44 |
oltp_read_only | 3.43 | 5.18 | 1.51 |
select_random_points | 0.34 | 0.57 | 1.68 |
select_random_ranges | 0.37 | 0.61 | 1.65 |
table_scan | 34.33 | 32.53 | 0.95 |
types_table_scan | 74.46 | 104.84 | 1.41 |
reads_mean_multiplier | 1.24 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 9.06 | 6.21 | 0.69 |
oltp_insert | 4.1 | 3.07 | 0.75 |
oltp_read_write | 8.9 | 11.24 | 1.26 |
oltp_update_index | 4.18 | 3.13 | 0.75 |
oltp_update_non_index | 4.18 | 3.02 | 0.72 |
oltp_write_only | 5.67 | 6.21 | 1.1 |
types_delete_insert | 8.43 | 6.55 | 0.78 |
writes_mean_multiplier | 0.86 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 96.04 | 40.4 | 2.38 |
tpcc_tps_multiplier | 2.38 |
Overall Mean Multiple | 1.49 |
---|
1.45.0
Backwards incompatible change in this release:
- This release has a small behavior change to the
dolt_diff_$table
results. Previously changes to the schema of the table, in particular primary key changes, resulted in only the history of the table which was related to the most recent schema. Now thedolt_diff_$table
system table will make a best effort to include more history for the table even if we can't perfectly map schema changes.
Per Dolt’s versioning policy, this is a minor version bump because these changes may impact existing applications. Please reach out to us on GitHub or Discord if you have questions or need help with any of these changes.
Merged PRs
dolt
- 8685: update TableFunction
- 8631: Give a little more information in dolt_diff_* when there is a pk change
This change makes the dolt_diff_* system table a little more forgiving when schema changes occur that we can kind of map from one commit to the next. In the case of the issue, adding a primary key to a key keyless table. This doesn't work in both directions though - if you can't map the schema, we stop walking history (same as before).
Minor bump required due to behavior of the dolt_diff_* table changing are a result of this change.
Fixes: #8625
go-mysql-server
- 2795: allow using function as table function
- 2794: Bump go-icu-regex
Incorporates the fix from here:
Closed Issues
- 8625: dolt_diff_* returns empty set for tables altered to add a PK after creating using CREATE TABLE ... AS SELECT
- 8683:
dolt table import
does not understand a schema file with a primary key defined separately from the column - 8665: Panic on dolt_diff_* with generated column
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 0.62 | 0.32 |
groupby_scan | 13.46 | 16.41 | 1.22 |
index_join | 1.47 | 2.26 | 1.54 |
index_join_scan | 1.42 | 1.47 | 1.04 |
index_scan | 34.33 | 46.63 | 1.36 |
oltp_point_select | 0.18 | 0.27 | 1.5 |
oltp_read_only | 3.49 | 5.37 | 1.54 |
select_random_points | 0.33 | 0.6 | 1.82 |
select_random_ranges | 0.37 | 0.62 | 1.68 |
table_scan | 34.33 | 46.63 | 1.36 |
types_table_scan | 74.46 | 123.28 | 1.66 |
reads_mean_multiplier | 1.37 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.9 | 6.21 | 0.7 |
oltp_insert | 4.1 | 3.07 | 0.75 |
oltp_read_write | 8.9 | 11.45 | 1.29 |
oltp_update_index | 4.18 | 3.13 | 0.75 |
oltp_update_non_index | 4.18 | 3.07 | 0.73 |
oltp_write_only | 5.77 | 6.21 | 1.08 |
types_delete_insert | 8.43 | 6.55 | 0.78 |
writes_mean_multiplier | 0.87 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 95.58 | 40.6 | 2.35 |
tpcc_tps_multiplier | 2.35 |
Overall Mean Multiple | 1.53 |
---|
1.44.4
Merged PRs
dolt
go-mysql-server
Closed Issues
- 8670: Setting metrics port to
null
in config.yaml panics
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 0.62 | 0.32 |
groupby_scan | 13.7 | 16.41 | 1.2 |
index_join | 1.44 | 2.3 | 1.6 |
index_join_scan | 1.42 | 1.47 | 1.04 |
index_scan | 34.33 | 46.63 | 1.36 |
oltp_point_select | 0.18 | 0.27 | 1.5 |
oltp_read_only | 3.49 | 5.37 | 1.54 |
select_random_points | 0.34 | 0.59 | 1.74 |
select_random_ranges | 0.37 | 0.62 | 1.68 |
table_scan | 34.33 | 46.63 | 1.36 |
types_table_scan | 75.82 | 123.28 | 1.63 |
reads_mean_multiplier | 1.36 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.74 | 6.21 | 0.71 |
oltp_insert | 4.03 | 3.07 | 0.76 |
oltp_read_write | 8.9 | 11.45 | 1.29 |
oltp_update_index | 4.1 | 3.13 | 0.76 |
oltp_update_non_index | 4.18 | 3.07 | 0.73 |
oltp_write_only | 5.57 | 6.21 | 1.11 |
types_delete_insert | 8.28 | 6.55 | 0.79 |
writes_mean_multiplier | 0.88 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 97.12 | 41.19 | 2.36 |
tpcc_tps_multiplier | 2.36 |
Overall Mean Multiple | 1.53 |
---|
1.44.3
Merged PRs
dolt
- 8677: parse user vars as
interface{}
instead of alwaysstring
The variable defined for the YAML Marshaller to write user variables to was defined as amap[string]string
, which caused all variables to be read as a string even when they weren't quoted. Changing it to amap[string]interface{}
fixes that.
fixes: #8672 - 8675: chore: use errors.New to replace fmt.Errorf with no parameters
use errors.New to replace fmt.Errorf with no parameters - 8674: [stats] persist schema hashes for purging
We previously would flush stats when an active server detected schema changes, but the same problem affects initializing a server's stats after offline table alters. The prototype here uses tags to persist schema hashes so that we detect differences between stored and present table changes.
Additional improvements to debug logging and error handling. Fixes a separate bug related to re-initializing database statistics after a drop within the same server lifetime.
Note: There are interruption points in-between detecting schema changes, deleting the schema tags, and deleting the data off disk. There is also an interruption point between writing a schema tag and writing the associated data. I've tried structuring the orderings so that the worst-case scenario is we have to do repeated stats collection work:- stats data is only ever written after an associated schema tag is written
- we delete the tags before deleting data, and missing tags indicates invalid data
So an interrupted delete will continue to delete after the process is picked up. And an interrupted write will be missed and have to be recollected.
- 8673: fix panic for virtual columns in
dolt_diff_<tbl>
This PR fixes the panic when attempting to view a diff on a table with virtual generated columns by just skipping over the values.
Ideally, we'd be able to resolve the generated column values themselves and show the diff, but that is not near at hand.
Fixes: #8665 - 8669: Add BATS tests to cover
caching_sha2_password
use withmysql
client - 8667: README update
Added link to blog post with more info on the removal ofmysql_native_password
authentication in MySQL-9.0 and how to use Dolt's new support forcaching_sha2_password
authentication. - 8650: Enable larger statements for dolt_procedures
Increase the supported stored procedure length from 1K to 8K.
go-mysql-server
- 2793: Revert byte copying optimization
- 2792: Fix the warning checks in enginetest to be more strict
Previously if an error was expected but none was produced the test would pass. - 2791: Properly cast
ENUM
s toTEXT
forCASE
andCONVERT
statements
fixes: #8598 - 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
Closed Issues
- 8598: enum conversion type has unexpected results
- 8672: Can't set a numeric session variable using
user_session_vars
section of config.yaml - 8592: Make Dolt work with mydumper
- 8665: Panic on dolt_diff_* with generated column
- 8496: Support
caching_sha2_password
authentication method - 8642: Getting error for
select * from dolt_procedures
for repo used in dolt docs
1.44.2
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
1.44.1
Merged PRs
dolt
- 8653: Bug fix: replication fails when a branch is deleted and tag with same name is created
Our logic to update refs in a read replica was tracking updated refs by path, so when branchb1
was deleted and tagb1
was added, the code was mixing them up and trying to update the branch with the tag ref.
The fix is to track replicated refs by ID, instead of by path, to avoid collisions. This also changes the first return parameter of thepullBranches
function, but none of the three places that call this function assign that first return param to a variable, so that change doesn't affect anything. - 8643: Support for schema names in table renames
Also support for changes in enginetest harness setup in GMS
go-mysql-server
- 2784: implement
EXPLAIN
andEXPLAIN PLAN
Moving our current implementation ofEXPLAIN
toEXPLAIN PLAN
, and replaceEXPLAIN
with a dummy implementation of MySQL'sEXPLAIN
Looks like this now:related: #8592tmp2/main> explain select * from t; +----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+ | 1 | SELECT | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | +----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+ 1 row in set (0.00 sec) tmp2/main> explain plan select * from t; +------------------+ | plan | +------------------+ | Table | | ├─ name: t | | └─ columns: [i] | +------------------+ 3 rows in set (0.00 sec)
Closed Issues
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.89 | 0.62 | 0.3 |
groupby_scan | 13.22 | 16.71 | 1.3 |
index_join | 1.47 | 2.3 | 1.6 |
index_join_scan | 1.42 | 1.44 | 1.0 |
index_scan | 34.33 | 52.89 | 1.5 |
oltp_point_select | 0.18 | 0.27 | 1.5 |
oltp_read_only | 3.49 | 5.47 | 1.6 |
select_random_points | 0.34 | 0.65 | 1.9 |
select_random_ranges | 0.37 | 0.65 | 1.8 |
table_scan | 34.33 | 52.89 | 1.5 |
types_table_scan | 75.82 | 142.39 | 1.9 |
reads_mean_multiplier | 1.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 9.06 | 6.21 | 0.7 |
oltp_insert | 4.1 | 3.07 | 0.7 |
oltp_read_write | 9.06 | 11.87 | 1.3 |
oltp_update_index | 4.18 | 3.13 | 0.7 |
oltp_update_non_index | 4.18 | 3.07 | 0.7 |
oltp_write_only | 5.77 | 6.21 | 1.1 |
types_delete_insert | 8.43 | 6.67 | 0.8 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 96.27 | 40.66 | 2.4 |
tpcc_tps_multiplier | 2.4 |
Overall Mean Multiple | 1.57 |
---|