26 void *result,
Size allocated_size);
91 if (metacache ==
NULL)
92 metacache = &fakecache;
191 int ndims = oldeah->
ndims;
200 memcpy(eah->
dims, oldeah->
dims, ndims *
sizeof(
int));
201 memcpy(eah->
lbound, oldeah->
lbound, ndims *
sizeof(
int));
211 dvalueslen *
sizeof(
Datum));
216 dvalueslen *
sizeof(
bool));
217 memcpy(eah->
dnulls, oldeah->
dnulls, dvalueslen *
sizeof(
bool));
266 for (i = 0; i < nelems; i++)
268 if (dnulls && dnulls[i])
275 (
errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
276 errmsg(
"array size exceeds the maximum allowed (%d)",
296 void *result,
Size allocated_size)
310 memcpy(result, eah->
fvalue, allocated_size);
327 memset(aresult, 0, allocated_size);
330 aresult->
ndim = ndims;
333 memcpy(
ARR_DIMS(aresult), eah->
dims, ndims *
sizeof(
int));
static const ExpandedObjectMethods EA_methods
static void EA_flatten_into(ExpandedObjectHeader *eohptr, void *result, Size allocated_size)
#define ARR_OVERHEAD_NONULLS(ndims)
static void copy_byval_expanded_array(ExpandedArrayHeader *eah, ExpandedArrayHeader *oldeah)
#define att_align_nominal(cur_offset, attalign)
void deconstruct_expanded_array(ExpandedArrayHeader *eah)
#define VARATT_IS_EXTERNAL_EXPANDED(PTR)
void get_typlenbyvalalign(Oid typid, int16 *typlen, bool *typbyval, char *typalign)
int ArrayGetNItems(int ndim, const int *dims)
Datum expand_array(Datum arraydatum, MemoryContext parentcontext, ArrayMetaState *metacache)
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
int errcode(int sqlerrcode)
#define ARR_OVERHEAD_WITHNULLS(ndims, nitems)
#define ALLOCSET_SMALL_MINSIZE
ExpandedArrayHeader * DatumGetExpandedArray(Datum d)
void EOH_init_header(ExpandedObjectHeader *eohptr, const ExpandedObjectMethods *methods, MemoryContext obj_context)
MemoryContext CurrentMemoryContext
static Size EA_get_flat_size(ExpandedObjectHeader *eohptr)
#define ereport(elevel, rest)
#define AllocSizeIsValid(size)
ExpandedObjectHeader * DatumGetEOHP(Datum d)
#define ALLOCSET_SMALL_INITSIZE
ExpandedArrayHeader * DatumGetExpandedArrayX(Datum d, ArrayMetaState *metacache)
MemoryContext AllocSetContextCreate(MemoryContext parent, const char *name, Size minContextSize, Size initBlockSize, Size maxBlockSize)
#define DatumGetArrayTypePCopy(X)
#define Assert(condition)
void CopyArrayEls(ArrayType *array, Datum *values, bool *nulls, int nitems, int typlen, bool typbyval, char typalign, bool freedata)
#define DatumGetPointer(X)
#define EOHPGetRWDatum(eohptr)
void deconstruct_array(ArrayType *array, Oid elmtype, int elmlen, bool elmbyval, char elmalign, Datum **elemsp, bool **nullsp, int *nelemsp)
#define att_addlength_datum(cur_offset, attlen, attdatum)
int errmsg(const char *fmt,...)
AnyArrayType * DatumGetAnyArray(Datum d)
void * MemoryContextAlloc(MemoryContext context, Size size)
#define VARATT_IS_EXTERNAL_EXPANDED_RW(PTR)
#define PG_DETOAST_DATUM(datum)
#define ALLOCSET_DEFAULT_MAXSIZE
#define SET_VARSIZE(PTR, len)
MemoryContext eoh_context