mirror of
https://github.com/postgres/postgres.git
synced 2025-08-27 07:42:10 +03:00
Add ALTER TABLESPACE ... MOVE command
This adds a 'MOVE' sub-command to ALTER TABLESPACE which allows moving sets of objects from one tablespace to another. This can be extremely handy and avoids a lot of error-prone scripting. ALTER TABLESPACE ... MOVE will only move objects the user owns, will notify the user if no objects were found, and can be used to move ALL objects or specific types of objects (TABLES, INDEXES, or MATERIALIZED VIEWS).
This commit is contained in:
@@ -243,6 +243,7 @@ check_xact_readonly(Node *parsetree)
|
||||
case T_AlterUserMappingStmt:
|
||||
case T_DropUserMappingStmt:
|
||||
case T_AlterTableSpaceOptionsStmt:
|
||||
case T_AlterTableSpaceMoveStmt:
|
||||
case T_CreateForeignTableStmt:
|
||||
case T_SecLabelStmt:
|
||||
PreventCommandIfReadOnly(CreateCommandTag(parsetree));
|
||||
@@ -548,6 +549,11 @@ standard_ProcessUtility(Node *parsetree,
|
||||
AlterTableSpaceOptions((AlterTableSpaceOptionsStmt *) parsetree);
|
||||
break;
|
||||
|
||||
case T_AlterTableSpaceMoveStmt:
|
||||
/* no event triggers for global objects */
|
||||
AlterTableSpaceMove((AlterTableSpaceMoveStmt *) parsetree);
|
||||
break;
|
||||
|
||||
case T_TruncateStmt:
|
||||
ExecuteTruncate((TruncateStmt *) parsetree);
|
||||
break;
|
||||
@@ -1822,6 +1828,10 @@ CreateCommandTag(Node *parsetree)
|
||||
tag = "ALTER TABLESPACE";
|
||||
break;
|
||||
|
||||
case T_AlterTableSpaceMoveStmt:
|
||||
tag = "ALTER TABLESPACE";
|
||||
break;
|
||||
|
||||
case T_CreateExtensionStmt:
|
||||
tag = "CREATE EXTENSION";
|
||||
break;
|
||||
@@ -2514,6 +2524,10 @@ GetCommandLogLevel(Node *parsetree)
|
||||
lev = LOGSTMT_DDL;
|
||||
break;
|
||||
|
||||
case T_AlterTableSpaceMoveStmt:
|
||||
lev = LOGSTMT_DDL;
|
||||
break;
|
||||
|
||||
case T_CreateExtensionStmt:
|
||||
case T_AlterExtensionStmt:
|
||||
case T_AlterExtensionContentsStmt:
|
||||
|
Reference in New Issue
Block a user