Add support for piping COPY to/from an external program.

Heikki Linnakangas <heikki.linnakangas@iki.fi>

Commit: 3d009e45bde2a2681826ef549637ada76508b597
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: 2013-02-27T16:22:31Z
Releases: 9.3.0
Add support for piping COPY to/from an external program.

This includes backend "COPY TO/FROM PROGRAM '...'" syntax, and corresponding
psql \copy syntax. Like with reading/writing files, the backend version is
superuser-only, and in the psql version, the program is run in the client.

In the passing, the psql \copy STDIN/STDOUT syntax is subtly changed: if you
the stdin/stdout is quoted, it's now interpreted as a filename. For example,
"\copy foo from 'stdin'" now reads from a file called 'stdin', not from
standard input. Before this, there was no way to specify a filename called
stdin, stdout, pstdin or pstdout.

This creates a new function in pgport, wait_result_to_str(), which can
be used to convert the exit status of a process, as returned by wait(3),
to a human-readable string.

Etsuro Fujita, reviewed by Amit Kapila.

Files