On Mon, Oct 29, 2018 at 6:48 PM Michael Paquier <mich...@paquier.xyz> wrote: > All the backup-related functions doing on-disk activity are marked as > parallel-restricted: > =# select proparallel, proname from pg_proc where proname ~ 'backup'; > proparallel | proname > -------------+---------------------- > s | pg_is_in_backup > s | pg_backup_start_time > r | pg_stop_backup > r | pg_start_backup > r | pg_stop_backup > (5 rows) > > As restricted, only the group leader is allowed to execute the > function. So as long as we enforce the execution uniqueness, I don't > think that there is any point in enforcing a serial scan for the whole > query. Queries launching pg_promote are unlikely going to be much > complicated, still it does not seem a consistent experience to me to not > use the same level for such operations.
There's no rule whatsoever that a parallel worker can't write to the disk. pg_start_backup and pg_stop_backup have to be parallel-restricted because, when used in non-exclusive mode, they establish backend-local state that wouldn't be synchronized with the state in the workers -- namely the information that a non-exclusive backup is in progress. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company