Skip to content

Releases: dolthub/dolt

0.75.0

08 Mar 22:47
Compare
Choose a tag to compare

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: retu...

0.54.2

03 Mar 06:08
Compare
Choose a tag to compare

Merged PRs

dolt

  • 5475: proto/third_party: Bump versions.
  • 5474: go/libraries/doltcore/remotesrv: Add some rudimentary input validation on request messages.
  • 5472: go/store/nbs: fix re-entrant deadlock in journal_writer
  • 5469: bug fix: binlog multi-db support
    We were missing the call to set the session's current database for binlog Query events. This was causing queries to execute against the wrong database when using binlog replication with multiple databases. Our binlog tests didn't catch this because the multi-db tests used fully qualified table names, so it didn't matter what database was currently selected.
    This change adds the call to set the current database and updates the multi-db tests to use a mix of use statements and fully qualified table names (and also cleans up some of our query error logging to make log output more helpful for debugging).
  • 5461: go/doltcore/migrate: modify migrated tuples sink to sort incoming tuples
    #4221 alters tuple ordering for NBF __LD_1__ to sort NULL fields last. In NBF __DOLT__, NULL fields are ordered first. This change to dolt migrate sorts migrated tuples on-the-fly to compensate for this mismatch
  • 5347: add stash to clientEventType

go-mysql-server

  • 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
  • 1627: Made signal statements work with user vars
    Fixes #5452

Closed Issues

  • 5379: Running a GetRepoMetadata request against the remotesrv within the sql-server, without data crashes the sql-server
  • 5470: Error: "unsupported feature: unary operator: !" in IF in trigger definition
  • 3770: Support DELETE JOINs
  • 5452: dolt sql fails fails with "syntax error" on importing a trigger definition
  • 5453: dolt panics in query "unknown type" in memo.go

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.16 4.18 3.6
index_join_scan 1.12 2.07 1.8
index_scan 30.26 51.94 1.7
oltp_point_select 0.15 0.48 3.2
oltp_read_only 3.02 8.43 2.8
select_random_points 0.3 0.74 2.5
select_random_ranges 0.35 1.12 3.2
table_scan 30.81 52.89 1.7
types_table_scan 69.29 158.63 2.3
reads_mean_multiplier 2.3
Write Tests MySQL Dolt Multiple
bulk_insert 0.001 0.001 1.0
oltp_delete_insert 2.61 12.3 4.7
oltp_insert 1.32 2.91 2.2
oltp_read_write 5.0 17.63 3.5
oltp_update_index 1.34 6.09 4.5
oltp_update_non_index 1.34 6.67 5.0
oltp_write_only 2.14 8.9 4.2
types_delete_insert 2.76 13.22 4.8
writes_mean_multiplier 3.7
Overall Mean Multiple 2.9

0.54.1

02 Mar 05:53
Compare
Choose a tag to compare

Merged PRs

dolt

