2
0

foreign.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*-------------------------------------------------------------------------
  2. *
  3. * foreign.h
  4. * support for foreign-data wrappers, servers and user mappings.
  5. *
  6. *
  7. * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
  8. *
  9. * src/include/foreign/foreign.h
  10. *
  11. *-------------------------------------------------------------------------
  12. */
  13. #ifndef FOREIGN_H
  14. #define FOREIGN_H
  15. #include "nodes/parsenodes.h"
  16. /* Helper for obtaining username for user mapping */
  17. #define MappingUserName(userid) \
  18. (OidIsValid(userid) ? GetUserNameFromId(userid, false) : "public")
  19. typedef struct ForeignDataWrapper
  20. {
  21. Oid fdwid; /* FDW Oid */
  22. Oid owner; /* FDW owner user Oid */
  23. char *fdwname; /* Name of the FDW */
  24. Oid fdwhandler; /* Oid of handler function, or 0 */
  25. Oid fdwvalidator; /* Oid of validator function, or 0 */
  26. List *options; /* fdwoptions as DefElem list */
  27. } ForeignDataWrapper;
  28. typedef struct ForeignServer
  29. {
  30. Oid serverid; /* server Oid */
  31. Oid fdwid; /* foreign-data wrapper */
  32. Oid owner; /* server owner user Oid */
  33. char *servername; /* name of the server */
  34. char *servertype; /* server type, optional */
  35. char *serverversion; /* server version, optional */
  36. List *options; /* srvoptions as DefElem list */
  37. } ForeignServer;
  38. typedef struct UserMapping
  39. {
  40. Oid umid; /* Oid of user mapping */
  41. Oid userid; /* local user Oid */
  42. Oid serverid; /* server Oid */
  43. List *options; /* useoptions as DefElem list */
  44. } UserMapping;
  45. typedef struct ForeignTable
  46. {
  47. Oid relid; /* relation Oid */
  48. Oid serverid; /* server Oid */
  49. List *options; /* ftoptions as DefElem list */
  50. } ForeignTable;
  51. /* Flags for GetForeignServerExtended */
  52. #define FSV_MISSING_OK 0x01
  53. /* Flags for GetForeignDataWrapperExtended */
  54. #define FDW_MISSING_OK 0x01
  55. extern ForeignServer *GetForeignServer(Oid serverid);
  56. extern ForeignServer *GetForeignServerExtended(Oid serverid,
  57. bits16 flags);
  58. extern ForeignServer *GetForeignServerByName(const char *name, bool missing_ok);
  59. extern UserMapping *GetUserMapping(Oid userid, Oid serverid);
  60. extern ForeignDataWrapper *GetForeignDataWrapper(Oid fdwid);
  61. extern ForeignDataWrapper *GetForeignDataWrapperExtended(Oid fdwid,
  62. bits16 flags);
  63. extern ForeignDataWrapper *GetForeignDataWrapperByName(const char *name,
  64. bool missing_ok);
  65. extern ForeignTable *GetForeignTable(Oid relid);
  66. extern List *GetForeignColumnOptions(Oid relid, AttrNumber attnum);
  67. extern Oid get_foreign_data_wrapper_oid(const char *fdwname, bool missing_ok);
  68. extern Oid get_foreign_server_oid(const char *servername, bool missing_ok);
  69. #endif /* FOREIGN_H */