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.node_pre_commitカタログに保存されたコミット決定を共有メモリハッシュテーブルに転送するために使用されます。これも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

パラメーター#

  • 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)

パラメーター#

  • 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’でコミットしたトランザクションを再生するものとしてマークします。このファンクションは、 postgresスーパーユーザー権限ではなくbdr_superuser権限を必要とすることを除き、 pg_replication_origin_xact_setup('0/0', '2000-01-01') と同じ機能があります。

概要#

bdr.difference_fix_xact_set_avoid_conflict()

bdr.drop_node#

ノードをドロップします。

警告

このファンクションは、通常の使用を目的としたものではありません。テクニカルサポートから指示された場合にのみ実行してください。

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

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

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

概要#

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

パラメーター#

  • node_name —既存のノードの名前。

  • cascade —非推奨。将来的に削除される予定です。

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

注#

これを実行する前に、bdr.part_node() を使用してノードを分割します。

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

注釈

各ノードには、スノーフレークIDおよびtimeshardシーケンスで使用する一意のシーケンス番号が割り当てられているため、 PGDは一度に最大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内部ファンクション。

PGDの現在のバージョンでは使用されなくなりました。ローリングアップグレード中の下位互換性のためのみに存在します。

bdr.internal_replication_set_add_table#

さまざまなファンクション呼び出しのレプリケーションに内部で使用されるPGD内部ファンクション。

PGDの現在のバージョンでは使用されなくなりました。ローリングアップグレード中の下位互換性のためのみに存在します。

bdr.internal_replication_set_remove_table#

さまざまなファンクション呼び出しのレプリケーションに内部で使用されるPGD内部ファンクション。

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);

パラメーター#

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

bdr.node_kind_name#

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

bdr.peer_state_name#

このファンクションは、ノード状態node_state をテキスト表現に変換し、主にbdr.node_summary ビューを実装するために使用されます。

bdr.pg_xact_origin#

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

概要#

bdr.pg_xact_origin(xmin xid)

パラメーター#

  • xid —オリジンが返されるトランザクションID、

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)

パラメーター#

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

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

注#

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

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

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

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

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

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

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

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

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

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

bdr.seq_nextval#

シーケンスインクリメントの内部実装。

PGDグローバルシーケンス と対話するクエリーで標準のnextval の代わりにこのファンクションを使用します。

注#

以下も内部PGDシーケンス操作ファンクションです。 bdr.seq_currval およびbdr.seq_lastval は自動的に使用されます。

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.taskmgr_set_leader#

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

概要#

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);

パラメーター#

  • workid —タスクのキー。

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

注#

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