Internal system functions

目次

Internal system functions#

以下は内部システム機能です。多くは、さまざまなビューを作成するときに使用されます。ファンクションを直接使用せず、代わりにそれらが提供するビューを使用することをお勧めします。

一般的な内部ファンクション#

bdr.bdr_get_commit_decions#

共有メモリの状態を検査する便利なルーチン。

概要#

bdr.bdr_get_commit_decisions(dbid OID,
            origin_node_id OID,
            origin_xid xid,
            local_xid xid,
            decision "char",
            decision_ts timestamptz,
            is_camo boolean)

bdr.bdr_track_commit_Decision#

トランザクションのコミットステータスを共有メモリハッシュテーブルに保存します。このファンクションは、アップグレードスクリプトによって使用され、 bdr.commit_decionsカタログに保存されたコミット決定を共有メモリハッシュテーブルに転送します。トランザクションのコミットステータスはWALに記録されるため、WALからリロードできます。

概要#

bdr.bdr_track_commit_decision(OID, xid, xid, "char", timestamptz, boolean);

bdr.consensus_kv_fetch#

一貫したKVストアからJSON形式で値を取得します。

概要#

bdr.consensus_kv_fetch(IN key text) RETURNS jsonb

パラメーター#

Parameter

Description

key

取得する任意のキー。

注#

このファンクションは内部ファンクションであり、主にHARPによって使用されます。

警告

ユーザアプリケーションではこのファンクションを使用しないでください。

bdr.consensus_kv_store#

一貫したKVストアに値を保存します。

値の有効期限のタイムスタンプを返します。この機能はttl に依存しています。 ttl がNULL の場合、このファンクションはinfinity を結果ます。値が削除された場合、-infinity を返します。

概要#

bdr.consensus_kv_store(key text, value jsonb,
        prev_value jsonb DEFAULT NULL, ttl int DEFAULT NULL)

パラメーター#

Parameter

Description

key

挿入、更新、または削除する任意の一意のキー。

value

保存するJSON値。 NULLの場合、既存のレコードは削除されます。

prev_value

設定されている場合、書き込み操作は、現在の値が`prev_value`と等しい場合にのみ実行されます。

ttl

新しい値の有効期間ミリ秒単位。

注#

これは内部ファンクションであり、主にHARPによって使用されます。

警告

ユーザアプリケーションではこの機能を使用しないでください。

bdr.decode_message_payload#

コンセンサスメッセージのペイロードをより人間が読みやすい出力にデコードするPGDメッセージペイロードファンクション。主にbdr.global_consensus_journal_details デバッグビューによって使用されます。

bdr.decode_message_response_payload#

コンセンサスメッセージへの応答のペイロードをより人間が読みやすい出力にデコードするPGDメッセージペイロードファンクション。主にbdr.global_consensus_journal_details デバッグビューによって使用されます。

bdr.difference_fix_origin_create#

引数として渡された指定された名前を使用して、レプリケーションオリジンを作成しますが、 bdr_ 接頭辞を追加します。オリジンの内部IDを結果ます。このファンクションは、pg_replication_origin_create() と同じ機能がありますが、このファンクションはpostgresスーパーユーザー権限ではなくbdr_superuserを必要とする点を除きます。

bdr.difference_fix_session_reset#

現在のセッションをオリジンから再生しないものとしてマークし、本質的にbdr.difference_fix_session_setup() のエフェクトをリセットします。 voidを返します。このファンクションは、pg_replication_origin_session_reset() と同じ機能がありますが、このファンクションはpostgresスーパーユーザー権限ではなくbdr_superuserを必要とする点を除きます。

概要#

bdr.difference_fix_session_reset()

bdr.difference_fix_session_setup#

