diff --git a/contrib/pg_buffercache/pg_buffercache--1.0.sql b/contrib/pg_buffercache/pg_buffercache--1.0.sql index 4ca4c4425..cceebda87 100644 --- a/contrib/pg_buffercache/pg_buffercache--1.0.sql +++ b/contrib/pg_buffercache/pg_buffercache--1.0.sql @@ -4,17 +4,17 @@ \echo Use "CREATE EXTENSION pg_buffercache" to load this file. \quit -- Register the function. -CREATE FUNCTION pg_buffercache_pages() +CREATE FUNCTION pg_buffercache_pages_wrap() RETURNS SETOF RECORD AS 'MODULE_PATHNAME', 'pg_buffercache_pages' LANGUAGE C; -- Create a view for convenient access. CREATE VIEW pg_buffercache AS - SELECT P.* FROM pg_buffercache_pages() AS P + SELECT P.* FROM pg_buffercache_pages_wrap() AS P (bufferid integer, relfilenode oid, reltablespace oid, reldatabase oid, relforknumber int2, relblocknumber int8, isdirty bool, usagecount int2); -- Don't want these to be available to public. -REVOKE ALL ON FUNCTION pg_buffercache_pages() FROM PUBLIC; +REVOKE ALL ON FUNCTION pg_buffercache_pages_wrap() FROM PUBLIC; REVOKE ALL ON pg_buffercache FROM PUBLIC; diff --git a/contrib/pg_buffercache/pg_buffercache_pages.cpp b/contrib/pg_buffercache/pg_buffercache_pages.cpp index 3d4e31bf8..fc881eb10 100644 --- a/contrib/pg_buffercache/pg_buffercache_pages.cpp +++ b/contrib/pg_buffercache/pg_buffercache_pages.cpp @@ -18,14 +18,13 @@ PG_MODULE_MAGIC; -Datum pg_buffercache_pages(PG_FUNCTION_ARGS); - /* * Record structure holding the to be exposed cache data. */ typedef struct { uint32 bufferid; Oid relfilenode; + int4 bucketnode; Oid reltablespace; Oid reldatabase; ForkNumber forknum; @@ -49,6 +48,8 @@ typedef struct { */ PG_FUNCTION_INFO_V1(pg_buffercache_pages); +extern "C" Datum pg_buffercache_pages(PG_FUNCTION_ARGS); + Datum pg_buffercache_pages(PG_FUNCTION_ARGS) { FuncCallContext* funcctx = NULL;