Docs: improve description of psql's %R prompt escape sequence.

Dilian Palauzov pointed out in bug #14201 that the docs failed to mention
the possibility of %R producing '(' due to an unmatched parenthesis.

He proposed just adding that in the same style as the other options were
listed; but it seemed to me that the sentence was already nearly
unintelligible, so I rewrote it a bit more extensively.

Report: <20160619121113.5789.68274@wrigleys.postgresql.org>
This commit is contained in:
Tom Lane 2016-06-19 13:11:40 -04:00
parent 6fce92a7d7
commit a3eb19ba4a

View File

@ -3294,11 +3294,12 @@ testdb=&gt; <userinput>INSERT INTO my_table VALUES (:'content');</userinput>
and special escape sequences that describe the appearance of the and special escape sequences that describe the appearance of the
prompt. Prompt 1 is the normal prompt that is issued when prompt. Prompt 1 is the normal prompt that is issued when
<application>psql</application> requests a new command. Prompt 2 is <application>psql</application> requests a new command. Prompt 2 is
issued when more input is expected during command input because the issued when more input is expected during command entry, for example
command was not terminated with a semicolon or a quote was not closed. because the command was not terminated with a semicolon or a quote
Prompt 3 is issued when you run an <acronym>SQL</acronym> was not closed.
<command>COPY</command> command and you are expected to type in the Prompt 3 is issued when you are running an <acronym>SQL</acronym>
row values on the terminal. <command>COPY FROM STDIN</command> command and you need to type in
a row value on the terminal.
</para> </para>
<para> <para>
@ -3378,17 +3379,20 @@ testdb=&gt; <userinput>INSERT INTO my_table VALUES (:'content');</userinput>
<term><literal>%R</literal></term> <term><literal>%R</literal></term>
<listitem> <listitem>
<para> <para>
In prompt 1 normally <literal>=</literal>, but <literal>^</literal> if In prompt 1 normally <literal>=</literal>,
in single-line mode, and <literal>!</literal> if the session is but <literal>^</literal> if in single-line mode,
disconnected from the database (which can happen if or <literal>!</literal> if the session is disconnected from the
<command>\connect</command> fails). In prompt 2 the sequence is database (which can happen if <command>\connect</command> fails).
replaced by <literal>-</literal>, <literal>*</literal>, a single quote, In prompt 2 <literal>%R</literal> is replaced by a character that
a double quote, or a dollar sign, depending on whether depends on why <application>psql</application> expects more input:
<application>psql</application> expects more input because the <literal>-</literal> if the command simply wasn't terminated yet,
command wasn't terminated yet, because you are inside a but <literal>*</literal> if there is an unfinished
<literal>/* ... */</literal> comment, or because you are inside <literal>/* ... */</literal> comment,
a quoted or dollar-escaped string. In prompt 3 the sequence doesn't a single quote if there is an unfinished quoted string,
produce anything. a double quote if there is an unfinished quoted identifier,
a dollar sign if there is an unfinished dollar-quoted string,
or <literal>(</literal> if there is an unmatched left parenthesis.
In prompt 3 <literal>%R</literal> doesn't produce anything.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>