postgres.git / summary / log / commit / refs

commit    4588e330442fe130bbdcf4bdd4c35fc19deb329d
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Fri Feb 14 17:54:53 2014 +0000
First released in: 9.4.0, 8.4.20, 9.0.16, 9.1.12, 9.2.7, 9.3.3

    Suggest shell here-documents instead of psql -c for multiple commands.
    
    The documentation suggested using "echo | psql", but not the often-superior
    alternative of a here-document.  Also, be more direct about suggesting
    that people avoid -c for multiple commands.  Per discussion.


doc/src/sgml/ref/psql-ref.sgml | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index 648a6e60946..fa2b9944847 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -90,8 +90,8 @@ PostgreSQL documentation or a single backslash command. Thus you cannot mix <acronym>SQL</acronym> and <application>psql</application> meta-commands with this option. To achieve that, you could - pipe the string into <application>psql</application>, like - this: <literal>echo '\x \\ SELECT * FROM foo;' | psql</literal>. + pipe the string into <application>psql</application>, for example: + <literal>echo '\x \\ SELECT * FROM foo;' | psql</literal>. (<literal>\\</> is the separator meta-command.) </para> <para> @@ -100,7 +100,21 @@ PostgreSQL documentation <command>BEGIN</>/<command>COMMIT</> commands included in the string to divide it into multiple transactions. This is different from the behavior when the same string is fed to - <application>psql</application>'s standard input. + <application>psql</application>'s standard input. Also, only + the result of the last SQL command is returned. + </para> + <para> + Because of these legacy behaviors, putting more than one command in + the <option>-c</option> string often has unexpected results. It's + better to feed multiple commands to <application>psql</application>'s + standard input, either using <application>echo</application> as + illustrated above, or via a shell here-document, for example: +<programlisting> +psql &lt;&lt;EOF +\x +SELECT * FROM foo; +EOF +</programlisting> </para> </listitem> </varlistentry> [parent: 218dd205b52b]