/src/postgres/src/include/utils/memutils.h
Line | Count | Source |
1 | | /*------------------------------------------------------------------------- |
2 | | * |
3 | | * memutils.h |
4 | | * This file contains declarations for memory allocation utility |
5 | | * functions. These are functions that are not quite widely used |
6 | | * enough to justify going in utils/palloc.h, but are still part |
7 | | * of the API of the memory management subsystem. |
8 | | * |
9 | | * |
10 | | * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group |
11 | | * Portions Copyright (c) 1994, Regents of the University of California |
12 | | * |
13 | | * src/include/utils/memutils.h |
14 | | * |
15 | | *------------------------------------------------------------------------- |
16 | | */ |
17 | | #ifndef MEMUTILS_H |
18 | | #define MEMUTILS_H |
19 | | |
20 | | #include "nodes/memnodes.h" |
21 | | |
22 | | |
23 | | /* |
24 | | * MaxAllocSize, MaxAllocHugeSize |
25 | | * Quasi-arbitrary limits on size of allocations. |
26 | | * |
27 | | * Note: |
28 | | * There is no guarantee that smaller allocations will succeed, but |
29 | | * larger requests will be summarily denied. |
30 | | * |
31 | | * palloc() enforces MaxAllocSize, chosen to correspond to the limiting size |
32 | | * of varlena objects under TOAST. See VARSIZE_4B() and related macros in |
33 | | * varatt.h. Many datatypes assume that any allocatable size can be |
34 | | * represented in a varlena header. This limit also permits a caller to use |
35 | | * an "int" variable for an index into or length of an allocation. Callers |
36 | | * careful to avoid these hazards can access the higher limit with |
37 | | * MemoryContextAllocHuge(). Both limits permit code to assume that it may |
38 | | * compute twice an allocation's size without overflow. |
39 | | */ |
40 | 133k | #define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */ |
41 | | |
42 | 226 | #define AllocSizeIsValid(size) ((Size) (size) <= MaxAllocSize) |
43 | | |
44 | | /* Do not make this any bigger; see add_size() and mul_size() */ |
45 | 0 | #define MaxAllocHugeSize (SIZE_MAX / 2) |
46 | | |
47 | | #define InvalidAllocSize SIZE_MAX |
48 | | |
49 | 0 | #define AllocHugeSizeIsValid(size) ((Size) (size) <= MaxAllocHugeSize) |
50 | | |
51 | | |
52 | | /* |
53 | | * Standard top-level memory contexts. |
54 | | * |
55 | | * Only TopMemoryContext and ErrorContext are initialized by |
56 | | * MemoryContextInit() itself. |
57 | | */ |
58 | | extern PGDLLIMPORT MemoryContext TopMemoryContext; |
59 | | extern PGDLLIMPORT MemoryContext ErrorContext; |
60 | | extern PGDLLIMPORT MemoryContext PostmasterContext; |
61 | | extern PGDLLIMPORT MemoryContext CacheMemoryContext; |
62 | | extern PGDLLIMPORT MemoryContext MessageContext; |
63 | | extern PGDLLIMPORT MemoryContext TopTransactionContext; |
64 | | extern PGDLLIMPORT MemoryContext CurTransactionContext; |
65 | | |
66 | | /* This is a transient link to the active portal's memory context: */ |
67 | | extern PGDLLIMPORT MemoryContext PortalContext; |
68 | | |
69 | | |
70 | | /* |
71 | | * Memory-context-type-independent functions in mcxt.c |
72 | | */ |
73 | | extern void MemoryContextInit(void); |
74 | | extern void MemoryContextReset(MemoryContext context); |
75 | | extern void MemoryContextDelete(MemoryContext context); |
76 | | extern void MemoryContextResetOnly(MemoryContext context); |
77 | | extern void MemoryContextResetChildren(MemoryContext context); |
78 | | extern void MemoryContextDeleteChildren(MemoryContext context); |
79 | | extern void MemoryContextSetIdentifier(MemoryContext context, const char *id); |
80 | | extern void MemoryContextSetParent(MemoryContext context, |
81 | | MemoryContext new_parent); |
82 | | extern MemoryContext GetMemoryChunkContext(void *pointer); |
83 | | extern Size GetMemoryChunkSpace(void *pointer); |
84 | | extern MemoryContext MemoryContextGetParent(MemoryContext context); |
85 | | extern bool MemoryContextIsEmpty(MemoryContext context); |
86 | | extern Size MemoryContextMemAllocated(MemoryContext context, bool recurse); |
87 | | extern void MemoryContextMemConsumed(MemoryContext context, |
88 | | MemoryContextCounters *consumed); |
89 | | extern void MemoryContextStats(MemoryContext context); |
90 | | extern void MemoryContextStatsDetail(MemoryContext context, |
91 | | int max_level, int max_children, |
92 | | bool print_to_stderr); |
93 | | extern void MemoryContextAllowInCriticalSection(MemoryContext context, |
94 | | bool allow); |
95 | | |
96 | | #ifdef MEMORY_CONTEXT_CHECKING |
97 | | extern void MemoryContextCheck(MemoryContext context); |
98 | | #endif |
99 | | |
100 | | /* Handy macro for copying and assigning context ID ... but note double eval */ |
101 | | #define MemoryContextCopyAndSetIdentifier(cxt, id) \ |
102 | 0 | MemoryContextSetIdentifier(cxt, MemoryContextStrdup(cxt, id)) |
103 | | |
104 | | extern void HandleLogMemoryContextInterrupt(void); |
105 | | extern void ProcessLogMemoryContextInterrupt(void); |
106 | | |
107 | | /* |
108 | | * Memory-context-type-specific functions |
109 | | */ |
110 | | |
111 | | /* aset.c */ |
112 | | extern MemoryContext AllocSetContextCreateInternal(MemoryContext parent, |
113 | | const char *name, |
114 | | Size minContextSize, |
115 | | Size initBlockSize, |
116 | | Size maxBlockSize); |
117 | | |
118 | | /* |
119 | | * This wrapper macro exists to check for non-constant strings used as context |
120 | | * names; that's no longer supported. (Use MemoryContextSetIdentifier if you |
121 | | * want to provide a variable identifier.) |
122 | | */ |
123 | | #ifdef HAVE__BUILTIN_CONSTANT_P |
124 | | #define AllocSetContextCreate(parent, name, ...) \ |
125 | 4.03k | (StaticAssertExpr(__builtin_constant_p(name), \ |
126 | 4.03k | "memory context names must be constant strings"), \ |
127 | 4.03k | AllocSetContextCreateInternal(parent, name, __VA_ARGS__)) |
128 | | #else |
129 | | #define AllocSetContextCreate \ |
130 | | AllocSetContextCreateInternal |
131 | | #endif |
132 | | |
133 | | /* slab.c */ |
134 | | extern MemoryContext SlabContextCreate(MemoryContext parent, |
135 | | const char *name, |
136 | | Size blockSize, |
137 | | Size chunkSize); |
138 | | |
139 | | /* generation.c */ |
140 | | extern MemoryContext GenerationContextCreate(MemoryContext parent, |
141 | | const char *name, |
142 | | Size minContextSize, |
143 | | Size initBlockSize, |
144 | | Size maxBlockSize); |
145 | | |
146 | | /* bump.c */ |
147 | | extern MemoryContext BumpContextCreate(MemoryContext parent, |
148 | | const char *name, |
149 | | Size minContextSize, |
150 | | Size initBlockSize, |
151 | | Size maxBlockSize); |
152 | | |
153 | | /* |
154 | | * Recommended default alloc parameters, suitable for "ordinary" contexts |
155 | | * that might hold quite a lot of data. |
156 | | */ |
157 | 8.05k | #define ALLOCSET_DEFAULT_MINSIZE 0 |
158 | 2.01k | #define ALLOCSET_DEFAULT_INITSIZE (8 * 1024) |
159 | 0 | #define ALLOCSET_DEFAULT_MAXSIZE (8 * 1024 * 1024) |
160 | | #define ALLOCSET_DEFAULT_SIZES \ |
161 | 0 | ALLOCSET_DEFAULT_MINSIZE, ALLOCSET_DEFAULT_INITSIZE, ALLOCSET_DEFAULT_MAXSIZE |
162 | | |
163 | | /* |
164 | | * Recommended alloc parameters for "small" contexts that are never expected |
165 | | * to contain much data (for example, a context to contain a query plan). |
166 | | */ |
167 | 4.02k | #define ALLOCSET_SMALL_MINSIZE 0 |
168 | 0 | #define ALLOCSET_SMALL_INITSIZE (1 * 1024) |
169 | | #define ALLOCSET_SMALL_MAXSIZE (8 * 1024) |
170 | | #define ALLOCSET_SMALL_SIZES \ |
171 | | ALLOCSET_SMALL_MINSIZE, ALLOCSET_SMALL_INITSIZE, ALLOCSET_SMALL_MAXSIZE |
172 | | |
173 | | /* |
174 | | * Recommended alloc parameters for contexts that should start out small, |
175 | | * but might sometimes grow big. |
176 | | */ |
177 | | #define ALLOCSET_START_SMALL_SIZES \ |
178 | | ALLOCSET_SMALL_MINSIZE, ALLOCSET_SMALL_INITSIZE, ALLOCSET_DEFAULT_MAXSIZE |
179 | | |
180 | | |
181 | | /* |
182 | | * Threshold above which a request in an AllocSet context is certain to be |
183 | | * allocated separately (and thereby have constant allocation overhead). |
184 | | * Few callers should be interested in this, but tuplesort/tuplestore need |
185 | | * to know it. |
186 | | */ |
187 | | #define ALLOCSET_SEPARATE_THRESHOLD 8192 |
188 | | |
189 | 0 | #define SLAB_DEFAULT_BLOCK_SIZE (8 * 1024) |
190 | | #define SLAB_LARGE_BLOCK_SIZE (8 * 1024 * 1024) |
191 | | |
192 | | /* |
193 | | * pg_memory_is_all_zeros |
194 | | * |
195 | | * Test if a memory region starting at "ptr" and of size "len" is full of |
196 | | * zeroes. |
197 | | * |
198 | | * The test is divided into multiple cases for safety reason and multiple |
199 | | * phases for efficiency. |
200 | | * |
201 | | * Case 1: len < sizeof(size_t) bytes, then byte-by-byte comparison. |
202 | | * Case 2: len < (sizeof(size_t) * 8 - 1) bytes: |
203 | | * - Phase 1: byte-by-byte comparison, until the pointer is aligned. |
204 | | * - Phase 2: size_t comparisons, with aligned pointers, up to the last |
205 | | * location possible. |
206 | | * - Phase 3: byte-by-byte comparison, until the end location. |
207 | | * Case 3: len >= (sizeof(size_t) * 8) bytes, same as case 2 except that an |
208 | | * additional phase is placed between Phase 1 and Phase 2, with |
209 | | * (8 * sizeof(size_t)) comparisons using bitwise OR to encourage |
210 | | * compilers to use SIMD instructions if available, up to the last |
211 | | * aligned location possible. |
212 | | * |
213 | | * Case 1 and Case 2 are mandatory to ensure that we won't read beyond the |
214 | | * memory area. This is portable for 32-bit and 64-bit architectures. |
215 | | * |
216 | | * Caller must ensure that "ptr" is not NULL. |
217 | | */ |
218 | | static inline bool |
219 | | pg_memory_is_all_zeros(const void *ptr, size_t len) |
220 | 0 | { |
221 | 0 | const unsigned char *p = (const unsigned char *) ptr; |
222 | 0 | const unsigned char *end = &p[len]; |
223 | 0 | const unsigned char *aligned_end = (const unsigned char *) |
224 | 0 | ((uintptr_t) end & (~(sizeof(size_t) - 1))); |
225 | |
|
226 | 0 | if (len < sizeof(size_t)) |
227 | 0 | { |
228 | 0 | while (p < end) |
229 | 0 | { |
230 | 0 | if (*p++ != 0) |
231 | 0 | return false; |
232 | 0 | } |
233 | 0 | return true; |
234 | 0 | } |
235 | | |
236 | | /* "len" in the [sizeof(size_t), sizeof(size_t) * 8 - 1] range */ |
237 | 0 | if (len < sizeof(size_t) * 8) |
238 | 0 | { |
239 | | /* Compare bytes until the pointer "p" is aligned */ |
240 | 0 | while (((uintptr_t) p & (sizeof(size_t) - 1)) != 0) |
241 | 0 | { |
242 | 0 | if (p == end) |
243 | 0 | return true; |
244 | 0 | if (*p++ != 0) |
245 | 0 | return false; |
246 | 0 | } |
247 | | |
248 | | /* |
249 | | * Compare remaining size_t-aligned chunks. |
250 | | * |
251 | | * There is no risk to read beyond the memory area, as "aligned_end" |
252 | | * cannot be higher than "end". |
253 | | */ |
254 | 0 | for (; p < aligned_end; p += sizeof(size_t)) |
255 | 0 | { |
256 | 0 | if (*(const size_t *) p != 0) |
257 | 0 | return false; |
258 | 0 | } |
259 | | |
260 | | /* Compare remaining bytes until the end */ |
261 | 0 | while (p < end) |
262 | 0 | { |
263 | 0 | if (*p++ != 0) |
264 | 0 | return false; |
265 | 0 | } |
266 | 0 | return true; |
267 | 0 | } |
268 | | |
269 | | /* "len" in the [sizeof(size_t) * 8, inf) range */ |
270 | | |
271 | | /* Compare bytes until the pointer "p" is aligned */ |
272 | 0 | while (((uintptr_t) p & (sizeof(size_t) - 1)) != 0) |
273 | 0 | { |
274 | 0 | if (p == end) |
275 | 0 | return true; |
276 | | |
277 | 0 | if (*p++ != 0) |
278 | 0 | return false; |
279 | 0 | } |
280 | | |
281 | | /* |
282 | | * Compare 8 * sizeof(size_t) chunks at once. |
283 | | * |
284 | | * For performance reasons, we manually unroll this loop and purposefully |
285 | | * use bitwise-ORs to combine each comparison. This prevents boolean |
286 | | * short-circuiting and lets the compiler know that it's safe to access |
287 | | * all 8 elements regardless of the result of the other comparisons. This |
288 | | * seems to be enough to coax a few compilers into using SIMD |
289 | | * instructions. |
290 | | */ |
291 | 0 | for (; p < aligned_end - (sizeof(size_t) * 7); p += sizeof(size_t) * 8) |
292 | 0 | { |
293 | 0 | if ((((const size_t *) p)[0] != 0) | (((const size_t *) p)[1] != 0) | |
294 | 0 | (((const size_t *) p)[2] != 0) | (((const size_t *) p)[3] != 0) | |
295 | 0 | (((const size_t *) p)[4] != 0) | (((const size_t *) p)[5] != 0) | |
296 | 0 | (((const size_t *) p)[6] != 0) | (((const size_t *) p)[7] != 0)) |
297 | 0 | return false; |
298 | 0 | } |
299 | | |
300 | | /* |
301 | | * Compare remaining size_t-aligned chunks. |
302 | | * |
303 | | * There is no risk to read beyond the memory area, as "aligned_end" |
304 | | * cannot be higher than "end". |
305 | | */ |
306 | 0 | for (; p < aligned_end; p += sizeof(size_t)) |
307 | 0 | { |
308 | 0 | if (*(const size_t *) p != 0) |
309 | 0 | return false; |
310 | 0 | } |
311 | | |
312 | | /* Compare remaining bytes until the end */ |
313 | 0 | while (p < end) |
314 | 0 | { |
315 | 0 | if (*p++ != 0) |
316 | 0 | return false; |
317 | 0 | } |
318 | | |
319 | 0 | return true; |
320 | 0 | } Unexecuted instantiation: json_parser_fuzzer.c:pg_memory_is_all_zeros Unexecuted instantiation: fuzzer_initialize.c:pg_memory_is_all_zeros Unexecuted instantiation: brin.c:pg_memory_is_all_zeros Unexecuted instantiation: brin_minmax_multi.c:pg_memory_is_all_zeros Unexecuted instantiation: brin_tuple.c:pg_memory_is_all_zeros Unexecuted instantiation: heaptuple.c:pg_memory_is_all_zeros Unexecuted instantiation: printtup.c:pg_memory_is_all_zeros Unexecuted instantiation: reloptions.c:pg_memory_is_all_zeros Unexecuted instantiation: session.c:pg_memory_is_all_zeros Unexecuted instantiation: tidstore.c:pg_memory_is_all_zeros Unexecuted instantiation: ginbtree.c:pg_memory_is_all_zeros Unexecuted instantiation: ginbulk.c:pg_memory_is_all_zeros Unexecuted instantiation: ginfast.c:pg_memory_is_all_zeros Unexecuted instantiation: ginget.c:pg_memory_is_all_zeros Unexecuted instantiation: gininsert.c:pg_memory_is_all_zeros Unexecuted instantiation: ginscan.c:pg_memory_is_all_zeros Unexecuted instantiation: ginvacuum.c:pg_memory_is_all_zeros Unexecuted instantiation: ginxlog.c:pg_memory_is_all_zeros Unexecuted instantiation: gist.c:pg_memory_is_all_zeros Unexecuted instantiation: gistbuild.c:pg_memory_is_all_zeros Unexecuted instantiation: gistget.c:pg_memory_is_all_zeros Unexecuted instantiation: gistscan.c:pg_memory_is_all_zeros Unexecuted instantiation: gistvacuum.c:pg_memory_is_all_zeros Unexecuted instantiation: gistxlog.c:pg_memory_is_all_zeros Unexecuted instantiation: heapam_handler.c:pg_memory_is_all_zeros Unexecuted instantiation: rewriteheap.c:pg_memory_is_all_zeros Unexecuted instantiation: nbtpage.c:pg_memory_is_all_zeros Unexecuted instantiation: nbtpreprocesskeys.c:pg_memory_is_all_zeros Unexecuted instantiation: nbtree.c:pg_memory_is_all_zeros Unexecuted instantiation: nbtxlog.c:pg_memory_is_all_zeros Unexecuted instantiation: spginsert.c:pg_memory_is_all_zeros Unexecuted instantiation: spgscan.c:pg_memory_is_all_zeros Unexecuted instantiation: spgxlog.c:pg_memory_is_all_zeros Unexecuted instantiation: commit_ts.c:pg_memory_is_all_zeros Unexecuted instantiation: multixact.c:pg_memory_is_all_zeros Unexecuted instantiation: parallel.c:pg_memory_is_all_zeros Unexecuted instantiation: rmgr.c:pg_memory_is_all_zeros Unexecuted instantiation: slru.c:pg_memory_is_all_zeros Unexecuted instantiation: twophase.c:pg_memory_is_all_zeros Unexecuted instantiation: xact.c:pg_memory_is_all_zeros Unexecuted instantiation: xlogfuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: xloginsert.c:pg_memory_is_all_zeros Unexecuted instantiation: xlogprefetcher.c:pg_memory_is_all_zeros Unexecuted instantiation: bootparse.c:pg_memory_is_all_zeros Unexecuted instantiation: bootstrap.c:pg_memory_is_all_zeros Unexecuted instantiation: dependency.c:pg_memory_is_all_zeros Unexecuted instantiation: index.c:pg_memory_is_all_zeros Unexecuted instantiation: indexing.c:pg_memory_is_all_zeros Unexecuted instantiation: namespace.c:pg_memory_is_all_zeros Unexecuted instantiation: objectaddress.c:pg_memory_is_all_zeros Unexecuted instantiation: pg_enum.c:pg_memory_is_all_zeros Unexecuted instantiation: pg_proc.c:pg_memory_is_all_zeros Unexecuted instantiation: pg_publication.c:pg_memory_is_all_zeros Unexecuted instantiation: pg_shdepend.c:pg_memory_is_all_zeros Unexecuted instantiation: pg_subscription.c:pg_memory_is_all_zeros Unexecuted instantiation: storage.c:pg_memory_is_all_zeros Unexecuted instantiation: parse_func.c:pg_memory_is_all_zeros Unexecuted instantiation: parse_param.c:pg_memory_is_all_zeros Unexecuted instantiation: parse_relation.c:pg_memory_is_all_zeros Unexecuted instantiation: parse_target.c:pg_memory_is_all_zeros Unexecuted instantiation: analyze.c:pg_memory_is_all_zeros Unexecuted instantiation: async.c:pg_memory_is_all_zeros Unexecuted instantiation: constraint.c:pg_memory_is_all_zeros Unexecuted instantiation: copy.c:pg_memory_is_all_zeros Unexecuted instantiation: copyfrom.c:pg_memory_is_all_zeros Unexecuted instantiation: copyfromparse.c:pg_memory_is_all_zeros Unexecuted instantiation: copyto.c:pg_memory_is_all_zeros Unexecuted instantiation: createas.c:pg_memory_is_all_zeros Unexecuted instantiation: event_trigger.c:pg_memory_is_all_zeros Unexecuted instantiation: explain.c:pg_memory_is_all_zeros Unexecuted instantiation: explain_dr.c:pg_memory_is_all_zeros Unexecuted instantiation: explain_format.c:pg_memory_is_all_zeros Unexecuted instantiation: explain_state.c:pg_memory_is_all_zeros Unexecuted instantiation: extension.c:pg_memory_is_all_zeros Unexecuted instantiation: functioncmds.c:pg_memory_is_all_zeros Unexecuted instantiation: indexcmds.c:pg_memory_is_all_zeros Unexecuted instantiation: matview.c:pg_memory_is_all_zeros Unexecuted instantiation: policy.c:pg_memory_is_all_zeros Unexecuted instantiation: portalcmds.c:pg_memory_is_all_zeros Unexecuted instantiation: prepare.c:pg_memory_is_all_zeros Unexecuted instantiation: repack.c:pg_memory_is_all_zeros Unexecuted instantiation: repack_worker.c:pg_memory_is_all_zeros Unexecuted instantiation: seclabel.c:pg_memory_is_all_zeros Unexecuted instantiation: sequence.c:pg_memory_is_all_zeros Unexecuted instantiation: subscriptioncmds.c:pg_memory_is_all_zeros Unexecuted instantiation: tablecmds.c:pg_memory_is_all_zeros Unexecuted instantiation: tablespace.c:pg_memory_is_all_zeros Unexecuted instantiation: trigger.c:pg_memory_is_all_zeros Unexecuted instantiation: tsearchcmds.c:pg_memory_is_all_zeros Unexecuted instantiation: typecmds.c:pg_memory_is_all_zeros Unexecuted instantiation: vacuum.c:pg_memory_is_all_zeros Unexecuted instantiation: wait.c:pg_memory_is_all_zeros Unexecuted instantiation: execAmi.c:pg_memory_is_all_zeros Unexecuted instantiation: execAsync.c:pg_memory_is_all_zeros Unexecuted instantiation: execCurrent.c:pg_memory_is_all_zeros Unexecuted instantiation: execExpr.c:pg_memory_is_all_zeros Unexecuted instantiation: execExprInterp.c:pg_memory_is_all_zeros Unexecuted instantiation: execGrouping.c:pg_memory_is_all_zeros Unexecuted instantiation: execIndexing.c:pg_memory_is_all_zeros Unexecuted instantiation: execJunk.c:pg_memory_is_all_zeros Unexecuted instantiation: execMain.c:pg_memory_is_all_zeros Unexecuted instantiation: execParallel.c:pg_memory_is_all_zeros Unexecuted instantiation: execPartition.c:pg_memory_is_all_zeros Unexecuted instantiation: execProcnode.c:pg_memory_is_all_zeros Unexecuted instantiation: execReplication.c:pg_memory_is_all_zeros Unexecuted instantiation: execSRF.c:pg_memory_is_all_zeros Unexecuted instantiation: execScan.c:pg_memory_is_all_zeros Unexecuted instantiation: execTuples.c:pg_memory_is_all_zeros Unexecuted instantiation: execUtils.c:pg_memory_is_all_zeros Unexecuted instantiation: functions.c:pg_memory_is_all_zeros Unexecuted instantiation: instrument.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeAgg.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeAppend.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeBitmapAnd.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeBitmapHeapscan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeBitmapIndexscan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeBitmapOr.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeCtescan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeCustom.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeForeignscan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeFunctionscan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeGather.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeGatherMerge.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeGroup.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeHash.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeHashjoin.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeIncrementalSort.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeIndexonlyscan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeIndexscan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeLimit.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeLockRows.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeMaterial.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeMemoize.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeMergeAppend.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeMergejoin.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeModifyTable.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeNamedtuplestorescan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeNestloop.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeProjectSet.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeRecursiveunion.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeResult.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeSamplescan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeSeqscan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeSetOp.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeSort.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeSubplan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeSubqueryscan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeTableFuncscan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeTidrangescan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeTidscan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeUnique.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeValuesscan.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeWindowAgg.c:pg_memory_is_all_zeros Unexecuted instantiation: nodeWorktablescan.c:pg_memory_is_all_zeros Unexecuted instantiation: spi.c:pg_memory_is_all_zeros Unexecuted instantiation: foreign.c:pg_memory_is_all_zeros Unexecuted instantiation: integerset.c:pg_memory_is_all_zeros Unexecuted instantiation: knapsack.c:pg_memory_is_all_zeros Unexecuted instantiation: auth.c:pg_memory_is_all_zeros Unexecuted instantiation: be-fsstubs.c:pg_memory_is_all_zeros Unexecuted instantiation: crypt.c:pg_memory_is_all_zeros Unexecuted instantiation: hba.c:pg_memory_is_all_zeros Unexecuted instantiation: pqcomm.c:pg_memory_is_all_zeros Unexecuted instantiation: list.c:pg_memory_is_all_zeros Unexecuted instantiation: params.c:pg_memory_is_all_zeros Unexecuted instantiation: tidbitmap.c:pg_memory_is_all_zeros Unexecuted instantiation: geqo_eval.c:pg_memory_is_all_zeros Unexecuted instantiation: costsize.c:pg_memory_is_all_zeros Unexecuted instantiation: equivclass.c:pg_memory_is_all_zeros Unexecuted instantiation: joinpath.c:pg_memory_is_all_zeros Unexecuted instantiation: joinrels.c:pg_memory_is_all_zeros Unexecuted instantiation: planner.c:pg_memory_is_all_zeros Unexecuted instantiation: subselect.c:pg_memory_is_all_zeros Unexecuted instantiation: prepagg.c:pg_memory_is_all_zeros Unexecuted instantiation: prepjointree.c:pg_memory_is_all_zeros Unexecuted instantiation: clauses.c:pg_memory_is_all_zeros Unexecuted instantiation: extendplan.c:pg_memory_is_all_zeros Unexecuted instantiation: pathnode.c:pg_memory_is_all_zeros Unexecuted instantiation: predtest.c:pg_memory_is_all_zeros Unexecuted instantiation: partbounds.c:pg_memory_is_all_zeros Unexecuted instantiation: partdesc.c:pg_memory_is_all_zeros Unexecuted instantiation: partprune.c:pg_memory_is_all_zeros Unexecuted instantiation: autovacuum.c:pg_memory_is_all_zeros Unexecuted instantiation: auxprocess.c:pg_memory_is_all_zeros Unexecuted instantiation: bgworker.c:pg_memory_is_all_zeros Unexecuted instantiation: bgwriter.c:pg_memory_is_all_zeros Unexecuted instantiation: checkpointer.c:pg_memory_is_all_zeros Unexecuted instantiation: interrupt.c:pg_memory_is_all_zeros Unexecuted instantiation: launch_backend.c:pg_memory_is_all_zeros Unexecuted instantiation: pgarch.c:pg_memory_is_all_zeros Unexecuted instantiation: postmaster.c:pg_memory_is_all_zeros Unexecuted instantiation: startup.c:pg_memory_is_all_zeros Unexecuted instantiation: syslogger.c:pg_memory_is_all_zeros Unexecuted instantiation: walsummarizer.c:pg_memory_is_all_zeros Unexecuted instantiation: walwriter.c:pg_memory_is_all_zeros Unexecuted instantiation: applyparallelworker.c:pg_memory_is_all_zeros Unexecuted instantiation: conflict.c:pg_memory_is_all_zeros Unexecuted instantiation: launcher.c:pg_memory_is_all_zeros Unexecuted instantiation: logical.c:pg_memory_is_all_zeros Unexecuted instantiation: logicalfuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: origin.c:pg_memory_is_all_zeros Unexecuted instantiation: relation.c:pg_memory_is_all_zeros Unexecuted instantiation: reorderbuffer.c:pg_memory_is_all_zeros Unexecuted instantiation: sequencesync.c:pg_memory_is_all_zeros Unexecuted instantiation: slotsync.c:pg_memory_is_all_zeros Unexecuted instantiation: snapbuild.c:pg_memory_is_all_zeros Unexecuted instantiation: syncutils.c:pg_memory_is_all_zeros Unexecuted instantiation: worker.c:pg_memory_is_all_zeros Unexecuted instantiation: slotfuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: walreceiver.c:pg_memory_is_all_zeros Unexecuted instantiation: walsender.c:pg_memory_is_all_zeros Unexecuted instantiation: rewriteHandler.c:pg_memory_is_all_zeros Unexecuted instantiation: basebackup_copy.c:pg_memory_is_all_zeros Unexecuted instantiation: basebackup_incremental.c:pg_memory_is_all_zeros Unexecuted instantiation: basebackup_target.c:pg_memory_is_all_zeros Unexecuted instantiation: walsummaryfuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: dependencies.c:pg_memory_is_all_zeros Unexecuted instantiation: extended_stats.c:pg_memory_is_all_zeros Unexecuted instantiation: mcv.c:pg_memory_is_all_zeros Unexecuted instantiation: stat_utils.c:pg_memory_is_all_zeros Unexecuted instantiation: aio_funcs.c:pg_memory_is_all_zeros Unexecuted instantiation: bufmgr.c:pg_memory_is_all_zeros Unexecuted instantiation: localbuf.c:pg_memory_is_all_zeros Unexecuted instantiation: reinit.c:pg_memory_is_all_zeros Unexecuted instantiation: dsm.c:pg_memory_is_all_zeros Unexecuted instantiation: dsm_impl.c:pg_memory_is_all_zeros Unexecuted instantiation: dsm_registry.c:pg_memory_is_all_zeros Unexecuted instantiation: pmsignal.c:pg_memory_is_all_zeros Unexecuted instantiation: procsignal.c:pg_memory_is_all_zeros Unexecuted instantiation: shm_mq.c:pg_memory_is_all_zeros Unexecuted instantiation: shmem.c:pg_memory_is_all_zeros Unexecuted instantiation: shmem_hash.c:pg_memory_is_all_zeros Unexecuted instantiation: waiteventset.c:pg_memory_is_all_zeros Unexecuted instantiation: deadlock.c:pg_memory_is_all_zeros Unexecuted instantiation: lock.c:pg_memory_is_all_zeros Unexecuted instantiation: lwlock.c:pg_memory_is_all_zeros Unexecuted instantiation: bufpage.c:pg_memory_is_all_zeros Unexecuted instantiation: md.c:pg_memory_is_all_zeros Unexecuted instantiation: sync.c:pg_memory_is_all_zeros Unexecuted instantiation: backend_startup.c:pg_memory_is_all_zeros Unexecuted instantiation: postgres.c:pg_memory_is_all_zeros Unexecuted instantiation: pquery.c:pg_memory_is_all_zeros Unexecuted instantiation: utility.c:pg_memory_is_all_zeros Unexecuted instantiation: dict.c:pg_memory_is_all_zeros Unexecuted instantiation: dict_ispell.c:pg_memory_is_all_zeros Unexecuted instantiation: dict_simple.c:pg_memory_is_all_zeros Unexecuted instantiation: dict_synonym.c:pg_memory_is_all_zeros Unexecuted instantiation: dict_thesaurus.c:pg_memory_is_all_zeros Unexecuted instantiation: spell.c:pg_memory_is_all_zeros Unexecuted instantiation: to_tsany.c:pg_memory_is_all_zeros Unexecuted instantiation: ts_parse.c:pg_memory_is_all_zeros Unexecuted instantiation: ts_selfuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: ts_typanalyze.c:pg_memory_is_all_zeros Unexecuted instantiation: ts_utils.c:pg_memory_is_all_zeros Unexecuted instantiation: wparser.c:pg_memory_is_all_zeros Unexecuted instantiation: wparser_def.c:pg_memory_is_all_zeros Unexecuted instantiation: backend_status.c:pg_memory_is_all_zeros Unexecuted instantiation: pgstat.c:pg_memory_is_all_zeros Unexecuted instantiation: pgstat_backend.c:pg_memory_is_all_zeros Unexecuted instantiation: pgstat_bgwriter.c:pg_memory_is_all_zeros Unexecuted instantiation: pgstat_checkpointer.c:pg_memory_is_all_zeros Unexecuted instantiation: pgstat_index.c:pg_memory_is_all_zeros Unexecuted instantiation: pgstat_kind.c:pg_memory_is_all_zeros Unexecuted instantiation: pgstat_relation.c:pg_memory_is_all_zeros Unexecuted instantiation: pgstat_shmem.c:pg_memory_is_all_zeros Unexecuted instantiation: pgstat_xact.c:pg_memory_is_all_zeros Unexecuted instantiation: wait_event_funcs.c:pg_memory_is_all_zeros Unexecuted instantiation: acl.c:pg_memory_is_all_zeros Unexecuted instantiation: array_expanded.c:pg_memory_is_all_zeros Unexecuted instantiation: array_userfuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: arrayfuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: arrayutils.c:pg_memory_is_all_zeros Unexecuted instantiation: bytea.c:pg_memory_is_all_zeros Unexecuted instantiation: datetime.c:pg_memory_is_all_zeros Unexecuted instantiation: ddlutils.c:pg_memory_is_all_zeros Unexecuted instantiation: domains.c:pg_memory_is_all_zeros Unexecuted instantiation: encode.c:pg_memory_is_all_zeros Unexecuted instantiation: expandeddatum.c:pg_memory_is_all_zeros Unexecuted instantiation: expandedrecord.c:pg_memory_is_all_zeros Unexecuted instantiation: formatting.c:pg_memory_is_all_zeros Unexecuted instantiation: genfile.c:pg_memory_is_all_zeros Unexecuted instantiation: hbafuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: int.c:pg_memory_is_all_zeros Unexecuted instantiation: int8.c:pg_memory_is_all_zeros Unexecuted instantiation: json.c:pg_memory_is_all_zeros Unexecuted instantiation: jsonb.c:pg_memory_is_all_zeros Unexecuted instantiation: jsonb_util.c:pg_memory_is_all_zeros Unexecuted instantiation: jsonfuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: jsonpath_exec.c:pg_memory_is_all_zeros Unexecuted instantiation: lockfuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: mcxtfuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: misc.c:pg_memory_is_all_zeros Unexecuted instantiation: multirangetypes.c:pg_memory_is_all_zeros Unexecuted instantiation: multixactfuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: numeric.c:pg_memory_is_all_zeros Unexecuted instantiation: oracle_compat.c:pg_memory_is_all_zeros Unexecuted instantiation: orderedsetaggs.c:pg_memory_is_all_zeros Unexecuted instantiation: partitionfuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: pg_locale.c:pg_memory_is_all_zeros Unexecuted instantiation: pg_locale_builtin.c:pg_memory_is_all_zeros Unexecuted instantiation: pg_locale_icu.c:pg_memory_is_all_zeros Unexecuted instantiation: pg_locale_libc.c:pg_memory_is_all_zeros Unexecuted instantiation: pgstatfuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: rangetypes.c:pg_memory_is_all_zeros Unexecuted instantiation: regexp.c:pg_memory_is_all_zeros Unexecuted instantiation: ri_triggers.c:pg_memory_is_all_zeros Unexecuted instantiation: rowtypes.c:pg_memory_is_all_zeros Unexecuted instantiation: ruleutils.c:pg_memory_is_all_zeros Unexecuted instantiation: selfuncs.c:pg_memory_is_all_zeros Unexecuted instantiation: timestamp.c:pg_memory_is_all_zeros Unexecuted instantiation: tsginidx.c:pg_memory_is_all_zeros Unexecuted instantiation: tsgistidx.c:pg_memory_is_all_zeros Unexecuted instantiation: tsquery.c:pg_memory_is_all_zeros Unexecuted instantiation: tsquery_cleanup.c:pg_memory_is_all_zeros Unexecuted instantiation: tsquery_gist.c:pg_memory_is_all_zeros Unexecuted instantiation: tsquery_op.c:pg_memory_is_all_zeros Unexecuted instantiation: tsquery_rewrite.c:pg_memory_is_all_zeros Unexecuted instantiation: tsquery_util.c:pg_memory_is_all_zeros Unexecuted instantiation: tsrank.c:pg_memory_is_all_zeros Unexecuted instantiation: tsvector.c:pg_memory_is_all_zeros Unexecuted instantiation: tsvector_op.c:pg_memory_is_all_zeros Unexecuted instantiation: tsvector_parser.c:pg_memory_is_all_zeros Unexecuted instantiation: varlena.c:pg_memory_is_all_zeros Unexecuted instantiation: xid8funcs.c:pg_memory_is_all_zeros Unexecuted instantiation: catcache.c:pg_memory_is_all_zeros Unexecuted instantiation: evtcache.c:pg_memory_is_all_zeros Unexecuted instantiation: funccache.c:pg_memory_is_all_zeros Unexecuted instantiation: inval.c:pg_memory_is_all_zeros Unexecuted instantiation: partcache.c:pg_memory_is_all_zeros Unexecuted instantiation: plancache.c:pg_memory_is_all_zeros Unexecuted instantiation: relcache.c:pg_memory_is_all_zeros Unexecuted instantiation: ts_cache.c:pg_memory_is_all_zeros Unexecuted instantiation: typcache.c:pg_memory_is_all_zeros Unexecuted instantiation: elog.c:pg_memory_is_all_zeros Unexecuted instantiation: funcapi.c:pg_memory_is_all_zeros Unexecuted instantiation: dynahash.c:pg_memory_is_all_zeros Unexecuted instantiation: miscinit.c:pg_memory_is_all_zeros Unexecuted instantiation: postinit.c:pg_memory_is_all_zeros Unexecuted instantiation: mbutils.c:pg_memory_is_all_zeros Unexecuted instantiation: guc.c:pg_memory_is_all_zeros Unexecuted instantiation: guc-file.c:pg_memory_is_all_zeros Unexecuted instantiation: guc_funcs.c:pg_memory_is_all_zeros Unexecuted instantiation: guc_tables.c:pg_memory_is_all_zeros Unexecuted instantiation: pg_config.c:pg_memory_is_all_zeros Unexecuted instantiation: pg_controldata.c:pg_memory_is_all_zeros Unexecuted instantiation: tzparser.c:pg_memory_is_all_zeros Unexecuted instantiation: alignedalloc.c:pg_memory_is_all_zeros Unexecuted instantiation: aset.c:pg_memory_is_all_zeros Unexecuted instantiation: bump.c:pg_memory_is_all_zeros Unexecuted instantiation: dsa.c:pg_memory_is_all_zeros Unexecuted instantiation: generation.c:pg_memory_is_all_zeros Unexecuted instantiation: mcxt.c:pg_memory_is_all_zeros Unexecuted instantiation: portalmem.c:pg_memory_is_all_zeros Unexecuted instantiation: slab.c:pg_memory_is_all_zeros Unexecuted instantiation: resowner.c:pg_memory_is_all_zeros Unexecuted instantiation: logtape.c:pg_memory_is_all_zeros Unexecuted instantiation: tuplesort.c:pg_memory_is_all_zeros Unexecuted instantiation: tuplesortvariants.c:pg_memory_is_all_zeros Unexecuted instantiation: tuplestore.c:pg_memory_is_all_zeros Unexecuted instantiation: combocid.c:pg_memory_is_all_zeros Unexecuted instantiation: snapmgr.c:pg_memory_is_all_zeros Unexecuted instantiation: blkreftable.c:pg_memory_is_all_zeros Unexecuted instantiation: psprintf.c:pg_memory_is_all_zeros Unexecuted instantiation: saslprep.c:pg_memory_is_all_zeros Unexecuted instantiation: stringinfo.c:pg_memory_is_all_zeros Unexecuted instantiation: unicode_norm.c:pg_memory_is_all_zeros Unexecuted instantiation: simple_query_fuzzer.c:pg_memory_is_all_zeros |
321 | | |
322 | | #endif /* MEMUTILS_H */ |