PostgreSQL Source Code git master
Loading...
Searching...
No Matches
foreign.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * foreign.h
4 * support for foreign-data wrappers, servers and user mappings.
5 *
6 *
7 * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
8 *
9 * src/include/foreign/foreign.h
10 *
11 *-------------------------------------------------------------------------
12 */
13#ifndef FOREIGN_H
14#define FOREIGN_H
15
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 ForeignDataWrapper
25{
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 Oid fdwconnection; /* Oid of connection string function, or 0 */
32 List *options; /* fdwoptions as DefElem list */
34
35typedef struct ForeignServer
36{
37 Oid serverid; /* server Oid */
38 Oid fdwid; /* foreign-data wrapper */
39 Oid owner; /* server owner user Oid */
40 char *servername; /* name of the server */
41 char *servertype; /* server type, optional */
42 char *serverversion; /* server version, optional */
43 List *options; /* srvoptions as DefElem list */
45
46typedef struct UserMapping
47{
48 Oid umid; /* Oid of user mapping */
49 Oid userid; /* local user Oid */
50 Oid serverid; /* server Oid */
51 List *options; /* useoptions as DefElem list */
53
54typedef struct ForeignTable
55{
56 Oid relid; /* relation Oid */
57 Oid serverid; /* server Oid */
58 List *options; /* ftoptions as DefElem list */
60
61/* Flags for GetForeignServerExtended */
62#define FSV_MISSING_OK 0x01
63
64/* Flags for GetForeignDataWrapperExtended */
65#define FDW_MISSING_OK 0x01
66
67
68extern ForeignServer *GetForeignServer(Oid serverid);
69extern char *ForeignServerName(Oid serverid);
71 bits16 flags);
73 bool missing_ok);
74extern char *ForeignServerConnectionString(Oid userid, Oid serverid);
75extern UserMapping *GetUserMapping(Oid userid, Oid serverid);
78 bits16 flags);
79extern ForeignDataWrapper *GetForeignDataWrapperByName(const char *fdwname,
80 bool missing_ok);
81extern ForeignTable *GetForeignTable(Oid relid);
82
84
85extern Oid get_foreign_data_wrapper_oid(const char *fdwname, bool missing_ok);
86extern Oid get_foreign_server_oid(const char *servername, bool missing_ok);
87
88#endif /* FOREIGN_H */
int16 AttrNumber
Definition attnum.h:21
uint16 bits16
Definition c.h:626
ForeignDataWrapper * GetForeignDataWrapper(Oid fdwid)
Definition foreign.c:39
ForeignServer * GetForeignServerByName(const char *srvname, bool missing_ok)
Definition foreign.c:210
ForeignTable * GetForeignTable(Oid relid)
Definition foreign.c:343
UserMapping * GetUserMapping(Oid userid, Oid serverid)
Definition foreign.c:289
Oid get_foreign_server_oid(const char *servername, bool missing_ok)
Definition foreign.c:793
char * ForeignServerName(Oid serverid)
Definition foreign.c:185
ForeignServer * GetForeignServer(Oid serverid)
Definition foreign.c:114
ForeignDataWrapper * GetForeignDataWrapperExtended(Oid fdwid, bits16 flags)
Definition foreign.c:51
ForeignDataWrapper * GetForeignDataWrapperByName(const char *fdwname, bool missing_ok)
Definition foreign.c:99
char * ForeignServerConnectionString(Oid userid, Oid serverid)
Definition foreign.c:225
ForeignServer * GetForeignServerExtended(Oid serverid, bits16 flags)
Definition foreign.c:126
List * GetForeignColumnOptions(Oid relid, AttrNumber attnum)
Definition foreign.c:381
Oid get_foreign_data_wrapper_oid(const char *fdwname, bool missing_ok)
Definition foreign.c:770
int16 attnum
unsigned int Oid
static int fb(int x)
List * options
Definition foreign.h:43
char * serverversion
Definition foreign.h:42
char * servername
Definition foreign.h:40
char * servertype
Definition foreign.h:41
List * options
Definition foreign.h:58
Oid serverid
Definition foreign.h:57
Definition pg_list.h:54
Oid userid
Definition foreign.h:49
Oid serverid
Definition foreign.h:50
List * options
Definition foreign.h:51