go-mysql-server

  • 1627: Made signal statements work with user vars
    Fixes #5452
  • 1624: Update logger field when a session's database is changed
    We use a connectionDb field to log the session's current database, but we don't always consistently update that logger field in every place where we set the session's current db. This change moves that logger field update directly into BaseSession.SetCurrentDatabase(string) to ensure it always stays in sync.
  • 1619: Memo includes costs and stars best plan
    Debugger memo print includes physical expression incremental processing costs, and stars the group best. The value corresponds to the incremental processing delta of executing an operator compared to a sequential processing of the inputs. The total for a group will be the group costs plus child group costs (recursively).
    Example:
    memo:
    ├── G1: (tableAlias: r 11444774.0)*
    ├── G2: (tableAlias: i 161.0)*
    ├── G3: (mergeJoin 1 2 114447.7) (mergeJoin 2 1 1.6) (hashJoin 1 2 114930.7) (hashJoin 2 1 34334323.6) (lookupJoin 1 2 23003834.7) (lookupJoin 2 1 -11444450.2)* (innerJoin 2 1 1861034699.1) (innerJoin 1 2 1861034699.1)
    ├── G4: (tableAlias: c 12293.0)*
    ├── G5: (hashJoin 3 4 36879.2) (hashJoin 2 12 4058.3) (hashJoin 12 2 496.5) (hashJoin 4 3 176.1) (lookupJoin 3 4 -12257.4)* (lookupJoin 12 2 2557.0) (innerJoin 4 3 219885.1) (innerJoin 12 2 219885.1) (innerJoin 2 12 219885.1) (innerJoin 3 4 219885.1)
    ├── G6: (tableAlias: pm 646.0)*
    ├── G7: (hashJoin 5 6 1938.0) (hashJoin 2 15 22.9) (hashJoin 15 2 483.1) (hashJoin 4 14 128.2) (hashJoin 14 4 36879.0) (hashJoin 6 5 11.8) (lookupJoin 5 6 -642.4) (lookupJoin 15 2 -146.7) (lookupJoin 14 4 -12289.4)* (innerJoin 6 5 1154.5) (innerJoin 14 4 21987.6) (innerJoin 4 14 21987.6) (innerJoin 15 2 1154.5) (innerJoin 2 15 1154.5) (innerJoin 5 6 1154.5)
    ├── G8: (tableAlias: trf 39874374.0)*
    ├── G9: (hashJoin 7 8 119623122.0) (hashJoin 2 22 3.7) (hashJoin 22 2 483.0) (hashJoin 4 21 123.5) (hashJoin 21 4 36879.0) (hashJoin 6 19 7.0) (hashJoin 19 6 1938.0) (hashJoin 8 7 398744.3) (lookupJoin 7 8 -39874373.6) (lookupJoin 22 2 -159.6) (lookupJoin 21 4 -12292.6) (lookupJoin 19 6 -645.6)* (innerJoin 8 7 7132368.2) (innerJoin 19 6 114.6) (innerJoin 6 19 114.6) (innerJoin 21 4 2197.9) (innerJoin 4 21 2197.9) (innerJoin 22 2 114.6) (innerJoin 2 22 114.6) (innerJoin 7 8 7132368.2)
    ├── G10: (tableAlias: nt 8735.0)*
    ├── G11: (hashJoin 9 10 26205.0) (hashJoin 2 30 1.8) (hashJoin 30 2 483.0) (hashJoin 4 29 123.0) (hashJoin 29 4 36879.0) (hashJoin 6 27 6.5) (hashJoin 27 6 1938.0) (hashJoin 7 23 2882.6) (hashJoin 23 7 10.1) (hashJoin 10 9 87.4) (lookupJoin 9 10 -8735.0)* (lookupJoin 30 2 -160.8) (lookupJoin 29 4 -12293.0) (lookupJoin 27 6 -646.0) (innerJoin 10 9 155.2) (innerJoin 23 7 170.9) (innerJoin 7 23 170.9) (innerJoin 27 6 11.7) (innerJoin 6 27 11.7) (innerJoin 29 4 240.9) (innerJoin 4 29 240.9) (innerJoin 30 2 11.7) (innerJoin 2 30 11.7) (innerJoin 9 10 155.2)
    ├── G12: (mergeJoin 1 4 114447.7) (mergeJoin 4 1 122.9) (hashJoin 1 4 151326.7) (hashJoin 4 1 34334444.9) (lookupJoin 1 4 22991702.7) (lookupJoin 4 1 -11420052.8)* (innerJoin 4 1 142097512848.8) (innerJoin 1 4 142097512848.8)
    ├── G13: (mergeJoin 1 6 114447.7) (mergeJoin 6 1 6.5) (hashJoin 1 6 116385.7) (hashJoin 6 1 34334328.5) (lookupJoin 1 6 23003349.7) (lookupJoin 6 1 -11443474.9)* (innerJoin 6 1 7467257243.0) (innerJoin 1 6 7467257243.0)
    ├── G14: (hashJoin 2 13 214.8) (hashJoin 13 2 483.7) (hashJoin 3 6 1938.2) (hashJoin 6 3 59.6) (lookupJoin 13 2 -18.2) (lookupJoin 3 6 -610.4)* (innerJoin 6 3 11554.1) (innerJoin 3 6 11554.1) (innerJoin 13 2 11554.1) (innerJoin 2 13 11554.1)
    ├── G15: (hashJoin 4 13 336.1) (hashJoin 13 4 36879.7) (hashJoin 12 6 1951.5) (hashJoin 6 12 4063.2) (lookupJoin 13 4 -12150.2)* (lookupJoin 12 6 2072.0) (innerJoin 6 12 882275.0) (innerJoin 12 6 882275.0) (innerJoin 13 4 882275.0) (innerJoin 4 13 882275.0)
    ├── G16: (mergeJoin 1 8 114447.7) (mergeJoin 8 1 398743.7) (hashJoin 1 8 119737569.7) (hashJoin 8 1 34733065.7) (lookupJoin 1 8 -16870378.3)* (lookupJoin 8 1 68702717.7) (innerJoin 8 1 460916730809689.8) (innerJoin 1 8 460916730809689.8)
    ├── G17: (hashJoin 2 16 3433433.8) (hashJoin 16 2 11927.8) (hashJoin 3 8 119623122.2) (hashJoin 8 3 398796.9) (lookupJoin 16 2 2300238.6) (lookupJoin 3 8 -39874338.4)* (innerJoin 8 3 713236914.2) (innerJoin 3 8 713236914.2) (innerJoin 16 2 186103469.0) (innerJoin 2 16 186103469.0)
    ├── G18: (hashJoin 4 16 3433555.1) (hashJoin 16 4 48323.8) (hashJoin 12 8 119623135.5) (hashJoin 8 12 402800.4) (lookupJoin 16 4 2288106.6) (lookupJoin 12 8 -39871656.0)* (innerJoin 8 12 54458518000.6) (innerJoin 12 8 54458518000.6) (innerJoin 16 4 14209751284.0) (innerJoin 4 16 14209751284.0)
    ├── G19: (hashJoin 2 18 407.3) (hashJoin 18 2 484.4) (hashJoin 4 17 128.2) (hashJoin 17 4 36879.0) (hashJoin 5 8 119623122.0) (hashJoin 8 5 398749.1) (lookupJoin 18 2 110.8) (lookupJoin 17 4 -12289.4)* (lookupJoin 5 8 -39874370.4) (innerJoin 8 5 71323690.5) (innerJoin 5 8 71323690.5) (innerJoin 17 4 21987.6) (innerJoin 4 17 21987.6) (innerJoin 18 2 21987.6) (innerJoin 2 18 21987.6)
    ├── G20: (hashJoin 6 16 3433438.7) (hashJoin 16 6 13382.8) (hashJoin 13 8 119623122.7) (hashJoin 8 13 398956.9) (lookupJoin 16 6 2299753.6) (lookupJoin 13 8 -39874231.2)* (innerJoin 8 13 2861807745.6) (innerJoin 13 8 2861807745.6) (innerJoin 16 6 746725723.4) (innerJoin 6 16 746725723.4)
    ├── G21: (hashJoin 2 20 22.9) (hashJoin 20 2 483.1) (hashJoin 6 17 11.8) (hashJoin 17 6 1938.0) (hashJoin 14 8 119623122.0) (hashJoin 8 14 398749.1) (lookupJoin 20 2 -146.7) (lookupJoin 17 6 -642.4)* (lookupJoin 14 8 -39874370.4) (innerJoin 8 14 71323690.5) (innerJoin 14 8 71323690.5) (innerJoin 17 6 1154.5) (innerJoin 6 17 1154.5) (innerJoin 20 2 1154.5) (innerJoin 2 20 1154.5)
    ├── G22: (hashJoin 4 20 144.2) (hashJoin 20 4 36879.1) (hashJoin 6 18 412.1) (hashJoin 18 6 1939.4) (hashJoin 15 8 119623122.1) (hashJoin 8 15 398765.1) (lookupJoin 20 4 -12278.7) (lookupJoin 18 6 -374.2) (lookupJoin 15 8 -39874359.7)* (innerJoin 8 15 286180773.7) (innerJoin 15 8 286180773.7) (innerJoin 18 6 88226.6) (innerJoin 6 18 88226.6) (innerJoin 20 4 88226.6) (innerJoin 4 20 88226.6)
    ├── G23: (mergeJoin 8 10 398743.7) (mergeJoin 10 8 87.4) (hashJoin 8 10 424948.7) (hashJoin 10 8 119623209.3) (lookupJoin 8 10 80178631.1) (lookupJoin 10 8 -39856807.9)* (innerJoin 10 8 351785683457.9) (innerJoin 8 10 351785683457.9)
    ├── G24: (hashJoin 1 23 117330.3) (hashJoin 23 1 34334331.6) (hashJoin 16 10 37649.8) (hashJoin 10 16 3433519.6) (lookupJoin 23 1 -11442842.7)* (lookupJoin 16 10 2292809.1) (innerJoin 10 16 10096980188.9) (innerJoin 16 10 10096980188.9) (innerJoin 23 1 11106678207.9) (innerJoin 1 23 11106678207.9)
    ├── G25: (hashJoin 2 24 289.9) (hashJoin 24 2 484.0) (hashJoin 3 23 2882.7) (hashJoin 23 3 62.7) (hashJoin 17 10 26205.0) (hashJoin 10 17 92.7) (lookupJoin 24 2 32.1) (lookupJoin 17 10 -8731.4)* (innerJoin 10 17 15623.4) (innerJoin 17 10 15623.4) (innerJoin 23 3 17185.8) (innerJoin 3 23 17185.8) (innerJoin 24 2 15623.4) (innerJoin 2 24 15623.4)
    ├── G26: (hashJoin 4 24 411.2) (hashJoin 24 4 36880.0) (hashJoin 12 23 2896.1) (hashJoin 23 12 4066.3) (hashJoin 18 10 26206.4) (hashJoin 10 18 493.0) (lookupJoin 24 4 -12099.9)* (lookupJoin 18 10 -8463.1) (innerJoin 10 18 1192983.6) (innerJoin 18 10 1192983.6) (innerJoin 23 12 1312282.1) (innerJoin 12 23 1312282.1) (innerJoin 24 4 1192983.6) (innerJoin 4 24 1192983.6)
    ├── G27: (hashJoin 2 26 30.4) (hashJoin 26 2 483.1) (hashJoin 4 25 123.5) (hashJoin 25 4 36879.0) (hashJoin 5 23 2882.6) (hashJoin 23 5 14.9) (hashJoin 19 10 26205.0) (hashJoin 10 19 87.9) (lookupJoin 26 2 -141.7) (lookupJoin 25 4 -12292.6) (lookupJoin 19 10 -8734.6)* (innerJoin 10 19 1561.4) (innerJoin 19 10 1561.4) (innerJoin 23 5 1717.7) (innerJoin 5 23 1717.7) (innerJoin 25 4 2417.7) (innerJoin 4 25 2417.7) (innerJoin 26 2 1561.4) (innerJoin 2 26 1561.4)
    ├── G28: (hashJoin 6 24 294.7) (hashJoin 24 6 1939.0) (hashJoin 13 23 2883.3) (hashJoin 23 13 222.8) (hashJoin 20 10 26205.1) (hashJoin 10 20 108.7) (lookupJoin 24 6 -452.9) (lookupJoin 20 10 -8720.7)* (innerJoin 10 20 62690.6) (innerJoin 20 10 62690.6) (innerJoin 23 13 68959.8) (innerJoin 13 23 68959.8) (innerJoin 24 6 62690.6) (innerJoin 6 24 62690.6)
    ├── G29: (hashJoin 2 28 4.0) (hashJoin 28 2 483.0) (hashJoin 6 25 7.0) (hashJoin 25 6 1938.0) (hashJoin 14 23 2882.6) (hashJoin 23 14 14.9) (hashJoin 21 10 26205.0) (hashJoin 10 21 87.9) (lookupJoin 28 2 -159.4) (lookupJoin 25 6 -645.6) (lookupJoin 21 10 -8734.6)* (innerJoin 10 21 1561.4) (innerJoin 21 10 1561.4) (innerJoin 23 14 1717.7) (innerJoin 14 23 1717.7) (innerJoin 25 6 126.1) (innerJoin 6 25 126.1) (innerJoin 28 2 126.1) (innerJoin 2 28 126.1)
    └── G30: (hashJoin 4 28 125.3) (hashJoin 28 4 36879.0) (hashJoin 6 26 35.3) (hashJoin 26 6 1938.1) (hashJoin 15 23 2882.6) (hashJoin 23 15 30.9) (hashJoin 22 10 26205.0) (hashJoin 10 22 89.5) (lookupJoin 28 4 -12291.4) (lookupJoin 26 6 -626.7) (lookupJoin 22 10 -8733.6)* (innerJoin 10 22 6268.2) (innerJoin 22 10 6268.2) (innerJoin 23 15 6895.1) (innerJoin 15 23 6895.1) (innerJoin 26 6 6268.2) (innerJoin 6 26 6268.2) (innerJoin 28 4 9704.0) (innerJoin 4 28 9704.0)
    
  • 1608: Delete Join Support
    Adds support for multi-table deletes.
    Dolt CI Tests: #5406

    Remaining Work:

    Triggers: Trigger execution needs some refactoring in order to support: 1) updating GetField indexes in the trigger logic to account for a larger row coming into the TriggerExecutor when multiple tables are joined together, and 2) running triggers for multiple tables on the same c...

