mirror of https://github.com/citusdata/citus.git
Adds alter database rename stmt propagation
parent
fd521f2792
commit
6a333ca742
|
@ -184,7 +184,7 @@ PreprocessAlterDatabaseStmt(Node *node, const char *queryString,
|
||||||
|
|
||||||
if (strstr(sql, "SET TABLESPACE") != NULL)
|
if (strstr(sql, "SET TABLESPACE") != NULL)
|
||||||
{
|
{
|
||||||
if (IsCoordinatorNode())
|
if (IsCoordinator())
|
||||||
{
|
{
|
||||||
ereport(NOTICE, (errmsg(
|
ereport(NOTICE, (errmsg(
|
||||||
"Citus partially supports ALTER DATABASE SET TABLESPACE for "
|
"Citus partially supports ALTER DATABASE SET TABLESPACE for "
|
||||||
|
@ -240,9 +240,31 @@ PreprocessAlterDatabaseRefreshCollStmt(Node *node, const char *queryString,
|
||||||
return NodeDDLTaskList(NON_COORDINATOR_NODES, commands);
|
return NodeDDLTaskList(NON_COORDINATOR_NODES, commands);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
List *
|
||||||
|
PreprocessAlterDatabaseRenameStmt(Node *node, const char *queryString,
|
||||||
|
ProcessUtilityContext processUtilityContext)
|
||||||
|
{
|
||||||
|
if (!ShouldPropagate())
|
||||||
|
{
|
||||||
|
return NIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
RenameStmt *stmt = castNode(RenameStmt, node);
|
||||||
|
|
||||||
|
EnsureCoordinator();
|
||||||
|
|
||||||
|
char *sql = DeparseTreeNode((Node *) stmt);
|
||||||
|
|
||||||
|
List *commands = list_make3(DISABLE_DDL_PROPAGATION,
|
||||||
|
(void *) sql,
|
||||||
|
ENABLE_DDL_PROPAGATION);
|
||||||
|
|
||||||
|
return NodeDDLTaskList(NON_COORDINATOR_NODES, commands);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CreateDDLTaskList creates a task list for running a single DDL command.
|
* CreateDDLTaskList creates a task list for running a single DDL command.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -512,6 +512,16 @@ static DistributeObjectOps Database_Set = {
|
||||||
.markDistributed = false,
|
.markDistributed = false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static DistributeObjectOps Database_Rename = {
|
||||||
|
.deparse = DeparseAlterDatabaseRenameStmt,
|
||||||
|
.qualify = NULL,
|
||||||
|
.preprocess = PreprocessAlterDatabaseRenameStmt,
|
||||||
|
.postprocess = NULL,
|
||||||
|
.objectType = OBJECT_DATABASE,
|
||||||
|
.operationType = DIST_OPS_ALTER,
|
||||||
|
.address = NULL,
|
||||||
|
.markDistributed = false,
|
||||||
|
};
|
||||||
|
|
||||||
static DistributeObjectOps Domain_Alter = {
|
static DistributeObjectOps Domain_Alter = {
|
||||||
.deparse = DeparseAlterDomainStmt,
|
.deparse = DeparseAlterDomainStmt,
|
||||||
|
@ -2072,6 +2082,11 @@ GetDistributeObjectOps(Node *node)
|
||||||
return &Collation_Rename;
|
return &Collation_Rename;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case OBJECT_DATABASE:
|
||||||
|
{
|
||||||
|
return &Database_Rename;
|
||||||
|
}
|
||||||
|
|
||||||
case OBJECT_DOMAIN:
|
case OBJECT_DOMAIN:
|
||||||
{
|
{
|
||||||
return &Domain_Rename;
|
return &Domain_Rename;
|
||||||
|
|
|
@ -208,9 +208,23 @@ DeparseAlterDatabaseRefreshCollStmt(Node *node)
|
||||||
return str.data;
|
return str.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
char *
|
||||||
|
DeparseAlterDatabaseRenameStmt(Node *node)
|
||||||
|
{
|
||||||
|
RenameStmt *stmt = (RenameStmt *) node;
|
||||||
|
|
||||||
|
StringInfoData str;
|
||||||
|
initStringInfo(&str);
|
||||||
|
|
||||||
|
appendStringInfo(&str, "ALTER DATABASE %s RENAME TO %s",
|
||||||
|
quote_identifier(stmt->subname),
|
||||||
|
quote_identifier(stmt->newname));
|
||||||
|
|
||||||
|
return str.data;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
AppendAlterDatabaseSetStmt(StringInfo buf, AlterDatabaseSetStmt *stmt)
|
AppendAlterDatabaseSetStmt(StringInfo buf, AlterDatabaseSetStmt *stmt)
|
||||||
{
|
{
|
||||||
|
|
|
@ -231,6 +231,9 @@ extern List * PostprocessCreateDatabaseStmt(Node *node, const char *queryString)
|
||||||
extern List * PreprocessDropDatabaseStmt(Node *node, const char *queryString,
|
extern List * PreprocessDropDatabaseStmt(Node *node, const char *queryString,
|
||||||
ProcessUtilityContext processUtilityContext);
|
ProcessUtilityContext processUtilityContext);
|
||||||
|
|
||||||
|
extern List * PreprocessAlterDatabaseRenameStmt(Node *node, const char *queryString,
|
||||||
|
ProcessUtilityContext processUtilityContext);
|
||||||
|
|
||||||
/* domain.c - forward declarations */
|
/* domain.c - forward declarations */
|
||||||
extern List * CreateDomainStmtObjectAddress(Node *node, bool missing_ok, bool
|
extern List * CreateDomainStmtObjectAddress(Node *node, bool missing_ok, bool
|
||||||
isPostprocess);
|
isPostprocess);
|
||||||
|
|
|
@ -243,6 +243,7 @@ extern char * DeparseAlterDatabaseRefreshCollStmt(Node *node);
|
||||||
extern char * DeparseAlterDatabaseSetStmt(Node *node);
|
extern char * DeparseAlterDatabaseSetStmt(Node *node);
|
||||||
extern char * DeparseCreateDatabaseStmt(Node *node);
|
extern char * DeparseCreateDatabaseStmt(Node *node);
|
||||||
extern char * DeparseDropDatabaseStmt(Node *node);
|
extern char * DeparseDropDatabaseStmt(Node *node);
|
||||||
|
extern char * DeparseAlterDatabaseRenameStmt(Node *node);
|
||||||
|
|
||||||
|
|
||||||
/* forward declaration for deparse_publication_stmts.c */
|
/* forward declaration for deparse_publication_stmts.c */
|
||||||
|
|
Loading…
Reference in New Issue