Merged PRs
dolt
- 5624: Fix dolt_gc for repositories newly using chunk journal.
When a repository was created with < 0.75.0, or if it was created and used withDOLT_DISABLE_CHUNK_JOURNAL=true
, it does not have a chunk journal. If it then runs dolt in a mode where it uses the chunk journal, the journal will not be bootstrapped until a write is done against the database. In the state wheredolt
is using the chunk journal but the chunk journal is not bootstrapped,dolt gc
andcall dolt_gc()
were broken. They would fail with the message:concurrent manifest edit during GC, before swapTables. GC failed.
.
This fixes that by making the chunk journal forward UpdateGCGen manifest update calls in its non-bootstrapped state, the same way it forwards Update manifest calls. - 5615: Allow logging base64-encoded queries, instead of replacing bad chars.
- 5602: Added test for avoiding multiple parens issue.
#5478
go-mysql-server
- 1667: Allow logging base64-encoded queries, instead of replacing bad chars.
- 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]
- 1665: Fix filter hoisting issue
Before hoisting a filter condition inside a subquery, check if the condition is using any of the subquery tables.
This also includes a minor renaming change: when hoisting a table and there's a possibility of a name collision, we now add an unambiguous table alias.
Fixes: #5342 - 1661: AlterIndex completely resolves column defaults
#5478
Closed Issues
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.0 | 2.71 | 1.4 |
groupby_scan | 12.3 | 16.41 | 1.3 |
index_join | 1.16 | 4.03 | 3.5 |
index_join_scan | 1.12 | 2.07 | 1.8 |
index_scan | 30.81 | 53.85 | 1.7 |
oltp_point_select | 0.15 | 0.48 | 3.2 |
oltp_read_only | 3.02 | 8.58 | 2.8 |
select_random_points | 0.3 | 0.73 | 2.4 |
select_random_ranges | 0.36 | 1.14 | 3.2 |
table_scan | 31.37 | 54.83 | 1.7 |
types_table_scan | 69.29 | 161.51 | 2.3 |
reads_mean_multiplier | 2.3 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.09 | 5.77 | 1.1 |
oltp_insert | 2.52 | 2.86 | 1.1 |
oltp_read_write | 6.67 | 15.83 | 2.4 |
oltp_update_index | 2.48 | 2.97 | 1.2 |
oltp_update_non_index | 2.57 | 2.86 | 1.1 |
oltp_write_only | 3.55 | 7.56 | 2.1 |
types_delete_insert | 5.18 | 6.55 | 1.3 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 1.9 |
---|