Skip to content

0.75.8

Compare
Choose a tag to compare
@github-actions github-actions released this 28 Mar 17:55

Merged PRs

dolt

  • 5625: omit some empty fields
  • 5621: Correctly handle merging of staged changes across concurrent sessions
    Fixes #5608
  • 5617: go/libraries/doltcore/sqle/cluster: Improve the robustness of graceful transitions to standby role.
    Some subtle races could cause graceful transitions to fail when they could have succeeded or could cause replication to block for a long time while the attempt to transition was ongoing.
  • 5611: Bug fixes for branch deletion edge cases
    While debugging a customer issue, I found a few edge cases around deleting branches to fix:
    • the sql-server.lock file wasn't getting created when creating the first database for a sql-server (i.e. when running the sql-server from a bare, non-init'ed directory).
    • dolt checkout on the CLI was exiting too early if it couldn't find its working set and not actually checking anything out, but returning a success error code. This meant customers couldn't use the CLI to recover from a deleted default branch. We did have a test for this, but it wasn't testing thoroughly enough and only looked for a success return code from dolt checkout.
    • dolt branch -d (from SQL or CLI) should not allow you to delete the repo's default branch. This is how the customer got their database into a bad state with out a default branch.
    • a couple tests in deleted-branches.bats were skipped; I removed the skips and confirmed they pass.
      These fixes will help prevent customers from getting into this state and ensure they can fix a deleted default branch using the dolt CLI. It would be ideal to continue on this thread and also make dolt_checkout() work in sql-server with the default branch is invalid, but I think that's best handled as a follow up PR.
  • 5567: adds the dolt_column_diff system table
    This change adds a new system table, dolt_column_diff which lists the tables and columns changed in every commit reachable from the active branch’s HEAD.
    fixes: #5254

go-mysql-server

  • 1675: SET multiple system variables including 'NAMES' and 'CHARSET'
  • 1666: join operator hints
    Join order (JOIN_ORDER(a,b)) and operator hints (LOOKUP_JOIN(a,b)) play nice together when there is a plan that satisfies all hints. If order and operator hints are are incompatible, no hints are applied.
    Example:
    > explain
    select /*+ JOIN_ORDER(a,b,c,d) LOOKUP_JOIN(d,c) MERGE_JOIN(b,a) HASH_JOIN(c,a)*/ 1
    from xy a
    join uv b on a.x = b.u
    join xy c on a.x = c.x
    join uv d on d.u = c.x;
    QueryProcess
    └─ Project
    ├─ columns: [1 (tinyint)]
    └─ HashJoin
    ├─ Eq
    │   ├─ a.x:0!null
    │   └─ c.x:2!null
    ├─ MergeJoin
    │   ├─ cmp: Eq
    │   │   ├─ a.x:0!null
    │   │   └─ b.u:1!null
    │   ├─ TableAlias(a)
    │   │   └─ IndexedTableAccess(xy)
    │   │       ├─ index: [xy.x]
    │   │       ├─ static: [{[NULL, ∞)}]
    │   │       └─ columns: [x]
    │   └─ TableAlias(b)
    │       └─ IndexedTableAccess(uv)
    │           ├─ index: [uv.u]
    │           ├─ static: [{[NULL, ∞)}]
    │           └─ columns: [u]
    └─ HashLookup
    ├─ source: TUPLE(a.x:0!null)
    ├─ target: TUPLE(c.x:0!null)
    └─ CachedResults
    └─ LookupJoin
    ├─ Eq
    │   ├─ d.u:3!null
    │   └─ c.x:2!null
    ├─ TableAlias(c)
    │   └─ Table
    │       ├─ name: xy
    │       └─ columns: [x]
    └─ TableAlias(d)
    └─ IndexedTableAccess(uv)
    ├─ index: [uv.u]
    └─ columns: [u]

Closed Issues

  • 5608: Concurrent table edits leaves uncommitted branch state
  • 5627: Variable NAMES not working
  • 5254: Filter change history by affected columns – new dolt_column_diff system table
  • 1662: aliases overwriting original column

Latency

Read Tests MySQL Dolt Multiple
covering_index_scan 1.93 2.71 1.4
groupby_scan 12.3 16.12 1.3
index_join 1.18 4.03 3.4
index_join_scan 1.14 2.07 1.8
index_scan 31.37 52.89 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.73 2.4
select_random_ranges 0.36 1.14 3.2
table_scan 31.37 53.85 1.7
types_table_scan 71.83 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.18 5.88 1.1
oltp_insert 2.52 2.76 1.1
oltp_read_write 6.55 15.83 2.4
oltp_update_index 2.61 2.97 1.1
oltp_update_non_index 2.57 2.86 1.1
oltp_write_only 3.68 7.43 2.0
types_delete_insert 5.0 6.67 1.3
writes_mean_multiplier 1.4
Overall Mean Multiple 1.9