DDL Command handling matrix#

次の表では、許可されるユーティリティまたはDDLコマンド、レプリケートされるもの、およびレプリケート時に使用されるグローバルロックの種類について説明します。

ALTER TABLE のようなより複雑なステートメントの場合、これらは実行されるサブコマンドによって異なる場合があります。このようなすべてのコマンドには、次の表の下に詳細な説明があります。

コマンドマトリックス#

Command

Allowed

Replicated

Lock

ALTER AGGREGATE

Y

Y

DDL

ALTER CAST

Y

Y

DDL

ALTER COLLATION

Y

Y

DDL

ALTER CONVERSION

Y

Y

DDL

ALTER DATABASE

Y

N

N

ALTER DATABASE LINK

Y

Y

DDL

ALTER DEFAULT PRIVILEGES

Y

Y

DDL

ALTER DIRECTORY

Y

Y

DDL

ALTER DOMAIN

Y

Y

DDL

ALTER EVENT TRIGGER

Y

Y

DDL

ALTER EXTENSION

Y

Y

DDL

ALTER FOREIGN DATA WRAPPER

Y

Y

DDL

ALTER FOREIGN TABLE

Y

Y

DDL

ALTER FUNCTION

Y

Y

DDL

ALTER INDEX

Y

Y

DDL

ALTER LANGUAGE

Y

Y

DDL

ALTER LARGE OBJECT

N

N

N

ALTER MATERIALIZED VIEW

Y

N

N

ALTER OPERATOR

Y

Y

DDL

ALTER OPERATOR CLASS

Y

Y

DDL

ALTER OPERATOR FAMILY

Y

Y

DDL

ALTER PACKAGE

Y

Y

DDL

ALTER POLICY

Y

Y

DDL

ALTER PROCEDURE

Y

Y

DDL

ALTER PROFILE

Y

Y

アーキテクチャの詳細

ALTER PUBLICATION

Y

Y

DDL

ALTER QUEUE

Y

Y

DDL

ALTER QUEUE TABLE

Y

Y

DDL

ALTER REDACTION POLICY

Y

Y

DDL

ALTER RESOURCE GROUP

Y

N

N

ALTER ROLE

Y

Y

DDL

ALTER ROUTINE

Y

Y

DDL

ALTER RULE

Y

Y

DDL

ALTER SCHEMA

Y

Y

DDL

ALTER SEQUENCE

アーキテクチャの詳細

Y

DML

ALTER SERVER

Y

Y

DDL

ALTER SESSION

Y

N

N

ALTER STATISTICS

Y

Y

DDL

ALTER SUBSCRIPTION

Y

Y

DDL

ALTER SYNONYM

Y

Y

DDL

ALTER SYSTEM

Y

N

N

ALTER TABLE

アーキテクチャの詳細

Y

アーキテクチャの詳細

ALTER TABLESPACE

Y

N

N

ALTER TEXT SEARCH CONFIGURATION

Y

Y

DDL

ALTER TEXT SEARCH DICTIONARY

Y

Y

DDL

ALTER TEXT SEARCH PARSER

Y

Y

DDL

ALTER TEXT SEARCH TEMPLATE

Y

Y

DDL

ALTER TRIGGER

Y

Y

DDL

ALTER TYPE

Y

Y

DDL

ALTER USER MAPPING

Y

Y

DDL

ALTER VIEW

Y

Y

DDL

ANALYZE

Y

N

N

BEGIN

Y

N

N

CHECKPOINT

Y

N

N

CLOSE

Y

N

N

CLOSE CURSOR

Y

N

N

CLOSE CURSOR ALL

Y

N

N

CLUSTER

Y

N

N

COMMENT

Y

アーキテクチャの詳細

DDL

COMMIT

Y

N

N

COMMIT PREPARED

Y

N

N

COPY

Y

N

N

COPY FROM

Y

N

N

CREATE ACCESS METHOD

Y

Y

DDL

CREATE AGGREGATE

Y

Y

DDL

CREATE CAST

Y

Y

DDL

CREATE COLLATION

Y

Y

DDL

CREATE CONSTRAINT

Y

Y

DDL

CREATE CONVERSION

Y

Y

DDL

CREATE DATABASE

Y

N

N

CREATE DATABASE LINK

Y

Y

DDL

CREATE DIRECTORY

Y

Y

DDL

CREATE DOMAIN

Y

Y

DDL

CREATE EVENT TRIGGER

Y

Y

DDL

