mirror of
https://github.com/postgres/postgres.git
synced 2025-06-26 12:21:12 +03:00
psql: Rename meta-command \close to \close_prepared
\close has been introduced in d55322b0da
to be able to close a
prepared statement using the extended protocol in psql. Per discussion,
the name "close" is ambiguous. At the SQL level, CLOSE is used to close
a cursor. At protocol level, the close message can be used to either
close a statement or a portal.
This patch renames \close to \close_prepared to avoid any ambiguity and
make it clear that this is used to close a prepared statement. This new
name has been chosen based on the feedback from the author and the
reviewers.
Author: Anthonin Bonnefoy <anthonin.bonnefoy@datadoghq.com>
Reviewed-by: Peter Eisentraut <peter@eisentraut.org>
Reviewed-by: Jelte Fennema-Nio <postgres@jeltef.nl>
Discussion: https://postgr.es/m/3e694442-0df5-4f92-a08f-c5d4c4346b85@eisentraut.org
This commit is contained in:
@ -1067,8 +1067,8 @@ INSERT INTO tbls1 VALUES ($1, $2) \parse stmt1
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="app-psql-meta-command-close">
|
||||
<term><literal>\close</literal> <replaceable class="parameter">prepared_statement_name</replaceable></term>
|
||||
<varlistentry id="app-psql-meta-command-close-prepared">
|
||||
<term><literal>\close_prepared</literal> <replaceable class="parameter">prepared_statement_name</replaceable></term>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
@ -1081,7 +1081,7 @@ INSERT INTO tbls1 VALUES ($1, $2) \parse stmt1
|
||||
Example:
|
||||
<programlisting>
|
||||
SELECT $1 \parse stmt1
|
||||
\close stmt1
|
||||
\close_prepared stmt1
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
@ -3710,7 +3710,7 @@ testdb=> <userinput>\setenv LESS -imx4F</userinput>
|
||||
All queries executed while a pipeline is ongoing use the extended
|
||||
query protocol. Queries are appended to the pipeline when ending with
|
||||
a semicolon. The meta-commands <literal>\bind</literal>,
|
||||
<literal>\bind_named</literal>, <literal>\close</literal> or
|
||||
<literal>\bind_named</literal>, <literal>\close_prepared</literal> or
|
||||
<literal>\parse</literal> can be used in an ongoing pipeline. While
|
||||
a pipeline is ongoing, <literal>\sendpipeline</literal> will append
|
||||
the current query buffer to the pipeline. Other meta-commands like
|
||||
|
@ -2746,7 +2746,7 @@ Author: Michael Paquier <michael@paquier.xyz>
|
||||
<link
|
||||
linkend="app-psql-meta-command-bind-named"><literal>\bind_named</literal></link>,
|
||||
and <link
|
||||
linkend="app-psql-meta-command-close"><literal>\close</literal></link>.
|
||||
linkend="app-psql-meta-command-close-prepared"><literal>\close_prepared</literal></link>.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
|
@ -67,8 +67,8 @@ static backslashResult exec_command_C(PsqlScanState scan_state, bool active_bran
|
||||
static backslashResult exec_command_connect(PsqlScanState scan_state, bool active_branch);
|
||||
static backslashResult exec_command_cd(PsqlScanState scan_state, bool active_branch,
|
||||
const char *cmd);
|
||||
static backslashResult exec_command_close(PsqlScanState scan_state, bool active_branch,
|
||||
const char *cmd);
|
||||
static backslashResult exec_command_close_prepared(PsqlScanState scan_state,
|
||||
bool active_branch, const char *cmd);
|
||||
static backslashResult exec_command_conninfo(PsqlScanState scan_state, bool active_branch);
|
||||
static backslashResult exec_command_copy(PsqlScanState scan_state, bool active_branch);
|
||||
static backslashResult exec_command_copyright(PsqlScanState scan_state, bool active_branch);
|
||||
@ -330,8 +330,8 @@ exec_command(const char *cmd,
|
||||
status = exec_command_connect(scan_state, active_branch);
|
||||
else if (strcmp(cmd, "cd") == 0)
|
||||
status = exec_command_cd(scan_state, active_branch, cmd);
|
||||
else if (strcmp(cmd, "close") == 0)
|
||||
status = exec_command_close(scan_state, active_branch, cmd);
|
||||
else if (strcmp(cmd, "close_prepared") == 0)
|
||||
status = exec_command_close_prepared(scan_state, active_branch, cmd);
|
||||
else if (strcmp(cmd, "conninfo") == 0)
|
||||
status = exec_command_conninfo(scan_state, active_branch);
|
||||
else if (pg_strcasecmp(cmd, "copy") == 0)
|
||||
@ -728,10 +728,10 @@ exec_command_cd(PsqlScanState scan_state, bool active_branch, const char *cmd)
|
||||
}
|
||||
|
||||
/*
|
||||
* \close -- close a previously prepared statement
|
||||
* \close_prepared -- close a previously prepared statement
|
||||
*/
|
||||
static backslashResult
|
||||
exec_command_close(PsqlScanState scan_state, bool active_branch, const char *cmd)
|
||||
exec_command_close_prepared(PsqlScanState scan_state, bool active_branch, const char *cmd)
|
||||
{
|
||||
backslashResult status = PSQL_CMD_SKIP_LINE;
|
||||
|
||||
|
@ -2628,7 +2628,7 @@ clean_extended_state(void)
|
||||
|
||||
switch (pset.send_mode)
|
||||
{
|
||||
case PSQL_SEND_EXTENDED_CLOSE: /* \close */
|
||||
case PSQL_SEND_EXTENDED_CLOSE: /* \close_prepared */
|
||||
free(pset.stmtName);
|
||||
break;
|
||||
case PSQL_SEND_EXTENDED_PARSE: /* \parse */
|
||||
|
@ -331,7 +331,8 @@ slashUsage(unsigned short int pager)
|
||||
HELP0(" \\bind [PARAM]... set query parameters\n");
|
||||
HELP0(" \\bind_named STMT_NAME [PARAM]...\n"
|
||||
" set query parameters for an existing prepared statement\n");
|
||||
HELP0(" \\close STMT_NAME close an existing prepared statement\n");
|
||||
HELP0(" \\close_prepared STMT_NAME\n"
|
||||
" close an existing prepared statement\n");
|
||||
HELP0(" \\endpipeline exit pipeline mode\n");
|
||||
HELP0(" \\flush flush output data to the server\n");
|
||||
HELP0(" \\flushrequest send request to the server to flush its output buffer\n");
|
||||
|
@ -1875,7 +1875,7 @@ psql_completion(const char *text, int start, int end)
|
||||
static const char *const backslash_commands[] = {
|
||||
"\\a",
|
||||
"\\bind", "\\bind_named",
|
||||
"\\connect", "\\conninfo", "\\C", "\\cd", "\\close", "\\copy",
|
||||
"\\connect", "\\conninfo", "\\C", "\\cd", "\\close_prepared", "\\copy",
|
||||
"\\copyright", "\\crosstabview",
|
||||
"\\d", "\\da", "\\dA", "\\dAc", "\\dAf", "\\dAo", "\\dAp",
|
||||
"\\db", "\\dc", "\\dconfig", "\\dC", "\\dd", "\\ddp", "\\dD",
|
||||
|
@ -160,12 +160,12 @@ LINE 1: SELECT $1, $2
|
||||
foo4 | bar4
|
||||
(1 row)
|
||||
|
||||
-- \close (extended query protocol)
|
||||
\close
|
||||
\close: missing required argument
|
||||
\close ''
|
||||
\close stmt2
|
||||
\close stmt2
|
||||
-- \close_prepared (extended query protocol)
|
||||
\close_prepared
|
||||
\close_prepared: missing required argument
|
||||
\close_prepared ''
|
||||
\close_prepared stmt2
|
||||
\close_prepared stmt2
|
||||
SELECT name, statement FROM pg_prepared_statements ORDER BY name;
|
||||
name | statement
|
||||
-------+----------------
|
||||
@ -4666,7 +4666,7 @@ bar 'bar' "bar"
|
||||
\C arg1
|
||||
\c arg1 arg2 arg3 arg4
|
||||
\cd arg1
|
||||
\close stmt1
|
||||
\close_prepared stmt1
|
||||
\conninfo
|
||||
\copy arg1 arg2 arg3 arg4 arg5 arg6
|
||||
\copyright
|
||||
|
@ -564,7 +564,7 @@ SELECT $1 \bind \sendpipeline
|
||||
SELECT $1 \bind 1 \sendpipeline
|
||||
SELECT $1 \parse a
|
||||
\bind_named a 1 \sendpipeline
|
||||
\close a
|
||||
\close_prepared a
|
||||
\flushrequest
|
||||
\getresults
|
||||
ERROR: bind message supplies 0 parameters, but prepared statement "" requires 1
|
||||
@ -572,7 +572,7 @@ ERROR: bind message supplies 0 parameters, but prepared statement "" requires 1
|
||||
SELECT $1 \bind 1 \sendpipeline
|
||||
SELECT $1 \parse a
|
||||
\bind_named a 1 \sendpipeline
|
||||
\close a
|
||||
\close_prepared a
|
||||
-- Sync allows pipeline to recover.
|
||||
\syncpipeline
|
||||
\getresults
|
||||
@ -580,7 +580,7 @@ Pipeline aborted, command did not run
|
||||
SELECT $1 \bind 1 \sendpipeline
|
||||
SELECT $1 \parse a
|
||||
\bind_named a 1 \sendpipeline
|
||||
\close a
|
||||
\close_prepared a
|
||||
\flushrequest
|
||||
\getresults
|
||||
?column?
|
||||
|
@ -68,11 +68,11 @@ SELECT $1, $2 \parse stmt3
|
||||
-- Multiple \g calls mean multiple executions
|
||||
\bind_named stmt2 'foo3' \g \bind_named stmt3 'foo4' 'bar4' \g
|
||||
|
||||
-- \close (extended query protocol)
|
||||
\close
|
||||
\close ''
|
||||
\close stmt2
|
||||
\close stmt2
|
||||
-- \close_prepared (extended query protocol)
|
||||
\close_prepared
|
||||
\close_prepared ''
|
||||
\close_prepared stmt2
|
||||
\close_prepared stmt2
|
||||
SELECT name, statement FROM pg_prepared_statements ORDER BY name;
|
||||
|
||||
-- \bind (extended query protocol)
|
||||
@ -1035,7 +1035,7 @@ select \if false \\ (bogus \else \\ 42 \endif \\ forty_two;
|
||||
\C arg1
|
||||
\c arg1 arg2 arg3 arg4
|
||||
\cd arg1
|
||||
\close stmt1
|
||||
\close_prepared stmt1
|
||||
\conninfo
|
||||
\copy arg1 arg2 arg3 arg4 arg5 arg6
|
||||
\copyright
|
||||
|
@ -306,21 +306,21 @@ SELECT $1 \bind \sendpipeline
|
||||
SELECT $1 \bind 1 \sendpipeline
|
||||
SELECT $1 \parse a
|
||||
\bind_named a 1 \sendpipeline
|
||||
\close a
|
||||
\close_prepared a
|
||||
\flushrequest
|
||||
\getresults
|
||||
-- Pipeline is aborted.
|
||||
SELECT $1 \bind 1 \sendpipeline
|
||||
SELECT $1 \parse a
|
||||
\bind_named a 1 \sendpipeline
|
||||
\close a
|
||||
\close_prepared a
|
||||
-- Sync allows pipeline to recover.
|
||||
\syncpipeline
|
||||
\getresults
|
||||
SELECT $1 \bind 1 \sendpipeline
|
||||
SELECT $1 \parse a
|
||||
\bind_named a 1 \sendpipeline
|
||||
\close a
|
||||
\close_prepared a
|
||||
\flushrequest
|
||||
\getresults
|
||||
\endpipeline
|
||||
|
Reference in New Issue
Block a user