"システムカタログ" INTRO 03/13/94 日本語PostgreSQL

第 7 章 - システムカタログ

説明

この章では、システムカタログの各属性について列挙し、それらの意味を定義します。

クラス/型 システムカタログ

これらのカタログは拡張システムの核を構成します。

名前共有/ローカル説明
pg_aggregateローカル集約関数
pg_amローカルアクセス方法
pg_amopローカル特定のアクセス方法において使用可能な演算子
pg_amprocローカル特定のアクセス方法において使用可能なプロシージャ
pg_attributeローカルクラスの属性
pg_classローカルクラス
pg_indexローカル二次インデックス
pg_inheritsローカルクラスの継承階層
pg_languageローカルプロシージャを実装する言語
pg_opclassローカル演算子クラス
pg_operatorローカル問い合わせ言語演算子
pg_procローカルプロシージャ(関数)
pg_typeローカルデータ型

エンティティー

これらのカタログは、サイトを通して既知であるエンティティーの識別について処理します。

名前共有/ローカル説明
pg_database共有現在のデータベース
pg_group共有ユーザのグループ
pg_shadow共有有効なユーザ

ルールシステムカタログ

名前共有/ローカル説明
pg_listenerローカルアラータを待っているプロセス
pg_prs2plansローカルインスタンスシステムのプロシージャ
pg_prs2ruleローカルインスタンスシステムのルール
pg_prs2stubローカルインスタンスシステムのスタブ
pg_rewriteローカルシステム情報の再書き込み

ラージオブジェクトカタログ

これらのカタログは、一般的に倒置ファイルシステムとラージオブジェクト固有のものです。

名前共有/ローカル説明
pg_lobjローカルラージオブジェクトの説明
pg_namingローカル倒置名前空間のマッピング
pg_platterローカルジュークボックスレコードの目録
pg_plmapローカルジュークボックスレコードのエクステントマップ

内部カタログ

これらのカタログは内部クラスにあり、通常のヒープとしては格納されておらず、通常の方法ではアクセスできません(通常の方法アクセスしようとするとエラーになります)。

名前共有/ローカル説明
pg_log共有トランザクションのコミット/ロールバックのログ
pg_magic共有マジック定数
pg_time共有コミット/ロールバックの時刻
pg_variable共有特別な変数の値

"pg_" という名前で定義されたその他のクラスがいくつか存在します。それらのうち "ind" (二次インデックス)で終わるものを除き、これらのすべてはもはや使われなくなったか、または別な方法で置き換えられました。

クラス/型 システムカタログ

以下のカタログはクラス/型システムに関係します。

/*
 * 集約関数
 *
 * 過渡的な関数については DEFINE AGGREGATE を参照のこと
 */
pg_aggregate
    NameData    aggname     /* 集約関数名 (たとえば count) */
    oid         aggowner    /* 作成者の usesysid */
    regproc     aggtransfn1 /* 最初の過渡期関数 */
    regproc     aggtransfn2 /* 2 番目の過渡期関数 */
    regproc     aggfinalfn  /* 最後の関数 */
    oid         aggbasetype /* 集約関数が処理するデータ型 */
    oid         aggtranstype1   /* aggtransfn1 が返す型 */
    oid         aggtranstype2   /* aggtransfn2 が返す型 */
    oid         aggfinaltype    /* aggfinalfn が返す型 */
    text        agginitval1 /* aggtransfn1 の初期(開始)値の
                                外部フォーマット */
    text        agginitval2 /* aggtransfn2 の初期(開始)値の
                                外部フォーマット */
    
