From 6eb8e6cce15ab1742754d2d8c8b4609ba6e6478c Mon Sep 17 00:00:00 2001 From: Ahmet Gedemenli Date: Thu, 10 Mar 2022 16:02:35 +0300 Subject: [PATCH] Support schema elements in CREATE SCHEMA statements --- src/backend/distributed/commands/schema.c | 17 +++++++++++++++++ .../distributed/deparser/deparse_schema_stmts.c | 5 ----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/backend/distributed/commands/schema.c b/src/backend/distributed/commands/schema.c index 68c695234..cf1b068b2 100644 --- a/src/backend/distributed/commands/schema.c +++ b/src/backend/distributed/commands/schema.c @@ -44,6 +44,7 @@ static ObjectAddress GetObjectAddressBySchemaName(char *schemaName, bool missing static List * FilterDistributedSchemas(List *schemas); static bool SchemaHasDistributedTableWithFKey(char *schemaName); static bool ShouldPropagateCreateSchemaStmt(void); +static void NoticeIfCreateSchemaStmtHasSchemaElements(Node *node); /* @@ -63,6 +64,8 @@ PreprocessCreateSchemaStmt(Node *node, const char *queryString, EnsureSequentialMode(OBJECT_SCHEMA); + NoticeIfCreateSchemaStmtHasSchemaElements(node); + /* deparse sql*/ const char *sql = DeparseTreeNode(node); @@ -392,3 +395,17 @@ ShouldPropagateCreateSchemaStmt() return true; } + + +static void +NoticeIfCreateSchemaStmtHasSchemaElements(Node *node) +{ + CreateSchemaStmt *stmt = castNode(CreateSchemaStmt, node); + + if (list_length(stmt->schemaElts) > 0) + { + ereport(NOTICE, (errmsg("schema elements will not be distributed"), + errdetail("Citus does not propagate other CREATE commands in " + "CREATE SCHEMA statements"))); + } +} diff --git a/src/backend/distributed/deparser/deparse_schema_stmts.c b/src/backend/distributed/deparser/deparse_schema_stmts.c index 918f7024a..ebc76d5e8 100644 --- a/src/backend/distributed/deparser/deparse_schema_stmts.c +++ b/src/backend/distributed/deparser/deparse_schema_stmts.c @@ -87,11 +87,6 @@ DeparseAlterSchemaRenameStmt(Node *node) static void AppendCreateSchemaStmt(StringInfo buf, CreateSchemaStmt *stmt) { - if (stmt->schemaElts != NIL) - { - elog(ERROR, "schema creating is not supported with other create commands"); - } - appendStringInfoString(buf, "CREATE SCHEMA "); if (stmt->if_not_exists)