CREATE EXTENSION

Y

Y

DDL

CREATE FOREIGN DATA WRAPPER

Y

Y

DDL

CREATE FOREIGN TABLE

Y

Y

DDL

CREATE FUNCTION

Y

Y

DDL

CREATE INDEX

Y

Y

DML

CREATE LANGUAGE

Y

Y

DDL

CREATE MATERIALIZED VIEW

Y

N

N

CREATE OPERATOR

Y

Y

DDL

CREATE OPERATOR CLASS

Y

Y

DDL

CREATE OPERATOR FAMILY

Y

Y

DDL

CREATE PACKAGE

Y

Y

DDL

CREATE PACKAGE BODY

Y

Y

DDL

CREATE POLICY

Y

Y

DML

CREATE PROCEDURE

Y

Y

DDL

CREATE PROFILE

Y

Y

アーキテクチャの詳細

CREATE PUBLICATION

Y

Y

DDL

CREATE QUEUE

Y

Y

DDL

CREATE QUEUE TABLE

Y

Y

DDL

CREATE REDACTION POLICY

Y

Y

DDL

CREATE RESOURCE GROUP

Y

N

N

CREATE ROLE

Y

Y

DDL

CREATE ROUTINE

Y

Y

DDL

CREATE RULE

Y

Y

DDL

CREATE SCHEMA

Y

Y

DDL

CREATE SEQUENCE

アーキテクチャの詳細

Y

DDL

CREATE SERVER

Y

Y

DDL

CREATE STATISTICS

Y

Y

DDL

CREATE SUBSCRIPTION

Y

Y

DDL

CREATE SYNONYM

Y

Y

DDL

CREATE TABLE

アーキテクチャの詳細

Y

DDL

CREATE TABLE AS

アーキテクチャの詳細

Y

DDL

CREATE TABLESPACE

Y

N

N

CREATE TEXT SEARCH CONFIGURATION

Y

Y

DDL

CREATE TEXT SEARCH DICTIONARY

Y

Y

DDL

CREATE TEXT SEARCH PARSER

Y

Y

DDL

CREATE TEXT SEARCH TEMPLATE

Y

Y

DDL

CREATE TRANSFORM

Y

Y

DDL

CREATE TRIGGER

Y

Y

DDL

CREATE TYPE

Y

Y

DDL

CREATE TYPE BODY

Y

Y

DDL

CREATE USER MAPPING

Y

Y

DDL

CREATE VIEW

Y

Y

DDL

DEALLOCATE

Y

N

N

DEALLOCATE ALL

Y

N

N

DECLARE CURSOR

Y

N

N

DISCARD

Y

N

N

DISCARD ALL

Y

N

N

DISCARD PLANS

Y

N

N

DISCARD SEQUENCES

Y

N

N

DISCARD TEMP

Y

N

N

DO

Y

N

N

DROP ACCESS METHOD

Y

Y

DDL

DROP AGGREGATE

Y

Y

DDL

DROP CAST

Y

Y

DDL

DROP COLLATION

Y

Y

DDL

DROP CONSTRAINT

Y

Y

DDL

DROP CONVERSION

Y

Y

DDL

DROP DATABASE

Y

N

N

DROP DATABASE LINK

Y

Y

DDL

DROP DIRECTORY

Y

Y

DDL

DROP DOMAIN

Y

Y

DDL

DROP EVENT TRIGGER

Y

Y

DDL

DROP EXTENSION

Y

Y

DDL

DROP FOREIGN DATA WRAPPER

Y

Y

DDL

DROP FOREIGN TABLE

Y

Y

DDL

DROP FUNCTION

Y

Y

DDL

DROP INDEX

Y

Y

DDL

DROP LANGUAGE

Y

Y

DDL

DROP MATERIALIZED VIEW

Y

N

N

DROP OPERATOR

Y

Y

DDL

DROP OPERATOR CLASS

Y

Y

DDL

DROP OPERATOR FAMILY

Y

Y

DDL

DROP OWNED

Y

Y

DDL

DROP PACKAGE

Y

Y

DDL

DROP PACKAGE BODY

Y

Y

DDL

DROP POLICY

Y

Y

DDL

DROP PROCEDURE

Y

Y

DDL

DROP PROFILE

Y

Y

DDL

DROP PUBLICATION

Y

Y

DDL

DROP QUEUE

Y

Y

DDL

DROP QUEUE TABLE

Y

Y

DDL

DROP REDACTION POLICY

Y

