This release turns on ACID transactions by default. 0.75.0 is meant to signify the last major release before Dolt 1.0.
Merged PRs
dolt
- 5520: go/perf/sysbench: reconfigure MySQL to use same durability level as Dolt w/ chunk journal
- 5515: go/doltcore/sqle: fix FK checks on drop PK to look at correct Fks
- 5507: fix panic from adding spatial index to non-empty table
- 5503: Display DDL for views and triggers in dolt diff
Second attempt of botched PR: #5476 - 5502: support staged set of changes for
dolt stash
- added support for handling staged set of changes for
dolt stash
. - added support for
--include-untracked
flag fordolt stash
. - fixed untracked files being dropped when stashing working set of changes.
- added support for handling staged set of changes for
- 5501: Minor bug fixes for MySQL binlog replication
Fixes a nil pointer dereference whenfilters
is set tonil
afterRESET REPLICA ALL
. Adds a test for that case and a test for handling very long hostnames. - 5500: Remove obsolete DOLT_DEV NomsBinFormat.
- 5499: Fix
schema_change
column indolt_diff_summary
reporting false for foreign key changes - 5497: go/store/prolly/tree: assert sorted edits in ApplyMutations
- 5496: go/store/types: Thread context on Less and Compare.
- 5485: go/store/types: Remove bufferedChunks from ValueStore.
- 5484: go/store/skip: speedup skip list
micro benchmark resultsgoos: darwin goarch: amd64 pkg: github.com/dolthub/dolt/go/store/skip cpu: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz │ before │ after │ │ sec/op │ sec/op vs base │ Get/unsorted_keys/n=64-12 182.65n ± 12% 90.91n ± 5% -50.23% (p=0.000 n=10) Get/unsorted_keys/n=2048-12 334.8n ± 7% 186.5n ± 4% -44.30% (p=0.000 n=10) Get/unsorted_keys/n=65536-12 670.1n ± 5% 475.7n ± 4% -29.02% (p=0.000 n=10) Get/ascending_keys/n=64-12 188.75n ± 11% 88.27n ± 7% -53.24% (p=0.000 n=10) Get/ascending_keys/n=2048-12 318.8n ± 3% 156.1n ± 7% -51.03% (p=0.000 n=10) Get/ascending_keys/n=65536-12 470.0n ± 8% 218.7n ± 5% -53.47% (p=0.000 n=10) Get/descending_keys/n=64-12 214.90n ± 11% 90.30n ± 5% -57.98% (p=0.000 n=10) Get/descending_keys/n=2048-12 305.3n ± 7% 151.1n ± 3% -50.50% (p=0.000 n=10) Get/descending_keys/n=65536-12 467.3n ± 9% 217.5n ± 6% -53.46% (p=0.000 n=10) Put/unsorted_keys/n=64-12 263.2n ± 11% 106.6n ± 6% -59.53% (p=0.000 n=10) Put/unsorted_keys/n=2048-12 397.1n ± 8% 206.0n ± 2% -48.12% (p=0.000 n=10) Put/unsorted_keys/n=65536-12 686.8n ± 5% 449.4n ± 2% -34.55% (p=0.000 n=10) Put/asending_keys/n=64-12 232.15n ± 41% 89.07n ± 6% -61.63% (p=0.000 n=10) Put/asending_keys/n=2048-12 365.2n ± 13% 143.1n ± 9% -60.82% (p=0.000 n=10) Put/asending_keys/n=65536-12 451.4n ± 9% 206.5n ± 7% -54.27% (p=0.000 n=10) Put/descending_keys/n=64-12 188.25n ± 14% 71.79n ± 4% -61.86% (p=0.000 n=10) Put/descending_keys/n=2048-12 209.30n ± 27% 83.79n ± 3% -59.97% (p=0.000 n=10) Put/descending_keys/n=65536-12 229.2n ± 9% 102.2n ± 1% -55.38% (p=0.000 n=10) IterAll/unsorted_keys/n=64-12 469.6n ± 10% 166.2n ± 1% -64.61% (p=0.000 n=10) IterAll/unsorted_keys/n=2048-12 18.622µ ± 8% 9.711µ ± 1% -47.85% (p=0.000 n=10) IterAll/unsorted_keys/n=65536-12 1214.1µ ± 5% 950.5µ ± 4% -21.71% (p=0.000 n=10) IterAll/asending_keys/n=64-12 456.8n ± 22% 167.4n ± 1% -63.36% (p=0.000 n=10) IterAll/asending_keys/n=2048-12 16.380µ ± 10% 7.829µ ± 8% -52.20% (p=0.000 n=10) IterAll/asending_keys/n=65536-12 598.6µ ± 8% 313.7µ ± 4% -47.60% (p=0.000 n=10) IterAll/descending_keys/n=64-12 483.3n ± 28% 166.3n ± 1% -65.58% (p=0.000 n=10) IterAll/descending_keys/n=2048-12 17.414µ ± 16% 7.964µ ± 4% -54.27% (p=0.000 n=10) IterAll/descending_keys/n=65536-12 621.1µ ± 12% 338.9µ ± 3% -45.45% (p=0.000 n=10) geomean -52.90%
- 5477: Use row data hash to determine if table delta data changed
- 5476:
dolt diff
behavior for dolt_schema table updated show DDL changes
#5388
Example new behavior:lcl:~/Documents/data_dir_1/db1$ dolt diff HEAD~4 HEAD~3 dolt_schemas diff --dolt a/dolt_schemas b/dolt_schemas --- a/dolt_schemas @ p4j8pfq3pmub8fmketaes8ek0ghvgg1s +++ b/dolt_schemas @ bkf872if6l5jd79ue0130c90u8qh5o36 create view males -as select first_name +as select first_name,last_name from people where gender = "M";
lcl:~/Documents/data_dir_1/db1$ dolt diff HEAD~2 HEAD dolt_schemas diff --dolt a/dolt_schemas b/dolt_schemas --- a/dolt_schemas @ m12an7km8tnft6hole0185ds1d91n5is +++ b/dolt_schemas @ l8sa0c199fmng777t3v6mtjrfs1h5vdp CREATE TRIGGER avg_age AFTER INSERT ON people for each row - update average_age set average = (SELECT AVG(age)); + update average_age set average = (SELECT AVG(age) FROM people);
lcl:~/Documents/data_dir_1/db1$ dolt diff HEAD~5 HEAD dolt_schemas diff --dolt a/dolt_schemas b/dolt_schemas --- a/dolt_schemas @ 8nlac0sjnoetmcv01ps7phe5bp6mf9p3 +++ b/dolt_schemas @ l8sa0c199fmng777t3v6mtjrfs1h5vdp +CREATE TRIGGER avg_age AFTER INSERT ON people +for each row + update average_age set average = (SELECT AVG(age) FROM people); +create view males +as select first_name,last_name +from people +where gender = "M"; lcl:~/Documents/data_dir_1/db1$ dolt diff HEAD HEAD~5 dolt_schemas diff --dolt a/dolt_schemas b/dolt_schemas --- a/dolt_schemas @ l8sa0c199fmng777t3v6mtjrfs1h5vdp +++ b/dolt_schemas @ 8nlac0sjnoetmcv01ps7phe5bp6mf9p3 -CREATE TRIGGER avg_age AFTER INSERT ON people -for each row - update average_age set average = (SELECT AVG(age) FROM people); -create view males -as select first_name,last_name -from people -where gender = "M";
- 5460: Include all diff columns when a table is created or dropped
#5439 - 5450: MySQL replication fixes for
START/STOP REPLICA
I found a few places whereSTART REPLICA
andSTOP REPLICA
weren't working correctly. There were two major cases where the binlog replication applier routine was blocking and not processing thestopReplication
signal:- during connection retry and backoff
- while blocking and waiting to read more binlog events over the MySQL connection
I restructured how those cases work, including pulling out a separate goroutine that makes the blockingconn.ReadBinlogEvent()
call and then feeds the results back to the applier routine through channels.
- 5430: go/store/nbs: turn on chunk journal by default
- 5422: add
dolt stash
First pass ondolt stash
commands include:dolt stash
dolt stash pop [<stash>]
dolt stash drop [<stash>]
dolt stash clear
dolt stash list
No optional flags are supported for above commands.
Staged changes are not handled in this version.
Available only as CLI commands
go-mysql-server
- 1638: Fixing incorrect size for
SOURCE_HOST
member ofSHOW REPLICA STATUS
- 1637: Workaround for Issue 5482
This is a workaround for #5482. This isn't a true fix as the behavior is wrong, but will at least unblock the user. I'm currently working on proper collation coercion handling, so this will be replaced in relatively short order. - 1635: Better error message for cannot drop index
- 1634: add support for
EXTRACT
fix for: #3006
We don't support 0 for year, month, day, but MySQL does...
I didn't fix here, because it seems to be a problem stemming from thetime
library, and the behavior is consistent with our existingDAY()
,MONTH()
andYEAR()
functions. - 1631: Nil operand in outer join smarter about identifying nil's source rel
We falsely attributed a nil operand to the left relation, early triggering the left outer join nil return path. Rather than iterate the row from left to right, use the comparison expression to directly evaluate for whether left comparison expr is nil. - 1630: Fix update resolve table bug
- 1629: add support for
!
and fixNOT
operator not working for UPDATE trigger!
was not supported forIF
clause inTRIGGER
statementsNOT
clause was not working forUPDATE
TRIGGER
statements
- 1625: return error for attempting to drop view with drop table statement
- using
DROP TABLE
to drop view returns error - dropping non existent table with
DROP TABLE IF EXISTS
creates note warning.
- using
- 1605: Fix permissions on all Go files
Some of the .go files don't have the usual 0644 permissions.
Fix the permissions of all .go files:
git ls-files | grep '.go$' | xargs chmod 0644 - 1604: memory: use map lookup for rename index
Slight improvement in the memory/ db implementation, instead of iterating over all the indexes, use a map lookup. - 1603: driver/: implement last insert id for ok result
Fixes #1602
vitess
- 224: reorganizing time units and add extract syntax support
syntax to fix: #3006 - 223: Made signal conditions accept vars
Partially addresses #5452
Closed Issues
- 5519: Aliases in UPDATE query leads to error
- 5481: update join combined with CTE throws error
- 5388:
dolt_schemas
elements should show as equivalent SQL statements duringdolt diff
- 5482: Cannot connect using MySQL client due to error: Illegal mix of collations
- 3006: Support the EXTRACT function
- 5439: dolt_diff() missing
from_
columns when table created - 573: Implement
dolt stash
- 5392: Latest dolt panics when dealing with nested aliases
- 1860: support dolt clone file:///somepath-to-a-dolt-repo
- 4925: DBeaver does not support updating a branch
- 4380: Random failure during push, when folder is on removable media
- 4406: JSON default column normalization issue causing merge conflict
- 4352: Writes using branch reference syntax (ie.
<db>/<branch>
) should fail - 4094:
dolt sql-server
option to disable dolt write functions - 4101: Restrict
dolt_commit
anddolt_reset
in read-only mode - 2429: Intra-column diff for text / JSON fields
- 1311:
dolt_schemas
should be protected fromDROP TABLE ...
- 5434:
DROP TABLE
should return an error if a view is given - 5470: Error: "unsupported feature: unary operator: !" in IF in trigger definition
- 1602: driver/: LastInsertId is not supported
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.66 | 1.4 |
groupby_scan | 12.3 | 16.41 | 1.3 |
index_join | 1.21 | 4.25 | 3.5 |
index_join_scan | 1.16 | 2.07 | 1.8 |
index_scan | 30.81 | 52.89 | 1.7 |
oltp_point_select | 0.15 | 0.48 | 3.2 |
oltp_read_only | 2.97 | 8.58 | 2.9 |
select_random_points | 0.3 | 0.74 | 2.5 |
select_random_ranges | 0.36 | 1.14 | 3.2 |
table_scan | 31.37 | 53.85 | 1.7 |
types_table_scan | 70.55 | 158.63 | 2.2 |
reads_mean_multiplier | 2.3 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.67 | 5.88 | 1.0 |
oltp_insert | 2.66 | 2.86 | 1.1 |
oltp_read_write | 6.79 | 15.55 | 2.3 |
oltp_update_index | 2.81 | 3.02 | 1.1 |
oltp_update_non_index | 2.76 | 2.86 | 1.0 |
oltp_write_only | 3.89 | 7.43 | 1.9 |
types_delete_insert | 5.18 | 6.67 | 1.3 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.9 |
---|