Global sequence management interfaces#

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

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

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

bdr.alter_sequence_set_kind#

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

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

概要#

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 に変更される前にシーケンスで使用された既存の値が存在する場合、次のコマンドを使用して、新しく生成された値が既存の値と競合しないように、開始ポイントを移動することをお勧めします。

ALTER SEQUENCE seq_name START starting_value RESTART

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

構成。

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

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

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

bdr.extract_timestamp_from_snowflakeid#

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

概要#

bdr.extract_timestamp_from_snowflakeid(snowflakeid bigint)

パラメーター#

  • snowflakeid — snowflakeid シーケンスの値。

注#

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

bdr.extract_nodeid_from_snowflakeid#

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

概要#

bdr.extract_nodeid_from_snowflakeid(snowflakeid bigint)

パラメーター#

  • snowflakeid — snowflakeid シーケンスの値。

注#

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

bdr.extract_localseqid_from_snowflakeid#

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

概要#

bdr.extract_localseqid_from_snowflakeid(snowflakeid bigint)

パラメーター#

  • snowflakeid — snowflakeid シーケンスの値。

注#

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

bdr.timestamp_to_snowflakeid#

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

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

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

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

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

概要#

bdr.timestamp_to_snowflakeid(ts timestamptz)

パラメーター#

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

注#

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

bdr.extract_timestamp_from_timeshard#

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

概要#

bdr.extract_timestamp_from_timeshard(timeshard_seq bigint)

パラメーター#

  • timeshard_seq — timeshard シーケンスの値。

注#

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

bdr.extract_nodeid_from_timeshard#

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

概要#

bdr.extract_nodeid_from_timeshard(timeshard_seq bigint)

パラメーター#

  • timeshard_seq — timeshard シーケンスの値。

注#

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

bdr.extract_localseqid_from_timeshard#

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

概要#

bdr.extract_localseqid_from_timeshard(timeshard_seq bigint)

パラメーター#

  • timeshard_seq — timeshard シーケンスの値。

注#

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

bdr.timestamp_to_timeshard#

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

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

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

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

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

概要#

bdr.timestamp_to_timeshard(ts timestamptz)

パラメーター#

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

注#

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

bdr.galloc_chunk_info#

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

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

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

概要#

bdr.galloc_chunk_info(seqname regclass)

パラメーター#

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

注#

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

KSUUID v2ファンクション#

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

bdr.gen_ksuuid_v2#

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

戻り値の型はUUIDです。

概要#

bdr.gen_ksuuid_v2(timestamptz)

注#

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

bdr.ksuuid_v2_cmp#

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

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

概要#

bdr.ksuuid_v2_cmp(uuid, uuid)

パラメーター#

  • UUID — KSUUID 比較するv2。

注#

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

bdr.extract_timestamp_from_ksuuid_v2#

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

概要#

bdr.extract_timestamp_from_ksuuid_v2(uuid)

パラメーター#

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

注#

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

KSUUID v1ファンクション#

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

bdr.gen_ksuuid#

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

概要#

bdr.gen_ksuuid()

注#

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

bdr.uuid_v1_cmp#

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

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

概要#

bdr.uuid_v1_cmp(uuid, uuid)

注#

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

パラメーター#

  • UUID — KSUUID 比較するv1。

bdr.extract_timestamp_from_ksuuid#

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

概要#

bdr.extract_timestamp_from_ksuuid(uuid)

パラメーター#

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

注#

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