mirror of https://github.com/citusdata/citus.git
Adds undistribute sql
parent
1e91b144e2
commit
dad81042a5
|
@ -240,6 +240,8 @@ PreprocessAlterDatabaseSetStmt(Node *node, const char *queryString,
|
||||||
return NIL;
|
return NIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
AlterDatabaseSetStmt *stmt = castNode(AlterDatabaseSetStmt, node);
|
AlterDatabaseSetStmt *stmt = castNode(AlterDatabaseSetStmt, node);
|
||||||
|
|
||||||
EnsureCoordinator();
|
EnsureCoordinator();
|
||||||
|
@ -351,6 +353,13 @@ citus_internal_database_command(PG_FUNCTION_ARGS)
|
||||||
PG_RETURN_VOID();
|
PG_RETURN_VOID();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char * GetUnmarkDatabaseDistributedSql(char* dbName){
|
||||||
|
StringInfoData pg_dist_object_delete = { 0 };
|
||||||
|
initStringInfo(&pg_dist_object_delete);
|
||||||
|
appendStringInfo(&pg_dist_object_delete, "delete from pg_dist_object where "
|
||||||
|
"object_id in (select oid from pg_database where datname = '%s')",dbName);
|
||||||
|
return pg_dist_object_delete.data;
|
||||||
|
}
|
||||||
|
|
||||||
List *
|
List *
|
||||||
PreprocessDropDatabaseStmt(Node *node, const char *queryString,
|
PreprocessDropDatabaseStmt(Node *node, const char *queryString,
|
||||||
|
@ -373,6 +382,8 @@ PreprocessDropDatabaseStmt(Node *node, const char *queryString,
|
||||||
return NIL;
|
return NIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ObjectAddress dbAddress = { 0 };
|
ObjectAddress dbAddress = { 0 };
|
||||||
ObjectAddressSet(dbAddress, DatabaseRelationId, databaseOid);
|
ObjectAddressSet(dbAddress, DatabaseRelationId, databaseOid);
|
||||||
if (!IsObjectDistributed(&dbAddress))
|
if (!IsObjectDistributed(&dbAddress))
|
||||||
|
@ -381,6 +392,7 @@ PreprocessDropDatabaseStmt(Node *node, const char *queryString,
|
||||||
}
|
}
|
||||||
|
|
||||||
UnmarkObjectDistributed(&dbAddress);
|
UnmarkObjectDistributed(&dbAddress);
|
||||||
|
char *unmarkDatabaseDistributedSql = GetUnmarkDatabaseDistributedSql(stmt->dbname);
|
||||||
|
|
||||||
char *dropDatabaseCommand = DeparseTreeNode(node);
|
char *dropDatabaseCommand = DeparseTreeNode(node);
|
||||||
|
|
||||||
|
@ -390,7 +402,8 @@ PreprocessDropDatabaseStmt(Node *node, const char *queryString,
|
||||||
quote_literal_cstr(dropDatabaseCommand));
|
quote_literal_cstr(dropDatabaseCommand));
|
||||||
|
|
||||||
|
|
||||||
List *commands = list_make3(DISABLE_DDL_PROPAGATION,
|
List *commands = list_make4(DISABLE_DDL_PROPAGATION,
|
||||||
|
unmarkDatabaseDistributedSql,
|
||||||
(void *) internalDropCommand->data,
|
(void *) internalDropCommand->data,
|
||||||
ENABLE_DDL_PROPAGATION);
|
ENABLE_DDL_PROPAGATION);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue