PostgreSQL Source Code  git master
mcxt.c File Reference
#include "postgres.h"
#include "mb/pg_wchar.h"
#include "miscadmin.h"
#include "utils/memdebug.h"
#include "utils/memutils.h"
Include dependency graph for mcxt.c:

Go to the source code of this file.

Macros

#define AssertNotInCriticalSection(context)   Assert(CritSectionCount == 0 || (context)->allowInCritSection)
 

Functions

static void MemoryContextCallResetCallbacks (MemoryContext context)
 
static void MemoryContextStatsInternal (MemoryContext context, int level, bool print, int max_children, MemoryContextCounters *totals)
 
static void MemoryContextStatsPrint (MemoryContext context, void *passthru, const char *stats_string)
 
void MemoryContextInit (void)
 
void MemoryContextReset (MemoryContext context)
 
void MemoryContextResetOnly (MemoryContext context)
 
void MemoryContextResetChildren (MemoryContext context)
 
void MemoryContextDelete (MemoryContext context)
 
void MemoryContextDeleteChildren (MemoryContext context)
 
void MemoryContextRegisterResetCallback (MemoryContext context, MemoryContextCallback *cb)
 
void MemoryContextSetIdentifier (MemoryContext context, const char *id)
 
void MemoryContextSetParent (MemoryContext context, MemoryContext new_parent)
 
void MemoryContextAllowInCriticalSection (MemoryContext context, bool allow)
 
Size GetMemoryChunkSpace (void *pointer)
 
MemoryContext MemoryContextGetParent (MemoryContext context)
 
bool MemoryContextIsEmpty (MemoryContext context)
 
Size MemoryContextMemAllocated (MemoryContext context, bool recurse)
 
void MemoryContextStats (MemoryContext context)
 
void MemoryContextStatsDetail (MemoryContext context, int max_children)
 
bool MemoryContextContains (MemoryContext context, void *pointer)
 
void MemoryContextCreate (MemoryContext node, NodeTag tag, const MemoryContextMethods *methods, MemoryContext parent, const char *name)
 
void * MemoryContextAlloc (MemoryContext context, Size size)
 
void * MemoryContextAllocZero (MemoryContext context, Size size)
 
void * MemoryContextAllocZeroAligned (MemoryContext context, Size size)
 
void * MemoryContextAllocExtended (MemoryContext context, Size size, int flags)
 
void * palloc (Size size)
 
void * palloc0 (Size size)
 
void * palloc_extended (Size size, int flags)
 
void pfree (void *pointer)
 
void * repalloc (void *pointer, Size size)
 
void * MemoryContextAllocHuge (MemoryContext context, Size size)
 
void * repalloc_huge (void *pointer, Size size)
 
char * MemoryContextStrdup (MemoryContext context, const char *string)
 
char * pstrdup (const char *in)
 
char * pnstrdup (const char *in, Size len)
 
char * pchomp (const char *in)
 

Variables

MemoryContext CurrentMemoryContext = NULL
 
MemoryContext TopMemoryContext = NULL
 
MemoryContext ErrorContext = NULL
 
MemoryContext PostmasterContext = NULL
 
MemoryContext CacheMemoryContext = NULL
 
MemoryContext MessageContext = NULL
 
MemoryContext TopTransactionContext = NULL
 
MemoryContext CurTransactionContext = NULL
 
MemoryContext PortalContext = NULL
 

Macro Definition Documentation

◆ AssertNotInCriticalSection

#define AssertNotInCriticalSection (   context)    Assert(CritSectionCount == 0 || (context)->allowInCritSection)

Function Documentation

◆ GetMemoryChunkSpace()

◆ MemoryContextAlloc()

void* MemoryContextAlloc ( MemoryContext  context,
Size  size 
)

Definition at line 796 of file mcxt.c.

References MemoryContextMethods::alloc, AllocSizeIsValid, AssertArg, AssertNotInCriticalSection, elog, ereport, errcode(), errdetail(), errmsg(), ERROR, MemoryContextData::isReset, MemoryContextIsValid, MemoryContextStats(), MemoryContextData::methods, MemoryContextData::name, unlikely, and VALGRIND_MEMPOOL_ALLOC.

Referenced by _bt_getroot(), _bt_getrootheight(), _bt_heapkeyspace(), _fdvec_resize(), _hash_getcachedmetap(), AddInvalidationMessage(), afterTriggerAddEvent(), AfterTriggerBeginSubXact(), AfterTriggerEnlargeQueryState(), allocate_record_info(), array_fill_internal(), array_in(), array_out(), array_position_common(), array_positions(), array_recv(), array_send(), array_to_text_internal(), Async_Notify(), AtSubCommit_childXids(), BackendRun(), be_tls_open_server(), build_concat_foutcache(), build_dummy_expanded_header(), compute_array_stats(), copy_byval_expanded_array(), CopySnapshot(), copytup_index(), dblink_connect(), dblink_init(), deconstruct_expanded_record(), dense_alloc(), do_start_bgworker(), domain_state_setup(), dsm_create_descriptor(), dsm_impl_sysv(), DynaHashAlloc(), enlarge_list(), EventTriggerBeginCompleteQuery(), exec_eval_using_params(), ExecHashBuildSkewHash(), ExecHashSkewTableInsert(), ExecParallelRetrieveJitInstrumentation(), ExecSetSlotDescriptor(), expand_array(), fetch_array_arg_replace_nulls(), get_attribute_options(), get_range_io_data(), get_tablespace(), get_tabstat_stack_level(), GetComboCommandId(), GetFdwRoutineForRelation(), GetLocalBufferStorage(), GetLockConflicts(), gtrgm_consistent(), gtrgm_distance(), gtrgm_penalty(), hstore_from_record(), hstore_populate_record(), initArrayResult(), initArrayResultAny(), initBloomState(), initialize_reloptions(), InitializeParallelDSM(), InitIndexAmRoutine(), InitXLogInsert(), insertStatEntry(), intset_new_internal_node(), intset_new_leaf_node(), inv_open(), list_delete_nth_cell(), load_domaintype_info(), load_relcache_init_file(), LockAcquireExtended(), logical_rewrite_log_mapping(), lookup_hash_entry(), lookup_ts_config_cache(), make_expanded_record_from_exprecord(), make_expanded_record_from_tupdesc(), make_expanded_record_from_typeid(), makeBoolAggState(), MemoryContextStrdup(), mXactCachePut(), on_dsm_detach(), packGraph(), PageSetChecksumCopy(), pg_column_size(), pg_newlocale_from_collation(), pg_stat_get_backend_idset(), pgstat_read_current_status(), plpgsql_create_econtext(), plpgsql_start_datums(), PLy_push_execution_context(), PLy_subtransaction_enter(), PortalSetResultFormat(), pq_init(), PrepareClientEncoding(), PrepareSortSupportComparisonShim(), PrepareTempTablespaces(), PushActiveSnapshot(), px_find_digest(), queue_listen(), readtup_alloc(), record_cmp(), record_eq(), record_image_cmp(), record_image_eq(), record_in(), record_out(), record_recv(), record_send(), RegisterExprContextCallback(), RegisterResourceReleaseCallback(), RegisterSubXactCallback(), RegisterXactCallback(), RelationBuildRuleLock(), RelationBuildTupleDesc(), RelationCreateStorage(), RelationDropStorage(), RelationParseRelOptions(), ReorderBufferAddInvalidations(), ReorderBufferAllocate(), ReorderBufferGetChange(), ReorderBufferGetRelids(), ReorderBufferGetTupleBuf(), ReorderBufferGetTXN(), ReorderBufferRestoreChange(), ReorderBufferSerializeReserve(), RequestNamedLWLockTranche(), ResourceArrayEnlarge(), RestoreSnapshot(), setop_fill_hash_table(), setup_background_workers(), shm_mq_receive(), SnapBuildPurgeCommittedTxn(), SPI_connect_ext(), SPI_palloc(), sts_read_tuple(), tbm_begin_iterate(), tstoreStartupReceiver(), tts_virtual_materialize(), txid_snapshot_xip(), varstrfastcmp_locale(), and xml_is_document().

797 {
798  void *ret;
799 
802 
803  if (!AllocSizeIsValid(size))
804  elog(ERROR, "invalid memory alloc request size %zu", size);
805 
806  context->isReset = false;
807 
808  ret = context->methods->alloc(context, size);
809  if (unlikely(ret == NULL))
810  {
812 
813  /*
814  * Here, and elsewhere in this module, we show the target context's
815  * "name" but not its "ident" (if any) in user-visible error messages.
816  * The "ident" string might contain security-sensitive data, such as
817  * values in SQL commands.
818  */
819  ereport(ERROR,
820  (errcode(ERRCODE_OUT_OF_MEMORY),
821  errmsg("out of memory"),
822  errdetail("Failed on request of size %zu in memory context \"%s\".",
823  size, context->name)));
824  }
825 
826  VALGRIND_MEMPOOL_ALLOC(context, ret, size);
827 
828  return ret;
829 }
const MemoryContextMethods * methods
Definition: memnodes.h:83
int errcode(int sqlerrcode)
Definition: elog.c:608
#define AssertNotInCriticalSection(context)
Definition: mcxt.c:67
#define ERROR
Definition: elog.h:43
void MemoryContextStats(MemoryContext context)
Definition: mcxt.c:498
int errdetail(const char *fmt,...)
Definition: elog.c:957
void *(* alloc)(MemoryContext context, Size size)
Definition: memnodes.h:59
#define ereport(elevel, rest)
Definition: elog.h:141
#define AssertArg(condition)
Definition: c.h:735
MemoryContext TopMemoryContext
Definition: mcxt.c:44
#define AllocSizeIsValid(size)
Definition: memutils.h:42
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
#define VALGRIND_MEMPOOL_ALLOC(context, addr, size)
Definition: memdebug.h:29
int errmsg(const char *fmt,...)
Definition: elog.c:822
#define elog(elevel,...)
Definition: elog.h:228
#define unlikely(x)
Definition: c.h:208
const char * name
Definition: memnodes.h:88

◆ MemoryContextAllocExtended()

void* MemoryContextAllocExtended ( MemoryContext  context,
Size  size,
int  flags 
)

Definition at line 912 of file mcxt.c.

References MemoryContextMethods::alloc, AllocHugeSizeIsValid, AllocSizeIsValid, AssertArg, AssertNotInCriticalSection, elog, ereport, errcode(), errdetail(), errmsg(), ERROR, MemoryContextData::isReset, MCXT_ALLOC_HUGE, MCXT_ALLOC_NO_OOM, MCXT_ALLOC_ZERO, MemoryContextIsValid, MemoryContextStats(), MemSetAligned, MemoryContextData::methods, MemoryContextData::name, unlikely, and VALGRIND_MEMPOOL_ALLOC.

Referenced by pagetable_allocate().

913 {
914  void *ret;
915 
918 
919  if (((flags & MCXT_ALLOC_HUGE) != 0 && !AllocHugeSizeIsValid(size)) ||
920  ((flags & MCXT_ALLOC_HUGE) == 0 && !AllocSizeIsValid(size)))
921  elog(ERROR, "invalid memory alloc request size %zu", size);
922 
923  context->isReset = false;
924 
925  ret = context->methods->alloc(context, size);
926  if (unlikely(ret == NULL))
927  {
928  if ((flags & MCXT_ALLOC_NO_OOM) == 0)
929  {
931  ereport(ERROR,
932  (errcode(ERRCODE_OUT_OF_MEMORY),
933  errmsg("out of memory"),
934  errdetail("Failed on request of size %zu in memory context \"%s\".",
935  size, context->name)));
936  }
937  return NULL;
938  }
939 
940  VALGRIND_MEMPOOL_ALLOC(context, ret, size);
941 
942  if ((flags & MCXT_ALLOC_ZERO) != 0)
943  MemSetAligned(ret, 0, size);
944 
945  return ret;
946 }
#define MemSetAligned(start, val, len)
Definition: c.h:989
#define MCXT_ALLOC_HUGE
Definition: fe_memutils.h:16
const MemoryContextMethods * methods
Definition: memnodes.h:83
#define MCXT_ALLOC_NO_OOM
Definition: fe_memutils.h:18
int errcode(int sqlerrcode)
Definition: elog.c:608
#define AssertNotInCriticalSection(context)
Definition: mcxt.c:67
#define ERROR
Definition: elog.h:43
void MemoryContextStats(MemoryContext context)
Definition: mcxt.c:498
int errdetail(const char *fmt,...)
Definition: elog.c:957
void *(* alloc)(MemoryContext context, Size size)
Definition: memnodes.h:59
#define ereport(elevel, rest)
Definition: elog.h:141
#define AssertArg(condition)
Definition: c.h:735
MemoryContext TopMemoryContext
Definition: mcxt.c:44
#define AllocSizeIsValid(size)
Definition: memutils.h:42
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
#define VALGRIND_MEMPOOL_ALLOC(context, addr, size)
Definition: memdebug.h:29
#define MCXT_ALLOC_ZERO
Definition: fe_memutils.h:19
#define AllocHugeSizeIsValid(size)
Definition: memutils.h:46
int errmsg(const char *fmt,...)
Definition: elog.c:822
#define elog(elevel,...)
Definition: elog.h:228
#define unlikely(x)
Definition: c.h:208
const char * name
Definition: memnodes.h:88

◆ MemoryContextAllocHuge()

void* MemoryContextAllocHuge ( MemoryContext  context,
Size  size 
)

Definition at line 1105 of file mcxt.c.

References MemoryContextMethods::alloc, AllocHugeSizeIsValid, AssertArg, AssertNotInCriticalSection, elog, ereport, errcode(), errdetail(), errmsg(), ERROR, MemoryContextData::isReset, MemoryContextIsValid, MemoryContextStats(), MemoryContextData::methods, MemoryContextData::name, unlikely, and VALGRIND_MEMPOOL_ALLOC.

Referenced by perform_default_encoding_conversion(), pg_buffercache_pages(), pg_do_encoding_conversion(), and pgstat_read_current_status().

1106 {
1107  void *ret;
1108 
1109  AssertArg(MemoryContextIsValid(context));
1110  AssertNotInCriticalSection(context);
1111 
1112  if (!AllocHugeSizeIsValid(size))
1113  elog(ERROR, "invalid memory alloc request size %zu", size);
1114 
1115  context->isReset = false;
1116 
1117  ret = context->methods->alloc(context, size);
1118  if (unlikely(ret == NULL))
1119  {
1121  ereport(ERROR,
1122  (errcode(ERRCODE_OUT_OF_MEMORY),
1123  errmsg("out of memory"),
1124  errdetail("Failed on request of size %zu in memory context \"%s\".",
1125  size, context->name)));
1126  }
1127 
1128  VALGRIND_MEMPOOL_ALLOC(context, ret, size);
1129 
1130  return ret;
1131 }
const MemoryContextMethods * methods
Definition: memnodes.h:83
int errcode(int sqlerrcode)
Definition: elog.c:608
#define AssertNotInCriticalSection(context)
Definition: mcxt.c:67
#define ERROR
Definition: elog.h:43
void MemoryContextStats(MemoryContext context)
Definition: mcxt.c:498
int errdetail(const char *fmt,...)
Definition: elog.c:957
void *(* alloc)(MemoryContext context, Size size)
Definition: memnodes.h:59
#define ereport(elevel, rest)
Definition: elog.h:141
#define AssertArg(condition)
Definition: c.h:735
MemoryContext TopMemoryContext
Definition: mcxt.c:44
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
#define VALGRIND_MEMPOOL_ALLOC(context, addr, size)
Definition: memdebug.h:29
#define AllocHugeSizeIsValid(size)
Definition: memutils.h:46
int errmsg(const char *fmt,...)
Definition: elog.c:822
#define elog(elevel,...)
Definition: elog.h:228
#define unlikely(x)
Definition: c.h:208
const char * name
Definition: memnodes.h:88

◆ MemoryContextAllocZero()

void* MemoryContextAllocZero ( MemoryContext  context,
Size  size 
)

Definition at line 839 of file mcxt.c.

References MemoryContextMethods::alloc, AllocSizeIsValid, AssertArg, AssertNotInCriticalSection, elog, ereport, errcode(), errdetail(), errmsg(), ERROR, MemoryContextData::isReset, MemoryContextIsValid, MemoryContextStats(), MemSetAligned, MemoryContextData::methods, MemoryContextData::name, unlikely, and VALGRIND_MEMPOOL_ALLOC.

Referenced by add_tabstat_xact_level(), AllocateAttribute(), array_set_element_expanded(), CreatePortal(), CreateWaitEventSet(), DCH_cache_getnew(), do_compile(), ensure_record_cache_typmod_slot_exists(), ExecHashBuildSkewHash(), ExecParallelRetrieveJitInstrumentation(), expandColorTrigrams(), fmgr_security_definer(), get_tabstat_entry(), gistAllocateNewPageBuffer(), init_MultiFuncCall(), initArrayResultArr(), InitializeSession(), InitXLogInsert(), llvm_create_context(), load_relcache_init_file(), LookupOpclassInfo(), make_expanded_record_from_datum(), newLOfd(), NUM_cache_getnew(), PLy_exec_function(), PLy_function_save_args(), PLy_input_setup_func(), PLy_input_setup_tuple(), PLy_output_setup_func(), PLy_output_setup_tuple(), populate_record_worker(), populate_recordset_worker(), prepare_column_cache(), PrepareInvalidationState(), push_old_value(), PushTransaction(), px_find_cipher(), RegisterLWLockTranches(), RehashCatCache(), RelationBuildPartitionDesc(), RelationBuildPartitionKey(), RelationBuildRowSecurity(), RelationBuildTupleDesc(), RelationInitIndexAccessInfo(), ReorderBufferCopySnap(), ReorderBufferIterTXNInit(), ReorderBufferRestoreChange(), ResourceOwnerCreate(), satisfies_hash_partition(), SetConstraintStateCreate(), SnapBuildBuildSnapshot(), SnapBuildRestore(), SnapBuildSerialize(), spgGetCache(), sts_puttuple(), ts_accum(), ts_stat_sql(), and WinGetPartitionLocalMemory().

840 {
841  void *ret;
842 
845 
846  if (!AllocSizeIsValid(size))
847  elog(ERROR, "invalid memory alloc request size %zu", size);
848 
849  context->isReset = false;
850 
851  ret = context->methods->alloc(context, size);
852  if (unlikely(ret == NULL))
853  {
855  ereport(ERROR,
856  (errcode(ERRCODE_OUT_OF_MEMORY),
857  errmsg("out of memory"),
858  errdetail("Failed on request of size %zu in memory context \"%s\".",
859  size, context->name)));
860  }
861 
862  VALGRIND_MEMPOOL_ALLOC(context, ret, size);
863 
864  MemSetAligned(ret, 0, size);
865 
866  return ret;
867 }
#define MemSetAligned(start, val, len)
Definition: c.h:989
const MemoryContextMethods * methods
Definition: memnodes.h:83
int errcode(int sqlerrcode)
Definition: elog.c:608
#define AssertNotInCriticalSection(context)
Definition: mcxt.c:67
#define ERROR
Definition: elog.h:43
void MemoryContextStats(MemoryContext context)
Definition: mcxt.c:498
int errdetail(const char *fmt,...)
Definition: elog.c:957
void *(* alloc)(MemoryContext context, Size size)
Definition: memnodes.h:59
#define ereport(elevel, rest)
Definition: elog.h:141
#define AssertArg(condition)
Definition: c.h:735
MemoryContext TopMemoryContext
Definition: mcxt.c:44
#define AllocSizeIsValid(size)
Definition: memutils.h:42
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
#define VALGRIND_MEMPOOL_ALLOC(context, addr, size)
Definition: memdebug.h:29
int errmsg(const char *fmt,...)
Definition: elog.c:822
#define elog(elevel,...)
Definition: elog.h:228
#define unlikely(x)
Definition: c.h:208
const char * name
Definition: memnodes.h:88

◆ MemoryContextAllocZeroAligned()

void* MemoryContextAllocZeroAligned ( MemoryContext  context,
Size  size 
)

Definition at line 877 of file mcxt.c.

References MemoryContextMethods::alloc, AllocSizeIsValid, AssertArg, AssertNotInCriticalSection, elog, ereport, errcode(), errdetail(), errmsg(), ERROR, MemoryContextData::isReset, MemoryContextIsValid, MemoryContextStats(), MemSetLoop, MemoryContextData::methods, MemoryContextData::name, unlikely, and VALGRIND_MEMPOOL_ALLOC.

878 {
879  void *ret;
880 
883 
884  if (!AllocSizeIsValid(size))
885  elog(ERROR, "invalid memory alloc request size %zu", size);
886 
887  context->isReset = false;
888 
889  ret = context->methods->alloc(context, size);
890  if (unlikely(ret == NULL))
891  {
893  ereport(ERROR,
894  (errcode(ERRCODE_OUT_OF_MEMORY),
895  errmsg("out of memory"),
896  errdetail("Failed on request of size %zu in memory context \"%s\".",
897  size, context->name)));
898  }
899 
900  VALGRIND_MEMPOOL_ALLOC(context, ret, size);
901 
902  MemSetLoop(ret, 0, size);
903 
904  return ret;
905 }
const MemoryContextMethods * methods
Definition: memnodes.h:83
int errcode(int sqlerrcode)
Definition: elog.c:608
#define AssertNotInCriticalSection(context)
Definition: mcxt.c:67
#define ERROR
Definition: elog.h:43
void MemoryContextStats(MemoryContext context)
Definition: mcxt.c:498
#define MemSetLoop(start, val, len)
Definition: c.h:1024
int errdetail(const char *fmt,...)
Definition: elog.c:957
void *(* alloc)(MemoryContext context, Size size)
Definition: memnodes.h:59
#define ereport(elevel, rest)
Definition: elog.h:141
#define AssertArg(condition)
Definition: c.h:735
MemoryContext TopMemoryContext
Definition: mcxt.c:44
#define AllocSizeIsValid(size)
Definition: memutils.h:42
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
#define VALGRIND_MEMPOOL_ALLOC(context, addr, size)
Definition: memdebug.h:29
int errmsg(const char *fmt,...)
Definition: elog.c:822
#define elog(elevel,...)
Definition: elog.h:228
#define unlikely(x)
Definition: c.h:208
const char * name
Definition: memnodes.h:88

◆ MemoryContextAllowInCriticalSection()

void MemoryContextAllowInCriticalSection ( MemoryContext  context,
bool  allow 
)

Definition at line 411 of file mcxt.c.

References MemoryContextData::allowInCritSection, AssertArg, and MemoryContextIsValid.

Referenced by InitSync(), MemoryContextInit(), and XLOGShmemInit().

412 {
414 
415  context->allowInCritSection = allow;
416 }
bool allowInCritSection
Definition: memnodes.h:81
#define AssertArg(condition)
Definition: c.h:735
#define MemoryContextIsValid(context)
Definition: memnodes.h:102

◆ MemoryContextCallResetCallbacks()

static void MemoryContextCallResetCallbacks ( MemoryContext  context)
static

Definition at line 302 of file mcxt.c.

References MemoryContextCallback::arg, MemoryContextCallback::func, MemoryContextCallback::next, and MemoryContextData::reset_cbs.

Referenced by MemoryContextDelete(), and MemoryContextResetOnly().

303 {
305 
306  /*
307  * We pop each callback from the list before calling. That way, if an
308  * error occurs inside the callback, we won't try to call it a second time
309  * in the likely event that we reset or delete the context later.
310  */
311  while ((cb = context->reset_cbs) != NULL)
312  {
313  context->reset_cbs = cb->next;
314  cb->func(cb->arg);
315  }
316 }
MemoryContextCallbackFunction func
Definition: palloc.h:49
MemoryContextCallback * reset_cbs
Definition: memnodes.h:90
struct MemoryContextCallback * next
Definition: palloc.h:51

◆ MemoryContextContains()

bool MemoryContextContains ( MemoryContext  context,
void *  pointer 
)

Definition at line 691 of file mcxt.c.

References MAXALIGN.

Referenced by eval_windowfunction(), finalize_aggregate(), finalize_partialaggregate(), and finalize_windowaggregate().

692 {
693  MemoryContext ptr_context;
694 
695  /*
696  * NB: Can't use GetMemoryChunkContext() here - that performs assertions
697  * that aren't acceptable here since we might be passed memory not
698  * allocated by any memory context.
699  *
700  * Try to detect bogus pointers handed to us, poorly though we can.
701  * Presumably, a pointer that isn't MAXALIGNED isn't pointing at an
702  * allocated chunk.
703  */
704  if (pointer == NULL || pointer != (void *) MAXALIGN(pointer))
705  return false;
706 
707  /*
708  * OK, it's probably safe to look at the context.
709  */
710  ptr_context = *(MemoryContext *) (((char *) pointer) - sizeof(void *));
711 
712  return ptr_context == context;
713 }
#define MAXALIGN(LEN)
Definition: c.h:686

◆ MemoryContextCreate()

void MemoryContextCreate ( MemoryContext  node,
NodeTag  tag,
const MemoryContextMethods methods,
MemoryContext  parent,
const char *  name 
)

Definition at line 748 of file mcxt.c.

References MemoryContextData::allowInCritSection, Assert, CritSectionCount, MemoryContextData::firstchild, MemoryContextData::ident, MemoryContextData::isReset, MemoryContextData::mem_allocated, MemoryContextData::methods, MemoryContextData::name, name, MemoryContextData::nextchild, MemoryContextData::parent, MemoryContextData::prevchild, MemoryContextData::reset_cbs, MemoryContextData::type, and VALGRIND_CREATE_MEMPOOL.

Referenced by AllocSetContextCreateInternal(), GenerationContextCreate(), GetMemoryChunkContext(), and SlabContextCreate().

753 {
754  /* Creating new memory contexts is not allowed in a critical section */
755  Assert(CritSectionCount == 0);
756 
757  /* Initialize all standard fields of memory context header */
758  node->type = tag;
759  node->isReset = true;
760  node->methods = methods;
761  node->parent = parent;
762  node->firstchild = NULL;
763  node->mem_allocated = 0;
764  node->prevchild = NULL;
765  node->name = name;
766  node->ident = NULL;
767  node->reset_cbs = NULL;
768 
769  /* OK to link node into context tree */
770  if (parent)
771  {
772  node->nextchild = parent->firstchild;
773  if (parent->firstchild != NULL)
774  parent->firstchild->prevchild = node;
775  parent->firstchild = node;
776  /* inherit allowInCritSection flag from parent */
777  node->allowInCritSection = parent->allowInCritSection;
778  }
779  else
780  {
781  node->nextchild = NULL;
782  node->allowInCritSection = false;
783  }
784 
785  VALGRIND_CREATE_MEMPOOL(node, 0, false);
786 }
MemoryContextCallback * reset_cbs
Definition: memnodes.h:90
const MemoryContextMethods * methods
Definition: memnodes.h:83
bool allowInCritSection
Definition: memnodes.h:81
MemoryContext firstchild
Definition: memnodes.h:85
MemoryContext prevchild
Definition: memnodes.h:86
volatile uint32 CritSectionCount
Definition: globals.c:38
const char * ident
Definition: memnodes.h:89
#define VALGRIND_CREATE_MEMPOOL(context, redzones, zeroed)
Definition: memdebug.h:24
#define Assert(condition)
Definition: c.h:733
const char * name
Definition: encode.c:521
Size mem_allocated
Definition: memnodes.h:82
MemoryContext parent
Definition: memnodes.h:84
const char * name
Definition: memnodes.h:88
MemoryContext nextchild
Definition: memnodes.h:87
NodeTag type
Definition: memnodes.h:78

◆ MemoryContextDelete()

void MemoryContextDelete ( MemoryContext  context)

Definition at line 211 of file mcxt.c.

References Assert, AssertArg, MemoryContextMethods::delete_context, MemoryContextData::firstchild, MemoryContextData::ident, MemoryContextCallResetCallbacks(), MemoryContextDeleteChildren(), MemoryContextIsValid, MemoryContextSetParent(), MemoryContextData::methods, and VALGRIND_DESTROY_MEMPOOL.

Referenced by AfterTriggerEndXact(), afterTriggerInvokeEvents(), ApplyLauncherMain(), AtCleanup_Memory(), AtCommit_Memory(), AtEOSubXact_SPI(), AtEOXact_LargeObject(), AtSubCleanup_Memory(), AtSubCommit_Memory(), AttachPartitionEnsureIndexes(), blbuild(), blinsert(), brin_free_desc(), bringetbitmap(), brininsert(), bt_check_every_level(), btendscan(), btvacuumscan(), BuildRelationExtStatistics(), CloneRowTriggersToPartition(), cluster(), compile_plperl_function(), compile_pltcl_function(), compute_index_stats(), ComputeExtStatisticsRows(), CopyTo(), createTrgmNFA(), CreateTrigger(), decr_dcc_refcount(), DeleteExpandedObject(), DiscreteKnapsack(), do_analyze_rel(), do_start_bgworker(), do_start_worker(), DropCachedPlan(), each_worker(), each_worker_jsonb(), elements_worker(), elements_worker_jsonb(), end_heap_rewrite(), EndCopy(), EventTriggerEndCompleteQuery(), EventTriggerInvoke(), exec_replication_command(), exec_simple_query(), ExecEndRecursiveUnion(), ExecEndSetOp(), ExecEndWindowAgg(), ExecHashTableDestroy(), execute_sql_string(), file_acquire_sample_rows(), fill_hba_view(), fmgr_sql(), free_plperl_function(), FreeCachedExpression(), FreeDecodingContext(), FreeExecutorState(), FreeExprContext(), freeGISTstate(), FreeSnapshotBuilder(), geqo_eval(), get_actual_variable_range(), gin_xlog_cleanup(), ginbuild(), ginbulkdelete(), ginendscan(), gininsert(), ginInsertCleanup(), ginPlaceToPage(), gist_xlog_cleanup(), gistbuild(), gistvacuumcleanup(), hash_destroy(), inline_function(), inline_set_returning_function(), libpqrcv_processTuples(), load_hba(), load_ident(), load_tzoffsets(), makeArrayResultArr(), makeMdArrayResult(), MemoryContextDeleteChildren(), mergeruns(), NIFinishBuild(), pg_decode_shutdown(), pgstat_clear_snapshot(), plperl_spi_freeplan(), plperl_spi_prepare(), plpgsql_free_function_memory(), pltcl_handler(), pltcl_SPI_prepare(), PLy_cursor_dealloc(), PLy_plan_dealloc(), PLy_pop_execution_context(), PLy_procedure_delete(), PLy_spi_execute_fetch_result(), PortalDrop(), PostgresMain(), printtup_shutdown(), publicationListToArray(), rebuild_database_list(), ReindexMultipleTables(), ReindexRelationConcurrently(), RelationBuildDesc(), RelationBuildRowSecurity(), RelationBuildRuleLock(), RelationDestroyRelation(), ReleaseCachedPlan(), ReorderBufferFree(), ResetUnloggedRelations(), RevalidateCachedQuery(), shutdown_MultiFuncCall(), spg_xlog_cleanup(), spgbuild(), spgendscan(), spginsert(), SPI_finish(), SPI_freeplan(), SPI_freetuptable(), StartChildProcess(), strlist_to_textarray(), test_pattern(), tokenize_inc_file(), tuplesort_end(), union_tuples(), vacuum(), and validateForeignKeyConstraint().

212 {
214  /* We had better not be deleting TopMemoryContext ... */
215  Assert(context != TopMemoryContext);
216  /* And not CurrentMemoryContext, either */
217  Assert(context != CurrentMemoryContext);
218 
219  /* save a function call in common case where there are no children */
220  if (context->firstchild != NULL)
222 
223  /*
224  * It's not entirely clear whether 'tis better to do this before or after
225  * delinking the context; but an error in a callback will likely result in
226  * leaking the whole context (if it's not a root context) if we do it
227  * after, so let's do it before.
228  */
230 
231  /*
232  * We delink the context from its parent before deleting it, so that if
233  * there's an error we won't have deleted/busted contexts still attached
234  * to the context tree. Better a leak than a crash.
235  */
236  MemoryContextSetParent(context, NULL);
237 
238  /*
239  * Also reset the context's ident pointer, in case it points into the
240  * context. This would only matter if someone tries to get stats on the
241  * (already unlinked) context, which is unlikely, but let's be safe.
242  */
243  context->ident = NULL;
244 
245  context->methods->delete_context(context);
246 
247  VALGRIND_DESTROY_MEMPOOL(context);
248 }
static void MemoryContextCallResetCallbacks(MemoryContext context)
Definition: mcxt.c:302
const MemoryContextMethods * methods
Definition: memnodes.h:83
void MemoryContextSetParent(MemoryContext context, MemoryContext new_parent)
Definition: mcxt.c:354
MemoryContext firstchild
Definition: memnodes.h:85
MemoryContext CurrentMemoryContext
Definition: mcxt.c:38
#define AssertArg(condition)
Definition: c.h:735
const char * ident
Definition: memnodes.h:89
MemoryContext TopMemoryContext
Definition: mcxt.c:44
void MemoryContextDeleteChildren(MemoryContext context)
Definition: mcxt.c:256
#define VALGRIND_DESTROY_MEMPOOL(context)
Definition: memdebug.h:25
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
#define Assert(condition)
Definition: c.h:733
void(* delete_context)(MemoryContext context)
Definition: memnodes.h:64

◆ MemoryContextDeleteChildren()

void MemoryContextDeleteChildren ( MemoryContext  context)

Definition at line 256 of file mcxt.c.

References AssertArg, MemoryContextData::firstchild, MemoryContextDelete(), and MemoryContextIsValid.

Referenced by AtAbort_Portals(), AtSubAbort_Portals(), exec_stmt_block(), MemoryContextDelete(), MemoryContextReset(), PersistHoldablePortal(), and PortalRunMulti().

257 {
259 
260  /*
261  * MemoryContextDelete will delink the child from me, so just iterate as
262  * long as there is a child.
263  */
264  while (context->firstchild != NULL)
266 }
void MemoryContextDelete(MemoryContext context)
Definition: mcxt.c:211
MemoryContext firstchild
Definition: memnodes.h:85
#define AssertArg(condition)
Definition: c.h:735
#define MemoryContextIsValid(context)
Definition: memnodes.h:102

◆ MemoryContextGetParent()

MemoryContext MemoryContextGetParent ( MemoryContext  context)

Definition at line 439 of file mcxt.c.

References AssertArg, MemoryContextIsValid, and MemoryContextData::parent.

Referenced by advance_transition_function(), advance_windowaggregate(), advance_windowaggregate_base(), ExecAggTransReparent(), GetCachedPlan(), pop_stmt_mcontext(), and push_stmt_mcontext().

440 {
442 
443  return context->parent;
444 }
#define AssertArg(condition)
Definition: c.h:735
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
MemoryContext parent
Definition: memnodes.h:84

◆ MemoryContextInit()

void MemoryContextInit ( void  )

Definition at line 92 of file mcxt.c.

References ALLOCSET_DEFAULT_SIZES, AllocSetContextCreate, AssertState, MemoryContextAllowInCriticalSection(), and TopMemoryContext.

Referenced by main().

93 {
95 
96  /*
97  * First, initialize TopMemoryContext, which is the parent of all others.
98  */
100  "TopMemoryContext",
102 
103  /*
104  * Not having any other place to point CurrentMemoryContext, make it point
105  * to TopMemoryContext. Caller should change this soon!
106  */
108 
109  /*
110  * Initialize ErrorContext as an AllocSetContext with slow growth rate ---
111  * we don't really expect much to be allocated in it. More to the point,
112  * require it to contain at least 8K at all times. This is the only case
113  * where retained memory in a context is *essential* --- we want to be
114  * sure ErrorContext still has some memory even if we've run out
115  * elsewhere! Also, allow allocations in ErrorContext within a critical
116  * section. Otherwise a PANIC will cause an assertion failure in the error
117  * reporting code, before printing out the real cause of the failure.
118  *
119  * This should be the last step in this function, as elog.c assumes memory
120  * management works once ErrorContext is non-null.
121  */
123  "ErrorContext",
124  8 * 1024,
125  8 * 1024,
126  8 * 1024);
128 }
#define AllocSetContextCreate
Definition: memutils.h:170
#define AssertState(condition)
Definition: c.h:736
void MemoryContextAllowInCriticalSection(MemoryContext context, bool allow)
Definition: mcxt.c:411
MemoryContext ErrorContext
Definition: mcxt.c:45
#define ALLOCSET_DEFAULT_SIZES
Definition: memutils.h:192
MemoryContext CurrentMemoryContext
Definition: mcxt.c:38
MemoryContext TopMemoryContext
Definition: mcxt.c:44

◆ MemoryContextIsEmpty()

bool MemoryContextIsEmpty ( MemoryContext  context)

Definition at line 451 of file mcxt.c.

References AssertArg, MemoryContextData::firstchild, MemoryContextMethods::is_empty, MemoryContextIsValid, and MemoryContextData::methods.

Referenced by AtSubCommit_Memory().

452 {
454 
455  /*
456  * For now, we consider a memory context nonempty if it has any children;
457  * perhaps this should be changed later.
458  */
459  if (context->firstchild != NULL)
460  return false;
461  /* Otherwise use the type-specific inquiry */
462  return context->methods->is_empty(context);
463 }
const MemoryContextMethods * methods
Definition: memnodes.h:83
MemoryContext firstchild
Definition: memnodes.h:85
bool(* is_empty)(MemoryContext context)
Definition: memnodes.h:66
#define AssertArg(condition)
Definition: c.h:735
#define MemoryContextIsValid(context)
Definition: memnodes.h:102

◆ MemoryContextMemAllocated()

Size MemoryContextMemAllocated ( MemoryContext  context,
bool  recurse 
)

Definition at line 470 of file mcxt.c.

References AssertArg, MemoryContextData::firstchild, MemoryContextData::mem_allocated, MemoryContextIsValid, MemoryContextMemAllocated(), and MemoryContextData::nextchild.

Referenced by MemoryContextMemAllocated().

471 {
472  Size total = context->mem_allocated;
473 
475 
476  if (recurse)
477  {
478  MemoryContext child = context->firstchild;
479 
480  for (child = context->firstchild;
481  child != NULL;
482  child = child->nextchild)
483  total += MemoryContextMemAllocated(child, true);
484  }
485 
486  return total;
487 }
MemoryContext firstchild
Definition: memnodes.h:85
#define AssertArg(condition)
Definition: c.h:735
Size MemoryContextMemAllocated(MemoryContext context, bool recurse)
Definition: mcxt.c:470
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
size_t Size
Definition: c.h:467
Size mem_allocated
Definition: memnodes.h:82
MemoryContext nextchild
Definition: memnodes.h:87

◆ MemoryContextRegisterResetCallback()

void MemoryContextRegisterResetCallback ( MemoryContext  context,
MemoryContextCallback cb 
)

Definition at line 285 of file mcxt.c.

References AssertArg, MemoryContextData::isReset, MemoryContextIsValid, MemoryContextCallback::next, and MemoryContextData::reset_cbs.

Referenced by expanded_record_fetch_tupdesc(), InitDomainConstraintRef(), make_expanded_record_from_exprecord(), make_expanded_record_from_tupdesc(), make_expanded_record_from_typeid(), MemoryContextSwitchTo(), and PLy_exec_function().

287 {
289 
290  /* Push onto head so this will be called before older registrants. */
291  cb->next = context->reset_cbs;
292  context->reset_cbs = cb;
293  /* Mark the context as non-reset (it probably is already). */
294  context->isReset = false;
295 }
MemoryContextCallback * reset_cbs
Definition: memnodes.h:90
#define AssertArg(condition)
Definition: c.h:735
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
struct MemoryContextCallback * next
Definition: palloc.h:51

◆ MemoryContextReset()

void MemoryContextReset ( MemoryContext  context)

Definition at line 136 of file mcxt.c.

References AssertArg, MemoryContextData::firstchild, MemoryContextData::isReset, MemoryContextDeleteChildren(), MemoryContextIsValid, and MemoryContextResetOnly().

Referenced by _bt_preprocess_array_keys(), AfterTriggerExecute(), bloomBuildCallback(), brin_memtuple_initialize(), bt_check_level_from_leftmost(), btvacuumpage(), buildSubPlanHash(), check_domain_for_new_field(), check_domain_for_new_tuple(), CloneRowTriggersToPartition(), CopyOneRowTo(), CreateTrigger(), dumptuples(), each_object_field_end(), each_worker_jsonb(), elements_array_element_end(), elements_worker_jsonb(), errstart(), EventTriggerInvoke(), exec_dynquery_with_params(), exec_stmt_block(), exec_stmt_dynexecute(), exec_stmt_forc(), exec_stmt_foreach_a(), exec_stmt_open(), exec_stmt_raise(), ExecFindInitialMatchingSubPlans(), ExecFindMatchingSubPlans(), ExecHashTableReset(), ExecMakeTableFunctionResult(), ExecProjectSet(), ExecQualAndReset(), ExecRecursiveUnion(), execTuplesUnequal(), execute_foreign_modify(), expanded_record_set_field_internal(), expanded_record_set_tuple(), fetch_more_data(), file_acquire_sample_rows(), get_short_term_cxt(), gin_redo(), ginBuildCallback(), ginHeapTupleBulkInsert(), ginInsertCleanup(), ginVacuumPostingTreeLeaves(), gist_redo(), gistBuildCallback(), gistgetbitmap(), gistgettuple(), gistinsert(), gistProcessEmptyingQueue(), gistrescan(), gistScanPage(), gistvacuumscan(), HandleParallelMessages(), heapam_index_build_range_scan(), heapam_index_validate_scan(), IndexCheckExclusion(), keyGetItem(), libpqrcv_processTuples(), LogicalRepApplyLoop(), lookup_ts_dictionary_cache(), make_tuple_from_result_row(), pg_decode_change(), pg_decode_truncate(), pgoutput_change(), pgoutput_truncate(), plperl_return_next_internal(), PLy_input_convert(), PLy_input_from_tuple(), printtup(), printtup_20(), printtup_internal_20(), process_ordered_aggregate_single(), ReScanExprContext(), resetSpGistScanOpaque(), scanPendingInsert(), sepgsql_avc_reset(), spg_redo(), spginsert(), spgistBuildCallback(), spgWalk(), startScanKey(), storeRow(), tfuncFetchRows(), tfuncLoadRows(), and validateForeignKeyConstraint().

