Internal system functions
=========================

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

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

bdr.bdr_get_commit_decions
^^^^^^^^^^^^^^^^^^^^^^^^^^

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

概要
^^^^

.. code:: sql

   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からリロードできます。

.. _概要-1:

概要
^^^^

.. code:: sql

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

bdr.consensus_kv_fetch
^^^^^^^^^^^^^^^^^^^^^^

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

.. _概要-2:

概要
^^^^

.. code:: sql

   bdr.consensus_kv_fetch(IN key text) RETURNS jsonb

パラメーター
^^^^^^^^^^^^

-  ``key`` —取得する任意のキー。

注
^^

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

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

bdr.consensus_kv_store
^^^^^^^^^^^^^^^^^^^^^^

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

値の有効期限のタイムスタンプを返します。これは\ ``ttl`` に依存します。
``ttl`` が\ ``NULL`` の場合、これは\ ``infinity``
を結果ます。値が削除された場合、\ ``-infinity`` を返します。

.. _概要-3:

概要
^^^^

.. code:: sql

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

.. _パラメーター-1:

パラメーター
^^^^^^^^^^^^

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

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

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

-  ``ttl`` —新しい値の生存時間ミリ秒単位。

.. _注-1:

注
^^

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

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

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を必要とする点を除きます。

.. _概要-4:

概要
^^^^

.. code:: sql

   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)``
は非推奨であり、今後のリリースで削除される予定です。

.. _概要-5:

概要
^^^^

.. code:: sql

   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')``
と同じ機能があります。

.. _概要-6:

概要
^^^^

.. code:: sql

   bdr.difference_fix_xact_set_avoid_conflict()

bdr.drop_node
^^^^^^^^^^^^^

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

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

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

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

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

.. _概要-7:

概要
^^^^

.. code:: sql

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

.. _パラメーター-2:

パラメーター
^^^^^^^^^^^^

-  ``node_name`` —既存のノードの名前。

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

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

.. _注-2:

注
^^

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

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

..  Note::
   各ノードには、スノーフレーク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のキャッチアップ状態コードを変換する

.. _概要-8:

概要
^^^^

.. code:: sql

   bdr.node_catchup_state_name(catchup_state oid);

.. _パラメーター-3:

パラメーター
^^^^^^^^^^^^

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

bdr.node_kind_name
^^^^^^^^^^^^^^^^^^

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

bdr.peer_state_name
^^^^^^^^^^^^^^^^^^^

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

bdr.pg_xact_origin
^^^^^^^^^^^^^^^^^^

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

.. _概要-9:

概要
^^^^

.. code:: sql

   bdr.pg_xact_origin(xmin xid)

.. _パラメーター-4:

パラメーター
^^^^^^^^^^^^

-  ``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
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

.. _概要-10:

概要
^^^^

.. code:: sql

   bdr.resynchronize_table_from_node(node_name name, relation regclass)

.. _パラメーター-5:

パラメーター
^^^^^^^^^^^^

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

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

.. _注-3:

注
^^

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

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

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

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

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

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

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

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

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

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

bdr.seq_nextval
^^^^^^^^^^^^^^^

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

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

.. _注-4:

注
^^

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

bdr.show_subscription_status
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

bdr.show_workers
^^^^^^^^^^^^^^^^

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

.. _概要-11:

概要
^^^^

.. code:: sql

   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で失敗します。

.. _概要-12:

概要
^^^^

.. code:: sql

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

bdr.taskmgr_get_last_completed_workitem
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

.. _概要-13:

概要
^^^^

.. code:: sql

   bdr.taskmgr_get_last_completed_workitem();

bdr.taskmgr_work_queue_check_status
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

ステータスは、次のビューで確認できます。\ ``bdr.taskmgr_work_queue_local_status``
``bdr.taskmgr_work_queue_global_status``

.. _概要-14:

概要
^^^^

.. code:: sql

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

.. _パラメーター-6:

パラメーター
^^^^^^^^^^^^

-  ``workid`` —タスクのキー。

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

.. _注-5:

注
^^

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