Skip to content

1.58.3

Compare
Choose a tag to compare
@github-actions github-actions released this 12 Aug 21:33

Merged PRs

dolt

  • 9668: Initialize a branch's working set when referenced as a branch-revision database
    When a new branch is pushed to a SQL server through the RemotesAPI, that branch will not have its working set initialized yet. If a customer accesses that branch as a branch-revision database (e.g. mydb/my_new_branch) and performs a write operation, the lack of a working set will cause an error. This change fixes that case by initializing a branch-revision database's working set if it has not been created yet.
  • 9667: Fix another primary key ordering test
  • 9665: A Primary Key BATS test to unskip.
    Found testing Cursor Agent with GPT-5
  • 9655: Skip flaky 'archive: too few chunks' test in Lambda environment
  • 9649: Removed root object presence from some locations
    Root objects occupy the same namespace as tables, however they shouldn't be returned in places that expect to see only tables. This PR allows for a distinction when querying for names, so that locations that only work with tables (such as some system tables) no longer receive root object names.
    Required for:
  • 9648: Bug fix: ensure dolt_checkout() initializes a branch's working set
    dolt_checkout() already had logic to initialize a branch's working set if one was not available, but the error it expected to see to trigger that logic was not being returned by the functions it called. This changes the checkoutExistingBranch() function so that it also resolves the working set for that branch and returns a doltdb.ErrWorkingSetNotFound error if the working set is not available.
  • 9647: Refactor SetSystemVar and GetRowsForSql
  • 9646: Add UUID key recommendation to default AGENT.md
    I notice that Claude Code likes auto_increment primary keys but Dolt likes UUID keys better. So, I added a section to AGENT.md.
  • 9642: Fix table usage during merge
    We would always assume that tables are used in certain situations (rather than root objects), which would lead to a panic.
  • 9639: Small fixes to ci, --help & valid branch names
    Two small changes to CI:
    1. dolt ci import now requires that the branches you list under on.action, on.pull_request are valid branch names. This also blocks off attempting to use the * wildcard identifier, which we do not support.
    2. I also expanded the dolt ci import --help page to include the specification for the workflow yaml files.
  • 9638: cache keys in iters to reduce gc
    Companion PR: dolthub/go-mysql-server#3146
  • 9637: #9582 - Fix cherry-pick timestamp preservation
    Fixes #9582
    Cherry-pick now preserves original commit timestamp during operations.
  • 9635: Stop processing earlier when dolt_pull() is a no-op
    User demonstrated that a no-op pull was taking far too long. Turns out we should be stopping processing but instead do a lot of unnecessary status printing computation only to throw it away. This change just short circuits any work if the current branch is already up-to-date.

go-mysql-server

  • 3152: Validate trigger name length is not over 96 chars
    We weren't enforcing any name length constraints on triggers, and when customers created triggers with very long names (i.e. over 64 characters, the MySQL limit), they could encounter problems with table schemas that don't support longer lengths.
    In this change, we apply a max trigger name length of 96 characters and reject CREATE TRIGGER statements that create triggers with names longer than that limit. We chose 96 characters for the limit, instead of copying MySQL's 64 character limit, so that this change would not break existing applications that are creating trigger names slightly longer than MySQL's 64 character limit.
  • 3150: Misc code clean up
  • 3147: dolthub/go-mysql-server#3144 - Fix parseErr tracing to show error messages instead of memory addresses
    Fixes dolthub/go-mysql-server#3144
    Add Error() method to parseErr struct so tracing systems show actual error messages instead of memory addresses like "{0xc006f85d80}".
  • 3146: allocate fewer sql.Rows
    This PR removes extra sql.Row allocations where it has no impact on logic.
    Doltgres error: dolthub/doltgresql#1735
  • 3145: fix panic over SetOps with joins and subqueries
    The analyzer rule assignExecIndexes will apply a StripRowNode over any joins within a subquery.
    The analyzer rule finalizeUnions recursively calls the analyzer (calling assignExecIndexes), resulting in StripRowNodes getting applied twice.
    The double stripping results in rows that are too short and panics.
    This PR tells the finalizeUnions selector to skip assignExecIndexes, preventing the nested StripRowNodes.
    Also has some small formatting and naming clean up.
    fixes: #9631
  • 3142: Add support for DELETE ... RETURNING
    Adds support for the RETURNING clause in DELETE statements. This syntax is supported in Postgres/Doltgres, but not in Dolt/GMS/MySQL.
    Tests for this functionality are in the associated Doltgres PR: dolthub/doltgresql#1712
  • 3139: Remove the go-kit dependency
    This library depends on https://github.com/go-kit/kit.
    It looks to only use this for this single package: https://github.com/go-kit/kit/blob/master/metrics/discard/discard.go
    Although the usage of this package is safe, the go-kit library hasn't been maintained since 2023 - and is throwing some warnings in our security scanning.
    Can we look at removing usage of this external library?
    The proposed PR replaces it with an internal interface - but also allows configuration via a config options.
    Alternatively it could maybe be dropped completely? It's only a no-op.

Closed Issues

  • 9509: Add agent.md to dolt_docs populated on init
  • 9631: handler caught panic: runtime error: slice bounds out of range on SELECT...EXCEPT query
  • 9628: In the result of the following query, the dashboard_id field appears to be incorrect — it returns the value of entity_id instead of the actual dashboard_id.
  • 3144: Planbuilder: Traces do not record parse exceptions correctly

Performance

Read Tests MySQL Dolt Multiple
covering_index_scan 1.89 0.68 0.36
groupby_scan 13.22 19.29 1.46
index_join 1.47 2.52 1.71
index_join_scan 1.44 1.44 1.0
index_scan 34.33 31.37 0.91
oltp_point_select 0.2 0.29 1.45
oltp_read_only 3.75 5.37 1.43
select_random_points 0.35 0.61 1.74
select_random_ranges 0.38 0.64 1.68
table_scan 34.95 32.53 0.93
types_table_scan 75.82 132.49 1.75
reads_mean_multiplier 1.31
Write Tests MySQL Dolt Multiple
oltp_delete_insert 8.43 6.55 0.78
oltp_insert 4.18 3.25 0.78
oltp_read_write 9.06 11.87 1.31
oltp_update_index 4.25 3.3 0.78
oltp_update_non_index 4.18 3.25 0.78
oltp_write_only 5.28 6.55 1.24
types_delete_insert 8.43 6.91 0.82
writes_mean_multiplier 0.93
TPC-C TPS Tests MySQL Dolt Multiple
tpcc-scale-factor-1 94.91 38.61 2.46
tpcc_tps_multiplier 2.46
Overall Mean Multiple 1.57