From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)postgresql(dot)org |
Subject: | pgsql: Rationalize parallel dump/restore's handling of worker cmd/statu |
Date: | 2016-09-27 17:56:11 |
Message-ID: | E1bowbz-0002Rr-Gn@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Rationalize parallel dump/restore's handling of worker cmd/status messages.
The existing APIs for creating and parsing command and status messages are
rather messy; for example, archive-format modules have to provide code
for constructing command messages, which is entirely pointless since
the code to read them is hard-wired in WaitForCommands() and hence
no format-specific variation is actually possible. But there's little
foreseeable reason to need format-specific variation anyway.
The situation for status messages is no better; at least those are both
constructed and parsed by format-specific code, but said code is quite
redundant since there's no actual need for format-specific variation.
To add insult to injury, the first API involves returning pointers to
static buffers, which is bad, while the second involves returning pointers
to malloc'd strings, which is safer but randomly inconsistent.
Hence, get rid of the MasterStartParallelItem and MasterEndParallelItem
APIs, and instead write centralized functions that construct and parse
command and status messages. If we ever do need more flexibility, these
functions can be the standard implementations of format-specific
callback methods, but that's a long way off if it ever happens.
Tom Lane, reviewed by Kevin Grittner
Discussion: <17340(dot)1464465717(at)sss(dot)pgh(dot)pa(dot)us>
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/fb03d08a89e81a68585f17fd8e7f21c618f4e851
Modified Files
--------------
src/bin/pg_dump/parallel.c | 232 +++++++++++++++++++++-------------
src/bin/pg_dump/pg_backup_archiver.h | 11 +-
src/bin/pg_dump/pg_backup_custom.c | 75 +----------
src/bin/pg_dump/pg_backup_directory.c | 115 ++---------------
src/bin/pg_dump/pg_backup_tar.c | 3 -
5 files changed, 162 insertions(+), 274 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2016-09-27 18:29:22 | pgsql: Make struct ParallelSlot private within pg_dump/parallel.c. |
Previous Message | Tom Lane | 2016-09-27 17:22:45 | pgsql: Redesign parallel dump/restore's wait-for-workers logic. |