github dolthub/dolt v0.41.5
0.41.5

latest releases: v1.43.14, v1.43.13, v1.43.12...
2 years ago

Merged PRs

dolt

  • 4372: go/dotlcore/sqle/writer: Handle UNIQUE KEYs overlapping with primary keys
    fixed #4369
  • 4371: .github/workflows: ci-bats-*.yaml: Try to paper over flakey sql-server port selection in tests with BATS_TEST_RETRIES.
  • 4370: proto,go: Add RepoPath field to remotesapi Request messages. Pass it along in remotestorage ChunkStore.
  • 4366: Fix bug in colDiffs
    Fixes #4326
    • Fix a bug in splitDiffResultRow where a key existence is not being checked in a map. Specifically, ds.fromTo[i]] defaulted to 0 (the zero value for int) in the case where i did not exist as a key in ds.fromTo.
      image
  • 4364: JSON read perf
    Re: dolthub/go-mysql-server#1270
    types_table_scan from 425 ms/q -> 134 ms/q, ~70% faster. The nightly benchmark should be around 2.5 (from 7.9).
  • 4355: json_table tests
    Test PR for dolthub/go-mysql-server#1261
  • 4347: Add -A (--ALL) to dolt commit and CALL DOLT_COMMIT
    -A adds all tables (including new tables) to the staged set before committing.
    Closes #4309
  • 4301: have TempTableFilesDir() return err if .dolt is not found
    depends on dolthub/go-mysql-server#1256
    If .dolt dir is removed during runinng sql-server. Any connections will fail and it will cause the server to stop.

go-mysql-server

  • 1273: fix test ordering
    some tests on dolt were failing for JSON_TABLES, due to abiguous ORDER BY
    Companion PR: #4355
  • 1272: Removed exponential time complexity for foreign key analysis
    This fixes dolthub/go-mysql-server#1268
    Foreign key analysis created acyclical trees that were traversed during query execution to emulate cascade operations. This meant that cyclical foreign keys were converted to an acyclical tree. Normally this isn't possible as cyclical trees are infinitely traversable, but MySQL has a depth limit of 15, which allowed us to materialize an acyclic tree with a maximum height of 15 nodes. This, however, lead to trees with an exponential number of nodes: roughly (number_of_fks)¹⁵ × 1.5 nodes in the tree. With just 3 foreign keys, we'd get a tree with roughly 22 million nodes, which would take forever to process.
    This PR completely changes the analysis step to now generate cyclical trees. In addition, depth checks are now properly implemented (during query execution rather than during analysis), being represented by a returned error once the depth limit has been reached. Interestingly, MySQL is supposed to process up to 15 operations (returning an error on the 16th), but cyclical foreign keys will error on the 15th operation. I think this is a bug in MySQL, but nonetheless the behavior has been duplicated here.
    I also updated the timestamp_test.go file to grab an unused port. This prevents test failures due to requesting an already-in-use port. Not related to this PR in particular, but it was annoying to deal with so I fixed it.
  • 1271: enginetest: Add repro enginetest for unique key error
    repro for Dolt bug #4372
  • 1270: No new context for every json SQL convert
    perf here: #4364
  • 1269: cleanup top-level directories
  • 1261: use json_table in crossjoin that references table column on left
    Fix for: #4340
    To use a column as the expr argument to json_table, the column must be part of a CROSS JOIN and has to be on the left side of a cross join (reference). Oddly, you cannot reference the column directly nor through a subquery (stackoverflow reference).
    As a result, this is partially an aliasing issue, which I do address in this PR.
    Added special column resolving rules for JSONTable for when its under a Join and subquery expression
  • 1256: add check for chan is closed in Listener.Close()
    #4301 depends on this PR.
    A test for it is added in #4301
  • 1253: Support Varchar(MAX)
    related to #2261

Closed Issues

  • 2261: Support VARCHAR(MAX)
  • 4369: Dolt panic on duplicate insertion when a column is part of both a primary key and unique key
  • 4326: UI issue for dolt diff and dropped columns
  • 4235: Deleting database directory when a running server is using it panics
  • 1441: dolt_diff_* tables can't handle dropped columns from the tables they describe.
  • 4309: Add -A option to dolt commit to add all new and modified tables
  • 4176: Collation not respected properly by LIKE and REGEXP_LIKE
  • 4349: Is there a way to release momory?
  • 1268: Analyzing self-referential foreign keys triggering an infinite loop

Latency

Current Default Format (__LD_1__)

Read Tests MySQL Dolt Multiple
covering_index_scan 1.96 6.55 3.3
groupby_scan 12.52 22.69 1.8
index_join 1.18 16.71 14.2
index_join_scan 1.12 16.12 14.4
index_scan 30.26 73.13 2.4
oltp_point_select 0.15 0.57 3.8
oltp_read_only 3.02 9.56 3.2
select_random_points 0.31 1.39 4.5
select_random_ranges 0.36 1.37 3.8
table_scan 30.81 69.29 2.2
types_table_scan 69.29 223.34 3.2
reads_mean_multiplier 5.2
Write Tests MySQL Dolt Multiple
bulk_insert 0.001 0.001 1.0
oltp_delete_insert 2.81 19.65 7.0
oltp_insert 1.55 7.98 5.1
oltp_read_write 5.28 36.89 7.0
oltp_update_index 1.58 9.39 5.9
oltp_update_non_index 1.47 6.55 4.5
oltp_write_only 2.39 26.2 11.0
types_delete_insert 2.91 155.8 53.5
writes_mean_multiplier 11.9
Overall Mean Multiple 8.0

New Format (__DOLT__)

Read Tests MySQL Dolt Multiple
covering_index_scan 1.93 2.76 1.4
groupby_scan 12.08 17.32 1.4
index_join 1.18 4.57 3.9
index_join_scan 1.12 3.89 3.5
index_scan 30.26 53.85 1.8
oltp_point_select 0.15 0.46 3.1
oltp_read_only 2.91 8.28 2.8
select_random_points 0.3 0.74 2.5
select_random_ranges 0.35 1.12 3.2
table_scan 30.81 63.32 2.1
types_table_scan 69.29 193.38 2.8
reads_mean_multiplier 2.6
Write Tests MySQL Dolt Multiple
bulk_insert 0.001 0.001 1.0
oltp_delete_insert 3.02 10.84 3.6
oltp_insert 1.58 2.81 1.8
oltp_read_write 5.18 16.71 3.2
oltp_update_index 1.61 4.91 3.0
oltp_update_non_index 1.55 5.18 3.3
oltp_write_only 2.3 8.28 3.6
types_delete_insert 3.13 12.08 3.9
writes_mean_multiplier 2.9
Overall Mean Multiple 2.7

Don't miss a new dolt release

NewReleases is sending notifications on new releases.