53.3. Вспомогательные функции для обёрток сторонних данных
Ядро сервера экспортирует набор полезных вспомогательных функций, которые позволяют разработчикам обёрток сторонних данных легко обращаться к атрибутам объектов, связанных с FDW, например, к параметрам FDW. Чтобы использовать эти функции, необходимо включить в исходный файл заголовочный файл foreign/foreign.h. В этом заголовочном файле также определяются типы структур, возвращаемых этими функциями.
ForeignDataWrapper * GetForeignDataWrapper(Oid fdwid);
Эта функция возвращает объект ForeignDataWrapper для обёртки сторонних данных с указанным OID. Объект ForeignDataWrapper содержит свойства FDW (они описаны в foreign/foreign.h).
ForeignServer * GetForeignServer(Oid serverid);
Эта функция возвращает объект ForeignServer для стороннего сервера с указанным OID. Объект ForeignServer содержит свойства сервера (они описаны в foreign/foreign.h).
UserMapping * GetUserMapping(Oid userid, Oid serverid);
Эта функция возвращает объект UserMapping для сопоставления пользователя, которое определено для указанной роли на указанном сервере. (Если сопоставление для указанной роли отсутствует, она возвращает сопоставление для PUBLIC или выдаёт ошибку, если его нет.) Объект UserMapping содержит свойства сопоставления пользователя (они описаны в foreign/foreign.h).
ForeignTable * GetForeignTable(Oid relid);
Эта функция возвращает объект ForeignTable для сторонней таблицы с указанным OID. Объект ForeignTable содержит свойства сторонней таблицы (они описаны в foreign/foreign.h).
List * GetForeignColumnOptions(Oid relid, AttrNumber attnum);
Эта функция возвращает параметры FDW уровня столбцов для столбца из таблицы с указанным OID сторонней таблицы и указанным номером, в виде списка DefElem. Если для столбца не определены параметры, возвращается NULL.
В дополнение к функциям, выбирающим объекты по OID, для некоторых объектов добавлены функции поиска по именам:
ForeignDataWrapper * GetForeignDataWrapperByName(const char *name, bool missing_ok);
Эта функция возвращает объект ForeignDataWrapper для обёртки сторонних данных с указанным именем. В случае отсутствия такой обёртки возвращается NULL, если missing_ok равно true, а иначе выдаётся ошибка.
ForeignServer * GetForeignServerByName(const char *name, bool missing_ok);
Эта функция возвращает объект ForeignServer для стороннего сервера с указанным именем. В случае отсутствия такого сервера возвращается NULL, если missing_ok равно true, а иначе выдаётся ошибка.
53.3. Foreign Data Wrapper Helper Functions
Several helper functions are exported from the core server so that authors of foreign data wrappers can get easy access to attributes of FDW-related objects, such as FDW options. To use any of these functions, you need to include the header file foreign/foreign.h in your source file. That header also defines the struct types that are returned by these functions.
ForeignDataWrapper * GetForeignDataWrapper(Oid fdwid);
This function returns a ForeignDataWrapper object for the foreign-data wrapper with the given OID. A ForeignDataWrapper object contains properties of the FDW (see foreign/foreign.h for details).
ForeignServer * GetForeignServer(Oid serverid);
This function returns a ForeignServer object for the foreign server with the given OID. A ForeignServer object contains properties of the server (see foreign/foreign.h for details).
UserMapping * GetUserMapping(Oid userid, Oid serverid);
This function returns a UserMapping object for the user mapping of the given role on the given server. (If there is no mapping for the specific user, it will return the mapping for PUBLIC, or throw error if there is none.) A UserMapping object contains properties of the user mapping (see foreign/foreign.h for details).
ForeignTable * GetForeignTable(Oid relid);
This function returns a ForeignTable object for the foreign table with the given OID. A ForeignTable object contains properties of the foreign table (see foreign/foreign.h for details).
List * GetForeignColumnOptions(Oid relid, AttrNumber attnum);
This function returns the per-column FDW options for the column with the given foreign table OID and attribute number, in the form of a list of DefElem. NIL is returned if the column has no options.
Some object types have name-based lookup functions in addition to the OID-based ones:
ForeignDataWrapper * GetForeignDataWrapperByName(const char *name, bool missing_ok);
This function returns a ForeignDataWrapper object for the foreign-data wrapper with the given name. If the wrapper is not found, return NULL if missing_ok is true, otherwise raise an error.
ForeignServer * GetForeignServerByName(const char *name, bool missing_ok);
This function returns a ForeignServer object for the foreign server with the given name. If the server is not found, return NULL if missing_ok is true, otherwise raise an error.