137 {
139 
140  /* save a function call in common case where there are no children */
141  if (context->firstchild != NULL)
143 
144  /* save a function call if no pallocs since startup or last reset */
145  if (!context->isReset)
146  MemoryContextResetOnly(context);
147 }
void MemoryContextResetOnly(MemoryContext context)
Definition: mcxt.c:155
MemoryContext firstchild
Definition: memnodes.h:85
#define AssertArg(condition)
Definition: c.h:735
void MemoryContextDeleteChildren(MemoryContext context)
Definition: mcxt.c:256
#define MemoryContextIsValid(context)
Definition: memnodes.h:102

◆ MemoryContextResetChildren()

void MemoryContextResetChildren ( MemoryContext  context)

Definition at line 188 of file mcxt.c.

References AssertArg, MemoryContextData::firstchild, MemoryContextIsValid, MemoryContextResetChildren(), MemoryContextResetOnly(), and MemoryContextData::nextchild.

Referenced by MemoryContextResetChildren().

189 {
190  MemoryContext child;
191 
193 
194  for (child = context->firstchild; child != NULL; child = child->nextchild)
195  {
197  MemoryContextResetOnly(child);
198  }
199 }
void MemoryContextResetOnly(MemoryContext context)
Definition: mcxt.c:155
MemoryContext firstchild
Definition: memnodes.h:85
#define AssertArg(condition)
Definition: c.h:735
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
void MemoryContextResetChildren(MemoryContext context)
Definition: mcxt.c:188
MemoryContext nextchild
Definition: memnodes.h:87

◆ MemoryContextResetOnly()

void MemoryContextResetOnly ( MemoryContext  context)

Definition at line 155 of file mcxt.c.

References AssertArg, MemoryContextData::isReset, MemoryContextCallResetCallbacks(), MemoryContextIsValid, MemoryContextData::methods, MemoryContextMethods::reset, VALGRIND_CREATE_MEMPOOL, and VALGRIND_DESTROY_MEMPOOL.

Referenced by AllocSetDelete(), MemoryContextReset(), and MemoryContextResetChildren().

156 {
158 
159  /* Nothing to do if no pallocs since startup or last reset */
160  if (!context->isReset)
161  {
163 
164  /*
165  * If context->ident points into the context's memory, it will become
166  * a dangling pointer. We could prevent that by setting it to NULL
167  * here, but that would break valid coding patterns that keep the
168  * ident elsewhere, e.g. in a parent context. Another idea is to use
169  * MemoryContextContains(), but we don't require ident strings to be
170  * in separately-palloc'd chunks, so that risks false positives. So
171  * for now we assume the programmer got it right.
172  */
173 
174  context->methods->reset(context);
175  context->isReset = true;
176  VALGRIND_DESTROY_MEMPOOL(context);
177  VALGRIND_CREATE_MEMPOOL(context, 0, false);
178  }
179 }
static void MemoryContextCallResetCallbacks(MemoryContext context)
Definition: mcxt.c:302
const MemoryContextMethods * methods
Definition: memnodes.h:83
void(* reset)(MemoryContext context)
Definition: memnodes.h:63
#define AssertArg(condition)
Definition: c.h:735
#define VALGRIND_DESTROY_MEMPOOL(context)
Definition: memdebug.h:25
#define VALGRIND_CREATE_MEMPOOL(context, redzones, zeroed)
Definition: memdebug.h:24
#define MemoryContextIsValid(context)
Definition: memnodes.h:102

◆ MemoryContextSetIdentifier()

void MemoryContextSetIdentifier ( MemoryContext  context,
const char *  id 
)

Definition at line 329 of file mcxt.c.

References AssertArg, MemoryContextData::ident, and MemoryContextIsValid.

Referenced by compile_plperl_function(), compile_pltcl_function(), CopyCachedPlan(), CreateCachedPlan(), CreatePortal(), do_compile(), hash_create(), init_sql_fcache(), lookup_ts_dictionary_cache(), PLy_procedure_create(), and test_pattern().

330 {
332  context->ident = id;
333 }
#define AssertArg(condition)
Definition: c.h:735
const char * ident
Definition: memnodes.h:89
#define MemoryContextIsValid(context)
Definition: memnodes.h:102

◆ MemoryContextSetParent()

void MemoryContextSetParent ( MemoryContext  context,
MemoryContext  new_parent 
)

Definition at line 354 of file mcxt.c.

References Assert, AssertArg, MemoryContextData::firstchild, MemoryContextIsValid, MemoryContextData::nextchild, MemoryContextData::parent, and MemoryContextData::prevchild.

Referenced by _SPI_save_plan(), CachedPlanSetParentContext(), CompleteCachedPlan(), exec_parse_message(), GetCachedExpression(), GetCachedPlan(), load_domaintype_info(), MemoryContextDelete(), RelationBuildPartitionKey(), RelationClearRelation(), RevalidateCachedQuery(), SaveCachedPlan(), SPI_keepplan(), and TransferExpandedObject().

355 {
357  AssertArg(context != new_parent);
358 
359  /* Fast path if it's got correct parent already */
360  if (new_parent == context->parent)
361  return;
362 
363  /* Delink from existing parent, if any */
364  if (context->parent)
365  {
366  MemoryContext parent = context->parent;
367 
368  if (context->prevchild != NULL)
369  context->prevchild->nextchild = context->nextchild;
370  else
371  {
372  Assert(parent->firstchild == context);
373  parent->firstchild = context->nextchild;
374  }
375 
376  if (context->nextchild != NULL)
377  context->nextchild->prevchild = context->prevchild;
378  }
379 
380  /* And relink */
381  if (new_parent)
382  {
383  AssertArg(MemoryContextIsValid(new_parent));
384  context->parent = new_parent;
385  context->prevchild = NULL;
386  context->nextchild = new_parent->firstchild;
387  if (new_parent->firstchild != NULL)
388  new_parent->firstchild->prevchild = context;
389  new_parent->firstchild = context;
390  }
391  else
392  {
393  context->parent = NULL;
394  context->prevchild = NULL;
395  context->nextchild = NULL;
396  }
397 }
MemoryContext firstchild
Definition: memnodes.h:85
MemoryContext prevchild
Definition: memnodes.h:86
#define AssertArg(condition)
Definition: c.h:735
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
#define Assert(condition)
Definition: c.h:733
MemoryContext parent
Definition: memnodes.h:84
MemoryContext nextchild
Definition: memnodes.h:87

◆ MemoryContextStats()

void MemoryContextStats ( MemoryContext  context)

Definition at line 498 of file mcxt.c.

References MemoryContextStatsDetail().

Referenced by AllocSetContextCreateInternal(), finish_xact_command(), GenerationContextCreate(), MemoryContextAlloc(), MemoryContextAllocExtended(), MemoryContextAllocHuge(), MemoryContextAllocZero(), MemoryContextAllocZeroAligned(), palloc(), palloc0(), palloc_extended(), repalloc(), repalloc_huge(), SlabContextCreate(), and test_pattern().

499 {
500  /* A hard-wired limit on the number of children is usually good enough */
501  MemoryContextStatsDetail(context, 100);
502 }
void MemoryContextStatsDetail(MemoryContext context, int max_children)
Definition: mcxt.c:510

◆ MemoryContextStatsDetail()

void MemoryContextStatsDetail ( MemoryContext  context,
int  max_children 
)

Definition at line 510 of file mcxt.c.

References fprintf, MemoryContextCounters::freechunks, MemoryContextCounters::freespace, MemoryContextStatsInternal(), MemoryContextCounters::nblocks, and MemoryContextCounters::totalspace.

Referenced by MemoryContextStats().

511 {
512  MemoryContextCounters grand_totals;
513 
514  memset(&grand_totals, 0, sizeof(grand_totals));
515 
516  MemoryContextStatsInternal(context, 0, true, max_children, &grand_totals);
517 
518  fprintf(stderr,
519  "Grand total: %zu bytes in %zd blocks; %zu free (%zd chunks); %zu used\n",
520  grand_totals.totalspace, grand_totals.nblocks,
521  grand_totals.freespace, grand_totals.freechunks,
522  grand_totals.totalspace - grand_totals.freespace);
523 }
static void MemoryContextStatsInternal(MemoryContext context, int level, bool print, int max_children, MemoryContextCounters *totals)
Definition: mcxt.c:533
#define fprintf
Definition: port.h:196

◆ MemoryContextStatsInternal()

static void MemoryContextStatsInternal ( MemoryContext  context,
int  level,
bool  print,
int  max_children,
MemoryContextCounters totals 
)
static

Definition at line 533 of file mcxt.c.

References AssertArg, MemoryContextData::firstchild, fprintf, MemoryContextCounters::freechunks, MemoryContextCounters::freespace, i, MemoryContextIsValid, MemoryContextStatsPrint(), MemoryContextData::methods, MemoryContextCounters::nblocks, MemoryContextData::nextchild, MemoryContextMethods::stats, and MemoryContextCounters::totalspace.

Referenced by MemoryContextStatsDetail().

536 {
537  MemoryContextCounters local_totals;
538  MemoryContext child;
539  int ichild;
540 
542 
543  /* Examine the context itself */
544  context->methods->stats(context,
546  (void *) &level,
547  totals);
548 
549  /*
550  * Examine children. If there are more than max_children of them, we do
551  * not print the rest explicitly, but just summarize them.
552  */
553  memset(&local_totals, 0, sizeof(local_totals));
554 
555  for (child = context->firstchild, ichild = 0;
556  child != NULL;
557  child = child->nextchild, ichild++)
558  {
559  if (ichild < max_children)
560  MemoryContextStatsInternal(child, level + 1,
561  print, max_children,
562  totals);
563  else
564  MemoryContextStatsInternal(child, level + 1,
565  false, max_children,
566  &local_totals);
567  }
568 
569  /* Deal with excess children */
570  if (ichild > max_children)
571  {
572  if (print)
573  {
574  int i;
575 
576  for (i = 0; i <= level; i++)
577  fprintf(stderr, " ");
578  fprintf(stderr,
579  "%d more child contexts containing %zu total in %zd blocks; %zu free (%zd chunks); %zu used\n",
580  ichild - max_children,
581  local_totals.totalspace,
582  local_totals.nblocks,
583  local_totals.freespace,
584  local_totals.freechunks,
585  local_totals.totalspace - local_totals.freespace);
586  }
587 
588  if (totals)
589  {
590  totals->nblocks += local_totals.nblocks;
591  totals->freechunks += local_totals.freechunks;
592  totals->totalspace += local_totals.totalspace;
593  totals->freespace += local_totals.freespace;
594  }
595  }
596 }
void print(const void *obj)
Definition: print.c:36
const MemoryContextMethods * methods
Definition: memnodes.h:83
static void MemoryContextStatsInternal(MemoryContext context, int level, bool print, int max_children, MemoryContextCounters *totals)
Definition: mcxt.c:533
#define fprintf
Definition: port.h:196
void(* stats)(MemoryContext context, MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals)
Definition: memnodes.h:67
MemoryContext firstchild
Definition: memnodes.h:85
#define AssertArg(condition)
Definition: c.h:735
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
static void MemoryContextStatsPrint(MemoryContext context, void *passthru, const char *stats_string)
Definition: mcxt.c:606
int i
MemoryContext nextchild
Definition: memnodes.h:87

◆ MemoryContextStatsPrint()

static void MemoryContextStatsPrint ( MemoryContext  context,
void *  passthru,
const char *  stats_string 
)
static

Definition at line 606 of file mcxt.c.

References AssertArg, MemoryContextData::firstchild, fprintf, i, MemoryContextData::ident, MemoryContextIsValid, MemoryContextData::methods, MemoryContextData::name, name, MemoryContextData::nextchild, and pg_mbcliplen().

Referenced by MemoryContextStatsInternal().

608 {
609  int level = *(int *) passthru;
610  const char *name = context->name;
611  const char *ident = context->ident;
612  int i;
613 
614  /*
615  * It seems preferable to label dynahash contexts with just the hash table
616  * name. Those are already unique enough, so the "dynahash" part isn't
617  * very helpful, and this way is more consistent with pre-v11 practice.
618  */
619  if (ident && strcmp(name, "dynahash") == 0)
620  {
621  name = ident;
622  ident = NULL;
623  }
624 
625  for (i = 0; i < level; i++)
626  fprintf(stderr, " ");
627  fprintf(stderr, "%s: %s", name, stats_string);
628  if (ident)
629  {
630  /*
631  * Some contexts may have very long identifiers (e.g., SQL queries).
632  * Arbitrarily truncate at 100 bytes, but be careful not to break
633  * multibyte characters. Also, replace ASCII control characters, such
634  * as newlines, with spaces.
635  */
636  int idlen = strlen(ident);
637  bool truncated = false;
638 
639  if (idlen > 100)
640  {
641  idlen = pg_mbcliplen(ident, idlen, 100);
642  truncated = true;
643  }
644  fprintf(stderr, ": ");
645  while (idlen-- > 0)
646  {
647  unsigned char c = *ident++;
648 
649  if (c < ' ')
650  c = ' ';
651  fputc(c, stderr);
652  }
653  if (truncated)
654  fprintf(stderr, "...");
655  }
656  fputc('\n', stderr);
657 }
#define fprintf
Definition: port.h:196
int pg_mbcliplen(const char *mbstr, int len, int limit)
Definition: mbutils.c:862
char * c
const char * ident
Definition: memnodes.h:89
const char * name
Definition: encode.c:521
int i
const char * name
Definition: memnodes.h:88

◆ MemoryContextStrdup()

char* MemoryContextStrdup ( MemoryContext  context,
const char *  string 
)

◆ palloc()

void* palloc ( Size  size)

Definition at line 949 of file mcxt.c.

