codekingpro/portable-devtools
116k
1/*-------------------------------------------------------------------------2 *3 * foreign.h4 * support for foreign-data wrappers, servers and user mappings.5 *6 *7 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group8 *9 * src/include/foreign/foreign.h10 *11 *-------------------------------------------------------------------------12 */13#ifndef FOREIGN_H14#define FOREIGN_H15 16#include "nodes/parsenodes.h"17 18 19/* Helper for obtaining username for user mapping */20#define MappingUserName(userid) \21 (OidIsValid(userid) ? GetUserNameFromId(userid, false) : "public")22 23 24typedef struct ForeignDataWrapper25{26 Oid fdwid; /* FDW Oid */27 Oid owner; /* FDW owner user Oid */28 char *fdwname; /* Name of the FDW */29 Oid fdwhandler; /* Oid of handler function, or 0 */30 Oid fdwvalidator; /* Oid of validator function, or 0 */31 List *options; /* fdwoptions as DefElem list */32} ForeignDataWrapper;33 34typedef struct ForeignServer35{36 Oid serverid; /* server Oid */37 Oid fdwid; /* foreign-data wrapper */38 Oid owner; /* server owner user Oid */39 char *servername; /* name of the server */40 char *servertype; /* server type, optional */41 char *serverversion; /* server version, optional */42 List *options; /* srvoptions as DefElem list */43} ForeignServer;44 45typedef struct UserMapping46{47 Oid umid; /* Oid of user mapping */48 Oid userid; /* local user Oid */49 Oid serverid; /* server Oid */50 List *options; /* useoptions as DefElem list */51} UserMapping;52 53typedef struct ForeignTable54{55 Oid relid; /* relation Oid */56 Oid serverid; /* server Oid */57 List *options; /* ftoptions as DefElem list */58} ForeignTable;59 60/* Flags for GetForeignServerExtended */61#define FSV_MISSING_OK 0x0162 63/* Flags for GetForeignDataWrapperExtended */64#define FDW_MISSING_OK 0x0165 66 67extern ForeignServer *GetForeignServer(Oid serverid);68extern ForeignServer *GetForeignServerExtended(Oid serverid,69 bits16 flags);70extern ForeignServer *GetForeignServerByName(const char *srvname,71 bool missing_ok);72extern UserMapping *GetUserMapping(Oid userid, Oid serverid);73extern ForeignDataWrapper *GetForeignDataWrapper(Oid fdwid);74extern ForeignDataWrapper *GetForeignDataWrapperExtended(Oid fdwid,75 bits16 flags);76extern ForeignDataWrapper *GetForeignDataWrapperByName(const char *fdwname,77 bool missing_ok);78extern ForeignTable *GetForeignTable(Oid relid);79 80extern List *GetForeignColumnOptions(Oid relid, AttrNumber attnum);81 82extern Oid get_foreign_data_wrapper_oid(const char *fdwname, bool missing_ok);83extern Oid get_foreign_server_oid(const char *servername, bool missing_ok);84 85#endif /* FOREIGN_H */86 