Move pg_dist_object commandlist generation to a function

pg_dist_object-metadatasync
Jelte Fennema 2021-07-22 16:17:11 +02:00
parent 19d61c6bcd
commit 379f2a9b3b
1 changed files with 19 additions and 6 deletions

View File

@ -83,6 +83,7 @@ static List * GetDistributedTableDDLEvents(Oid relationId);
static char * LocalGroupIdUpdateCommand(int32 groupId); static char * LocalGroupIdUpdateCommand(int32 groupId);
static void UpdateDistNodeBoolAttr(const char *nodeName, int32 nodePort, static void UpdateDistNodeBoolAttr(const char *nodeName, int32 nodePort,
int attrNum, bool value); int attrNum, bool value);
static List * DistributedObjectSyncCommandList();
static List * SequenceDependencyCommandList(Oid relationId); static List * SequenceDependencyCommandList(Oid relationId);
static char * TruncateTriggerCreateCommand(Oid relationId); static char * TruncateTriggerCreateCommand(Oid relationId);
static char * SchemaOwnerName(Oid objectId); static char * SchemaOwnerName(Oid objectId);
@ -508,7 +509,8 @@ MetadataCreateCommands()
* *
* Instead we rely on the initial sync of the pg_dist_object * Instead we rely on the initial sync of the pg_dist_object
* contents at the end of this function. By inserting it here * contents at the end of this function. By inserting it here
* locally, it will become part of that sync automatically. * locally, it will become part of that the list of commands that
* DistributedObjectSyncCommandList returns automatically.
* *
* The only downside of this approach is that it won't be synced to * The only downside of this approach is that it won't be synced to
* other metadata nodes than the current one. This should not be a * other metadata nodes than the current one. This should not be a
@ -608,6 +610,20 @@ MetadataCreateCommands()
shardCreateCommandList); shardCreateCommandList);
} }
metadataSnapshotCommandList = list_concat(
metadataSnapshotCommandList,
DistributedObjectSyncCommandList());
return metadataSnapshotCommandList;
}
static List *
DistributedObjectSyncCommandList()
{
List *commandList = NIL;
HeapTuple pgDistObjectTup = NULL; HeapTuple pgDistObjectTup = NULL;
Relation pgDistObjectRel = table_open(DistObjectRelationId(), AccessShareLock); Relation pgDistObjectRel = table_open(DistObjectRelationId(), AccessShareLock);
@ -637,15 +653,12 @@ MetadataCreateCommands()
&address, &address,
distributionArgumentIndexIsNull ? NULL : &distributionArgumentIndex, distributionArgumentIndexIsNull ? NULL : &distributionArgumentIndex,
colocationIdIsNull ? NULL : &colocationId); colocationIdIsNull ? NULL : &colocationId);
metadataSnapshotCommandList = lappend(metadataSnapshotCommandList, commandList = lappend(commandList, workerMetadataUpdateCommand);
workerMetadataUpdateCommand);
} }
systable_endscan(pgDistObjectScan); systable_endscan(pgDistObjectScan);
relation_close(pgDistObjectRel, AccessShareLock); relation_close(pgDistObjectRel, AccessShareLock);
return commandList;
return metadataSnapshotCommandList;
} }