Referenced by _bt_blnewpage(), _bt_findsplitloc(), _bt_mkscankey(), _bt_newroot(), _bt_preprocess_array_keys(), _bt_search(), _bt_uppershutdown(), _lca(), _ltree_compress(), _ltree_picksplit(), _metaphone(), _SPI_make_plan_non_temp(), _SPI_save_plan(), AbsorbSyncRequests(), accum_sum_copy(), accumArrayResultArr(), aclexplode(), aclitemin(), aclitemout(), aclmembers(), acquire_inherited_sample_rows(), add_exact_object_address_extra(), add_gin_entry(), add_one_float8(), add_reloption(), add_rte_to_flat_rtable(), add_to_tsvector(), add_unique_group_var(), addArc(), addArcs(), addCompiledLexeme(), AddEnumLabel(), addFkRecurseReferenced(), addItemsToLeaf(), addKey(), addKeyToQueue(), addNode(), addNorm(), addRangeClause(), addRangeTableEntryForFunction(), AddRelationNewConstraints(), addRTEtoQuery(), addWrd(), alloc_chromo(), alloc_edge_table(), alloc_pool(), allocate_reloption(), AllocateRelationDesc(), AlterPolicy(), AlterSubscription_refresh(), anybit_typmodout(), anychar_typmodout(), append_nonpartial_cost(), apw_dump_now(), array_cat(), array_create_iterator(), array_in(), array_map(), array_out(), array_recv(), array_replace_internal(), array_set_element(), array_typanalyze(), array_unnest(), arrayconst_startup_fn(), arrayexpr_startup_fn(), ArrayGetIntegerTypmods(), AssignTransactionId(), Async_Notify(), ATExecAddColumn(), ATExecColumnDefault(), attach_internal(), AttachPartitionEnsureIndexes(), autoinc(), be_loread(), be_tls_get_peer_serial(), begin_heap_rewrite(), begin_tup_output_tupdesc(), BeginCopyFrom(), big5_to_euc_tw(), binary_decode(), binary_encode(), binaryheap_allocate(), BipartiteMatch(), bit_and(), bit_catenate(), bit_or(), bit_out(), bit_recv(), bitfromint4(), bitfromint8(), bitnot(), bits_to_text(), bitsetbit(), bitshiftleft(), bitshiftright(), bitsubstring(), bitxor(), blbeginscan(), blbuild(), blbuildempty(), bms_copy(), boolout(), BootStrapXLOG(), box_add(), box_center(), box_circle(), box_copy(), box_diagonal(), box_div(), box_in(), box_intersect(), box_mul(), box_poly(), box_recv(), box_sub(), boxes_bound_box(), bpchar(), bpchar_input(), bqarr_in(), bqarr_out(), brin_build_desc(), brin_copy_tuple(), brin_form_tuple(), brin_new_memtuple(), brin_page_items(), brin_revmap_data(), brinbeginscan(), brinbuild(), brinRevmapInitialize(), bt_page_items(), bt_page_items_bytea(), btbeginscan(), btbuild(), btbuildempty(), btgettuple(), btrescan(), BufferSync(), BufFileCreateShared(), BufFileOpenShared(), build_attnums_array(), build_column_frequencies(), build_datatype(), build_distinct_groups(), build_function_result_tupdesc_d(), build_minmax_path(), build_pertrans_for_aggref(), build_regtype_array(), build_row_from_vars(), build_server_final_message(), build_server_first_message(), build_subplan(), build_tlist_index(), build_tlist_index_other_vars(), build_tuplestore_recursively(), BuildCachedPlan(), BuildSpeculativeIndexInfo(), BuildTupleFromCStrings(), BuildTupleHashTableExt(), bytea_catenate(), bytea_string_agg_finalfn(), byteain(), byteaout(), bytearecv(), byteatrim(), cached_scansel(), calc_distr(), calc_hist(), calc_hist_selectivity(), calc_word_similarity(), CatalogCacheCreateEntry(), catenate_stringinfo_string(), char_bpchar(), char_text(), charout(), check_foreign_key(), check_ident_usermap(), check_primary_key(), check_temp_tablespaces(), CheckAffix(), checkAllTheSame(), checkclass_str(), checkcondition_HL(), checkcondition_str(), CheckIndexCompatible(), CheckSCRAMAuth(), checkSharedDependencies(), choose_bitmap_and(), chr(), cidout(), circle_add_pt(), circle_box(), circle_center(), circle_div_pt(), circle_in(), circle_mul_pt(), circle_recv(), circle_sub_pt(), classify_index_clause_usage(), cleanup_tsquery_stopwords(), clone_parse_state(), close_ls(), close_lseg(), close_pb(), close_pl(), close_ps(), close_sb(), close_sl(), collect_corrupt_items(), collectTSQueryValues(), commit_ts_desc(), commit_ts_redo(), compileTheLexeme(), compileTheSubstitute(), CompleteCachedPlan(), complex_add(), complex_in(), complex_recv(), compute_array_stats(), compute_distinct_stats(), compute_index_stats(), compute_range_stats(), compute_scalar_stats(), compute_tsvector_stats(), ComputeIndexAttrs(), computeLeafRecompressWALData(), concat_text(), connect_pg_server(), consider_groupingsets_paths(), construct_point(), convert_prep_stmt_params(), convert_requires_to_datum(), convert_string_datum(), convert_tuples_by_name(), convert_tuples_by_position(), copy_file(), copy_pathtarget(), copy_plpgsql_datums(), CopyCachedPlan(), CopyErrorData(), CopyIndexTuple(), copyJsonbValue(), CopyMultiInsertBufferInit(), CopyOverrideSearchPath(), copytext(), CopyTo(), CopyTriggerDesc(), copyTSLexeme(), copyVar(), CopyVar(), count_usable_fds(), cr_circle(), create_hash_bounds(), create_internal(), create_list_bounds(), create_mergejoin_plan(), create_range_bounds(), create_unique_plan(), create_windowagg_plan(), CreateConstraintEntry(), CreateCopyDestReceiver(), CreateFunction(), CreatePartitionDirectory(), createPostingTree(), CreateQueryDesc(), CreateTemplateTupleDesc(), CreateTrigger(), CreateTupleDescCopyConstr(), cstring_to_text_with_len(), current_database(), current_schemas(), currtid_byrelname(), currtid_byreloid(), dataBeginPlaceToPageLeaf(), dataPrepareDownlink(), datetime_to_char_body(), datumCopy(), datumRestore(), datumSerialize(), dblink_get_pkey(), debackslash(), decodePageSplitRecord(), DecodeTextArrayToCString(), DecodeXLogRecord(), deconstruct_array(), DefineIndex(), DefineRelation(), dependencies_clauselist_selectivity(), dependency_degree(), DependencyGenerator_init(), deserialize_deflist(), detoast_attr(), detoast_attr_slice(), detoast_external_attr(), dibuild(), disassembleLeaf(), DiscreteKnapsack(), distribute_qual_to_rels(), do_analyze_rel(), do_compile(), do_pg_start_backup(), do_pg_stop_backup(), do_to_timestamp(), doPickSplit(), dotrim(), double_to_shortest_decimal(), downcase_convert(), downcase_identifier(), DropRelationFiles(), DropRelFileNodesAllBuffers(), dshash_attach(), dshash_create(), dsynonym_init(), dumpFunc(), dxsyn_lexize(), encrypt_password(), entry_dealloc(), entryPrepareDownlink(), enum_range_internal(), EnumValuesCreate(), euc_tw_to_big5(), EvalPlanQualStart(), EventTriggerAlterTableStart(), EventTriggerCollectAlterOpFam(), EventTriggerCollectAlterTableSubcmd(), EventTriggerCollectAlterTSConfig(), EventTriggerCollectGrant(), EventTriggerCollectSimpleCommand(), examine_attribute(), exec_bind_message(), exec_stmt_call(), ExecComputeStoredGenerated(), ExecCreatePartitionPruneState(), ExecEvalArrayExpr(), ExecGather(), ExecGatherMerge(), ExecHashJoinGetSavedTuple(), ExecHashRetrieveInstrumentation(), ExecHashTableCreate(), ExecIndexBuildScanKeys(), ExecInitAgg(), ExecInitAppend(), ExecInitCoerceToDomain(), ExecInitExprRec(), ExecInitFunctionScan(), ExecInitIndexScan(), ExecInitJunkFilter(), ExecInitMergeAppend(), ExecInitPartitionDispatchInfo(), ExecInitProjectSet(), ExecInitRoutingInfo(), ExecInitSubPlan(), ExecInitTableFuncScan(), ExecInitValuesScan(), ExecMakeTableFunctionResult(), ExecOpenIndices(), ExecParallelCreateReaders(), ExecParallelRetrieveInstrumentation(), ExecParallelSetupTupleQueues(), ExecRelCheck(), ExecSetupChildParentMapForSubplan(), ExecSortRetrieveInstrumentation(), execTuplesHashPrepare(), execTuplesMatchPrepare(), executeBinaryArithmExpr(), executeDateTimeMethod(), executeItemOptUnwrapTarget(), executeNumericItemMethod(), ExecuteTruncateGuts(), ExportSnapshot(), ExprEvalPushStep(), extract_autovac_opts(), extract_grouping_collations(), extract_grouping_cols(), extract_grouping_ops(), extract_mb_char(), extract_rollup_sets(), fallbackSplit(), file_acquire_sample_rows(), fileBeginForeignScan(), fileGetForeignRelSize(), filter_list_to_array(), find_appinfos_by_relids(), find_hash_columns(), find_in_dynamic_libpath(), find_inheritance_children(), find_partition_scheme(), find_window_functions(), findDependentObjects(), findJsonbValueFromContainer(), float4_to_char(), Float4GetDatum(), float4out(), float8_to_char(), Float8GetDatum(), float8out_internal(), float_to_shortest_decimal(), format_operator_internal(), format_procedure_internal(), formTextDatum(), FreezeMultiXactId(), FuncnameGetCandidates(), g_cube_decompress(), g_cube_picksplit(), g_int_compress(), g_int_decompress(), g_int_picksplit(), g_intbig_compress(), g_intbig_picksplit(), g_intbig_union(), gbt_bit_xfrm(), gbt_cash_union(), gbt_date_union(), gbt_enum_union(), gbt_float4_union(), gbt_float8_union(), gbt_inet_compress(), gbt_inet_union(), gbt_int2_union(), gbt_int4_union(), gbt_int8_union(), gbt_intv_compress(), gbt_intv_decompress(), gbt_intv_union(), gbt_num_compress(), gbt_num_fetch(), gbt_num_picksplit(), gbt_oid_union(), gbt_time_union(), gbt_timetz_compress(), gbt_ts_union(), gbt_tstz_compress(), gbt_uuid_compress(), gbt_uuid_union(), gbt_var_compress(), gbt_var_decompress(), gbt_var_fetch(), gbt_var_key_from_datum(), gbt_var_picksplit(), gen_random_uuid(), generate_append_tlist(), generate_normalized_query(), generate_series_step_int4(), generate_series_step_int8(), generate_series_step_numeric(), generate_series_timestamp(), generate_series_timestamptz(), generate_subscripts(), generate_trgm(), generate_trgm_only(), generate_wildcard_trgm(), generateHeadline(), generator_init(), genericPickSplit(), GenericXLogStart(), get_attribute_options(), get_collation_actual_version(), get_configdata(), get_controlfile(), get_database_list(), get_docrep(), get_explain_guc_options(), get_ext_ver_info(), get_extension_aux_control_filename(), get_extension_control_directory(), get_extension_control_filename(), get_extension_script_directory(), get_extension_script_filename(), get_func_arg_info(), get_func_input_arg_names(), get_func_signature(), get_func_trftypes(), get_op_btree_interpretation(), get_page_from_raw(), get_path_all(), get_pkey_attnames(), get_raw_page_internal(), get_relation_info(), get_rels_with_domain(), get_str_from_var(), get_str_from_var_sci(), get_tables_to_cluster(), get_text_array_contents(), get_tsearch_config_filename(), get_val(), get_worker(), GetBlockerStatusData(), GetBulkInsertState(), GetCachedExpression(), getColorInfo(), GetCurrentVirtualXIDs(), GetFdwRoutineForRelation(), GetForeignDataWrapperExtended(), GetForeignServerExtended(), GetForeignTable(), getIthJsonbValueFromContainer(), getKeyJsonValueFromContainer(), GetLockStatusData(), GetMessageEncoding(), GetMultiXactIdMembers(), GetPermutation(), GetPredicateLockStatusData(), GetPreparedTransactionList(), GetPublication(), getQuadrantArea(), getRangeBox(), GetRelationPublicationActions(), GetRunningTransactionLocks(), GetSQLCurrentTime(), GetSubscription(), GetSubscriptionNotReadyRelations(), GetSubscriptionRelations(), gettoken_tsvector(), getTokenTypes(), GetUserMapping(), GetVirtualXIDsDelayingChkpt(), ghstore_compress(), ghstore_picksplit(), ghstore_union(), gimme_tree(), gin_bool_consistent(), gin_btree_extract_query(), gin_btree_extract_value(), gin_extract_hstore(), gin_extract_hstore_query(), gin_extract_jsonb_path(), gin_extract_jsonb_query(), gin_extract_query_trgm(), gin_extract_tsquery(), gin_extract_tsvector(), gin_extract_value_trgm(), gin_leafpage_items(), gin_trgm_triconsistent(), ginAllocEntryAccumulator(), ginbeginscan(), ginbuild(), ginCompressPostingList(), GinDataLeafPageGetItems(), ginExtractEntries(), ginFillScanEntry(), ginFillScanKey(), ginFindLeafPage(), ginFindParents(), GinFormInteriorTuple(), ginHeapTupleFastCollect(), ginHeapTupleFastInsert(), gininsert(), ginInsertBAEntry(), ginint4_queryextract(), ginMergeItemPointers(), ginNewScanKey(), ginPostingListDecodeAllSegments(), ginReadTuple(), ginRedoRecompress(), ginVacuumItemPointers(), ginVacuumPostingTreeLeaf(), gist_box_picksplit(), gist_box_union(), gist_circle_compress(), gist_point_compress(), gist_point_fetch(), gist_poly_compress(), gistbeginscan(), gistbufferinginserttuples(), gistbuild(), gistextractpage(), gistfillitupvec(), gistfixsplit(), gistGetItupFromPage(), gistgettuple(), gistInitBuildBuffers(), gistMakeUnionItVec(), gistplacetopage(), gistRelocateBuildBuffersOnSplit(), gistrescan(), gistScanPage(), gistSplit(), gistSplitByKey(), gistSplitHalf(), gistunionsubkeyvec(), gseg_picksplit(), gtrgm_compress(), gtrgm_consistent(), gtrgm_decompress(), gtrgm_picksplit(), gtrgm_union(), gtsquery_compress(), gtsquery_picksplit(), gtsvector_compress(), gtsvector_decompress(), gtsvector_picksplit(), gtsvector_union(), gtsvectorout(), hash_object_field_end(), hash_page_items(), hashbeginscan(), hashbpchar(), hashbpcharextended(), hashbuild(), hashgettuple(), hashtext(), hashtextextended(), heap_beginscan(), heap_copy_minimal_tuple(), heap_copy_tuple_as_datum(), heap_copytuple(), heap_copytuple_with_tuple(), heap_modify_tuple(), heap_modify_tuple_by_cols(), heap_multi_insert(), heap_page_items(), heap_tuple_from_minimal_tuple(), heapam_relation_copy_for_cluster(), hladdword(), hstore_akeys(), hstore_avals(), hstore_concat(), hstore_delete(), hstore_delete_array(), hstore_delete_hstore(), hstore_from_array(), hstore_from_arrays(), hstore_from_record(), hstore_out(), hstore_populate_record(), hstore_recv(), hstore_slice_to_array(), hstore_slice_to_hstore(), hstore_to_array_internal(), hstoreArrayToPairs(), hstorePairs(), identify_opfamily_groups(), ImportSnapshot(), index_compute_xid_horizon_for_tuples(), index_register(), index_truncate_tuple(), inet_gist_compress(), inet_gist_fetch(), inet_gist_picksplit(), inet_set_masklen(), inet_spg_inner_consistent(), inet_spg_picksplit(), infix(), init_execution_state(), init_gin_entries(), init_sexpr(), init_slab_allocator(), init_tour(), init_tsvector_parser(), InitCatCache(), InitDeadLockChecking(), initGISTstate(), initialize_brin_buildstate(), initialize_worker_spi(), initKeyArray(), InitPlan(), initRectBox(), initStringInfo(), int2out(), int2vectorout(), int44in(), int44out(), int4_to_char(), int4out(), Int64GetDatum(), int8_to_char(), int_to_roman(), interpret_function_parameter_list(), interval_div(), interval_in(), interval_justify_days(), interval_justify_hours(), interval_justify_interval(), interval_mi(), interval_mul(), interval_pl(), interval_recv(), interval_scale(), interval_trunc(), interval_um(), intervaltypmodout(), intset_create(), irbt_alloc(), iterate_word_similarity(), json_agg_transfn(), json_object_agg_transfn(), json_object_keys(), jsonb_agg_transfn(), jsonb_object_agg_transfn(), jsonb_object_keys(), jsonb_ops__add_path_item(), JsonbDeepContains(), JsonbValueToJsonb(), JsonEncodeDateTime(), lazy_scan_heap(), lazy_space_alloc(), lca(), leafRepackItems(), leftmostvalue_interval(), leftmostvalue_timetz(), lex_accept(), LexizeAddLemm(), libpqrcv_readtimelinehistoryfile(), like_fixed_prefix(), limit_printout_length(), line_construct_pp(), line_in(), line_interpt(), line_recv(), llvm_compile_expr(), llvm_compile_module(), llvm_copy_attributes(), lo_get_fragment_internal(), load_categories_hash(), load_domaintype_info(), load_enum_cache_data(), load_relcache_init_file(), load_tzoffsets(), LocalProcessControlFile(), logfile_getname(), logical_heap_rewrite_flush_mappings(), logicalrep_read_attrs(), logicalrep_read_rel(), logicalrep_read_tuple(), logicalrep_rel_open(), logicalrep_relmap_update(), logicalrep_worker_stop_at_commit(), LogicalTapeFreeze(), LogicalTapeRewindForRead(), LogicalTapeSetCreate(), LogicalTapeWrite(), lookup_var_attr_stats(), lowerstr_with_len(), lpad(), lquery_out(), lseg_center(), lseg_construct(), lseg_in(), lseg_interpt(), lseg_recv(), ltree2text(), ltree_compress(), ltree_decompress(), ltree_in(), ltree_out(), ltree_picksplit(), ltxtq_out(), macaddr8_out(), macaddr_and(), macaddr_in(), macaddr_not(), macaddr_or(), macaddr_out(), macaddr_recv(), macaddr_sortsupport(), macaddr_trunc(), make_colname_unique(), make_greater_string(), make_hba_token(), make_interval(), make_jsp_entry_node(), make_jsp_expr_node(), make_partitionedrel_pruneinfo(), make_pathtarget_from_tlist(), make_positional_trgm(), make_recursive_union(), make_result_opt_error(), make_row_comparison_op(), make_setop(), make_sort_from_groupcols(), make_sort_from_sortclauses(), make_text_key(), make_tuple_from_result_row(), make_tuple_indirect(), make_unique_from_pathkeys(), make_unique_from_sortclauses(), makeaclitem(), makeArrayTypeName(), makeBufFile(), makeBufFileCommon(), MakeConfigurationMapping(), makeitem(), makeNamespaceItem(), makeObjectName(), makeParamList(), makepoint(), MakeSharedInvalidMessagesArray(), makeStringInfo(), maketree(), map_variable_attnos_mutator(), mark_hl_fragments(), match_clause_to_partition_key(), MatchNamedCall(), MatchText(), materializeResult(), mcelem_array_contained_selec(), mcelem_tsquery_selec(), mcv_get_match_bitmap(), mdunlinkfork(), MergeAttributes(), mergeruns(), minimal_tuple_from_heap_tuple(), mock_scram_secret(), moveLeafs(), MultiXactIdExpand(), mXactCacheGetById(), ndistinct_for_combination(), network_sortsupport(), new_list(), new_object_addresses(), newLexeme(), newTParserPosition(), nextRectBox(), NIAddAffix(), NISortAffixes(), nodeRead(), normal_rand(), NormalizeSubWord(), NUM_cache(), numeric(), numeric_abs(), numeric_sortsupport(), numeric_to_char(), numeric_to_number(), numeric_uminus(), numeric_uplus(), numerictypmodout(), offset_to_interval(), oidout(), oidvectorout(), oidvectortypes(), OpernameGetCandidates(), optionListToArray(), order_qual_clauses(), ordered_set_startup(), packArcInfoCmp(), packGraph(), PageGetTempPage(), PageGetTempPageCopy(), PageGetTempPageCopySpecial(), pairingheap_allocate(), palloc_btree_page(), parse_datetime(), parse_fcall_arguments(), parse_fixed_parameters(), parse_hstore(), parse_ident_line(), parse_key_value_arrays(), parse_one_reloption(), parse_scram_secret(), parse_tsquery(), parse_variable_parameters(), parseRelOptions(), partition_bounds_copy(), partition_bounds_create(), path_add(), path_in(), path_poly(), path_recv(), percentile_cont_multi_final_common(), percentile_disc_multi_final(), perform_pruning_base_step(), PerformRadiusTransaction(), pg_armor(), pg_blocking_pids(), pg_buffercache_pages(), pg_collation_actual_version(), pg_convert(), pg_dearmor(), pg_decrypt(), pg_decrypt_iv(), pg_detoast_datum_copy(), pg_digest(), pg_encrypt(), pg_encrypt_iv(), pg_get_constraintdef_worker(), pg_get_multixact_members(), pg_get_userbyid(), pg_hmac(), pg_import_system_collations(), pg_lock_status(), pg_logdir_ls_internal(), pg_ls_dir(), pg_ls_dir_files(), pg_prepared_xact(), pg_random_bytes(), pg_safe_snapshot_blocking_pids(), pg_tablespace_databases(), pg_timezone_abbrevs(), pg_timezone_names(), pgfnames(), pgp_armor_headers(), pgp_extract_armor_headers(), pgp_key_id_w(), pgrowlocks(), pgss_post_parse_analyze(), pgss_shmem_startup(), placeChar(), plaintree(), plperl_build_tuple_result(), plperl_ref_from_pg_array(), plperl_spi_exec_prepared(), plperl_spi_prepare(), plperl_spi_query_prepared(), plperl_to_hstore(), plpgsql_add_initdatums(), plpgsql_finish_datums(), plpgsql_fulfill_promise(), plpgsql_ns_additem(), plpgsql_parse_err_condition(), plpython_to_hstore(), pltcl_quote(), pltcl_SPI_execute_plan(), pltcl_SPI_prepare(), PLy_cursor_plan(), PLy_procedure_munge_source(), PLy_spi_execute_plan(), PLyGenericObject_ToComposite(), PLyMapping_ToComposite(), PLyObject_ToBytea(), PLyObject_ToJsonbValue(), PLySequence_ToArray(), PLySequence_ToComposite(), pnstrdup(), point_add(), point_box(), point_div(), point_in(), point_mul(), point_recv(), point_sub(), points_box(), policy_role_list_to_array(), poly_box(), poly_center(), poly_circle(), poly_path(), populate_array(), populate_array_assign_ndims(), populate_record(), populate_recordset_object_field_end(), populate_scalar(), PostgresMain(), pq_getmsgtext(), prepare_sort_from_pathkeys(), prepare_sql_fn_parse_info(), PrepareQuery(), preprocess_grouping_sets(), PrescanPreparedTransactions(), ProcArrayApplyRecoveryInfo(), process_pipe_input(), process_startup_options(), process_syncing_tables_for_apply(), prs_setup_firstcall(), prsd_lextype(), psprintf(), publicationListToArray(), pull_up_sublinks_jointree_recurse(), pushJsonbValueScalar(), PushOverrideSearchPath(), pushquery(), pushState(), pushval_morph(), QTNCopy(), queryin(), queue_listen(), quote_identifier(), quote_literal(), quote_literal_cstr(), range_gist_double_sorting_split(), range_gist_picksplit(), range_gist_single_sorting_split(), rbt_create(), RE_compile(), RE_compile_and_cache(), RE_execute(), read_binary_file(), read_client_final_message(), read_dictionary(), read_extension_aux_control_file(), read_tablespace_map(), read_whole_file(), readAttrNumberCols(), readBoolCols(), readDatum(), readIntCols(), readOidCols(), readstoplist(), readTimeLineHistory(), readtup_heap(), ReadTwoPhaseFile(), rebuild_database_list(), record_cmp(), record_eq(), record_image_cmp(), record_image_eq(), record_in(), record_out(), record_recv(), record_send(), reduce_outer_joins_pass1(), regclassout(), regconfigout(), regdictionaryout(), regexp_fixed_prefix(), regexp_match(), regexp_matches(), register_label_provider(), register_on_commit_action(), RegisterDynamicBackgroundWorker(), regnamespaceout(), regoperout(), regprocout(), regroleout(), regtypeout(), ReindexRelationConcurrently(), RelationBuildPartitionDesc(), RelationBuildTriggers(), RelationGetExclusionInfo(), RelationGetIndexScan(), RememberSyncRequest(), RememberToFreeTupleDescAtEOX(), RemoveRoleFromObjectPolicy(), ReorderBufferQueueMessage(), reorderqueue_push(), repeat(), replace_auto_config_value(), replace_text_regexp(), report_invalid_token(), report_json_context(), report_parse_error(), ResolveRecoveryConflictWithVirtualXIDs(), RewriteQuery(), rpad(), save_state_data(), scanPendingInsert(), scanstr(), scram_build_secret(), scram_verify_plain_password(), SearchCatCacheList(), searchRangeTableForCol(), seg_in(), seg_inter(), seg_out(), seg_union(), select_active_windows(), select_outer_pathkeys_for_merge(), selectColorTrigrams(), sepgsql_fmgr_hook(), seq_redo(), SerializeTransactionState(), set_baserel_partition_key_exprs(), set_plan_references(), set_relation_column_names(), set_rtable_names(), set_var_from_str(), setup_firstcall(), setup_pct_info(), setup_regexp_matches(), sha224_bytea(), sha256_bytea(), sha384_bytea(), sha512_bytea(), shm_mq_attach(), show_trgm(), SignalBackends(), similar_escape_internal(), SlabStats(), slot_compile_deform(), slot_fill_defaults(), smgrDoPendingDeletes(), smgrdounlinkall(), smgrGetPendingDeletes(), SnapBuildInitialSnapshot(), SortAndUniqItems(), spg_box_quad_inner_consistent(), spg_box_quad_picksplit(), spg_kd_inner_consistent(), spg_kd_picksplit(), spg_key_orderbys_distances(), spg_poly_quad_compress(), spg_quad_inner_consistent(), spg_quad_picksplit(), spg_range_quad_inner_consistent(), spg_range_quad_picksplit(), spg_text_choose(), spg_text_inner_consistent(), spg_text_leaf_consistent(), spg_text_picksplit(), spgAddPendingTID(), spgAllocSearchItem(), spgbeginscan(), spgbuildempty(), spgExtractNodeLabels(), spgInnerTest(), spgRedoVacuumRedirect(), spgSplitNodeAction(), spi_dest_startup(), SPI_modifytuple(), SPI_register_trigger_data(), split_pathtarget_walker(), SplitToVariants(), ssl_extension_info(), StandbyAcquireAccessExclusiveLock(), StartPrepare(), startScanKey(), StartupXLOG(), statext_mcv_build(), statext_mcv_clauselist_selectivity(), statext_mcv_deserialize(), statext_ndistinct_build(), statext_ndistinct_serialize(), std_typanalyze(), store_flush_position(), storeGettuple(), StoreRelCheck(), storeRow(), str_initcap(), str_numth(), str_tolower(), str_toupper(), string_to_bytea_const(), strlist_to_textarray(), SV_to_JsonbValue(), SyncRepGetNthLatestSyncRecPtr(), SyncRepWaitForLSN(), systable_beginscan(), systable_beginscan_ordered(), table_recheck_autovac(), tablesample_init(), tbm_begin_iterate(), test_pattern(), test_single_value_and_filler(), testdelete(), testprs_lextype(), text_catenate(), text_reverse(), text_substring(), text_to_bits(), text_to_cstring(), thesaurus_lexize(), tidin(), TidListEval(), tidrecv(), time_interval(), time_mi_time(), time_timetz(), timestamp_age(), timestamp_mi(), timestamptz_age(), timestamptz_timetz(), timetz_in(), timetz_izone(), timetz_mi_interval(), timetz_pl_interval(), timetz_recv(), timetz_scale(), timetz_zone(), to_tsvector_byid(), toast_compress_datum(), toast_decompress_datum(), toast_decompress_datum_slice(), toast_fetch_datum(), toast_fetch_datum_slice(), toast_open_indexes(), toast_save_datum(), tokenize_file(), tokenize_inc_file(), TParserInit(), transformRangeTableFunc(), transformRelOptions(), translate(), ts_dist(), ts_headline_byid_opt(), ts_headline_json_byid_opt(), ts_headline_jsonb_byid_opt(), ts_lexize(), TS_phrase_output(), ts_process_call(), tsqueryout(), tsqueryrecv(), tsquerytree(), tstz_dist(), tsvector_setweight(), tsvector_setweight_by_filter(), tsvector_to_array(), tsvector_unnest(), tsvector_update_trigger(), tsvectorin(), tsvectorout(), tt_setup_firstcall(), ttdummy(), tuple_data_split_internal(), TupleDescGetAttInMetadata(), tuplesort_begin_common(), tuplestore_begin_common(), txid_current_snapshot(), txid_snapshot_recv(), typenameTypeMod(), uniqueWORD(), update_attstats(), UpdateLogicalMappings(), uuid_in(), uuid_recv(), uuid_sortsupport(), vac_open_indexes(), validate_pkattnums(), varbit(), varbit_out(), varbit_recv(), variable_paramref_hook(), varstr_abbrev_convert(), varstr_cmp(), varstr_levenshtein(), varstr_sortsupport(), WaitOnLock(), widget_in(), xidout(), XLogFileNameP(), XlogReadTwoPhaseData(), xml_is_document(), xml_recv(), xpath_string(), xpath_table(), and xslt_process().

