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