github dolthub/dolt v1.24.0
1.24.0

latest releases: v1.38.1, v1.38.0, v1.37.0...
6 months ago

This release contains backwards incompatible changes:

  • Chunk Journal Format – To support the new dolt_reflog() feature, a new timestamp field was added to Dolt's chunk journal format. This means Dolt databases stored on disk using Dolt versions 1.24.0 or higher cannot be opened with older Dolt versions. If you need to downgrade from Dolt 1.24.0 to an older version, you can stop any dolt sql-server that is running, then run dolt gc with Dolt 1.24.0 or higher, and then you will be able to use an older Dolt version.
  • Schema storage format - To support virtual and generated columns, Dolt now writes different information to its binary table schema format. This change isn't backwards incompatible, but it means that databases edited with this version of Dolt or later will not be usable with older versions of Dolt. Impacted users will need to upgrade to the latest Dolt binary.

Per Dolt’s versioning policy, this is a minor version bump because these changes may impact existing applications. Please reach out to us on GitHub or Discord if you have questions or need help with any of these changes.

Merged PRs

dolt

  • 6937: Adding support for listing all entries in dolt_reflog()
    Allows dolt_reflog() to be called without any arguments to list the contents of the reflog/chunk journal. Internal ref types and ref types that don't always point to a commit (i.e. working set refs) are still excluded.
    While testing this, I realized that we needed to change to iterate the chunk journal roots in order (instead of in reverse order), otherwise we don't identify the correct, first root where a ref was set to a new value and the ref updates don't appear in the right order in the reflog.
  • 6935: Remove bulk_insert CI benchmark
  • 6919: Partial support for virtual columns
    Merges don't work yet, coming in a separate PR.
    But storage format details should be final.
  • 6882: Feature: Dolt reflog support
    A new dolt_reflog() table function allows you to query Dolt's chunk journal to view the history of named refs, such as branches and tags.
    Usage Example:
    > select * from dolt_reflog('branch1');
    +--------------------+---------------------+----------------------------------+-------------------------------+
    | ref                | ref_timestamp       | commit_hash                      | commit_message                |
    +--------------------+---------------------+----------------------------------+-------------------------------+
    | refs/heads/branch1 | 2023-10-25 20:54:37 | v531ptpmv2tquig8v591tsjghtj84ksg | inserting row 42              |
    | refs/heads/branch1 | 2023-10-25 20:53:12 | rvt34lqrbtdr3dhnjchruu73lik4e398 | inserting row 100000          |
    | refs/heads/branch1 | 2023-10-25 20:53:06 | v531ptpmv2tquig8v591tsjghtj84ksg | inserting row 42              |
    | refs/heads/branch1 | 2023-10-25 20:52:43 | ihuj1l7fmqq37sjhtlrgpup5n76gfhju | inserting row 1 into table xy |
    +--------------------+---------------------+----------------------------------+-------------------------------+
    4 rows in set (0.00 sec)
    Documentation: dolthub/docs#1815
    Compatibility:
    This change needs to be released as a minor version bump because it changes the chunk journal record format for root hash records to include a timestamp field. Older versions of Dolt's chunk journal reader aren't forward compatible to read this new format (but the chunk journal reader is backwards compatible to still read older journals). If a customer needs to downgrade after using a version with this support, they can stop their sql-server, run dolt gc to move the chunk journal content into oldgen, delete the chunk journal file if necessary (it should be removed automatically by dolt gc), and then restart their sql-server with an older Dolt version.
    Future Extensions:
    • root author – I started looking at recording the SQL user who created the new root value, but was hesitant to put too much data into the chunk journal records. This does seem like useful information to track though, so I'm still thinking about whether this is worth adding now or later.
    • reflog rows for deletion – Currently, dolt_reflog() results show when a ref is changed to a new value, but there is not a row in the result set marking when the ref is deleted. This would be shown as a NULL commit_hash and commit_message. Combining this with the point above would allow the reflog to show who deleted a ref.
    • show all refs – The current implementation requires a ref name and filters results on that ref. We should allow viewing the full reflog without filtering on a ref.

Closed Issues

Don't miss a new dolt release

NewReleases is sending notifications on new releases.