diff --git a/src/backend/distributed/master/master_metadata_utility.c b/src/backend/distributed/master/master_metadata_utility.c index d03d7a407..0e435993f 100644 --- a/src/backend/distributed/master/master_metadata_utility.c +++ b/src/backend/distributed/master/master_metadata_utility.c @@ -900,6 +900,7 @@ UpdateColocationGroupReplicationFactor(uint32 colocationId, int replicationFacto int scanKeyCount = 1; bool indexOK = true; HeapTuple heapTuple = NULL; + HeapTuple newHeapTuple = NULL; TupleDesc tupleDescriptor = NULL; Datum values[Natts_pg_dist_colocation]; @@ -925,17 +926,22 @@ UpdateColocationGroupReplicationFactor(uint32 colocationId, int replicationFacto } /* after we find colocation group, we update it with new values */ - memset(replace, 0, sizeof(replace)); + memset(replace, false, sizeof(replace)); + memset(isnull, false, sizeof(isnull)); + memset(values, 0, sizeof(values)); values[Anum_pg_dist_colocation_replicationfactor - 1] = Int32GetDatum( replicationFactor); - isnull[Anum_pg_dist_colocation_replicationfactor - 1] = false; replace[Anum_pg_dist_colocation_replicationfactor - 1] = true; - heapTuple = heap_modify_tuple(heapTuple, tupleDescriptor, values, isnull, replace); - simple_heap_update(pgDistColocation, &heapTuple->t_self, heapTuple); + newHeapTuple = heap_modify_tuple(heapTuple, tupleDescriptor, values, isnull, replace); + simple_heap_update(pgDistColocation, &newHeapTuple->t_self, newHeapTuple); - CatalogUpdateIndexes(pgDistColocation, heapTuple); + CatalogUpdateIndexes(pgDistColocation, newHeapTuple); + + CommandCounterIncrement(); + + heap_freetuple(newHeapTuple); systable_endscan(scanDescriptor); heap_close(pgDistColocation, NoLock); diff --git a/src/backend/distributed/utils/colocation_utils.c b/src/backend/distributed/utils/colocation_utils.c index f2af93772..07b21922e 100644 --- a/src/backend/distributed/utils/colocation_utils.c +++ b/src/backend/distributed/utils/colocation_utils.c @@ -988,7 +988,6 @@ DeleteColocationGroup(uint32 colocationId) { simple_heap_delete(pgDistColocation, &(heapTuple->t_self)); - CatalogUpdateIndexes(pgDistColocation, heapTuple); CitusInvalidateRelcacheByRelid(DistColocationRelationId()); CommandCounterIncrement(); } diff --git a/src/test/regress/expected/multi_upgrade_reference_table.out b/src/test/regress/expected/multi_upgrade_reference_table.out index cb1719cd5..fb6e523d5 100644 --- a/src/test/regress/expected/multi_upgrade_reference_table.out +++ b/src/test/regress/expected/multi_upgrade_reference_table.out @@ -650,9 +650,6 @@ WHERE 1360013 | f | f (1 row) --- eliminate the duplicate intermediate duplicate rows in pg_dist_colocation -VACUUM ANALYZE pg_dist_colocation; - SELECT * FROM pg_dist_colocation WHERE colocationid IN diff --git a/src/test/regress/sql/multi_upgrade_reference_table.sql b/src/test/regress/sql/multi_upgrade_reference_table.sql index 210c09662..494eb5eb0 100644 --- a/src/test/regress/sql/multi_upgrade_reference_table.sql +++ b/src/test/regress/sql/multi_upgrade_reference_table.sql @@ -423,9 +423,6 @@ FROM WHERE logicalrelid = 'upgrade_reference_table_transaction_rollback'::regclass; --- eliminate the duplicate intermediate duplicate rows in pg_dist_colocation -VACUUM ANALYZE pg_dist_colocation; - SELECT * FROM pg_dist_colocation WHERE colocationid IN