Merged PRs
dolt
- 10111: Implement DOLT_JSON_DIFF table function
This defines a new system table functionDOLT_JSON_DIFF(arg1, arg2)
For each difference between the two provided JSON objects, this function produces a row describing the path to the changed value, and the before and after values. It can be used in a lateral join with other system tables to show changes in multiple rows or across multiple commits.
The tests in dolt_json_diff_test.go are go tests for the table function, confirming that it has the same behavior as the unit tests for the underlying differ.
The added engine tests are used to test more complicated behavior, such as using this table function in a lateral join. - 10096: Add
require_client_certto sql server configuration options
Adds a newrequire_client_certproperty to thelistenersection of a sql server configuration file. When enabled, clients must present a certificate and must connect over a secure connection. Ifca_certis also provided in the server's configuration, the provided client cert will also be verified against the server's CA cert.
Note that this mode preventsdolt sqlfrom being able to connect to a running Dolt SQL server, sincedolt sqlwill connect to the server but does not have a valid client cert and private key to use.
Related to #10008
Doc updates dolthub/docs#2718
go-mysql-server
- 3315: cache static groupby schema
The schema throughout a groupby query does not change, so we should not be recreating one for the grouping key each time.
Benchmarks: #10119 (comment) - 3314: server/handler: Add ConnectionAuthenticated callback which Vitess can call once the connection is authenticated.
Previously gms relied on the ComInitDB callback to update the processlist with the currently authenticated user. This resulted in the processlist showing "unauthenticated user" for connections which were already authenticated but which had not issued a ComInitDB. Those connections could issue queries which would also appear in the process list. Adding an explicit callback when the authentication is successful and allowing the processlist entry to be Command Sleep with an authenticated user even when no database is selected is more correct behavior here. - 3310: Split
Iter.Next(),RowToSQL, andcallbackinto separate threads
This PR expands on an optimization where we separateiter.Next()andRowToSQL+callback()into two separate threads. Now,iter.Next(),RowToSQL, andcallback()all run in their own goroutines with corresponding buffered channels communicating between them.
Additionally, this PR tidys up theresultForDefaultIterandresultForValueItercode.
Benchmarks: #10103 (comment)
vitess
- 444: go/mysql: server.go: Add a callback on Handler, ConnectionAuthenticated, which is called immediately after the connection is authenticated.
This allows a server implementation to know the authenticated user without waiting for the first command interactions, such as ComQuery or ComInitDB. - 443: Updating auth interfaces to pass connection
Enables implementations to have access to the connection. Needed as part of mutual TLS auth work so that implementations can validate connection properties. Also matches the interface definitions in the official vitess repo.