mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-07 19:47:50 +08:00
Fix documentation of psql's ECHO all mode.
"ECHO all" is ignored for interactive input, and has been for a very long time, though possibly not for as long as the documentation has claimed the opposite. Fix that, and also note that empty lines aren't echoed, which while dubious is another longstanding behavior (it's embedded in our regression test files for one thing). Per bug #12721 from Hans Ginzel. In HEAD, also improve the code comments in this area, and suppress an unnecessary fflush(stdout) when we're not echoing. That would likely be safe to back-patch, but I'll not risk it mere hours before a release wrap.
This commit is contained in:
parent
77e9125e84
commit
b7d254c079
@ -53,8 +53,8 @@ PostgreSQL documentation
|
||||
<term><option>--echo-all</></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Print all input lines to standard output as they are read. This is more
|
||||
useful for script processing than interactive mode. This is
|
||||
Print all nonempty input lines to standard output as they are read.
|
||||
(This does not apply to lines read interactively.) This is
|
||||
equivalent to setting the variable <varname>ECHO</varname> to
|
||||
<literal>all</literal>.
|
||||
</para>
|
||||
@ -2863,14 +2863,14 @@ bar
|
||||
<term><varname>ECHO</varname></term>
|
||||
<listitem>
|
||||
<para>
|
||||
If set to <literal>all</literal>, all lines
|
||||
entered from the keyboard or from a script are written to the standard output
|
||||
before they are parsed or executed. To select this behavior on program
|
||||
If set to <literal>all</literal>, all nonempty input lines are printed
|
||||
to standard output as they are read. (This does not apply to lines
|
||||
read interactively.) To select this behavior on program
|
||||
start-up, use the switch <option>-a</option>. If set to
|
||||
<literal>queries</literal>,
|
||||
<application>psql</application> merely prints all queries as
|
||||
they are sent to the server. The switch for this is
|
||||
<option>-e</option>. If set to <literal>errors</literal> then only
|
||||
<application>psql</application> prints each query to standard output
|
||||
as it is sent to the server. The switch for this is
|
||||
<option>-e</option>. If set to <literal>errors</literal>, then only
|
||||
failed queries are displayed on standard error output. The switch
|
||||
for this is <option>-b</option>. If unset, or if set to
|
||||
<literal>none</literal> (or any other value than those above) then
|
||||
|
@ -187,7 +187,7 @@ MainLoop(FILE *source)
|
||||
break;
|
||||
}
|
||||
|
||||
/* nothing left on line? then ignore */
|
||||
/* no further processing of empty lines, unless within a literal */
|
||||
if (line[0] == '\0' && !psql_scan_in_quote(scan_state))
|
||||
{
|
||||
free(line);
|
||||
@ -211,10 +211,12 @@ MainLoop(FILE *source)
|
||||
continue;
|
||||
}
|
||||
|
||||
/* echo back if flag is set */
|
||||
/* echo back if flag is set, unless interactive */
|
||||
if (pset.echo == PSQL_ECHO_ALL && !pset.cur_cmd_interactive)
|
||||
{
|
||||
puts(line);
|
||||
fflush(stdout);
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
/* insert newlines into query buffer between source lines */
|
||||
if (query_buf->len > 0)
|
||||
|
Loading…
Reference in New Issue
Block a user