OSDN Git Service

rebuid:
[eos/hostdependX86MAC64.git] / util / X86MAC64 / include / postgresql / server / foreign / foreign.h
1 /*-------------------------------------------------------------------------
2  *
3  * foreign.h
4  *        support for foreign-data wrappers, servers and user mappings.
5  *
6  *
7  * Portions Copyright (c) 1996-2014, 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) : "public")
22
23
24 /*
25  * Generic option types for validation.
26  * NB! Thes are treated as flags, so use only powers of two here.
27  */
28 typedef enum
29 {
30         ServerOpt = 1,                          /* options applicable to SERVER */
31         UserMappingOpt = 2,                     /* options for USER MAPPING */
32         FdwOpt = 4                                      /* options for FOREIGN DATA WRAPPER */
33 } GenericOptionFlags;
34
35 typedef struct ForeignDataWrapper
36 {
37         Oid                     fdwid;                  /* FDW Oid */
38         Oid                     owner;                  /* FDW owner user Oid */
39         char       *fdwname;            /* Name of the FDW */
40         Oid                     fdwhandler;             /* Oid of handler function, or 0 */
41         Oid                     fdwvalidator;   /* Oid of validator function, or 0 */
42         List       *options;            /* fdwoptions as DefElem list */
43 } ForeignDataWrapper;
44
45 typedef struct ForeignServer
46 {
47         Oid                     serverid;               /* server Oid */
48         Oid                     fdwid;                  /* foreign-data wrapper */
49         Oid                     owner;                  /* server owner user Oid */
50         char       *servername;         /* name of the server */
51         char       *servertype;         /* server type, optional */
52         char       *serverversion;      /* server version, optional */
53         List       *options;            /* srvoptions as DefElem list */
54 } ForeignServer;
55
56 typedef struct UserMapping
57 {
58         Oid                     userid;                 /* local user Oid */
59         Oid                     serverid;               /* server Oid */
60         List       *options;            /* useoptions as DefElem list */
61 } UserMapping;
62
63 typedef struct ForeignTable
64 {
65         Oid                     relid;                  /* relation Oid */
66         Oid                     serverid;               /* server Oid */
67         List       *options;            /* ftoptions as DefElem list */
68 } ForeignTable;
69
70
71 extern ForeignServer *GetForeignServer(Oid serverid);
72 extern ForeignServer *GetForeignServerByName(const char *name, bool missing_ok);
73 extern UserMapping *GetUserMapping(Oid userid, Oid serverid);
74 extern ForeignDataWrapper *GetForeignDataWrapper(Oid fdwid);
75 extern ForeignDataWrapper *GetForeignDataWrapperByName(const char *name,
76                                                         bool missing_ok);
77 extern ForeignTable *GetForeignTable(Oid relid);
78
79 extern List *GetForeignColumnOptions(Oid relid, AttrNumber attnum);
80
81 extern Oid      get_foreign_data_wrapper_oid(const char *fdwname, bool missing_ok);
82 extern Oid      get_foreign_server_oid(const char *servername, bool missing_ok);
83
84 #endif   /* FOREIGN_H */