950 {
951  /* duplicates MemoryContextAlloc to avoid increased overhead */
952  void *ret;
954 
957 
958  if (!AllocSizeIsValid(size))
959  elog(ERROR, "invalid memory alloc request size %zu", size);
960 
961  context->isReset = false;
962 
963  ret = context->methods->alloc(context, size);
964  if (unlikely(ret == NULL))
965  {
967  ereport(ERROR,
968  (errcode(ERRCODE_OUT_OF_MEMORY),
969  errmsg("out of memory"),
970  errdetail("Failed on request of size %zu in memory context \"%s\".",
971  size, context->name)));
972  }
973 
974  VALGRIND_MEMPOOL_ALLOC(context, ret, size);
975 
976  return ret;
977 }
const MemoryContextMethods * methods
Definition: memnodes.h:83
int errcode(int sqlerrcode)
Definition: elog.c:608
#define AssertNotInCriticalSection(context)
Definition: mcxt.c:67
#define ERROR
Definition: elog.h:43
void MemoryContextStats(MemoryContext context)
Definition: mcxt.c:498
int errdetail(const char *fmt,...)
Definition: elog.c:957
MemoryContext CurrentMemoryContext
Definition: mcxt.c:38
void *(* alloc)(MemoryContext context, Size size)
Definition: memnodes.h:59
#define ereport(elevel, rest)
Definition: elog.h:141
#define AssertArg(condition)
Definition: c.h:735
MemoryContext TopMemoryContext
Definition: mcxt.c:44
#define AllocSizeIsValid(size)
Definition: memutils.h:42
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
#define VALGRIND_MEMPOOL_ALLOC(context, addr, size)
Definition: memdebug.h:29
int errmsg(const char *fmt,...)
Definition: elog.c:822
#define elog(elevel,...)
Definition: elog.h:228
#define unlikely(x)
Definition: c.h:208
const char * name
Definition: memnodes.h:88

◆ palloc0()

void* palloc0 ( Size  size)

Definition at line 980 of file mcxt.c.

Referenced by _bt_begin_parallel(), _bt_blwritepage(), _bt_buildadd(), _bt_leader_participate_as_worker(), _bt_load(), _bt_pagestate(), _bt_parallel_build_main(), _bt_parallel_scan_and_sort(), _bt_preprocess_array_keys(), _bt_spools_heapscan(), _bt_truncate(), _h_spoolinit(), _ltq_extract_regex(), _ltree_compress(), _ltree_extract_isparent(), _ltree_extract_risparent(), _ltree_picksplit(), _ltree_union(), _ltxtq_extract_exec(), _mdfd_getseg(), _SPI_make_plan_non_temp(), _SPI_save_plan(), accum_sum_rescale(), add_column_to_pathtarget(), add_dummy_return(), add_foreign_final_paths(), add_foreign_ordered_paths(), add_sp_item_to_pathtarget(), addFkRecurseReferencing(), allocacl(), AllocateRelationDesc(), allocateReloptStruct(), AllocateSnapshotBuilder(), AlterObjectNamespace_internal(), AlterObjectOwner_internal(), AlterObjectRename_internal(), AlterOpFamilyAdd(), AlterOpFamilyDrop(), array_cat(), array_create_iterator(), array_get_slice(), array_in(), array_map(), array_recv(), array_replace_internal(), array_set_element(), array_set_slice(), array_to_tsvector(), ATAddCheckConstraint(), ATExecAddColumn(), ATGetQueueEntry(), ATPrepAlterColumnType(), begin_heap_rewrite(), BeginCopy(), bernoulli_initsamplescan(), BipartiteMatch(), bit(), bit_in(), blbulkdelete(), blgetbitmap(), bloom_create(), BloomFormTuple(), blvacuumcleanup(), bms_add_range(), bms_make_singleton(), bpchar_name(), brin_form_placeholder_tuple(), brin_form_tuple(), brin_inclusion_opcinfo(), brin_minmax_opcinfo(), brin_new_memtuple(), brinbulkdelete(), bringetbitmap(), brinvacuumcleanup(), bt_check_every_level(), bt_page_print_tuples(), btbulkdelete(), btvacuumcleanup(), build_inet_union_key(), build_joinrel_partition_info(), build_pertrans_for_aggref(), build_row_from_vars(), build_simple_rel(), build_sorted_items(), BuildDescForRelation(), BuildEventTriggerCache(), buildint2vector(), buildoidvector(), calc_rank_and(), calc_rank_cd(), calc_word_similarity(), check_hba(), check_ident_usermap(), cidr_set_masklen_internal(), circle_poly(), collect_corrupt_items(), collect_visibility_data(), compact_palloc0(), CompactCheckpointerRequestQueue(), compile_plperl_function(), compile_pltcl_function(), construct_empty_array(), construct_md_array(), convert_tuples_by_name_map(), convert_tuples_by_position(), ConvertTriggerToFK(), copy_ltree(), CopyCachedPlan(), create_array_envelope(), create_foreign_modify(), create_GistBulkDeleteResult(), create_groupingsets_plan(), create_hash_bounds(), create_list_bounds(), create_queryEnv(), create_range_bounds(), CreateCachedPlan(), CreateFakeRelcacheEntry(), CreateIntoRelDestReceiver(), CreateOneShotCachedPlan(), CreateParallelContext(), CreateSQLFunctionDestReceiver(), CreateTransientRelDestReceiver(), CreateTupleDescCopyConstr(), CreateTupleQueueDestReceiver(), CreateTupleQueueReader(), CreateTuplestoreDestReceiver(), crosstab(), cube_a_f8(), cube_a_f8_f8(), cube_c_f8(), cube_c_f8_f8(), cube_enlarge(), cube_f8(), cube_f8_f8(), cube_inter(), cube_subset(), cube_union_v0(), deconstruct_array(), DefineOpClass(), deparse_context_for(), deparse_context_for_plan_rtable(), DependencyGenerator_init(), dintdict_init(), dintdict_lexize(), disassembleLeaf(), dispell_init(), div_var(), div_var_fast(), do_analyze_rel(), doPickSplit(), dsimple_init(), dsimple_lexize(), dsm_impl_mmap(), dsnowball_init(), dsnowball_lexize(), dsynonym_init(), dsynonym_lexize(), dxsyn_init(), each_worker(), elements_worker(), eqjoinsel_inner(), eqjoinsel_semi(), EvalPlanQualInit(), EvalPlanQualStart(), EventTriggerCollectAlterDefPrivs(), EventTriggerCollectAlterTSConfig(), EventTriggerCollectCreateOpClass(), EventTriggerSQLDropAddObject(), examine_attribute(), exec_stmt_call(), ExecBuildAuxRowMark(), ExecBuildGroupingEqual(), ExecFindInitialMatchingSubPlans(), ExecGrant_Relation(), ExecHashIncreaseNumBatches(), ExecHashTableCreate(), ExecHashTableReset(), ExecIndexBuildScanKeys(), ExecInitAgg(), ExecInitBitmapAnd(), ExecInitBitmapOr(), ExecInitExprRec(), ExecInitFunc(), ExecInitGatherMerge(), ExecInitIndexScan(), ExecInitJunkFilterConversion(), ExecInitMergeAppend(), ExecInitModifyTable(), ExecInitParallelPlan(), ExecInitPruningContext(), ExecInitRangeTable(), ExecInitSetOp(), ExecInitSubscriptingRef(), ExecInitWindowAgg(), ExecParallelHashEnsureBatchAccessors(), ExecParallelHashJoinSetUpBatches(), ExecParallelHashRepartitionRest(), ExecSetupPartitionTupleRouting(), expand_colnames_array_to(), expand_partitioned_rtentry(), expand_planner_arrays(), expand_tuple(), extract_jsp_query(), extract_rollup_sets(), extract_variadic_args(), fetch_more_data(), fetch_remote_table_info(), fetch_statentries_for_relation(), fillFakeState(), find_language_template(), find_partition_scheme(), find_window_functions(), findeq(), formrdesc(), g_intbig_compress(), gather_merge_setup(), gbt_macad8_union(), gbt_macad_union(), gbt_num_bin_union(), gbt_num_compress(), gbt_var_key_copy(), gbt_var_node_truncate(), generate_base_implied_equalities_no_const(), generate_combinations(), generate_dependencies(), get_crosstab_tuplestore(), get_json_object_as_hash(), get_matching_hash_bounds(), get_matching_list_bounds(), get_matching_partitions(), get_matching_range_bounds(), get_relation_info(), get_subscription_list(), get_worker(), GetAccessStrategy(), GetAfterTriggersTableData(), getColorInfo(), GetLockConflicts(), GetOverrideSearchPath(), GetRelationPublicationActions(), ghstore_compress(), gin_extract_tsquery(), ginbulkdelete(), ginExtractEntries(), ginFillScanKey(), ginNewScanKey(), ginScanToDelete(), ginvacuumcleanup(), gist_box_picksplit(), gistbeginscan(), gistdoinsert(), gistFindPath(), gistUserPicksplit(), hashbulkdelete(), heap_form_minimal_tuple(), heap_form_tuple(), heap_toast_insert_or_update(), heap_tuple_infomask_flags(), heap_vacuum_rel(), heapam_index_fetch_begin(), identify_join_columns(), index_form_tuple(), inet_gist_compress(), inet_gist_fetch(), inetand(), inetnot(), inetor(), inheritance_planner(), init_returning_filter(), init_sql_fcache(), InitCatCache(), initHyperLogLog(), InitializeParallelDSM(), InitPlan(), InitResultRelInfo(), initSpGistState(), inittapestate(), inline_function(), inner_subltree(), InstrAlloc(), int2vectorin(), internal_inetpl(), interpret_function_parameter_list(), iterate_json_values(), iteratorFromContainer(), join_tsqueries(), json_array_length(), json_object_keys(), json_strip_nulls(), jsonb_agg_transfn(), jsonb_object_agg_transfn(), LaunchParallelWorkers(), lazy_scan_heap(), lca_inner(), leftmostvalue_macaddr(), leftmostvalue_macaddr8(), leftmostvalue_name(), leftmostvalue_uuid(), libpqrcv_connect(), libpqrcv_exec(), llvm_compile_expr(), load_relcache_init_file(), lquery_in(), ltree_compress(), ltree_concat(), ltree_in(), ltree_picksplit(), ltree_union(), macaddr8_and(), macaddr8_in(), macaddr8_not(), macaddr8_or(), macaddr8_recv(), macaddr8_set7bit(), macaddr8_trunc(), macaddr8tomacaddr(), macaddrtomacaddr8(), make_one_partition_rbound(), make_parsestate(), make_partition_pruneinfo(), make_partitionedrel_pruneinfo(), make_sort_input_target(), make_tsvector(), make_tuple_from_result_row(), make_tuple_indirect(), makeArrayResultArr(), makeDefaultBloomOptions(), makeJsonLexContextCstringLen(), makeNumericAggState(), makeNumericAggStateCurrentContext(), MakeTransitionCaptureState(), MakeTupleTableSlot(), MergeAttributes(), MJExamineQuals(), mkVoidAffix(), mul_var(), multi_sort_init(), nameconcatoid(), namein(), namerecv(), ndistinct_for_combination(), network_broadcast(), network_hostmask(), network_in(), network_netmask(), network_network(), network_recv(), new_intArrayType(), NewExplainState(), newRegisNode(), NIImportOOAffixes(), NISortDictionary(), numeric_accum_inv(), oidvectorin(), ordered_set_startup(), parse_hba_line(), parse_ident_line(), parse_tsquery(), perform_base_backup(), perform_pruning_combine_step(), pg_be_scram_init(), pg_crypt(), pg_decode_startup(), pg_logical_slot_get_changes_guts(), pg_stat_get_wal_receiver(), pg_tzenumerate_start(), pgoutput_startup(), pgoutput_truncate(), placeChar(), plperl_build_tuple_result(), plperl_modify_tuple(), plperl_ref_from_pg_array(), plperl_spi_prepare(), plpgsql_build_recfield(), plpgsql_build_record(), plpgsql_build_variable(), plpgsql_compile_inline(), pltcl_build_tuple_result(), pltcl_SPI_prepare(), PLy_modify_tuple(), PLy_procedure_create(), PLy_spi_prepare(), poly_in(), poly_recv(), populate_array_assign_ndims(), populate_recordset_worker(), postgresBeginDirectModify(), postgresBeginForeignScan(), postgresGetForeignJoinPaths(), postgresGetForeignRelSize(), postgresGetForeignUpperPaths(), prepare_query_params(), prepare_sql_fn_parse_info(), preprocess_grouping_sets(), printtup_create_DR(), printtup_prepare_info(), ProcessCopyOptions(), ProcessStartupPacket(), prune_append_rel_partitions(), pull_up_constant_function(), pull_up_simple_subquery(), pull_up_simple_values(), pushOperator(), pushStop(), pushValue_internal(), QT2QTN(), QTN2QT(), QTNBinary(), queryin(), range_serialize(), read_extension_control_file(), refresh_by_match_merge(), RelationBuildLocalRelation(), RelationBuildPartitionKey(), RelationBuildRowSecurity(), RelationBuildTriggers(), remap_groupColIdx(), remove_useless_groupby_columns(), ReorderBufferCommit(), ReorderBufferToastReplace(), reverse_name(), rewriteTargetListIU(), rewriteValuesRTE(), save_state_data(), selectColorTrigrams(), sepgsql_avc_compute(), sepgsql_set_client_label(), set_append_rel_size(), set_baserel_partition_key_exprs(), set_deparse_for_query(), set_join_column_names(), set_simple_column_names(), set_subquery_pathlist(), setup_regexp_matches(), setup_simple_rel_arrays(), spg_quad_picksplit(), spgbeginscan(), spgbuild(), spgbulkdelete(), spgFormInnerTuple(), spgFormLeafTuple(), spgFormNodeTuple(), spgvacuumcleanup(), spi_dest_startup(), standard_ExecutorStart(), standard_join_search(), StartPrepare(), StartupDecodingContext(), statext_dependencies_build(), statext_dependencies_deserialize(), statext_dependencies_serialize(), statext_mcv_build(), statext_mcv_deserialize(), statext_mcv_serialize(), statext_ndistinct_deserialize(), sts_attach(), sts_initialize(), system_initsamplescan(), system_rows_initsamplescan(), system_time_initsamplescan(), tbm_attach_shared_iterate(), test_rls_hooks_permissive(), test_rls_hooks_restrictive(), testdelete(), testprs_start(), text_name(), thesaurus_init(), TidExprListCreate(), toast_flatten_tuple_to_datum(), TParserCopyInit(), TParserInit(), transform_json_string_values(), transformTableLikeClause(), transformValuesClause(), transformWithClause(), trgm_presence_map(), ts_headline_json_byid_opt(), ts_headline_jsonb_byid_opt(), ts_setup_firstcall(), tsquery_not(), tsqueryrecv(), tsvector_concat(), tsvector_delete_arr(), tsvector_delete_by_indices(), tsvector_filter(), tsvector_strip(), tsvectorin(), tsvectorrecv(), TupleDescGetAttInMetadata(), tuplesort_begin_cluster(), tuplesort_begin_common(), tuplesort_begin_datum(), tuplesort_begin_heap(), tuplesort_begin_index_btree(), tuplestore_begin_common(), unaccent_lexize(), varbit_in(), and XmlTableInitOpaque().

981 {
982  /* duplicates MemoryContextAllocZero to avoid increased overhead */
983  void *ret;
985 
988 
989  if (!AllocSizeIsValid(size))
990  elog(ERROR, "invalid memory alloc request size %zu", size);
991 
992  context->isReset = false;
993 
994  ret = context->methods->alloc(context, size);
995  if (unlikely(ret == NULL))
996  {
998  ereport(ERROR,
999  (errcode(ERRCODE_OUT_OF_MEMORY),
1000  errmsg("out of memory"),
1001  errdetail("Failed on request of size %zu in memory context \"%s\".",
1002  size, context->name)));
1003  }
1004 
1005  VALGRIND_MEMPOOL_ALLOC(context, ret, size);
1006 
1007  MemSetAligned(ret, 0, size);
1008 
1009  return ret;
1010 }
#define MemSetAligned(start, val, len)
Definition: c.h:989
const MemoryContextMethods * methods
Definition: memnodes.h:83
int errcode(int sqlerrcode)
Definition: elog.c:608
#define AssertNotInCriticalSection(context)
Definition: mcxt.c:67
#define ERROR
Definition: elog.h:43
void MemoryContextStats(MemoryContext context)
Definition: mcxt.c:498
int errdetail(const char *fmt,...)
Definition: elog.c:957
MemoryContext CurrentMemoryContext
Definition: mcxt.c:38
void *(* alloc)(MemoryContext context, Size size)
Definition: memnodes.h:59
#define ereport(elevel, rest)
Definition: elog.h:141
#define AssertArg(condition)
Definition: c.h:735
MemoryContext TopMemoryContext
Definition: mcxt.c:44
#define AllocSizeIsValid(size)
Definition: memutils.h:42
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
#define VALGRIND_MEMPOOL_ALLOC(context, addr, size)
Definition: memdebug.h:29
int errmsg(const char *fmt,...)
Definition: elog.c:822
#define elog(elevel,...)
Definition: elog.h:228
#define unlikely(x)
Definition: c.h:208
const char * name
Definition: memnodes.h:88

◆ palloc_extended()

void* palloc_extended ( Size  size,
int  flags 
)

Definition at line 1013 of file mcxt.c.

Referenced by allocate_recordbuf(), and XLogReaderAllocate().

