CREATE FUNCTION alloc(size pg_catalog.int8, count pg_catalog.int8)
RETURNS pg_catalog.void
AS 'MODULE_PATHNAME' LANGUAGE C STRICT;
+
+CREATE FUNCTION alloc_with_palloc(size pg_catalog.int8, count pg_catalog.int8)
+ RETURNS pg_catalog.void
+ AS 'MODULE_PATHNAME' LANGUAGE C STRICT;
#include "postgres.h"
#include "fmgr.h"
+#include "utils/memutils.h"
#include "utils/sb_alloc.h"
PG_MODULE_MAGIC;
PG_FUNCTION_INFO_V1(alloc);
+PG_FUNCTION_INFO_V1(alloc_with_palloc);
Datum alloc(PG_FUNCTION_ARGS);
+Datum alloc_with_palloc(PG_FUNCTION_ARGS);
Datum
alloc(PG_FUNCTION_ARGS)
PG_RETURN_VOID();
}
+
+Datum
+alloc_with_palloc(PG_FUNCTION_ARGS)
+{
+ int64 size = PG_GETARG_INT64(0);
+ int64 count = PG_GETARG_INT64(1);
+ int64 i;
+ MemoryContext context;
+
+ context = AllocSetContextCreate(CurrentMemoryContext,
+ "alloc_with_palloc test",
+ ALLOCSET_DEFAULT_MINSIZE,
+ ALLOCSET_DEFAULT_INITSIZE,
+ ALLOCSET_DEFAULT_MAXSIZE);
+ for (i = 0; i < count; ++i)
+ (void) MemoryContextAlloc(context, size);
+
+ PG_RETURN_VOID();
+}