現在のセッションを現在のオリジンから再生するものとしてマークします。ファンクションは、事前に作成されたbdr_local_only_origin ローカルレプリケーションオリジンをセッションに暗黙的に使用します。これにより、再生の進行状況を報告でき、voidを返します。このファンクションは、pg_replication_origin_session_setup() と同じ機能がありますが、このファンクションはpostgresスーパーユーザー権限ではなくbdr_superuserを必要とする点が異なります。ファンクションの以前の形式bdr.difference_fix_session_setup(text) は非推奨であり、将来のリリースでは削除される予定です。

概要#

bdr.difference_fix_session_setup()

bdr.difference_fix_xact_set_avoid_conflict#

現在のトランザクションを、LSN ’0/0’およびタイムスタンプ’2000-01-01’でコミットしたトランザクションを再生するものとしてマークします。このファンクションは、pg_replication_origin_xact_setup('0/0', '2000-01-01') と同じ機能がありますが、このファンクションはpostgresスーパーユーザー権限ではなくbdr_superuserを必要とする点を除きます。

概要#

bdr.difference_fix_xact_set_avoid_conflict()

bdr.drop_node#

ノードのメタデータを削除します。

ノードがPARTED になると、そのメタデータはクラスターのノードに存在したままになります。たとえば、ノードがドロップされるまで、ノードはPARTED としてマークされ、bdr.node_sumary 結果に残ります。

bdr.drop_node('some node', force := true) の呼び出しは、分離中にノードがスタックした場合に必要かつ適切です。そのノードにまだ同期する必要があるデータがある場合、ドロップされるノードからのデータの同期をスキップすることに注意してください。ノードスタックパーティングが既に再イメージ化または削除されている場合、それに対してbdr.drop_node を呼び出して害はありません。これは、クラスター内のすべてのノードでこのスタックしたノードに対して呼び出す必要があることに注意して、ノードがドロップされたという一貫したビューを持つようにします。

このファンクションは、特定のノードのメタデータをローカルデータベースから削除します。ノードは次のいずれかです。

  • ローカルノード。この場合、リモートノードに関する情報を含むすべてのノードのメタデータを削除します。

  • リモートノード。その場合、その特定のノードのメタデータのみを削除します。

この内部機能の使用は次の場合に制限されます。

  • EDBテクニカルサポートから指示された場合。

  • ドキュメントで特に指示されている場所。

bdr.part_node を使用して、PGDグループからノードを削除します。このファンクションは、ノードをPARTED 状態に設定し、ノード名の再利用を有効にします。

bdr.drop_node(node_name text, cascade boolean DEFAULT false, force boolean DEFAULT false)

パラメーター#

Parameter

Description

node_name

既存のノードの名前。

cascade

非推奨。将来のリリースで削除される予定です。

force

不一致を引き起こす可能性のある危険にもかかわらず、すべてのサニティチェックを回避し、指定されたPGDノードのすべてのメタデータの削除を強制します。テクニカルサポートのみが、分離に関連する緊急の場合に強制ノードドロップを使用します。

注#

このファンクションを実行する前に、bdr.part_node() を使用してノードを分割します。

このファンクションは、特定のノードのメタデータをローカルデータベースから削除します。ノードはローカルノードになることができ、その場合、リモートノードに関する情報を含むすべてのノードのメタデータが削除されます。または、リモートノードの場合、その特定のノードのメタデータのみが削除されます。

注釈

各ノードには、スノーフレークIDおよびtimeshardシーケンスで使用する一意のシーケンス番号が割り当てられているため、一度に最大1024のノードレコードACTIVEとPARTEDの両方を持つことができます。 PARTEDノードは自動的にクリーンアップされません。これが問題になる場合は、この機能を使用してこれらのレコードを削除できます。

bdr.get_global_locks#

ローカルノードで保持されているグローバルロックに関する情報を表示します。

bdr.global_locks ビューを実装して、ロックのより詳細な概要を提供するために使用されます。

bdr.get_node_conflict_resolvers#

ローカルノード上のすべての競合リゾルバーのテキスト文字列を表示します。

bdr.get_slot_flush_timestamp#

特定のレプリケーションスロットの最後のフラッシュ位置確認のタイムスタンプを取得します。

bdr.node_slots ビューを実装するために内部で使用されます。

