PostgreSQL

外部テーブル他,各種情報の取得

view source on doxygen.postgresql.org

#include "foreign/foreign.h"
/*
[Sample]
  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));
        // table_name = warehouse
        // schema_name = sales
}

テーブル属性の取得

以下では,Oidが24576のテーブルをオープンし属性名のリストを取得している。

Relation rel;
Oid relid = 24576;
rel = heap_open(relid, NoLock);
TupleDesc tupdesc = RelationGetDescr(rel);
for (int i = 1; i <= tupdesc->natts; i++)
{
    Form_pg_attribute attr = tupdesc->attrs[i - 1];
    if (attr->attisdropped)
        continue;

    char *colname = get_relid_attribute_name(relid, i);
    elog(NOTICE, "colname: %s", colname);
}
heap_close(relid, NoLock);

トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
目次
ダブルクリックで閉じるTOP | 閉じる
GO TO TOP