Перейти к основному содержимому

Вспомогательные функции обертки сторонних данных

Несколько вспомогательных функций экспортируются из основного сервера, чтобы авторы оберток для сторонних данных могли получить легкий доступ к атрибутам объектов, связанных с FDW, например, к опциям FDW. Чтобы использовать любую из этих функций, необходимо включить заголовочный файл 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, в противном случае выдается ошибка.