I just found myself researching the difference between MemoryContextReset() and MemoryContextResetAndDeleteChildren(), and it turns out that as of commit eaa5808 (2015), there is none. MemoryContextResetAndDeleteChildren() is just a backwards compatibility macro for MemoryContextReset(). I found this surprising because it sounds like they do very different things.
Shall we retire this backwards compatibility macro at this point? A search of https://codesearch.debian.net/ does reveal a few external uses, so we could alternatively leave it around and just update Postgres to stop using it, but I don't think it would be too burdensome for extension authors to fix if we removed it completely.
+1
Patch attached.
Changes looks pretty much straight forward, but patch failed to apply on the latest master head(b41b1a7f490) at me.