0.54.0

01 Mar 23:46
Compare
Choose a tag to compare

Merged PRs

dolt

  • 5457: Panic fix for nil dolt env in multi repo env
  • 5448: Add from_table_name and to_table_name columns to dolt_diff_summary table function
    • Also fixes dolt_status system table output for renamed tables
    • Table name in dolt diff --summary CLI command for renamed table uses arrow syntax (i.e. from_table -> to_table)
  • 5440: go/store/nbs: file_table_persister: Rework PruneTableFiles so that writes can proceed while we cleanup the old files.
  • 5438: go/store/nbs: file_table_persister: Add a mechanism for a table persister to clean up newly unused sources after a successful conjoin.
  • 5413: add dolt_patch() stored procedure
    The result of dolt_patch() stored procedure is equivalent to dolt diff -r sql.
    The input to dolt_patch() stored procedure is dolt_patch(<from_revision>, <to_revision>, [<tablename>]), which are optional 2 revisions and optional table names.
    It does not support two and three dot diffs.
    Only --cached flag is supported for now.
    It returns both schema and data diff result.
    Error cases of not being able to get data diff go into warning.

go-mysql-server

  • 1623: Fixed Issue #1621
    When using the example server, we had primary key indexes disabled for the in-memory database, so this just enables them as that is what people would expect.
  • 1622: fix / and div operations on value of decimal type column
    The cases fixed are:
    • the scale of decimal type column is bigger than the value stored. For example, the decimal column type is DECIMAL(25,10) and the value stored is 4990. This value is evaluated with 0 scale, whereas this should be evaluated as value with scale of 10.
    • the IntPart() function of decimal package returns 0 as undefined value for out of range values. This causes it hard to differentiate between cases where the final result is valid value of 0 and the final result is out of range value.
  • 1620: expose some parts of show create table statement for dolt usage
  • 1619: Memo includes costs and stars best plan
  • 1617: Adding privilege checks for binlog commands
    Added support for binlog replication privilege checks, tests to assert dynamic privileges are only used at a global scope, and opChecker support for testing dynamic privileges.
  • 1615: update drop column logic to drop constraints first
    Updates the ordering of the drop column logic to ensure that constraints always get checked for references and dropped when columns are dropped.

