すべてのプロダクト
Search
ドキュメントセンター

PolarDB:システム情報関数と演算子

最終更新日:May 31, 2024

このトピックでは、PolarDB for PostgreSQL (Compatible with Oracle) でサポートされているシステム情報関数と演算子について説明します。

このセクションにリストされている機能に加えて、システム情報も提供する統計システムに関連するいくつかの機能があります。 セッション情報関数

current_catalogname

current_database () → name

現在のデータベースの名前を返します。 (データベースはSQL標準では「カタログ」と呼ばれるため、current_catalogは標準のスペルです。)

current_query () → text

クライアントから送信された現在実行中のクエリのテキストを返します (複数のステートメントが含まれている可能性があります) 。

current_rolename

これはcurrent_userに相当します。

current_schemaname

current_schema () → name

検索パスの最初のスキーマの名前を返します (検索パスが空の場合はnull値) 。 これは、ターゲットスキーマを指定せずに作成されたテーブルまたはその他の名前付きオブジェクトに使用されるスキーマです。

current_schemas (include_implicit boolean) → name[]

有効な検索パスに現在あるすべてのスキーマの名前の配列を優先順位順に返します。 (現在のsearch_path設定の既存の検索可能なスキーマに対応しない項目は省略されます。) ブール引数がtrueの場合、pg_catalogなどの暗黙的に検索されたシステムスキーマが結果に含まれます。

current_username

現在の実行コンテキストのユーザー名を返します。

inet_client_addr () → inet

現在のクライアントのIPアドレスを返します。現在の接続がUnixドメインソケット経由の場合はNULLを返します。

inet_client_port () → integer

現在のクライアントのIPポート番号を返します。現在の接続がUnixドメインソケット経由の場合はNULLを返します。

inet_server_addr () → inet

サーバーが現在の接続を受け入れたIPアドレスを返します。現在の接続がUnixドメインソケット経由の場合はNULLを返します。

inet_server_port () → integer

サーバーが現在の接続を受け入れたIPポート番号を返します。現在の接続がUnixドメインソケット経由の場合はNULLを返します。

pg_backend_pid () → integer

現在のセッションにアタッチされているサーバープロセスのプロセスIDを返します。

pg_blocking_pids (integer) → integer[]

指定されたプロセスIDを持つサーバプロセスがロックを取得するのをブロックしているセッションのプロセスIDの配列、またはそのようなサーバプロセスがないかブロックされていない場合は空の配列を返します。

ブロックされたプロセスのロック要求と競合するロック (ハードブロック) を保持しているか、ブロックされたプロセスのロック要求と競合するロックを待機しており、待機キュー (ソフトブロック) でその前にある場合、1つのサーバプロセスが別のサーバプロセスをブロックします。 並列クエリを使用する場合、実際のロックが子ワーカープロセスによって保持または待機されている場合でも、結果にはクライアントに表示可能なプロセスID (つまり、pg_backend_pidの結果) が常に表示されます。 その結果、結果にはPIDが重複している可能性があります。 また、準備されたトランザクションが競合ロックを保持するとき、それはゼロプロセスIDによって表されることに留意されたい。

この関数を頻繁に呼び出すと、ロックマネージャーの共有状態に短時間排他的にアクセスする必要があるため、データベースのパフォーマンスに影響を与える可能性があります。

pg_conf_load_time () → timestamp with time zone

サーバー構成ファイルが最後にロードされた時刻を返します。 現在のセッションがその時点で生きていた場合、これはセッション自体が構成ファイルを再読み取りする時点になります (したがって、読み取りはセッションによって少し異なります) 。 それ以外の場合は、ポストマスタプロセスが構成ファイルを再読み込みする時である。

pg_current_logfile ( [text] ) → text

ログコレクターで現在使用されているログファイルのパス名を返します。 パスには、log_directoryディレクトリと個々のログファイル名が含まれます。 ログコレクターが無効の場合、結果はNULLになります。 それぞれ異なる形式の複数のログファイルが存在する場合、引数なしのpg_current_logfileは、順序付きリストにある最初の形式のファイルのパスを返します: stderr, csvlog。これらの形式のログファイルがない場合は、NULLが返されます。 特定のログファイル形式に関する情報を要求するには、オプションのパラメーターの値としてcsvlogまたはstderrを指定します。 要求されたログ形式がlog_destinationで設定されていない場合、結果はNULLになります。 結果には、現在の_logfilesファイルの内容が反映されます。

pg_my_temp_schema () → oid

現在のセッションの一時スキーマのOIDを返します。OIDがない場合はゼロを返します (一時テーブルが作成されていないため) 。

pg_is_other_temp_schema (oid) → ブール値

指定されたOIDが別のセッションの一時スキーマのOIDである場合、trueを返します。 (これは、たとえば、他のセッションの一時テーブルをカタログ表示から除外するのに役立ちます。)

pg_jit_available () → ブール

aJITcompiler extensionが使用可能で、jit設定パラメーターがonに設定されている場合はtrueを返します。

pg_listening_channels () → setof text

現在のセッションがリッスンしている非同期通知チャネルの名前のセットを返します。

pg_notification_queue_usage () → double precision

処理待ちの通知によって現在占有されている非同期通知キューの最大サイズの割合 (0-1) を返します。

pg_postmaster_start_time () → timestamp with time zone

サーバーが起動した時刻を返します。

pg_safe_snapshot_blocking_pids (integer) → integer[]

