3
3
* pg_buffercache_pages.c
4
4
* display some contents of the buffer cache
5
5
*
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 $
7
7
*-------------------------------------------------------------------------
8
8
*/
9
9
#include "postgres.h"
16
16
#include "utils/relcache.h"
17
17
18
18
19
- #define NUM_BUFFERCACHE_PAGES_ELEM 7
19
+ #define NUM_BUFFERCACHE_PAGES_ELEM 8
20
20
21
21
PG_MODULE_MAGIC ;
22
22
@@ -32,6 +32,7 @@ typedef struct
32
32
Oid relfilenode ;
33
33
Oid reltablespace ;
34
34
Oid reldatabase ;
35
+ ForkNumber forknum ;
35
36
BlockNumber blocknum ;
36
37
bool isvalid ;
37
38
bool isdirty ;
@@ -88,11 +89,13 @@ pg_buffercache_pages(PG_FUNCTION_ARGS)
88
89
OIDOID , -1 , 0 );
89
90
TupleDescInitEntry (tupledesc , (AttrNumber ) 4 , "reldatabase" ,
90
91
OIDOID , -1 , 0 );
91
- TupleDescInitEntry (tupledesc , (AttrNumber ) 5 , "relblocknumber" ,
92
+ TupleDescInitEntry (tupledesc , (AttrNumber ) 5 , "relforknumber" ,
93
+ INT2OID , -1 , 0 );
94
+ TupleDescInitEntry (tupledesc , (AttrNumber ) 6 , "relblocknumber" ,
92
95
INT8OID , -1 , 0 );
93
- TupleDescInitEntry (tupledesc , (AttrNumber ) 6 , "isdirty" ,
96
+ TupleDescInitEntry (tupledesc , (AttrNumber ) 7 , "isdirty" ,
94
97
BOOLOID , -1 , 0 );
95
- TupleDescInitEntry (tupledesc , (AttrNumber ) 7 , "usage_count" ,
98
+ TupleDescInitEntry (tupledesc , (AttrNumber ) 8 , "usage_count" ,
96
99
INT2OID , -1 , 0 );
97
100
98
101
fctx -> tupdesc = BlessTupleDesc (tupledesc );
@@ -129,6 +132,7 @@ pg_buffercache_pages(PG_FUNCTION_ARGS)
129
132
fctx -> record [i ].relfilenode = bufHdr -> tag .rnode .relNode ;
130
133
fctx -> record [i ].reltablespace = bufHdr -> tag .rnode .spcNode ;
131
134
fctx -> record [i ].reldatabase = bufHdr -> tag .rnode .dbNode ;
135
+ fctx -> record [i ].forknum = bufHdr -> tag .forkNum ;
132
136
fctx -> record [i ].blocknum = bufHdr -> tag .blockNum ;
133
137
fctx -> record [i ].usagecount = bufHdr -> usage_count ;
134
138
@@ -184,6 +188,7 @@ pg_buffercache_pages(PG_FUNCTION_ARGS)
184
188
nulls [4 ] = true;
185
189
nulls [5 ] = true;
186
190
nulls [6 ] = true;
191
+ nulls [7 ] = true;
187
192
}
188
193
else
189
194
{
@@ -193,12 +198,14 @@ pg_buffercache_pages(PG_FUNCTION_ARGS)
193
198
nulls [2 ] = false;
194
199
values [3 ] = ObjectIdGetDatum (fctx -> record [i ].reldatabase );
195
200
nulls [3 ] = false;
196
- values [4 ] = Int64GetDatum (( int64 ) fctx -> record [i ].blocknum );
201
+ values [4 ] = ObjectIdGetDatum ( fctx -> record [i ].forknum );
197
202
nulls [4 ] = false;
198
- values [5 ] = BoolGetDatum ( fctx -> record [i ].isdirty );
203
+ values [5 ] = Int64GetDatum (( int64 ) fctx -> record [i ].blocknum );
199
204
nulls [5 ] = false;
200
- values [6 ] = Int16GetDatum (fctx -> record [i ].usagecount );
205
+ values [6 ] = BoolGetDatum (fctx -> record [i ].isdirty );
201
206
nulls [6 ] = false;
207
+ values [7 ] = Int16GetDatum (fctx -> record [i ].usagecount );
208
+ nulls [7 ] = false;
202
209
}
203
210
204
211
/* Build and return the tuple. */
0 commit comments