Re: pipelining in psql, commit 41625ab - Mailing list pgsql-hackers
| From | Michael Paquier |
|---|---|
| Subject | Re: pipelining in psql, commit 41625ab |
| Date | |
| Msg-id | Z__e8hqB0_kkjowO@paquier.xyz Whole thread Raw |
| In response to | pipelining in psql, commit 41625ab (Noah Misch <noah@leadboat.com>) |
| Responses |
Re: pipelining in psql, commit 41625ab
|
| List | pgsql-hackers |
On Tue, Apr 15, 2025 at 02:34:50PM -0700, Noah Misch wrote:
> On Fri, Feb 21, 2025 at 11:33:41AM +0900, Michael Paquier wrote:
> commit 41625ab wrote:
>> * \syncpipeline queues a synchronisation request, without flushing the
>> commands to the server, equivalent of PQsendPipelineSync().
>>
> libpq has both PQpipelineSync() and PQsendPipelineSync(), so I find it odd
> that the psql command for PQsendPipelineSync() is \syncpipeline. I would have
> expected the word "send" somewhere in its name. That said, maybe having
> PQpipelineSync() was a mistake, since I think it's just PQsendPipelineSync() +
> PQflush(). In that light, it's reasonable not to spread the extra "send" word
> into psql. \syncpipeline is fine with me, but it's worth others taking a
> second look.
At this stage, PQpipelineSync() is just around for compatibility
purposes, we cannot remove it and I don't see recommending it either.
It is true that \syncpipeline does not map clearly with the fact that
we're just calling PQsendPipelineSync() under the hood.
>
>> + pg_log_error("\\getresults: invalid number of requested results");
>> + return PSQL_CMD_SKIP_LINE;
>
> This should be PSQL_CMD_ERROR. That matters under ON_ERROR_STOP=1.
Yes, good catch. Will fix.
>> --- a/src/bin/psql/help.c
>> +++ b/src/bin/psql/help.c
>> @@ -167,15 +167,22 @@ slashUsage(unsigned short int pager)
>> HELP0(" \\close STMT_NAME close an existing prepared statement\n");
>> HELP0(" \\copyright show PostgreSQL usage and distribution terms\n");
>> HELP0(" \\crosstabview [COLUMNS] execute query and display result in crosstab\n");
>> + HELP0(" \\endpipeline exit pipeline mode\n");
>> HELP0(" \\errverbose show most recent error message at maximum verbosity\n");
>> + HELP0(" \\flush push unsent data to the server\n");
>> + HELP0(" \\flushrequest send a flushrequest command\n");
>
> protocol.sgml calls it a "Flush command".
For \flushrequest, how about "send a request to the server to flush
its output buffer" and for \flush "flush output data to the server",
mapping more with the libpq desctiptions?
> General
> \bind [PARAM]... set query parameters
> \copyright show PostgreSQL usage and distribution terms
> \crosstabview [COLUMNS] execute query and display result in crosstab
> \errverbose show most recent error message at maximum verbosity
> \g [(OPTIONS)] [FILE] execute query (and send result to file or |pipe);
> \g with no arguments is equivalent to a semicolon
> \gdesc describe result of query, without executing it
> \gexec execute query, then execute each value in its result
> \gset [PREFIX] execute query and store result in psql variables
> \gx [(OPTIONS)] [FILE] as \g, but forces expanded output mode
> \q quit psql
> \watch [[i=]SEC] [c=N] [m=MIN]
> execute query every SEC seconds, up to N times,
> stop if less than MIN rows are returned
>
> v18 has raised that to 26 lines via $SUBJECT and other additions. I think a
> new "Extended Query Protocol" section should house \bind and all the v18
> additions. Beginners should ignore the new section. The section may as well
> appear last. What do you think?
At this stage, most of the bloat of the general section is caused by
the extended protocol commands, so I like your suggestion of a new
section with a split from General.
--
Michael
Attachment
pgsql-hackers by date: