]> granicus.if.org Git - postgresql/commit
Add support for piping COPY to/from an external program.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 27 Feb 2013 16:17:21 +0000 (18:17 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 27 Feb 2013 16:22:31 +0000 (18:22 +0200)
commit3d009e45bde2a2681826ef549637ada76508b597
tree6f429ba5f7bbfee65dfd14fcfacd19a2e0ddd053
parent73dc003beef859e0b67da463c5e28f5468d3f17f
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.
21 files changed:
contrib/file_fdw/file_fdw.c
doc/src/sgml/keywords.sgml
doc/src/sgml/ref/copy.sgml
doc/src/sgml/ref/psql-ref.sgml
src/backend/commands/copy.c
src/backend/nodes/copyfuncs.c
src/backend/nodes/equalfuncs.c
src/backend/parser/gram.y
src/backend/storage/file/fd.c
src/bin/psql/copy.c
src/bin/psql/stringutils.c
src/bin/psql/stringutils.h
src/include/commands/copy.h
src/include/nodes/parsenodes.h
src/include/parser/kwlist.h
src/include/port.h
src/include/storage/fd.h
src/interfaces/ecpg/preproc/ecpg.addons
src/port/Makefile
src/port/exec.c
src/port/wait_error.c [new file with mode: 0644]