diff options
Diffstat (limited to 'contrib/pgstattuple')
-rw-r--r-- | contrib/pgstattuple/README.pgstattuple | 2 | ||||
-rw-r--r-- | contrib/pgstattuple/pgstattuple.c | 15 | ||||
-rw-r--r-- | contrib/pgstattuple/pgstattuple.sql.in | 4 |
3 files changed, 13 insertions, 8 deletions
diff --git a/contrib/pgstattuple/README.pgstattuple b/contrib/pgstattuple/README.pgstattuple index 6a191e9cced..7237b9a4dc8 100644 --- a/contrib/pgstattuple/README.pgstattuple +++ b/contrib/pgstattuple/README.pgstattuple @@ -33,7 +33,7 @@ NOTICE: physical length: 0.08MB live tuples: 20 (0.00MB, 1.17%) dead tuples: 32 pgstattuple can be called as a function: - pgstattuple(NAME) RETURNS FLOAT8 + pgstattuple(TEXT) RETURNS FLOAT8 The argument is the table name. pgstattuple returns the percentage of the "dead" tuples of a table. diff --git a/contrib/pgstattuple/pgstattuple.c b/contrib/pgstattuple/pgstattuple.c index beda282172d..39bd5d1f95e 100644 --- a/contrib/pgstattuple/pgstattuple.c +++ b/contrib/pgstattuple/pgstattuple.c @@ -1,5 +1,5 @@ /* - * $Header: /cvsroot/pgsql/contrib/pgstattuple/pgstattuple.c,v 1.4 2002/03/06 06:09:10 momjian Exp $ + * $Header: /cvsroot/pgsql/contrib/pgstattuple/pgstattuple.c,v 1.5 2002/03/30 01:02:41 tgl Exp $ * * Copyright (c) 2001 Tatsuo Ishii * @@ -27,6 +27,9 @@ #include "fmgr.h" #include "access/heapam.h" #include "access/transam.h" +#include "catalog/namespace.h" +#include "utils/builtins.h" + PG_FUNCTION_INFO_V1(pgstattuple); @@ -43,8 +46,8 @@ extern Datum pgstattuple(PG_FUNCTION_ARGS); Datum pgstattuple(PG_FUNCTION_ARGS) { - Name p = PG_GETARG_NAME(0); - + text *relname = PG_GETARG_TEXT_P(0); + RangeVar *relrv; Relation rel; HeapScanDesc scan; HeapTuple tuple; @@ -59,11 +62,13 @@ pgstattuple(PG_FUNCTION_ARGS) uint64 dead_tuple_count = 0; double tuple_percent; double dead_tuple_percent; - uint64 free_space = 0; /* free/reusable space in bytes */ double free_percent; /* free/reusable space in % */ - rel = heap_openr(NameStr(*p), AccessShareLock); + relrv = makeRangeVarFromNameList(textToQualifiedNameList(relname, + "pgstattuple")); + rel = heap_openrv(relrv, AccessShareLock); + nblocks = RelationGetNumberOfBlocks(rel); scan = heap_beginscan(rel, false, SnapshotAny, 0, NULL); diff --git a/contrib/pgstattuple/pgstattuple.sql.in b/contrib/pgstattuple/pgstattuple.sql.in index 7a7706fa190..b49a13483f7 100644 --- a/contrib/pgstattuple/pgstattuple.sql.in +++ b/contrib/pgstattuple/pgstattuple.sql.in @@ -1,4 +1,4 @@ -DROP FUNCTION pgstattuple(NAME); -CREATE FUNCTION pgstattuple(NAME) RETURNS FLOAT8 +DROP FUNCTION pgstattuple(text); +CREATE FUNCTION pgstattuple(text) RETURNS float8 AS 'MODULE_PATHNAME', 'pgstattuple' LANGUAGE 'c' WITH (isstrict); |