summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/catalog/catalog.c53
-rw-r--r--src/backend/utils/adt/dbsize.c31
-rw-r--r--src/include/catalog/catalog.h5
-rw-r--r--src/include/catalog/catversion.h4
-rw-r--r--src/include/storage/relfilenode.h4
5 files changed, 51 insertions, 46 deletions
diff --git a/src/backend/catalog/catalog.c b/src/backend/catalog/catalog.c
index eb7b39c86b..733b9d9622 100644
--- a/src/backend/catalog/catalog.c
+++ b/src/backend/catalog/catalog.c
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/catalog/catalog.c,v 1.78 2008/08/11 11:05:10 heikki Exp $
+ * $PostgreSQL: pgsql/src/backend/catalog/catalog.c,v 1.79 2008/10/06 14:13:17 heikki Exp $
*
*-------------------------------------------------------------------------
*/
@@ -43,8 +43,38 @@
#define OIDCHARS 10 /* max chars printed by %u */
-#define FORKNUMCHARS 1 /* max chars for a fork number */
+#define FORKNAMECHARS 4 /* max chars for a fork name */
+/*
+ * Lookup table of fork name by fork number.
+ *
+ * If you add a new entry, remember to update the errhint below, and the
+ * documentation for pg_relation_size(). Also keep FORKNAMECHARS above
+ * up-to-date.
+ */
+const char *forkNames[] = {
+ "main", /* MAIN_FORKNUM */
+ "fsm" /* FSM_FORKNUM */
+};
+
+/*
+ * forkname_to_number - look up fork number by name
+ */
+ForkNumber
+forkname_to_number(char *forkName)
+{
+ ForkNumber forkNum;
+
+ for (forkNum = 0; forkNum <= MAX_FORKNUM; forkNum++)
+ if (strcmp(forkNames[forkNum], forkName) == 0)
+ return forkNum;
+
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("invalid fork name"),
+ errhint("Valid fork names are 'main' and 'fsm'")));
+ return InvalidForkNumber; /* keep compiler quiet */
+}
/*
* relpath - construct path to a relation's file
@@ -61,22 +91,22 @@ relpath(RelFileNode rnode, ForkNumber forknum)
{
/* Shared system relations live in {datadir}/global */
Assert(rnode.dbNode == 0);
- pathlen = 7 + OIDCHARS + 1 + FORKNUMCHARS + 1;
+ pathlen = 7 + OIDCHARS + 1 + FORKNAMECHARS + 1;
path = (char *) palloc(pathlen);
if (forknum != MAIN_FORKNUM)
- snprintf(path, pathlen, "global/%u_%u",
- rnode.relNode, forknum);
+ snprintf(path, pathlen, "global/%u_%s",
+ rnode.relNode, forkNames[forknum]);
else
snprintf(path, pathlen, "global/%u", rnode.relNode);
}
else if (rnode.spcNode == DEFAULTTABLESPACE_OID)
{
/* The default tablespace is {datadir}/base */
- pathlen = 5 + OIDCHARS + 1 + OIDCHARS + 1 + FORKNUMCHARS + 1;
+ pathlen = 5 + OIDCHARS + 1 + OIDCHARS + 1 + FORKNAMECHARS + 1;
path = (char *) palloc(pathlen);
if (forknum != MAIN_FORKNUM)
- snprintf(path, pathlen, "base/%u/%u_%u",
- rnode.dbNode, rnode.relNode, forknum);
+ snprintf(path, pathlen, "base/%u/%u_%s",
+ rnode.dbNode, rnode.relNode, forkNames[forknum]);
else
snprintf(path, pathlen, "base/%u/%u",
rnode.dbNode, rnode.relNode);
@@ -85,11 +115,12 @@ relpath(RelFileNode rnode, ForkNumber forknum)
{
/* All other tablespaces are accessed via symlinks */
pathlen = 10 + OIDCHARS + 1 + OIDCHARS + 1 + OIDCHARS + 1
- + FORKNUMCHARS + 1;
+ + FORKNAMECHARS + 1;
path = (char *) palloc(pathlen);
if (forknum != MAIN_FORKNUM)
- snprintf(path, pathlen, "pg_tblspc/%u/%u/%u_%u",
- rnode.spcNode, rnode.dbNode, rnode.relNode, forknum);
+ snprintf(path, pathlen, "pg_tblspc/%u/%u/%u_%s",
+ rnode.spcNode, rnode.dbNode, rnode.relNode,
+ forkNames[forknum]);
else
snprintf(path, pathlen, "pg_tblspc/%u/%u/%u",
rnode.spcNode, rnode.dbNode, rnode.relNode);
diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c
index d225b3e7c7..4d3f8c0b5c 100644
--- a/src/backend/utils/adt/dbsize.c
+++ b/src/backend/utils/adt/dbsize.c
@@ -5,7 +5,7 @@
* Copyright (c) 2002-2008, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/dbsize.c,v 1.21 2008/10/03 07:33:09 heikki Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/dbsize.c,v 1.22 2008/10/06 14:13:17 heikki Exp $
*
*/
@@ -283,35 +283,6 @@ calculate_relation_size(RelFileNode *rfn, ForkNumber forknum)
return totalsize;
}
-
-/*
- * XXX: Consider making this global and moving elsewhere. But currently
- * there's no other users for this.
- *
- * Remember to also update the errhint below if you add entries, and the
- * documentation for pg_relation_size().
- */
-static char *forkNames[] = {
- "main", /* MAIN_FORKNUM */
- "fsm" /* FSM_FORKNUM */
-};
-
-static ForkNumber
-forkname_to_number(char *forkName)
-{
- ForkNumber forkNum;
-
- for (forkNum = 0; forkNum <= MAX_FORKNUM; forkNum++)
- if (strcmp(forkNames[forkNum], forkName) == 0)
- return forkNum;
-
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("invalid fork name"),
- errhint("Valid fork names are 'main' and 'fsm'")));
- return InvalidForkNumber; /* keep compiler quiet */
-}
-
Datum
pg_relation_size(PG_FUNCTION_ARGS)
{
diff --git a/src/include/catalog/catalog.h b/src/include/catalog/catalog.h
index 52a69e1341..fb555cbc6b 100644
--- a/src/include/catalog/catalog.h
+++ b/src/include/catalog/catalog.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/catalog/catalog.h,v 1.41 2008/08/11 11:05:11 heikki Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/catalog.h,v 1.42 2008/10/06 14:13:17 heikki Exp $
*
*-------------------------------------------------------------------------
*/
@@ -19,6 +19,9 @@
#include "utils/relcache.h"
+extern const char *forkNames[];
+extern ForkNumber forkname_to_number(char *forkName);
+
extern char *relpath(RelFileNode rnode, ForkNumber forknum);
extern char *GetDatabasePath(Oid dbNode, Oid spcNode);
diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h
index fd6895263b..cdd9fa272e 100644
--- a/src/include/catalog/catversion.h
+++ b/src/include/catalog/catversion.h
@@ -37,7 +37,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.494 2008/10/06 13:05:37 mha Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.495 2008/10/06 14:13:17 heikki Exp $
*
*-------------------------------------------------------------------------
*/
@@ -53,6 +53,6 @@
*/
/* yyyymmddN */
-#define CATALOG_VERSION_NO 200810061
+#define CATALOG_VERSION_NO 200810062
#endif
diff --git a/src/include/storage/relfilenode.h b/src/include/storage/relfilenode.h
index 128cff99a9..383cc18a57 100644
--- a/src/include/storage/relfilenode.h
+++ b/src/include/storage/relfilenode.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/storage/relfilenode.h,v 1.18 2008/10/03 07:33:10 heikki Exp $
+ * $PostgreSQL: pgsql/src/include/storage/relfilenode.h,v 1.19 2008/10/06 14:13:17 heikki Exp $
*
*-------------------------------------------------------------------------
*/
@@ -27,7 +27,7 @@ typedef enum ForkNumber
FSM_FORKNUM
/*
* NOTE: if you add a new fork, change MAX_FORKNUM below and update the
- * name to number mapping in utils/adt/dbsize.c
+ * forkNames array in catalog.c
*/
} ForkNumber;