Y

DDL

DROP RESOURCE GROUP

Y

N

N

DROP ROLE

Y

Y

DDL

DROP ROUTINE

Y

Y

DDL

DROP RULE

Y

Y

DDL

DROP SCHEMA

Y

Y

DDL

DROP SEQUENCE

Y

Y

DDL

DROP SERVER

Y

Y

DDL

DROP STATISTICS

Y

Y

DDL

DROP SUBSCRIPTION

Y

Y

DDL

DROP SYNONYM

Y

Y

DDL

DROP TABLE

Y

Y

DML

DROP TABLESPACE

Y

N

N

DROP TEXT SEARCH CONFIGURATION

Y

Y

DDL

DROP TEXT SEARCH DICTIONARY

Y

Y

DDL

DROP TEXT SEARCH PARSER

Y

Y

DDL

DROP TEXT SEARCH TEMPLATE

Y

Y

DDL

DROP TRANSFORM

Y

Y

DDL

DROP TRIGGER

Y

Y

DDL

DROP TYPE

Y

Y

DDL

DROP TYPE BODY

Y

Y

DDL

DROP USER MAPPING

Y

Y

DDL

DROP VIEW

Y

Y

DDL

EXECUTE

Y

N

N

EXPLAIN

Y

アーキテクチャの詳細

アーキテクチャの詳細

FETCH

Y

N

N

GRANT

Y

アーキテクチャの詳細

DDL

GRANT ROLE

Y

Y

DDL

IMPORT FOREIGN SCHEMA

Y

Y

DDL

LISTEN

Y

N

N

LOAD

Y

N

N

LOAD ROW DATA

Y

Y

DDL

LOCK TABLE

Y

N

アーキテクチャの詳細

MOVE

Y

N

N

NOTIFY

Y

N

N

PREPARE

Y

N

N

PREPARE TRANSACTION

Y

N

N

REASSIGN OWNED

Y

Y

DDL

REFRESH MATERIALIZED VIEW

Y

N

N

REINDEX

Y

N

N

RELEASE

Y

N

N

RESET

Y

N

N

REVOKE

Y

アーキテクチャの詳細

DDL

REVOKE ROLE

Y

Y

DDL

ROLLBACK

Y

N

N

ROLLBACK PREPARED

Y

N

N

SAVEPOINT

Y

N

N

SECURITY LABEL

Y

アーキテクチャの詳細

DDL

SELECT INTO

アーキテクチャの詳細

Y

DDL

SET

Y

N

N

SET CONSTRAINTS

Y

N

N

SHOW

Y

N

N

START TRANSACTION

Y

N

N

TRUNCATE TABLE

Y

アーキテクチャの詳細

アーキテクチャの詳細

UNLISTEN

Y

N

N

VACUUM

Y

N

N

コマンドの注意事項#

ALTER SEQUENCE#

一般にALTER SEQUENCE がサポートされていますが、グローバルシーケンスを使用する場合、一部のオプションは効果がありません。

ALTER SEQUENCE ... RENAME は、gallocシーケンスのみでサポートされていません。 ALTER SEQUENCE ... SET SCHEMA は、gallocシーケンスのみでサポートされていません。

ALTER TABLE#

通常、 ALTER TABLE コマンドは許可されます。ただし、いくつかのサブコマンドはサポートされていません。

ALTER TABLEは許可されないコマンド#