pg_am
    NameData    amname      /* アクセス方法の名前 */
    oid         amowner     /* 作成者の usesysid */
    char        amkind      /* - 削除されました */
                            /* 元々は: h=ハッシュ o=順番 s=特殊 */
    int2        amstrategies/* この AM を通過/検索できる
                                ストラテジの総数 */
    int2        amsupport   /* この AM が使用するサポート関数の総数 */
    regproc     amgettuple  /* 次の有効なタップル 関数 */
    regproc     aminsert    /* このタップルを挿入する 関数 */
    regproc     amdelete    /* このタップルを削除する 関数 */
    regproc     amgetattr   /* - 削除されました */
    regproc     amsetlock   /* - 削除されました */
    regproc     amsettid    /* - 削除されました */
    regproc     amfreetuple /* - 削除されました */
    regproc     ambeginscan /* 新しいスキャンを開始する 関数 */
    regproc     amrescan    /* このスキャンを再開始する 関数 */
    regproc     amendscan   /* このスキャンを終了する 関数 */
    regproc     ammarkpos   /* 現在のスキャン位置をマークする 関数 */
    regproc     amrestrpos  /* マークしたスキャン位置をリストアする 
                                関数 */
    regproc     amopen      /* - 削除されました */
    regproc     amclose     /* - 削除されました */
    regproc     ambuild     /* 新しいインデックスをビルドする 関数 */
    regproc     amcreate    /* - 削除されました */
    regproc     amdestroy   /* - 削除されました */
    
pg_amop
    oid         amopid      /* この演算子が使われるべきアクセス方法 */
    oid         amopclaid   /* この演算子が使われるべき演算子クラス */
    oid         amopopr     /* 演算子 */
    int2        amopstrategy/* この演算子を適用する通過/検索
                                ストラテジ番号 */
    regproc     amopselect  /* 演算子の淘汰を計算する関数 */
    regproc     amopnpages  /* 評価されるべきページ数を計算する関数 */
    
pg_amproc
    oid     amid        /* このプロシージャが関連するアクセス方法 */
    oid     amopclaid   /* この演算子が使われる演算子クラス */
    oid     amproc      /* プロシージャ */
    int2    amprocnum   /* この演算子を適用するサポート関数番号 */
    
pg_class
    NameData    relname     /* クラス名 */
     oid        relowner    /* 所有者の usesysid */
     oid        relam       /* アクセス方法 */
     int4       relpages    /* 8 KB ページの数 */
     int4       reltuples   /* インスタンスの数 */
     abstime    relexpires  /* インスタンスが非アーカイブの記憶装置
                            から削除されてからの経過時間 */
     reltime    relpreserved/* インスタンスが非アーカイブの記憶装置
                            から削除されてからの期間 */
     bool       relhasindex /* クラスが二次インデックスを持つか */
     bool       relisshared /* クラスは共有かローカルか */
     char       relkind     /* リレーションのタイプ:
                   i=インデックス r=リレーション(ヒープ)
                   s=特殊 u=カタログ化されていない(一時的) */
     char       relarch /* アーカイブモード:
                    h=heavy l=light n=none */
     int2       relnatts    /* 現在の非システムの数 */
     int2       relsmgr     /* 記憶装置管理装置:
                    0=磁気ディスク 1=sony WORM jukebox 2=メインメモリ */
     int28      relkey      /* - 未使用 */
     oid8       relkeyop    /* - 未使用 */
     aclitem    relacl[1]   /* アクセス制御リスト */
    
pg_attribute
    oid         attrelid    /* この属性を含むクラス */
    NameData      attname   /* 属性の名前 */
    oid         atttypid    /* 属性の型 */
    oid         attdefrel   /* - 削除されました */
    int4        attnvals    /* - 削除されました */
    oid         atttyparg   /* - 削除されました */
    int2        attlen      /* 属性のバイト数  -1=可変 */
    int2        attnum      /* 属性番号 >0=ユーザ属性 <0=システム属性 */
    int2        attbound    /* - 削除されました */
    bool        attbyval    /* 型が値で渡されたか */
    bool        attcanindex /* - 削除されました */
    oid         attproc     /* - 削除されました */
    int4        attnelems   /* 配列の次元数 */
    int4        attcacheoff /* タップルのキャッシュのオフセット */
    bool        attisset    /* 属性に値がセットされているか */
    
