- 追加された行はこの色です。
- 削除された行はこの色です。
- PostgreSQL/開発/foreign.c は削除されています。
#author("2017-05-13T00:42:05+09:00","","") [[PostgreSQL/開発]] #author("2017-05-13T00:44:30+09:00","","") [[view source on doxygen.postgresql.org>https://doxygen.postgresql.org/foreign_8c_source.html]] * サンプルプログラム [#hacf4189] #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)); } }}