-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
95631: schemachanger: generalized statement-time execution r=postamar a=postamar This change makes it possible to plan and execute the following change correctly: BEGIN; DROP TABLE foo; CREATE UNIQUE INDEX idx ON bar (x); COMMIT; Inside the transaction, the table is seen as dropped right after the DROP TABLE statement executes, but the table is not seen as dropped by other transactions until the new, unrelated index has been validated, at which point the schema change can no longer fail. Fixes #88294. Significant changes: - descs.Collection has a new ResetUncommitted method. - scstage.BuildStages is rewritten with unrolled loops and a new scheme: statement phase has revertible op-edges, pre-commit has two stages, one which resets the uncommitted state by scheduling the new scop.UndoAllInTxnImmediateMutationOpSideEffects op, which triggers a call to ResetUncommitted. - This happens in scexec.executeMutationOps, which is now split into two pieces, the first one which executes ops whose side-effects can be undone by ResetUncommitted, and the other which handles those which can’t. - These ops implement scop.ImmediateMutationOp and scop.DeferredMutationOp respectively. - These have their own visitors with their own state and their own dependencies. This all means that we can handle DROPs properly now: the TXN_DROPPED element state is removed as are all the synthetic descriptor manipulations (outside of index and constraint validation, that is). Furthermore, the scgraph.PreviousTransactionPrecedence edge kind no longer serves any purpose and has been replaced by PreviousStagePrecedence everywhere. There’s a bunch of other more-or-less related changes, mostly as a consequence to the above: - scbuild.Build must produce a tighter target set: no-op targets are elided. - nstree.MutableCatalog has new methods for deleting comments and zone configs which are useful. - sctestdeps.TestState has better storage layers modelling (in-memory > stored > committed) - Added missing “relation dropped before column|index no longer public” rules which fix DROP COLUMN CASCADE when the column is referenced in a view. - scgraph.Graph has a new GetOpEdgeTo method which is useful. - added debug info to assertion error messages in scstage.BuildStages to make debugging easier during development. - EXPLAIN (DDL) output has a nicer root node label which puts the last statement first. Release note: None 95636: sql: increase the online help for SHOW RANGES r=ecwall a=knz The output of `\h SHOW RANGES` wasn't mentioning the KEYS option. Now it does. Also this adds some additional details about the various options. Release note: None Epic: None 95691: sql: improve tenant records r=stevendanna,dt,ajwerner a=knz supersedes #95574, #95581, #95655 Epic: CRDB-21836 **TLDR** This commit contains the following changes: - rename "state" to "data_state", "active" to "ready" - stored, non-virtual columns for "name", "data_state", "service_mode" - deprecate the column "active" since it mirrors "data_state' - move `descpb.TenantInfo` to new package `mtinfopb`. - new statements `ALTER TENANT ... START SERVICE EXTERNAL/SHARED`, `STOP SERVICE` to change the service mode. Details follow. **rename TenantInfo.State to DataState, "ACTIVE" to "READY"** We've discovered that we'd like to separate the readiness of the data from the activation of the service. To emphasize this, this commit renames the field "State" to "DataState". Additionally, the state "ACTIVE" was confusing as it suggests that something is running, whereas it merely marks the tenant data as ready for use. So this commit also renames that state accordingly. **new tenant info field ServiceMode** Summary of changes: - the new TenantInfo.ServiceMode field indicates how to run servers. - new syntax: `ALTER TENANT ... START SERVICE EXTERNAL/SHARED`, `ALTER TENANT ... STOP SERVICE`. - tenants created via `create_tenant(<id>)` (via CC serverless control plane) start in service mode EXTERNAL. - other tenants start in service mode NONE. - need ALTER TENANT STOP SERVICE before dropping a tenant. - except in the case of `crdb_internal.destroy_tenant` for compat with CC serverless control plane. **make the output columns of SHOW TENANT lowercase** All the SHOW statements report status-like data in lowercase. SHOW TENANT(s) should not be different. **use actual SQL columns for the TenantInfo fields** Release note: None Co-authored-by: Marius Posta <[email protected]> Co-authored-by: Raphael 'kena' Poss <[email protected]>
- Loading branch information
Showing
397 changed files
with
20,439 additions
and
6,247 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.