123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /*-------------------------------------------------------------------------
- *
- * relpath.h
- * Declarations for GetRelationPath() and friends
- *
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- * src/include/common/relpath.h
- *
- *-------------------------------------------------------------------------
- */
- #ifndef RELPATH_H
- #define RELPATH_H
- /*
- * 'pgrminclude ignore' needed here because CppAsString2() does not throw
- * an error if the symbol is not defined.
- */
- #include "catalog/catversion.h" /* pgrminclude ignore */
- /*
- * Name of major-version-specific tablespace subdirectories
- */
- #define TABLESPACE_VERSION_DIRECTORY "PG_" PG_MAJORVERSION "_" \
- CppAsString2(CATALOG_VERSION_NO)
- /* Characters to allow for an OID in a relation path */
- #define OIDCHARS 10 /* max chars printed by %u */
- /*
- * Stuff for fork names.
- *
- * The physical storage of a relation consists of one or more forks.
- * The main fork is always created, but in addition to that there can be
- * additional forks for storing various metadata. ForkNumber is used when
- * we need to refer to a specific fork in a relation.
- */
- typedef enum ForkNumber
- {
- InvalidForkNumber = -1,
- MAIN_FORKNUM = 0,
- FSM_FORKNUM,
- VISIBILITYMAP_FORKNUM,
- INIT_FORKNUM
- /*
- * NOTE: if you add a new fork, change MAX_FORKNUM and possibly
- * FORKNAMECHARS below, and update the forkNames array in
- * src/common/relpath.c
- */
- } ForkNumber;
- #define MAX_FORKNUM INIT_FORKNUM
- #define FORKNAMECHARS 4 /* max chars for a fork name */
- extern PGDLLIMPORT const char *const forkNames[];
- extern ForkNumber forkname_to_number(const char *forkName);
- extern int forkname_chars(const char *str, ForkNumber *fork);
- /*
- * Stuff for computing filesystem pathnames for relations.
- */
- extern char *GetDatabasePath(Oid dbNode, Oid spcNode);
- extern char *GetRelationPath(Oid dbNode, Oid spcNode, Oid relNode,
- int backendId, ForkNumber forkNumber);
- /*
- * Wrapper macros for GetRelationPath. Beware of multiple
- * evaluation of the RelFileNode or RelFileNodeBackend argument!
- */
- /* First argument is a RelFileNode */
- #define relpathbackend(rnode, backend, forknum) \
- GetRelationPath((rnode).dbNode, (rnode).spcNode, (rnode).relNode, \
- backend, forknum)
- /* First argument is a RelFileNode */
- #define relpathperm(rnode, forknum) \
- relpathbackend(rnode, InvalidBackendId, forknum)
- /* First argument is a RelFileNodeBackend */
- #define relpath(rnode, forknum) \
- relpathbackend((rnode).node, (rnode).backend, forknum)
- #endif /* RELPATH_H */
|