- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- PostgreSQL/開発/backend/access/heapam.c へ行く。
- 1 (2017-05-13 (土) 00:47:24)
- 2 (2017-05-13 (土) 01:10:32)
- 3 (2017-05-13 (土) 13:46:26)
- 4 (2017-05-14 (日) 12:28:40)
概要 †
- ヒープ操作のための機能
- リレーション(テーブル)のオープン・クローズ,タプルの追加・削除・更新などの機能も定義されている
サンプルプログラム †
テーブル属性の取得 †
以下では,oidが24576のテーブルをオープンし属性名のリストを取得している。
Relation rel; Oid relid = 24576; /* インデックスや複合型,実態を持たない外部テーブルに対しては使えない */ rel = heap_open(relid, NoLock); /* リレーションのタプルディスクリプタを取得する */ TupleDesc tupdesc = RelationGetDescr(rel); /* nattsに属性数が入っている */ for (int i = 1; i <= tupdesc->natts; i++) { /* 属性に関する情報を取得 */ Form_pg_attribute attr = tupdesc->attrs[i - 1]; /* ドロップされている場合はスキップ */ if (attr->attisdropped) continue; /* 属性名を取得(pstrdupでコピーされる)*/ char *colname = get_relid_attribute_name(relid, i); /* 属性名を取得 */ // char *colname = NameStr(attr->attname); elog(NOTICE, "colname: %s", colname); } /* ヒープを閉じる。 relcacheが実際の処理を行ない,ここでは参照カウント数を減らす。 */ heap_close(rel, NoLock);
参考・関連 †
- heapam.c - on doxygen.postgresql.org