Possibly redundant context switch in postgres_fdw
Started by Ildar Musinabout 7 years ago1 messages
Hi hackers,
ISTM that context switch in `create_cursor()`:
if (numParams > 0)
{
MemoryContext oldcontext;
oldcontext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory);
process_query_params(econtext,
fsstate->param_flinfo,
fsstate->param_exprs,
values);
MemoryContextSwitchTo(oldcontext);
}
is redundant since we should already be in `ecxt_per_tuple_memory` context
according to `ForeignNext()`. Do I miss some hidden purpose? If not here is
a patch that removes it.
Regards,
Ildar Musin
Attachments:
remove_ctx_switch.patchtext/x-patch; charset=US-ASCII; name=remove_ctx_switch.patchDownload
diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c
index fd20aa96aa..65962ea657 100644
--- a/contrib/postgres_fdw/postgres_fdw.c
+++ b/contrib/postgres_fdw/postgres_fdw.c
@@ -3083,16 +3083,10 @@ create_cursor(ForeignScanState *node)
*/
if (numParams > 0)
{
- MemoryContext oldcontext;
-
- oldcontext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory);
-
process_query_params(econtext,
fsstate->param_flinfo,
fsstate->param_exprs,
values);
-
- MemoryContextSwitchTo(oldcontext);
}
/* Construct the DECLARE CURSOR command */