diff options
author | Tomas Vondra <tomas.vondra@postgresql.org> | 2021-05-07 22:29:43 +0200 |
---|---|---|
committer | Tomas Vondra <tomas.vondra@postgresql.org> | 2021-05-07 22:29:43 +0200 |
commit | c6a01d924939306e95c8deafd09352be6a955648 (patch) | |
tree | 055432d1e88735defdb32b2898963a954732a120 /contrib/postgres_fdw/postgres_fdw.c | |
parent | 8292c0675a793a5afd0a8eedbeb0db7abfb844f3 (diff) | |
download | postgresql-c6a01d924939306e95c8deafd09352be6a955648.tar.gz postgresql-c6a01d924939306e95c8deafd09352be6a955648.zip |
Copy the INSERT query in postgres_fdw
When executing the INSERT with batching, we may need to rebuild the
query when the batch size changes, in which case we pfree the current
string. We must not release the original string, stored in fdw_private,
because that may be needed in EXPLAIN ANALYZE. So make copy of the SQL,
but only for INSERT queries.
Reported-by: Pavel Stehule
Discussion: https://postgr.es/m/CAFj8pRCL_Rjw-MCR6J7VX9OF7MR6PA5K8qUbrMvprW_e-aHkfQ%40mail.gmail.com
Diffstat (limited to 'contrib/postgres_fdw/postgres_fdw.c')
-rw-r--r-- | contrib/postgres_fdw/postgres_fdw.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c index 8bcdc8d6160..4ff58d9c275 100644 --- a/contrib/postgres_fdw/postgres_fdw.c +++ b/contrib/postgres_fdw/postgres_fdw.c @@ -3903,7 +3903,10 @@ create_foreign_modify(EState *estate, /* Set up remote query information. */ fmstate->query = query; if (operation == CMD_INSERT) + { + fmstate->query = pstrdup(fmstate->query); fmstate->orig_query = pstrdup(fmstate->query); + } fmstate->target_attrs = target_attrs; fmstate->values_end = values_end; fmstate->has_returning = has_returning; |