1014 {
1015  /* duplicates MemoryContextAllocExtended to avoid increased overhead */
1016  void *ret;
1018 
1019  AssertArg(MemoryContextIsValid(context));
1020  AssertNotInCriticalSection(context);
1021 
1022  if (((flags & MCXT_ALLOC_HUGE) != 0 && !AllocHugeSizeIsValid(size)) ||
1023  ((flags & MCXT_ALLOC_HUGE) == 0 && !AllocSizeIsValid(size)))
1024  elog(ERROR, "invalid memory alloc request size %zu", size);
1025 
1026  context->isReset = false;
1027 
1028  ret = context->methods->alloc(context, size);
1029  if (unlikely(ret == NULL))
1030  {
1031  if ((flags & MCXT_ALLOC_NO_OOM) == 0)
1032  {
1034  ereport(ERROR,
1035  (errcode(ERRCODE_OUT_OF_MEMORY),
1036  errmsg("out of memory"),
1037  errdetail("Failed on request of size %zu in memory context \"%s\".",
1038  size, context->name)));
1039  }
1040  return NULL;
1041  }
1042 
1043  VALGRIND_MEMPOOL_ALLOC(context, ret, size);
1044 
1045  if ((flags & MCXT_ALLOC_ZERO) != 0)
1046  MemSetAligned(ret, 0, size);
1047 
1048  return ret;
1049 }
#define MemSetAligned(start, val, len)
Definition: c.h:989
#define MCXT_ALLOC_HUGE
Definition: fe_memutils.h:16
const MemoryContextMethods * methods
Definition: memnodes.h:83
#define MCXT_ALLOC_NO_OOM
Definition: fe_memutils.h:18
int errcode(int sqlerrcode)
Definition: elog.c:608
#define AssertNotInCriticalSection(context)
Definition: mcxt.c:67
#define ERROR
Definition: elog.h:43
void MemoryContextStats(MemoryContext context)
Definition: mcxt.c:498
int errdetail(const char *fmt,...)
Definition: elog.c:957
MemoryContext CurrentMemoryContext
Definition: mcxt.c:38
void *(* alloc)(MemoryContext context, Size size)
Definition: memnodes.h:59
#define ereport(elevel, rest)
Definition: elog.h:141
#define AssertArg(condition)
Definition: c.h:735
MemoryContext TopMemoryContext
Definition: mcxt.c:44
#define AllocSizeIsValid(size)
Definition: memutils.h:42
#define MemoryContextIsValid(context)
Definition: memnodes.h:102
#define VALGRIND_MEMPOOL_ALLOC(context, addr, size)
Definition: memdebug.h:29
#define MCXT_ALLOC_ZERO
Definition: fe_memutils.h:19
#define AllocHugeSizeIsValid(size)
Definition: memutils.h:46
int errmsg(const char *fmt,...)
Definition: elog.c:822
#define elog(elevel,...)
Definition: elog.h:228
#define unlikely(x)
Definition: c.h:208
const char * name
Definition: memnodes.h:88

◆ pchomp()

char* pchomp ( const char *  in)

Definition at line 1214 of file mcxt.c.

References pnstrdup().

Referenced by connect_pg_server(), dblink_connect(), dblink_error_message(), dblink_get_conn(), dblink_res_error(), dblink_send_query(), libpqrcv_connect(), libpqrcv_create_slot(), libpqrcv_endstreaming(), libpqrcv_exec(), libpqrcv_identify_system(), libpqrcv_readtimelinehistoryfile(), libpqrcv_receive(), libpqrcv_send(), libpqrcv_startstreaming(), MemoryContextSwitchTo(), pg_attribute_noreturn(), pgfdw_report_error(), and storeQueryResult().

1215 {
1216  size_t n;
1217 
1218  n = strlen(in);
1219  while (n > 0 && in[n - 1] == '\n')
1220  n--;
1221  return pnstrdup(in, n);
1222 }
char * pnstrdup(const char *in, Size len)
Definition: mcxt.c:1197

◆ pfree()

void pfree ( void *  pointer)

Definition at line 1056 of file mcxt.c.

Referenced by _bt_blwritepage(), _bt_buildadd(), _bt_doinsert(), _bt_findsplitloc(), _bt_freestack(), _bt_getroot(), _bt_gettrueroot(), _bt_insert_parent(), _bt_load(), _bt_newroot(), _bt_split(), _bt_spooldestroy(), _bt_truncate(), _bt_uppershutdown(), _fdvec_resize(), _h_spooldestroy(), _hash_splitbucket(), _hash_squeezebucket(), _int_contains(), _int_inter(), _int_overlap(), _int_same(), _int_union(), _lca(), _mdfd_getseg(), _mdfd_openseg(), _mdfd_segpath(), AbortBufferIO(), AbsorbSyncRequests(), accum_sum_rescale(), accumArrayResultArr(), aclmerge(), add_partial_path(), add_path(), addArcs(), AddEnumLabel(), addFkRecurseReferenced(), addHLParsedLex(), addItemPointersToLeafTuple(), addKey(), adjust_appendrel_attrs_multilevel(), adjust_child_relids_multilevel(), advance_transition_function(), advance_windowaggregate(), advance_windowaggregate_base(), afterTriggerDeleteHeadEventChunk(), AfterTriggerEndSubXact(), afterTriggerFreeEventList(), afterTriggerRestoreEventList(), allocate_recordbuf(), AlterObjectNamespace_internal(), AlterObjectOwner_internal(), AlterObjectRename_internal(), amvalidate(), apply_scanjoin_target_to_paths(), ApplyWorkerMain(), apw_dump_now(), array_free_iterator(), array_in(), array_map(), array_out(), array_recv(), array_replace_internal(), array_send(), array_set_element_expanded(), array_to_json_internal(), array_to_jsonb_internal(), array_to_text_internal(), arrayconst_cleanup_fn(), arrayexpr_cleanup_fn(), ArrayGetIntegerTypmods(), ASN1_STRING_to_text(), assign_simple_var(), AssignTransactionId(), Async_Notify(), AtEOSubXact_ApplyLauncher(), AtEOSubXact_Inval(), AtEOSubXact_Namespace(), AtEOSubXact_on_commit_actions(), AtEOSubXact_PgStat(), AtEOXact_GUC(), AtEOXact_Namespace(), AtEOXact_on_commit_actions(), AtEOXact_RelationCache(), ATExecAttachPartitionIdx(), ATPrepAlterColumnType(), AtSubAbort_childXids(), AtSubAbort_Notify(), AtSubAbort_Snapshot(), AtSubCommit_childXids(), AtSubCommit_Notify(), AttrDefaultFetch(), autoinc(), AuxiliaryProcessMain(), backend_read_statsfile(), be_tls_close(), be_tls_open_server(), big5_to_euc_tw(), binaryheap_free(), BipartiteMatchFree(), blendscan(), blgetbitmap(), bloom_free(), blrescan(), bms_add_members(), bms_free(), bms_int_members(), bms_join(), boolop(), BootStrapXLOG(), bpcharfastcmp_c(), bpcharrecv(), bqarr_in(), brin_build_desc(), brin_form_tuple(), brin_free_tuple(), brin_inclusion_add_value(), brin_inclusion_union(), brin_minmax_add_value(), brin_minmax_union(), brin_page_items(), brinendscan(), brinRevmapTerminate(), brinsummarize(), bt_downlink_check(), bt_downlink_missing_check(), bt_normalize_tuple(), bt_page_items(), bt_page_items_bytea(), bt_right_page_check_scankey(), bt_rootdescend(), bt_target_page_check(), bt_tuple_present_callback(), btendscan(), btinsert(), buf_finalize(), BufferSync(), BufFileClose(), build_child_join_rel(), build_child_join_sjinfo(), build_index_paths(), build_pertrans_for_aggref(), build_reloptions(), build_sorted_items(), buildFreshLeafTuple(), BuildTupleFromCStrings(), cache_locale_time(), cache_single_string(), calc_arraycontsel(), calc_distr(), calc_rank_and(), calc_rank_cd(), calc_rank_or(), calc_word_similarity(), cancel_on_dsm_detach(), CatalogCloseIndexes(), CatCacheFreeKeys(), CatCacheRemoveCList(), CatCacheRemoveCTup(), char2wchar(), check_circularity(), check_datestyle(), check_db_file_conflict(), check_ident_usermap(), check_locale(), check_log_destination(), check_relation_privileges(), check_schema_perms(), check_search_path(), check_temp_tablespaces(), check_timezone(), check_TSCurrentConfig(), check_wal_consistency_checking(), CheckAffix(), CheckConstraintFetch(), CheckMD5Auth(), CheckPasswordAuth(), CheckPointTwoPhase(), CheckPWChallengeAuth(), CheckRADIUSAuth(), CheckSCRAMAuth(), checkSharedDependencies(), ChooseConstraintName(), ChooseExtendedStatisticName(), ChooseRelationName(), citext_eq(), citext_hash(), citext_hash_extended(), citext_ne(), citextcmp(), clauselist_selectivity_simple(), clean_NOT_intree(), clean_stopword_intree(), clear_and_pfree(), close_tsvector_parser(), collectMatchBitmap(), commit_ts_desc(), commit_ts_redo(), CompactCheckpointerRequestQueue(), compareJsonbContainers(), compareStrings(), compile_plperl_function(), compile_pltcl_function(), compileTheLexeme(), compileTheSubstitute(), compute_array_stats(), compute_tsvector_stats(), concat_internal(), connect_pg_server(), construct_empty_expanded_array(), ConstructTupleDescriptor(), convert_any_priv_string(), convert_charset(), convert_column_name(), convert_string_datum(), convert_to_scalar(), convert_tuples_by_name_map_if_req(), convert_tuples_by_position(), convertPgWchar(), ConvertTriggerToFK(), copy_dest_destroy(), copy_file(), copy_table(), CopyArrayEls(), CopyFromErrorCallback(), CopyMultiInsertBufferCleanup(), CopyReadLine(), count_usable_fds(), create_cursor(), create_hash_bounds(), create_partitionwise_grouping_paths(), create_script_for_old_cluster_deletion(), create_tablespace_directories(), CreateCheckPoint(), createdb(), createNewConnection(), createPostingTree(), CreateTableSpace(), CreateTrigger(), croak_cstr(), crosstab(), cstr2sv(), datasegpath(), datetime_to_char_body(), datum_image_eq(), datum_to_json(), datum_to_jsonb(), datumSerialize(), db_encoding_convert(), dblink_connect(), dblink_disconnect(), dblink_security_check(), DCH_to_char(), DebugFileOpen(), DecodeTextArrayToCString(), DecodeXLogRecord(), DeconstructFkConstraintRow(), DefineDomain(), DefineEnum(), DefineIndex(), DefineRange(), DefineType(), deparseConst(), dependencies_clauselist_selectivity(), dependency_degree(), DependencyGenerator_free(), deserialize_deflist(), destroy_tablespace_directories(), DestroyParallelContext(), DestroyTupleQueueReader(), detoast_attr(), detoast_attr_slice(), dintdict_lexize(), dir_realloc(), dispell_lexize(), div_var(), div_var_fast(), do_analyze_rel(), do_autovacuum(), do_compile(), Do_MultiXactIdWait(), do_pg_start_backup(), do_text_output_multiline(), do_to_timestamp(), DoesMultiXactIdConflict(), dofindsubquery(), dotrim(), DropRelationFiles(), DropRelFileNodesAllBuffers(), DropSubscription(), dsa_detach(), dshash_destroy(), dshash_detach(), dsimple_lexize(), dsm_create(), dsm_detach(), dsm_impl_sysv(), dsnowball_lexize(), dsynonym_init(), dsynonym_lexize(), dxsyn_lexize(), elog_node_display(), end_tup_output(), EndCopy(), enlarge_list(), entry_dealloc(), entryLoadMoreItems(), enum_range_internal(), enum_recv(), EnumValuesCreate(), eqjoinsel_inner(), eqjoinsel_semi(), errdetail_params(), errfinish(), euc_tw_to_big5(), eval_windowaggregates(), EventTriggerAlterTableEnd(), EventTriggerSQLDropAddObject(), examine_attribute(), exec_bind_message(), exec_object_restorecon(), exec_stmt_foreach_a(), Exec_UnlistenCommit(), ExecAggTransReparent(), ExecDropSingleTupleTableSlot(), ExecEndWindowAgg(), ExecEvalXmlExpr(), ExecFetchSlotHeapTupleDatum(), ExecFindInitialMatchingSubPlans(), ExecForceStoreHeapTuple(), ExecForceStoreMinimalTuple(), ExecGrant_Attribute(), ExecGrant_Database(), ExecGrant_Fdw(), ExecGrant_ForeignServer(), ExecGrant_Function(), ExecGrant_Language(), ExecGrant_Largeobject(), ExecGrant_Namespace(), ExecGrant_Relation(), ExecGrant_Tablespace(), ExecGrant_Type(), ExecHashIncreaseNumBatches(), ExecHashRemoveNextSkewBucket(), ExecHashTableDestroy(), ExecIndexBuildScanKeys(), ExecParallelCleanup(), ExecParallelFinish(), ExecParallelHashCloseBatchAccessors(), ExecParallelHashRepartitionRest(), ExecReScanTidScan(), ExecResetTupleTable(), ExecSetParamPlan(), ExecSetSlotDescriptor(), ExecShutdownGatherMergeWorkers(), ExecShutdownGatherWorkers(), executeDateTimeMethod(), executeItemOptUnwrapTarget(), expand_dynamic_library_name(), expanded_record_set_field_internal(), expanded_record_set_fields(), expanded_record_set_tuple(), explain_ExecutorEnd(), ExplainProperty(), ExplainPropertyFloat(), ExplainPropertyList(), ExplainQuery(), extract_autovac_opts(), extract_rollup_sets(), fetch_finfo_record(), fetch_function_defaults(), fetch_remote_table_info(), fetch_table_list(), file_acquire_sample_rows(), filter_list_to_array(), find_in_dynamic_libpath(), find_inheritance_children(), find_provider(), findDependentObjects(), findeq(), findJsonbValueFromContainer(), FinishPreparedTransaction(), fixup_inherited_columns(), flatten_reloptions(), flush_pipe_input(), fmgr_info_C_lang(), fmgr_info_cxt_security(), forget_invalid_pages(), forget_invalid_pages_db(), form_and_insert_tuple(), free_attstatsslot(), free_chromo(), free_conversion_map(), free_edge_table(), free_object_addresses(), free_openssl_cipher(), free_openssl_digest(), free_parsestate(), free_pool(), free_sort_tuple(), FreeAccessStrategy(), freeAndGetParent(), FreeBulkInsertState(), FreeErrorData(), FreeExprContext(), FreeFakeRelcacheEntry(), freeGinBtreeStack(), freeHyperLogLog(), FreeQueryDesc(), FreeSnapshot(), FreeSubscription(), freetree(), FreeTriggerDesc(), FreeTupleDesc(), FreeWaitEventSet(), FreezeMultiXactId(), func_get_detail(), FuncnameGetCandidates(), g_int_compress(), g_int_consistent(), g_int_decompress(), g_int_penalty(), g_int_picksplit(), g_intbig_compress(), g_intbig_picksplit(), gbt_bit_l2n(), generate_append_tlist(), generate_base_implied_equalities_no_const(), generate_combinations(), generate_dependencies(), generate_trgm_only(), generate_wildcard_trgm(), generateHeadline(), generator_free(), GenericXLogAbort(), GenericXLogFinish(), get_attstatsslot(), get_const_expr(), get_control_dbstate(), get_docrep(), get_extension_aux_control_filename(), get_extension_script_filename(), get_flush_position(), get_from_clause(), get_sql_insert(), get_sql_update(), get_str_from_var_sci(), get_target_list(), get_tuple_of_interest(), get_typdefault(), GetAggInitVal(), getColorInfo(), getJsonPathVariable(), GetMessageEncoding(), GetMultiXactIdHintBits(), GetNewRelFileNode(), getNextNearest(), getObjectDescription(), getObjectIdentityParts(), GetRelationPublicationActions(), GetTempNamespaceBackendId(), gin_extract_jsonb_path(), gin_leafpage_items(), gin_trgm_triconsistent(), ginCompressPostingList(), ginendscan(), ginEntryFillRoot(), ginEntryInsert(), ginExtractEntries(), ginFinishSplit(), GinFormTuple(), ginFreeScanKeys(), ginPostingListDecodeAllSegmentsToTbm(), ginVacuumEntryPage(), ginVacuumPostingTree(), ginVacuumPostingTreeLeaf(), gist_ischild(), gistgetbitmap(), gistgettuple(), gistPopItupFromNodeBuffer(), gistRelocateBuildBuffersOnSplit(), gistrescan(), gistunionsubkeyvec(), gistUnloadNodeBuffer(), gtrgm_consistent(), gtrgm_distance(), gtrgm_penalty(), GUCArrayReset(), HandleParallelMessages(), hash_page_items(), hashbpchar(), hashbpcharextended(), hashbuildCallback(), hashendscan(), hashinsert(), hashtext(), hashtextextended(), heap_create_with_catalog(), heap_endscan(), heap_free_minimal_tuple(), heap_freetuple(), heap_lock_tuple(), heap_lock_updated_tuple_rec(), heap_modify_tuple(), heap_modify_tuple_by_cols(), heap_tuple_infomask_flags(), heap_tuple_needs_freeze(), heap_vacuum_rel(), heapam_index_fetch_end(), heapam_index_validate_scan(), heapam_relation_copy_for_cluster(), heapam_tuple_complete_speculative(), heapam_tuple_insert(), heapam_tuple_insert_speculative(), heapam_tuple_update(), hstoreUniquePairs(), hv_fetch_string(), hv_store_string(), ident_inet(), index_compute_xid_horizon_for_tuples(), index_concurrently_create_copy(), index_form_tuple(), index_store_float8_orderby_distances(), index_truncate_tuple(), IndexScanEnd(), IndexSupportsBackwardScan(), infix(), init_tour(), initcap(), initialize_reloptions(), InitIndexAmRoutine(), initTrie(), inner_int_inter(), insert_username(), InsertOneTuple(), int8_avg_deserialize(), internal_citext_pattern_cmp(), internalerrquery(), intorel_destroy(), intset_subtract(), inv_close(), inv_getsize(), inv_read(), inv_truncate(), inv_write(), InvalidateAttoptCacheCallback(), InvalidateTableSpaceCacheCallback(), irbt_free(), isAnyTempNamespace(), isRelDataFile(), iterate_jsonb_values(), iterate_word_similarity(), jit_release_context(), json_object(), json_object_keys(), json_object_two_arg(), jsonb_object(), jsonb_object_keys(), jsonb_object_two_arg(), jsonb_send(), JsonbDeepContains(), JsonbValue_to_SV(), jsonpath_send(), KnownAssignedXidsDisplay(), lazy_cleanup_index(), lazy_scan_heap(), lca(), leafRepackItems(), libpqrcv_create_slot(), libpqrcv_disconnect(), libpqrcv_startstreaming(), like_fixed_prefix(), list_delete_nth_cell(), list_free_private(), llvm_compile_module(), llvm_release_context(), llvm_resolve_symbol(), lo_manage(), load_enum_cache_data(), load_external_function(), load_file(), load_libraries(), load_relcache_init_file(), local_buffer_write_error_callback(), log_line_prefix(), logfile_rotate(), logical_heap_rewrite_flush_mappings(), logicalrep_relmap_free_entry(), logicalrep_typmap_free_entry(), logicalrep_write_tuple(), LogicalTapeFreeze(), LogicalTapeRewindForRead(), LogicalTapeRewindForWrite(), LogicalTapeSetClose(), LogStandbySnapshot(), lookup_ts_config_cache(), lookup_var_attr_stats(), lower(), lowerstr_with_len(), lquery_in(), ltree_addtext(), ltree_in(), ltree_strncasecmp(), ltree_textadd(), make_greater_string(), make_partition_pruneinfo(), make_partitionedrel_pruneinfo(), make_scalar_key(), make_tsvector(), make_tuple_indirect(), map_sql_value_to_xml_value(), mark_hl_fragments(), mcelem_array_contained_selec(), mcelem_array_selec(), mcelem_tsquery_selec(), mcv_get_match_bitmap(), mdcreate(), mdopenfork(), mdsyncfiletag(), mdunlinkfiletag(), mdunlinkfork(), merge_acl_with_grant(), merge_clump(), MergeAttributes(), mergeruns(), mkANode(), moddatetime(), mode_final(), moveArrayTypeName(), mul_var(), MultiXactIdExpand(), MultiXactIdGetUpdateXid(), MultiXactIdIsRunning(), mXactCachePut(), mxid_to_string(), namerecv(), NIImportAffixes(), NIImportDictionary(), NIImportOOAffixes(), NINormalizeWord(), NormalizeSubWord(), NUM_cache(), numeric_abbrev_convert(), numeric_avg_deserialize(), numeric_deserialize(), numeric_fast_cmp(), numeric_float4(), numeric_float8(), numeric_poly_deserialize(), numeric_stddev_pop(), numeric_to_double_no_overflow(), numeric_to_number(), numericvar_to_double_no_overflow(), packArcInfoCmp(), PageRestoreTempPage(), pagetable_free(), pair_encode(), pairingheap_free(), parse_and_validate_value(), parse_args(), parse_extension_control_file(), parse_fcall_arguments(), parse_hba_line(), parse_ident_line(), parse_one_reloption(), parse_tsquery(), parseCommandLine(), parseNameAndArgTypes(), parseRelOptions(), parsetext(), patternsel_common(), pclose_check(), perform_work_item(), PerformRadiusTransaction(), pg_armor(), pg_attribute_aclmask(), pg_be_scram_build_secret(), pg_class_aclmask(), pg_convert(), pg_crypt(), pg_database_aclmask(), pg_dearmor(), pg_encrypt(), pg_extension_update_paths(), pg_foreign_data_wrapper_aclmask(), pg_foreign_server_aclmask(), pg_get_constraintdef_worker(), pg_get_expr_worker(), pg_get_function_arg_default(), pg_get_indexdef_worker(), pg_get_multixact_members(), pg_get_partkeydef_worker(), pg_identify_object_as_address(), pg_language_aclmask(), pg_largeobject_aclmask_snapshot(), pg_namespace_aclmask(), pg_plan_query(), pg_proc_aclmask(), pg_replication_origin_create(), pg_replication_origin_drop(), pg_replication_origin_oid(), pg_replication_origin_session_setup(), pg_rewrite_query(), pg_split_opts(), pg_stat_file(), pg_stat_get_activity(), pg_stat_get_backend_activity(), pg_stat_statements_internal(), pg_stop_backup_v2(), pg_tablespace_aclmask(), pg_tablespace_databases(), pg_type_aclmask(), pg_tzenumerate_end(), pg_tzenumerate_next(), pgfnames_cleanup(), PGLC_localeconv(), pgss_shmem_startup(), pgss_store(), pgstat_recv_inquiry(), plainnode(), plperl_build_tuple_result(), plperl_call_perl_func(), plperl_hash_from_tuple(), plperl_modify_tuple(), plperl_spi_exec_prepared(), plperl_spi_prepare(), plperl_spi_query_prepared(), plperl_sv_to_datum(), plperl_trigger_handler(), plperl_util_elog(), plpgsql_destroy_econtext(), plpgsql_extra_checks_check_hook(), plpgsql_subxact_cb(), pltcl_build_tuple_argument(), pltcl_func_handler(), pltcl_quote(), pltcl_set_tuple_values(), pltcl_trigger_handler(), PLy_abort_open_subtransactions(), PLy_cursor_plan(), PLy_elog_impl(), PLy_function_drop_args(), PLy_function_restore_args(), PLy_input_setup_tuple(), PLy_modify_tuple(), PLy_output(), PLy_output_setup_tuple(), PLy_pop_execution_context(), PLy_procedure_compile(), PLy_procedure_create(), PLy_quote_literal(), PLy_quote_nullable(), PLy_spi_execute_plan(), PLy_subtransaction_exit(), PLy_traceback(), PLy_trigger_build_args(), PLyGenericObject_ToComposite(), PLyMapping_ToComposite(), PLyNumber_ToJsonbValue(), PLySequence_ToComposite(), PLyString_FromScalar(), PLyUnicode_AsString(), PLyUnicode_Bytes(), PopActiveSnapshot(), PopOverrideSearchPath(), PopTransaction(), populate_array(), populate_array_json(), populate_record(), populate_scalar(), PortalDrop(), postgresGetForeignJoinPaths(), PostmasterMain(), PostPrepare_smgr(), pprint(), pq_endmessage(), pq_puttextmessage(), pq_sendcountedtext(), pq_sendstring(), pq_sendtext(), pq_writestring(), PrepareTempTablespaces(), PrescanPreparedTransactions(), print(), print_expr(), print_function_arguments(), PrintBufferLeakWarning(), printtup_destroy(), printtup_prepare_info(), printtup_shutdown(), ProcArrayApplyRecoveryInfo(), process_block_change(), process_ordered_aggregate_single(), process_pipe_input(), ProcessCommittedInvalidationMessages(), ProcessGUCArray(), ProcessStandbyHSFeedbackMessage(), ProcessStandbyReplyMessage(), ProcessWalSndrMessage(), ProcSleep(), prs_process_call(), prune_element_hashtable(), prune_lexemes_hashtable(), psprintf(), PushTransaction(), pushval_morph(), px_find_cipher(), px_find_digest(), QTNFree(), QTNTernary(), queryin(), quote_object_name(), range_recv(), rbt_populate(), RE_compile(), RE_compile_and_cache(), RE_execute(), read_client_final_message(), read_dictionary(), readstoplist(), recomputeNamespacePath(), record_cmp(), record_eq(), record_image_cmp(), record_image_eq(), record_in(), record_out(), record_recv(), record_send(), RecordTransactionAbort(), RecordTransactionCommit(), RecoverPreparedTransactions(), recursive_revoke(), recv_password_packet(), regex_fixed_prefix(), RehashCatCache(), reindex_one_database(), ReinitializeParallelDSM(), RelationBuildPartitionKey(), RelationBuildRowSecurity(), RelationBuildRuleLock(), RelationBuildTriggers(), RelationBuildTupleDesc(), RelationCacheInitializePhase3(), RelationClearRelation(), RelationDestroyRelation(), RelationGetIndexExpressions(), RelationGetIndexPredicate(), RelationParseRelOptions(), RelationPreserveStorage(), RelationReloadIndexInfo(), relmap_redo(), RememberSyncRequest(), remove_dbtablespaces(), RemoveLocalLock(), RenameTypeInternal(), ReorderBufferFreeSnap(), ReorderBufferIterTXNFinish(), ReorderBufferReturnChange(), ReorderBufferReturnRelids(), ReorderBufferReturnTupleBuf(), ReorderBufferReturnTXN(), ReorderBufferToastReplace(), ReorderBufferToastReset(), reorderqueue_pop(), replace_auto_config_value(), replace_text(), replace_text_regexp(), report_invalid_page(), report_triggers(), reportDependentObjects(), ReportGUCOption(), reset_on_dsm_detach(), resetSpGistScanOpaque(), resolve_aggregate_transtype(), ResolveRecoveryConflictWithVirtualXIDs(), ResourceArrayEnlarge(), ResourceArrayFree(), ResourceOwnerDelete(), rewriteTargetListIU(), rewriteValuesRTE(), rm_redo_error_callback(), RS_free(), run_ssl_passphrase_command(), scanPendingInsert(), scram_verify_plain_password(), select_active_windows(), select_outer_pathkeys_for_merge(), send_message_to_frontend(), send_message_to_server_log(), SendFunctionResult(), sepgsql_attribute_drop(), sepgsql_attribute_post_create(), sepgsql_attribute_relabel(), sepgsql_attribute_setattr(), sepgsql_avc_check_perms(), sepgsql_avc_compute(), sepgsql_avc_reclaim(), sepgsql_database_drop(), sepgsql_database_post_create(), sepgsql_database_relabel(), sepgsql_database_setattr(), sepgsql_proc_drop(), sepgsql_proc_execute(), sepgsql_proc_post_create(), sepgsql_proc_relabel(), sepgsql_proc_setattr(), sepgsql_relation_drop(), sepgsql_relation_post_create(), sepgsql_relation_relabel(), sepgsql_relation_setattr(), sepgsql_schema_drop(), sepgsql_schema_post_create(), sepgsql_schema_relabel(), sepgsql_xact_callback(), seq_redo(), serialize_deflist(), set_append_rel_size(), set_customscan_references(), set_foreignscan_references(), set_indexonlyscan_references(), set_join_references(), set_plan_refs(), set_returning_clause_references(), set_subquery_pathlist(), set_upper_references(), set_var_from_str(), SetClientEncoding(), setCorrLex(), setNewTmpRes(), setup_regexp_matches(), shared_buffer_write_error_callback(), shdepLockAndCheckObject(), shm_mq_detach(), shm_mq_receive(), show_trgm(), ShowAllGUCConfig(), ShowTransactionStateRec(), ShowUsage(), ShutdownExprContext(), SignalBackends(), similarity(), single_encode(), smgr_desc(), smgrDoPendingDeletes(), smgrdounlinkall(), SnapBuildFreeSnapshot(), SnapBuildPurgeCommittedTxn(), SnapBuildRestore(), spg_box_quad_inner_consistent(), spgClearPendingList(), spgdoinsert(), spgendscan(), spgFreeSearchItem(), spggettuple(), spgRedoVacuumRedirect(), SPI_cursor_open(), SPI_modifytuple(), SPI_pfree(), SPI_sql_row_to_xmlelement(), SplitIdentifierString(), SplitToVariants(), sqlfunction_destroy(), StandbyRecoverPreparedTransactions(), StandbyReleaseLockList(), StandbyTransactionIdIsPrepared(), StartPrepare(), startScanEntry(), StartupXLOG(), statext_mcv_build(), statext_mcv_deserialize(), statext_mcv_serialize(), StoreAttrDefault(), storeObjectDescription(), StorePartitionKey(), StoreRelCheck(), storeRow(), str_initcap(), str_numth(), str_tolower(), str_toupper(), string_to_text(), stringToQualifiedNameList(), sts_end_write(), sts_read_tuple(), SyncPostCheckpoint(), SyncRepGetNthLatestSyncRecPtr(), SyncRepWaitForLSN(), SysLogger_Start(), SysLoggerMain(), systable_endscan(), systable_endscan_ordered(), tablesample_init(), TablespaceCreateDbspace(), tbm_end_iterate(), tbm_end_shared_iterate(), tbm_free(), terminate_brin_buildstate(), test_shm_mq_setup(), testdelete(), testprs_end(), text2ltree(), text_format(), text_format_string_conversion(), text_substring(), text_to_array_internal(), text_to_cstring(), text_to_cstring_buffer(), textrecv(), textToQualifiedNameList(), thesaurus_lexize(), thesaurusRead(), TidListEval(), toast_build_flattened_tuple(), toast_close_indexes(), toast_compress_datum(), toast_flatten_tuple(), toast_flatten_tuple_to_datum(), toast_tuple_cleanup(), toast_tuple_externalize(), toast_tuple_try_compression(), tokenize_inc_file(), TParserClose(), TParserCopyClose(), TParserGet(), tqueueDestroyReceiver(), transformRangeTableFunc(), transientrel_destroy(), try_partitionwise_join(), ts_accum(), ts_headline_byid_opt(), ts_headline_json_byid_opt(), ts_headline_jsonb_byid_opt(), ts_lexize(), ts_match_tq(), ts_match_tt(), ts_process_call(), ts_stat_sql(), tsquery_rewrite_query(), tsqueryrecv(), tsquerytree(), tstoreDestroyReceiver(), tstoreReceiveSlot_detoast(), tstoreShutdownReceiver(), tsvector_delete_arr(), tsvector_to_array(), tsvector_unnest(), tsvector_update_trigger(), tsvectorin(), tt_process_call(), ttdummy(), tts_virtual_clear(), tuple_data_split(), tuple_data_split_internal(), tuplesort_begin_cluster(), tuplesort_begin_index_btree(), tuplestore_advance(), tuplestore_clear(), tuplestore_end(), tuplestore_skiptuples(), tuplestore_trim(), typenameTypeMod(), typeStringToTypeName(), unaccent_dict(), uniqueentry(), uniqueWORD(), UnregisterExprContextCallback(), UnregisterResourceReleaseCallback(), UnregisterSubXactCallback(), UnregisterXactCallback(), updateAclDependencies(), UpdateIndexRelation(), UpdateLogicalMappings(), upper(), vac_close_indexes(), varcharrecv(), varlenafastcmp_locale(), varstr_abbrev_convert(), varstr_cmp(), varstrfastcmp_c(), varstrfastcmp_locale(), WaitForOlderSnapshots(), WaitForParallelWorkersToExit(), WaitOnLock(), walrcv_clear_result(), WalRcvFetchTimeLineHistoryFiles(), WalReceiverMain(), worker_freeze_result_tape(), write_auto_conf_file(), write_console(), write_csvlog(), writetup_datum(), writetup_index(), X509_NAME_field_to_text(), X509_NAME_to_cstring(), X509_NAME_to_text(), xact_desc_relations(), XLogDumpDisplayRecord(), XLogInsertRecord(), XLogReaderAllocate(), XLogReaderFree(), XLOGShmemInit(), xml_encode_special_chars(), xml_is_document(), xml_out_internal(), xml_recv(), xml_send(), xmlconcat(), xmlpi(), xpath_bool(), xpath_list(), xpath_nodeset(), xpath_number(), xpath_string(), and xpath_table().