bdr.internal_alter_sequence_set_kind#

さまざまなファンクション呼び出しのレプリケーションのために内部で使用されていたファンクション。 PGDの現在のバージョンでは使用されなくなりました。ローリングアップグレード中の下位互換性のためのみに存在します。

bdr.internal_replication_set_add_table#

さまざまなファンクション呼び出しのレプリケーションのために内部で使用されていたファンクション。 PGDの現在のバージョンでは使用されなくなりました。ローリングアップグレード中の下位互換性のためのみに存在します。

bdr.internal_replication_set_remove_table#

さまざまなファンクション呼び出しのレプリケーションのために内部で使用されていたファンクション。 PGDの現在のバージョンでは使用されなくなりました。ローリングアップグレード中の下位互換性のためのみに存在します。

bdr.internal_submit_join_request#

新しいノードに参加するためのコンセンサス要求を送信します。

PGDグループの再構成の内部メカニズムに必要です。

bdr.isolation_test_session_is_blocked#

グローバルロック上のブロックのチェックを追加して、元のpg_isolation_test_session_is_blocked を拡張および実際に呼び出すヘルパーファンクション。

分離/同時実行テストに使用されます。

bdr.local_node_info#

PGDグループの再構成の内部メカニズムに必要なローカルノードの情報を表示します。

ビューbdr.local_node_summary は、ユーザーの使用に役立つ同様の情報を提供します。

bdr.msgb_connect#

別のノードの接続プーラーに接続します。コンセンサスプロトコルによって使用されます。

bdr.msgb_deliver_message#

メッセージを別のノードの接続プーラーに送信します。コンセンサスプロトコルによって使用されます。

bdr.node_catchup_state_name#

nameのキャッチアップ状態コードを変換します。

概要#

bdr.node_catchup_state_name(catchup_state oid);

パラメーター#

Parameter

Description

catchup_state

キャッチアップ状態のOIDコード。

bdr.node_kind_name#

ノードの種類の人にわかりやすい名前データ|スタンバイ|ウィットネス|サブスクライバーのみを返します。

bdr.peer_state_name#

ノード状態node_state をテキスト表現に変換します。主にbdr.node_summary ビューを実装するために使用されます。

bdr.pg_xact_origin#

指定されたトランザクションのオリジンIDを返します。

概要#

bdr.pg_xact_origin(xmin xid)

パラメーター#

Parameter

Description

xid

オリジンが返されるトランザクションID。

bdr.reconcile_2pc_status_name#

数値調整ステータスコードを、対応するテキスト表現に変換します。このファンクションは、主に bdr.reconcile_2pc_requests_summary ビューにデータを設定するために使用されます。

概要#

bdr.reconcile_2pc_status_name(reconcile_status oid) RETURNS text

パラメーター#

Parameter

Description

reconcile_status

変換する特定のリコンシリエーションステータスを表すOIDコード。

bdr.request_replay_progress_update#

’リプレイ進行状況の更新’Raftメッセージの即時書き込みを要求します。主にテスト目的で使用されますが、コンセンサスメカニズムが機能しているかどうかをテストするために使用することもできます。

bdr.reset_relation_stats#

bdr.stat_relation によって表示される、リレーション統計をリセットした後、ブール結果を返します。

bdr.reset_subscription_stats#

bdr.stat_subscription によって表示される、サブスクリプションによって作成された統計をリセットした後、ブール結果を返します。

bdr.resynchronize_table_from_node#

リモートノードから関係を再同期します。

概要#

bdr.resynchronize_table_from_node(node_name name, relation regclass)

パラメーター#

Parameter

Description

node_name

リレーションデータをコピーまたは再同期するノード。

relation

リモートノードからのコピーに関する関係。

注#

このファンクションは、リレーションのグローバルDMLロックを取得し、リレーションをローカルで切り捨て、リモートノードからデータをコピーします。

リレーションは、同じ名前と定義を持つ両方のノードに存在する必要があります。