Closed Issues

  • 5138: Alias scope issue
  • 5369: unexpected error when using div operation
  • 1621: Missing index for foreign key error

0.53.2

27 Feb 19:41
Compare
Choose a tag to compare

Merged PRs

dolt

  • 5428: Add support for using full length commit ids in hashof() procedure
  • 5423: updates reset script to disable foreign_key_checks temporarily
    Currently, when reset scripts run between Prepared Script Tests errors will occur as tables with foreign keys get dropped and re-added. This change disables foreign key checks while tables are being dropped and re-added as to avoid these foreign key errors.
  • 5421: Add new version of dolt_diff_summary table function
    The old version of the dolt_diff_summary table function was renamed to dolt_diff_stat
    This new version of dolt_diff_summary returns a summary of changed tables between two refs
    us_jails> select * from dolt_diff_summary("WORKING", "taylor/test");
    +-----------------------------+-----------+-------------+---------------+
    | table_name                  | diff_type | data_change | schema_change |
    +-----------------------------+-----------+-------------+---------------+
    | jails                       | modified  | true        | false         |
    | test                        | dropped   | false       | true          |
    | inmate_population_snapshots | added     | true        | true          |
    +-----------------------------+-----------+-------------+---------------+
    3 rows in set (0.01 sec)
  • 5420: Add new version of --summary option to dolt diff
    The old version of dolt diff --summary was renamed to dolt diff --stat
    This new version of dolt diff --summary returns a summary of what tables changed/how between two refs
    us-jails % dolt diff --summary
    +-----------------------------+-----------+-------------+---------------+
    | Table name                  | Diff type | Data change | Schema change |
    +-----------------------------+-----------+-------------+---------------+
    | inmate_population_snapshots | dropped   | true        | true          |
    | jails                       | modified  | true        | false         |
    | test                        | added     | false       | true          |
    +-----------------------------+-----------+-------------+---------------+
    
  • 5415: Bump golang.org/x/text from 0.3.3 to 0.3.8 in /go/gen/proto/dolt/services/eventsapi
    Bumps golang.org/x/text from 0.3.3 to 0.3.8.
    Commits
    • 434eadc language: reject excessively large Accept-Language strings
    • 23407e7 go.mod: ignore cyclic dependency for tagging
    • b18d3dd secure/precis: replace bytes.Compare with bytes.Equal
    • 795e854 all: replace io/ioutil with io and os package
    • b0ca10f internal/language: bump script types to uint16 and update registry
    • ba9b0e1 go.mod: update x/tools to HEAD
    • d03b418 A+C: delete AUTHORS and CONTRIBUTORS
    • b4bca84 language/display: fix Tag method comment
    • ea49e3e go.mod: update x/tools to HEAD
    • 78819d0 go.mod: update to golang.org/x/text v0.1.10
    • Additional commits viewable in compare view

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/text&package-manager=go_modules&previous-version=0.3.3&new-version=0.3.8)](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 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) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/dolthub/dolt/network/alerts).
  • 5409: Rename diff summary to diff stat
    CLI: dolt diff --summary -> dolt diff --stat
    SQL: dolt_diff_summary -> dolt_diff_stat
  • 5408: binlog bug fixes – stripping checksums and applying Query flags
    This PR fixes a couple of issues from binlog testing:

    Query flags

    Now that we have visibility to the additional flags in the Query binlog event (dolthub/vitess#220), this PR adds handling for those flags.

    Checksum support

    To receive messages from the primary when binlog_checksums are enabled, the replica now sends a handshake signal to the primary and strips off any received checksum on binlog events. This lets us remove the requirement to disable checksums on the primary in order to use Dolt's binlog replication.

    Password auth for tests

    This PR also includes a change in the test code for the replica connect to the primary with a password, to ensure we're testing password auth.
  • 5407: Restored some needed images
  • 5403: Pruned docs directory. Renamed it images.
    It was stale.
  • 5393: go/store/nbs: use chunk journal index to speedup bootstrapping
  • 5360: go/doltcore/migrate: write table for migrated commit mapping
    Changes dolt migrate to write a special branch called migrated_commits containing a single table mapping with the schema:
    CREATE TABLE `mapping` (
    `old_commit_hash` varchar(16383) NOT NULL,
    `new_commit_hash` varchar(16383),
    PRIMARY KEY (`old_commit_hash`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin
  • 5335: Line-based diffs for modified rows
    This adds special git-style diffs for stored procedures. There are two modes. The default displays line changes with the familiar + and - prepended to each line. The second requires the flag --proc-in-place, and shows the changes in-place with the color signifying the change.

go-mysql-server

  • 1614: Bump golang.org/x/text from 0.3.7 to 0.3.8
    Bumps golang.org/x/text from 0.3.7 to 0.3.8.
    Commits
    • 434eadc language: reject excessively large Accept-Language strings
    • 23407e7 go.mod: ignore cyclic dependency for tagging
    • b18d3dd secure/precis: replace bytes.Compare with bytes.Equal

0.53.1

22 Feb 02:24
Compare
Choose a tag to compare

Merged PRs

dolt

  • 5398: go/commands/engine: get NBF from database provider
  • 5396: go/commands/engine: set analyzer parallelism to 1
  • 5391: Fixes comments in entrypoint
    Fixes comments in entrypoint
    Actually server starts at line 151 https://github.com/dolthub/dolt/pull/5391/files#diff-7cfc2aa3796f096105480a1a669658cfc12d2688b6300eef89d9ce94eef44e26L151
  • 5386: go/store/nbs: aws_table_persister.go: Fix conjoin code to not error on a single short Read() by using io.ReadFull.
    In #5307 we started returning a real io.Reader for chunkSource.reader(ctx). That means the Read() calls can come back short if they are directly attached to a net.TCPConn, for example. It is not an error for a Read() to come back short. Use io.ReadFull to correctly express the intent in the conjoin code for AWS remotes.
    Fixes a bug where doltremoteapi fails commits sometimes.
  • 5383: Emit schema elements from dolt_schemas table as their DDL equivalents during dolt dump
    Fixes #5318
  • 5381: Bump golang.org/x/net from 0.2.0 to 0.7.0 in /go
    Bumps golang.org/x/net from 0.2.0 to 0.7.0.
    Commits
    • 8e2b117 http2/hpack: avoid quadratic complexity in hpack decoding
    • 547e7ed http2: avoid referencing ResponseWrite.Write parameter after returning
    • 39940ad html: parse comments per HTML spec
    • 87ce33e go.mod: update golang.org/x dependencies
    • 415cb6d all: fix some comments
    • 7e3c19c all: correct typos in comments
    • 296f09a http2: case insensitive handling for 100-continue
    • f8411da nettest: fix tests on dragonfly and js/wasm
    • 8e0e7d8 go.mod: update golang.org/x dependencies
    • 7805fdc http2: rewrite inbound flow control tracking
    • Additional commits viewable in compare view

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/net&package-manager=go_modules&previous-version=0.2.0&new-version=0.7.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 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) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/dolthub/dolt/network/alerts).
  • 5380: dolt_diff respects qualified database
    This change corrects the dolt_diff system table to use the qualified database if provided instead of always defaulting to the session's current database.
    fixes: #5226
  • 5374: go/store/nbs: Fix some quota leaks in conjoin, GC.
    Adds a paranoid mode where we noisely detect unclosed table files. The mode can be enabled by setting an environment variable.
    Fixes some unit tests, including all of go/store/... to run cleanly under the paranoid mode.
    Changes the quota interface to:
    • Release |sz int| bytes instead of requiring a []byte with the correct length to show up.
    • Work with |int| instead of |uint64|, since MaxUint64 is never allocatable and MaxInt32+z is only allocatable on 64-bit platforms.
    • Not return an error on Release(). Implementations should not fail to release quota.
  • 5373: go/store/nbs: rename chunks journal constants in preparation for jour…
    …nal index
  • 5368: Make dropping and adding the same view produce no diff
    Fixes #5313
    Also made dropping all views (and triggers) cause the dolt_schemas table to delete itself, so that you can create views and then drop them without causing a diff.
  • 5367: ArtifactEditor now resets after flushing
    ArtifactEditor held on to keys after flushing because it was a value receiver. Under the capacity threshold, constraint violations only flush once and we bypass this bug. For >50k constraint violations, every incremental CV will write the previous duplicate 40k CV's.
  • 5365: Handle multiple lines in tabular diffs
    This changes our tabular output so that multiline strings display in a consistent manner. This will allow us to properly display text diffs as previewed in #5335. Modifications to that PR will follow this one.
    This is how diffs will look like with this PR:
    image
    Performance-wise, I tested a SELECT over 5000 rows with two text columns containing all multiline strings for every row, and I averaged around 10% faster than the old implementation. We now sample every 100 rows rather than only the first 100, and this makes each local chunk of 100 rows visually consistent. In addition, I've cut down on the amount of formatting that is done to the columns, which is what I believe is the source of the speed increase.
    As a side benefit, dolt sql-client uses the same tabular output logic, so now our SQL client will handle multiline strings from any compatible database, not just Dolt. The default MySQL client behaves like our old implementation, so I think this is another cool win.
  • 5362: Tweaks to README for binlog replication launch
  • 5353: Bump github.com/aws/aws-sdk-go from 1.33.0 to 1.34.0 in /go
    Bumps github.com/aws/aws-sdk-go from 1.33.0 to 1.34.0.
    Changelog

    Sourced from github.com/aws/aws-sdk-go's changelog.

    Release v1.34.0 (2020-08-07)

    Service Client Updates

    • service/glue: Updates service API and documentation
      • AWS Glue now adds support for Network connection type enabling you to access resources inside your VPC using Glue crawlers and Glue ETL jobs.
    • service/organizations: Updates service API and documentation
      • Documentation updates for some new error reasons.
    • service/s3: Updates service documentation and examples
      • Updates Amazon S3 API reference documentation.
    • service/sms: Updates service API and documentation <...

0.53.0

15 Feb 00:02
Compare
Choose a tag to compare

Merged PRs

dolt

  • 5350: Dolt fixes for empty column projections
  • 5348: fix --track for dolt_checkout
    --track is not working with call dolt_checkout as expected. This change updates dolt_checkout to mirror the before of dolt checkout in the CLI.
    fixes: #5189
  • 5340: go/store/nbs: Optimize memory and disk utilization during GC.
  • 5331: Add child refs to memtable only when a chunk was added.
    Fixes #5301
  • 5330: Fixed race when multiple clients attempt to connect to the same branc…
    …h the first time a replica fetches it
  • 5326: fixes timing for multi statement queries
    This change fixes timing for multi statement queries to print the time to execute the query instead of the time to print the results or the time since the first query started.
  • 5320: store/datas: fix dropped errors
    This fixes three dropped err variables in the store/datas package.
  • 5319: don't create new index if matching on primary key
  • 5315: slightly better prefix compare
    A slight performance improvement for findPrefix when looking through table indexes that avoids a make() call and bytes.Compare
  • 5312: add --track flag for dolt_branch() procedure
    It is equivalent as using --track flag of CLI dolt branch command.
  • 5311: makes -f default behavior for dolt fetch
    This change makes force fetch the default behavior for dolt fetch and removes the -f force flag to prevent errors when fetching after a force push.
    fixes: #4943
  • 5308: Allow the pprof server to handle connections from non-localhost
    Allow the pprof server to handle connections from non-localhost machines.
    This change is necessary to reach a Docker pprof server from host machine.
  • 5306: dolt_remote_branches table
    New system table shows remote branches with same schema as existing dolt_branches table
  • 5302: fix panic for unexpected json file format
    returns error message instead of panic
  • 5295: Trim compare string prefix
    this improves a low-selectivity index scan for a customer query.
  • 5294: add bats test for binary string encoded to utf8
    Depends on dolthub/go-mysql-server#1583
    DataGrip sets the character_set_results system variable to utf8, which raw binary strings cannot be encoded into. MySQL returns binary type strings in hex format.
  • 5279: reuse cursor when verifying fks using secondary indexes
  • 5252: Fix int overflow on 32-bit architectures
    $  GOARCH=386 GOOS=linux go build ./...
    # github.com/dolthub/dolt/go/store/skip
    store/skip/list.go:152:21: maxCount (untyped int constant 4294967294) overflows int
    See also dolthub/vitess#216
  • 5220: Dolt Binlog Replication
    Initial support for Dolt binlog replication from a MySQL server.
    Includes support for:
    • Configuring a replica's source – CHANGE REPLICATION SOURCE TO ...
    • Configuring optional replication filtering – CHANGE REPLICATION FILTER ...
    • Showing a replica's status – SHOW REPLICA STATUS;
    • Starting / stopping replication – START REPLICA;, STOP REPLICA;
    • Reseting a replica – RESET REPLICA [ALL];
      Notable limitations/restrictions:
    • Only the default ("") replication channel is supported
    • Requires row-based replication with GTID-based auto-positioning is supported
    • A subset of filtering options are present (i.e. REPLICATE_DO_TABLE, REPLICATE_IGNORE_TABLE); more can be added upon customer request
    • Replication privileges are not checked yet; I will follow up with this shortly
      Testing:
    • Integration tests currently live alongside the code, but since they take ~70s to run all of them, I'm thinking about moving them to the integration-tests directory and setting up a separate GitHub actions job to run them. It is convenient that they currently get run with all the storage format variants though.
      Documentation:
    • dolthub/docs#1177
  • 5126: Bump knex from 1.0.7 to 2.4.0 in /integration-tests/mysql-client-tests/node
    Bumps knex from 1.0.7 to 2.4.0.
    Release notes

    Sourced from knex's releases.

    2.4.0

    New features:

    • Support partial unique indexes #5316
    • Make compiling SQL in error message optional #5282

    Bug fixes

    • Insert array into json column #5321
    • Fix unexpected max acquire-timeout #5377
    • Fix: orWhereJson #5361
    • MySQL: Add assertion for basic where clause not to be object or array #1227
    • SQLite: Fix changing the default value of a boolean column in SQLite #5319

    Typings:

    • add missing type for 'expirationChecker' on PgConnectionConfig #5334

    2.3.0

    New features:

    • PostgreSQL: Explicit jsonb support for custom pg clients #5201
    • SQLite: Support returning with sqlite3 and better-sqlite3 #5285
    • MSSQL: Implement mapBinding mssql dialect option #5292

    Typings:

    • Update types for TS 4.8 #5279
    • Fix typo #5267
    • Fix WhereJsonObject withCompositeTableType #5306
    • Fix AnalyticFunction type #5304
    • Infer specific column value type in aggregations #5297

    2.2.0

    New features:

    • Inline primary key creation for postgres flavours #5233
    • SQLite: Add warning for undefined connection file #5223
    • MSSQL: Add JSON parameter support for connection #5200

    Bug fixes:

    • PostgreSQL: add primaryKey option for uuid #5212

    Typings:

    • Add promisable and better types #5222
    • Update raw query bind parameter type #5208

    2.1.0 - 26 May, 2022

    ... (truncated)

    Changelog

    Sourced from knex's changelog.

    2.4.0 - 06 January, 2022

    New features:

    • Support partial unique indexes #5316
    • Make compiling SQL in error message optional #5282

    Bug fixes

    • Insert array into json column #5321
    • Fix unexpected max acquire-timeout #5377
    • Fix: orWhereJson #5361
    • MySQL: Add assertion for basic where clause not to be object or array #1227
    • SQLite: Fix changing the default value of a boolean column in SQLite #5319

    Typings:

    • add missing type for 'expirationChecker' on PgConnectionConfig

0.52.20

04 Feb 02:59
Compare
Choose a tag to compare

Merged PRs

dolt

  • 5307: Improve the performance of clone from AWS and GCS remotes.
  • 5300: go/doltcore/doltdb: catch panic in gc concurrency tests
  • 5291: update query timing to be accurate when using dolt sql-client
    related: dolthub/go-mysql-server#1581
    fixes: #5241
  • 5286: allow different format options for dolt branch with track flag
    Git allows:
    git branch feature --track origin/feature
    git branch --track request origin/feature
    git branch feature --track=direct origin/feature
    git branch --track=direct feature origin/feature
    for creating new branch that tracks given remote tracking branch
    does not allow:
    git branch feature --track direct origin/feature, but Dolt allows it as --track direct and --track=direct are considered the same
  • 5282: go/store/datas/pull: try to avoid unbounded growth of outstanding absent set
  • 5274, 5273, 5270, 5269: Improvements to prepare for reenabling call dolt_gc().

go-mysql-server

  • 1580: Fix panic by rewriting how we move filter conditions up.
    Fixes #5214
  • 1576: New analyzer rule to replace count(*) with count(1) wherever it is found
    This fixes #5171

Closed Issues

  • 4216: Support additional Git ancestry syntax
  • 5241: The dolt sql-client query timings always show 0.00 sec
  • 5187: dolt branch --track does not create a new branch
  • 5171: translate count(*) to count(1) automatically
  • 5292: Importing a dump using dolt sql creates an unexpected new database instead of using cwd

Latency

Read Tests MySQL Dolt Multiple
covering_index_scan 1.96 2.81 1.4
groupby_scan 12.3 16.41 1.3
index_join 1.16 4.57 3.9
index_join_scan 1.12 3.96 3.5
index_scan 30.26 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.75 2.5
select_random_ranges 0.35 1.14 3.3
table_scan 30.81 61.08 2.0
types_table_scan 70.55 186.54 2.6
reads_mean_multiplier 2.6
Write Tests MySQL Dolt Multiple
bulk_insert 0.001 0.001 1.0
oltp_delete_insert 2.76 11.87 4.3
oltp_insert 1.44 2.97 2.1
oltp_read_write 5.09 17.95 3.5
oltp_update_index 1.42 5.47 3.9
oltp_update_non_index 1.37 5.99 4.4
oltp_write_only 2.22 9.06 4.1
types_delete_insert 2.97 11.87 4.0
writes_mean_multiplier 3.4
Overall Mean Multiple 2.9

0.52.19

02 Feb 05:23
Compare
Choose a tag to compare

Merged PRs

dolt

  • 5280: go/store/datas/pull: trim memory footprint for puller hash sets
  • 5275: verify fk with secondary index even when empty
    The optimization for verifying foreign keys using secondary indexes isn't used when the tables are completely different (so only additions to the merge) or if the index potentially didn't exist before merging. Rather than defaulting to using the primary key to verify the foreign keys, it's possible to just create an empty index and use the faster secondary index to verify.
    This includes code from #5253
  • 5253: verify fk with secondary when available
    We resolve foreign key conflicts by:
    1. diffing a before/after index to generate keys
    2. constructing a lookup key for the reference index
    3. perform a lookup into the reference index
    4. report a conflict if reference dependency is missing
      For huge tables, we want the from keys to be ordered relative to the to index. When this is not the case, the to lookup will be random access and read a chunk from disk. Millions of random access lookups that all IO chunks from disk adds a ~1000x perf hit for validating a single FK relative to sorted lookups.
      This PR does a secondary key diff -> secondary foreign key lookup. The diffs are ordered relative to one-another, and this usually makes big merges faster.
      The main downside is that constraint violations still require a primary key lookup to backfill missing columns, which will usually be out-of-order relative to the secondary key iter order. Keyless fks are also excluded from the optimization for now.

go-mysql-server

  • 1574: Subquery caching correctness
    Rerunning cacheSubqueries recursively on subquery expressions led to an incorrect cacheability labelling. The rule should only be run once on a top-level tree.
  • 1573: add support for SHOW GLOBAL VARIABLES
  • 1570: Fix panic by rewriting how we move filter conditions up.
    Fix panic by rewriting how we move filter conditions up.
    Fixes #5214

vitess

  • 218: Fixed bug in COM_FIELD_LIST command implementation for table names that need quoting in a statement
    Fixes #5151
    Fixes #4464
  • 217: Adding implicit string concatenation for a variable assignment needed for binlog replication
    When a mysqldump is taken for a database tracking GTIDs, it outputs GTID tracking information via a line like:
    SET @@GLOBAL.GTID_PURGED= /*!80000 '+'*/ 'beabe64c-9dc6-11ed-8021-a0f9021e8e70:1-126';
    In MySQL 8.0+, the MySQL comment inserts a '+' between the = and the assignment value, which gets implicitly concatenated with the adjacent quoted string in MySQL.
    GMS/Dolt doesn't support this implicit string concatenation, but I wanted to get this query to work – otherwise customers will have to manually edit their mysql dump files to remove this syntax before it can be imported into Dolt. I didn't think it was worth taking on the larger change right now to support implicit quoted string concatenation everywhere (#5232), so instead, I added special handling for this case since it's important for the binlog setup experience.
  • 216: Fix int overflow on 32-bit architectures
    $ GOARCH=386 GOOS=linux go build ./...
    # github.com/dolthub/vitess/go/bucketpool
    go/bucketpool/bucketpool.go:57:15: math.MaxUint32 (untyped int constant 4294967295) overflows int
  • 215: Adding two new binlog replication statements: RESET REPLICA and CHANGE REPLICATION FILTERS

Closed Issues

  • 5151: mysql client's information_schema read with table names containing - can put the client in a bad state.
  • 4464: MySQL client with autocomplete enabled crashes connecting to Dolt if a table is named a reserved word like rows
  • 5214: dolt panic during JOIN
  • 5175: High load in 1) SELECT queries when we have 7000 rows and 21000 branches 2) create extra branches when we've already have 21000
  • 5080: Can't edit table's data in navicat

