ALTER SUBSCRIPTION#

ALTER SUBSCRIPTION

ALTER SUBSCRIPTION

ALTER SUBSCRIPTION — изменить определение подписки

Синтаксис

ALTER SUBSCRIPTION name CONNECTION 'conninfo'
ALTER SUBSCRIPTION name SET PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name ADD PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name DROP PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name REFRESH PUBLICATION [ WITH ( refresh_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name ENABLE
ALTER SUBSCRIPTION name DISABLE
ALTER SUBSCRIPTION name SET ( subscription_parameter [= value] [, ... ] )
ALTER SUBSCRIPTION name SKIP ( skip_option = value )
ALTER SUBSCRIPTION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER SUBSCRIPTION name RENAME TO new_name

Описание

ALTER SUBSCRIPTION может изменять большинство свойств подписки, которые можно указать в CREATE SUBSCRIPTION.

необходимо владеть подпиской, чтобы использовать ALTER SUBSCRIPTION. Чтобы изменить владельца, вы также должны быть прямым или косвенным членом новой владеющей роли. Новый владелец должен быть суперпользователем. (В настоящее время все владельцы подписок должны быть суперпользователями, поэтому проверки владельца будут обходиться на практике. Но это может измениться в будущем).

При обновлении публикации мы удаляем отношения, которые больше не являются частью публикации, а также удаляем слоты синхронизации таблиц, если они есть. Необходимо удалить эти слоты, чтобы освободить ресурсы, выделенные для подписки на удаленном хосте. Если из-за сбоя в сети или какой-либо другой ошибки Tantor SE не может удалить слоты, будет выдана ошибка. Чтобы продолжить в этой ситуации, пользователю необходимо повторить операцию или отключить слот от подписки и удалить подписку, как объясняется в DROP SUBSCRIPTION.

Команды ALTER SUBSCRIPTION ... REFRESH PUBLICATION и ALTER SUBSCRIPTION ... {SET|ADD|DROP} PUBLICATION ... с опцией refresh в значении true не могут быть выполнены внутри блока транзакции. Эти команды также не могут быть выполнены, когда подписка имеет включенный двухфазный коммит (two_phase), если copy_data равно false. Смотрите столбец subtwophasestate в pg_subscription, чтобы узнать текущее состояние двухфазного коммита.

Параметры

name

Имя подписки, свойства которой требуется изменить.

CONNECTION 'conninfo'

Этот раздел заменяет строку подключения, которая была изначально установлена с помощью CREATE SUBSCRIPTION. Дополнительную информацию смотрите там.

SET PUBLICATION publication_name
ADD PUBLICATION publication_name
DROP PUBLICATION publication_name

Эти формы изменяют список подписанных публикаций. SET заменяет весь список публикаций новым списком, ADD добавляет дополнительные публикации в список публикаций, а DROP удаляет публикации из списка публикаций. Мы позволяем указывать несуществующие публикации в вариантах ADD и SET, чтобы пользователи могли добавить их позже. См. CREATE SUBSCRIPTION для получения дополнительной информации. По умолчанию этот командный также будет действовать как REFRESH PUBLICATION.

publication_option определяет дополнительные параметры для данной операции. Поддерживаемые параметры:

refresh (boolean)

Когда значение равно false, команда не будет пытаться обновить информацию о таблице. Вместо этого необходимо выполнить отдельно команду REFRESH PUBLICATION. По умолчанию значение равно true.

Кроме того, можно указать параметры, описанные в разделе REFRESH PUBLICATION, чтобы управлять неявной операцией обновления.

REFRESH PUBLICATION

Получите недостающую информацию о таблице от издателя. Это запустит репликацию таблиц, которые были добавлены в подписанные публикации с момента выполнения команды CREATE SUBSCRIPTION или последнего вызова REFRESH PUBLICATION.

refresh_option определяет дополнительные параметры для операции обновления. Поддерживаемые параметры:

copy_data (boolean)

Определяет, нужно ли копировать существующие данные в публикациях, на которые подписываются при запуске репликации. По умолчанию true.

Ранее подписанные таблицы не копируются, даже если предложение фильтрации строк таблицы в WHERE было изменено.

ENABLE

Включает ранее отключенную подписку, запуская логического рабочего процесса репликации в конце транзакции.

DISABLE

Отключает работающую подписку, останавливая рабочий процесс логической репликации в конце транзакции.

SET ( subscription_parameter [= value] [, ... ] )

Это предложение изменяет параметры, установленные изначально с помощью CREATE SUBSCRIPTION. Дополнительную информацию см. там. Параметры, которые можно изменить, включают slot_name, synchronous_commit, binary, streaming, disable_on_error и origin.

SKIP ( skip_option = value )

Пропускает применение всех изменений удаленной транзакции. Если входящие данные нарушают какие-либо ограничения, логическая репликация останавливается до их устранения. Используя команду ALTER SUBSCRIPTION ... SKIP, рабочий процесс логической репликации пропускает все изменения модификации данных внутри транзакции. Эта опция не влияет на транзакции, которые уже подготовлены путем включения two_phase на подписчике. После успешного пропуска транзакции или завершения транзакции рабочим процессом логической репликации, LSN (хранится в pg_subscription.subskiplsn) очищается. См. Раздел 30.5 для получения подробной информации о конфликтах логической репликации. Для использования этой команды требуются привилегии суперпользователя.

skip_option определяет параметры для данной операции. Поддерживается только одна опция:

lsn (pg_lsn)

Указывает конечный LSN удаленной транзакции, изменения которой должны быть прне указаны рабочим процессом логической репликации. Конечный LSN - это LSN, на котором транзакция либо коммитится, либо подготавливается. Пропуск отдельных подтранзакций не поддерживается. Установка значения NONE сбрасывает LSN.

new_owner

Имя пользователя нового владельца подписки.

new_name

Новое имя для подписки.

Примеры

Измените публикацию, на которую подписана подписка, на insert_only:

ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only;

Отключить (остановить) подписку:

ALTER SUBSCRIPTION mysub DISABLE;

Совместимость

ALTER SUBSCRIPTION - это расширение Tantor SE.