以下がサポートされています。

  • 同一のパーティション定義を使用したパーティションテーブルの再同期

  • パーティション化されたテーブルと非パーティションテーブルへの再同期、およびその逆の再同期

  • 外部キー制約を一時的に削除および再作成することによる参照先テーブルの再同期

参照されるテーブルでファンクションを実行した後、参照される列データが参照列値と一致しない場合、ファンクションはエラーをスローします。参照テーブルデータを再同期した後、ファンクションを再実行します。

さらに、リモートノードからデータをコピーした後、生成された列の値をローカルに計算することにより、生成された列とテーブルの再同期をサポートします。

現在、 row_filtersはこのファンクションによって無視されます。

bdr.resynchronize_table_from_node ファンクションは、テーブルの所有者がbdr_superuser権限を持っている場合にのみ実行できます。

bdr.seq_currval#

グローバルシーケンス操作の内部実装の一部。

gallocまたはsnowflakeidシーケンスでcurrval() が呼び出されるときに、自動的に呼び出されます。

bdr.seq_lastval#

グローバルシーケンス操作の内部実装の一部。

gallocまたはsnowflakeidシーケンスでlastval() が呼び出されるときに、自動的に呼び出されます。

bdr.seq_nextval#

グローバルシーケンスインクリメントの内部実装の一部。

gallocまたはsnowflakeidシーケンスでnextval() が呼び出されるときに自動的に呼び出されます

bdr.show_subscription_status#

サブスクリプションのステータスに関する情報を取得します。主にbdr.subscription_summary ビューを実装するために使用されます。

bdr.show_workers#

bdrワーカーに関連する情報。

概要#

bdr.show_workers(
    worker_pid int,
    worker_role int,
    worker_role_name text,
    worker_subid oid)

bdr.show_writers#

bdr.writers ビューで使用されるファンクション。

bdr.sync_status_name#

同期状態コードをテキスト表現に変換します。主に bdr.sync_node_requests_summary を実装するために使用されます

ビュー。

概要#

bdr.sync_status_name(sync_state oid)

パラメーター#

Parameter

Description

sync_state

同期状態のOIDコード。

タスクマネージャー機能#

bdr.taskmgr_set_leader#

指定されたnode をタスクマネージャーリーダーノードになるように要求します。リーダーノードは、新しいタスクを作成します。現在、自動パーティションのみがこの機能を利用します。監視ノード、ロジカルスタンバイ、またはサブスクライバ専用ノードはリーダーになることはできません。このような要求はエラーで失敗します。

概要#

bdr.taskmgr_set_leader(node name, wait_for_completion boolean DEFAULT true);

bdr.taskmgr_get_last_completed_workitem#

クラスター内のすべてのノードで正常に完了した最後の作業項目のid を返します。

概要#

bdr.taskmgr_get_last_completed_workitem();

bdr.taskmgr_work_queue_check_status#

タスクを生成および終了するジョブを実行しているバックグラウンドワーカーのステータスを確認できます。

ステータスは次のビューから確認できます。

  • bdr.taskmgr_work_queue_local_status

  • bdr.taskmgr_work_queue_global_status

概要#

bdr.taskmgr_work_queue_check_status(workid bigint
                           local boolean DEFAULT false);

パラメーター#

Parameter

Description

workid

タスクのキー。

local

ローカルステータスのみを確認します。

注#

Taskmgrワーカーは、 bdr.autopartition ファンクションが初めて呼び出される前でも、常にバックグラウンドで実行されています。無効なworkid が使用される場合、ファンクションはunknown を結果ます。 In-progress は一般的なステータスです。

bdr.get_min_required_replication_slots#

max_replication_slots に必要な最小値を返すので、使用可能なスロットを使い果たさずにノード参加を完了できます。この推定では、結合中に定常状態のサブスクリプションと一時的に共存する一時的なキャッチアップサブスクリプション用のヘッドルームを予約します。 max_active_replication_origins がmax_replication_slots のエイリアスである18より前のPostgresバージョンでは、戻り値はオリジン要件もカバーします。 PGD-CLIはこのファンクションを内部で使用しますが、クラスターのサイズを変更するときに直接実行することもできます。

