関数 | 戻り値の型 | 説明 |
---|---|---|
pgx_drop_replication_object(server_name name, only_coordinator boolean) | boolean | 中央管理ノードとデータノードからレプリケーションオブジェクトを削除します。 |
中央管理ノードでは、server_nameに指定した各データノードに対応したパブリケーションとレプリケーションスロットを、server_nameに指定したデータノードではサブスクリプションを削除します。server_nameを省略した場合は、全データノードからサブスクリプションを削除します。
only_coordinatorをtrueに設定した場合は、中央管理ノードに対してのみ処理を実行します。 データノードに接続できない際にtrueに設定してください。基本的にはfalseに設定してください。省略した場合はfalseが設定されます。
この関数は中央管理ノードでスーパーユーザーのみ実行できます。
パブリケーションにoriginalテーブルが1つでも追加されている場合はエラーになります。DROP TABLEまたはpgx_detach_replication_table()を使用して、パブリケーションに追加されているテーブルを削除してから関数を実行してください。
データノードに、レプリケーションオブジェクトと同名で、pgx_replication_object_subscriptionに登録されていないサブスクリプションが存在する場合、そのサブスクリプションは削除されます。
レプリケーションオブジェクトを非同期レプリケーションに設定せずにpgx_drop_replication_object()を実行すると、コミット処理が完了しなくなるために削除処理が終了しなくなります。
pgx_drop_replication_object()の実行が終了しないときに、削除対象となるレプリケーションオブジェクトが同期レプリケーションに設定されていれば、上記が原因であると判断できます。そのときには、“5.2.3 レプリケーションテーブルの削除”の削除例のようにレプリケーションオブジェクトを非同期レプリケーションに設定することで解決できます。同期方法の詳細は、“5.2.4 レプリケーションテーブルの同期方法”参照してください。