You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
12360: pk change merge failure with multi-merge-bases
Related: #12357
go-mysql-server
4123: Preserve caller transactions when executing stored procedures CALL currently clears the caller's transaction before executing a stored procedure, causing Dolt to discard earlier uncommitted row changes.
This fix preserves two boundaries:
A normal CALL uses the caller's existing transaction. It must not clear that transaction and lose earlier changes. Explicit COMMIT or ROLLBACK inside the procedure remains effective.
A trigger belongs to the statement that fires it. Procedures called by the trigger must finish within that statement's transaction.
The interpreter no longer saves, clears, and restores the transaction around CALL. Trigger execution temporarily suppresses automatic commits, including while its inner iterator closes, then restores the caller's previous setting on success or error. This prevents procedure-body statements from committing or clearing the outer insert/delete transaction before that statement finishes.
Fixes Dolt issue #12356
4106: Make the quadratic range overlap check opt-in, and check for cancelation during analysis
Fixes the analysis-time hang in #12315. RemoveOverlappingRanges ended by checking every pair of its output ranges for overlap (added in #2149 to catch range tree bugs). That check is quadratic, so a large IN list on a prefix of a multi-column index could spend minutes in analysis, and since analysis never checked ctx, KILL had no effect.
The full check is now behind sql.SetFullRangeValidation. enginetest turns it on in init(), so GMS, Dolt and Doltgres engine tests and the GMS sqllogictest harness keep running it.
Without the flag, collections of up to 128 ranges are still checked.
RemoveOverlappingRanges and analyzer batches now check ctx.Err().
Dolt's sqllogictest harness doesn't import enginetest, so it will need its own sql.SetFullRangeValidation(true).
4104: sql: Tighten the session and registry interfaces around engine variables.
Part of a body of work to remove the global SystemVariables and StatusVariables registries and make them state on the Engine itself.
sql.Session embeds EngineVariablesProvider.
ContextAwareSystemVariableRegistry is folded into SystemVariableRegistry as AssignValues(ctx, ...); the old names remain as deprecated aliases for now.
Constructors that built components without an engine bundle are removed.
4103: sql: Remove the global variable registries.
Part of a body of work to remove the global SystemVariables and StatusVariables registries and make them state on the Engine itself.
sql.SystemVariables, sql.StatusVariables and their Init* functions are removed.
Sessions and contexts no longer get a bundle implicitly. NewBaseSession, NewContext and NewEmptyContext are unbound; the ...WithVariables constructors require a complete bundle.
4102: sql: Make independent variable state the default for Engine.
Part of a body of work to remove the global SystemVariables and StatusVariables registries and make them state on the Engine itself.
An Engine built without Config.EngineVariables now gets its own bundle instead of sharing the package registries.
Every engine checks that contexts and sessions belong to its bundle.
4085: enginetest: test index lookups on keyless tables with a virtual column before a stored column
Dolt's keyless index iterator sized output rows by stored columns only, so a stored column after a virtual one panicked with an index out of range. These scripts cover an indexed virtual column and an expression index followed by an added column.
Closed Issues
12356: CALL inside an explicit transaction undoes the transaction's earlier row changes
12315: sql-server: large parameterized IN-list SELECT wedges on a small table; KILL CONNECTION returns OK but the wedged query keeps running (leaked until ~10min self-clear)