Merged PRs
dolt
- 5921: go: doltdb: hooksdatabase.go: Execute commit hooks in parallel so that synchronous commit hooks do not serialize on each other.
- 5919: sql-server:
dolt_log_level
system variable allows reading the current log level for the server and setting a new one.
Written values do not persist across server restarts. - 5918: Remove cry for help from
dolt sql --help
Fixes #5916
Fixes #5920 - 5902: go/store/datas/pull/clone.go: Fix to clone to interact with sql-server remotes better.
Before this fix, |dolt clone| against a sql-server remote can fail with a confusing error message if the sql-server has a chunk journal. Adding the chunk journal to our destination ChunkStore causes us to update the root hash, which the Clone code was not expecting.
This change updates the Clone code to look for the possible update to the destination's root hash and to not try to set the root hash on the ChunkStore if it has already been done by the code handling the chunk journal. - 5899: go: sqle: dolt_gc.go: Disable CALL dolt_gc() on a standby replica, where it is not currently safe. Shallow GC is still available.
- 5895: add support for
ALTER EVENT
Depends on dolthub/go-mysql-server#1754 - 5894: batsee --output dir
An inevitable change to make the output directory of batsee configurable. Refactored the configuration struct to make changes like this a little easier. - 5892: Fix binlog connection re-establishment when connection closes between messages
This PR changes our handling ofio.EOF
to trigger our connection re-establishment logic. Previously, onlyio.UnexpectedEOF
was triggering a connection re-establishment.
We found this by digging into some flakiness in theTestBinlogReplicationAutoReconnect
test:- https://github.com/dolthub/dolt/actions/runs/4888594518/jobs/8726401205
- https://github.com/dolthub/dolt/actions/runs/4888594518/jobs/8726401205
- https://github.com/dolthub/dolt/actions/runs/4888566463/jobs/8726344999
This test is a little more complex than the other binlog replication tests – it uses Toxiproxy to simulate a dying connection to test the automatic reconnection feature.
- 5890: normalize windows file paths better
Depending on if the windows file paths start withfile:///C:...
orfile://C:...
, the url package would parse these slightly differently. As a result, the environment would be stored in the singleton under one path, and retrieved with a different one, causing errors.
fix for: #5780 - 5885: go/libraries/doltcore/env/actions: remotes.go: Have fetch pull all the branch heads at once.
Also avoids round-tripping to the remote to load a commit whose value we do not need yet. - 5884: Refactor SQLEngine instantiation into the Queryist interface
SQL Command arguments which pertain to instantiating a local SqlEngine instance are now global arguments which come before the sql subcommand. This is a breaking change for users of thesql
command who pass in the following arguments:- --data-dir
- --user
- --doltcfg-dir
- --privilege-file
- --branch-control-file
Step on the path to: #3922
- 5881: Remove overzealous validation check.
This check appears to be redundant, in order to fail early and return a more helpful error message. But it's not helpful if it's wrong... which it is. It errors fast on inputs that should be correct (such as auto-increment columns), and it not only fails on the example from #5855, but it would prevent us from implementing a permanent fix.
Removing the check, all tests still pass, because invalid imports are still detected by the remaining checks. - 5874: go/doltcore/merge: use unresolved-aware fk matching method in Foreign…
…KeysMerge
fix for #5531 - 5870: Improve dolt_ignore pattern rules
This PR does two things:- introduces % as an alias for *, since % is the SQL wildcard
- adds an additional check for dolt_ignore rules that are equivalent but have different
ignored
values.
- 5868: go through primary keys backwards
This PR implements an iterator to go over Primary Keys backwards, allowing us to order by descending quickly.
Companion PR: dolthub/go-mysql-server#1742
Fix for: #5812 - 5856: fix empty string import for ENUM and SET types
- 5844: Mention official Arch Linux packaging in README
I've been maintaining the AUR recipe for dolt since 2021 and updated it for almost all the releases since 0.28.4. I've now migrated the packaging from the AUR to prebuilt packages in the official Arch Linux repos.
go-mysql-server
- 1770: Union offset+limit bug
Unions were dropping limit, applying offset as limit. - 1763: prevent large varbinary column from being created
We don't enforce column size limit forvarbinary
, causing panics.
fix for: #5059 - 1762: Add support for
ALTER TABLE <table> MODIFY COLUMN <col> <type> UNIQUE
This is a MySql syntax that is effectively syntactic sugar forALTER TABLE <table> MODIFY COLUMN <col> <type>; ALTER TABLE <table> ADD UNIQUE INDEX `<col>` (col);
- 1760: sql/core.go: SystemVariable: Add a NotifyChanged field which can be used to be notified when the variable value changes.
- 1759: server/server.go: Log a message when we start accepting connections.
- 1756: Allow all built-in functions to be used in column default value expressions
We currently maintain an allow list of functions that can be used in column default value expressions. MySQL has changed what they support in column default value expressions over time and the current support allows all built-in functions to be used.
This PR removes our allow list so that any function registered as a built-in function can be used in a default expression.
Fixes #5887 - 1754: support
ALTER EVENT
statement
Support forALTER EVENT
statements excluding case for moving events across databases usingRENAME TO
clause.
Depends on dolthub/vitess#233 - 1744: Adding tests for altering keyless tables
Added tests to cover basic keyless table column alterations, to test Dolt change in #5867 - 1742: convert sort over pks with index
This PR fixes some issues with the implementation of the rulereplaceSortPk
. Namely, the rule now works with bothTableAliases
,ColumnAliases
, andSubqueriyAliases
.
Additionally, the rule is able to be applied when sorting inDescending
order.
Overally, this means queries likeselect * from t order by pk desc limit 1
will just be aLimit
over anIndexTabledAccess
Fix for: #5812
vitess
- 235: Add support for
INSERT INTO <table> VALUE ...
;
Adds support forVALUE
as a synonym ofVALUES
inINSERT INTO <table> VALUES ...
, to match MySQL's syntax.
Fixes dolthub/go-mysql-server#1750 - 234: go/netutil/conn.go: Avoid panicing when ConnWithTimeouts has a Set{,}Deadline method called.
Clients does not expect setting deadlines on connections to panic. In particular, the standard library's TLS implementation adopts an existing net.Conn and will call SetWriteDeadline on it in certain cases.
It makes more sense to allow the deadlines to be managed by the client when they see fit. This changes the behavior to simply forward the deadlines along as soon as the client code has shown an interest in managing the deadlines. - 233: support parsing
ALTER EVENT
statements
Supports parsingALTER EVENT
statements
Closed Issues
- 3604: Set log_level with a system variable
- 5920:
dolt stash --help
causes SIGSEV - 5916:
dolt sql --help
displays "Help" instead of helpstring - 4599: Dropping a table then reimporting with inferred schema creates new tags unexpectedly
- 4527:
dolt revert
violatesNOT NULL
constraint - 5673: out of range error on aggregate query
- 5028: can't add a unique key using
alter table $tbl modify $col
- 5059: panic on large
varbinary
insert - 5812: Slow select order by limit
- 5693: Comparison type overflows
- 5875: Subquery expression -> union->recursiveCTE expression missing finalization rules
- 5807: ENUMs treat empty strings "" as if they were on CSV import, resulting in error
- 5845: Memory leak
- 5848: dolt table import requires an empty column for AUTO_INCREMENT columns
- 5887: Error should be "function
m5hash
does not exists" not "functionm5hash
on columnid
is not valid for usage in a default value - 5780:
dolt sql-server
fails ifdatabases
is configured in yaml - 1750: [Feature Request] Support for
INSERT INTO ... VALUE
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.71 | 1.4 |
groupby_scan | 12.3 | 16.12 | 1.3 |
index_join | 1.16 | 4.03 | 3.5 |
index_join_scan | 1.12 | 2.07 | 1.8 |
index_scan | 30.26 | 54.83 | 1.8 |
oltp_point_select | 0.15 | 0.49 | 3.3 |
oltp_read_only | 2.91 | 8.58 | 2.9 |
select_random_points | 0.3 | 0.74 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.81 | 55.82 | 1.8 |
types_table_scan | 70.55 | 173.58 | 2.5 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 7.3 | 6.91 | 1.0 |
oltp_insert | 3.49 | 3.3 | 1.0 |
oltp_read_write | 7.43 | 15.83 | 2.1 |
oltp_update_index | 3.49 | 3.36 | 1.0 |
oltp_update_non_index | 3.75 | 3.3 | 1.0 |
oltp_write_only | 4.74 | 7.84 | 1.7 |
types_delete_insert | 7.43 | 7.56 | 1.0 |
writes_mean_multiplier | 1.2 |
Overall Mean Multiple | 1.9 |
---|