pg_inherits
    oid     inhrel      /* 子クラス */
    oid     inhparent   /* 親クラス */
    int4    inhseqno    /* - 削除されました */
    
    oid     indexrelid  /* 二次インデックスクラスの oid  */
    oid     indrelid    /* インデックスヒープクラスの oid  */
    oid     indproc     /* ヒープ内の属性からインデックスを計算する
                            関数  0=関数のインデックスではない */
    int28   indkey      /* キー属性の属性数 */
    oid8    indclass    /* 各キーの opclass */
    bool    indisclustered  /* インデックスがクラスタ化
                            されているか - 未使用 */
    bool    indisarchived   /* インデックスがカーカイブ化
                            されているか - 未使用 */
    text    indpred     /* 部分的インデックスの問い合わせプラン */
    
pg_type
    NameData    typname     /* 型名 */
    oid         typowner    /* 所有者の usesysid */
    int2        typlen      /* 内部フォームの長さ  -1=可変長 */
    int2        typprtlen   /* 外部フォームの長さ */
    bool        typbyval    /* 型が値渡しされたか */
    char        typtype     /* 型の種類:c=カタログ(合成) b=ベース */
    bool        typisdefined/* 定義された/まだシェル */
    char        typdelim    /* 配列外部フォームのデリミタ */
    oid         typrelid    /* (合成であれば)クラス */
    oid         typelem     /* 各配列要素の型 */
    regproc     typinput    /* 外部 - 内部変換関数 */ 
    regproc     typoutput   /* 内部 - 外部変換関数 */
    regproc     typreceive  /* クライアント - サーバ変換関数 */
    regproc     typsend     /* サーバ - クライアント変換関数 */
    text        typdefault  /* デフォルト値 */
    
pg_operator
    NameData    oprname     /* 演算子名 */
    oid         oprowner    /* 所有者の usesysid */
    int2        oprprec     /* - 削除されました */
    char        oprkind     /* 演算子の種別:
                    b=バイナリ  l=左方単項  r=右方単項 */
    bool        oprisleft   /* 左方/右方結合演算子か */
    bool        oprcanhash  /* hashjoin に使える演算子か */
    oid         oprleft     /* 左オペランドの型 */
    oid         oprright    /* 右オペランドの型 */
    oid         oprresult   /* 結果の型 */
    oid         oprcom      /* 代用演算子 */
    oid         oprnegate   /* 否定演算子 */
    oid         oprlsortop  /* 左オペランドのソート演算子 */
    oid         oprrsortop  /* 右オペランドのソート演算子 */
    regproc     oprcode     /* この演算子を実装している関数 */
    regproc     oprrest     /* 演算子の限定淘汰を計算する関数 */
    regproc     oprjoin     /* 演算子の結合淘汰を計算する関数 */
    
pg_opclass
    NameData    opcname /* 演算子クラス名 */
    
pg_proc
    NameData    proname     /* 関数名 */
    oid         proowner    /* 所有者の usesysid */
    oid         prolang     /* 関数実装言語 */
    bool        proisinh    /* - 削除されました */
    bool        proistrusted    /* サーバで実行されるか、
                        信頼されない関数プロセスか */
    bool        proiscachable   /* 関数の返り値をキャッシュできるか */
    int2        pronargs    /* 引数の数 */
    bool        proretset   /* 関数がセットを返すか - 未使用 */
    oid         prorettype  /* 返り値 */
    oid8        proargtypes /* 引数の型 */
    int4        probyte_pct /* 関数計算のチェックするのに必要な、
                            引数のバイト数のパーセンテージ */
    int4        properbyte_cpu  /* 関数の入力サイズに対する
                            実行時間の感度 */
    int4        propercall_cpu  /* (入力サイズにかかわらず)
                            関数起動のオーバーヘッド */
    int4        prooutin_ratio  /* 関数の入力サイズに対する
                            出力サイズのパーセンテージ */
    text        prosrc  /* 関数定義(postquel のみ) */
    bytea       probin  /* オブジェクトファイルへのパス(C のみ) */
    
pg_language
    NameData    lanname     /* 言語名 */
    text        lancompiler /* - 削除されました */
    

ENTITIES

pg_database
    NameData    datname     /* データベース名 */
    oid         datdba      /* データベース管理者の usesysid */
    text        datpath     /* データベースの、$PGDATA 配下
                            ディレクトリ名 */ 
    