指定されたプロセスIDを持つサーバプロセスが安全なスナップショットを取得できないようにブロックしているセッションのプロセスIDの配列、またはそのようなサーバプロセスがないかブロックされていない場合は空の配列を返します。

SERIALIZABLEトランザクションを実行しているセッションは、SERIALIZABLE READ ONLY DEFERRABLEトランザクションがスナップショットを取得するのをブロックします。

この関数を頻繁に呼び出すと、述語ロックマネージャーの共有状態に短時間アクセスする必要があるため、データベースのパフォーマンスに影響を与える可能性があります。

pg_trigger_depth () → integer

PostgreSQLtriggersの現在のネストレベルを返します (トリガー内から直接または間接的に呼び出されない場合は0) 。

session_username

セッションユーザー名を返します。

ユーザー名前

これはcurrent_userに相当します。

version () → text

PostgreSQLserverのバージョンを記述する文字列を返します。

重要

current_catalogcurrent_rolecurrent_schemacurrent_usersession_user、およびuserには、SQLの特別な構文ステータスがあります。末尾の括弧なしで呼び出す必要があります。 PostgreSQLでは、括弧はオプションでcurrent_schemaで使用できますが、他のスキーマでは使用できません。

通常、session_userは現在のデータベース接続を開始したユーザーですが、スーパーユーザーはこの設定をSET session AUTHORIZATIONで変更できます。 current_userは、権限チェックに適用されるユーザー識別子です。 通常はセッションユーザーと同じですが、SET ROLEで変更できます。 また、属性SECURITY DEFINERを持つ関数の実行中にも変更されます。 Unixの用語では、セッションユーザは「実ユーザ」であり、現在のユーザは「有効ユーザ」である。current_roleuserは、current_userの同義語です。 (SQL標準はcurrent_rolecurrent_userを区別しますが、PostgreSQLはユーザーとロールを単一の種類のエンティティに統合するため、区別しません。)

次の表に、オブジェクトアクセス特権をプログラムで照会できる関数を示します。 これらの機能では、特権が照会されているユーザーは、名前またはOID (pg_authid. oid) で指定できます。または、名前がpublicとして指定されている場合は、PUBLIC疑似ロールの特権がチェックされます。 また、user引数を完全に省略することもできます。その場合、current_userが仮定されます。 照会されているオブジェクトは、名前またはOIDによっても指定できます。 名前で指定する場合、関連する場合はスキーマ名を含めることができます。 関心のあるアクセス権は、テキスト文字列によって指定され、この文字列は、オブジェクトのタイプ (例えば、SELECT) に対する適切な特権キーワードのうちの1つを評価しなければならない。 オプションで、WITH GRANT OPTIONを特権タイプに追加して、特権がgrantオプションで保持されているかどうかをテストできます。 また、複数の特権タイプをコンマで区切ってリストすることもできます。この場合、リストされた特権のいずれかが保持されている場合、結果はtrueになります。 (特権文字列のケースは重要ではなく、余分な空白は特権名の間で許可されますが、特権名内では許可されません。) いくつかの例:

SELECT has_table_privilege('myschema.mytable', 'select');
    SELECT has_table_privilege('joe', 'mytable ', 'INSERT, SELECT WITH GRANT OPTION'); 

アクセス権照会関数

has_any_column_privilege ( [user nameまたはoid ,] table textまたはoid, privilege text) → boolean

ユーザーにはテーブルの列に対する特権がありますか? これは、テーブル全体に対して特権が保持されている場合、または少なくとも1つの列に対して特権の列レベルの付与がある場合に成功します。 許可される権限の種類は、SELECTINSERTUPDATEREFERENCESです。

has_column_privilege ( [user nameまたはoid ,] table textまたはoid, column textまたはsmallint, privilege text) → boolean

指定されたテーブル列に対する権限はユーザーにありますか。 これは、特権がテーブル全体に対して保持されている場合、または列に対する特権の列レベルの付与がある場合に成功します。 列は、名前または属性番号 (pg_attribute. attnum) で指定できます。 許可される権限の種類は、SELECTINSERTUPDATEREFERENCESです。

has_database_privilege ( [user name or oid ,] database text or oid, privilege text) → boolean

ユーザーにはデータベースの権限がありますか? 許可される権限の種類は、CREATECONNECTTEMPORARYTEMP (TEMPORARYに相当) です。

has_foreign_data_wrapper_privilege ( [user name or oid ,] fdw text or oid, privilege text) → boolean

ユーザーは外部データラッパーの特権を持っていますか? 許可される特権タイプはUSAGEのみです。

has_function_privilege ( [user name or oid ,] function text or oid, privilege text) → boolean

ユーザーには機能の特権がありますか? 許可される特権タイプはEXECUTEのみです。

関数をOIDではなく名前で指定する場合、許可される入力はregprocedureデータ型と同じです。 例は次のとおりです。

SELECT has_function_privilege('joeuser', 'myfunc(int, text)', 'execute');

has_language_privilege ( [user name or oid ,] language text or oid, privilege text) → boolean

ユーザーには言語の特権がありますか? 許可される特権タイプはUSAGEのみです。

has_schema_privilege ( [user name or oid ,] schema text or oid, privilege text) → boolean

ユーザーにはスキーマに対する特権がありますか? 許可される権限の種類は、CREATEUSAGEです。

has_sequence_privilege ( [user name or oid ,] sequence text or oid, privilege text) → boolean

ユーザーはシーケンスの特権を持っていますか? 許可される権限の種類は、USAGESELECT、およびUPDATEです。

has_server_privilege ( [user name or oid ,] server text or oid, privilege text) → boolean

