Re: retire MemoryContextResetAndDeleteChildren backwards compatibility macro

Amul Sul <sulamul@gmail.com>

From: Amul Sul <sulamul@gmail.com>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: pgsql-hackers@postgresql.org
Date: 2023-11-14T10:55:24Z
Lists: pgsql-hackers
On Tue, Nov 14, 2023 at 12:30 AM Nathan Bossart <nathandbossart@gmail.com>
wrote:

> 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.

Regards,
Amul

Commits

  1. Retire MemoryContextResetAndDeleteChildren() macro.

  2. Simplify code by getting rid of SPI_push, SPI_pop, SPI_restore_connection.

  3. Redefine MemoryContextReset() as deleting, not resetting, child contexts.

  4. tuplestore_donestoring() isn't needed anymore, but provide a no-op