Merged PRs
dolt
- 3964: improve error message for merge when two columns have the same tag
See #3963 - 3961: try to create the directory referenced by the remote url if it doesnt exist
- 3960: When modifying a column, don't seed the new column tag with the old NomsKind
Columns tags are generated in a psuedo-random manner. They are seeded with the NomsKinds of all the existing columns and the name of the column for which the tag is being generated.
When modifying a column, we previously included the old column's NomsKind when seeding the new tag. This produced bad round-tripping behavior explained here:
#3950 (comment)
This PR excludes the old column's NomsKind from the seed. - 3956: Add command line and SQL support for
dolt pull <remote> <remoteBranch>
Adds support for explicitly specifying the remote branch to merge into the current working head.
Fixes: #3937
Documentation updates: dolthub/docs#811 - 3954: edit prep workflow script
- 3953: updating privilege docs
- 3952: Count prepared tests
- 3941: Fix some env loading panics
- 3920: Better read only error messages
re: #3919
companion: dolthub/go-mysql-server#1130 - 3903: Prune table scans columns
Change the table iterator interfaces to return only the requested projection rows.
companion PR: dolthub/go-mysql-server#1122 - 3810: more privilege changes
Changes:- add
--user
todolt sql
anddolt sql -q
- default user is persisted immediately iff
--user
or--password
option is given - default super user is
root@localhost
instead ofroot@%
- only create
doltcfgdir
if we need to persist something - has more tests
Companion PR: dolthub/go-mysql-server#1127
Fix for: #3794
Also a fix for: #3881
- add
- 3796: support unix socket
Depends on dolthub/go-mysql-server#1114
Uses unix socket file to run local server for Unix and Unix-like systems.
Uses TCP for Windows.
go-mysql-server
- 1141: Bug fix for
now/current_timestamp
column default values not in parens
Our column default logic was conflating whether a default value was a literal value or an expression when thenow
orcurrent_timestamp
functions were used as the column default. Those column defaults were marked as literals, even though they are expressions that need to be resolved and evaluated. These two functions are the only functions that may be used as a column default value without being enclosed in parens, and when used that way, they were not getting resolved and causing a panic (see linked issue for more details).
This change makesColumnDefaultValue.IsLiteral
always return true if the default value is a literal value and always return false if the default value is some expression that needs to be resolved and evaluated. To keep consistency with MySQL's behavior, it requires that we track whether the column default was enclosed in parens when defined. This is necessary because MySQL allows the now/current_timestamp functions to be used without parens for datetime/timestamp column, but must be specified in parens when used as the default for any other column type. Since that validation is done in a separate spot from the parsing, we need to track that as part of ColumnDefaultValue.
Testing: Dolt engine tests and Dolt unit tests all pass correctly with these changes.
Fixes: #2618 - 1140: Error test fixes, extra test for EmptyTable
- 1138: Improving error message when a stored procedure isn't found and no DB is selected
Previously, if a user tried to call a stored procedure with no database selected, they would get this error message:
We've seen some users connect to a sql-server, but not use a database and be confused by this error message, so this change adds extra content to the error message when no current database is selected:stored procedure "%s" does not exist
stored procedure "%s" does not exist: this might be because no database is selected
- 1134: Populate max field length response metadata
The MySQL wire protocol includes a "column length" field as part of the Column Definition that tells clients the maximum amount of bytes they should expect for each serialized value in that column. Before this change, go-mysql-server was not populating this field and some MySQL clients were unable to parse responses without that max field byte length metadata. This change starts populating that field, with values identical to what MySQL returns.
It was pretty straightforward to plumb this new piece of data through, but things got a little tricky with some of the stringtypes, so I cleaned up that code a little bit to better distinguish between themaxChars
,maxBytes
, andmaxResponseBytes
for a stringtype.
Fixes: #3914
Fixes: #3893 - 1133: Add indexes to keyless data tests and validate engine after TestQueryWithContext
- 1130: Better read only errors
- 1129:
json_contains
bug fixes
Bug fixes for Dolt's implementation ofjson_contains
(MySQL Documentation)
Fixes: #3895 - 1127: super user is localhost, and don't persist superuser
Companion PR: #3810 - 1122: Prune *plan.ResolvedTable columns
Table schemas change after we prune columns by pushing projections into them. This is a one-way process, tables can't become un-projected after pushdown.
edit: I rewrote this completely to be more organized and avoid some of the resolve issues from before. - 1114: support unix socket
#3796 is dependent of this PR
Merged in Aaron's branch with supporting two-listeners
Closed Issues
- 2618: Error with Lazy ColumnDefaultResolution w/
Describe
and Column Defaults - 3937: Can't
call dolt_pull()
if no upstream branch is set - 3970: transaction error
- 3957: DBeaver: data tables in-cell updates are not picked-up by Dolt
- 3949: DBeaver: data tables in-cell updates are not picked-up by Dolt
- 3914: MYSQL_DATA_TRUNCATED error when using C API
- 3893: Support sending back max field length metadata in MySQL wire protocol
- 3895: "Invalid argument" for json_contains() queries
- 3935: Calling
dolt_add()
does not stage commits - 3913: Resolving conflict using theirs never completes
- 3887: Dolt upgrade seems to have lost some settings
- 3595: Allow Dolt to communicate over MySQL socket interface