Re: Time delayed LR (WAS Re: logical replication restrictions)

Поиск
Список
Период
Сортировка
От vignesh C
Тема Re: Time delayed LR (WAS Re: logical replication restrictions)
Дата
Msg-id CALDaNm0WUvn8eJU7T6_d107FMHXE06UiEQ4ArZ6mbyP1SGOueQ@mail.gmail.com
обсуждение исходный текст
Ответ на RE: Time delayed LR (WAS Re: logical replication restrictions)  ("Takamichi Osumi (Fujitsu)" <osumi.takamichi@fujitsu.com>)
Ответы RE: Time delayed LR (WAS Re: logical replication restrictions)
Список pgsql-hackers
On Tue, 10 Jan 2023 at 19:41, Takamichi Osumi (Fujitsu)
<osumi.takamichi@fujitsu.com> wrote:
>
> On Tuesday, January 3, 2023 4:01 PM vignesh C <vignesh21@gmail.com> wrote:
> Hi, thanks for your review !
>
> Please have a look at the updated patch.

Thanks for the updated patch, few comments:
1) Comment inconsistency across create and alter subscription, better
to keep it same:
+       /*
+        * Do additional checking for disallowed combination when
min_apply_delay
+        * was not zero.
+        */
+       if (IsSet(supported_opts, SUBOPT_MIN_APPLY_DELAY) &&
+               opts->min_apply_delay > 0)
+       {
+               if (opts->streaming == LOGICALREP_STREAM_PARALLEL)
+                       ereport(ERROR,
+                                       (errcode(ERRCODE_SYNTAX_ERROR)),
+                                       errmsg("min_apply_delay must
not be set when streaming = parallel"));
+       }

+                                       /*
+                                        * Test the combination of
streaming mode and
+                                        * min_apply_delay
+                                        */
+                                       if (opts.streaming ==
LOGICALREP_STREAM_PARALLEL &&
+                                               sub->minapplydelay > 0)
+                                               ereport(ERROR,
+
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+
errmsg("min_apply_delay must not be set when streaming = parallel")));

2) ereport inconsistency, braces around errcode is present in few
places and not present in few places, it is better to keep it
consistent by removing it:
2.a)
+               if (opts->streaming == LOGICALREP_STREAM_PARALLEL)
+                       ereport(ERROR,
+                                       (errcode(ERRCODE_SYNTAX_ERROR)),
+                                       errmsg("min_apply_delay must
not be set when streaming = parallel"));

2.b)
+                                       if (opts.streaming ==
LOGICALREP_STREAM_PARALLEL &&
+                                               sub->minapplydelay > 0)
+                                               ereport(ERROR,
+
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+
errmsg("min_apply_delay must not be set when streaming = parallel")));

2.c)
+                                       if (opts.min_apply_delay > 0 &&
+                                               sub->stream ==
LOGICALREP_STREAM_PARALLEL)
+                                               ereport(ERROR,
+
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+
errmsg("min_apply_delay must not be set when streaming = parallel")));

2.d)
+       if (pg_mul_s64_overflow(days, MSECS_PER_DAY, &result))
+               ereport(ERROR,
+                               (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
+                                errmsg("bigint out of range")));

2.e)
+       if (pg_add_s64_overflow(result, ms, &result))
+               ereport(ERROR,
+                               (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
+                                errmsg("bigint out of range")));

3) this include is not required, I could compile without it
--- a/src/backend/commands/subscriptioncmds.c
+++ b/src/backend/commands/subscriptioncmds.c
@@ -48,6 +48,7 @@
 #include "utils/memutils.h"
 #include "utils/pg_lsn.h"
 #include "utils/syscache.h"
+#include "utils/timestamp.h"

4)
4.a)
Should this be changed:
/* Adds portion time (in ms) to the previous result. */
to
/* Adds portion time (in ms) to the previous result */

4.b)
Should this be changed:
/* Detect whether the value of interval can cause an overflow. */
to
/* Detect whether the value of interval can cause an overflow */

5) Can this "ALTER SUBSCRIPTION regress_testsub SET (min_apply_delay =
'1d')" be combined along with "-- success -- 123 ms", that way few
statements could be reduced
+-- success -- 86400000 ms
+CREATE SUBSCRIPTION regress_testsub CONNECTION
'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect =
false, min_apply_delay = 123);
+ALTER SUBSCRIPTION regress_testsub SET (min_apply_delay = '1d');
+
+\dRs+
+
+ALTER SUBSCRIPTION regress_testsub SET (slot_name = NONE);
+DROP SUBSCRIPTION regress_testsub;

6) Can we do the interval testing along with alter subscription and
combined with "-- success -- 123 ms" test, that way few statements
could be reduced
+-- success -- interval is converted into ms and stored as integer
+CREATE SUBSCRIPTION regress_testsub CONNECTION
'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect =
false, min_apply_delay = '4h 27min 35s');
+
+\dRs+
+
+ALTER SUBSCRIPTION regress_testsub SET (slot_name = NONE);
+DROP SUBSCRIPTION regress_testsub;

Regards,
Vignesh



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

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: [EXTERNAL] Re: [PATCH] Support using "all" for the db user in pg_ident.conf
Следующее
От: Aleksander Alekseev
Дата:
Сообщение: Re: Flush SLRU counters in checkpointer process