Merged PRs
dolt
- 6345: Small changes to help improve the wait_for_connection failures
- Pick from a random port from 2048 - 6146
- Use
nc
to check if port is in use rather thanlsof
- Wait longer, in case the server retries successfully.
I tested by running 10 changes through GH actions. 5 jobs were controls with no changes, 5 had this change. The control group had 2 jobs which failed waiting to connect, while the group with this change had no failures.
- 6331: Update unique constraint violations when rows are deleted
Issue #6319 shows a case where our unique constraint checker reports false positives. This can happen when a row that is removed and a row that is inserted have duplicate values for columns that have a unique index declared over them. The root cause is that the deleted row is being incorrectly included in the rows checked for the unique constraint.
I made two changes in this PR to fix this issue:- when row inserts or row deletes are processed by the unique constraint validator, it was previously not updating the data in it's index copy. This means if a row delete diff event comes in first, it wasn't getting removed from the index and when the row insert event comes in, it thinks there is a legitimate unique constraint violation with the deleted row. (Note that this local secondary index data is a copy of the secondary index data maintained by other parts of the prolly table merger. The primary and secondary index mergers were correctly updating the primary and secondary indexes on disk, but the copies held by the uniqueValidator were not being updated. It would be ideal if these mutable maps were shared by the various merge validators in the future.)
- when a row delete event is processed by the unique constraint validator, in addition to removing the row from the secondary index copy as described above, the code now looks in the artifact map, which is where violations are stored, and removes any unique constraint violations for this row, and if there is only one unique constraint violation left for the same unique values in the index, that last violation is also removed (i.e. it's not ever valid to have one row that violates a unique constraint).
I briefly considered other ways to address this, such as processing all row deletion events first, and then resetting the row diff iterator to replay other diff events, but directly updating the violation artifacts felt like the most efficient approach, although the logic is a bit complicated.
- 6328: go/go.mod,go/.../events/go.mod: Bump golang.org/x/net dependency.
- 6324: dolt checkout message
Currently thedolt checkout
can't work with a server running on a local database. There are more details to be sorted out with session persistence in the server which aren't addressed yet.
The SQLEngine execution for using SQL as the backend is complete, but now we simply print a message stating that the user should stop the server. - 6321: Migrate the clean command to sql
The dolt_clean() stored procedure pretty much does exactly what the CLI does, so this was an easy migration. What thedolt clean
command doesn't have is tests, and neither does the dolt_clean() procedure for that matter. Unfortunately, the command experience itself isn't great, and differs significantly fromgit clean
(#6313). So instead of spending time on testing and a full rewrite ofdolt clean
, I'm making this small tactical change to do nothing but the migration.
Related: #3922
Closed Issues
- 6325: Vulnerability of dependency "golang.org/x/net"
- 6246:
dolt sql
prompt is missing the current db when a server is running - 6308:
mysql.help_topic
not found error
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 3.07 | 1.5 |
groupby_scan | 12.98 | 17.95 | 1.4 |
index_join | 1.25 | 4.74 | 3.8 |
index_join_scan | 1.18 | 2.26 | 1.9 |
index_scan | 33.12 | 58.92 | 1.8 |
oltp_point_select | 0.14 | 0.47 | 3.4 |
oltp_read_only | 2.66 | 7.98 | 3.0 |
select_random_points | 0.3 | 0.78 | 2.6 |
select_random_ranges | 0.36 | 1.14 | 3.2 |
table_scan | 33.12 | 58.92 | 1.8 |
types_table_scan | 75.82 | 170.48 | 2.2 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 6.09 | 6.21 | 1.0 |
oltp_insert | 2.71 | 3.19 | 1.2 |
oltp_read_write | 6.32 | 15.55 | 2.5 |
oltp_update_index | 2.81 | 3.19 | 1.1 |
oltp_update_non_index | 2.97 | 3.19 | 1.1 |
oltp_write_only | 3.96 | 7.84 | 2.0 |
types_delete_insert | 5.88 | 6.91 | 1.2 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 2.0 |
---|