* 0.5.0 - Output varbit containing vector information with pgmincore*()
- Add Debian packaging (Dimitri Fontaine)
- Update to work with PostgreSQL >= 9.1 (Jeff Janes)
- - Add function pgsysconf_pretty()
+ - Add total number of pages of memory with pgsysconf()
+ - Add function pgsysconf_pretty()
04/30/2010 CΓ©dric Villemain <cedric@villemain.org>
#endif
/* } */
-#define PGSYSCONF_COLS 2
+#define PGSYSCONF_COLS 3
#define PGFINCORE_COLS 6
/*
typedef struct
{
int action; /* the action mincore, fadvise...*/
- Relation rel; /* the relation */
+ Relation rel; /* the relation */
unsigned int segcount; /* the segment current number */
char *relationpath; /* the relation path */
} pgfincore_fctx;
tupdesc = CreateTemplateTupleDesc(PGSYSCONF_COLS, false);
TupleDescInitEntry(tupdesc, (AttrNumber) 1, "block_size", INT8OID, -1, 0);
- TupleDescInitEntry(tupdesc, (AttrNumber) 2, "block_free", INT8OID, -1, 0);
+ TupleDescInitEntry(tupdesc, (AttrNumber) 2, "block_free", INT8OID, -1, 0);
+ TupleDescInitEntry(tupdesc, (AttrNumber) 3, "total_blocks", INT8OID, -1, 0);
tupdesc = BlessTupleDesc(tupdesc);
values[0] = Int64GetDatum(sysconf(_SC_PAGESIZE)); /* Page size */
- values[1] = Int64GetDatum(sysconf(_SC_AVPHYS_PAGES)); /* free page in memory */
+ values[1] = Int64GetDatum(sysconf(_SC_AVPHYS_PAGES)); /* free page in memory */
+ values[2] = Int64GetDatum(sysconf(_SC_PHYS_PAGES)); /* total memory */
memset(nulls, 0, sizeof(nulls));
tuple = heap_form_tuple(tupdesc, values, nulls);
- elog(DEBUG1, "pgsysconf: page_size %lld bytes, free page in memory %lld",
- (int64) values[0], (int64) values[1]);
+ elog(DEBUG1, "pgsysconf: page_size %lld bytes, free page in memory %lld, total memory pages %lld",
+ (int64) values[0], (int64) values[1], (int64) values[2]);
PG_RETURN_DATUM( HeapTupleGetDatum(tuple) );
}
SET search_path = public;
CREATE OR REPLACE FUNCTION
-pgsysconf(OUT block_size bigint,
- OUT block_free bigint)
+pgsysconf(OUT block_size bigint,
+ OUT block_free bigint,
+ OUT total_blocks bigint)
RETURNS record
AS 'MODULE_PATHNAME'
LANGUAGE C;
CREATE OR REPLACE FUNCTION
-pgsysconf_pretty(OUT block_size text,
- OUT free_memory text)
+pgsysconf_pretty(OUT block_size text,
+ OUT free_memory text,
+ OUT total_memory text)
RETURNS record
AS '
select pg_size_pretty(block_size) as block_size,
- pg_size_pretty(block_free * block_size) as free_memory
+ pg_size_pretty(block_free * block_size) as free_memory,
+ pg_size_pretty(total_blocks * block_size) as total_memory
from pgsysconf()'
LANGUAGE SQL;