On Fri, 17 Mar 2023 at 17:55, Melih Mutlu <[email protected]> wrote:
>
> Hi,
>
> Sharing v17.
>
> Amit Kapila <[email protected]>, 17 Mar 2023 Cum, 03:02 tarihinde şunu
> yazdı:
>>
>> I think to reduce the risk of breakage, let's change the check to
>> >=v16. Also, accordingly, update the doc and commit message.
>
>
> Done.
>
> Peter Smith <[email protected]>, 17 Mar 2023 Cum, 04:58 tarihinde şunu
> yazdı:
>>
>> IMO the sentence "However, logical replication in binary format is
>> more restrictive." should just be plain text.
>
>
> Done.
>
> [email protected] <[email protected]>, 17 Mar 2023 Cum, 05:26
> tarihinde şunu yazdı:
>>
>> It looks that you forgot to pass `offset` into wait_for_log().
>
>
> Yes, I somehow didn't include those lines into the patch. Thanks for
> noticing. Fixed them now.
Thanks for the updated patch, few comments:
1) Currently we refer the link to the beginning of create subscription
page, this can be changed to refer to binary option contents in create
subscription:
+ <para>
+ See the <literal>binary</literal> option of
+ <link linkend="sql-createsubscription"><command>CREATE
SUBSCRIPTION</command></link>
+ for details about copying pre-existing data in binary format.
+ </para>
2) Running pgperltidy shows the test script 014_binary.pl could be
slightly improved as in the attachment.
Regards,
Vignesh
diff --git a/doc/src/sgml/logical-replication.sgml b/doc/src/sgml/logical-replication.sgml
index bad25e54cd..9c96f900b4 100644
--- a/doc/src/sgml/logical-replication.sgml
+++ b/doc/src/sgml/logical-replication.sgml
@@ -253,7 +253,7 @@
will be filled with the default value as specified in the definition of the
target table. However, logical replication in <literal>binary</literal>
format is more restrictive. See the <literal>binary</literal> option of
- <link linkend="sql-createsubscription"><command>CREATE SUBSCRIPTION</command></link>
+ <link linkend="binary-option-create-subscription"><command>CREATE SUBSCRIPTION</command></link>
for details.
</para>
diff --git a/doc/src/sgml/ref/alter_subscription.sgml b/doc/src/sgml/ref/alter_subscription.sgml
index ccd4ed6f59..fb0ddd2d7f 100644
--- a/doc/src/sgml/ref/alter_subscription.sgml
+++ b/doc/src/sgml/ref/alter_subscription.sgml
@@ -179,7 +179,7 @@ ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> RENAME TO <
</para>
<para>
See the <literal>binary</literal> option of
- <link linkend="sql-createsubscription"><command>CREATE SUBSCRIPTION</command></link>
+ <link linkend="binary-option-create-subscription"><command>CREATE SUBSCRIPTION</command></link>
for details about copying pre-existing data in binary format.
</para>
</listitem>
diff --git a/doc/src/sgml/ref/create_subscription.sgml b/doc/src/sgml/ref/create_subscription.sgml
index e0be2b586f..edf52fa7d4 100644
--- a/doc/src/sgml/ref/create_subscription.sgml
+++ b/doc/src/sgml/ref/create_subscription.sgml
@@ -185,7 +185,7 @@ CREATE SUBSCRIPTION <replaceable class="parameter">subscription_name</replaceabl
<variablelist>
- <varlistentry>
+ <varlistentry id="binary-option-create-subscription" xreflabel="binary">
<term><literal>binary</literal> (<type>boolean</type>)</term>
<listitem>
<para>
diff --git a/src/test/subscription/t/014_binary.pl b/src/test/subscription/t/014_binary.pl
index d20f94b8d3..f5fa5976e1 100644
--- a/src/test/subscription/t/014_binary.pl
+++ b/src/test/subscription/t/014_binary.pl
@@ -57,16 +57,18 @@ $node_publisher->safe_psql(
my $publisher_connstring = $node_publisher->connstr . ' dbname=postgres';
$node_subscriber->safe_psql('postgres',
- "CREATE SUBSCRIPTION tsub CONNECTION '$publisher_connstring' "
+ "CREATE SUBSCRIPTION tsub CONNECTION '$publisher_connstring' "
. "PUBLICATION tpub WITH (slot_name = tpub_slot, binary = true)");
# Ensure the COPY command is executed in binary format on the publisher
-$node_publisher->wait_for_log(qr/LOG: ( [A-Z0-9]+:)? statement: COPY (.+)? TO STDOUT WITH \(FORMAT binary\)/);
+$node_publisher->wait_for_log(
+ qr/LOG: ( [A-Z0-9]+:)? statement: COPY (.+)? TO STDOUT WITH \(FORMAT binary\)/
+);
# Ensure nodes are in sync with each other
$node_subscriber->wait_for_subscription_sync($node_publisher, 'tsub');
-my $sync_check = qq(
+my $sync_check = qq(
SELECT a, b, c, d FROM test_numerical ORDER BY a;
SELECT a, b, c FROM test_arrays ORDER BY a;
);
@@ -207,10 +209,12 @@ $node_publisher->safe_psql(
my $offset = -s $node_subscriber->logfile;
# Refresh the publication to trigger the tablesync
-$node_subscriber->safe_psql('postgres', "ALTER SUBSCRIPTION tsub REFRESH PUBLICATION");
+$node_subscriber->safe_psql('postgres',
+ "ALTER SUBSCRIPTION tsub REFRESH PUBLICATION");
# It should fail
-$node_subscriber->wait_for_log(qr/ERROR: ( [A-Z0-9]+:)? no binary input function available for type/,
+$node_subscriber->wait_for_log(
+ qr/ERROR: ( [A-Z0-9]+:)? no binary input function available for type/,
$offset);
# Create and set send/rcv functions for the custom type
@@ -231,9 +235,10 @@ $node_subscriber->safe_psql('postgres', $ddl);
$node_subscriber->wait_for_subscription_sync($node_publisher, 'tsub');
# Check the synced data on the subscriber
-$result = $node_subscriber->safe_psql('postgres', 'SELECT a FROM test_myvarchar;');
+$result =
+ $node_subscriber->safe_psql('postgres', 'SELECT a FROM test_myvarchar;');
-is( $result, 'a', 'check synced data on subscriber with custom type');
+is($result, 'a', 'check synced data on subscriber with custom type');
# -----------------------------------------------------
# Test mismatched column types with/without binary mode
@@ -241,7 +246,7 @@ is( $result, 'a', 'check synced data on subscriber with custom type');
# Test syncing tables with mismatching column types
$node_publisher->safe_psql(
- 'postgres', qq(
+ 'postgres', qq(
CREATE TABLE public.test_mismatching_types (
a bigint PRIMARY KEY
);
@@ -253,7 +258,7 @@ $node_publisher->safe_psql(
$offset = -s $node_subscriber->logfile;
$node_subscriber->safe_psql(
- 'postgres', qq(
+ 'postgres', qq(
CREATE TABLE public.test_mismatching_types (
a int PRIMARY KEY
);
@@ -261,23 +266,26 @@ $node_subscriber->safe_psql(
));
# Cannot sync due to type mismatch
-$node_subscriber->wait_for_log(qr/ERROR: ( [A-Z0-9]+:)? incorrect binary data format/);
+$node_subscriber->wait_for_log(
+ qr/ERROR: ( [A-Z0-9]+:)? incorrect binary data format/);
# Check the publisher log from now on.
$offset = -s $node_publisher->logfile;
# Setting binary to false should allow syncing
$node_subscriber->safe_psql(
- 'postgres', qq(
+ 'postgres', qq(
ALTER SUBSCRIPTION tsub SET (binary = false);));
# Ensure the COPY command is executed in text format on the publisher
-$node_publisher->wait_for_log(qr/LOG: ( [A-Z0-9]+:)? statement: COPY (.+)? TO STDOUT\n/);
+$node_publisher->wait_for_log(
+ qr/LOG: ( [A-Z0-9]+:)? statement: COPY (.+)? TO STDOUT\n/);
$node_subscriber->wait_for_subscription_sync($node_publisher, 'tsub');
# Check the synced data on the subscriber
-$result = $node_subscriber->safe_psql('postgres', 'SELECT a FROM test_mismatching_types ORDER BY a;');
+$result = $node_subscriber->safe_psql('postgres',
+ 'SELECT a FROM test_mismatching_types ORDER BY a;');
is( $result, '1
2', 'check synced data on subscriber with binary = false');