aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorÁlvaro Herrera <alvherre@alvh.no-ip.org>2025-03-06 18:14:41 +0100
committerÁlvaro Herrera <alvherre@alvh.no-ip.org>2025-03-06 19:40:06 +0100
commit24503fa95cd8cd57a8d695a910056a1cfcbacefc (patch)
tree404447dc04cae04f002d1396397095303b0f1a6c /src
parent0f21db36d663fcf0789290902c84cc460ef0df8b (diff)
downloadpostgresql-24503fa95cd8cd57a8d695a910056a1cfcbacefc.tar.gz
postgresql-24503fa95cd8cd57a8d695a910056a1cfcbacefc.zip
reindexdb: move PQfinish() calls to the right place
get_parallel_object_list() has no business closing a connection it did not create. Make things more sensible by closing the connection at the level where it is created, in reindex_one_database(). Extracted from a larger patch by the same author. However, the patch as submitted not only was not described as containing this change, but in addition it contained a fatal flaw whereby reindexdb would crash and fail across all of its TAP test, which is why I list myself as co-author. Author: Ranier Vilela <ranier.vf@gmail.com> Author: Álvaro Herrera <alvherre@alvh.no-ip.org> Discussion: https://postgr.es/m/CAEudQArfqr0-s0VVPSEh=0kgOgBJvFNdGW=xSL5rBcr0WDMQYQ@mail.gmail.com
Diffstat (limited to 'src')
-rw-r--r--src/bin/scripts/reindexdb.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/bin/scripts/reindexdb.c b/src/bin/scripts/reindexdb.c
index 665864fd22b..b00c8112869 100644
--- a/src/bin/scripts/reindexdb.c
+++ b/src/bin/scripts/reindexdb.c
@@ -339,7 +339,10 @@ reindex_one_database(ConnParams *cparams, ReindexType type,
/* Bail out if nothing to process */
if (process_list == NULL)
+ {
+ PQfinish(conn);
return;
+ }
break;
case REINDEX_SCHEMA:
@@ -352,7 +355,10 @@ reindex_one_database(ConnParams *cparams, ReindexType type,
/* Bail out if nothing to process */
if (process_list == NULL)
+ {
+ PQfinish(conn);
return;
+ }
break;
case REINDEX_INDEX:
@@ -370,7 +376,10 @@ reindex_one_database(ConnParams *cparams, ReindexType type,
* in-place, so check if it has at least one cell.
*/
if (user_list->head == NULL)
+ {
+ PQfinish(conn);
return;
+ }
/*
* Assuming 'user_list' is not empty, 'indices_tables_list'
@@ -416,6 +425,7 @@ reindex_one_database(ConnParams *cparams, ReindexType type,
sa = ParallelSlotsSetup(concurrentCons, cparams, progname, echo, NULL);
ParallelSlotsAdoptConn(sa, conn);
+ conn = NULL;
cell = process_list->head;
do
@@ -765,7 +775,6 @@ get_parallel_object_list(PGconn *conn, ReindexType type,
if (ntups == 0)
{
PQclear(res);
- PQfinish(conn);
return NULL;
}