Global sequence management interfaces
=====================================

PGDは、標準のPostgreSQLシーケンスとPGDグローバルシーケンスの間で変換するためのインターフェイスを提供します。

次のファンクションは\ ``DDL`` であると考えられるため、
DDLレプリケーションとグローバルロックが適用されます。

シーケンスファンクション
------------------------

bdr.alter_sequence_set_kind
^^^^^^^^^^^^^^^^^^^^^^^^^^^

シーケンスの所有者がシーケンスの種類を設定できます。設定すると、\ ``seqkind``
は\ ``bdr.sequences``
ビューを介してのみ可視されます。他のすべての方法では、シーケンスは通常のシーケンスとして表示されます。

PGDはこのファンクションを\ ``DDL``
として扱うため、現在アクティブな場合、
DDLレプリケーションとグローバルロックが適用されます。 :ref:`Running DDL safely <Running DDL safely>` 
を参照してください。

概要
^^^^

.. code:: sql

   bdr.alter_sequence_set_kind(seqoid regclass, seqkind text, start bigint DEFAULT NULL)

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

- ``seqoid`` — 変更するシーケンスの名前またはOid。

- ``seqkind`` — 標準のPostgreSQLシーケンスの場合は\ ``local``
  、グローバルに一意のPGDシーケンスの場合は\ ``snowflakeid``
  または\ ``galloc``
  、または古いグローバル一意シーケンスの場合は\ ``timeshard`` 。

- ``start`` —
  gallocおよびローカルシーケンスの新しい開始点を指定できます。

注
^^

シーケンス種類を\ ``galloc``
に変更すると、そのシーケンスの最初に割り当てられたレンジは、開始点としてシーケンスstart値を使用します。
``galloc``
に変更される前にシーケンスで使用された既存の値が存在する場合、次のコマンドを使用して、新しく生成された値が既存の値と競合しないように、開始ポイントを移動することをお勧めします。

.. code:: sql

   ALTER SEQUENCE seq_name START starting_value RESTART

このファンクションは、 ``DDL``
ステートメントと同じレプリケーションメカニズムを使用します。これは、レプリケーションが :ref:`DDL filters <Replication sets>` の影響を受けることを意味します

構成。

ファンクションはグローバル\ ``DDL``
ロックを取得します。また、シーケンスをローカルにロックします。

このファンクションはトランザクションです。トランザクションの\ ``ROLLBACK``
を使用してエフェクトをロールバックできます。変更は現在のトランザクションに表示されます。

``bdr.backwards_compatibility``
が30618以下に設定されていない限り、シーケンスの所有者のみが\ ``bdr.alter_sequence_set_kind``
ファンクションを実行できます。

bdr.extract_timestamp_from_snowflakeid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

このファンクションは、\ ``snowflakeid``
シーケンスのタイムスタンプコンポーネントを抽出します。戻り値の型は\ ``timestamptz``
です。

.. _概要-1:

概要
^^^^

.. code:: sql

   bdr.extract_timestamp_from_snowflakeid(snowflakeid bigint)

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

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

- ``snowflakeid`` — ``snowflakeid`` シーケンスの値。

.. _注-1:

注
^^

このファンクションは、ローカルノードでのみ実行されます。

bdr.extract_nodeid_from_snowflakeid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

このファンクションは、\ ``snowflakeid``
シーケンスのnodeidコンポーネントを抽出します。

.. _概要-2:

概要
^^^^

.. code:: sql

   bdr.extract_nodeid_from_snowflakeid(snowflakeid bigint)

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

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

- ``snowflakeid`` — ``snowflakeid`` シーケンスの値。

.. _注-2:

注
^^

このファンクションは、ローカルノードでのみ実行されます。

bdr.extract_localseqid_from_snowflakeid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

このファンクションは、\ ``snowflakeid``
シーケンスのローカルシーケンス値コンポーネントを抽出します。

.. _概要-3:

概要
^^^^

.. code:: sql

   bdr.extract_localseqid_from_snowflakeid(snowflakeid bigint)

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

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

