Thanks for the reviews! I'll reply to both of your reviews separately.
>> 10. >> >> + /* we only need to allocate once */ >> + if (eq == NULL) >> + eq = palloc0(sizeof(*eq) * outslot->tts_tupleDescriptor->natts); >> >> But shouldn't you also free this 'eq' before the function returns, to >> prevent leaking memory? >> > > Two notes here. First, this is allocated inside ApplyMessageContext, which seems to be reset per tuple change. So, that seems like a good boundary to keep this allocation in memory. >
OK, fair enough. Is it worth adding a comment to say that or not?
Yes, sounds good. Added 1 sentence comment, I'll push this along with my other changes on v10.