pg_group
    NameData    groname     /* グループ名 */
    int2        grosysid    /* グループの UNIX グループ ID */
    int2        grolist[1]  /* グループメンバの usesysids のリスト */
    
pg_shadow
    NameData    usename     /* ユーザ名 */
    int2        usesysid    /* ユーザの UNIX ユーザ ID */
    bool        usecreatedb /* ユーザはデータベースを生成できるか */
    bool        usetrace    /* ユーザはトレースフラグをセットできるか */
    bool        usesuper    /* ユーザは POSTGRES 特権ユーザになれるか */
    bool        usecatupd   /* ユーザはカタログを更新できるか */
    

ルールシステムカタログ

pg_listener
    NameData    relname     /* 非同期通知を希望するクラス */
    int4        listenerpid /* 非同期通知を待っているフロントエンドに
                        対応するサーバのプロセス ID */
    int4        notification/* このプロセス ID に対するイベント通知は
                        ペンディング状態か */
    
pg_prs2rule
    NameData    prs2name        /* ルール名 */
    char        prs2eventtype   /* ルールイベントタイプ:
                   R=取り出し  U=更新(置換)  A=追加  D=削除 */
    oid         prs2eventrel    /* イベントを適用するクラス */
    int2        prs2eventattr   /* イベントを適用する属性 */
    float8      necessary       /* - 削除されました */
    float8      sufficient      /* - 削除されました */
    text        prs2text        /* オリジナルのルール定義テキスト */
    
pg_prs2plans
    oid     prs2ruleid  /* このプランが使われる prs2rule インスタンス */
    int2    prs2planno  /* プラン番号(1 つのルールが複数のプランを
                        起動する場合もあります)  */
    text    prs2code    /* このプランの外部表現 */
    
pg_prs2stub
    oid     prs2relid   /* このルールを適用するクラス */
    bool    prs2islast  /* これは最後のスタブ・フラグメントか */
    int4    prs2no      /* スタブ・フラグメント番号 */
    stub    prs2stub    /* スタブ・フラグメント */
    
pg_rewrite
    NameData    rulename    /* ルール名 */
    char        ev_type     /* イベントタイプ:
                    RETRIEVE, REPLACE, APPEND, DELETE
                    コードはパーザ依存 (!?) */
    oid         ev_class    /* このルールを適用するクラス */
    int2        ev_attr     /* このルールを適用する属性 */
    bool        is_instead  /* これは instead ルールか */
    text        ev_qual     /* このルールをトリガにしたプランを修正
                    (書き換え)する修飾子 */
    text        action  /* アクションのパースツリー */
    

ラージオブジェクト・カタログ

pg_lobj
    oid     ourid   /* 倒置ファイルシステムの名前空間において
                    このオブジェクトを識別する pg_naming の 'ourid' */
    int4    objtype /* 記憶装置タイプコード:
                   0=倒置  1=Unix  2=外部  3=Jaquith */
    bytea   object_descripto    /* 多目的オブジェクトハンドルの構造体 */
    
pg_naming
    NameData    filename    /* ファイル名要素 */
    oid         ourid       /* 他のインスタンスにおいてこのインスタンスを
                    識別するためのランダムな oid (明白でない理由により
                    実際の oid を使うことができません) */
    oid         parentid    /* 親の倒置ファイルシステムのディレクトリ
                    の pg_naming インスタンス */
    
pg_platter
    NameData    plname  /* レコード名 */
    int4        plstart /* 最高位の占有済みエクステント */
    
pg_plmap
    oid     plid        /* この(ブロックの)エクステントがある
                        (pg_platter 内の)レコード */
    oid     pldbid      /* この(ブロックの)エクステントが属している
                        クラスのデータベース */
    oid     plrelid     /* この(ブロックの)エクステントが属している
                        クラス */
    int4    plblkno     /* クラス内の開始ブロック番号 */
    int4    ploffset    /* このエクステントが属しているレコードの
                        オフセット */
    int4    plextentsz  /* このエクステントの長さ */
    

翻訳者

堀田 倫英 <hotta@net-newbie.com>