ALTER TABLE の一部のバリアントは、現在PGDノードで使用できません。

  • ADD COLUMN ... DEFAULT (non-immutable expression) —これは、現在別のノードで別のデータになるため、許可されていません。推奨される回避策については、 列の追加 を参照してください。

  • ADD CONSTRAINT ... EXCLUDE —除外コンストレインはサポートされていません。除外制約は、テーブル内の2つの行がオーバーラップする範囲を持たないようにする方法です。これは、すべてのノードに同時にコンストレインを適用できる同期システムで役立ちます。ただし、非同期システムでは、コンストレインがすべてのノードに同時に適用されることを保証できません。これにより、データの一貫性がなくなり、再生できない変更が発生する可能性があります。したがって、除外コンストレインはサポートされていません。

  • ALTER TABLE ... SET WITH[OUT] OIDS — CREATE TABLE と同じ理由でサポートされていません。

  • ALTER COLUMN ... SET STORAGE external —列がテーブルのレプリカIDの列の1つである場合、拒否されます。

  • RENAME —自動パーティション化されたテーブルの名前は変更できません。

  • SET SCHEMA —自動パーティション化されたテーブルのスキーマは設定できません。

  • ALTER COLUMN ... TYPE —コマンドによってテーブル全体が書き換えられる場合、列のタイプの変更はサポートされません。これは、変更がバイナリ強制可能でない場合に発生します。バイナリの強制変更は、一方通行のみが許可される場合があります。たとえば、VARCHAR(128) からVARCHAR(256) への変更はバイナリ強制可能であるため許可されますが、 VARCHAR(256) からVARCHAR(128) への変更はバイナリ強制可能ではないため、通常は許可されません。非レプリケートのALTER COLUMN ... TYPE は、列が新しいタイプに自動的にキャスト可能である場合に許可されますUSING 句が含まれません。次に例を示します。テーブルリライトは、大規模なテーブルでAccessExclusiveLockを長期間保持するため、このようなコマンドは、いずれの場合も高可用データベースでは実行不可能である可能性があります。推奨される回避策については、 カラムのタイプの変更 を参照してください。

  • ALTER TABLE ... ADD FOREIGN KEY —現在のユーザーが参照されるテーブルを読み取る権限がない場合、または参照されるテーブルで現在のユーザーがバイパスできないRLS制限が有効になっている場合、サポートされません。

次の例は、 timestamp 型の定数値をtimestamptz 型の列に追加しようとするため、失敗します。 timestamp とtimestamptz 間のキャストは、セッションのタイムゾーンに依存するため、不変ではありません。

ALTER TABLE foo
  ADD expiry_date timestamptz DEFAULT timestamp 2100-01-01 00:00:00 NOT NULL;

PGD 3.7.4以降、DMLロックを取得せずに、 CHECK やFOREIGN KEY 制約などの特定のタイプの制約を追加できます。ただし、これには、最初にNOT VALID 制約を作成し、次に ALTER TABLE ... VALIDATE CONSTRAINT コマンドを使用して別のトランザクションで制約を検証する2段階のプロセスが必要です。

詳細については、

ALTER TABLE ロック#

ALTER TABLE の次のバリアントは、 DDLロックのみを取得し、DMLロックは取得しません。

  • ALTER TABLE ... ADD COLUMN ... (immutable) DEFAULT

  • ALTER TABLE ... ALTER COLUMN ... SET DEFAULT expression

  • ALTER TABLE ... ALTER COLUMN ... DROP DEFAULT

  • ALTER TABLE ... ALTER COLUMN ... TYPE リライトが必要ない場合

  • ALTER TABLE ... ALTER COLUMN ... SET STATISTICS

  • ALTER TABLE ... VALIDATE CONSTRAINT

  • ALTER TABLE ... ATTACH PARTITION

  • ALTER TABLE ... DETACH PARTITION

  • ALTER TABLE ... ENABLE TRIGGER ENABLE REPLICA TRIGGER は引き続きDMLロックを取得します

  • ALTER TABLE ... CLUSTER ON

  • ALTER TABLE ... SET WITHOUT CLUSTER

  • ALTER TABLE ... SET ( storage_parameter = value [, ... ] )

  • ALTER TABLE ... RESET ( storage_parameter = [, ... ] )

  • ALTER TABLE ... OWNER TO

ALTER TABLE の他のすべてのバリアントは、変更されるテーブルでDMLロックを取得します。 ALTER TABLE の一部のバリアントには、以下に説明する制限があります。

ALTER TABLEの例#

この次の例は、型の変更がバイナリ強制可能であるため、テーブルの書き換えが発生しないため、機能します。カタログのみの変更として実行されます。

CREATE TABLE foo (id BIGINT PRIMARY KEY, description VARCHAR(20));
ALTER TABLE foo ALTER COLUMN description TYPE VARCHAR(128);

ただし、 VARCHAR(128) からVARCHAR(20) への変更はバイナリ強制可能ではないため、コマンドを逆に変更することは不可能です。

ALTER TABLE foo ALTER COLUMN description TYPE VARCHAR(20);

回避策については、 Restricted DDL workarounds を参照してください。

一般におよび非レプリケート環境で可能なさまざまなタイプのALTER TABLE ... ALTER COLUMN TYPE ATCT操作のコンテキストを提供すると役立ちます。

一部のATCT操作は、基になる列タイプのメタデータのみを更新し、基になるテーブルデータの書き換えは必要ありません。これは通常、既存の列タイプとターゲットタイプがバイナリ強制可能な場合に当てはまります。例

