github dolthub/dolt v1.53.0
1.53.0

latest releases: v1.59.1, v1.59.0, v1.58.8...
4 months ago

There's no known breaking changes in this release. However, we did rewrite the Stored Procedure engine. As far as we know they changes only improve correctness but it's a big change so we made a minor version bump.

Merged PRs

dolt

  • 9171: dolt status user contribution
  • 9167: test for temporary tables in stored procedures
    The stored procedures rewrite fixed an issue where temporary tables aren't able to be created and selected within a stored procedure; this PR adds tests to specifically test for that case.
    fixes: #8762
  • 9165: go: keymutex: Improve cleanup and refcnt implementation so that we can keep the mutexes map clean in more cases.
  • 9155: fix status command after removing origin from remote
    Fix #9130 and #9069.
    $ dolt clone timsehn/docs
    $ cd docs
    $ dolt remote -v
    origin https://doltremoteapi.dolthub.com/timsehn/docs
    $ dolt remote rm origin
    $ dolt status
    On branch main
    Your branch is up to date with 'origin/main'.
    nothing to commit, working tree clean
  • 9120: Consistently use pointer receiver for ByteArray
    Similar to #9100
    For structs that are exclusively used in interfaces, there's no reason to not use pointer receivers instead of value receivers. Using value receivers can cause the struct to be copied every time the method is invoked.
    Pointer receivers are also more correct here: copying the struct means that changes to the ImmutableValue field (such as setting its Buf field in ImmutableValue.GetBytes) won't be saved when the method exits, defeating the caching of values loaded from storage.

go-mysql-server

  • 2964: Unwrap inputs to REGEXP_LIKE, REPLACE, and RPAD/LPAD functions.
    These are a couple more functions whose inputs aren't being unwrapped. If the inputs come from a column with a TEXT type, then they won't be converted to strings and the functions will fail. This PR fixes this by making sure that the inputs are converted.
    We missed this previously because although we have tests for these functions, none of them tested getting the inputs from TEXT columns of a table.
  • 2963: From unixtime
    Merged main from dolthub/go-mysql-server#2910
  • 2962: fix infinite recursion with recursive stored procedures
    fixes: #8763
  • 2961: fix prepare statements and user vars in stored procedures
    This PR adds tests for user variables within Stored Procedures.
    Additionally, this PR has changes so that we don't double parse PREPARE ... FROM ... statements, which also allows them to be used in the updated Stored Procedures call.
    fixes: #8911
  • 2959: Doltgres literal support
    This makes literal expression implement the sqlparser.Injectable interface so they can be used in Doltgres AST conversion.
    Also exports fields so literals can be edited in place (required for how Doltgres processes these in a couple places).
    This is an alternative to dolthub/go-mysql-server#2946.
  • 2955: Add support for UPDATE ... RETURNING
    Related to: dolthub/doltgresql#1421
  • 2851: rewriting stored procedures
    This PR reimplements Stored Procedures so that queries are run individually, while maintaining context through the use of a stack.
    companion pr: dolthub/vitess#402

vitess

  • 413: Add support for RETURNING to UPDATE and INSERT nodes
  • 402: add variable to colval

Closed Issues

  • 8911: can't assign local variables to user variables
  • 8763: Stored procedures: stored procedure with recursive call does not terminate
  • 9130: Dolt and Git differ if status is run after deleting the origin remote.
  • 8762: Stored procedure: temp table created in procedure not visible
  • 9149: CREATE TEMPORARY TABLE during a transaction causes a commit
  • 2957: Unexpected syntax error when using AFTER clause in ALTER TABLE statement

Performance

Read Tests MySQL Dolt Multiple
covering_index_scan 1.96 0.65 0.33
groupby_scan 13.46 17.63 1.31
index_join 1.44 2.35 1.63
index_join_scan 1.42 1.44 1.01
index_scan 34.33 30.26 0.88
oltp_point_select 0.18 0.26 1.44
oltp_read_only 3.36 5.18 1.54
select_random_points 0.33 0.59 1.79
select_random_ranges 0.36 0.62 1.72
table_scan 34.33 32.53 0.95
types_table_scan 75.82 123.28 1.63
reads_mean_multiplier 1.29
Write Tests MySQL Dolt Multiple
oltp_delete_insert 8.9 6.32 0.71
oltp_insert 4.03 3.13 0.78
oltp_read_write 8.74 11.45 1.31
oltp_update_index 4.1 3.19 0.78
oltp_update_non_index 4.18 3.07 0.73
oltp_write_only 5.67 6.32 1.11
types_delete_insert 8.28 6.67 0.81
writes_mean_multiplier 0.89
TPC-C TPS Tests MySQL Dolt Multiple
tpcc-scale-factor-1 97.55 39.68 2.46
tpcc_tps_multiplier 2.46
Overall Mean Multiple 1.55

Don't miss a new dolt release

NewReleases is sending notifications on new releases.