mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-02-12 09:27:04 +08:00
Fix parallel restore of FKs to partitioned tables
When an FK constraint is created, it needs the index on the referenced table to exist and be valid. When doing parallel pg_restore and the referenced table was partitioned, this condition can sometimes not be met, because pg_dump didn't emit sufficient object dependencies to ensure so; this means that parallel pg_restore would fail in certain conditions. Fix by having pg_dump make the FK constraint object dependent on the partition attachment objects for the constraint's referenced index. This has been broken since f56f8f8da6af, so backpatch to Postgres 12. Discussion: https://postgr.es/m/20191005224333.GA9738@alvherre.pgsql
This commit is contained in:
@ -114,3 +114,24 @@ simple_string_list_not_touched(SimpleStringList *list)
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Append a pointer to the list.
|
||||
*
|
||||
* Caller must ensure that the pointer remains valid.
|
||||
*/
|
||||
void
|
||||
simple_ptr_list_append(SimplePtrList *list, void *ptr)
|
||||
{
|
||||
SimplePtrListCell *cell;
|
||||
|
||||
cell = (SimplePtrListCell *) pg_malloc(sizeof(SimplePtrListCell));
|
||||
cell->next = NULL;
|
||||
cell->ptr = ptr;
|
||||
|
||||
if (list->tail)
|
||||
list->tail->next = cell;
|
||||
else
|
||||
list->head = cell;
|
||||
list->tail = cell;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user