CREATE TABLE sample (col1 BIGINT PRIMARY KEY, col2 VARCHAR(128), col3 INT);
ALTER TABLE sample ALTER COLUMN col2 TYPE VARCHAR(256);

バイナリの強制性のため、列タイプをVARCHAR またはTEXT データ型に変更することもできます。繰り返しますが、これは基になる列タイプの単なるメタデータの更新です。

ALTER TABLE sample ALTER COLUMN col2 TYPE VARCHAR;
ALTER TABLE sample ALTER COLUMN col2 TYPE TEXT;

ただし、col2のサイズを削減したい場合は、基になるテーブルデータの書き換えが必要になります。テーブルの書き換えは通常制限されています。

ALTER TABLE sample ALTER COLUMN col2 TYPE VARCHAR(64);
ERROR:  ALTER TABLE ... ALTER COLUMN TYPE that rewrites table data may not affect replicated tables on a PGD node

非テキストタイプの例として、INTEGERタイプを使用した上記のcol3を検討します。 SMALLINTまたはBIGINTに変換しようとするATCT操作は、上記と同様の方法で失敗します。

ALTER TABLE sample ALTER COLUMN col3 TYPE bigint;
ERROR:  ALTER TABLE ... ALTER COLUMN TYPE that rewrites table data may not affect replicated tables on a PGD node

これらの失敗したケースは両方とも、現在の型からターゲット型への自動割り当てキャストがあります。ただし、バイナリの強制力がないため、基になるテーブルデータの書き換えが発生します。

このような場合、制御されたDBA環境では、すべてのノードの非レプリケート環境でこの列のタイプのローリングアップグレードを採用することにより、列のタイプを自動的にキャスト可能なものに変更できます。 DDLはレプリケートされず、列型の変更は自動的にキャスト可能なものであると仮定します。次に、この同じテーブル上の他のノードでの同時アクティビティとともに、変更を実行するノードでローカルに書き換えを許可できます。次に、すべてのノードでこの非レプリケートのATCT操作を1つずつ繰り返し、 EDB Postgres分散クラスター全体で列タイプの目的の変更をもたらすことができます。これには書き換えが含まれるため、アクティビティは引き続き短期間DMLロックを取得するため、クラスター全体が利用できる必要があります。これらの詳細を設定すると、次のような非レプリケートの変更アクティビティのローリングアップグレードを実行できます。

- - foreach node in EDB Postgres Distributed cluster do:
SET bdr.ddl_replication TO FALSE;
ALTER TABLE sample ALTER COLUMN col2 TYPE VARCHAR(64);
ALTER TABLE sample ALTER COLUMN col3 TYPE BIGINT;
RESET bdr.ddl_replication;
- - done

自動割り当てキャストは多くのデータ型で利用できるため、このローカルの非レプリケートATCT操作は、さまざまな変換をサポートします。また、 USING 句を使用するATCT操作は、自動割り当てキャストがないため失敗する可能性があります。この例は、自動割り当てキャストを使用したいくつかの一般的な変換を示しています。

- - foreach node in EDB Postgres Distributed cluster do:
SET bdr.ddl_replication TO FALSE;
ATCT operations to-from {INTEGER, SMALLINT, BIGINT}
ATCT operations to-from {CHAR(n), VARCHAR(n), VARCHAR, TEXT}
ATCT operations from numeric types to text types
RESET bdr.ddl_replication;
- - done

この例は、非レプリケート環境で許可される可能性のあるATCT操作の完全なリストではありません。すべてのATCT操作が機能するわけではありません。自動割り当てができない場合、 DDLレプリケーションを無効にしても失敗します。したがって、数値型からテキスト型への変換は非レプリケート環境で機能しますが、テキスト型から数値型への逆変換は失敗します。

SET bdr.ddl_replication TO FALSE;
- - conversion from BIGINT to TEXT works
ALTER TABLE sample ALTER COLUMN col3 TYPE TEXT;
- - conversion from TEXT back to BIGINT fails
ALTER TABLE sample ALTER COLUMN col3 TYPE BIGINT;
ERROR:  ALTER TABLE ... ALTER COLUMN TYPE which cannot be automatically cast to new type may not affect replicated tables on a PGD node
RESET bdr.ddl_replication;

