github dolthub/dolt v0.52.2
0.52.2

latest releases: v1.43.0, v1.42.20, v1.42.19...
20 months ago

Merged PRs

dolt

  • 5122: go/store/{blobstore,nbs}: Refactor Blobstore interface to work in multi-db mode
    Currently in nbs/store.go NewBSStore() initializes a blobstoreManifest with a static name "manifest". The manifestManager uses this name as a key to cache memory copies of manifestContents. In multi-db mode, this causes disparate manifestContents to clobber each other.
  • 5119: go/libraries/doltcore/remotesrv: Reducing logging verbosity.
    Over time some trace logging snuck into remotesrv. At the same time, the logs were not as useful as they could have been and did not make use of log levels. Clean things up a bit to log more information about the amount of work done in some of the requests without being overly verbose.
  • 5116: go/libraries/doltcore/remotestorage: chunk_store: Fix semantics of Rebase and Root. Root stays fixed until a Rebase call.
    When remotestorage.DoltChunkStore was originally written, it forwarded all ChunkStore calls to the remotesapi. In reality, a client should expect a snapshot of the database on open, and the root should only change when Rebase() or Commit() is called. This fixes up that initial flaw. Rebase() becomes a refresh of the Root from the gRPC service, and Root() itself is just a read of the cached root hash.
    This reduces unnecessary traffic to the remotestorage service and improves performance of things like sql-server read replicas.
  • 5105: add --schema-only flag for dolt dump
    --schema-only is used for dump table schemas with no data into sql file.

go-mysql-server

  • 1524: Fix empty cachedResult/existIter issues
    MAX_1_ROW no longer uses a CachedResult, and eagerly loads its child on the first call RowIter(). Three things can happen:
    1. the child returns one row, which we cache in the node state
    2. the child returns zero rows, which we note with a flag in the node state
    3. the child returns more than one row, and we error
      RowIter returns the result row or an emptyIter if no child rows were returned. The emptyIter sentinal is important for antiJoin correctness and join short-circuit performance.
      Original error from system table benchmarks:
    error running query {connectTime=2023-01-07T01:12:10Z, connectionDb=sbtest, error=attempted to call RowIter() on a disposed Node: *plan.CachedResults, query=select * from dolt_commit_ancestors where commit_hash = (select commit_hash from dolt_log limit 1 offset 599)}
    
  • 1523: Change coster for non-stats tables
    dolt side #5112
  • 1522: Fixed ENUM issue when using INSERT INTO ... SELECT
  • 1521: implementing more st_... functions
    implements:
  • 1520: implementing st_distance
    MySQL docs: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html#function_st-distance

Closed Issues

  • 5094: support dolt dump --schema-only

Latency

Read Tests MySQL Dolt Multiple
covering_index_scan 2.03 2.91 1.4
groupby_scan 12.98 17.95 1.4
index_join 1.25 5.0 4.0
index_join_scan 1.21 4.18 3.5
index_scan 31.94 59.99 1.9
oltp_point_select 0.16 0.53 3.3
oltp_read_only 3.07 9.22 3.0
select_random_points 0.32 0.83 2.6
select_random_ranges 0.36 1.21 3.4
table_scan 32.53 66.84 2.1
types_table_scan 73.13 200.47 2.7
reads_mean_multiplier 2.7
Write Tests MySQL Dolt Multiple
bulk_insert 0.001 0.001 1.0
oltp_delete_insert 2.97 11.04 3.7
oltp_insert 1.47 3.07 2.1
oltp_read_write 5.37 18.28 3.4
oltp_update_index 1.44 5.0 3.5
oltp_update_non_index 1.44 5.37 3.7
oltp_write_only 2.26 8.74 3.9
types_delete_insert 3.02 11.45 3.8
writes_mean_multiplier 3.1
Overall Mean Multiple 2.9

Don't miss a new dolt release

NewReleases is sending notifications on new releases.