33 * pg_buffercache_pages.c
44 * display some contents of the buffer cache
55 *
6- * $PostgreSQL: pgsql/contrib/pg_buffercache/pg_buffercache_pages.c,v 1.14 2007/11/15 21:14:30 momjian Exp $
6+ * $PostgreSQL: pgsql/contrib/pg_buffercache/pg_buffercache_pages.c,v 1.15 2008/08/14 12:56:41 heikki Exp $
77 *-------------------------------------------------------------------------
88 */
99#include "postgres.h"
1616#include "utils/relcache.h"
1717
1818
19- #define NUM_BUFFERCACHE_PAGES_ELEM 7
19+ #define NUM_BUFFERCACHE_PAGES_ELEM 8
2020
2121PG_MODULE_MAGIC ;
2222
@@ -32,6 +32,7 @@ typedef struct
3232Oid relfilenode ;
3333Oid reltablespace ;
3434Oid reldatabase ;
35+ ForkNumber forknum ;
3536BlockNumber blocknum ;
3637bool isvalid ;
3738bool isdirty ;
@@ -88,11 +89,13 @@ pg_buffercache_pages(PG_FUNCTION_ARGS)
8889OIDOID ,-1 ,0 );
8990TupleDescInitEntry (tupledesc , (AttrNumber )4 ,"reldatabase" ,
9091OIDOID ,-1 ,0 );
91- TupleDescInitEntry (tupledesc , (AttrNumber )5 ,"relblocknumber" ,
92+ TupleDescInitEntry (tupledesc , (AttrNumber )5 ,"relforknumber" ,
93+ INT2OID ,-1 ,0 );
94+ TupleDescInitEntry (tupledesc , (AttrNumber )6 ,"relblocknumber" ,
9295INT8OID ,-1 ,0 );
93- TupleDescInitEntry (tupledesc , (AttrNumber )6 ,"isdirty" ,
96+ TupleDescInitEntry (tupledesc , (AttrNumber )7 ,"isdirty" ,
9497BOOLOID ,-1 ,0 );
95- TupleDescInitEntry (tupledesc , (AttrNumber )7 ,"usage_count" ,
98+ TupleDescInitEntry (tupledesc , (AttrNumber )8 ,"usage_count" ,
9699INT2OID ,-1 ,0 );
97100
98101fctx -> tupdesc = BlessTupleDesc (tupledesc );
@@ -129,6 +132,7 @@ pg_buffercache_pages(PG_FUNCTION_ARGS)
129132fctx -> record [i ].relfilenode = bufHdr -> tag .rnode .relNode ;
130133fctx -> record [i ].reltablespace = bufHdr -> tag .rnode .spcNode ;
131134fctx -> record [i ].reldatabase = bufHdr -> tag .rnode .dbNode ;
135+ fctx -> record [i ].forknum = bufHdr -> tag .forkNum ;
132136fctx -> record [i ].blocknum = bufHdr -> tag .blockNum ;
133137fctx -> record [i ].usagecount = bufHdr -> usage_count ;
134138
@@ -184,6 +188,7 @@ pg_buffercache_pages(PG_FUNCTION_ARGS)
184188nulls [4 ]= true;
185189nulls [5 ]= true;
186190nulls [6 ]= true;
191+ nulls [7 ]= true;
187192}
188193else
189194{
@@ -193,12 +198,14 @@ pg_buffercache_pages(PG_FUNCTION_ARGS)
193198nulls [2 ]= false;
194199values [3 ]= ObjectIdGetDatum (fctx -> record [i ].reldatabase );
195200nulls [3 ]= false;
196- values [4 ]= Int64GetDatum (( int64 ) fctx -> record [i ].blocknum );
201+ values [4 ]= ObjectIdGetDatum ( fctx -> record [i ].forknum );
197202nulls [4 ]= false;
198- values [5 ]= BoolGetDatum ( fctx -> record [i ].isdirty );
203+ values [5 ]= Int64GetDatum (( int64 ) fctx -> record [i ].blocknum );
199204nulls [5 ]= false;
200- values [6 ]= Int16GetDatum (fctx -> record [i ].usagecount );
205+ values [6 ]= BoolGetDatum (fctx -> record [i ].isdirty );
201206nulls [6 ]= false;
207+ values [7 ]= Int16GetDatum (fctx -> record [i ].usagecount );
208+ nulls [7 ]= false;
202209}
203210
204211/* Build and return the tuple. */