非レプリケート環境のATCT操作はさまざまな型変換をサポートしていますが、基になるテーブルデータに新しいデータ型に割り当てできない値が含まれている場合、リライトは失敗する場合があります。たとえば、列の現在のタイプがVARCHAR(256) で、非レプリケートATCT操作を試行してVARCHAR(128) に変換するとします。テーブルに128バイトを超える既存のデータがある場合、書き換え操作はローカルに失敗します。

INSERT INTO sample VALUES (1, repeat(a, 200), 10);
SET bdr.ddl_replication TO FALSE;
ALTER TABLE sample ALTER COLUMN col2 TYPE VARCHAR(128);
INFO:  in rewrite
ERROR:  value too long for type character varying(128)

基になるテーブルデータが新しい型の特性を満たしている場合、書き換えは成功します。ただし、非レプリケートのローリングデータタイプのアップグレードをまだ実行していない他のノードが、128バイトより広い新しいデータをこのローカルATCT操作に同時に導入する場合、レプリケーションは失敗する可能性があります。これにより、クラスターでのレプリケーションが停止します。したがって、これらの非レプリケートのローリングデータ型のアップグレード操作を実行する間は、データベースおよびアプリケーションレベルでのデータ型の制限と特性に注意してください。このようなATCT操作は、制御された完全に認識したDBA環境で実行およびテストすることを強くお勧めします。これらのATCT操作は非対称であり、失敗した特定の変更をバックアウトすると、時間がかかるテーブルの書き換えが発生する可能性があります。

また、トランザクションブロックで暗黙的なキャスト可能ALTERアクティビティを実行することはできません。

ALTER TYPE#

ALTER TYPE はレプリケートされますが、 PostgreSQLはこれらの依存関係を記録しないため、グローバルDMLロックはそのデータ型を使用するすべてのテーブルに適用されません。

Restricted DDL workarounds を参照してください。

コメントオン#

COMMENT ON のすべてのバリアントが許可されますが、 COMMENT ON TABLESPACE/DATABASE/LARGE OBJECT はレプリケートされません。

CREATE PROFILEまたはALTER PROFILE#

ファンクションがSECURITY DEFINER の場合、プロファイルに関連付けられているPASSWORD_VERIFY_FUNCTION はIMMUTABLE である必要があります。このようなCREATE PROFILE またはALTER PROFILE コマンドはレプリケートされますが、このプロファイルを使用する後続のCREATE USER またはALTER USER コマンドは、 writer ワーカーがcannot change current role within security-restricted operation エラーをスローするため、レプリケーションを中断します。

CREATE SEQUENCE#

一般にCREATE SEQUENCE がサポートされていますが、グローバルシーケンスを使用する場合、一部のオプションは効果がありません。

CREATE TABLE#

一般にCREATE TABLE はサポートされていますが、 CREATE TABLE WITH OIDS はPGDノードでは許可されていません。

CREATE TABLE ASとSELECT INTO#

CREATE TABLE AS およびSELECT INTO は、すべてのサブコマンドも許可される場合にのみ許可されます。

EXPLAIN#

一般にEXPLAIN は許可されますが、 EXPLAIN ANALYZE はデータベースに副作用を与える可能性があるため、いくつかの制限があります。

EXPLAIN ANALYZEレプリケーション#

EXPLAIN ANALYZE は、分析されたステートメントのレプリケーションルールに従います。

EXPLAIN ANALYZEロック#

EXPLAIN ANALYZE は、分析されたステートメントのロックルールに従います。

GRANTとREVOKE#

通常、GRANT およびREVOKE ステートメントはサポートされていますが、 GRANT/REVOKE ON TABLESPACE/LARGE OBJECT はレプリケートされません。

ロックテーブル#

LOCK TABLEはレプリケートされませんが、 bdr.lock_table_locking がon に設定されている場合、グローバルDMLロックを取得する場合があります。

bdr.global_lock_table() ファンクションを使用して、グローバルDMLロックを明示的に要求することもできます。

セキュリティラベル#

SECURITY LABEL のすべてのバリアントが許可されますが、 SECURITY LABEL ON TABLESPACE/DATABASE/LARGE OBJECT はレプリケートされません。

TRUNCATEレプリケーション#

TRUNCATE コマンドは、 DDLステートメントではなくDMLとしてレプリケートされます。テーブルのTRUNCATE がレプリケートされるかどうかは、影響を受ける各テーブルのレプリケーション設定によって異なります。

TRUNCATEロック#

TRUNCATE は他のDDLと同じ方法でレプリケートされませんが、 bdr.truncate_locking がon に設定されている場合、グローバルDMLロックを取得できます。