From c63630d5ebf3dd10fdf4de2faafb741acf71e6e0 Mon Sep 17 00:00:00 2001 From: Marco Montagna Date: Thu, 28 Jan 2021 23:55:38 -0800 Subject: [PATCH] Reduce likelihood of fdw prepared statement collisions. --- contrib/postgres_fdw/postgres_fdw.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c index 2f2d4d1..c826d6e 100644 --- a/contrib/postgres_fdw/postgres_fdw.c +++ b/contrib/postgres_fdw/postgres_fdw.c @@ -3725,9 +3725,14 @@ prepare_foreign_modify(PgFdwModifyState *fmstate) char *p_name; PGresult *res; - /* Construct name we'll use for the prepared statement. */ - snprintf(prep_name, sizeof(prep_name), "pgsql_fdw_prep_%u", - GetPrepStmtNumber(fmstate->conn)); + /* Construct name we'll use for the prepared statement. + * + * Prepend a random number to reduce the likelihood of + * prepared statement collisions when using transaction pooling. + */ + snprintf(prep_name, sizeof(prep_name), "pgsql_fdw_prep_%u_%u", + GetPrepStmtNumber(fmstate->conn), + rand()); p_name = pstrdup(prep_name); /* -- 2.7.4