github dolthub/dolt v0.75.0
0.75.0

latest releases: v1.43.1, v1.43.0, v1.42.20...
19 months ago

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 for dolt stash.
    • fixed untracked files being dropped when stashing working set of changes.
  • 5501: Minor bug fixes for MySQL binlog replication
    Fixes a nil pointer dereference when filters is set to nil after RESET 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 in dolt_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 results
    goos: 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 where START REPLICA and STOP REPLICA weren't working correctly. There were two major cases where the binlog replication applier routine was blocking and not processing the stopReplication 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 blocking conn.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 on dolt 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 of SHOW 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 the time library, and the behavior is consistent with our existing DAY(), MONTH() and YEAR() 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 fix NOT operator not working for UPDATE trigger
    • ! was not supported for IF clause in TRIGGER statements
    • NOT clause was not working for UPDATE 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.
  • 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 during dolt 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 and dolt_reset in read-only mode
  • 2429: Intra-column diff for text / JSON fields
  • 1311: dolt_schemas should be protected from DROP 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

Don't miss a new dolt release

NewReleases is sending notifications on new releases.