21 #include "catalog/pg_tablespace_d.h"
41 "array length mismatch");
54 for (forkNum = 0; forkNum <=
MAX_FORKNUM; forkNum++)
55 if (strcmp(
forkNames[forkNum], forkName) == 0)
60 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
61 errmsg(
"invalid fork name"),
62 errhint(
"Valid fork names are \"main\", \"fsm\", "
63 "\"vm\", and \"init\".")));
85 for (forkNum = 1; forkNum <=
MAX_FORKNUM; forkNum++)
112 if (spcOid == GLOBALTABLESPACE_OID)
118 else if (spcOid == DEFAULTTABLESPACE_OID)
126 return psprintf(
"pg_tblspc/%u/%s/%u",
146 if (spcOid == GLOBALTABLESPACE_OID)
155 path =
psprintf(
"global/%u", relNumber);
157 else if (spcOid == DEFAULTTABLESPACE_OID)
173 path =
psprintf(
"base/%u/t%d_%u_%s",
174 dbOid, backendId, relNumber,
178 dbOid, backendId, relNumber);
187 path =
psprintf(
"pg_tblspc/%u/%s/%u/%u_%s",
192 path =
psprintf(
"pg_tblspc/%u/%s/%u/%u",
199 path =
psprintf(
"pg_tblspc/%u/%s/%u/t%d_%u_%s",
201 dbOid, backendId, relNumber,
204 path =
psprintf(
"pg_tblspc/%u/%s/%u/t%d_%u",
206 dbOid, backendId, relNumber);
int errhint(const char *fmt,...)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
Assert(fmt[strlen(fmt) - 1] !='\n')
char * pstrdup(const char *in)
char * psprintf(const char *fmt,...)
StaticAssertDecl(lengthof(forkNames)==(MAX_FORKNUM+1), "array length mismatch")
char * GetDatabasePath(Oid dbOid, Oid spcOid)
int forkname_chars(const char *str, ForkNumber *fork)
ForkNumber forkname_to_number(const char *forkName)
char * GetRelationPath(Oid dbOid, Oid spcOid, RelFileNumber relNumber, int backendId, ForkNumber forkNumber)
const char *const forkNames[]
#define TABLESPACE_VERSION_DIRECTORY