if (info == XLOG_SMGR_CREATE)
{
xl_smgr_create *xlrec = (xl_smgr_create *) rec;
- char *path = relpathperm(xlrec->rnode, xlrec->forkNum);
+ char *path = relpathperm_client(xlrec->rnode, xlrec->forkNum, "");
appendStringInfoString(buf, path);
pfree(path);
else if (info == XLOG_SMGR_TRUNCATE)
{
xl_smgr_truncate *xlrec = (xl_smgr_truncate *) rec;
- char *path = relpathperm(xlrec->rnode, MAIN_FORKNUM);
+ char *path = relpathperm_client(xlrec->rnode, MAIN_FORKNUM, "");
appendStringInfo(buf, "%s to %u blocks", path, xlrec->blkno);
pfree(path);
appendStringInfoString(buf, "; rels:");
for (i = 0; i < parsed.nrels; i++)
{
- char *path = relpathperm(parsed.xnodes[i], MAIN_FORKNUM);
+ char *path = relpathperm_client(parsed.xnodes[i],
+ MAIN_FORKNUM, "");
appendStringInfo(buf, " %s", path);
pfree(path);
appendStringInfoString(buf, "; rels:");
for (i = 0; i < parsed.nrels; i++)
{
- char *path = relpathperm(parsed.xnodes[i], MAIN_FORKNUM);
+ char *path = relpathperm_client(parsed.xnodes[i],
+ MAIN_FORKNUM, "");
appendStringInfo(buf, " %s", path);
pfree(path);
char *path;
char *segpath;
+#ifdef XCP
+ /*
+ * TODO!! Pass correct node name
+ */
+ path = relpathperm_client(rnode, forknum, "");
+#else
path = relpathperm(rnode, forknum);
+#endif
if (segno > 0)
{
segpath = psprintf("%s.%u", path, segno);
#include "pgxc/pgxc.h"
#endif
-#define PGXCNodeName ""
-
/*
* Lookup table of fork name by fork number.
*
*
* XXX this must agree with GetRelationPath()!
*/
+#ifndef FRONTEND
char *
GetDatabasePath(Oid dbNode, Oid spcNode)
+{
+ return GetDatabasePath_client(dbNode, spcNode, PGXCNodeName);
+}
+#endif
+
+char *
+GetDatabasePath_client(Oid dbNode, Oid spcNode, const char *nodename)
{
if (spcNode == GLOBALTABLESPACE_OID)
{
#ifdef PGXC
return psprintf("pg_tblspc/%u/%s_%s/%u",
spcNode, TABLESPACE_VERSION_DIRECTORY,
- PGXCNodeName,
+ nodename,
dbNode);
#else
return psprintf("pg_tblspc/%u/%s/%u",
* would have to include a backend-only header to do that; doesn't seem worth
* the trouble considering BackendId is just int anyway.
*/
+#ifndef FRONTEND
char *
GetRelationPath(Oid dbNode, Oid spcNode, Oid relNode,
int backendId, ForkNumber forkNumber)
+{
+ return GetRelationPath_client(dbNode, spcNode, relNode, backendId,
+ forkNumber, PGXCNodeName);
+}
+#endif
+
+char *
+GetRelationPath_client(Oid dbNode, Oid spcNode, Oid relNode,
+ int backendId, ForkNumber forkNumber,
+ const char *nodename)
{
char *path;
spcNode, TABLESPACE_VERSION_DIRECTORY,
#ifdef PGXC
/* Postgres-XC tablespaces include node name */
- PGXCNodeName,
+ nodename,
#endif
dbNode,
relNode,
spcNode, TABLESPACE_VERSION_DIRECTORY,
#ifdef PGXC
/* Postgres-XC tablespaces include node name */
- PGXCNodeName,
+ nodename,
#endif
dbNode, relNode);
}
spcNode, TABLESPACE_VERSION_DIRECTORY,
#ifdef PGXC
/* Postgres-XC tablespaces include node name */
- PGXCNodeName,
+ nodename,
#endif
dbNode, backendId, relNode,
forkNames[forkNumber]);
spcNode, TABLESPACE_VERSION_DIRECTORY,
#ifdef PGXC
/* Postgres-XC tablespaces include node name */
- PGXCNodeName,
+ nodename,
#endif
dbNode, backendId, relNode);
}
* Stuff for computing filesystem pathnames for relations.
*/
extern char *GetDatabasePath(Oid dbNode, Oid spcNode);
+#ifdef XCP
+extern char *GetDatabasePath_client(Oid dbNode, Oid spcNode, const char *nodename);
+#endif
extern char *GetRelationPath(Oid dbNode, Oid spcNode, Oid relNode,
int backendId, ForkNumber forkNumber);
+#ifdef XCP
+extern char *GetRelationPath_client(Oid dbNode, Oid spcNode, Oid relNode,
+ int backendId, ForkNumber forkNumber,
+ const char *nodename);
+#endif
/*
* Wrapper macros for GetRelationPath. Beware of multiple
#define relpathbackend(rnode, backend, forknum) \
GetRelationPath((rnode).dbNode, (rnode).spcNode, (rnode).relNode, \
backend, forknum)
+#ifdef XCP
+#define relpathbackend_client(rnode, backend, forknum, nodename) \
+ GetRelationPath_client((rnode).dbNode, (rnode).spcNode, (rnode).relNode, \
+ backend, forknum, nodename)
+#endif
/* First argument is a RelFileNode */
#define relpathperm(rnode, forknum) \
relpathbackend(rnode, InvalidBackendId, forknum)
+#ifdef XCP
+#define relpathperm_client(rnode, forknum, nodename) \
+ relpathbackend_client(rnode, InvalidBackendId, forknum, nodename)
+#endif
/* First argument is a RelFileNodeBackend */
-#ifdef XCP
-#define relpath(rnode, forknum) \
- relpathbackend((rnode).node, InvalidBackendId, (forknum))
-#else
#define relpath(rnode, forknum) \
relpathbackend((rnode).node, (rnode).backend, forknum)
-#endif
#endif /* RELPATH_H */