Thread: pg_restore with --use-list and --jobs and depdendencies

pg_restore with --use-list and --jobs and depdendencies

From
Wells Oliver
Date:
Hi all: I just wanted to clarify something for myself: how does pg_restore determine restore order if you're using a --use-list and --jobs parameters. Given the concurrency of jobs and (assuming) it goes in order of what's in the list, does it... well, does it sort out dependencies properly so data is inserted that foreign keys need, etc?

--

Re: pg_restore with --use-list and --jobs and depdendencies

From
Tom Lane
Date:
Wells Oliver <wells.oliver@gmail.com> writes:
> Hi all: I just wanted to clarify something for myself: how does pg_restore
> determine restore order if you're using a --use-list and --jobs parameters.
> Given the concurrency of jobs and (assuming) it goes in order of what's in
> the list, does it... well, does it sort out dependencies properly so data
> is inserted that foreign keys need, etc?

(1) The basic order of the restored items is what you say in the --list
file, but it will start the next item as soon as (a) a worker is free
and (b) all of that item's dependencies are complete

(2) It will honor direct dependencies between restored items, ie
not start B till A is done if B is shown as depending on A

(3) I'm not too sure about indirect dependencies, ie if you have
a situation where C depends on B depends on A and you ask for just
A and C, that may end up with no dependency constraint delaying C.
Which might be fine, or it might not; you'd need to be more specific
about what you intend to skip.

            regards, tom lane