From c40b2d59e0dbac5a5215c9e1e9f05b22fcae6f13 Mon Sep 17 00:00:00 2001
From: Tom Lane
Date: Fri, 14 Feb 2014 12:54:46 -0500
Subject: 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(-)
(limited to 'doc/src')
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 5ae48b81a18..3344348f048 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -83,14 +83,15 @@ PostgreSQL documentation
(psqlrc and ~/.psqlrc) are
ignored with this option.
- command must be either
+
+ command must be either
a command string that is completely parsable by the server (i.e.,
it contains no psql-specific features),
or a single backslash command. Thus you cannot mix
SQL and psql
meta-commands with this option. To achieve that, you could
- pipe the string into psql, like
- this: echo '\x \\ SELECT * FROM foo;' | psql.
+ pipe the string into psql, for example:
+ echo '\x \\ SELECT * FROM foo;' | psql.
(\\> is the separator meta-command.)
@@ -102,6 +103,19 @@ PostgreSQL documentation
psql's standard input. Also, only
the result of the last SQL command is returned.
+
+ Because of these legacy behaviors, putting more than one command in
+ the string often has unexpected results. It's
+ better to feed multiple commands to psql's
+ standard input, either using echo as
+ illustrated above, or via a shell here-document, for example:
+
+psql <<EOF
+\x
+SELECT * FROM foo;
+EOF
+
+
--
cgit v1.2.3