This release contains backwards incompatible changes:
- Dolt commands which have been migrated to use SQL (
sql
,add
,blame
,status
,commit
,branch
) have new behavior which may impact existing user workflows. Specifically, If the--user
flag is in use, there is a new--password
argument which will be required. If one is not presented, you will be prompted for a password, and this will hang waiting for input. Furthermore, previously these commands would allow users to specify incorrect credentials silently. If bad credentials are given now, the commands will fail appropriately. If you want to use a password in your automated jobs, but don't want to specify the password on the command line, you can set theDOLT_CLI_PASSWORD
environment variable.
Per Dolt’s versioning policy, this is a minor version bump (major.minor.patch).
Merged PRs
dolt
- 6237: chore: fmt modify
unnecessary use of fmt.Sprintf
use fmt.Errorf(...) instead of errors.New(fmt.Sprintf(...))
use fmt.Printf instead of fmt.Println(fmt.Sprintf(...)) (but don't forget the newline) - 6235: Bring back pretty content for commit when commiting to a local db
The output of the commit command changed with: #6138
This change brings back the pretty log command output when running in a local context. This is a temporary change since we probably won't get to thelog
command for awhile yet. - 6234, 6233, 6232: Continuous Integration Updates
- 6229: Support for dolt_ procedures inside user stored procedures
These are just tests, the actual necessary changes are in dolthub/go-mysql-server#1852
This addresses a large part of #5829, but see the last comment there: because of how we analyze / execute stored procedures, thingsdolt_checkout()
doesn't work in stored procedures in some cases (namely when using unqualified table names). - 6176: Enable authentication in the CLI commands migrated to sql backend
Enable Authentication in the following ways:- New Global Flag --password
- DOLT_CLI_PASSWORD environment variable
- Ask for a password with a prompt.
- Automatic authentication to a server using the secret in the sql-server.lock file
One significant change in behavior is that previously if a user presented a non-sense username/password, we'd accept it as a super user identity. If a real user was specified, we would promote that user to a super user - regardless of if the password was correct.
Now, if a --user flag is presented, the user must present a password by flag, env var or prompt. If the user/pwd combination is not a known user, the command will fail. This applies to both local and remote mode.
Important to call out that this isn't about security. If you want to be a super user, you can just not provide a --user. This behavior is to enable consistent behavior of client applications where they need to test permissions. We were making this impossible before because bad credentials were being promoted.
Related: #3922
go-mysql-server
- 1848:
IntDiv.Type()
should always return eitheruint64
orint64
Previously, ourIntDiv.convertLeftRight()
usedIntDiv.Type()
to determine the larger type betweenIntDiv.Left.Type()
andIntDiv.Right.Type()
to avoid precision loss when doing internal calculations. Now, that logic is moved fromIntDiv.Type()
toIntDiv.convertLeftRight()
, andIntDiv.Type()
can only returnuint64
orint64
.
This should fix the sql correctness regression from dolthub/go-mysql-server#1834 - 1847: Fix TargetSchema.Resolved() to check targetSchema column default expressions
A coupleSchemaTarget
implementations weren't checking if thetargetSchema
was resolved as part of theResolved()
method. Added tests, audited the other implementations, and simplified the logic to use a new method onSchema
to check that column default expressions are resolved.
Fixes: #6206
Dolt CI Run: #6213 - 1839: Slow degenerate semi join, hoist select opt
This enables recursive subquery decorrelations, and adds a hash join execution option for semi joins that is equivalent to cached subquery existence checks.
Closed Issues
- 5829:
dolt_commit()
will break some following statements in stored procedures
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.66 | 1.4 |
groupby_scan | 12.3 | 17.01 | 1.4 |
index_join | 1.16 | 4.41 | 3.8 |
index_join_scan | 1.12 | 2.11 | 1.9 |
index_scan | 30.81 | 54.83 | 1.8 |
oltp_point_select | 0.15 | 0.46 | 3.1 |
oltp_read_only | 2.86 | 7.98 | 2.8 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.06 | 3.0 |
table_scan | 30.81 | 54.83 | 1.8 |
types_table_scan | 70.55 | 155.8 | 2.2 |
reads_mean_multiplier | 2.3 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.18 | 5.88 | 1.1 |
oltp_insert | 2.57 | 2.91 | 1.1 |
oltp_read_write | 6.32 | 15.27 | 2.4 |
oltp_update_index | 2.48 | 3.07 | 1.2 |
oltp_update_non_index | 2.57 | 2.91 | 1.1 |
oltp_write_only | 3.55 | 7.43 | 2.1 |
types_delete_insert | 5.09 | 6.55 | 1.3 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 1.9 |
---|