diff --git a/src/backend/distributed/commands/alter_table.c b/src/backend/distributed/commands/alter_table.c index da2e5490c..ae7cc62d4 100644 --- a/src/backend/distributed/commands/alter_table.c +++ b/src/backend/distributed/commands/alter_table.c @@ -188,7 +188,6 @@ static void EnsureTableNotPartition(Oid relationId); static TableConversionState * CreateTableConversion(TableConversionParameters *params); static void CreateDistributedTableLike(TableConversionState *con); static void CreateCitusTableLike(TableConversionState *con); -static List * GetViewCreationCommandsOfTable(Oid relationId); static void ReplaceTable(Oid sourceId, Oid targetId, List *justBeforeDropCommands, bool suppressNoticeMessages); static bool HasAnyGeneratedStoredColumns(Oid relationId); diff --git a/src/backend/distributed/metadata/metadata_sync.c b/src/backend/distributed/metadata/metadata_sync.c index c54a0bc51..c62e30b63 100644 --- a/src/backend/distributed/metadata/metadata_sync.c +++ b/src/backend/distributed/metadata/metadata_sync.c @@ -481,6 +481,21 @@ MetadataCreateCommands(void) shardCreateCommandList); } + /* after all tables are created, create the metadata */ + foreach_ptr(cacheEntry, propagatedTableList) + { + Oid relationId = cacheEntry->relationId; + + List *viewDefinitionList = GetViewCreationCommandsOfTable(relationId); + + TableDDLCommand *command = NULL; + foreach_ptr(command,viewDefinitionList) + { + metadataSnapshotCommandList = lappend(metadataSnapshotCommandList, + command->commandStr); + } + } + return metadataSnapshotCommandList; } diff --git a/src/include/distributed/metadata_utility.h b/src/include/distributed/metadata_utility.h index 76f3dd65e..2f45935b1 100644 --- a/src/include/distributed/metadata_utility.h +++ b/src/include/distributed/metadata_utility.h @@ -248,7 +248,7 @@ extern void CreateDistributedTable(Oid relationId, Var *distributionColumn, bool viaDeprecatedAPI); extern void CreateTruncateTrigger(Oid relationId); extern TableConversionReturn * UndistributeTable(TableConversionParameters *params); - +extern List * GetViewCreationCommandsOfTable(Oid relationId); extern void EnsureDependenciesExistOnAllNodes(const ObjectAddress *target); extern List * GetDistributableDependenciesForObject(const ObjectAddress *target); extern bool ShouldPropagate(void);