diff options
author | Bruce Momjian <bruce@momjian.us> | 2002-06-20 16:00:44 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2002-06-20 16:00:44 +0000 |
commit | c2c2fd57eecd1c70f0bf10954581bbca7977b7f7 (patch) | |
tree | 8531643e71569a7ebd95ae4280f5a143279b2c15 /doc/src | |
parent | 2912fd45d1f143cf00b8ac5d4c93d5e4ebf2b51e (diff) | |
download | postgresql-c2c2fd57eecd1c70f0bf10954581bbca7977b7f7.tar.gz postgresql-c2c2fd57eecd1c70f0bf10954581bbca7977b7f7.zip |
Improve COPY syntax to use WITH clause, keep backward compatibility.
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/keywords.sgml | 8 | ||||
-rw-r--r-- | doc/src/sgml/ref/copy.sgml | 209 | ||||
-rw-r--r-- | doc/src/sgml/ref/psql-ref.sgml | 1573 |
3 files changed, 973 insertions, 817 deletions
diff --git a/doc/src/sgml/keywords.sgml b/doc/src/sgml/keywords.sgml index 0f29b704f6e..4c1a1740258 100644 --- a/doc/src/sgml/keywords.sgml +++ b/doc/src/sgml/keywords.sgml @@ -1,4 +1,4 @@ -<!-- $Header: /cvsroot/pgsql/doc/src/sgml/keywords.sgml,v 2.5 2002/01/08 15:38:42 tgl Exp $ --> +<!-- $Header: /cvsroot/pgsql/doc/src/sgml/keywords.sgml,v 2.6 2002/06/20 16:00:43 momjian Exp $ --> <appendix id="sql-keywords-appendix"> <title><acronym>SQL</acronym> Key Words</title> @@ -891,6 +891,12 @@ <entry>reserved</entry> </row> <row> + <entry><token>DELIMITER</token></entry> + <entry>non-reserved</entry> + <entry></entry> + <entry></entry> + </row> + <row> <entry><token>DELIMITERS</token></entry> <entry>non-reserved</entry> <entry></entry> diff --git a/doc/src/sgml/ref/copy.sgml b/doc/src/sgml/ref/copy.sgml index 33454dbd4a6..28ca264c65c 100644 --- a/doc/src/sgml/ref/copy.sgml +++ b/doc/src/sgml/ref/copy.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/ref/copy.sgml,v 1.31 2002/05/14 18:47:58 tgl Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/ref/copy.sgml,v 1.32 2002/06/20 16:00:43 momjian Exp $ PostgreSQL documentation --> @@ -21,14 +21,20 @@ PostgreSQL documentation <date>1999-12-11</date> </refsynopsisdivinfo> <synopsis> -COPY [ BINARY ] <replaceable class="parameter">table</replaceable> [ WITH OIDS ] +COPY <replaceable class="parameter">table</replaceable> FROM { '<replaceable class="parameter">filename</replaceable>' | <filename>stdin</filename> } - [ [USING] DELIMITERS '<replaceable class="parameter">delimiter</replaceable>' ] - [ WITH NULL AS '<replaceable class="parameter">null string</replaceable>' ] -COPY [ BINARY ] <replaceable class="parameter">table</replaceable> [ WITH OIDS ] + [ [ WITH ] + [ BINARY ] + [ OIDS ] + [ DELIMITER [ AS ] '<replaceable class="parameter">delimiter</replaceable>' ] + [ NULL [ AS ] '<replaceable class="parameter">null string</replaceable>' ] ] +COPY <replaceable class="parameter">table</replaceable> TO { '<replaceable class="parameter">filename</replaceable>' | <filename>stdout</filename> } - [ [USING] DELIMITERS '<replaceable class="parameter">delimiter</replaceable>' ] - [ WITH NULL AS '<replaceable class="parameter">null string</replaceable>' ] + [ [ WITH ] + [ BINARY ] + [ OIDS ] + [ DELIMITER [ AS ] '<replaceable class="parameter">delimiter</replaceable>' ] + [ NULL [ AS ] '<replaceable class="parameter">null string</replaceable>' ] ] </synopsis> <refsect2 id="R2-SQL-COPY-1"> @@ -42,57 +48,57 @@ COPY [ BINARY ] <replaceable class="parameter">table</replaceable> [ WITH OIDS ] <variablelist> <varlistentry> - <term>BINARY</term> + <term><replaceable class="parameter">table</replaceable></term> <listitem> <para> - Changes the behavior of field formatting, forcing all data to be - stored or read in binary format rather than as text. - The DELIMITERS and WITH NULL options are irrelevant for binary format. + The name (possibly schema-qualified) of an existing table. </para> </listitem> </varlistentry> <varlistentry> - <term><replaceable class="parameter">table</replaceable></term> + <term><replaceable class="parameter">filename</replaceable></term> <listitem> <para> - The name (possibly schema-qualified) of an existing table. + The absolute Unix path name of the input or output file. </para> </listitem> </varlistentry> <varlistentry> - <term>WITH OIDS</term> + <term><filename>stdin</filename></term> <listitem> <para> - Specifies copying the internal object id (OID) for each row. + Specifies that input comes from the client application. </para> </listitem> </varlistentry> <varlistentry> - <term><replaceable class="parameter">filename</replaceable></term> + <term><filename>stdout</filename></term> <listitem> <para> - The absolute Unix path name of the input or output file. + Specifies that output goes to the client application. </para> </listitem> </varlistentry> <varlistentry> - <term><filename>stdin</filename></term> + <term>BINARY</term> <listitem> <para> - Specifies that input comes from the client application. + Changes the behavior of field formatting, forcing all data to be + stored or read in binary format rather than as text. You can not + specify DELIMITER or NULL in binary mode. </para> </listitem> </varlistentry> <varlistentry> - <term><filename>stdout</filename></term> + <term>OIDS</term> <listitem> <para> - Specifies that output goes to the client application. + Specifies copying the internal object id (OID) for each row. </para> </listitem> </varlistentry> @@ -111,8 +117,8 @@ COPY [ BINARY ] <replaceable class="parameter">table</replaceable> [ WITH OIDS ] <listitem> <para> The string that represents a NULL value. The default is - <quote><literal>\N</literal></quote> (backslash-N). - You might prefer an empty string, for example. + <quote><literal>\N</literal></quote> (backslash-N). You might + prefer an empty string, for example. </para> <note> <para> @@ -172,34 +178,33 @@ ERROR: <replaceable>reason</replaceable> </title> <para> <command>COPY</command> moves data between - <productname>PostgreSQL</productname> tables and - standard file-system files. + <productname>PostgreSQL</productname> tables and standard file-system + files. <command>COPY TO</command> copies the entire contents of a table - <emphasis>to</> - a file, while <command>COPY FROM</command> copies data <emphasis>from</> a - file to a - table (appending the data to whatever is in the table already). + <emphasis>to</> a file, while <command>COPY FROM</command> copies + data <emphasis>from</> a file to a table (appending the data to + whatever is in the table already). </para> <para> - <command>COPY</command> with a file name instructs - the <productname>PostgreSQL</productname> backend - to directly read from or write to a file. - The file must be accessible to the backend and the name must be specified - from the viewpoint of the backend. - When <filename>stdin</filename> or <filename>stdout</filename> is - specified, data flows through the client frontend to the backend. + <command>COPY</command> with a file name instructs the + <productname>PostgreSQL</productname> backend to directly read from + or write to a file. The file must be accessible to the backend and + the name must be specified from the viewpoint of the backend. When + <filename>stdin</filename> or <filename>stdout</filename> is + specified, data flows through the client frontend to the backend. <tip> <para> Do not confuse <command>COPY</command> with the - <application>psql</application> instruction <command>\copy</command>. - <command>\copy</command> invokes <command>COPY FROM stdin</command> - or <command>COPY TO stdout</command>, and then fetches/stores the data - in a file accessible to the <application>psql</application> client. - Thus, file accessibility and access rights depend on the client - rather than the backend when <command>\copy</command> is used. + <application>psql</application> instruction + <command>\copy</command>. <command>\copy</command> invokes + <command>COPY FROM stdin</command> or <command>COPY TO + stdout</command>, and then fetches/stores the data in a file + accessible to the <application>psql</application> client. Thus, + file accessibility and access rights depend on the client rather + than the backend when <command>\copy</command> is used. </para> </tip> </para> @@ -225,20 +230,19 @@ ERROR: <replaceable>reason</replaceable> <para> By default, a text copy uses a tab ("\t") character as a delimiter - between fields. The field delimiter may be changed to any other single - character with the keyword phrase USING DELIMITERS. Characters - in data fields that happen to match the delimiter character will - be backslash quoted. + between fields. The field delimiter may be changed to any other + single character with the keyword DELIMITER. Characters in data + fields that happen to match the delimiter character will be + backslash quoted. </para> <para> You must have <firstterm>select privilege</firstterm> on any table - whose values are read by - <command>COPY TO</command>, and - <firstterm>insert privilege</firstterm> on a - table into which values are being inserted by <command>COPY FROM</command>. - The backend also needs appropriate Unix permissions for any file read - or written by <command>COPY</command>. + whose values are read by <command>COPY TO</command>, and + <firstterm>insert privilege</firstterm> on a table into which values + are being inserted by <command>COPY FROM</command>. The backend also + needs appropriate Unix permissions for any file read or written by + <command>COPY</command>. </para> <para> @@ -247,28 +251,25 @@ ERROR: <replaceable>reason</replaceable> </para> <para> - <command>COPY</command> stops operation at the first error. This - should not lead to problems in the event of - a <command>COPY TO</command>, but the - target relation will already have received earlier rows in a - <command>COPY FROM</command>. These rows will not be visible or - accessible, but they still occupy disk space. This may amount to a - considerable amount - of wasted disk space if the failure happened well into a large copy - operation. You may wish to invoke <command>VACUUM</command> to recover - the wasted space. + <command>COPY</command> stops operation at the first error. This + should not lead to problems in the event of a <command>COPY + TO</command>, but the target relation will already have received + earlier rows in a <command>COPY FROM</command>. These rows will not + be visible or accessible, but they still occupy disk space. This may + amount to a considerable amount of wasted disk space if the failure + happened well into a large copy operation. You may wish to invoke + <command>VACUUM</command> to recover the wasted space. </para> <para> Files named in a <command>COPY</command> command are read or written - directly by the backend, not by the client application. Therefore, + directly by the backend, not by the client application. Therefore, they must reside on or be accessible to the database server machine, - not the client. They must be accessible to and readable or writable + not the client. They must be accessible to and readable or writable by the <application>PostgreSQL</application> user (the user ID the - server runs as), not the client. - <command>COPY</command> naming a file is only allowed to database - superusers, since it allows reading or writing any file that the backend - has privileges to access. + server runs as), not the client. <command>COPY</command> naming a + file is only allowed to database superusers, since it allows reading + or writing any file that the backend has privileges to access. <tip> <para> @@ -282,11 +283,11 @@ ERROR: <replaceable>reason</replaceable> <para> It is recommended that the file name used in <command>COPY</command> - always be specified as an absolute path. This is enforced by the backend - in the case of <command>COPY TO</command>, but for <command>COPY - FROM</command> you do have the option of reading from a file specified - by a relative path. The path will be interpreted relative to the - backend's working directory (somewhere below + always be specified as an absolute path. This is enforced by the + backend in the case of <command>COPY TO</command>, but for + <command>COPY FROM</command> you do have the option of reading from + a file specified by a relative path. The path will be interpreted + relative to the backend's working directory (somewhere below <filename>$PGDATA</filename>), not the client's working directory. </para> </refsect2> @@ -312,8 +313,8 @@ ERROR: <replaceable>reason</replaceable> place of attributes that are NULL. </para> <para> - If WITH OIDS is specified, the OID is read or written as the first column, - preceding the user data columns. (An error is raised if WITH OIDS is + If OIDS is specified, the OID is read or written as the first column, + preceding the user data columns. (An error is raised if OIDS is specified for a table that does not have OIDs.) </para> <para> @@ -325,11 +326,11 @@ ERROR: <replaceable>reason</replaceable> </para> <para> Backslash characters (<literal>\</>) may be used in the - <command>COPY</command> data to quote data characters that might otherwise - be taken as row or column delimiters. In particular, the following - characters <emphasis>must</> be preceded by a backslash if they appear - as part of an attribute value: backslash itself, newline, and the current - delimiter character. + <command>COPY</command> data to quote data characters that might + otherwise be taken as row or column delimiters. In particular, the + following characters <emphasis>must</> be preceded by a backslash if + they appear as part of an attribute value: backslash itself, + newline, and the current delimiter character. </para> <para> The following special backslash sequences are recognized by @@ -412,9 +413,8 @@ ERROR: <replaceable>reason</replaceable> <title>Binary Format</title> <para> The file format used for <command>COPY BINARY</command> changed in - <application>PostgreSQL</application> v7.1. - The new format consists of a file header, zero or more - tuples, and a file trailer. + <application>PostgreSQL</application> v7.1. The new format consists + of a file header, zero or more tuples, and a file trailer. </para> <refsect3> @@ -446,9 +446,9 @@ filters, dropped nulls, dropped high bits, or parity changes.) <term>Integer layout field</term> <listitem> <para> -int32 constant 0x01020304 in source's byte order. -Potentially, a reader could engage in byte-flipping of subsequent fields -if the wrong byte order is detected here. +int32 constant 0x01020304 in source's byte order. Potentially, a reader +could engage in byte-flipping of subsequent fields if the wrong byte +order is detected here. </para> </listitem> </varlistentry> @@ -457,14 +457,14 @@ if the wrong byte order is detected here. <term>Flags field</term> <listitem> <para> -int32 bit mask to denote important aspects of the file -format. Bits are numbered from 0 (LSB) to 31 (MSB) --- note that this -field is stored with source's endianness, as are all subsequent integer -fields. Bits 16-31 are reserved to denote critical file format issues; -a reader should abort if it finds an unexpected bit set in this range. -Bits 0-15 are reserved to signal backwards-compatible format issues; -a reader should simply ignore any unexpected bits set in this range. -Currently only one flag bit is defined, and the rest must be zero: +int32 bit mask to denote important aspects of the file format. Bits are +numbered from 0 (LSB) to 31 (MSB) --- note that this field is stored +with source's endianness, as are all subsequent integer fields. Bits +16-31 are reserved to denote critical file format issues; a reader +should abort if it finds an unexpected bit set in this range. Bits 0-15 +are reserved to signal backwards-compatible format issues; a reader +should simply ignore any unexpected bits set in this range. Currently +only one flag bit is defined, and the rest must be zero: <variablelist> <varlistentry> <term>Bit 16</term> @@ -620,7 +620,7 @@ The following example copies a table to standard output, delimiter: </para> <programlisting> -COPY country TO <filename>stdout</filename> USING DELIMITERS '|'; +COPY country TO <filename>stdout</filename> WITH DELIMITER '|'; </programlisting> <para> To copy data from a Unix file into a table country: @@ -629,9 +629,9 @@ COPY country TO <filename>stdout</filename> USING DELIMITERS '|'; COPY country FROM '/usr1/proj/bray/sql/country_data'; </programlisting> <para> - Here is a sample of data suitable for copying into a table - from <filename>stdin</filename> (so it -has the termination sequence on the last line): + Here is a sample of data suitable for copying into a table from + <filename>stdin</filename> (so it has the termination sequence on the + last line): </para> <programlisting> AF AFGHANISTAN @@ -645,13 +645,12 @@ ZW ZIMBABWE Note that the white space on each line is actually a TAB. </para> <para> - The following is the same data, output in binary format on a Linux/i586 - machine. The data is shown after filtering through - the Unix utility <command>od -c</command>. The table has - three fields; the first is <type>char(2)</type>, - the second is <type>text</type>, and the third is - <type>integer</type>. All the - rows have a null value in the third field. + The following is the same data, output in binary format on a + Linux/i586 machine. The data is shown after filtering through the + Unix utility <command>od -c</command>. The table has three fields; + the first is <type>char(2)</type>, the second is <type>text</type>, + and the third is <type>integer</type>. All the rows have a null value + in the third field. </para> <programlisting> 0000000 P G B C O P Y \n 377 \r \n \0 004 003 002 001 diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index 2dede1c99cc..85bc6852be4 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.66 2002/03/22 19:20:44 petere Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.67 2002/06/20 16:00:43 momjian Exp $ PostgreSQL documentation --> @@ -36,13 +36,13 @@ PostgreSQL documentation <title>Summary</title> <para> - <application>psql</application> is a terminal-based front-end to - <productname>PostgreSQL</productname>. It enables you to type in queries - interactively, issue them to <productname>PostgreSQL</productname>, and see - the query results. Alternatively, input can be from a file. - In addition, it provides a number of meta-commands and - various shell-like features to facilitate writing scripts and automating a wide - variety of tasks. + <application>psql</application> is a terminal-based front-end to + <productname>PostgreSQL</productname>. It enables you to type in + queries interactively, issue them to + <productname>PostgreSQL</productname>, and see the query results. + Alternatively, input can be from a file. In addition, it provides a + number of meta-commands and various shell-like features to + facilitate writing scripts and automating a wide variety of tasks. </para> </refsect2> @@ -64,26 +64,28 @@ PostgreSQL documentation <title>Connecting To A Database</title> <para> - <application>psql</application> is a regular <productname>PostgreSQL</productname> - client application. In order to connect to a database you need to know the - name of your target database, the host name and port number of the server - and what user name you want to connect as. <application>psql</application> can be - told about those parameters via command line options, namely <option>-d</option>, - <option>-h</option>, <option>-p</option>, and <option>-U</option> respectively. - If an argument is found that does not belong to any option it will be interpreted - as the database name (or the user name, if the database name is also - given). Not all these options are required, defaults do apply. - If you omit the host name psql will connect via a Unix domain socket - to a server on the - local host. The default port number is compile-time determined. Since the database - server uses the same default, you will not have to specify the port in most - cases. The default user name is your Unix user name, as is the default - database name. - Note that you can't just connect to any database under any user name. Your database - administrator should have informed you about your access rights. To save you some typing - you can also set the environment variables <envar>PGDATABASE</envar>, - <envar>PGHOST</envar>, <envar>PGPORT</envar> and <envar>PGUSER</envar> - to appropriate values. + <application>psql</application> is a regular + <productname>PostgreSQL</productname> client application. In order + to connect to a database you need to know the name of your target + database, the host name and port number of the server and what user + name you want to connect as. <application>psql</application> can be + told about those parameters via command line options, namely + <option>-d</option>, <option>-h</option>, <option>-p</option>, and + <option>-U</option> respectively. If an argument is found that does + not belong to any option it will be interpreted as the database name + (or the user name, if the database name is also given). Not all + these options are required, defaults do apply. If you omit the host + name psql will connect via a Unix domain socket to a server on the + local host. The default port number is compile-time determined. + Since the database server uses the same default, you will not have + to specify the port in most cases. The default user name is your + Unix user name, as is the default database name. Note that you can't + just connect to any database under any user name. Your database + administrator should have informed you about your access rights. To + save you some typing you can also set the environment variables + <envar>PGDATABASE</envar>, <envar>PGHOST</envar>, + <envar>PGPORT</envar> and <envar>PGUSER</envar> to appropriate + values. </para> <para> @@ -101,9 +103,10 @@ PostgreSQL documentation <title>Entering Queries</title> <para> - In normal operation, <application>psql</application> provides a prompt with - the name of the database to which <application>psql</application> is currently - connected, followed by the string <literal>=></literal>. For example, + In normal operation, <application>psql</application> provides a + prompt with the name of the database to which + <application>psql</application> is currently connected, followed by + the string <literal>=></literal>. For example, <programlisting> $ <userinput>psql testdb</userinput> Welcome to psql, the PostgreSQL interactive terminal. @@ -119,11 +122,12 @@ testdb=> </para> <para> - At the prompt, the user may type in <acronym>SQL</acronym> queries. - Ordinarily, input lines are sent to the backend when a query-terminating - semicolon is reached. An end of line does not terminate a query! Thus queries - can be spread over several lines for clarity. If the query was sent and without - error, the query results are displayed on the screen. + At the prompt, the user may type in <acronym>SQL</acronym> queries. + Ordinarily, input lines are sent to the backend when a + query-terminating semicolon is reached. An end of line does not + terminate a query! Thus queries can be spread over several lines for + clarity. If the query was sent and without error, the query results + are displayed on the screen. </para> <para> @@ -143,12 +147,13 @@ testdb=> <title><application>psql</application> Meta-Commands</title> <para> - Anything you enter in <application>psql</application> that begins with an - unquoted backslash is a <application>psql</application> meta-command that is - processed by <application>psql</application> itself. - These commands are what makes - <application>psql</application> interesting for administration or scripting. - Meta-commands are more commonly called slash or backslash commands. + Anything you enter in <application>psql</application> that begins + with an unquoted backslash is a <application>psql</application> + meta-command that is processed by <application>psql</application> + itself. These commands are what makes + <application>psql</application> interesting for administration or + scripting. Meta-commands are more commonly called slash or backslash + commands. </para> <para> @@ -159,46 +164,49 @@ testdb=> </para> <para> - To include whitespace into an argument you must quote it with a single - quote. To include a single quote into such an argument, precede it by - a backslash. Anything contained in single quotes is furthermore subject to - C-like substitutions for <literal>\n</literal> (new line), <literal>\t</literal> - (tab), <literal>\</literal><replaceable>digits</replaceable>, + To include whitespace into an argument you must quote it with a + single quote. To include a single quote into such an argument, + precede it by a backslash. Anything contained in single quotes is + furthermore subject to C-like substitutions for + <literal>\n</literal> (new line), <literal>\t</literal> (tab), + <literal>\</literal><replaceable>digits</replaceable>, <literal>\0</literal><replaceable>digits</replaceable>, and - <literal>\0x</literal><replaceable>digits</replaceable> - (the character with the given decimal, octal, or hexadecimal code). + <literal>\0x</literal><replaceable>digits</replaceable> (the + character with the given decimal, octal, or hexadecimal code). </para> <para> If an unquoted argument begins with a colon (<literal>:</literal>), - it is taken as a variable and the value of the variable is taken as the - argument instead. + it is taken as a variable and the value of the variable is taken as + the argument instead. </para> <para> - Arguments that are quoted in <quote>backticks</quote> (<literal>`</literal>) - are taken as a command line that is passed to the shell. The output of the - command (with a trailing newline removed) is taken as the argument value. - The above escape sequences also apply in backticks. + Arguments that are quoted in <quote>backticks</quote> + (<literal>`</literal>) are taken as a command line that is passed to + the shell. The output of the command (with a trailing newline + removed) is taken as the argument value. The above escape sequences + also apply in backticks. </para> <para> - Some commands take the name of an <acronym>SQL</acronym> identifier (such as - a table name) as argument. These arguments follow the syntax rules of - <acronym>SQL</acronym> regarding double quotes: an identifier without - double quotes is coerced to lower-case. For all other commands - double quotes are not special and will become part of the argument. + Some commands take the name of an <acronym>SQL</acronym> identifier + (such as a table name) as argument. These arguments follow the + syntax rules of <acronym>SQL</acronym> regarding double quotes: an + identifier without double quotes is coerced to lower-case. For all + other commands double quotes are not special and will become part of + the argument. </para> <para> - Parsing for arguments stops when another unquoted backslash occurs. This - is taken as the beginning of a new meta-command. The special sequence - <literal>\\</literal> - (two backslashes) marks the end of arguments and continues parsing - <acronym>SQL</acronym> queries, if any. That way <acronym>SQL</acronym> and - <application>psql</application> commands can be freely mixed on a line. - But in any case, the arguments of a meta-command cannot continue beyond the end - of the line. + Parsing for arguments stops when another unquoted backslash occurs. + This is taken as the beginning of a new meta-command. The special + sequence <literal>\\</literal> (two backslashes) marks the end of + arguments and continues parsing <acronym>SQL</acronym> queries, if + any. That way <acronym>SQL</acronym> and + <application>psql</application> commands can be freely mixed on a + line. But in any case, the arguments of a meta-command cannot + continue beyond the end of the line. </para> <para> @@ -222,8 +230,8 @@ testdb=> <listitem> <para> Change the current working directory to - <replaceable>directory</replaceable>. Without argument, - change to the current user's home directory. + <replaceable>directory</replaceable>. Without argument, change + to the current user's home directory. </para> <tip> @@ -238,12 +246,13 @@ testdb=> <term><literal>\C</literal> [ <replaceable class="parameter">title</replaceable> ]</term> <listitem> <para> - Set the title of any tables being printed as the result of a query or - unset any such title. This command is equivalent to - <literal>\pset title <replaceable class="parameter">title</replaceable></literal>. - (The name of this - command derives from <quote>caption</quote>, as it was previously only - used to set the caption in an <acronym>HTML</acronym> table.) + Set the title of any tables being printed as the result of a + query or unset any such title. This command is equivalent to + <literal>\pset title <replaceable + class="parameter">title</replaceable></literal>. (The name of + this command derives from <quote>caption</quote>, as it was + previously only used to set the caption in an + <acronym>HTML</acronym> table.) </para> </listitem> </varlistentry> @@ -252,78 +261,86 @@ testdb=> <term><literal>\connect</literal> (or <literal>\c</literal>) [ <replaceable class="parameter">dbname</replaceable> [ <replaceable class="parameter">username</replaceable> ] ]</term> <listitem> <para> - Establishes a connection to a new database and/or under a user name. The - previous connection is closed. - If <replaceable class="parameter">dbname</replaceable> is <literal>-</literal> + Establishes a connection to a new database and/or under a user + name. The previous connection is closed. If <replaceable + class="parameter">dbname</replaceable> is <literal>-</literal> the current database name is assumed. </para> <para> - If <replaceable class="parameter">username</replaceable> is omitted - the current user name is assumed. - </para> + If <replaceable class="parameter">username</replaceable> is + omitted the current user name is assumed. </para> <para> - As a special rule, <command>\connect</command> without any arguments will connect - to the default database as the default user (as you would have gotten - by starting <application>psql</application> without any arguments). + As a special rule, <command>\connect</command> without any + arguments will connect to the default database as the default + user (as you would have gotten by starting + <application>psql</application> without any arguments). </para> <para> - If the connection attempt failed (wrong user name, access denied, etc.), the - previous connection will be kept if and only if <application>psql</application> is - in interactive mode. When executing a non-interactive script, processing - will immediately stop with an error. This distinction was chosen as a user - convenience against typos on the one hand, and a safety mechanism that - scripts are not accidentally acting on the wrong database on the other hand. + If the connection attempt failed (wrong user name, access + denied, etc.), the previous connection will be kept if and only + if <application>psql</application> is in interactive mode. When + executing a non-interactive script, processing will immediately + stop with an error. This distinction was chosen as a user + convenience against typos on the one hand, and a safety + mechanism that scripts are not accidentally acting on the wrong + database on the other hand. </para> </listitem> </varlistentry> <varlistentry> <term><literal>\copy</literal> <replaceable class="parameter">table</replaceable> - [ <literal>with oids</literal> ] { <literal>from</literal> | <literal>to</literal> } + { <literal>from</literal> | <literal>to</literal> } <replaceable class="parameter">filename</replaceable> | stdin | stdout - [ <literal>using delimiters</literal> '<replaceable class="parameter">characters</replaceable>' ] - [ <literal>with null as</literal> '<replaceable class="parameter">string</replaceable>' ] + [ <literal>with</literal> ] + [ <literal>oids</literal> ] + [ <literal>delimiter [as] </literal> '<replaceable class="parameter">character</replaceable>' ] + [ <literal>null [as] </literal> '<replaceable class="parameter">string</replaceable>' ] </term> <listitem> <para> - Performs a frontend (client) copy. This is an operation that runs an - <acronym>SQL</acronym> <xref linkend="SQL-COPY" endterm="SQL-COPY-title"> command, - but instead of the backend's reading or writing the specified file, and - consequently requiring backend access and special user privilege, - as well as being bound to the file system accessible by the backend, - <application>psql</application> reads or writes the - file and routes the data between the backend and the local file system. + Performs a frontend (client) copy. This is an operation that + runs an <acronym>SQL</acronym> <xref linkend="SQL-COPY" + endterm="SQL-COPY-title"> command, but instead of the backend's + reading or writing the specified file, and consequently + requiring backend access and special user privilege, as well as + being bound to the file system accessible by the backend, + <application>psql</application> reads or writes the file and + routes the data between the backend and the local file system. </para> <para> - The syntax of the command is similar to that of the <acronym>SQL</acronym> - <command>COPY</command> command (see its description for the details). - Note that, because of this, special parsing rules apply to the - <command>\copy</command> command. In particular, the variable - substitution rules and backslash escapes do not apply. + The syntax of the command is similar to that of the + <acronym>SQL</acronym> <command>COPY</command> command (see its + description for the details). Note that, because of this, + special parsing rules apply to the <command>\copy</command> + command. In particular, the variable substitution rules and + backslash escapes do not apply. </para> <tip> <para> - This operation is not as efficient as the <acronym>SQL</acronym> - <command>COPY</command> command because all data must pass through the - client/server IP or socket connection. For large amounts of data the other - technique may be preferable. + This operation is not as efficient as the <acronym>SQL</acronym> + <command>COPY</command> command because all data must pass + through the client/server IP or socket connection. For large + amounts of data the other technique may be preferable. </para> </tip> <note> <para> - Note the difference in interpretation of <literal>stdin</literal> and <literal>stdout</literal> - between frontend and backend copies: in a frontend copy these always refer - to <application>psql</application>'s input and output stream. On a backend - copy <literal>stdin</literal> comes from wherever the <command>COPY</command> - itself came from (for example, a script run with the <option>-f</option> option), - and <literal>stdout</literal> refers to the query output stream (see + Note the difference in interpretation of + <literal>stdin</literal> and <literal>stdout</literal> between + frontend and backend copies: in a frontend copy these always + refer to <application>psql</application>'s input and output + stream. On a backend copy <literal>stdin</literal> comes from + wherever the <command>COPY</command> itself came from (for + example, a script run with the <option>-f</option> option), and + <literal>stdout</literal> refers to the query output stream (see <command>\o</command> meta-command below). </para> </note> @@ -334,7 +351,8 @@ testdb=> <term><literal>\copyright</literal></term> <listitem> <para> - Shows the copyright and distribution terms of <application>PostgreSQL</application>. + Shows the copyright and distribution terms of + <application>PostgreSQL</application>. </para> </listitem> </varlistentry> @@ -344,25 +362,26 @@ testdb=> <listitem> <para> - Shows all columns of <replaceable class="parameter">relation</replaceable> - (which could be a table, view, index, or sequence), - their types, and any special attributes such as <literal>NOT NULL</literal> - or defaults, if any. - If the relation is, in fact, a table, any defined indices, primary keys, unique - constraints and check constraints are also listed. - If the relation is a view, the view definition is also shown. + Shows all columns of <replaceable + class="parameter">relation</replaceable> (which could be a + table, view, index, or sequence), their types, and any special + attributes such as <literal>NOT NULL</literal> or defaults, if + any. If the relation is, in fact, a table, any defined indices, + primary keys, unique constraints and check constraints are also + listed. If the relation is a view, the view definition is also + shown. </para> <para> - The command form <literal>\d+</literal> is identical, but any comments - associated with the table columns are shown as well. + The command form <literal>\d+</literal> is identical, but any + comments associated with the table columns are shown as well. </para> <note> <para> If <command>\d</command> is called without any arguments, it is - equivalent to <command>\dtvs</command> which will show a list - of all tables, views, and sequences. This is purely a convenience + equivalent to <command>\dtvs</command> which will show a list of + all tables, views, and sequences. This is purely a convenience measure. </para> </note> @@ -374,9 +393,10 @@ testdb=> <listitem> <para> - Lists all available aggregate functions, together with the data type they operate on. - If <replaceable class="parameter">pattern</replaceable> - (a regular expression) is specified, only matching aggregates are shown. + Lists all available aggregate functions, together with the data + type they operate on. If <replaceable + class="parameter">pattern</replaceable> (a regular expression) + is specified, only matching aggregates are shown. </para> </listitem> </varlistentry> @@ -385,10 +405,12 @@ testdb=> <term><literal>\dd</literal> [ <replaceable class="parameter">object</replaceable> ]</term> <listitem> <para> - Shows the descriptions of <replaceable class="parameter">object</replaceable> - (which can be a regular expression), or of all objects if no argument is given. - (<quote>Object</quote> covers aggregates, functions, operators, types, relations - (tables, views, indexes, sequences, large objects), rules, and triggers.) For example: + Shows the descriptions of <replaceable + class="parameter">object</replaceable> (which can be a regular + expression), or of all objects if no argument is given. + (<quote>Object</quote> covers aggregates, functions, operators, + types, relations (tables, views, indexes, sequences, large + objects), rules, and triggers.) For example: <programlisting> => <userinput>\dd version</userinput> Object descriptions @@ -400,14 +422,14 @@ testdb=> </para> <para> - Descriptions for objects can be generated with the <command>COMMENT ON</command> - <acronym>SQL</acronym> command. + Descriptions for objects can be generated with the + <command>COMMENT ON</command> <acronym>SQL</acronym> command. </para> <note> <para> - <productname>PostgreSQL</productname> stores the object descriptions in the - pg_description system table. + <productname>PostgreSQL</productname> stores the object + descriptions in the pg_description system table. </para> </note> @@ -419,9 +441,9 @@ testdb=> <term><literal>\dD</literal> [ <replaceable class="parameter">pattern</replaceable> ]</term> <listitem> <para> - Lists all available domains (derived types). - If <replaceable class="parameter">pattern</replaceable> - (a regular expression) is specified, only matching domains are shown. + Lists all available domains (derived types). If <replaceable + class="parameter">pattern</replaceable> (a regular expression) + is specified, only matching domains are shown. </para> </listitem> </varlistentry> @@ -432,10 +454,11 @@ testdb=> <listitem> <para> - Lists available functions, together with their argument and return types. - If <replaceable class="parameter">pattern</replaceable> - (a regular expression) is specified, only matching functions are shown. - If the form <literal>\df+</literal> is used, additional information about + Lists available functions, together with their argument and + return types. If <replaceable + class="parameter">pattern</replaceable> (a regular expression) + is specified, only matching functions are shown. If the form + <literal>\df+</literal> is used, additional information about each function, including language and description, is shown. </para> </listitem> @@ -447,17 +470,18 @@ testdb=> <listitem> <para> - This is not the actual command name: The letters i, s, t, v, S stand for - index, sequence, table, view, and system table, respectively. You can specify - any or all of them in any order to obtain a listing of them, together with - who the owner is. + This is not the actual command name: The letters i, s, t, v, S + stand for index, sequence, table, view, and system table, + respectively. You can specify any or all of them in any order to + obtain a listing of them, together with who the owner is. </para> <para> - If <replaceable class="parameter">pattern</replaceable> is specified, - it is a regular expression that restricts the listing to those objects - whose name matches. If one appends a <quote>+</quote> to the command name, - each object is listed with its associated description, if any. + If <replaceable class="parameter">pattern</replaceable> is + specified, it is a regular expression that restricts the listing + to those objects whose name matches. If one appends a + <quote>+</quote> to the command name, each object is listed with + its associated description, if any. </para> </listitem> </varlistentry> @@ -467,7 +491,8 @@ testdb=> <term><literal>\dl</literal></term> <listitem> <para> - This is an alias for <command>\lo_list</command>, which shows a list of large objects. + This is an alias for <command>\lo_list</command>, which shows a + list of large objects. </para> </listitem> </varlistentry> @@ -478,8 +503,8 @@ testdb=> <listitem> <para> Lists available operators with their operand and return types. - If <replaceable class="parameter">name</replaceable> - is specified, only operators with that name will be shown. + If <replaceable class="parameter">name</replaceable> is + specified, only operators with that name will be shown. </para> </listitem> </varlistentry> @@ -489,8 +514,9 @@ testdb=> <term><literal>\dp</literal> [ <replaceable class="parameter">pattern</replaceable> ]</term> <listitem> <para> - This is an alias for <command>\z</command> which was included for its - greater mnemonic value (<quote>display permissions</quote>). + This is an alias for <command>\z</command> which was included + for its greater mnemonic value (<quote>display + permissions</quote>). </para> </listitem> </varlistentry> @@ -500,8 +526,9 @@ testdb=> <term><literal>\dT [ <replaceable class="parameter">pattern</replaceable> ]</literal></term> <listitem> <para> - Lists all data types or only those that match <replaceable class="parameter">pattern</replaceable>. - The command form <literal>\dT+</literal> shows extra information. + Lists all data types or only those that match <replaceable + class="parameter">pattern</replaceable>. The command form + <literal>\dT+</literal> shows extra information. </para> </listitem> </varlistentry> @@ -511,7 +538,8 @@ testdb=> <term><literal>\du [ <replaceable class="parameter">pattern</replaceable> ]</literal></term> <listitem> <para> - Lists all configured users or only those that match <replaceable class="parameter">pattern</replaceable>. + Lists all configured users or only those that match <replaceable + class="parameter">pattern</replaceable>. </para> </listitem> </varlistentry> @@ -522,28 +550,29 @@ testdb=> <listitem> <para> - If <replaceable class="parameter">filename</replaceable> is specified, - the file is edited; after the editor exits, its content is copied - back to the query buffer. If no argument is given, the current query - buffer is copied to a temporary file which is then edited in the same - fashion. + If <replaceable class="parameter">filename</replaceable> is + specified, the file is edited; after the editor exits, its + content is copied back to the query buffer. If no argument is + given, the current query buffer is copied to a temporary file + which is then edited in the same fashion. </para> <para> - The new query buffer is then re-parsed according to the normal rules of - <application>psql</application>, where the whole buffer is treated as - a single line. (Thus you cannot make scripts this way. - Use <command>\i</command> for that.) This means also that - if the query ends with (or rather contains) a semicolon, it is immediately - executed. In other cases it will merely wait in the query buffer. + The new query buffer is then re-parsed according to the normal + rules of <application>psql</application>, where the whole buffer + is treated as a single line. (Thus you cannot make scripts this + way. Use <command>\i</command> for that.) This means also that + if the query ends with (or rather contains) a semicolon, it is + immediately executed. In other cases it will merely wait in the + query buffer. </para> <tip> <para> - <application>psql</application> searches the environment variables - <envar>PSQL_EDITOR</envar>, <envar>EDITOR</envar>, and <envar>VISUAL</envar> - (in that order) for an editor to use. If all of them are unset, - <filename>/bin/vi</filename> is run. + <application>psql</application> searches the environment + variables <envar>PSQL_EDITOR</envar>, <envar>EDITOR</envar>, and + <envar>VISUAL</envar> (in that order) for an editor to use. If + all of them are unset, <filename>/bin/vi</filename> is run. </para> </tip> </listitem> @@ -554,8 +583,8 @@ testdb=> <term><literal>\echo</literal> <replaceable class="parameter">text</replaceable> [ ... ]</term> <listitem> <para> - Prints the arguments to the standard output, separated by one space and - followed by a newline. This can be useful to + Prints the arguments to the standard output, separated by one + space and followed by a newline. This can be useful to intersperse information in the output of scripts. For example: <programlisting> => <userinput>\echo `date`</userinput> @@ -567,8 +596,9 @@ Tue Oct 26 21:40:57 CEST 1999 <tip> <para> - If you use the <command>\o</command> command to redirect your query output - you may wish to use <command>\qecho</command> instead of this command. + If you use the <command>\o</command> command to redirect your + query output you may wish to use <command>\qecho</command> + instead of this command. </para> </tip> </listitem> @@ -592,9 +622,10 @@ Tue Oct 26 21:40:57 CEST 1999 <listitem> <para> - Sets the field separator for unaligned query output. The default is -pipe (<literal>|</literal>). See also <command>\pset</command> for a generic way - of setting output options. + Sets the field separator for unaligned query output. The default + is pipe (<literal>|</literal>). See also + <command>\pset</command> for a generic way of setting output + options. </para> </listitem> </varlistentry> @@ -605,12 +636,14 @@ pipe (<literal>|</literal>). See also <command>\pset</command> for a generic way <listitem> <para> - Sends the current query input buffer to the backend and optionally - saves the output in <replaceable class="parameter">filename</replaceable> - or pipes the output into a separate Unix shell to execute - <replaceable class="parameter">command</replaceable>. A bare <literal>\g</literal> - is virtually equivalent to a semicolon. A <literal>\g</literal> with argument - is a <quote>one-shot</quote> alternative to the <command>\o</command> command. + Sends the current query input buffer to the backend and + optionally saves the output in <replaceable + class="parameter">filename</replaceable> or pipes the output + into a separate Unix shell to execute <replaceable + class="parameter">command</replaceable>. A bare + <literal>\g</literal> is virtually equivalent to a semicolon. A + <literal>\g</literal> with argument is a <quote>one-shot</quote> + alternative to the <command>\o</command> command. </para> </listitem> </varlistentry> @@ -619,19 +652,20 @@ pipe (<literal>|</literal>). See also <command>\pset</command> for a generic way <term><literal>\help</literal> (or <literal>\h</literal>) [ <replaceable class="parameter">command</replaceable> ]</term> <listitem> <para> - Give syntax help on the specified <acronym>SQL</acronym> command. - If <replaceable class="parameter">command</replaceable> is not specified, - then <application>psql</application> will - list all the commands for which syntax help is - available. If <replaceable class="parameter">command</replaceable> - is an asterisk (<quote>*</quote>), then - syntax help on all <acronym>SQL</acronym> commands is shown. + Give syntax help on the specified <acronym>SQL</acronym> + command. If <replaceable class="parameter">command</replaceable> + is not specified, then <application>psql</application> will list + all the commands for which syntax help is available. If + <replaceable class="parameter">command</replaceable> is an + asterisk (<quote>*</quote>), then syntax help on all + <acronym>SQL</acronym> commands is shown. </para> <note> <para> - To simplify typing, commands that consists of several words do not have to be quoted. - Thus it is fine to type <userinput>\help alter table</userinput>. + To simplify typing, commands that consists of several words do + not have to be quoted. Thus it is fine to type <userinput>\help + alter table</userinput>. </para> </note> </listitem> @@ -642,10 +676,11 @@ pipe (<literal>|</literal>). See also <command>\pset</command> for a generic way <term><literal>\H</literal></term> <listitem> <para> - Turns on <acronym>HTML</acronym> query output format. If the <acronym>HTML</acronym> - format is already on, it is switched back to the default aligned text format. This - command is for compatibility and convenience, but see <command>\pset</command> about - setting other output options. + Turns on <acronym>HTML</acronym> query output format. If the + <acronym>HTML</acronym> format is already on, it is switched + back to the default aligned text format. This command is for + compatibility and convenience, but see <command>\pset</command> + about setting other output options. </para> </listitem> </varlistentry> @@ -655,13 +690,15 @@ pipe (<literal>|</literal>). See also <command>\pset</command> for a generic way <term><literal>\i</literal> <replaceable class="parameter">filename</replaceable></term> <listitem> <para> - Reads input from the file <replaceable class="parameter">filename</replaceable> - and executes it as though it had been typed on the keyboard. + Reads input from the file <replaceable + class="parameter">filename</replaceable> and executes it as + though it had been typed on the keyboard. </para> <note> <para> - If you want to see the lines on the screen as they are read you must set - the variable <envar>ECHO</envar> to <literal>all</literal>. + If you want to see the lines on the screen as they are read you + must set the variable <envar>ECHO</envar> to + <literal>all</literal>. </para> </note> </listitem> @@ -672,12 +709,12 @@ pipe (<literal>|</literal>). See also <command>\pset</command> for a generic way <term><literal>\l</literal> (or <literal>\list</literal>)</term> <listitem> <para> - List all the databases in the server as well as their owners. Append a - <quote>+</quote> to the command name to see any descriptions - for the databases as well. If your <productname>PostgreSQL</productname> - installation was - compiled with multibyte encoding support, the encoding scheme of each - database is shown as well. + List all the databases in the server as well as their owners. + Append a <quote>+</quote> to the command name to see any + descriptions for the databases as well. If your + <productname>PostgreSQL</productname> installation was compiled + with multibyte encoding support, the encoding scheme of each + database is shown as well. </para> </listitem> </varlistentry> @@ -688,21 +725,26 @@ pipe (<literal>|</literal>). See also <command>\pset</command> for a generic way <listitem> <para> - Reads the large object with <acronym>OID</acronym> <replaceable class="parameter">loid</replaceable> - from the database and writes it to <replaceable class="parameter">filename</replaceable>. - Note that this is subtly different from the server function <function>lo_export</function>, - which acts with the permissions of the user that the database server runs as and - on the server's file system. + Reads the large object with <acronym>OID</acronym> <replaceable + class="parameter">loid</replaceable> from the database and + writes it to <replaceable + class="parameter">filename</replaceable>. Note that this is + subtly different from the server function + <function>lo_export</function>, which acts with the permissions + of the user that the database server runs as and on the server's + file system. </para> <tip> <para> - Use <command>\lo_list</command> to find out the large object's <acronym>OID</acronym>. + Use <command>\lo_list</command> to find out the large object's + <acronym>OID</acronym>. </para> </tip> <note> <para> - See the description of the <envar>LO_TRANSACTION</envar> variable for - important information concerning all large object operations. + See the description of the <envar>LO_TRANSACTION</envar> + variable for important information concerning all large object + operations. </para> </note> </listitem> @@ -714,29 +756,32 @@ pipe (<literal>|</literal>). See also <command>\pset</command> for a generic way <listitem> <para> - Stores the file into a <productname>PostgreSQL</productname> <quote>large object</quote>. - Optionally, it associates the given comment with the object. Example: + Stores the file into a <productname>PostgreSQL</productname> + <quote>large object</quote>. Optionally, it associates the given + comment with the object. Example: <programlisting> foo=> <userinput>\lo_import '/home/peter/pictures/photo.xcf' 'a picture of me'</userinput> lo_import 152801 </programlisting> - The response indicates that the large object received object id 152801 - which one ought to remember if one wants to access the object ever again. - For that reason it is recommended to always associate a human-readable - comment with every object. Those can then be seen with the - <command>\lo_list</command> command. + The response indicates that the large object received object id + 152801 which one ought to remember if one wants to access the + object ever again. For that reason it is recommended to always + associate a human-readable comment with every object. Those can + then be seen with the <command>\lo_list</command> command. </para> <para> - Note that this command is subtly different from the server-side <function>lo_import</function> - because it acts as the local user on the local file system, rather than the server's - user and file system. + Note that this command is subtly different from the server-side + <function>lo_import</function> because it acts as the local user + on the local file system, rather than the server's user and file + system. </para> <note> <para> - See the description of the <envar>LO_TRANSACTION</envar> variable for - important information concerning all large object operations. + See the description of the <envar>LO_TRANSACTION</envar> + variable for important information concerning all large object + operations. </para> </note> </listitem> @@ -746,9 +791,9 @@ lo_import 152801 <term><literal>\lo_list</literal></term> <listitem> <para> - Shows a list of all <productname>PostgreSQL</productname> <quote>large - objects</quote> currently stored in the database, along with any - comments provided for them. + Shows a list of all <productname>PostgreSQL</productname> + <quote>large objects</quote> currently stored in the database, + along with any comments provided for them. </para> </listitem> </varlistentry> @@ -758,19 +803,22 @@ lo_import 152801 <listitem> <para> - Deletes the large object with <acronym>OID</acronym> <replaceable class="parameter">loid</replaceable> - from the database. + Deletes the large object with <acronym>OID</acronym> + <replaceable class="parameter">loid</replaceable> from the + database. </para> <tip> <para> - Use <command>\lo_list</command> to find out the large object's <acronym>OID</acronym>. + Use <command>\lo_list</command> to find out the large object's + <acronym>OID</acronym>. </para> </tip> <note> <para> - See the description of the <envar>LO_TRANSACTION</envar> variable for - important information concerning all large object operations. + See the description of the <envar>LO_TRANSACTION</envar> + variable for important information concerning all large object + operations. </para> </note> </listitem> @@ -782,25 +830,26 @@ lo_import 152801 <listitem> <para> - Saves future query results to the file - <replaceable class="parameter">filename</replaceable> or pipes future - results into a separate Unix shell to execute - <replaceable class="parameter">command</replaceable>. - If no arguments are specified, the query output will be reset to + Saves future query results to the file <replaceable + class="parameter">filename</replaceable> or pipes future results + into a separate Unix shell to execute <replaceable + class="parameter">command</replaceable>. If no arguments are + specified, the query output will be reset to <filename>stdout</filename>. </para> <para> - <quote>Query results</quote> includes all tables, command responses, - and notices obtained - from the database server, as well as output of various backslash - commands that query the database (such as <command>\d</command>), - but not error messages. + <quote>Query results</quote> includes all tables, command + responses, and notices obtained from the database server, as + well as output of various backslash commands that query the + database (such as <command>\d</command>), but not error + messages. </para> <tip> <para> - To intersperse text output in between query results, use <command>\qecho</command>. + To intersperse text output in between query results, use + <command>\qecho</command>. </para> </tip> </listitem> @@ -822,10 +871,11 @@ lo_import 152801 <listitem> <para> - This command sets options affecting the output of query result tables. - <replaceable class="parameter">parameter</replaceable> describes which option - is to be set. The semantics of <replaceable class="parameter">value</replaceable> - depend thereon. + This command sets options affecting the output of query result + tables. <replaceable class="parameter">parameter</replaceable> + describes which option is to be set. The semantics of + <replaceable class="parameter">value</replaceable> depend + thereon. </para> <para> @@ -836,21 +886,23 @@ lo_import 152801 <listitem> <para> Sets the output format to one of <literal>unaligned</literal>, - <literal>aligned</literal>, <literal>html</literal>, or <literal>latex</literal>. - Unique abbreviations are allowed. (That would mean one letter is enough.) + <literal>aligned</literal>, <literal>html</literal>, or + <literal>latex</literal>. Unique abbreviations are allowed. + (That would mean one letter is enough.) </para> <para> - <quote>Unaligned</quote> writes all fields of a tuple on a line, separated - by the currently active field separator. This is intended to create output - that might be intended to be read in by other programs (tab-separated, - comma-separated). - <quote>Aligned</quote> mode is the - standard, human-readable, nicely formatted text output that is default. - The <quote><acronym>HTML</acronym></quote> and <quote>LaTeX</quote> modes - put out tables that are intended to be included in documents using the - respective mark-up language. They are not complete documents! (This might - not be so dramatic in <acronym>HTML</acronym>, but in LaTeX you must + <quote>Unaligned</quote> writes all fields of a tuple on a + line, separated by the currently active field separator. This + is intended to create output that might be intended to be read + in by other programs (tab-separated, comma-separated). + <quote>Aligned</quote> mode is the standard, human-readable, + nicely formatted text output that is default. The + <quote><acronym>HTML</acronym></quote> and + <quote>LaTeX</quote> modes put out tables that are intended to + be included in documents using the respective mark-up + language. They are not complete documents! (This might not be + so dramatic in <acronym>HTML</acronym>, but in LaTeX you must have a complete document wrapper.) </para> </listitem> @@ -860,12 +912,13 @@ lo_import 152801 <term><literal>border</literal></term> <listitem> <para> - The second argument must be a number. In general, the higher the number - the more borders and lines the tables will have, but this depends on - the particular format. In <acronym>HTML</acronym> mode, this will - translate directly into the <literal>border=...</literal> attribute, in - the others only values 0 (no border), 1 (internal dividing lines), and 2 - (table frame) make sense. + The second argument must be a number. In general, the higher + the number the more borders and lines the tables will have, + but this depends on the particular format. In + <acronym>HTML</acronym> mode, this will translate directly + into the <literal>border=...</literal> attribute, in the + others only values 0 (no border), 1 (internal dividing lines), + and 2 (table frame) make sense. </para> </listitem> </varlistentry> @@ -874,10 +927,11 @@ lo_import 152801 <term><literal>expanded</literal> (or <literal>x</literal>)</term> <listitem> <para> - Toggles between regular and expanded format. When expanded format is - enabled, all output has two columns with the field name on the left - and the data on the right. This mode is useful if the data wouldn't - fit on the screen in the normal <quote>horizontal</quote> mode. + Toggles between regular and expanded format. When expanded + format is enabled, all output has two columns with the field + name on the left and the data on the right. This mode is + useful if the data wouldn't fit on the screen in the normal + <quote>horizontal</quote> mode. </para> <para> @@ -890,10 +944,11 @@ lo_import 152801 <term><literal>null</literal></term> <listitem> <para> - The second argument is a string that should be printed whenever a field - is null. The default is not to print anything, which can easily be mistaken - for, say, an empty string. Thus, one might choose to write - <literal>\pset null '(null)'</literal>. + The second argument is a string that should be printed + whenever a field is null. The default is not to print + anything, which can easily be mistaken for, say, an empty + string. Thus, one might choose to write <literal>\pset null + '(null)'</literal>. </para> </listitem> </varlistentry> @@ -902,10 +957,11 @@ lo_import 152801 <term><literal>fieldsep</literal></term> <listitem> <para> - Specifies the field separator to be used in unaligned output mode. That way - one can create, for example, tab- or comma-separated output, which other - programs might prefer. To set a tab as field separator, type - <literal>\pset fieldsep '\t'</literal>. The default field separator is + Specifies the field separator to be used in unaligned output + mode. That way one can create, for example, tab- or + comma-separated output, which other programs might prefer. To + set a tab as field separator, type <literal>\pset fieldsep + '\t'</literal>. The default field separator is <literal>'|'</literal> (a <quote>pipe</quote> symbol). </para> </listitem> @@ -915,7 +971,8 @@ lo_import 152801 <term><literal>footer</literal></term> <listitem> <para> - Toggles the display of the default footer <literal>(x rows)</literal>. + Toggles the display of the default footer <literal>(x + rows)</literal>. </para> </listitem> </varlistentry> @@ -924,8 +981,8 @@ lo_import 152801 <term><literal>recordsep</literal></term> <listitem> <para> - Specifies the record (line) separator to use in unaligned output mode. The default - is a newline character. + Specifies the record (line) separator to use in unaligned + output mode. The default is a newline character. </para> </listitem> </varlistentry> @@ -934,9 +991,10 @@ lo_import 152801 <term><literal>tuples_only</literal> (or <literal>t</literal>)</term> <listitem> <para> - Toggles between tuples only and full display. Full display may show - extra information such as column headers, titles, and various footers. - In tuples only mode, only actual table data is shown. + Toggles between tuples only and full display. Full display may + show extra information such as column headers, titles, and + various footers. In tuples only mode, only actual table data + is shown. </para> </listitem> </varlistentry> @@ -945,15 +1003,15 @@ lo_import 152801 <term><literal>title</literal> [ <replaceable class="parameter">text</replaceable> ]</term> <listitem> <para> - Sets the table title for any subsequently printed tables. This can be - used to give your output descriptive tags. If no argument is given, - the title is unset. + Sets the table title for any subsequently printed tables. This + can be used to give your output descriptive tags. If no + argument is given, the title is unset. </para> <note> <para> - This formerly only affected <acronym>HTML</acronym> mode. You can now - set titles in any output format. + This formerly only affected <acronym>HTML</acronym> mode. You + can now set titles in any output format. </para> </note> </listitem> @@ -963,11 +1021,12 @@ lo_import 152801 <term><literal>tableattr</literal> (or <literal>T</literal>) [ <replaceable class="parameter">text</replaceable> ]</term> <listitem> <para> - Allows you to specify any attributes to be placed inside the <acronym>HTML</acronym> - <sgmltag>table</sgmltag> tag. This could for example be - <literal>cellpadding</literal> or <literal>bgcolor</literal>. Note that you - probably don't want to specify <literal>border</literal> here, as - that is already taken care of by <literal>\pset border</literal>. + Allows you to specify any attributes to be placed inside the + <acronym>HTML</acronym> <sgmltag>table</sgmltag> tag. This + could for example be <literal>cellpadding</literal> or + <literal>bgcolor</literal>. Note that you probably don't want + to specify <literal>border</literal> here, as that is already + taken care of by <literal>\pset border</literal>. </para> </listitem> </varlistentry> @@ -977,25 +1036,28 @@ lo_import 152801 <term><literal>pager</literal></term> <listitem> <para> - Toggles the list of a pager to do table output. If the environment variable - <envar>PAGER</envar> is set, the output is piped to the specified program. - Otherwise <filename>more</filename> is used. + Toggles the list of a pager to do table output. If the + environment variable <envar>PAGER</envar> is set, the output + is piped to the specified program. Otherwise + <filename>more</filename> is used. </para> <para> - In any case, <application>psql</application> only uses the pager if it - seems appropriate. That means among other things that the output is to - a terminal and that the table would normally not fit on the screen. - Because of the modular nature of the printing routines it is not always - possible to predict the number of lines that will actually be printed. - For that reason <application>psql</application> might not appear very + In any case, <application>psql</application> only uses the + pager if it seems appropriate. That means among other things + that the output is to a terminal and that the table would + normally not fit on the screen. Because of the modular nature + of the printing routines it is not always possible to predict + the number of lines that will actually be printed. For that + reason <application>psql</application> might not appear very discriminating about when to use the pager and when not to. </para> </listitem> </varlistentry> </variablelist> Illustrations on how these different formats look can be seen in - the <xref linkend="APP-PSQL-examples" endterm="APP-PSQL-examples-title"> section. + the <xref linkend="APP-PSQL-examples" + endterm="APP-PSQL-examples-title"> section. </para> <tip> @@ -1008,8 +1070,9 @@ lo_import 152801 <note> <para> - It is an error to call <command>\pset</command> without arguments. In the future - this call might show the current status of all printing options. + It is an error to call <command>\pset</command> without + arguments. In the future this call might show the current status + of all printing options. </para> </note> @@ -1031,9 +1094,9 @@ lo_import 152801 <term><literal>\qecho</literal> <replaceable class="parameter">text</replaceable> [ ... ] </term> <listitem> <para> - This command is identical to <command>\echo</command> except that - all output will be written to the query output channel, as set by - <command>\o</command>. + This command is identical to <command>\echo</command> except + that all output will be written to the query output channel, as + set by <command>\o</command>. </para> </listitem> </varlistentry> @@ -1053,21 +1116,20 @@ lo_import 152801 <term><literal>\s</literal> [ <replaceable class="parameter">filename</replaceable> ]</term> <listitem> <para> - Print or save the command line history to - <replaceable class="parameter">filename</replaceable>. - If <replaceable class="parameter">filename</replaceable> is omitted, - the history is written to the standard output. - This option is only available if <application>psql</application> is - configured to use the <acronym>GNU</acronym> history library. + Print or save the command line history to <replaceable + class="parameter">filename</replaceable>. If <replaceable + class="parameter">filename</replaceable> is omitted, the history + is written to the standard output. This option is only available + if <application>psql</application> is configured to use the + <acronym>GNU</acronym> history library. </para> <note> <para> - In the current version, it is no longer - necessary to save the command history, since that will be done - automatically on program termination. The history is - also loaded automatically every time <application>psql</application> - starts up. + In the current version, it is no longer necessary to save the + command history, since that will be done automatically on + program termination. The history is also loaded automatically + every time <application>psql</application> starts up. </para> </note> </listitem> @@ -1079,28 +1141,30 @@ lo_import 152801 <listitem> <para> - Sets the internal variable <replaceable class="parameter">name</replaceable> - to <replaceable class="parameter">value</replaceable> or, if more than one - value is given, to the concatenation of all of them. If no second argument - is given, the variable is just set with no value. To unset a variable, use - the <command>\unset</command> command. + Sets the internal variable <replaceable + class="parameter">name</replaceable> to <replaceable + class="parameter">value</replaceable> or, if more than one value + is given, to the concatenation of all of them. If no second + argument is given, the variable is just set with no value. To + unset a variable, use the <command>\unset</command> command. </para> <para> - Valid variable names can contain characters, digits, and underscores. - See the section about <application>psql</application> variables for details. + Valid variable names can contain characters, digits, and + underscores. See the section about + <application>psql</application> variables for details. </para> <para> - Although you are welcome to set any variable to anything you want, - <application>psql</application> treats several variables as special. - They are documented in the section about variables. + Although you are welcome to set any variable to anything you + want, <application>psql</application> treats several variables + as special. They are documented in the section about variables. </para> <note> <para> - This command is totally separate from the <acronym>SQL</acronym> command - <xref linkend="SQL-SET" endterm="SQL-SET-title">. + This command is totally separate from the <acronym>SQL</acronym> + command <xref linkend="SQL-SET" endterm="SQL-SET-title">. </para> </note> </listitem> @@ -1111,9 +1175,9 @@ lo_import 152801 <term><literal>\t</literal></term> <listitem> <para> - Toggles the display of output column name headings and row count footer. - This command is equivalent to <literal>\pset tuples_only</literal> and - is provided for convenience. + Toggles the display of output column name headings and row count + footer. This command is equivalent to <literal>\pset + tuples_only</literal> and is provided for convenience. </para> </listitem> </varlistentry> @@ -1123,9 +1187,11 @@ lo_import 152801 <term><literal>\T</literal> <replaceable class="parameter">table_options</replaceable></term> <listitem> <para> - Allows you to specify options to be placed within the <sgmltag>table</sgmltag> - tag in <acronym>HTML</acronym> tabular output mode. This command is - equivalent to <literal>\pset tableattr <replaceable class="parameter">table_options</replaceable></literal>. + Allows you to specify options to be placed within the + <sgmltag>table</sgmltag> tag in <acronym>HTML</acronym> tabular + output mode. This command is equivalent to <literal>\pset + tableattr <replaceable + class="parameter">table_options</replaceable></literal>. </para> </listitem> </varlistentry> @@ -1145,8 +1211,9 @@ lo_import 152801 <term><literal>\w</literal> {<replaceable class="parameter">filename</replaceable> | <replaceable class="parameter">|command</replaceable>}</term> <listitem> <para> - Outputs the current query buffer to the file <replaceable class="parameter">filename</replaceable> - or pipes it to the Unix command <replaceable class="parameter">command</replaceable>. + Outputs the current query buffer to the file <replaceable + class="parameter">filename</replaceable> or pipes it to the Unix + command <replaceable class="parameter">command</replaceable>. </para> </listitem> </varlistentry> @@ -1167,9 +1234,10 @@ lo_import 152801 <term><literal>\z</literal> [ <replaceable class="parameter">pattern</replaceable> ]</term> <listitem> <para> - Produces a list of all tables in the database with their appropriate - access permissions listed. If an argument is given it is taken as a regular - expression which limits the listing to those tables which match it. + Produces a list of all tables in the database with their + appropriate access permissions listed. If an argument is given + it is taken as a regular expression which limits the listing to + those tables which match it. </para> <para> @@ -1187,23 +1255,25 @@ Access permissions for database "test" <listitem> <para> <literal>"=r"</literal>: <literal>PUBLIC</literal> has read - (<command>SELECT</command>) permission on the table. + (<command>SELECT</command>) permission on the table. </para> </listitem> <listitem> <para> - <literal>"joe=arwR"</literal>: User <literal>joe</literal> has read, - write (<command>UPDATE</command>, <command>DELETE</command>), - <quote>append</quote> (<command>INSERT</command>) permissions, - and permission to create rules on the table. + <literal>"joe=arwR"</literal>: User <literal>joe</literal> has + read, write (<command>UPDATE</command>, + <command>DELETE</command>), <quote>append</quote> + (<command>INSERT</command>) permissions, and permission to + create rules on the table. </para> </listitem> <listitem> <para> - <literal>"group staff=ar"</literal>: Group <literal>staff</literal> - has <command>SELECT</command> and <command>INSERT</command> permission. + <literal>"group staff=ar"</literal>: Group + <literal>staff</literal> has <command>SELECT</command> and + <command>INSERT</command> permission. </para> </listitem> </itemizedlist> @@ -1224,8 +1294,9 @@ Access permissions for database "test" <listitem> <para> Escapes to a separate Unix shell or executes the Unix command - <replaceable class="parameter">command</replaceable>. The arguments - are not further interpreted, the shell will see them as is. + <replaceable class="parameter">command</replaceable>. The + arguments are not further interpreted, the shell will see them + as is. </para> </listitem> </varlistentry> @@ -1235,7 +1306,8 @@ Access permissions for database "test" <term><literal>\?</literal></term> <listitem> <para> - Get help information about the backslash (<quote>\</quote>) commands. + Get help information about the backslash (<quote>\</quote>) + commands. </para> </listitem> </varlistentry> @@ -1254,9 +1326,9 @@ Access permissions for database "test" <title>Command-line Options</title> <para> - If so configured, <application>psql</application> understands both standard - Unix short options, and <acronym>GNU</acronym>-style long options. The latter - are not available on all systems. + If so configured, <application>psql</application> understands both + standard Unix short options, and <acronym>GNU</acronym>-style long + options. The latter are not available on all systems. </para> <para> @@ -1265,9 +1337,10 @@ Access permissions for database "test" <term>-a, --echo-all</term> <listitem> <para> - Print all the lines to the screen as they are read. This is more useful for - script processing rather than interactive mode. - This is equivalent to setting the variable <envar>ECHO</envar> to <literal>all</literal>. + Print all the lines to the screen as they are read. This is more + useful for script processing rather than interactive mode. This is + equivalent to setting the variable <envar>ECHO</envar> to + <literal>all</literal>. </para> </listitem> </varlistentry> @@ -1277,8 +1350,8 @@ Access permissions for database "test" <term>-A, --no-align</term> <listitem> <para> - Switches to unaligned output mode. (The default output mode is otherwise - aligned.) + Switches to unaligned output mode. (The default output mode is + otherwise aligned.) </para> </listitem> </varlistentry> @@ -1288,18 +1361,19 @@ Access permissions for database "test" <term>-c, --command <replaceable class="parameter">query</replaceable></term> <listitem> <para> - Specifies that <application>psql</application> - is to execute one query string, <replaceable class="parameter">query</replaceable>, - and then exit. This is useful in shell scripts. + Specifies that <application>psql</application> is to execute one + query string, <replaceable class="parameter">query</replaceable>, + and then exit. This is useful in shell scripts. </para> <para> - <replaceable class="parameter">query</replaceable> must be either a query string - that is completely parseable by the backend (i.e., it contains no <application>psql</application> - specific features), or it is a single backslash command. Thus - you cannot mix <acronym>SQL</acronym> and <application>psql</application> + <replaceable class="parameter">query</replaceable> must be either + a query string that is completely parseable by the backend (i.e., + it contains no <application>psql</application> specific features), + or it is a single backslash command. Thus you cannot mix + <acronym>SQL</acronym> and <application>psql</application> meta-commands. To achieve that, you could pipe the string into - <application>psql</application>, like this: - <literal>echo "\x \\ select * from foo;" | psql</literal>. + <application>psql</application>, like this: <literal>echo "\x \\ + select * from foo;" | psql</literal>. </para> </listitem> </varlistentry> @@ -1309,8 +1383,9 @@ Access permissions for database "test" <term>-d, --dbname <replaceable class="parameter">dbname</replaceable></term> <listitem> <para> - Specifies the name of the database to connect to. This is equivalent to specifying - <replaceable class="parameter">dbname</replaceable> as the first non-option + Specifies the name of the database to connect to. This is + equivalent to specifying <replaceable + class="parameter">dbname</replaceable> as the first non-option argument on the command line. </para> </listitem> @@ -1321,9 +1396,9 @@ Access permissions for database "test" <term>-e, --echo-queries</term> <listitem> <para> - Show all queries that are sent to the backend. - This is equivalent to setting the variable <envar>ECHO</envar> - to <literal>queries</literal>. + Show all queries that are sent to the backend. This is equivalent + to setting the variable <envar>ECHO</envar> to + <literal>queries</literal>. </para> </listitem> </varlistentry> @@ -1333,10 +1408,11 @@ Access permissions for database "test" <term>-E, --echo-hidden</term> <listitem> <para> - Echoes the actual queries generated by \d and other backslash commands. - You can use this if you wish to include similar functionality into - your own programs. This is equivalent to setting the variable - <envar>ECHO_HIDDEN</envar> from within <application>psql</application>. + Echoes the actual queries generated by \d and other backslash + commands. You can use this if you wish to include similar + functionality into your own programs. This is equivalent to + setting the variable <envar>ECHO_HIDDEN</envar> from within + <application>psql</application>. </para> </listitem> </varlistentry> @@ -1348,8 +1424,9 @@ Access permissions for database "test" <para> Use the file <replaceable class="parameter">filename</replaceable> as the source of queries instead of reading queries interactively. - After the file is processed, <application>psql</application> terminates. - This is in many ways equivalent to the internal command <command>\i</command>. + After the file is processed, <application>psql</application> + terminates. This is in many ways equivalent to the internal + command <command>\i</command>. </para> <para> @@ -1358,14 +1435,16 @@ Access permissions for database "test" </para> <para> - Using this option is subtly different from writing - <literal>psql < <replaceable class="parameter">filename</replaceable></literal>. - In general, both will do what you expect, but using <literal>-f</literal> - enables some nice features such as error messages with line numbers. - There is also a slight chance that using this option will reduce - the start-up overhead. On the other hand, the variant using the shell's - input redirection is (in theory) guaranteed to yield exactly the same - output that you would have gotten had you entered everything by hand. + Using this option is subtly different from writing <literal>psql + < <replaceable + class="parameter">filename</replaceable></literal>. In general, + both will do what you expect, but using <literal>-f</literal> + enables some nice features such as error messages with line + numbers. There is also a slight chance that using this option will + reduce the start-up overhead. On the other hand, the variant using + the shell's input redirection is (in theory) guaranteed to yield + exactly the same output that you would have gotten had you entered + everything by hand. </para> </listitem> </varlistentry> @@ -1375,8 +1454,9 @@ Access permissions for database "test" <term>-F, --field-separator <replaceable class="parameter">separator</replaceable></term> <listitem> <para> - Use <replaceable class="parameter">separator</replaceable> as the field separator. - This is equivalent to <command>\pset fieldsep</command> or <command>\f</command>. + Use <replaceable class="parameter">separator</replaceable> as the + field separator. This is equivalent to <command>\pset + fieldsep</command> or <command>\f</command>. </para> </listitem> </varlistentry> @@ -1387,9 +1467,9 @@ Access permissions for database "test" <listitem> <para> Specifies the host name of the machine on which the - <application>postmaster</application> is running. - If host begins with a slash, it is used - as the directory for the unix domain socket. + <application>postmaster</application> is running. If host begins + with a slash, it is used as the directory for the unix domain + socket. </para> </listitem> </varlistentry> @@ -1399,9 +1479,9 @@ Access permissions for database "test" <term>-H, --html</term> <listitem> <para> - Turns on <acronym>HTML</acronym> tabular output. This is equivalent - to <literal>\pset format html</literal> or the <command>\H</command> - command. + Turns on <acronym>HTML</acronym> tabular output. This is + equivalent to <literal>\pset format html</literal> or the + <command>\H</command> command. </para> </listitem> </varlistentry> @@ -1411,8 +1491,9 @@ Access permissions for database "test" <term>-l, --list</term> <listitem> <para> - Lists all available databases, then exits. Other non-connection options - are ignored. This is similar to the internal command <command>\list</command>. + Lists all available databases, then exits. Other non-connection + options are ignored. This is similar to the internal command + <command>\list</command>. </para> </listitem> </varlistentry> @@ -1422,8 +1503,9 @@ Access permissions for database "test" <term>-o, --output <replaceable class="parameter">filename</replaceable></term> <listitem> <para> - Put all query output into file <replaceable class="parameter">filename</replaceable>. - This is equivalent to the command <command>\o</command>. + Put all query output into file <replaceable + class="parameter">filename</replaceable>. This is equivalent to + the command <command>\o</command>. </para> </listitem> </varlistentry> @@ -1433,11 +1515,12 @@ Access permissions for database "test" <term>-p, --port <replaceable class="parameter">port</replaceable></term> <listitem> <para> - Specifies the TCP/IP port or, by omission, the local Unix domain socket file - extension on which the <application>postmaster</application> - is listening for connections. Defaults to the value of the - <envar>PGPORT</envar> environment variable or, if not set, to the port - specified at compile time, usually 5432. + Specifies the TCP/IP port or, by omission, the local Unix domain + socket file extension on which the + <application>postmaster</application> is listening for + connections. Defaults to the value of the <envar>PGPORT</envar> + environment variable or, if not set, to the port specified at + compile time, usually 5432. </para> </listitem> </varlistentry> @@ -1447,10 +1530,11 @@ Access permissions for database "test" <term>-P, --pset <replaceable class="parameter">assignment</replaceable></term> <listitem> <para> - Allows you to specify printing options in the style of <command>\pset</command> - on the command line. Note that here you have to separate name and value with - an equal sign instead of a space. Thus to set the output format to LaTeX, you - could write <literal>-P format=latex</literal>. + Allows you to specify printing options in the style of + <command>\pset</command> on the command line. Note that here you + have to separate name and value with an equal sign instead of a + space. Thus to set the output format to LaTeX, you could write + <literal>-P format=latex</literal>. </para> </listitem> </varlistentry> @@ -1460,11 +1544,12 @@ Access permissions for database "test" <term>-q</term> <listitem> <para> - Specifies that <application>psql</application> should do its work quietly. - By default, it prints welcome messages and various informational output. - If this option is used, none of this happens. This is useful with the - <option>-c</option> option. Within <application>psql</application> you can - also set the <envar>QUIET</envar> variable to achieve the same effect. + Specifies that <application>psql</application> should do its work + quietly. By default, it prints welcome messages and various + informational output. If this option is used, none of this + happens. This is useful with the <option>-c</option> option. + Within <application>psql</application> you can also set the + <envar>QUIET</envar> variable to achieve the same effect. </para> </listitem> </varlistentry> @@ -1474,8 +1559,9 @@ Access permissions for database "test" <term>-R, --record-separator <replaceable class="parameter">separator</replaceable></term> <listitem> <para> - Use <replaceable class="parameter">separator</replaceable> as the record separator. - This is equivalent to the <command>\pset recordsep</command> command. + Use <replaceable class="parameter">separator</replaceable> as the + record separator. This is equivalent to the <command>\pset + recordsep</command> command. </para> </listitem> </varlistentry> @@ -1485,9 +1571,9 @@ Access permissions for database "test" <term>-s, --single-step</term> <listitem> <para> - Run in single-step mode. That means the user is prompted before each query - is sent to the backend, with the option to cancel execution as well. - Use this to debug scripts. + Run in single-step mode. That means the user is prompted before + each query is sent to the backend, with the option to cancel + execution as well. Use this to debug scripts. </para> </listitem> </varlistentry> @@ -1497,15 +1583,16 @@ Access permissions for database "test" <term>-S, --single-line</term> <listitem> <para> - Runs in single-line mode where a newline terminates a query, as a semicolon does. + Runs in single-line mode where a newline terminates a query, as a + semicolon does. </para> <note> <para> - This mode is provided for those who insist on it, but you are not necessarily - encouraged to use it. In particular, if you mix <acronym>SQL</acronym> and - meta-commands on a line the order of execution might not always be clear to - the inexperienced user. + This mode is provided for those who insist on it, but you are not + necessarily encouraged to use it. In particular, if you mix + <acronym>SQL</acronym> and meta-commands on a line the order of + execution might not always be clear to the inexperienced user. </para> </note> </listitem> @@ -1516,8 +1603,9 @@ Access permissions for database "test" <term>-t, --tuples-only</term> <listitem> <para> - Turn off printing of column names and result row count footers, etc. - It is completely equivalent to the <command>\t</command> meta-command. + Turn off printing of column names and result row count footers, + etc. It is completely equivalent to the <command>\t</command> + meta-command. </para> </listitem> </varlistentry> @@ -1527,8 +1615,9 @@ Access permissions for database "test" <term>-T, --table-attr <replaceable class="parameter">table_options</replaceable></term> <listitem> <para> - Allows you to specify options to be placed within the <acronym>HTML</acronym> - <sgmltag>table</sgmltag> tag. See <command>\pset</command> for details. + Allows you to specify options to be placed within the + <acronym>HTML</acronym> <sgmltag>table</sgmltag> tag. See + <command>\pset</command> for details. </para> </listitem> </varlistentry> @@ -1538,15 +1627,16 @@ Access permissions for database "test" <term>-u</term> <listitem> <para> - Makes <application>psql</application> prompt for the user name and password - before connecting to the database. + Makes <application>psql</application> prompt for the user name and + password before connecting to the database. </para> <para> - This option is deprecated, as it is conceptually flawed. (Prompting for - a non-default user name and prompting for a password because the - backend requires it are really two different things.) You are encouraged - to look at the <option>-U</option> and <option>-W</option> options instead. + This option is deprecated, as it is conceptually flawed. + (Prompting for a non-default user name and prompting for a + password because the backend requires it are really two different + things.) You are encouraged to look at the <option>-U</option> and + <option>-W</option> options instead. </para> </listitem> </varlistentry> @@ -1556,8 +1646,9 @@ Access permissions for database "test" <term>-U, --username <replaceable class="parameter">username</replaceable></term> <listitem> <para> - Connects to the database as the user <replaceable class="parameter">username</replaceable> - instead of the default. (You must have permission to do so, of course.) + Connects to the database as the user <replaceable + class="parameter">username</replaceable> instead of the default. + (You must have permission to do so, of course.) </para> </listitem> </varlistentry> @@ -1568,13 +1659,12 @@ Access permissions for database "test" <listitem> <para> Performs a variable assignment, like the <command>\set</command> - internal command. Note that you must separate name and value, - if any, by an equal sign on the command line. To unset a - variable, leave off the equal sign. To just set a variable - without a value, use the equal sign but leave off the value. - These assignments are done during a very early stage of - start-up, so variables reserved for internal purposes might get - overwritten later. + internal command. Note that you must separate name and value, if + any, by an equal sign on the command line. To unset a variable, + leave off the equal sign. To just set a variable without a value, + use the equal sign but leave off the value. These assignments are + done during a very early stage of start-up, so variables reserved + for internal purposes might get overwritten later. </para> </listitem> </varlistentry> @@ -1594,19 +1684,20 @@ Access permissions for database "test" <term>-W, --password</term> <listitem> <para> - Requests that <application>psql</application> should prompt for a password - before connecting to a database. This will remain set for the entire - session, even if you change the database connection with the meta-command - <command>\connect</command>. + Requests that <application>psql</application> should prompt for a + password before connecting to a database. This will remain set for + the entire session, even if you change the database connection + with the meta-command <command>\connect</command>. </para> <para> - In the current version, <application>psql</application> automatically issues a - password prompt whenever the backend requests password authentication. - Because this is currently based on a hack, the automatic - recognition might mysteriously fail, hence this option to force a prompt. - If no password prompt is issued and the backend requires password authentication - the connection attempt will fail. + In the current version, <application>psql</application> + automatically issues a password prompt whenever the backend + requests password authentication. Because this is currently based + on a hack, the automatic recognition might mysteriously fail, + hence this option to force a prompt. If no password prompt is + issued and the backend requires password authentication the + connection attempt will fail. </para> </listitem> </varlistentry> @@ -1616,8 +1707,8 @@ Access permissions for database "test" <term>-x, --expanded</term> <listitem> <para> - Turns on extended row format mode. This is equivalent to the command - <command>\x</command>. + Turns on extended row format mode. This is equivalent to the + command <command>\x</command>. </para> </listitem> </varlistentry> @@ -1637,7 +1728,8 @@ Access permissions for database "test" <term>-?, --help</term> <listitem> <para> - Shows help about <application>psql</application> command line arguments. + Shows help about <application>psql</application> command line + arguments. </para> </listitem> </varlistentry> @@ -1659,18 +1751,20 @@ Access permissions for database "test" <title id="APP-PSQL-variables-title">Variables</title> <para> - <application>psql</application> provides variable substitution features - similar to common Unix command shells. This feature is new and not very - sophisticated, yet, but there are plans to expand it in the future. - Variables are simply name/value - pairs, where the value can be any string of any length. To set variables, - use the <application>psql</application> meta-command <command>\set</command>: + <application>psql</application> provides variable substitution + features similar to common Unix command shells. This feature is new + and not very sophisticated, yet, but there are plans to expand it in + the future. Variables are simply name/value pairs, where the value + can be any string of any length. To set variables, use the + <application>psql</application> meta-command + <command>\set</command>: <programlisting> testdb=> <userinput>\set foo bar</userinput> </programlisting> - sets the variable <quote>foo</quote> to the value <quote>bar</quote>. To retrieve - the content of the variable, precede the name with a colon and use it - as the argument of any slash command: + sets the variable <quote>foo</quote> to the value + <quote>bar</quote>. To retrieve the content of the variable, precede + the name with a colon and use it as the argument of any slash + command: <programlisting> testdb=> <userinput>\echo :foo</userinput> bar @@ -1679,44 +1773,46 @@ bar <note> <para> - The arguments of <command>\set</command> are subject to the same substitution - rules as with other commands. Thus you can construct interesting references - such as <literal>\set :foo 'something'</literal> and get <quote>soft - links</quote> or <quote>variable variables</quote> of <productname>Perl</productname> - or <productname><acronym>PHP</acronym></productname> fame, respectively. - Unfortunately (or fortunately?), there is no way to do anything useful - with these constructs. On the - other hand, <literal>\set bar :foo</literal> is a perfectly valid way to copy - a variable. + The arguments of <command>\set</command> are subject to the same + substitution rules as with other commands. Thus you can construct + interesting references such as <literal>\set :foo + 'something'</literal> and get <quote>soft links</quote> or + <quote>variable variables</quote> of <productname>Perl</productname> + or <productname><acronym>PHP</acronym></productname> fame, + respectively. Unfortunately (or fortunately?), there is no way to do + anything useful with these constructs. On the other hand, + <literal>\set bar :foo</literal> is a perfectly valid way to copy a + variable. </para> </note> <para> - If you call <command>\set</command> without a second argument, the variable is simply - set, but has no value. To unset (or delete) a variable, use the command - <command>\unset</command>. + If you call <command>\set</command> without a second argument, the + variable is simply set, but has no value. To unset (or delete) a + variable, use the command <command>\unset</command>. </para> <para> - <application>psql</application>'s internal variable names can consist of - letters, numbers, and underscores in any order and any number of them. - A number of regular variables are treated specially by <application>psql</application>. - They indicate certain option settings that can be changed at run time - by altering the value of the variable or represent some state of the application. - Although you can use these - variables for any other purpose, this is not recommended, as the - program behavior might grow really strange really quickly. - By convention, all specially treated variables consist of all upper-case letters - (and possibly numbers and underscores). To ensure maximum compatibility in the - future, avoid such variables. - A list of all specially treated variables follows. + <application>psql</application>'s internal variable names can + consist of letters, numbers, and underscores in any order and any + number of them. A number of regular variables are treated specially + by <application>psql</application>. They indicate certain option + settings that can be changed at run time by altering the value of + the variable or represent some state of the application. Although + you can use these variables for any other purpose, this is not + recommended, as the program behavior might grow really strange + really quickly. By convention, all specially treated variables + consist of all upper-case letters (and possibly numbers and + underscores). To ensure maximum compatibility in the future, avoid + such variables. A list of all specially treated variables follows. <variablelist> <varlistentry> <term><envar>DBNAME</envar></term> <listitem> <para> - The name of the database you are currently connected to. This is set every time - you connect to a database (including program start-up), but can be unset. + The name of the database you are currently connected to. This is + set every time you connect to a database (including program + start-up), but can be unset. </para> </listitem> </varlistentry> @@ -1725,12 +1821,14 @@ bar <term><envar>ECHO</envar></term> <listitem> <para> - If set to <quote><literal>all</literal></quote>, all lines entered or from a script - are written to the standard output before they - are parsed or executed. To specify this on program start-up, use the switch - <option>-a</option>. If set to <quote><literal>queries</literal></quote>, - <application>psql</application> merely prints all queries as they are sent to the - backend. The option for this is <option>-e</option>. + If set to <quote><literal>all</literal></quote>, all lines + entered or from a script are written to the standard output + before they are parsed or executed. To specify this on program + start-up, use the switch <option>-a</option>. If set to + <quote><literal>queries</literal></quote>, + <application>psql</application> merely prints all queries as + they are sent to the backend. The option for this is + <option>-e</option>. </para> </listitem> </varlistentry> @@ -1739,11 +1837,13 @@ bar <term><envar>ECHO_HIDDEN</envar></term> <listitem> <para> - When this variable is set and a backslash command queries the database, the query - is first shown. This way you can study the <productname>PostgreSQL</productname> - internals and provide similar functionality in your own programs. If you set the - variable to the value <quote>noexec</quote>, the queries are just shown but are - not actually sent to the backend and executed. + When this variable is set and a backslash command queries the + database, the query is first shown. This way you can study the + <productname>PostgreSQL</productname> internals and provide + similar functionality in your own programs. If you set the + variable to the value <quote>noexec</quote>, the queries are + just shown but are not actually sent to the backend and + executed. </para> </listitem> </varlistentry> @@ -1752,8 +1852,8 @@ bar <term><envar>ENCODING</envar></term> <listitem> <para> - The current client multibyte encoding. If you are not set up to use - multibyte characters, this variable will always contain + The current client multibyte encoding. If you are not set up to + use multibyte characters, this variable will always contain <quote>SQL_ASCII</quote>. </para> </listitem> @@ -1763,16 +1863,18 @@ bar <term><envar>HISTCONTROL</envar></term> <listitem> <para> - If this variable is set to <literal>ignorespace</literal>, lines which begin with a - space are not entered into the history list. If set to a value of - <literal>ignoredups</literal>, lines matching the previous history line are not - entered. A value of <literal>ignoreboth</literal> combines the two - options. If unset, or if set to any other value than those above, all lines read - in interactive mode are saved on the history list. + If this variable is set to <literal>ignorespace</literal>, + lines which begin with a space are not entered into the history + list. If set to a value of <literal>ignoredups</literal>, lines + matching the previous history line are not entered. A value of + <literal>ignoreboth</literal> combines the two options. If + unset, or if set to any other value than those above, all lines + read in interactive mode are saved on the history list. </para> <note> <para> - This feature was shamelessly plagiarized from <application>bash</application>. + This feature was shamelessly plagiarized from + <application>bash</application>. </para> </note> </listitem> @@ -1782,12 +1884,13 @@ bar <term><envar>HISTSIZE</envar></term> <listitem> <para> - The number of commands to store in the command history. - The default value is 500. + The number of commands to store in the command history. The + default value is 500. </para> <note> <para> - This feature was shamelessly plagiarized from <application>bash</application>. + This feature was shamelessly plagiarized from + <application>bash</application>. </para> </note> </listitem> @@ -1797,8 +1900,9 @@ bar <term><envar>HOST</envar></term> <listitem> <para> - The database server host you are currently connected to. This is set every time - you connect to a database (including program start-up), but can be unset. + The database server host you are currently connected to. This is + set every time you connect to a database (including program + start-up), but can be unset. </para> </listitem> </varlistentry> @@ -1807,14 +1911,17 @@ bar <term><envar>IGNOREEOF</envar></term> <listitem> <para> - If unset, sending an EOF character (usually Control-D) to an interactive session of - <application>psql</application> will terminate the application. - If set to a numeric value, that many EOF characters are ignored before the application - terminates. If the variable is set but has no numeric value, the default is 10. + If unset, sending an EOF character (usually Control-D) to an + interactive session of <application>psql</application> will + terminate the application. If set to a numeric value, that many + EOF characters are ignored before the application terminates. + If the variable is set but has no numeric value, the default is + 10. </para> <note> <para> - This feature was shamelessly plagiarized from <application>bash</application>. + This feature was shamelessly plagiarized from + <application>bash</application>. </para> </note> </listitem> @@ -1824,10 +1931,11 @@ bar <term><envar>LASTOID</envar></term> <listitem> <para> - The value of the last affected oid, as returned from an <command>INSERT</command> - or <command>lo_insert</command> command. This variable is only guaranteed to be - valid until after the result of the next <acronym>SQL</acronym> command has been - displayed. + The value of the last affected oid, as returned from an + <command>INSERT</command> or <command>lo_insert</command> + command. This variable is only guaranteed to be valid until + after the result of the next <acronym>SQL</acronym> command has + been displayed. </para> </listitem> </varlistentry> @@ -1836,29 +1944,32 @@ bar <term><envar>LO_TRANSACTION</envar></term> <listitem> <para> - If you use the <productname>PostgreSQL</productname> large object - interface to specially store data that does not fit into one tuple, - all the operations must be contained in a transaction block. (See the - documentation of the large object interface for more information.) Since - <application>psql</application> has no way to tell if you already - have a transaction in progress when you call one of its internal - commands (<command>\lo_export</command>, <command>\lo_import</command>, - <command>\lo_unlink</command>) it must take some arbitrary action. This - action could either be to roll back any transaction that might already - be in progress, or to commit any such transaction, or to do nothing at - all. In the last case you must provide your own - <command>BEGIN TRANSACTION</command>/<command>COMMIT</command> block or - the results will be unpredictable (usually resulting in the desired - action's not being performed in any case). + If you use the <productname>PostgreSQL</productname> large + object interface to specially store data that does not fit into + one tuple, all the operations must be contained in a transaction + block. (See the documentation of the large object interface for + more information.) Since <application>psql</application> has no + way to tell if you already have a transaction in progress when + you call one of its internal commands + (<command>\lo_export</command>, <command>\lo_import</command>, + <command>\lo_unlink</command>) it must take some arbitrary + action. This action could either be to roll back any transaction + that might already be in progress, or to commit any such + transaction, or to do nothing at all. In the last case you must + provide your own <command>BEGIN + TRANSACTION</command>/<command>COMMIT</command> block or the + results will be unpredictable (usually resulting in the desired + action's not being performed in any case). </para> <para> To choose what you want to do you set this variable to one of - <quote>rollback</quote>, <quote>commit</quote>, or <quote>nothing</quote>. - The default is to roll back the transaction. If you just want to load one - or a few objects this is fine. However, if you intend to transfer many - large objects, it might be advisable to provide one explicit transaction - block around all commands. + <quote>rollback</quote>, <quote>commit</quote>, or + <quote>nothing</quote>. The default is to roll back the + transaction. If you just want to load one or a few objects this + is fine. However, if you intend to transfer many large objects, + it might be advisable to provide one explicit transaction block + around all commands. </para> </listitem> </varlistentry> @@ -1867,16 +1978,18 @@ bar <term><envar>ON_ERROR_STOP</envar></term> <listitem> <para> - By default, if non-interactive scripts encounter an error, such as a - malformed <acronym>SQL</acronym> query or internal meta-command, - processing continues. This has been the traditional behavior of - <application>psql</application> but it is sometimes not desirable. If this variable - is set, script processing will immediately terminate. If the script was - called from another script it will terminate in the same fashion. - If the outermost script was not called from an interactive <application>psql</application> - session but rather using the <option>-f</option> option, <application>psql</application> - will return error code 3, to distinguish this case from fatal - error conditions (error code 1). + By default, if non-interactive scripts encounter an error, such + as a malformed <acronym>SQL</acronym> query or internal + meta-command, processing continues. This has been the + traditional behavior of <application>psql</application> but it + is sometimes not desirable. If this variable is set, script + processing will immediately terminate. If the script was called + from another script it will terminate in the same fashion. If + the outermost script was not called from an interactive + <application>psql</application> session but rather using the + <option>-f</option> option, <application>psql</application> will + return error code 3, to distinguish this case from fatal error + conditions (error code 1). </para> </listitem> </varlistentry> @@ -1885,8 +1998,9 @@ bar <term><envar>PORT</envar></term> <listitem> <para> - The database server port to which you are currently connected. This is set every time - you connect to a database (including program start-up), but can be unset. + The database server port to which you are currently connected. + This is set every time you connect to a database (including + program start-up), but can be unset. </para> </listitem> </varlistentry> @@ -1895,10 +2009,10 @@ bar <term><envar>PROMPT1</envar>, <envar>PROMPT2</envar>, <envar>PROMPT3</envar></term> <listitem> <para> - These specify what the prompt <application>psql</application> issues is - supposed to look like. See - <quote><xref linkend="APP-PSQL-prompting" endterm="APP-PSQL-prompting-title"></quote> - below. + These specify what the prompt <application>psql</application> + issues is supposed to look like. See <quote><xref + linkend="APP-PSQL-prompting" + endterm="APP-PSQL-prompting-title"></quote> below. </para> </listitem> </varlistentry> @@ -1907,8 +2021,9 @@ bar <term><envar>QUIET</envar></term> <listitem> <para> - This variable is equivalent to the command line option <option>-q</option>. - It is probably not too useful in interactive mode. + This variable is equivalent to the command line option + <option>-q</option>. It is probably not too useful in + interactive mode. </para> </listitem> </varlistentry> @@ -1917,8 +2032,8 @@ bar <term><envar>SINGLELINE</envar></term> <listitem> <para> - This variable is set by the command line option <option>-S</option>. You - can unset or reset it at run time. + This variable is set by the command line option + <option>-S</option>. You can unset or reset it at run time. </para> </listitem> </varlistentry> @@ -1927,7 +2042,8 @@ bar <term><envar>SINGLESTEP</envar></term> <listitem> <para> - This variable is equivalent to the command line option <option>-s</option>. + This variable is equivalent to the command line option + <option>-s</option>. </para> </listitem> </varlistentry> @@ -1936,8 +2052,9 @@ bar <term><envar>USER</envar></term> <listitem> <para> - The database user you are currently connected as. This is set every time - you connect to a database (including program start-up), but can be unset. + The database user you are currently connected as. This is set + every time you connect to a database (including program + start-up), but can be unset. </para> </listitem> </varlistentry> @@ -1953,27 +2070,28 @@ bar <title id="APP-PSQL-sql-interpol-title"><acronym>SQL</acronym> Interpolation</title> <para> - An additional useful feature of <application>psql</application> variables - is that you can substitute (<quote>interpolate</quote>) them into - regular <acronym>SQL</acronym> statements. The syntax for this is again to prepend - the variable name with a colon (<literal>:</literal>). + An additional useful feature of <application>psql</application> + variables is that you can substitute (<quote>interpolate</quote>) + them into regular <acronym>SQL</acronym> statements. The syntax for + this is again to prepend the variable name with a colon + (<literal>:</literal>). <programlisting> testdb=> <userinput>\set foo 'my_table'</userinput> testdb=> <userinput>SELECT * FROM :foo;</userinput> </programlisting> - would then query the table <literal>my_table</literal>. The value of the - variable is copied literally, so it can even contain unbalanced quotes or - backslash commands. You must make sure that it makes sense where you put it. - Variable interpolation will not be performed into quoted <acronym>SQL</acronym> - entities. + would then query the table <literal>my_table</literal>. The value of + the variable is copied literally, so it can even contain unbalanced + quotes or backslash commands. You must make sure that it makes sense + where you put it. Variable interpolation will not be performed into + quoted <acronym>SQL</acronym> entities. </para> <para> - A popular application of this facility is to refer to the last inserted - <acronym>OID</acronym> in subsequent statements to build a foreign key - scenario. - Another possible use of this mechanism is to copy the contents of a file - into a field. First load the file into a variable and then proceed as above. + A popular application of this facility is to refer to the last + inserted <acronym>OID</acronym> in subsequent statements to build a + foreign key scenario. Another possible use of this mechanism is to + copy the contents of a file into a field. First load the file into a + variable and then proceed as above. <programlisting> testdb=> <userinput>\set content '\'' `cat my_file.txt` '\''</userinput> testdb=> <userinput>INSERT INTO my_table VALUES (:content);</userinput> @@ -1985,28 +2103,32 @@ testdb=> <userinput>INSERT INTO my_table VALUES (:content);</userinput> <programlisting> testdb=> <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" < my_file.txt` '\''</userinput> </programlisting> - Observe the correct number of backslashes (6)! You can resolve it this way: After - <application>psql</application> has parsed this line, it passes - <literal>sed -e "s/'/\\\'/g" < my_file.txt</literal> to the shell. The shell - will do its own thing inside the double quotes and execute <filename>sed</filename> - with the arguments <literal>-e</literal> and <literal>s/'/\\'/g</literal>. - When <application>sed</application> parses this it will replace the two - backslashes with a single one and then do the substitution. Perhaps at - one point you thought it was great that all Unix commands use the same - escape character. And this is ignoring the fact that you might have to - escape all backslashes as well because <acronym>SQL</acronym> text constants - are also subject to certain interpretations. In that case you might - be better off preparing the file externally. + Observe the correct number of backslashes (6)! You can resolve it + this way: After <application>psql</application> has parsed this + line, it passes <literal>sed -e "s/'/\\\'/g" < my_file.txt</literal> + to the shell. The shell will do its own thing inside the double + quotes and execute <filename>sed</filename> with the arguments + <literal>-e</literal> and <literal>s/'/\\'/g</literal>. When + <application>sed</application> parses this it will replace the two + backslashes with a single one and then do the substitution. Perhaps + at one point you thought it was great that all Unix commands use the + same escape character. And this is ignoring the fact that you might + have to escape all backslashes as well because + <acronym>SQL</acronym> text constants are also subject to certain + interpretations. In that case you might be better off preparing the + file externally. </para> <para> - Since colons may legally appear in queries, the following rule applies: If the variable - is not set, the character sequence <quote>colon+name</quote> is not changed. In any - case you can escape a colon with a backslash to protect it from interpretation. - (The colon syntax for variables is standard <acronym>SQL</acronym> for embedded - query languages, such as <application>ecpg</application>. The colon syntax for - array slices and type casts are <productname>PostgreSQL</productname> extensions, - hence the conflict.) + Since colons may legally appear in queries, the following rule + applies: If the variable is not set, the character sequence + <quote>colon+name</quote> is not changed. In any case you can escape + a colon with a backslash to protect it from interpretation. (The + colon syntax for variables is standard <acronym>SQL</acronym> for + embedded query languages, such as <application>ecpg</application>. + The colon syntax for array slices and type casts are + <productname>PostgreSQL</productname> extensions, hence the + conflict.) </para> </refsect2> @@ -2016,21 +2138,24 @@ testdb=> <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" < my_file.txt` '\' <title id="APP-PSQL-prompting-title">Prompting</title> <para> - The prompts <application>psql</application> issues can be customized to - your preference. The three variables <envar>PROMPT1</envar>, <envar>PROMPT2</envar>, - and <envar>PROMPT3</envar> contain strings and special escape sequences - that describe the appearance of the prompt. Prompt 1 is the normal prompt - that is issued when <application>psql</application> requests a new query. - Prompt 2 is issued when more input is expected during query input because - the query was not terminated with a semicolon or a quote was not closed. - Prompt 3 is issued when you run an <acronym>SQL</acronym> <command>COPY</command> - command and you are expected to type in the tuples on the terminal. + The prompts <application>psql</application> issues can be customized + to your preference. The three variables <envar>PROMPT1</envar>, + <envar>PROMPT2</envar>, and <envar>PROMPT3</envar> contain strings + and special escape sequences that describe the appearance of the + prompt. Prompt 1 is the normal prompt that is issued when + <application>psql</application> requests a new query. Prompt 2 is + issued when more input is expected during query input because the + query was not terminated with a semicolon or a quote was not closed. + Prompt 3 is issued when you run an <acronym>SQL</acronym> + <command>COPY</command> command and you are expected to type in the + tuples on the terminal. </para> <para> - The value of the respective prompt variable is printed literally, except where - a percent sign (<quote>%</quote>) is encountered. Depending on the next - character, certain other text is substituted instead. Defined substitutions are: + The value of the respective prompt variable is printed literally, + except where a percent sign (<quote>%</quote>) is encountered. + Depending on the next character, certain other text is substituted + instead. Defined substitutions are: <variablelist> <varlistentry> @@ -2038,10 +2163,10 @@ testdb=> <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" < my_file.txt` '\' <listitem> <para> The full host name (with domain name) of the database server, - or <literal>[local]</literal> if the connection is over a - Unix domain socket, or - <literal>[local:<replaceable>/dir/name</replaceable>]</literal>, - if the Unix domain socket is not at the compiled in default + or <literal>[local]</literal> if the connection is over a Unix + domain socket, or + <literal>[local:<replaceable>/dir/name</replaceable>]</literal + >, if the Unix domain socket is not at the compiled in default location. </para> </listitem> @@ -2052,8 +2177,8 @@ testdb=> <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" < my_file.txt` '\' <listitem> <para> The host name of the database server, truncated after the - first dot, or <literal>[local]</literal> if the connection - is over a Unix domain socket. + first dot, or <literal>[local]</literal> if the connection is + over a Unix domain socket. </para> </listitem> </varlistentry> @@ -2088,58 +2213,72 @@ testdb=> <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" < my_file.txt` '\' <varlistentry> <term><literal>%R</literal></term> - <listitem><para> - In prompt 1 normally <quote>=</quote>, but <quote>^</quote> if in single-line - mode, and <quote>!</quote> if the session is disconnected from the database - (which can happen if <command>\connect</command> fails). In prompt 2 the - sequence is replaced by <quote>-</quote>, <quote>*</quote>, a single quote, - or a double quote, depending on whether <application>psql</application> - expects more input because the query wasn't terminated yet, because you are - inside a <literal>/* ... */</literal> comment, or because you are inside - a quote. In prompt 3 the sequence doesn't resolve to anything.</para> + <listitem> + <para> + In prompt 1 normally <quote>=</quote>, but <quote>^</quote> if + in single-line mode, and <quote>!</quote> if the session is + disconnected from the database (which can happen if + <command>\connect</command> fails). In prompt 2 the sequence is + replaced by <quote>-</quote>, <quote>*</quote>, a single quote, + or a double quote, depending on whether + <application>psql</application> expects more input because the + query wasn't terminated yet, because you are inside a + <literal>/* ... */</literal> comment, or because you are inside + a quote. In prompt 3 the sequence doesn't resolve to anything. + </para> </listitem> </varlistentry> <varlistentry> <term><literal>%</literal><replaceable class="parameter">digits</replaceable></term> - <listitem><para> - If <replaceable class="parameter">digits</replaceable> starts with - <literal>0x</literal> the rest of the characters are interpreted as a - hexadecimal digit and the character with the corresponding code is - substituted. If the first digit is <literal>0</literal> the characters are - interpreted as on octal number and the corresponding character is - substituted. Otherwise a decimal number is assumed.</para> + <listitem> + <para> + If <replaceable class="parameter">digits</replaceable> starts + with <literal>0x</literal> the rest of the characters are + interpreted as a hexadecimal digit and the character with the + corresponding code is substituted. If the first digit is + <literal>0</literal> the characters are interpreted as on octal + number and the corresponding character is substituted. Otherwise + a decimal number is assumed. + </para> </listitem> </varlistentry> <varlistentry> <term><literal>%:</literal><replaceable class="parameter">name</replaceable><literal>:</literal></term> - <listitem><para> - The value of the <application>psql</application>, variable <replaceable - class="parameter">name</replaceable>. See the section - <quote><xref linkend="APP-PSQL-variables" endterm="APP-PSQL-variables-title"></quote> - for details.</para> + <listitem> + <para> + The value of the <application>psql</application>, variable + <replaceable class="parameter">name</replaceable>. See the + section <quote><xref linkend="APP-PSQL-variables" + endterm="APP-PSQL-variables-title"></quote> for details. + </para> </listitem> </varlistentry> <varlistentry> <term><literal>%`</literal><replaceable class="parameter">command</replaceable><literal>`</literal></term> - <listitem><para> - The output of <replaceable class="parameter">command</replaceable>, similar to - ordinary <quote>back-tick</quote> substitution.</para> + <listitem> + <para> + The output of <replaceable + class="parameter">command</replaceable>, similar to ordinary + <quote>back-tick</quote> substitution. + </para> </listitem> </varlistentry> </variablelist> - To insert a percent sign into your prompt, write <literal>%%</literal>. The - default prompts are equivalent to <literal>'%/%R%# '</literal> for prompts 1 - and 2, and <literal>'>> '</literal> for prompt 3. + To insert a percent sign into your prompt, write + <literal>%%</literal>. The default prompts are equivalent to + <literal>'%/%R%# '</literal> for prompts 1 and 2, and + <literal>'>> '</literal> for prompt 3. </para> <note> <para> - This feature was shamelessly plagiarized from <application>tcsh</application>. + This feature was shamelessly plagiarized from + <application>tcsh</application>. </para> </note> @@ -2149,18 +2288,19 @@ testdb=> <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" < my_file.txt` '\' <title id="APP-PSQL-MISC-title">Miscellaneous</title> <para> - <application>psql</application> returns 0 to the shell if it finished normally, - 1 if a fatal error of its own (out of memory, file not found) occurs, 2 if the - connection to the backend went bad and the session is not interactive, and 3 if - an error occurred in a script and the variable <envar>ON_ERROR_STOP</envar> was - set. + <application>psql</application> returns 0 to the shell if it + finished normally, 1 if a fatal error of its own (out of memory, + file not found) occurs, 2 if the connection to the backend went bad + and the session is not interactive, and 3 if an error occurred in a + script and the variable <envar>ON_ERROR_STOP</envar> was set. </para> <para> - Before starting up, <application>psql</application> attempts - to read and execute commands from the file <filename>$HOME/.psqlrc</filename>. It - could be used to set up the client or the server to taste (using the <command>\set - </command> and <command>SET</command> commands). + Before starting up, <application>psql</application> attempts to read + and execute commands from the file + <filename>$HOME/.psqlrc</filename>. It could be used to set up the + client or the server to taste (using the <command>\set </command> + and <command>SET</command> commands). </para> </refsect2> @@ -2169,46 +2309,52 @@ testdb=> <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" < my_file.txt` '\' <title><acronym>GNU</acronym> readline</title> <para> - <application>psql</application> supports the readline and history libraries for - convenient line editing and retrieval. The command history is stored in a file - named <filename>.psql_history</filename> in your home directory and is reloaded when - <application>psql</application> starts up. - Tab-completion is also supported, although - the completion logic makes no claim to be an <acronym>SQL</acronym> parser. - When available, <application>psql</application> is automatically built to use these - features. If for some reason you do not like the tab completion, you can turn if off - by putting this in a file named <filename>.inputrc</filename> in your - home directory: + <application>psql</application> supports the readline and history + libraries for convenient line editing and retrieval. The command + history is stored in a file named <filename>.psql_history</filename> + in your home directory and is reloaded when + <application>psql</application> starts up. Tab-completion is also + supported, although the completion logic makes no claim to be an + <acronym>SQL</acronym> parser. When available, + <application>psql</application> is automatically built to use these + features. If for some reason you do not like the tab completion, you + can turn if off by putting this in a file named + <filename>.inputrc</filename> in your home directory: <programlisting> $if psql set disable-completion on $endif </programlisting> - (This is not a <application>psql</application> but a <application>readline</application> - feature. Read its documentation for further details.) + (This is not a <application>psql</application> but a + <application>readline</application> feature. Read its documentation + for further details.) </para> <para> - If you have the readline library installed but <application>psql</application> - does not seem to use it, you must make sure that <productname>PostgreSQL</productname>'s - top-level <filename>configure</filename> script finds it. <filename>configure</filename> - needs to find both the library <filename>libreadline.a</filename> - (or a shared library equivalent) - <emphasis>and</emphasis> the header files <filename>readline.h</filename> and - <filename>history.h</filename> (or <filename>readline/readline.h</filename> and - <filename>readline/history.h</filename>) in appropriate directories. If - you have the library and header files installed in an obscure place you - must tell <filename>configure</filename> about them, for example: + If you have the readline library installed but + <application>psql</application> does not seem to use it, you must + make sure that <productname>PostgreSQL</productname>'s top-level + <filename>configure</filename> script finds it. + <filename>configure</filename> needs to find both the library + <filename>libreadline.a</filename> (or a shared library equivalent) + <emphasis>and</emphasis> the header files + <filename>readline.h</filename> and <filename>history.h</filename> + (or <filename>readline/readline.h</filename> and + <filename>readline/history.h</filename>) in appropriate directories. + If you have the library and header files installed in an obscure + place you must tell <filename>configure</filename> about them, for + example: <programlisting> $ ./configure --with-includes=/opt/gnu/include --with-libs=/opt/gnu/lib ... </programlisting> - Then you have to recompile <application>psql</application> (not necessarily - the entire code tree). + Then you have to recompile <application>psql</application> (not + necessarily the entire code tree). </para> <para> - The <acronym>GNU</acronym> readline library can be obtained from the <acronym>GNU</acronym> - project's <acronym>FTP</acronym> server at <ulink URL="ftp://ftp.gnu.org">ftp://ftp.gnu.org</ulink>. + The <acronym>GNU</acronym> readline library can be obtained from the + <acronym>GNU</acronym> project's <acronym>FTP</acronym> server at + <ulink URL="ftp://ftp.gnu.org">ftp://ftp.gnu.org</ulink>. </para> </refsect2> @@ -2222,16 +2368,17 @@ $ ./configure --with-includes=/opt/gnu/include --with-libs=/opt/gnu/lib ... <note> <para> - This section only shows a few examples specific to <application>psql</application>. - If you want to learn <acronym>SQL</acronym> or get familiar with - <productname>PostgreSQL</productname>, you might wish to read the Tutorial that - is included in the distribution. + This section only shows a few examples specific to + <application>psql</application>. If you want to learn + <acronym>SQL</acronym> or get familiar with + <productname>PostgreSQL</productname>, you might wish to read the + Tutorial that is included in the distribution. </para> </note> <para> - The first example shows how to spread a query over several lines of input. - Notice the changing prompt: + The first example shows how to spread a query over several lines of + input. Notice the changing prompt: <programlisting> testdb=> <userinput>CREATE TABLE my_table (</userinput> testdb(> <userinput> first integer not null default 0,</userinput> @@ -2255,7 +2402,8 @@ testdb=> <userinput>\d my_table</userinput> testdb=> <userinput>\set PROMPT1 '%n@%m %~%R%# '</userinput> peter@localhost testdb=> </programlisting> - Let's assume you have filled the table with data and want to take a look at it: + Let's assume you have filled the table with data and want to take a + look at it: <programlisting> peter@localhost testdb=> SELECT * FROM my_table; first | second @@ -2267,8 +2415,8 @@ peter@localhost testdb=> SELECT * FROM my_table; (4 rows) </programlisting> - You can make this table look differently by using the <command>\pset</command> - command: + You can make this table look differently by using the + <command>\pset</command> command: <programlisting> peter@localhost testdb=> <userinput>\pset border 2</userinput> Border style is 2. @@ -2346,11 +2494,12 @@ second | four <itemizedlist> <listitem> <para> - In some earlier life <application>psql</application> allowed the first - argument to start directly after the (single-letter) command. For - compatibility this is still supported to some extent but I am not - going to explain the details here as this use is discouraged. But - if you get strange messages, keep this in mind. For example + In some earlier life <application>psql</application> allowed the + first argument to start directly after the (single-letter) + command. For compatibility this is still supported to some extent + but I am not going to explain the details here as this use is + discouraged. But if you get strange messages, keep this in mind. + For example <programlisting> testdb=> <userinput>\foo</userinput> Field separator is "oo", @@ -2361,18 +2510,20 @@ Field separator is "oo", <listitem> <para> - <application>psql</application> only works smoothly with servers of the - same version. That does not mean other combinations will fail outright, - but subtle and not-so-subtle problems might come up. + <application>psql</application> only works smoothly with servers + of the same version. That does not mean other combinations will + fail outright, but subtle and not-so-subtle problems might come + up. </para> </listitem> <listitem> <para> - Pressing Control-C during a <quote>copy in</quote> (data sent to the - server) doesn't show the most ideal of behaviors. If you get a message - such as <quote>COPY state must be terminated first</quote>, - simply reset the connection by entering <literal>\c - -</literal>. + Pressing Control-C during a <quote>copy in</quote> (data sent to + the server) doesn't show the most ideal of behaviors. If you get a + message such as <quote>COPY state must be terminated + first</quote>, simply reset the connection by entering <literal>\c + - -</literal>. </para> </listitem> |