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 fromdolt 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 makedolt_checkout()
work in sql-server with the default branch is invalid, but I think that's best handled as a follow up PR.
- the
- 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 |
---|