diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2015-02-27 17:16:40 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2015-02-27 17:16:43 -0500 |
commit | f65e8270587f3e9b8224e20f7d020ed1f816dfe1 (patch) | |
tree | 0a285e9914555d3d876dfa1c5a9eb56825c4acd7 /src/include/utils/memutils.h | |
parent | 654809e770ce270c0bb9de726c5df1ab193d60f0 (diff) | |
download | postgresql-f65e8270587f3e9b8224e20f7d020ed1f816dfe1.tar.gz postgresql-f65e8270587f3e9b8224e20f7d020ed1f816dfe1.zip |
Invent a memory context reset/delete callback mechanism.
This allows cleanup actions to be registered to be called just before a
particular memory context's contents are flushed (either by deletion or
MemoryContextReset). The patch in itself has no use-cases for this, but
several likely reasons for wanting this exist.
In passing, per discussion, rearrange some boolean fields in struct
MemoryContextData so as to avoid wasted padding space. For safety,
this requires making allowInCritSection's existence unconditional;
but I think that's a better approach than what was there anyway.
Diffstat (limited to 'src/include/utils/memutils.h')
-rw-r--r-- | src/include/utils/memutils.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/include/utils/memutils.h b/src/include/utils/memutils.h index 85aba7a7220..76ad7d443b0 100644 --- a/src/include/utils/memutils.h +++ b/src/include/utils/memutils.h @@ -94,6 +94,8 @@ extern void MemoryContextDelete(MemoryContext context); extern void MemoryContextResetChildren(MemoryContext context); extern void MemoryContextDeleteChildren(MemoryContext context); extern void MemoryContextResetAndDeleteChildren(MemoryContext context); +extern void MemoryContextRegisterResetCallback(MemoryContext context, + MemoryContextCallback *cb); extern void MemoryContextSetParent(MemoryContext context, MemoryContext new_parent); extern Size GetMemoryChunkSpace(void *pointer); |