RE: Handle infinite recursion in logical replication setup

Поиск
Список
Период
Сортировка
От shiy.fnst@fujitsu.com
Тема RE: Handle infinite recursion in logical replication setup
Дата
Msg-id OSZPR01MB63109DD4B211D087258CA360FDBE9@OSZPR01MB6310.jpnprd01.prod.outlook.com
обсуждение исходный текст
Ответ на Re: Handle infinite recursion in logical replication setup  (vignesh C <vignesh21@gmail.com>)
Ответы RE: Handle infinite recursion in logical replication setup  ("shiy.fnst@fujitsu.com" <shiy.fnst@fujitsu.com>)
Re: Handle infinite recursion in logical replication setup  (vignesh C <vignesh21@gmail.com>)
Список pgsql-hackers
On Sun, Jul 3, 2022 11:00 PM vignesh C <vignesh21@gmail.com> wrote:
> 
> Thanks for the comments, the attached v27 patch has the changes for the
> same.
> 

Thanks for updating the patch.

A comment on 0003 patch:
+        /*
+         * No need to throw an error for the tables that are in ready state,
+         * as the walsender will send the changes from WAL in case of tables
+         * in ready state.
+         */
+        if (isreadytable)
+            continue;
+
...
+        ereport(ERROR,
+                errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+                errmsg("table: \"%s.%s\" might have replicated data in the publisher",
+                       nspname, relname),
+                errdetail("CREATE/ALTER SUBSCRIPTION with origin = local and copy_data = on is not allowed when the
publishermight have replicated data."),
 
+                errhint("Use CREATE/ALTER SUBSCRIPTION with copy_data = off/force."));
+
+        ExecClearTuple(slot);

I think we should call ExecClearTuple() before getting next tuple, so it should
be called if the table is in ready state. How about modifying it to:
        if (!isreadytable)
            ereport(ERROR,
                    errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
                    errmsg("table: \"%s.%s\" might have replicated data in the publisher",
                           nspname, relname),
                    errdetail("CREATE/ALTER SUBSCRIPTION with origin = local and copy_data = on is not allowed when the
publishermight have replicated data."),
 
                    errhint("Use CREATE/ALTER SUBSCRIPTION with copy_data = off/force."));

        ExecClearTuple(slot);

Regards,
Shi yu


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Peter Smith
Дата:
Сообщение: Re-order "disable_on_error" in tab-complete COMPLETE_WITH
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: Allowing REINDEX to have an optional name