1.39.2
Merged PRs
dolt
- 7930: Bump mysql2 from 3.9.7 to 3.9.8 in /integration-tests/mysql-client-tests/node
Bumps mysql2 from 3.9.7 to 3.9.8. - 7929: dolt fetch default spec from empty repo should return silently
Git fetch returns without error when you fetch the default refspec. When you fetch a specific ref you get an error. Dolt now matches this behavior.
Fixes: #7928 - 7925: apply
filter-branch
changes to working/staged changes
This PR adds support for a--apply-to-uncommitted
option todolt filter-branch
, which applies thefilter-branch
changes to the working and staged roots.
fixes #7902 - 7923: [dsess] Cache checks lookup for TPC-C update
- 7922: [writer] skip more deserialization steps in getTableWriter
- 7900: prevent dolt filter branch when it would overwrite unchecked branch's working set
Turns out other branches can have working sets, and dolt-filter branch would drop those. PR prevents that from happening.
adding tests to comments I missed here:
#7895 - 7898: Added workflow for checking DoltgreSQL
This adds a new workflow that runs a subset of the tests in DoltgreSQL to check for any major integration errors. The workflow does not fail if errors are encountered. Instead, it creates a comment stating that failures were found. If no failures were found, then no comment is made. - 7892: dolt admin archive
This hidden admin command will convert the table files in oldgen into archive files, then update the manifest so that you can run queries against the archive for performance testing. Currently we assume thatdolt gc
has been run immediately prior to using this command.
After the build is complete, we lookup every chunk in the archive using the index of the originating table file. We then verify each chunk's key checks out. If this verification fails, exit status 1.
Lot of rough edges still:- Currently no feedback as the build progresses. This is annoying because it can take a fair amount of time
- ChunkSource interface is single threaded, so getMany and hasMany are not going to perform well.
- Lacking checks to ensure that the server isn't running and we have the LOCK on oldgen.
- No bats tests, and this is kind of a temporary thing. There are go tests on key bits.
- 7863: Use the search path to resolve table names in Doltgres
Doltgres enables the UseSearchPath global at startup, which triggers this behavior.
This is a shim to get a proof of concept of this behavior working faster. A better solution, coming next, involves making this behavior pluggable and putting this logic in the Doltgres package, not in Dolt.
Companion PRs:
dolthub/go-mysql-server#2498
dolthub/doltgresql#269
go-mysql-server
- 2520: Default sql mode for common path
Bit strange & verbose, but has a noticeable effect for small queries.
perf here: #7915 - 2519: IndexedTableAccess gets indexing fast path
- 2518: Short circuit for update/delete
Simple updates and deletes skip most of analysis.
perf here: #7907 - 2517: Improve correctness and error messages for JSON functions.
MySQL doesn't do this and neither should we.
MySQL:The only time we should be coercing a JSON-null document into SQL-null is for JSON_EXTRACT (for paths other than "$") and JSON_VALUE (for all paths). But these are already handled separately.mysql> select JSON_INSERT("null", "$.a", 1); +-------------------------------+ | JSON_INSERT("null", "$.a", 1) | +-------------------------------+ | null | +-------------------------------+ 1 row in set (0.00 sec) mysql> select JSON_INSERT("null", "$.a", 1) is null; +---------------------------------------+ | JSON_INSERT("null", "$.a", 1) is null | +---------------------------------------+ | 0 | +---------------------------------------+
- 2515: Zachmu/schemas2 merge
- 2513: Added workflows for checking integrators
This adds a new workflow that runs a subset of tests in Dolt and DoltgreSQL to check for any major integration errors. The workflows do not fail if errors are encountered. Instead, they'll create a comment stating which projects had failures. If no failures were found, then no comment is made. - 2498: New interfaces for resolving table names for databases with schemas
This is a proof of concept to get schema resolution working quickly, and I'm not super happy with the separation of concerns. A better solution would implement table name resolution in the Catalog directly, rather than in the integrator. That effort is significantly hindered by the Catalog being a concrete analyzer implementation with many analyzer-specific details that can't be easily substituted for another implementation. The longer term plan is to perform the extensive refactoring necessary to make the relevant parts of the Catalog swappable, rather than (effectively) having to swap only DatabaseProvider and friends.
Closed Issues
- 7902:
filter-branch
option to apply query toWORKING
andSTAGED
roots - 7928: CLI
dolt fetch <remote>
failed to use the defaultref spec
- 7897: Pomelo Entity Framework connector is not able to commit changes
- 7909: [Question] How to
init
Dolt database programatically?
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 2.97 | 1.4 |
groupby_scan | 13.22 | 17.32 | 1.3 |
index_join | 1.34 | 5.18 | 3.9 |
index_join_scan | 1.27 | 2.18 | 1.7 |
index_scan | 33.72 | 52.89 | 1.6 |
oltp_point_select | 0.17 | 0.5 | 2.9 |
oltp_read_only | 3.36 | 8.13 | 2.4 |
select_random_points | 0.32 | 0.8 | 2.5 |
select_random_ranges | 0.38 | 0.95 | 2.5 |
table_scan | 34.33 | 54.83 | 1.6 |
types_table_scan | 73.13 | 137.35 | 1.9 |
reads_mean_multiplier | 2.2 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 7.98 | 6.21 | 0.8 |
oltp_insert | 3.75 | 3.07 | 0.8 |
oltp_read_write | 8.43 | 15.0 | 1.8 |
oltp_update_index | 3.82 | 3.19 | 0.8 |
oltp_update_non_index | 3.82 | 3.13 | 0.8 |
oltp_write_only | 5.37 | 6.55 | 1.2 |
types_delete_insert | 7.7 | 6.91 | 0.9 |
writes_mean_multiplier | 1.0 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 101.2 | 25.57 | 4.1 |
tpcc_tps_multiplier | 0.3 |
Overall Mean Multiple | 1.17 |
---|