1057 {
1058  MemoryContext context = GetMemoryChunkContext(pointer);
1059 
1060  context->methods->free_p(context, pointer);
1061  VALGRIND_MEMPOOL_FREE(context, pointer);
1062 }
const MemoryContextMethods * methods
Definition: memnodes.h:83
void(* free_p)(MemoryContext context, void *pointer)
Definition: memnodes.h:61
#define VALGRIND_MEMPOOL_FREE(context, addr)
Definition: memdebug.h:30
static MemoryContext GetMemoryChunkContext(void *pointer)
Definition: memutils.h:113

◆ pnstrdup()

char* pnstrdup ( const char *  in,
Size  len 
)

Definition at line 1197 of file mcxt.c.

References palloc(), and strnlen().

Referenced by asc_initcap(), asc_tolower(), asc_toupper(), char2wchar(), dintdict_lexize(), dsynonym_lexize(), dxsyn_lexize(), executeItemOptUnwrapTarget(), get_source_line(), getJsonPathVariable(), hstore_to_plperl(), HV_to_JsonbValue(), jsonb_put_escaped_value(), JsonbValue_to_SV(), llvm_split_symbol_name(), MemoryContextSwitchTo(), parse_format(), parse_jsonb_index_flags(), pchomp(), pgstat_clip_activity(), populate_scalar(), read_dictionary(), SplitToVariants(), str_initcap(), str_tolower(), str_toupper(), and t_readline().

1198 {
1199  char *out;
1200 
1201  len = strnlen(in, len);
1202 
1203  out = palloc(len + 1);
1204  memcpy(out, in, len);
1205  out[len] = '\0';
1206 
1207  return out;
1208 }
size_t strnlen(const char *str, size_t maxlen)
Definition: strnlen.c:26
void * palloc(Size size)
Definition: mcxt.c:949

◆ pstrdup()

char* pstrdup ( const char *  in)

Definition at line 1186 of file mcxt.c.

Referenced by _ShowOption(), add_with_check_options(), addCompiledLexeme(), addRangeTableEntryForFunction(), addRangeTableEntryForSubquery(), addRangeTableEntryForTableFunc(), addRangeTableEntryForValues(), addToResult(), adjust_partition_tlist(), allocate_reloption(), AlterRole(), analyzeCTETargetList(), ApplyRetrieveRule(), ApplyWorkerMain(), array_in(), array_out(), ATExecAddIndexConstraint(), ATExecDetachPartition(), ATPrepSetNotNull(), AuxiliaryProcessMain(), backend_read_statsfile(), BeginCopyFrom(), BeginCopyTo(), BufFileCreateShared(), BufFileOpenShared(), build_datatype(), build_minmax_path(), build_server_first_message(), BuildOnConflictExcludedTargetlist(), buildRelationAliases(), cache_locale_time(), CatalogCacheInitializeCache(), check_datestyle(), check_hostname(), check_ident_usermap(), check_locale(), check_log_destination(), check_search_path(), check_selective_binary_conversion(), check_temp_tablespaces(), check_timezone(), check_wal_consistency_checking(), checkInsertTargets(), ChooseExtendedStatisticNameAddition(), ChooseForeignKeyConstraintNameAddition(), ChooseIndexColumnNames(), ChooseIndexNameAddition(), CloneFkReferencing(), CloneRowTriggersToPartition(), compile_plperl_function(), compile_pltcl_function(), compileTheSubstitute(), connectby_text(), connectby_text_serial(), convert_string_datum(), copy_replication_slot(), CopyCachedPlan(), CopyErrorData(), CopyTriggerDesc(), copyTSLexeme(), CopyVar(), CreateCachedPlan(), CreateLockFile(), createNewConnection(), CreateParallelContext(), CreateSchemaCommand(), CreateTableSpace(), CreateTupleDescCopyConstr(), cstring_in(), cstring_out(), date_out(), defGetString(), DefineCollation(), DefineQueryRewrite(), DefineView(), DefineViewRules(), deleteConnection(), deserialize_deflist(), destroy_tablespace_directories(), determineRecursiveColTypes(), do_compile(), do_pg_start_backup(), DoCopy(), DropSubscription(), dsynonym_init(), ean13_out(), encrypt_password(), enum_out(), EventTriggerSQLDropAddObject(), exec_bind_message(), exec_execute_message(), Exec_ListenCommit(), executeItemOptUnwrapTarget(), expand_dynamic_library_name(), expand_inherited_rtentry(), expand_targetlist(), ExpandRowReference(), expandRTE(), expandTupleDesc(), ExportSnapshot(), ExtractExtensionList(), fetch_statentries_for_relation(), fetch_table_list(), fill_hba_line(), FillPortalStore(), filter_list_to_array(), float8in_internal_opt_error(), fmgr_symbol(), format_operator_parts(), format_procedure_parts(), format_type_extended(), generate_append_tlist(), generate_setop_tlist(), generateClonedIndexStmt(), get_am_name(), get_attname(), get_collation(), get_collation_actual_version(), get_collation_name(), get_configdata(), get_connect_string(), get_constraint_name(), get_database_list(), get_database_name(), get_db_info(), get_ext_ver_info(), get_ext_ver_list(), get_extension_name(), get_extension_script_directory(), get_file_fdw_attribute_options(), get_func_name(), get_language_name(), get_namespace_name(), get_opclass(), get_opname(), get_publication_name(), get_rel_name(), get_rolespec_name(), get_source_line(), get_sql_insert(), get_sql_update(), get_string_attr(), get_subscription_list(), get_subscription_name(), get_tablespace_name(), GetConfigOptionByNum(), getConnectionByName(), GetDatabasePath(), GetForeignDataWrapperExtended(), GetForeignServerExtended(), getObjectIdentityParts(), getOpFamilyIdentity(), GetPublication(), getRelationIdentity(), GetSubscription(), GetUserNameFromId(), HandleParallelMessage(), hstore_out(), ident_inet(), ImportForeignSchema(), init_sql_fcache(), initialize_worker_spi(), int8out(), internal_yylex(), interval_out(), isn_out(), iterate_values_object_field_start(), lex_accept(), libpqrcv_create_slot(), libpqrcv_get_conninfo(), libpqrcv_get_senderinfo(), libpqrcv_identify_system(), libpqrcv_readtimelinehistoryfile(), limit_printout_length(), llvm_create_types(), llvm_split_symbol_name(), load_domaintype_info(), load_libraries(), logicalrep_read_attrs(), logicalrep_read_origin(), logicalrep_read_rel(), logicalrep_read_typ(), logicalrep_relmap_update(), logicalrep_typmap_update(), lowerstr_with_len(), main(), makeAlias(), makeColumnDef(), map_sql_value_to_xml_value(), merge_children(), MergeAttributes(), nameout(), network_out(), NINormalizeWord(), NormalizeSubWord(), numeric_normalize(), numeric_out(), numeric_out_sci(), object_to_string(), okeys_object_field_start(), parse_extension_control_file(), parse_hba_auth_opt(), parse_hba_line(), parse_ident_line(), parse_scram_secret(), parseNameAndArgTypes(), ParseTzFile(), perform_base_backup(), PerformCursorOpen(), pg_available_extension_versions(), pg_available_extensions(), pg_be_scram_exchange(), pg_collation_actual_version(), pg_event_trigger_ddl_commands(), pg_import_system_collations(), pg_logdir_ls_internal(), pg_ls_dir_files(), pg_lsn_out(), pg_split_opts(), pg_tzenumerate_next(), pg_tzenumerate_start(), pgfnames(), PGLC_localeconv(), pgrowlocks(), pgstat_recv_inquiry(), pgstatindex_impl(), plperl_init_interp(), plperl_to_hstore(), plpgsql_build_recfield(), plpgsql_build_record(), plpgsql_build_variable(), plpgsql_compile_inline(), plpgsql_extra_checks_check_hook(), pltcl_set_tuple_values(), PLy_output(), PLy_procedure_create(), PLyObject_AsString(), PLyUnicode_AsString(), populate_scalar(), postgresAddForeignUpdateTargets(), postgresImportForeignSchema(), PostmasterMain(), pq_parse_errornotice(), prepare_foreign_modify(), prepare_sql_fn_parse_info(), PrepareTempTablespaces(), preprocess_targetlist(), process_psqlrc(), ProcessStandbyHSFeedbackMessage(), ProcessStandbyReplyMessage(), ProcessStartupPacket(), ProcessWalSndrMessage(), prsd_headline(), prsd_lextype(), pset_value_string(), range_deparse(), read_client_final_message(), read_client_first_message(), read_dictionary(), read_extension_control_file(), read_tablespace_map(), RebuildConstraintComment(), recomputeNamespacePath(), regclassout(), regconfigout(), regdictionaryout(), register_label_provider(), regnamespaceout(), regoperatorout(), regoperout(), regprocedureout(), regprocout(), regroleout(), regtypeout(), RelationBuildRowSecurity(), RelationBuildTriggers(), RemoveInheritance(), ReorderBufferQueueMessage(), replace_auto_config_value(), ReThrowError(), rewriteTargetListIU(), rewriteTargetListUD(), rewriteTargetView(), scanstr(), sepgsql_avc_compute(), sepgsql_compute_create(), sepgsql_get_label(), sepgsql_mcstrans_in(), sepgsql_mcstrans_out(), sepgsql_set_client_label(), set_relation_column_names(), show_eval_params(), show_sort_group_keys(), SPI_fname(), SPI_getrelname(), SPI_gettype(), SplitDirectoriesString(), splitTzLine(), StreamServerPort(), stringToQualifiedNameList(), strip_trailing_ws(), substitute_libpath_macro(), SysLoggerMain(), TablespaceCreateDbspace(), test_rls_hooks_permissive(), test_rls_hooks_restrictive(), testprs_lextype(), textToQualifiedNameList(), thesaurus_init(), throw_tcl_error(), ThrowErrorData(), tidout(), time_out(), timestamp_out(), timestamptz_out(), timetz_out(), tokenize_file(), tokenize_inc_file(), transformFkeyGetPrimaryKey(), transformIndexConstraint(), transformOfType(), transformRangeTableFunc(), transformRowExpr(), transformSetOperationStmt(), transformTableLikeClause(), typeTypeName(), unicode_to_sqlchar(), unknownin(), unknownout(), untransformRelOptions(), utf_e2u(), utf_u2e(), void_out(), wait_result_to_str(), X509_NAME_to_cstring(), xml_is_document(), and xpstrdup().