Latency

Read Tests MySQL Dolt Multiple
covering_index_scan 2.0 2.81 1.4
groupby_scan 12.75 16.71 1.3
index_join 1.16 4.57 3.9
index_join_scan 1.14 3.96 3.5
index_scan 30.26 53.85 1.8
oltp_point_select 0.15 0.49 3.3
oltp_read_only 2.97 8.58 2.9
select_random_points 0.3 0.75 2.5
select_random_ranges 0.35 1.14 3.3
table_scan 30.81 63.32 2.1
types_table_scan 70.55 189.93 2.7
reads_mean_multiplier 2.6
Write Tests MySQL Dolt Multiple
bulk_insert 0.001 0.001 1.0
oltp_delete_insert 3.02 13.22 4.4
oltp_insert 1.5 3.13 2.1
oltp_read_write 5.18 18.28 3.5
oltp_update_index 1.55 6.09 3.9
oltp_update_non_index 1.47 6.67 4.5
oltp_write_only 2.35 9.39 4.0
types_delete_insert 3.02 13.22 4.4
writes_mean_multiplier 3.5
Overall Mean Multiple 3.0

0.52.18

01 Feb 19:24
Compare
Choose a tag to compare

Merged PRs

dolt

  • 5271: add another layer of batching

Closed Issues

  • 5175: High load in 1) SELECT queries when we have 7000 rows and 21000 branches 2) create extra branches when we've already have 21000
  • 5166: Join between dolt_log and dolt_commit_ancestors results in go panic
  • 5204: filter on database and table names should be case-insensitive
  • 3681: set @@persist doesn't update session values

Latency

Read Tests MySQL Dolt Multiple
covering_index_scan 1.93 2.71 1.4
groupby_scan 12.3 16.71 1.4
index_join 1.18 4.65 3.9
index_join_scan 1.14 3.96 3.5
index_scan 30.81 52.89 1.7
oltp_point_select 0.15 0.49 3.3
oltp_read_only 2.97 8.43 2.8
select_random_points 0.3 0.75 2.5
select_random_ranges 0.35 1.14 3.3
table_scan 30.81 62.19 2.0
types_table_scan 69.29 186.54 2.7
reads_mean_multiplier 2.6
Write Tests MySQL Dolt Multiple
bulk_insert 0.001 0.001 1.0
oltp_delete_insert 2.91 15.0 5.2
oltp_insert 1.37 3.19 2.3
oltp_read_write 5.09 18.61 3.7
oltp_update_index 1.5 7.3 4.9
oltp_update_non_index 1.47 8.28 5.6
oltp_write_only 2.26 9.39 4.2
types_delete_insert 2.97 17.32 5.8
writes_mean_multiplier 4.1
Overall Mean Multiple 3.2