- ``snowflakeid`` — ``snowflakeid`` シーケンスの値。

.. _注-3:

注
^^

このファンクションは、ローカルノードでのみ実行されます。

bdr.timestamp_to_snowflakeid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

このファンクションは、タイムスタンプ値をダミーの\ ``snowflakeid``
シーケンス値に変換します。

これは、 ``snowflakeid``
列および特定のタイムスタンプのインデックス付き検索または値の比較を行う場合に役立ちます。

たとえば、 ``snowflakeid`` シーケンスを使用している列\ ``id``
を持つテーブル\ ``foo``
があると、次のように昨日の午前0時からの変更数を取得できます。

::

   SELECT count(1) FROM foo WHERE id > bdr.timestamp_to_snowflakeid(yesterday)

この方法で定式化された照会は、列\ ``id``
のインデックススキャンを使用します。

.. _概要-4:

概要
^^^^

.. code:: sql

   bdr.timestamp_to_snowflakeid(ts timestamptz)

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

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

- ``ts`` — ``snowflakeid`` シーケンス生成に使用するタイムスタンプ。

.. _注-4:

注
^^

このファンクションは、ローカルノードでのみ実行されます。

bdr.extract_timestamp_from_timeshard
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

このファンクションは、\ ``timeshard``
シーケンスのタイムスタンプコンポーネントを抽出します。戻り値の型は\ ``timestamptz``
です。

.. _概要-5:

概要
^^^^

.. code:: sql

   bdr.extract_timestamp_from_timeshard(timeshard_seq bigint)

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

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

- ``timeshard_seq`` — ``timeshard`` シーケンスの値。

.. _注-5:

注
^^

このファンクションは、ローカルノードでのみ実行されます。

bdr.extract_nodeid_from_timeshard
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

このファンクションは、\ ``timeshard``
シーケンスのnodeidコンポーネントを抽出します。

.. _概要-6:

概要
^^^^

.. code:: sql

   bdr.extract_nodeid_from_timeshard(timeshard_seq bigint)

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

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

- ``timeshard_seq`` — ``timeshard`` シーケンスの値。

.. _注-6:

注
^^

このファンクションは、ローカルノードでのみ実行されます。

bdr.extract_localseqid_from_timeshard
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

このファンクションは、\ ``timeshard``
シーケンスのローカルシーケンス値コンポーネントを抽出します。

.. _概要-7:

概要
^^^^

.. code:: sql

   bdr.extract_localseqid_from_timeshard(timeshard_seq bigint)

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

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

- ``timeshard_seq`` — ``timeshard`` シーケンスの値。

.. _注-7:

注
^^

このファンクションは、ローカルノードでのみ実行されます。

bdr.timestamp_to_timeshard
^^^^^^^^^^^^^^^^^^^^^^^^^^

このファンクションは、タイムスタンプ値をダミーの\ ``timeshard``
シーケンス値に変換します。

これは、 ``timeshard``
列および特定のタイムスタンプのインデックス付き検索または値の比較を行う場合に役立ちます。

たとえば、 ``timeshard`` シーケンスを使用している列\ ``id``
を持つテーブル\ ``foo``
があると、次のように昨日の午前0時からの変更数を取得できます。

::

   SELECT count(1) FROM foo WHERE id > bdr.timestamp_to_timeshard(yesterday)

この方法で定式化された照会は、列\ ``id``
のインデックススキャンを使用します。

.. _概要-8:

概要
^^^^

.. code:: sql

   bdr.timestamp_to_timeshard(ts timestamptz)

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

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

- ``ts`` — ``timeshard`` シーケンス生成に使用するタイムスタンプ。

.. _注-8:

注
^^

このファンクションは、ローカルノードでのみ実行されます。

bdr.galloc_chunk_info
^^^^^^^^^^^^^^^^^^^^^

このファンクションは、ローカルノードでgallocシーケンスに割り当てられたレンジを取得します。

シーケンスがローカルノードでまだアクセスされていない場合、空の結果セットが返されます。