1187 {
1189 }
MemoryContext CurrentMemoryContext
Definition: mcxt.c:38
char * MemoryContextStrdup(MemoryContext context, const char *string)
Definition: mcxt.c:1173

◆ repalloc()

void* repalloc ( void *  pointer,
Size  size 
)

Definition at line 1069 of file mcxt.c.

Referenced by _fdvec_resize(), accumArrayResult(), accumArrayResultArr(), add_column_to_pathtarget(), add_exact_object_address(), add_exact_object_address_extra(), add_gin_entry(), add_object_address(), add_reloption(), addCompiledLexeme(), addCompoundAffixFlagValue(), addDatum(), AddStem(), addToArray(), addWrd(), AfterTriggerBeginSubXact(), AfterTriggerEnlargeQueryState(), appendElement(), appendKey(), array_set_element_expanded(), AtSubCommit_childXids(), bms_add_member(), bms_add_range(), brin_copy_tuple(), BufferSync(), BufFileAppend(), BufFileOpenShared(), checkcondition_str(), checkSharedDependencies(), compileTheLexeme(), compileTheSubstitute(), CopyReadAttributesCSV(), CopyReadAttributesText(), count_usable_fds(), cube_inter(), dsnowball_lexize(), dsynonym_init(), dxsyn_lexize(), enlarge_list(), enlargeStringInfo(), ensure_record_cache_typmod_slot_exists(), enum_range_internal(), ExecHashIncreaseNumBatches(), ExecHashIncreaseNumBuckets(), ExecIndexBuildScanKeys(), ExecInitPartitionDispatchInfo(), ExecInitRoutingInfo(), expand_colnames_array_to(), expand_planner_arrays(), ExprEvalPushStep(), extendBufFile(), find_inheritance_children(), findDependentObjects(), generate_dependencies_recurse(), generateHeadline(), get_docrep(), GetComboCommandId(), GetLockStatusData(), GetSingleProcBlockerStatusData(), gettoken_tsvector(), ginFillScanEntry(), GinFormTuple(), ginHeapTupleFastCollect(), ginPostingListDecodeAllSegments(), gistAddLoadedBuffer(), gistBuffersReleaseBlock(), gistGetNodeBuffer(), gistjoinvector(), gtsvector_compress(), hladdword(), hlfinditem(), load_domaintype_info(), load_enum_cache_data(), load_relcache_init_file(), LockAcquireExtended(), ltsReleaseBlock(), LWLockRegisterTranche(), MakeSharedInvalidMessagesArray(), mark_hl_fragments(), MergeAffix(), newLexeme(), newLOfd(), NIAddAffix(), NIAddSpell(), NISortAffixes(), oidvectortypes(), okeys_object_field_start(), parse_hstore(), parsetext(), perform_default_encoding_conversion(), pg_do_encoding_conversion(), pg_import_system_collations(), pgfnames(), pgss_shmem_startup(), plainnode(), plpgsql_adddatum(), PrescanPreparedTransactions(), prs_setup_firstcall(), pushval_asis(), pushValue(), QTNTernary(), read_dictionary(), readstoplist(), record_corrupt_item(), RecordConstLocation(), RelationBuildRuleLock(), RelationBuildTriggers(), RelationBuildTupleDesc(), RememberToFreeTupleDescAtEOX(), ReorderBufferSerializeReserve(), RequestNamedLWLockTranche(), resize_intArrayType(), SetConstraintStateAddItem(), setup_regexp_matches(), smgrDoPendingDeletes(), SnapBuildAddCommittedTxn(), socket_putmessage_noblock(), SPI_connect_ext(), SPI_repalloc(), statext_dependencies_build(), statext_dependencies_deserialize(), statext_mcv_deserialize(), TidListEval(), tsqueryrecv(), tsvectorin(), tsvectorrecv(), tuplestore_alloc_read_pointer(), uniqueentry(), uniqueWORD(), variable_paramref_hook(), XLogEnsureRecordSpace(), xml_is_document(), and xslt_process().

1070 {
1071  MemoryContext context = GetMemoryChunkContext(pointer);
1072  void *ret;
1073 
1074  if (!AllocSizeIsValid(size))
1075  elog(ERROR, "invalid memory alloc request size %zu", size);
1076 
1077  AssertNotInCriticalSection(context);
1078 
1079  /* isReset must be false already */
1080  Assert(!context->isReset);
1081 
1082  ret = context->methods->realloc(context, pointer, size);
1083  if (unlikely(ret == NULL))
1084  {
1086  ereport(ERROR,
1087  (errcode(ERRCODE_OUT_OF_MEMORY),
1088  errmsg("out of memory"),
1089  errdetail("Failed on request of size %zu in memory context \"%s\".",
1090  size, context->name)));
1091  }
1092 
1093  VALGRIND_MEMPOOL_CHANGE(context, pointer, ret, size);
1094 
1095  return ret;
1096 }
const MemoryContextMethods * methods
Definition: memnodes.h:83
int errcode(int sqlerrcode)
Definition: elog.c:608
#define AssertNotInCriticalSection(context)
Definition: mcxt.c:67
void *(* realloc)(MemoryContext context, void *pointer, Size size)
Definition: memnodes.h:62
#define ERROR
Definition: elog.h:43
#define VALGRIND_MEMPOOL_CHANGE(context, optr, nptr, size)
Definition: memdebug.h:31
void MemoryContextStats(MemoryContext context)
Definition: mcxt.c:498
int errdetail(const char *fmt,...)
Definition: elog.c:957
#define ereport(elevel, rest)
Definition: elog.h:141
MemoryContext TopMemoryContext
Definition: mcxt.c:44
#define AllocSizeIsValid(size)
Definition: memutils.h:42
#define Assert(condition)
Definition: c.h:733
int errmsg(const char *fmt,...)
Definition: elog.c:822
#define elog(elevel,...)
Definition: elog.h:228
#define unlikely(x)
Definition: c.h:208
const char * name
Definition: memnodes.h:88
static MemoryContext GetMemoryChunkContext(void *pointer)
Definition: memutils.h:113

◆ repalloc_huge()

void* repalloc_huge ( void *  pointer,
Size  size 
)

Definition at line 1139 of file mcxt.c.

References AllocHugeSizeIsValid, Assert, AssertNotInCriticalSection, elog, ereport, errcode(), errdetail(), errmsg(), ERROR, GetMemoryChunkContext(), MemoryContextData::isReset, MemoryContextStats(), MemoryContextData::methods, MemoryContextData::name, MemoryContextMethods::realloc, unlikely, and VALGRIND_MEMPOOL_CHANGE.

Referenced by ginCombineData(), grow_memtuples(), and spi_printtup().

1140 {
1141  MemoryContext context = GetMemoryChunkContext(pointer);
1142  void *ret;
1143 
1144  if (!AllocHugeSizeIsValid(size))
1145  elog(ERROR, "invalid memory alloc request size %zu", size);
1146 
1147  AssertNotInCriticalSection(context);
1148 
1149  /* isReset must be false already */
1150  Assert(!context->isReset);
1151 
1152  ret = context->methods->realloc(context, pointer, size);
1153  if (unlikely(ret == NULL))
1154  {
1156  ereport(ERROR,
1157  (errcode(ERRCODE_OUT_OF_MEMORY),
1158  errmsg("out of memory"),
1159  errdetail("Failed on request of size %zu in memory context \"%s\".",
1160  size, context->name)));
1161  }
1162 
1163  VALGRIND_MEMPOOL_CHANGE(context, pointer, ret, size);
1164 
1165  return ret;
1166 }
const MemoryContextMethods * methods
Definition: memnodes.h:83
int errcode(int sqlerrcode)
Definition: elog.c:608
#define AssertNotInCriticalSection(context)
Definition: mcxt.c:67
void *(* realloc)(MemoryContext context, void *pointer, Size size)
Definition: memnodes.h:62
#define ERROR
Definition: elog.h:43
#define VALGRIND_MEMPOOL_CHANGE(context, optr, nptr, size)
Definition: memdebug.h:31
void MemoryContextStats(MemoryContext context)
Definition: mcxt.c:498
int errdetail(const char *fmt,...)
Definition: elog.c:957
#define ereport(elevel, rest)
Definition: elog.h:141
MemoryContext TopMemoryContext
Definition: mcxt.c:44
#define Assert(condition)
Definition: c.h:733
#define AllocHugeSizeIsValid(size)
Definition: memutils.h:46
int errmsg(const char *fmt,...)
Definition: elog.c:822
#define elog(elevel,...)
Definition: elog.h:228
#define unlikely(x)
Definition: c.h:208
const char * name
Definition: memnodes.h:88
static MemoryContext GetMemoryChunkContext(void *pointer)
Definition: memutils.h:113

Variable Documentation

◆ CacheMemoryContext

MemoryContext CacheMemoryContext = NULL

Definition at line 47 of file mcxt.c.

Referenced by _SPI_save_plan(), AllocateRelationDesc(), assign_record_type_typmod(), AttrDefaultFetch(), BuildEventTriggerCache(), BuildHardcodedDescriptor(), CatalogCacheCreateEntry(), CatalogCacheInitializeCache(), CheckConstraintFetch(), CreateCacheMemoryContext(), ensure_record_cache_typmod_slot_exists(), generate_partition_qual(), get_attribute_options(), get_rel_sync_entry(), get_tablespace(), GetCachedExpression(), GetCachedPlan(), GetConnection(), GetFdwRoutineForRelation(), GetRelationPublicationActions(), init_ts_config_cache(), InitCatCache(), InitializeAttoptCache(), InitializeRelfilenodeMap(), InitializeTableSpaceCache(), load_domaintype_info(), load_enum_cache_data(), load_rangetype_info(), load_relcache_init_file(), logicalrep_relmap_init(), lookup_ts_config_cache(), lookup_ts_dictionary_cache(), lookup_ts_parser_cache(), lookup_type_cache(), LookupOpclassInfo(), pgoutput_startup(), process_syncing_tables_for_apply(), register_on_commit_action(), RehashCatCache(), RelationBuildLocalRelation(), RelationBuildPartitionDesc(), RelationBuildPartitionKey(), RelationBuildRowSecurity(), RelationBuildRuleLock(), RelationBuildTriggers(), RelationBuildTupleDesc(), RelationCacheInitialize(), RelationCacheInitializePhase2(), RelationCacheInitializePhase3(), RelationGetFKeyList(), RelationGetIndexAttrBitmap(), RelationGetIndexList(), RelationGetStatExtList(), RelationInitIndexAccessInfo(), RelationParseRelOptions(), RememberToFreeTupleDescAtEOX(), SaveCachedPlan(), SearchCatCacheList(), and SPI_keepplan().

◆ CurrentMemoryContext

MemoryContext CurrentMemoryContext = NULL

Definition at line 38 of file mcxt.c.

Referenced by _bt_load(), _bt_preprocess_array_keys(), _hash_finish_split(), _SPI_commit(), _SPI_rollback(), _SPI_save_plan(), advance_transition_function(), advance_windowaggregate(), advance_windowaggregate_base(), afterTriggerInvokeEvents(), AllocateSnapshotBuilder(), array_agg_array_finalfn(), array_agg_finalfn(), array_positions(), array_to_datum_internal(), AttachPartitionEnsureIndexes(), begin_heap_rewrite(), BeginCopy(), blbuild(), blinsert(), brin_build_desc(), brin_new_memtuple(), bringetbitmap(), brininsert(), bt_check_every_level(), btvacuumscan(), build_join_rel_hash(), BuildCachedPlan(), BuildRelationExtStatistics(), CloneRowTriggersToPartition(), CompactCheckpointerRequestQueue(), CompleteCachedPlan(), compute_array_stats(), compute_scalar_stats(), compute_tsvector_stats(), ComputeExtStatisticsRows(), CopyCachedPlan(), CopyErrorData(), CopyFrom(), CopyTo(), create_GistBulkDeleteResult(), create_toast_table(), CreateCachedPlan(), CreateExecutorState(), CreateOneShotCachedPlan(), CreateSchemaCommand(), CreateStandaloneExprContext(), createTempGistContext(), createTrgmNFA(), CreateTrigger(), DatumGetExpandedArray(), DatumGetExpandedArrayX(), DatumGetExpandedRecord(), datumTransfer(), dblink_get_connections(), DebugFileOpen(), DiscreteKnapsack(), do_analyze_rel(), do_start_worker(), domain_check(), dsnowball_init(), each_worker(), each_worker_jsonb(), elements_worker(), elements_worker_jsonb(), ensure_transaction(), eval_windowfunction(), EventTriggerInvoke(), exec_replication_command(), exec_stmt_block(), ExecAggTransReparent(), ExecCreatePartitionPruneState(), ExecHashSubPlanResultRelsByOid(), ExecHashTableCreate(), ExecInitCoerceToDomain(), ExecInitFunctionScan(), ExecInitGatherMerge(), ExecInitIndexScan(), ExecInitMergeAppend(), ExecInitProjectSet(), ExecInitPruningContext(), ExecInitRecursiveUnion(), ExecInitSetOp(), ExecInitSubPlan(), ExecInitTableFuncScan(), ExecInitWindowAgg(), ExecMakeTableFunctionResult(), ExecScanSubPlan(), ExecSetParamPlan(), ExecSetupPartitionTupleRouting(), execute_sql_string(), fetch_array_arg_replace_nulls(), file_acquire_sample_rows(), fill_hba_view(), finalize_aggregate(), finalize_partialaggregate(), finalize_windowaggregate(), find_all_inheritors(), find_partition_scheme(), fmgr_info(), fmgr_info_other_lang(), geqo_eval(), get_actual_variable_range(), get_altertable_subcmdtypes(), get_database_list(), get_json_object_as_hash(), get_subscription_list(), GetCachedExpression(), GetErrorContextStack(), gin_extract_query_trgm(), gin_xlog_startup(), ginbeginscan(), ginbuild(), ginbulkdelete(), gininsert(), ginInsertCleanup(), ginPlaceToPage(), gistbuild(), gistInitBuildBuffers(), gistInitParentMap(), IdentifySystem(), initBloomState(), initGinState(), initGISTstate(), initialize_peragg(), initTrie(), inline_function(), inline_set_returning_function(), intset_create(), libpqrcv_processTuples(), load_domaintype_info(), load_tzoffsets(), makeIndexInfo(), makeNumericAggStateCurrentContext(), MakeTupleTableSlot(), MemoryContextSwitchTo(), MJExamineQuals(), multi_sort_add_dimension(), NextCopyFrom(), optionListToArray(), palloc(), palloc0(), palloc_extended(), ParallelWorkerMain(), parse_ident(), perform_default_encoding_conversion(), perform_work_item(), pg_buffercache_pages(), pg_do_encoding_conversion(), pg_stats_ext_mcvlist_items(), pgstat_collect_oids(), plan_cluster_use_sort(), plan_create_index_workers(), plperl_array_to_datum(), plperl_inline_handler(), plperl_return_next(), plperl_return_next_internal(), plperl_spi_commit(), plperl_spi_exec(), plperl_spi_exec_prepared(), plperl_spi_fetchrow(), plperl_spi_prepare(), plperl_spi_query(), plperl_spi_query_prepared(), plperl_spi_rollback(), plperl_util_elog(), plpgsql_compile_inline(), plpgsql_estate_setup(), plpgsql_inline_handler(), plpgsql_validator(), plpython_inline_handler(), pltcl_commit(), pltcl_elog(), pltcl_returnnext(), pltcl_rollback(), pltcl_SPI_execute(), pltcl_SPI_execute_plan(), pltcl_SPI_prepare(), pltcl_subtransaction(), PLy_cursor_fetch(), PLy_cursor_iternext(), PLy_cursor_plan(), PLy_cursor_query(), PLy_output(), PLy_spi_execute_fetch_result(), PLy_spi_execute_plan(), PLy_spi_execute_query(), PLy_spi_prepare(), PLy_subtransaction_enter(), populate_array(), populate_recordset_object_start(), PortalRun(), PortalRunMulti(), postgresAcquireSampleRowsFunc(), postquel_start(), pq_parse_errornotice(), printtup_startup(), ProcessCompletedNotifies(), prune_append_rel_partitions(), publicationListToArray(), pull_up_simple_subquery(), regexp_split_to_array(), RelationBuildDesc(), RelationBuildRowSecurity(), ReorderBufferAllocate(), ResetUnloggedRelations(), RevalidateCachedQuery(), ScanKeyEntryInitializeWithInfo(), set_relation_partition_info(), set_rtable_names(), SetMessageEncoding(), shm_mq_attach(), spg_xlog_startup(), spgbeginscan(), spgbuild(), spginsert(), spi_dest_startup(), SPI_sql_row_to_xmlelement(), SPI_start_transaction(), startScanKey(), StartupDecodingContext(), statext_mcv_serialize(), strlist_to_textarray(), sts_attach(), sts_initialize(), subquery_planner(), SysLoggerMain(), tbm_create(), test_pattern(), text_to_array_internal(), tokenize_file(), transformGraph(), transformRelOptions(), tsquery_rewrite_query(), tuple_data_split_internal(), tuplesort_begin_cluster(), tuplesort_begin_common(), tuplesort_begin_datum(), tuplesort_begin_heap(), tuplesort_begin_index_btree(), tuplestore_begin_common(), union_tuples(), validateForeignKeyConstraint(), WaitLatchOrSocket(), write_console(), xml_is_document(), and xpath().

◆ CurTransactionContext

◆ ErrorContext

MemoryContext ErrorContext = NULL

◆ MessageContext

◆ PortalContext

◆ PostmasterContext

◆ TopMemoryContext

MemoryContext TopMemoryContext = NULL

Definition at line 44 of file mcxt.c.

Referenced by _PG_init(), add_reloption(), add_string_reloption(), allocate_reloption(), AllocateAttribute(), AllocSetContextCreateInternal(), ApplyLauncherMain(), ApplyWorkerMain(), AtAbort_Memory(), AtCleanup_Memory(), AtCommit_Memory(), AtStart_Memory(), AttachSession(), AutoVacLauncherMain(), BackendRun(), BackgroundWriterMain(), be_tls_open_server(), cache_single_string(), CheckpointerMain(), CheckSCRAMAuth(), compile_plperl_function(), compile_pltcl_function(), ConditionVariablePrepareToSleep(), ConvertTriggerToFK(), CreateCacheMemoryContext(), dblink_connect(), dblink_init(), DCH_cache_getnew(), do_autovacuum(), do_compile(), do_start_bgworker(), dsm_create_descriptor(), dsm_impl_sysv(), EnablePortalManager(), EventTriggerBeginCompleteQuery(), Exec_ListenCommit(), executeDateTimeMethod(), finish_xact_command(), GenerationContextCreate(), get_tabstat_entry(), GetLocalBufferStorage(), GetLockConflicts(), GetSessionDsmHandle(), HandleParallelMessages(), hash_create(), InitDeadLockChecking(), initialize_reloptions(), InitializeParallelDSM(), InitializeSearchPath(), InitializeSession(), InitSync(), InitXLogInsert(), llvm_compile_module(), llvm_create_context(), llvm_session_initialize(), LockAcquireExtended(), LogicalRepApplyLoop(), mdinit(), MemoryContextInit(), mxid_to_string(), NUM_cache_getnew(), on_dsm_detach(), PageSetChecksumCopy(), ParallelWorkerMain(), PerformAuthentication(), pg_newlocale_from_collation(), pg_start_backup(), pgstat_setup_memcxt(), plperl_spi_prepare(), plpgsql_estate_setup(), plpython_inline_handler(), pltcl_SPI_prepare(), PLy_cursor_plan(), PLy_cursor_query(), PLy_procedure_create(), PLy_spi_execute_fetch_result(), PLy_spi_prepare(), PostgresMain(), PostmasterMain(), pq_init(), PrepareClientEncoding(), ProcessStartupPacket(), PushOverrideSearchPath(), px_find_cipher(), px_find_digest(), recomputeNamespacePath(), register_label_provider(), RegisterLWLockTranches(), RegisterResourceReleaseCallback(), RegisterSubXactCallback(), RegisterXactCallback(), regress_putenv(), RelationCreateStorage(), RelationDropStorage(), RequestNamedLWLockTranche(), ResourceArrayEnlarge(), ResourceOwnerCreate(), RestoreReindexState(), ri_HashCompareOp(), roles_has_privs_of(), roles_is_member_of(), sepgsql_avc_init(), sepgsql_xact_callback(), SetDatabasePath(), SharedRecordTypmodRegistryAttach(), SharedRecordTypmodRegistryInit(), SlabContextCreate(), SPI_connect_ext(), StartChildProcess(), WalWriterMain(), XLOGShmemInit(), and xml_is_document().

◆ TopTransactionContext