mirror of
https://github.com/postgres/postgres.git
synced 2025-06-30 21:42:05 +03:00
Remove useless pfree()s at the ends of various ValuePerCall SRFs.
We don't need to manually clean up allocations in a SRF's multi_call_memory_ctx, because the SRF_RETURN_DONE infrastructure takes care of that (and also ensures that it will happen even if the function never gets a final call, which simple manual cleanup cannot do). Hence, the code removed by this patch is a waste of code and cycles. Worse, it gives the impression that cleaning up manually is a thing, which can lead to more serious errors such as those fixed in commits085b6b667
andb4570d33a
. So we should get rid of it. These are not quite actual bugs though, so I couldn't muster the enthusiasm to back-patch. Fix in HEAD only. Justin Pryzby Discussion: https://postgr.es/m/20200308173103.GC1357@telsasoft.com
This commit is contained in:
@ -535,7 +535,6 @@ jsonb_object_keys(PG_FUNCTION_ARGS)
|
||||
{
|
||||
FuncCallContext *funcctx;
|
||||
OkeysState *state;
|
||||
int i;
|
||||
|
||||
if (SRF_IS_FIRSTCALL())
|
||||
{
|
||||
@ -598,12 +597,6 @@ jsonb_object_keys(PG_FUNCTION_ARGS)
|
||||
SRF_RETURN_NEXT(funcctx, CStringGetTextDatum(nxt));
|
||||
}
|
||||
|
||||
/* cleanup to reduce or eliminate memory leaks */
|
||||
for (i = 0; i < state->result_count; i++)
|
||||
pfree(state->result[i]);
|
||||
pfree(state->result);
|
||||
pfree(state);
|
||||
|
||||
SRF_RETURN_DONE(funcctx);
|
||||
}
|
||||
|
||||
@ -706,7 +699,6 @@ json_object_keys(PG_FUNCTION_ARGS)
|
||||
{
|
||||
FuncCallContext *funcctx;
|
||||
OkeysState *state;
|
||||
int i;
|
||||
|
||||
if (SRF_IS_FIRSTCALL())
|
||||
{
|
||||
@ -755,12 +747,6 @@ json_object_keys(PG_FUNCTION_ARGS)
|
||||
SRF_RETURN_NEXT(funcctx, CStringGetTextDatum(nxt));
|
||||
}
|
||||
|
||||
/* cleanup to reduce or eliminate memory leaks */
|
||||
for (i = 0; i < state->result_count; i++)
|
||||
pfree(state->result[i]);
|
||||
pfree(state->result);
|
||||
pfree(state);
|
||||
|
||||
SRF_RETURN_DONE(funcctx);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user