指定されたシーケンス名がgallocシーケンスでない場合、 ERRORが発生します。

.. _概要-9:

概要
^^^^

.. code:: sql

   bdr.galloc_chunk_info(seqname regclass)

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

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

- ``seqname`` - 照会するgallocシーケンスの名前

.. _注-9:

注
^^

このファンクションは、ローカルノードでのみ実行されます。

KSUUID v2ファンクション
-----------------------

``KSUUID`` v2データ、K-Sortable
UUIDデータを操作するためのファンクション。 :ref:`KSUUID in the sequences documentation <Sequences>` 
も参照してください。

bdr.gen_ksuuid_v2
^^^^^^^^^^^^^^^^^

このファンクションは、引数として渡されたタイムスタンプの値、またはNULLが渡された場合は現在のシステム時間を使用して、新しい\ ``KSUUID``
v2値を生成します。システム時間を使用してKSUUIDを自動的に生成する場合は、NULL引数を渡します。

戻り値の型はUUIDです。

.. _概要-10:

概要
^^^^

.. code:: sql

   bdr.gen_ksuuid_v2(timestamptz)

.. _注-10:

注
^^

このファンクションは、ローカルノードでのみ実行されます。

bdr.ksuuid_v2_cmp
^^^^^^^^^^^^^^^^^

このファンクションは、\ ``KSUUID`` v2値を比較します。

最初の値の方が新しい場合は1、2番目の値が小さい場合は-1、または等しい場合は0を返します。

.. _概要-11:

概要
^^^^

.. code:: sql

   bdr.ksuuid_v2_cmp(uuid, uuid)

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

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

- ``UUID`` — ``KSUUID`` 比較するv2。

.. _注-11:

注
^^

このファンクションは、ローカルノードでのみ実行されます。

bdr.extract_timestamp_from_ksuuid_v2
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

このファンクションは、\ ``KSUUID``
v2のタイムスタンプコンポーネントを抽出します。戻り値の型は\ ``timestamptz``
です。

.. _概要-12:

概要
^^^^

.. code:: sql

   bdr.extract_timestamp_from_ksuuid_v2(uuid)

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

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

- ``UUID`` — タイムスタンプを抽出する\ ``KSUUID`` v2値。

.. _注-12:

注
^^

このファンクションは、ローカルノードでのみ実行されます。

KSUUID v1ファンクション
-----------------------

``KSUUID`` v1データ、K-Sortable
UUIDデータv1を操作するためのファンクション。非推奨 - 詳細については、
:ref:`KSUUID in the sequences documentation <Sequences>` を参照してください。

bdr.gen_ksuuid
^^^^^^^^^^^^^^

このファンクションは、現在のシステム時間を使用して、新しい\ ``KSUUID``
v1値を生成します。戻り値の型はUUIDです。

.. _概要-13:

概要
^^^^

.. code:: sql

   bdr.gen_ksuuid()

.. _注-13:

注
^^

このファンクションは、ローカルノードでのみ実行されます。

bdr.uuid_v1_cmp
^^^^^^^^^^^^^^^

このファンクションは、\ ``KSUUID`` v1値を比較します。

最初の値の方が新しい場合は1、2番目の値が小さい場合は-1、または等しい場合は0を返します。

.. _概要-14:

概要
^^^^

.. code:: sql

   bdr.uuid_v1_cmp(uuid, uuid)

.. _注-14:

注
^^

このファンクションは、ローカルノードでのみ実行されます。

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

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

- ``UUID`` — ``KSUUID`` 比較するv1。

bdr.extract_timestamp_from_ksuuid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

このファンクションは、\ ``KSUUID`` v1または\ ``UUIDv1``
値のタイムスタンプコンポーネントを抽出します。戻り値の型は\ ``timestamptz``
です。

.. _概要-15:

概要
^^^^

.. code:: sql

   bdr.extract_timestamp_from_ksuuid(uuid)

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

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

- ``UUID`` — タイムスタンプを抽出する\ ``KSUUID`` v1値。

.. _注-15:

注
^^

このファンクションはローカルノードで実行されます。
