- 追加された行はこの色です。
- 削除された行はこの色です。
- PostgreSQL/開発/backend/foreign/foreign.c は削除されています。
#author("2017-05-13T22:30:26+09:00","","") [[PostgreSQL/開発]] #author("2017-05-13T23:41:32+09:00","","") (参考)[[view source on doxygen.postgresql.org>https://doxygen.postgresql.org/foreign_8c_source.html]] #contents * 概要 [#tb419b60] - Foreign Data Wrapper,Foreign Server,User Mappingなどに関する機能 * サンプルプログラム [#hacf4189] ** 外部サーバ,マッピング,テーブル情報の取得 [#ba6fd060] #geshi(c){{ #include "foreign/foreign.h" /* [Sample] CREATE SERVER postgres_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'foo', dbname 'foodb', port '5432'); CREATE USER MAPPING FOR PUBLIC SERVER postgres_server OPTIONS (...); CREATE FOREIGN TABLE T (....) SERVER postgres_server OPTIONS (table_name 'warehouse', schema_name 'sales'); */ ListCell *lc; // 外部テーブル情報取得 ForeignTable *table = GetForeignTable(foreigntableid); foreach(lc, table->options) { DefElem *def = (DefElem*)lfirst(lc); elog(NOTICE, "%s = %s", def->defname, defGetString(def)); } // server情報取得 ForeignServer *server = GetForeignServer(table->serverid); elog(NOTICE, "servername = %s", server->servername); foreach(lc, server->options) { DefElem *def = (DefElem*)lfirst(lc); elog(NOTICE, "%s = %s", def->defname, defGetString(def)); } // ForeignDataWrapper情報取得 ForeignDataWrapper *wrapper = GetForeignDataWrapper(server->fdwid); elog(NOTICE, "fdwname = %s", wrapper->fdwname); foreach(lc, wrapper->options) { DefElem *def = (DefElem*)lfirst(lc); elog(NOTICE, "%s = %s", def->defname, defGetString(def)); } // UserMapping情報取得 UserMapping *mapping = GetUserMapping(wrapper->owner, server->serverid); elog(NOTICE, "serverid = %d, userid = %d", mapping->serverid, mapping->userid); foreach(lc, mapping->options) { DefElem *def = (DefElem*)lfirst(lc); elog(NOTICE, "%s = %s", def->defname, defGetString(def)); } }} * 関連 [#v5a62d5e] - [[include/foreign/foreign.h>PostgreSQL/開発/include/foreign/foreign.h]] * コメント [#v0245339] #comment