ユーザーは外部サーバーに対する特権を持っていますか? 許可される特権タイプはUSAGEのみです。

has_table_privilege ( [user name or oid ,] table text or oid, privilege text) → boolean

ユーザーにはテーブルの特権がありますか? 許可される権限の種類は、SELECTINSERTUPDATEDELETETRUNCATEREFERENCESTRIGGERです。

has_tablespace_privilege ( [user name or oid ,] tablespace text or oid, privilege text) → boolean

ユーザーにはテーブルスペースの特権がありますか? 許可される特権タイプはCREATEのみです。

has_type_privilege ( [user name or oid ,] type text or oid, privilege text) → boolean

ユーザーにはデータ型に対する特権がありますか? 許可される特権タイプはUSAGEのみです。 OIDではなく名前でタイプを指定する場合、許可される入力はregtypeデータ型と同じです。

pg_has_role ( [user name or oid ,] role text or oid, privilege text) → boolean

ユーザーにロールの権限はありますか? 許可される特権タイプはMEMBERUSAGEです。MEMBERは、ロールの直接的または間接的なメンバーシップ (つまり、SET roleを行う権利) を示し、USAGEは、SET ROLEを行わずにロールの特権をすぐに利用できるかどうかを示します。 この機能では、ユーザーパブリックに設定する特別なケースは許可されません。これは、public疑似ロールが実際のロールのメンバーになることができないためです。

row_security_active (table textまたはoid) → boolean

現在のユーザーと現在の環境のコンテキストで、指定されたテーブルに対して行レベルのセキュリティはアクティブですか。

次の表は、アクセス権のカタログ表現であるaclitem型で使用できる演算子を示しています。

aclitem演算子

aclitem=aclitemブール

