diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2024-09-09 12:18:32 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2024-09-09 12:18:34 -0400 |
commit | 218527d01456b65decdc7596c6f6d5ac2bdeb78b (patch) | |
tree | 6aceaaac941dd92421d0a16dd65ded4426f421d0 /src/pl/plperl/plperl.c | |
parent | cdb6b0fdb0b2face270406905d31f8f513b015cc (diff) | |
download | postgresql-218527d01456b65decdc7596c6f6d5ac2bdeb78b.tar.gz postgresql-218527d01456b65decdc7596c6f6d5ac2bdeb78b.zip |
Don't bother checking the result of SPI_connect[_ext] anymore.
SPI_connect/SPI_connect_ext have not returned any value other than
SPI_OK_CONNECT since commit 1833f1a1c in v10; any errors are thrown
via ereport. (The most likely failure is out-of-memory, which has
always been thrown that way, so callers had better be prepared for
such errors.) This makes it somewhat pointless to check these
functions' result, and some callers within our code haven't been
bothering; indeed, the only usage example within spi.sgml doesn't
bother. So it's likely that the omission has propagated into
extensions too.
Hence, let's standardize on not checking, and document the return
value as historical, while not actually changing these functions'
behavior. (The original proposal was to change their return type
to "void", but that would needlessly break extensions that are
conforming to the old practice.) This saves a small amount of
boilerplate code in a lot of places.
Stepan Neretin
Discussion: https://postgr.es/m/CAMaYL5Z9Uk8cD9qGz9QaZ2UBJFOu7jFx5Mwbznz-1tBbPDQZow@mail.gmail.com
Diffstat (limited to 'src/pl/plperl/plperl.c')
-rw-r--r-- | src/pl/plperl/plperl.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c index d68ad7be345..fe719935c67 100644 --- a/src/pl/plperl/plperl.c +++ b/src/pl/plperl/plperl.c @@ -1947,8 +1947,7 @@ plperl_inline_handler(PG_FUNCTION_ARGS) current_call_data = &this_call_data; - if (SPI_connect_ext(codeblock->atomic ? 0 : SPI_OPT_NONATOMIC) != SPI_OK_CONNECT) - elog(ERROR, "could not connect to SPI manager"); + SPI_connect_ext(codeblock->atomic ? 0 : SPI_OPT_NONATOMIC); select_perl_context(desc.lanpltrusted); @@ -2412,8 +2411,7 @@ plperl_func_handler(PG_FUNCTION_ARGS) IsA(fcinfo->context, CallContext) && !castNode(CallContext, fcinfo->context)->atomic; - if (SPI_connect_ext(nonatomic ? SPI_OPT_NONATOMIC : 0) != SPI_OK_CONNECT) - elog(ERROR, "could not connect to SPI manager"); + SPI_connect_ext(nonatomic ? SPI_OPT_NONATOMIC : 0); prodesc = compile_plperl_function(fcinfo->flinfo->fn_oid, false, false); current_call_data->prodesc = prodesc; @@ -2530,8 +2528,7 @@ plperl_trigger_handler(PG_FUNCTION_ARGS) int rc PG_USED_FOR_ASSERTS_ONLY; /* Connect to SPI manager */ - if (SPI_connect() != SPI_OK_CONNECT) - elog(ERROR, "could not connect to SPI manager"); + SPI_connect(); /* Make transition tables visible to this SPI connection */ tdata = (TriggerData *) fcinfo->context; @@ -2638,8 +2635,7 @@ plperl_event_trigger_handler(PG_FUNCTION_ARGS) ErrorContextCallback pl_error_context; /* Connect to SPI manager */ - if (SPI_connect() != SPI_OK_CONNECT) - elog(ERROR, "could not connect to SPI manager"); + SPI_connect(); /* Find or compile the function */ prodesc = compile_plperl_function(fcinfo->flinfo->fn_oid, false, true); |