bdr.get_min_required_active_replication_origins#

Postgres 18で導入された構成パラメーターmax_active_replication_origins に必要な最小値を返します。 max_active_replication_origins がmax_replication_slots のエイリアスである以前のPostgresバージョンでは、この値は情報のみです。 PGD-CLIはこのファンクションを内部で使用しますが、クラスターのサイズを変更するときに直接実行することもできます。

bdr.get_min_required_worker_processes#

PGD-CLIによって使用される内部ファンクション。

bdr.stat_last_reset_time#

特定の統計カテゴリの最新のリセットタイムスタンプを取得するために使用される内部ファンクション。標準のモニタリングの場合、 bdr.stat_reset をサポートする各統計には、 bdr.stat_commit_scope ビューのstats_reset 列が含まれ、ユーザーが使用しやすい形式でこの情報を提供します。

bdr.stat_get_activity#

ビューbdr.stat_activity の基になる内部ファンクション。直接使用しないでください。代わりに bdr.stat_activity ビューを使用します。

bdr.stat_get_commit_scope#

コミットスコープの統計を取得する内部ファンクション。標準のモニタリングとトラブルシューティングには、 bdr.stat_commit_scope ビューを使用します。このビューは、同じ情報をよりアクセスしやすい形式で提供します。

bdr.stat_get_commit_scope_proc_wait#

特定のコミットスコープに関連付けられているプロセスの待機状態統計を取得するために使用される内部ファンクション。標準のモニタリングとトラブルシューティングには、 bdr.stat_commit_scope ビューを使用します。これは、このデータのよりアクセスしやすい表現を提供します。

bdr.stat_get_reconcile_commit_scope#

コミットスコープのリコンシリエーション統計を取得するために使用される内部ファンクション。標準のモニタリングとトラブルシューティングには、 bdr.stat_reconcile_commit_scope ビューを使用します。このビューは、このデータのよりアクセスしやすい使いやすい表現を提供します。

bdr.worker_role_id_name#

ビューbdr.worker_tasks を生成するときに使用される内部ヘルパーファンクション。直接使用しないでください。代わりに bdr.worker_tasks ビューを使用します。

bdr.lag_history#

ビューbdr.node_replication_rates を生成するときに使用される内部ファンクション。直接使用しないでください。代わりに bdr.node_replication_rates ビューを使用します。

bdr.get_raft_instance_by_nodegroup#

ビューbdr.group_raft_details を生成するときに使用される内部ファンクション。直接使用しないでください。代わりに bdr.group_raft_details ビューを使用します。

bdr.monitor_camo_on_all_nodes#

ビューbdr.group_camo_details を生成するときに使用される内部ファンクション。直接使用しないでください。代わりに bdr.group_camo_details ビューを使用します。

bdr.monitor_raft_details_on_all_nodes#

ビューbdr.group_raft_details を生成するときに使用される内部ファンクション。直接使用しないでください。代わりに bdr.group_raft_details ビューを使用します。

bdr.monitor_replslots_details_on_all_nodes#

ビューbdr.group_replslots_details を生成するときに使用される内部ファンクション。直接使用しないでください。代わりに bdr.group_replslots_details ビューを使用します。

bdr.monitor_subscription_details_on_all_nodes#

ビューbdr.group_subscription_summary を生成するときに使用される内部ファンクション。直接使用しないでください。代わりに bdr.group_subscription_summary ビューを使用します。

bdr.monitor_version_details_on_all_nodes#

ビューbdr.group_versions_details を生成するときに使用される内部ファンクション。直接使用しないでください。代わりに bdr.group_versions_details ビューを使用します。

bdr.node_group_member_info#

ビューbdr.group_raft_details を生成するときに使用される内部ファンクション。直接使用しないでください。代わりに bdr.group_raft_details ビューを使用します。