aclitemは等しいですか? (type aclitemには通常の比較演算子のセットがありません。等しいだけです。 次に、aclitem配列は同等性についてのみ比較できます。

'calvin=r * w/hobbes'::aclitem = 'calvin=r * w */hobbes'::aclitemf

aclitem[] @> aclitemboolean

配列に指定された特権が含まれていますか? (これは、aclitemの被付与者および付与者と一致し、少なくとも指定された特権セットを有する配列エントリがある場合に真である。)

'{calvin=r * w/hobbes,hobbes=r * w */postgres}'::aclitem[] @> 'calvin=r */hobbes '::aclitemt

aclitem[] ~ aclitemboolean

これは @> の非推奨エイリアスです。

'{calvin=r * w/hobbes,hobbes=r * w */postgres}'::aclitem[] ~ 'calvin=r */hobbes '::aclitemt

次の表に、aclitem型を管理するための追加関数を示します。

aclitem関数

acldefault (type "char", ownerId oid) → aclitem[]

OID ownerIdを持つロールに属するのオブジェクトの既定のアクセス権を保持するaclitem配列を構築します。 これは、オブジェクトのACLエントリがnullの場合に想定されるアクセス権を表します。 typeパラメーターは、COLUMNの場合は 'c' 、TABLEとテーブルのようなオブジェクトの場合は 'r' 、SEQUENCEの場合は 's' 、DATABASEの場合は 'd' 、FUNCTIONまたはPROCEDUREの場合は 'l' 、LAGE OBJECTの場合は 'L' 、BLEMA 'SPHEACEの場合は 'n' の場合は ''''N' 、'9' 、'9' 、'SPHE' 、'FOREIGN DATA WRAPPERの場合は「F」、FOREIGN SERVERの場合は「S」、TYPEまたはDOMAINの場合は「T」。

aclexplode (aclitem[]) → setof record (grantor oid, grantee oid, privilege_type text, is_grantable boolean)

aclitem配列を行のセットとして返します。 被付与者が疑似役割PUBLICである場合、被付与者の列ではゼロによって表される。 付与された各特権は、SELECTINSERTなどとして表されます。 各特権は別々の行として分割されているため、privilege_type列には1つのキーワードのみが表示されます。

makeaclitem (grantee oidgrantor oidprivileges textis_grantable boolean) → aclitem

指定されたプロパティを持つaclitemを作成します。

次の表は、特定のオブジェクトが現在のスキーマ検索パスに表示されているかどうかを判断する関数を示しています。 たとえば、テーブルを含むスキーマが検索パスにあり、同じ名前のテーブルが検索パスの前に表示されない場合、テーブルは可視であると言われます。 これは、明示的なスキーマ修飾なしにテーブルを名前で参照できるというステートメントと同等です。 したがって、すべての表示テーブルの名前をリストするには:

SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);

関数と演算子の場合、検索パス内のオブジェクトは、パスの前に同じ名前のオブジェクトと引数データ型 (複数可) がない場合に可視であると言われます。 演算子クラスとファミリの場合、名前と関連するインデックスアクセス方法の両方が考慮されます。

スキーマ可視性照会関数

pg_collation_is_visible (collation oid) → boolean

照合順序は検索パスに表示されますか?

pg_conversion_is_visible (conversion oid) → boolean

変換は検索パスに表示されますか?

pg_function_is_visible (function oid) → boolean

関数は検索パスに表示されますか? (これはプロシージャと集計にも機能します。)

pg_opclass_is_visible (opclass oid) → boolean

オペレータクラスは検索パスに表示されますか?

pg_operator_is_visible (operator oid) → boolean

オペレータは検索パスに表示されますか?

pg_opfamily_is_visible (opclass oid) → boolean

オペレータファミリーは検索パスに表示されますか?

pg_statistics_obj_is_visible (stat oid) → boolean

統計オブジェクトは検索パスに表示されますか?

pg_table_is_visible (table oid) → boolean

検索パスにテーブルが表示されますか? (これは、ビュー、マテリアライズドビュー、インデックス、シーケンス、および外部テーブルを含む、すべてのタイプの関係に対して機能します。)

pg_ts_config_is_visible (config oid) → boolean

テキスト検索設定は検索パスに表示されますか?

pg_ts_dict_is_visible (dict oid) → boolean

テキスト検索辞書は検索パスに表示されますか?

pg_ts_parser_is_visible (parser oid) → boolean

テキスト検索パーサーは検索パスに表示されますか?

pg_ts_template_is_visible (template oid) → boolean

テキスト検索テンプレートは検索パスに表示されますか?

pg_type_is_visible (type oid) → boolean

タイプ (またはドメイン) は検索パスに表示されますか?

これらの機能はすべて、チェックされるオブジェクトを識別するためにオブジェクトOIDを必要とする。 オブジェクトを名前でテストする場合は、次のようなOIDエイリアス型 (regclassregtyperegprocedureregoperatorregconfig、またはregdictionary) を使用すると便利です。

SELECT pg_type_is_visible('myschema.widget'::regtype);

この方法でスキーマ修飾されていない型名をテストすることはあまり意味がないことに注意してください。

システムカタログ情報関数

format_type (type oid, typemod integer) → text

型OIDおよび場合によっては型修飾子によって識別されるデータ型のSQL名を返します。 特定の修飾子がわからない場合は、型修飾子にNULLを渡します。

pg_get_catalog_foreign_keys() →setofレコード(fktableregclass,fkcolstext[],pktableregclass,pkcolstext[],is_arrayブール値,is_optブール値)

PostgreSQLsystemカタログ内に存在する外部キー関係を説明するレコードのセットを返します。 fktable列には参照元カタログの名前が含まれ、fkcols列には参照元列の名前が含まれます。 同様に、pktable列には参照されるカタログの名前が含まれ、pkcols列には参照される列の名前が含まれます。 is_arrayがtrueの場合、最後に参照する列は配列であり、その各要素は参照カタログのエントリと一致する必要があります。 is_optがtrueの場合、参照する列には有効な参照ではなくゼロを含めることができます。

pg_get_constraintdef (constraint oid [, pretty boolean] ) → text

制約の作成コマンドを再構築します。 (これは逆コンパイルされた再構成であり、コマンドの元のテキストではありません。)

pg_get_expr (expr pg_node_tree, relation oid [, pretty boolean] ) → text

列の既定値など、システムカタログに格納されている式の内部形式を分解します。 式にVarsが含まれている可能性がある場合は、参照するリレーションのOIDを2番目のパラメーターとして指定します。

pg_get_functiondef (func oid) → text

関数またはプロシージャの作成コマンドを再構築します。 (これは逆コンパイルされた再構成であり、コマンドの元のテキストではありません。) 結果は、完全なCREATE OR REPLACE FUNCTIONまたはCREATE or REPLACE PROCEDUREステートメントです。

pg_get_function_引数 (func oid) → text

関数またはプロシージャの引数リストを、CREATE function内に表示する必要がある形式 (デフォルト値を含む) で再構築します。

pg_get_function_identity_引数 (func oid) → text

関数またはプロシージャを識別するために必要な引数リストを、ALTER functionなどのコマンド内に表示する必要がある形式で再構築します。 このフォームはデフォルト値を省略します。

pg_get_function_result (func oid) → text

関数のRETURNS句を、CREATE function内に表示する必要がある形式で再構築します。 プロシージャのNULLを返します。

pg_get_indexdef (index oid [, column integer, pretty boolean] ) → text

インデックスの作成コマンドを再構築します。 (これは逆コンパイルされた再構成であり、コマンドの元のテキストではありません。) columnが指定され、ゼロでない場合、その列の定義のみが再構築されます。

pg_get_keywords () → setof record (word text, catcode "char", barelabel boolean, catdesc text, baredesc text)

サーバーによって認識されたSQLキーワードを記述するレコードのセットを返します。 word列にはキーワードが含まれます。 catcode列にはカテゴリコードが含まれます。Uは非予約キーワード、Cは列名、Tはタイプまたは関数名、Rは完全予約キーワードです。 barelabel列には、キーワードがSELECTリストの "bare" 列ラベルとして使用できる場合はtrueが、asの後にのみ使用できる場合はfalseが含まれます。 catdesc列には、キーワードのカテゴリを記述するローカライズされた可能性のある文字列が含まれます。 baredesc列には、キーワードの列ラベルステータスを記述するローカライズされた可能性のある文字列が含まれます。

pg_get_ruledef (rule oid [, pretty boolean] ) → text

ルールの作成コマンドを再構築します。 (これは逆コンパイルされた再構成であり、コマンドの元のテキストではありません。)

pg_get_serial_sequence (table text, column text) → text

列に関連付けられているシーケンスの名前を返します。列に関連付けられているシーケンスがない場合はNULLを返します。 列がidentity列の場合、関連するシーケンスはその列に対して内部的に作成されたシーケンスです。 シリアルタイプ (serialsmallserialbigserial) のいずれかを使用して作成された列の場合、そのシリアル列定義用に作成されたシーケンスです。 後者の場合、関連付けはALTER SEQUENCE OWNED BYで修正または削除できます。 (この関数はおそらくpg_get_owned_sequenceと呼ばれるはずです。現在の名前は、これまでシリアルタイプの列で使用されてきたという事実を反映しています。) 最初のパラメーターはオプションのスキーマを含むテーブル名で、2番目のパラメーターは列名です。 最初のパラメーターにはスキーマ名とテーブル名の両方が含まれる可能性があるため、通常のSQLルールに従って解析されます。 2番目のパラメータは単なる列名であり、文字通りに扱われるため、その大文字小文字は保持されます。 結果は、シーケンス関数に渡すために適切にフォーマットされる。

一般的な使用法は、IDまたはシリアル列のシーケンスの現在の値を読み取ることです。たとえば、次のようにします。

SELECT currval(pg_get_serial_sequence('sometable', 'id'));

pg_get_statiticsobjdef (statobj oid) → text

拡張統計オブジェクトの作成コマンドを再構築します。 (これは逆コンパイルされた再構成であり、コマンドの元のテキストではありません。)

pg_get_triggerdef (trigger oid [, pretty boolean] ) → text

トリガーの作成コマンドを再構築します。 (これは逆コンパイルされた再構成であり、コマンドの元のテキストではありません。)

pg_get_userbyid (role oid) → name

OIDが与えられたロールの名前を返します。

pg_get_viewdef (view oid [, pretty boolean] ) → text

ビューまたはマテリアライズドビューの基になるSELECTコマンドを再構築します。 (これは逆コンパイルされた再構成であり、コマンドの元のテキストではありません。)

pg_get_viewdef (view oid, wrap_column integer) → text

ビューまたはマテリアライズドビューの基になるSELECTコマンドを再構築します。 (これは逆コンパイルされた再構成であり、コマンドの元のテキストではありません。) この形式の関数では、きれいな印刷が常に有効になり、長い行がラップされて、指定された列数よりも短くなります。

pg_get_viewdef (view text [, pretty boolean] ) → text

ビューまたはマテリアライズドビューの基になるSELECTコマンドを再構築し、OIDではなくビューのテキスト名から操作します。 (これは非推奨です。代わりにOIDバリアントを使用します。)

pg_index_column_has_property (index regclass, column integer, property text) → boolean

インデックス列に名前付きプロパティがあるかどうかをテストします。 (拡張アクセスメソッドは、インデックスに追加のプロパティ名を定義できることに注意してください。) プロパティ名が不明であるか、特定のオブジェクトに適用されない場合、またはOIDまたは列番号が有効なオブジェクトを識別しない場合は、NULLが返されます。

pg_index_has_property (index regclass, property text) → boolean

インデックスに名前付きプロパティがあるかどうかをテストします。 (拡張アクセスメソッドは、インデックスに追加のプロパティ名を定義できることに注意してください。) プロパティ名が不明であるか、特定のオブジェクトに適用されない場合、またはOIDが有効なオブジェクトを識別しない場合は、NULLが返されます。

pg_indexam_has_property (am oid, property text) → boolean

インデックスアクセスメソッドに名前付きプロパティがあるかどうかをテストします。 プロパティ名が既知でないか、特定のオブジェクトに適用されない場合、またはOIDが有効なオブジェクトを識別しない場合は、NULLが返されます。

pg_options_to_table (options_array text[]) → setof record (option_name text, option_value text)

pg_classの値で表されるストレージオプションのセットを返します。reloptionsまたはpg_attributeattoptions

pg_tablespace_databases (tablespace oid) → setof oid

指定されたテーブルスペースにオブジェクトが格納されているデータベースのOIDのセットを返します。 この関数が行を返す場合、テーブルスペースは空ではなく、削除できません。 テーブルスペースに格納されている特定のオブジェクトを識別するには、pg_tablespace_databasesで識別されるデータベースに接続し、pg_classカタログを照会する必要があります。

pg_tablespace_location (tablespace oid) → text

このテーブルスペースが配置されているファイルシステムパスを返します。

pg_typeof ("any") → regtype

渡される値のデータ型のOIDを返します。 これは、トラブルシューティングやSQLクエリの動的構築に役立ちます。 この関数は、OIDエイリアス型であるregtypeを返すものとして宣言されます。これは、比較のためにOIDと同じですが、型名として表示されることを意味します。

設定例:

SELECT pg_typeof(33);
 pg_typeof
-----------
 整数

SELECT typlen FROM pg_type WHERE oid = pg_typeof(33);
 typlen
---------
 4

COLLATION FOR ("any") → text

渡された値の照合順序の名前を返します。 値は引用され、必要に応じてスキーマ修飾されます。 引数式に対して照合順序が導出されなかった場合、NULLが返されます。 引数が照合可能なデータ型でない場合、エラーが発生します。

設定例:

(説明) FROM pg_description LIMIT 1; のSELECT照合順序
 pg_collation_for
------------------
 「デフォルト」

('foo' COLLATE "de_DE") のSELECT照合;
 pg_collation_for
------------------
 "de_DE"

to_regclass (text) → regclass

テキストの関係名をそのOIDに変換します。 文字列をregclass型にキャストしても同様の結果が得られますが、名前が見つからない場合、この関数はエラーをスローするのではなくNULLを返します。 また、キャストとは異なり、これは数値OIDを入力として受け入れません。

to_regcollation (text) → regcollation

テキスト照合名をそのOIDに変換します。 文字列をregcollation型にキャストすると同様の結果が得られますが、名前が見つからない場合、この関数はエラーをスローするのではなくNULLを返します。 また、キャストとは異なり、これは数値OIDを入力として受け入れません。

to_regnamespace (text) → regnamespace

テキストスキーマ名をOIDに変換します。 文字列をregnamespace型にキャストすると、同様の結果が得られます。ただし、この関数は、名前が見つからない場合にエラーをスローするのではなく、NULLを返します。 また、キャストとは異なり、これは数値OIDを入力として受け入れません。

to_regoper (text) → regoper

テキスト演算子名をそのOIDに変換します。 文字列をregoper型にキャストすると、同様の結果が得られます。ただし、名前が見つからない場合やあいまいな場合、この関数はエラーをスローするのではなくNULLを返します。 また、キャストとは異なり、これは数値OIDを入力として受け入れません。

to_regoperator (text) → regoperator

テキスト演算子名 (パラメータタイプ付き) をOIDに変換します。 文字列をregoperator型にキャストしても同様の結果が得られますが、名前が見つからない場合、この関数はエラーをスローするのではなくNULLを返します。 また、キャストとは異なり、これは数値OIDを入力として受け入れません。

to_regproc (text) → regproc

テキスト関数またはプロシージャ名をOIDに変換します。 文字列をregproc型にキャストすると同様の結果が得られます。ただし、名前が見つからない場合やあいまいな場合、この関数はエラーをスローするのではなくNULLを返します。 また、キャストとは異なり、これは数値OIDを入力として受け入れません。

_regprocedure (text) → regprocedure

テキスト関数またはプロシージャ名 (引数型付き) をOIDに変換します。 文字列をregprocedure型にキャストしても同様の結果が得られますが、名前が見つからない場合、この関数はエラーをスローするのではなくNULLを返します。 また、キャストとは異なり、これは数値OIDを入力として受け入れません。

to_regrole (text) → regrole

テキストロール名をそのOIDに変換します。 文字列をregrole型にキャストすると同様の結果が得られますが、名前が見つからない場合、この関数はエラーをスローするのではなくNULLを返します。 また、キャストとは異なり、これは数値OIDを入力として受け入れません。

to_regtype (text) → regtype

テキストの型名をそのOIDに変換します。 文字列をregtype型にキャストすると同様の結果が得られますが、名前が見つからない場合、この関数はエラーをスローするのではなくNULLを返します。 また、キャストとは異なり、これは数値OIDを入力として受け入れません。

データベースオブジェクトを再構築 (逆コンパイル) するほとんどの関数には、オプションのprettyフラグがあり、trueの場合、結果は「pretty-printed」になります。 プリティ印刷は不要な括弧を抑制し、読みやすさのために空白を追加します。 きれいに印刷された形式はより読みやすくなりますが、デフォルトの形式はPostgreSQLの将来のバージョンで同じように解釈される可能性が高くなります。そのため、ダンプ目的できれいに印刷された出力を使用しないでください。 prettyパラメーターにfalseを渡すと、パラメーターを省略するのと同じ結果が得られます。

インデックス列のプロパティ

名前

説明

asc

順方向スキャンで列は昇順でソートされますか?

desc

順方向スキャンで列は降順にソートされますか?

nulls_first

順方向スキャンで最初に列がヌルでソートされますか?

nulls_last

順方向スキャンでは、ヌルで列をソートしますか?

orderable

列は定義されたソート順序を持っていますか?

distance_orderable

「distance」演算子、たとえばorder by col <-> 定数によって列を順番にスキャンできますか?

returnable

インデックスのみのスキャンで列の値を返すことはできますか?

search_配列

列はcol = ANY (配列) 検索をネイティブにサポートしていますか?

search_nulls

列はIS NULLおよびIS NOT NULL検索をサポートしますか?

インデックスのプロパティ

名前

説明

clusterable

CLUSTERコマンドでインデックスを使用できますか?

index_scan

インデックスはプレーン (非ビットマップ) スキャンをサポートしていますか?

bitmap_scan

インデックスはビットマップスキャンをサポートしていますか?

backwarde_scan

スキャンの途中でスキャン方向を変更できますか (具体化を必要とせずにカーソル上でFETCH BACKWARDをサポートするため)?

インデックスアクセス方法のプロパティ

名前

説明

can_order

アクセス方法は、CREATE INDEXASCDESC、および関連キーワードをサポートしていますか。

can_unique

アクセス方法は一意のインデックスをサポートしていますか?

can_multi_col

アクセス方法は複数の列を持つインデックスをサポートしていますか?

can_exclude

アクセスメソッドは除外制約をサポートしていますか?

can_include

アクセスメソッドはCREATE INDEXINCLUDE句をサポートしていますか?

以下の表は、データベースオブジェクト識別およびアドレス指定に関連する機能を列挙する。

オブジェクト情報とアドレッシング関数

pg_describe_object (classid oid, objid oid, objsubid integer) → text

カタログOID、オブジェクトOID、およびサブオブジェクトIDによって識別されるデータベースオブジェクトのテキスト記述を返します (テーブル内の列番号など。オブジェクト全体を参照する場合、サブオブジェクトIDはゼロです) 。 この説明は、人間が読めるように意図されており、サーバ構成に応じて翻訳されてもよい。 これは、pg_dependカタログで参照されているオブジェクトのIDを判断する場合に特に役立ちます。 この関数は、未定義オブジェクトに対してNULL値を返します。

pg_identify_object (classid oid, objid oid, objsubid integer) → record (type text, schema text, name text, identity text)

カタログOID、オブジェクトOID、およびサブオブジェクトIDで指定されたデータベースオブジェクトを一意に識別するのに十分な情報を含む行を返します。 この情報は、機械可読であることが意図され、決して翻訳されない。typeはデータベースオブジェクトのタイプを識別します。schemaはオブジェクトが属するスキーマ名、またはスキーマに属さないオブジェクトタイプの場合はNULLです。nameはオブジェクトの名前で、必要に応じて引用され、名前 (スキーマ名と関連する場合) がオブジェクトを一意に識別するのに十分である場合、それ以外の場合はNULLです。identityは完全なオブジェクトIDであり、正確な形式はオブジェクトの種類によって異なり、形式内の各名前はスキーマ修飾され、必要に応じて引用されます。 未定義オブジェクトはNULL値で識別されます。

pg_identify_object_as_address (classid oid, objid oid, objsubid integer) → record (type text, object_names text[], object_args text[])

カタログOID、オブジェクトOID、およびサブオブジェクトIDで指定されたデータベースオブジェクトを一意に識別するのに十分な情報を含む行を返します。 返された情報は、現在のサーバとは無関係であり、すなわち、別のサーバ内の同じ名前のオブジェクトを識別するために使用することができる。typeはデータベースオブジェクトのタイプを識別します。object_namesobject_argsは、一緒にオブジェクトへの参照を形成するテキスト配列です。 これらの3つの値をpg_get_object_addressに渡して、オブジェクトの内部アドレスを取得できます。

pg_get_object_address (type text, object_names text[], object_args text[]) → record (classid oid, objid oid, objsubid integer)

型コードとオブジェクト名および引数配列で指定されたデータベースオブジェクトを一意に識別するのに十分な情報を含む行を返します。 返される値は、pg_dependなどのシステムカタログで使用される値です。pg_describe_objectpg_identify_objectなどの他のシステム関数に渡すことができます。classidはオブジェクトを含むシステムカタログのOIDです。objidはオブジェクト自体のOID、objsubidはサブオブジェクトIDです。 この関数は、pg_identify_object_as_addressの逆関数です。 未定義オブジェクトはNULL値で識別されます。

次の表に示す関数は、以前にCOMMENTコマンドで保存されたコメントを抽出します。 指定されたパラメーターにコメントが見つからない場合は、null値が返されます。

コメント情報関数

col_description (table oid, column integer) → text

テーブルのOIDと列番号で指定されるテーブル列のコメントを返します。 (列には独自のOIDがないため、obj_descriptionはテーブル列に使用できません。)

obj_description (object oid, catalog name) → text

OIDで指定されたデータベースオブジェクトのコメントと、含まれるシステムカタログの名前を返します。 たとえば、obj_description(123456、'pg_class') は、OID 123456を持つテーブルのコメントを取得します。

obj_description (object oid) → text

OIDだけで指定されたデータベースオブジェクトのコメントを返します。 OIDが異なるシステムカタログ間で一意であるという保証がないため、これは廃止されます。したがって、間違ったコメントが返される可能性があります。

shobj_description (object oid, catalog name) → text

OIDで指定された共有データベースオブジェクトのコメントと、含まれるシステムカタログの名前を返します。 これは、共有オブジェクト (つまり、データベース、ロール、およびテーブルスペース) のコメントを取得するために使用されることを除いて、obj_descriptionとまったく同じです。 一部のシステムカタログは、各クラスター内のすべてのデータベースに対してグローバルであり、その中のオブジェクトの説明もグローバルに格納されます。

次の表に示す関数は、サーバートランザクション情報をエクスポート可能な形式で提供します。 これらの関数の主な用途は、2つのスナップショット間でコミットされたトランザクションを決定することです。

トランザクションIDとスナップショット情報関数

pg_current_xact_id () → xid8

現在のトランザクションのIDを返します。 現在のトランザクションが (データベースの更新を実行していないため) まだ1を持っていない場合、新しいトランザクションを割り当てます。

pg_current_xact_id_if_assigned () → xid8

現在のトランザクションのIDを返します。IDがまだ割り当てられていない場合はNULLを返します。 (XIDの不要な消費を避けるために、トランザクションが読み取り専用である可能性がある場合は、このバリアントを使用することをお勧めします。)

pg_xact_status (xid8) → text

最近のトランザクションのコミットステータスを報告します。 トランザクションが、システムがそのトランザクションのコミット状態を保持するのに十分に最近である場合、結果は、進行中コミット、またはアボートのうちの1つである。 トランザクションへの参照がシステム内で存続しないほど十分に古いものであり、コミットステータス情報が破棄されている場合、結果はNULLとなります。 アプリケーションは、この関数を使用して、たとえば、COMMITの進行中にアプリケーションとデータベースサーバーが切断された後にトランザクションがコミットまたは中止されたかどうかを判断できます。 準備済みトランザクションは進行中として報告されます。アプリケーションは、トランザクションIDが準備済みトランザクションに属するかどうかを判断する必要がある場合、pg_prepared_xactsをチェックする必要があります。

pg_current_snapshot () → pg_snapshot

現在進行中のトランザクションIDを示すデータ構造である現在のスナップショットを返します。

pg_snapshot_xip (pg_snapshot) → setof xid8

スナップショットに含まれる進行中のトランザクションIDのセットを返します。

pg_snapshot_xmax (pg_snapshot) → xid8

スナップショットのxmaxを返します。

pg_snapshot_xmin (pg_snapshot) → xid8

スナップショットのxminを返します。

pg_visible_in_snapshot (xid8, pg_snapshot) → boolean

指定されたトランザクションIDは、このスナップショットに従って表示されますか (つまり、スナップショットが取得される前に完了しましたか) 。 この関数は、サブトランザクションIDに正しい答えを与えません。

内部トランザクションIDタイプxidは32ビット幅で、40億トランザクションごとにラップアラウンドします。 ただし、上記の表に示す関数では、64ビットタイプのxid8を使用します。これは、インストールの有効期間中はラップアラウンドされず、必要に応じてキャストによってxidに変換できます。 データ型pg_snapshotには、特定の時点でのトランザクションIDの可視性に関する情報が格納されます。 そのコンポーネントは以下の表に記載されています。pg_snapshotのテキスト表現は :: です。 例えば、10:20:10,14,15は、xmin=10, xmax=20, xip_list=10,14,15を意味する。

スナップショットコンポーネント

名前

説明

xmin

まだアクティブであった最低トランザクションID。 xmin未満のすべてのトランザクションIDはコミットされて表示されるか、ロールバックされて無効になります。

xmax

完了した最高のトランザクションIDを1つ過ぎています。 xmax以上のすべてのトランザクションIDは、スナップショットの時点ではまだ完了しておらず、したがって不可視である。

xip_list

スナップショットの時点で進行中のトランザクション。 xmin <=< xmaxで、このリストにないトランザクションIDは、スナップショットの時点ですでに完了しているため、コミットステータスに応じて可視または無効になります。 このリストには、サブトランザクションのトランザクションIDは含まれません。

13より前のPostgreSQLのリリースではxid8型がなかったため、64ビットXIDを表すためにbigintを使用するこれらの関数のバリアントが提供され、対応するスナップショットデータ型はtxid_snapshotです。 これらの古い関数の名前にはtxidがあります。 下位互換性は引き続きサポートされていますが、将来のリリースから削除される可能性があります。

非推奨のトランザクションIDおよびスナップショット情報関数

txid_current () → bigint

pg_current_xact_id() 」をご参照ください。

tvid_current_if_assigned () → bigint

pg_current_xact_id_if_assigned() 」をご参照ください。

txid_current_snapshot () → txid_snapshot

pg_current_snapshot() 」をご参照ください。

txid_snapshot_xip (txid_snapshot) → setof bigint

pg_snapshot_xip() 」をご参照ください。

tvid_snapshot_xmax (txid_snapshot) → bigint

pg_snapshot_xmax() 」をご参照ください。

tvid_snapshot_xmin (txid_snapshot) → bigint

pg_snapshot_xmin() 」をご参照ください。

txid_visible_in_snapshot (bigint, txid_snapshot) → boolean

pg_visible_in_snapshot() 」をご参照ください。

txid_status (bigint) → text

pg_xact_status() 」をご参照ください。

次の表に示す関数は、過去のトランザクションがいつコミットされたかについての情報を提供します。 これらは、構成オプションtrack_commit_timestampが有効になっている場合にのみ有用なデータを提供し、有効になった後にコミットされたトランザクションに対してのみ提供します。

コミットされたトランザクション情報関数

pg_xact_commit_timestamp (xid) → timestamp with time zone

トランザクションのコミットタイムスタンプを返します。

pg_xact_commit_timestamp_origin (xid) → record (timestamp timestamp with time zone, roident oid)

トランザクションのコミットタイムスタンプとレプリケーション元を返します。

pg_last_committed_xact () → record (xid xid, timestamp timestamp with time zone, roident oid)

最後にコミットされたトランザクションのトランザクションID、コミットタイムスタンプ、およびレプリケーション元を返します。

次の表に示す機能は、カタログのバージョンなど、initdb時に初期化された情報を印刷します。 また、先読みログとチェックポイント処理に関する情報も表示されます。 この情報はクラスタ全体であり、1つのデータベースに固有のものではありません。 これらの関数は、pg_controldataアプリケーションと同じソースから、ほとんどの情報を提供します。

制御データ関数

pg_control_checkpoint () → レコード

現在のチェックポイント状態に関する情報を返します。

pg_control_system () → レコード

現在の制御ファイルの状態に関する情報を返します。

pg_control_init () → レコード

クラスターの初期化状態に関する情報を返します。

pg_control_recovery () → レコード

リカバリ状態に関する情報を返します。

pg_control_checkpoint出力列

列名

データ型

checkpoint_lsn

pg_lsn

redo_lsn

pg_lsn

redo_wal_ファイル

テキスト

timeline_id

整数

prev_timeline_id

整数

full_page_writes

ブール値

next_xid

テキスト

next_oid

oid

next_multixact_id

xid

next_multi_オフセット

xid

最も古い_xid

xid

oldest_xid_dbid

oid

oldest_active_xid

xid

oldest_multi_xid

xid

oldest_multi_dbid

oid

oldest_commit_ts_xid

xid

newest_commit_ts_xid

xid

checkpoint_time

タイムスタンプとタイムゾーン

pg_control_system出力列

列名

データ型

pg_control_version

整数

catalog_version_no

整数

system_identifier

ビギント

pg_control_last_修正済み

タイムスタンプとタイムゾーン

pg_control_init出力列

列名

データ型

max_data_alignment

整数

database_block_size

整数

blocks_per_segment

整数

wal_block_サイズ

整数

bytes_per_wal_セグメント

整数

max_identifier_length

整数

max_index_列

整数

max_toast_chunk_サイズ

整数

large_object_chunk_サイズ

整数

float8_pass_by_value

ブール値

data_page_checksum_version

整数

pg_control_recovery出力列

列名

データ型

min_recovery_end_lsn

pg_lsn

min_recovery_end_タイムライン

整数

backup_start_lsn

pg_lsn

backup_end_lsn

pg_lsn

end_of_backup_record_必須

ブール値