56.3. Вспомогательные функции для обертки внешних данных#
56.3. Вспомогательные функции для обертки внешних данных #
Несколько вспомогательных функций экспортируются из основного сервера, чтобы авторы оберток внешних данных могли легко получить доступ к атрибутам объектов, связанных с обертками внешних данных, такими как параметры обертки внешних данных.
Для использования любой из этих функций необходимо включить заголовочный файл foreign/foreign.h
в ваш исходный файл.
Этот заголовочный файл также определяет типы структур, которые возвращаются этими функциями.
ForeignDataWrapper * GetForeignDataWrapperExtended(Oid fdwid, bits16 flags);
Эта функция возвращает объект ForeignDataWrapper
для обертки внешних данных с заданным OID. Объект ForeignDataWrapper
содержит свойства FDW (см. foreign/foreign.h
для получения более подробной информации). flags
- это битовая маска, указывающая на дополнительный набор опций. Она может принимать значение FDW_MISSING_OK
, в этом случае вызывающей стороне вместо ошибки для неопределенного объекта будет возвращен результат NULL
.
ForeignDataWrapper * GetForeignDataWrapper(Oid fdwid);
Эта функция возвращает объект ForeignDataWrapper
для обертки внешних данных с заданным OID. Объект ForeignDataWrapper
содержит свойства FDW (см. foreign/foreign.h
для получения более подробной информации).
ForeignServer * GetForeignServerExtended(Oid serverid, bits16 flags);
Эта функция возвращает объект ForeignServer
для внешнего сервера с заданным OID. Объект ForeignServer
содержит свойства сервера (см. foreign/foreign.h
для получения более подробной информации). flags
- это битовая маска, указывающая на дополнительный набор опций. Она может принимать значение FSV_MISSING_OK
, в этом случае вместо ошибки для неопределенного объекта вызывающей стороне возвращается NULL
.
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
. Если у столбца нет опций, возвращается NIL.
Некоторые типы объектов имеют функции поиска по имени, в дополнение к функциям поиска по 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, в противном случае генерируется ошибка.