Pre branch pgindent / pgperltidy run

Along the way make a slight adjustment to
src/include/utils/queryjumble.h to avoid an unused typedef.
This commit is contained in:
Andrew Dunstan 2021-06-28 11:05:54 -04:00
parent c31833779d
commit e1c1c30f63
No known key found for this signature in database
GPG Key ID: 99FA7FCB59FC3B81
19 changed files with 94 additions and 76 deletions

View File

@ -410,8 +410,8 @@ RelationGetBufferForTuple(Relation relation, Size len,
} }
/* /*
* If the FSM knows nothing of the rel, try the last page before we * If the FSM knows nothing of the rel, try the last page before we give
* give up and extend. This avoids one-tuple-per-page syndrome during * up and extend. This avoids one-tuple-per-page syndrome during
* bootstrapping or in a recently-started system. * bootstrapping or in a recently-started system.
*/ */
if (targetBlock == InvalidBlockNumber) if (targetBlock == InvalidBlockNumber)

View File

@ -890,11 +890,11 @@ sub morph_row_for_pgattr
# Copy the type data from pg_type, and add some type-dependent items # Copy the type data from pg_type, and add some type-dependent items
my $type = $types{$atttype}; my $type = $types{$atttype};
$row->{atttypid} = $type->{oid}; $row->{atttypid} = $type->{oid};
$row->{attlen} = $type->{typlen}; $row->{attlen} = $type->{typlen};
$row->{attbyval} = $type->{typbyval}; $row->{attbyval} = $type->{typbyval};
$row->{attalign} = $type->{typalign}; $row->{attalign} = $type->{typalign};
$row->{attstorage} = $type->{typstorage}; $row->{attstorage} = $type->{typstorage};
$row->{attcompression} = '\0'; $row->{attcompression} = '\0';
# set attndims if it's an array type # set attndims if it's an array type

View File

@ -2294,7 +2294,7 @@ StoreAttrDefault(Relation rel, AttrNumber attnum,
valuesAtt[Anum_pg_attribute_atthasdef - 1] = true; valuesAtt[Anum_pg_attribute_atthasdef - 1] = true;
replacesAtt[Anum_pg_attribute_atthasdef - 1] = true; replacesAtt[Anum_pg_attribute_atthasdef - 1] = true;
if (rel->rd_rel->relkind == RELKIND_RELATION && add_column_mode && if (rel->rd_rel->relkind == RELKIND_RELATION && add_column_mode &&
!attgenerated) !attgenerated)
{ {
expr2 = expression_planner(expr2); expr2 = expression_planner(expr2);

View File

@ -704,16 +704,16 @@ ExecInsert(ModifyTableState *mtstate,
} }
/* /*
* Initialize the batch slots. We don't know how many slots will be * Initialize the batch slots. We don't know how many slots will
* needed, so we initialize them as the batch grows, and we keep * be needed, so we initialize them as the batch grows, and we
* them across batches. To mitigate an inefficiency in how resource * keep them across batches. To mitigate an inefficiency in how
* owner handles objects with many references (as with many slots * resource owner handles objects with many references (as with
* all referencing the same tuple descriptor) we copy the tuple * many slots all referencing the same tuple descriptor) we copy
* descriptor for each slot. * the tuple descriptor for each slot.
*/ */
if (resultRelInfo->ri_NumSlots >= resultRelInfo->ri_NumSlotsInitialized) if (resultRelInfo->ri_NumSlots >= resultRelInfo->ri_NumSlotsInitialized)
{ {
TupleDesc tdesc = CreateTupleDescCopy(slot->tts_tupleDescriptor); TupleDesc tdesc = CreateTupleDescCopy(slot->tts_tupleDescriptor);
resultRelInfo->ri_Slots[resultRelInfo->ri_NumSlots] = resultRelInfo->ri_Slots[resultRelInfo->ri_NumSlots] =
MakeSingleTupleTableSlot(tdesc, slot->tts_ops); MakeSingleTupleTableSlot(tdesc, slot->tts_ops);
@ -3173,7 +3173,7 @@ ExecEndModifyTable(ModifyTableState *node)
*/ */
for (i = 0; i < node->mt_nrels; i++) for (i = 0; i < node->mt_nrels; i++)
{ {
int j; int j;
ResultRelInfo *resultRelInfo = node->resultRelInfo + i; ResultRelInfo *resultRelInfo = node->resultRelInfo + i;
if (!resultRelInfo->ri_usesFdwDirectModify && if (!resultRelInfo->ri_usesFdwDirectModify &&
@ -3183,8 +3183,9 @@ ExecEndModifyTable(ModifyTableState *node)
resultRelInfo); resultRelInfo);
/* /*
* Cleanup the initialized batch slots. This only matters for FDWs with * Cleanup the initialized batch slots. This only matters for FDWs
* batching, but the other cases will have ri_NumSlotsInitialized == 0. * with batching, but the other cases will have ri_NumSlotsInitialized
* == 0.
*/ */
for (j = 0; j < resultRelInfo->ri_NumSlotsInitialized; j++) for (j = 0; j < resultRelInfo->ri_NumSlotsInitialized; j++)
{ {

View File

@ -2215,8 +2215,8 @@ ReorderBufferProcessTXN(ReorderBuffer *rb, ReorderBufferTXN *txn,
change_done: change_done:
/* /*
* If speculative insertion was confirmed, the record isn't * If speculative insertion was confirmed, the record
* needed anymore. * isn't needed anymore.
*/ */
if (specinsert != NULL) if (specinsert != NULL)
{ {

View File

@ -759,7 +759,7 @@ fetch_remote_table_info(char *nspname, char *relname,
" ORDER BY a.attnum", " ORDER BY a.attnum",
lrel->remoteid, lrel->remoteid,
(walrcv_server_version(LogRepWorkerWalRcvConn) >= 120000 ? (walrcv_server_version(LogRepWorkerWalRcvConn) >= 120000 ?
"AND a.attgenerated = ''" : ""), "AND a.attgenerated = ''" : ""),
lrel->remoteid); lrel->remoteid);
res = walrcv_exec(LogRepWorkerWalRcvConn, cmd.data, res = walrcv_exec(LogRepWorkerWalRcvConn, cmd.data,
lengthof(attrRow), attrRow); lengthof(attrRow), attrRow);

View File

@ -1031,7 +1031,8 @@ get_rel_sync_entry(PGOutputData *data, Oid relid)
entry->pubactions.pubinsert = entry->pubactions.pubupdate = entry->pubactions.pubinsert = entry->pubactions.pubupdate =
entry->pubactions.pubdelete = entry->pubactions.pubtruncate = false; entry->pubactions.pubdelete = entry->pubactions.pubtruncate = false;
entry->publish_as_relid = InvalidOid; entry->publish_as_relid = InvalidOid;
entry->map = NULL; /* will be set by maybe_send_schema() if needed */ entry->map = NULL; /* will be set by maybe_send_schema() if
* needed */
} }
/* Validate the entry */ /* Validate the entry */

View File

@ -1974,7 +1974,7 @@ GetOldestNonRemovableTransactionId(Relation rel)
if (rel == NULL || rel->rd_rel->relisshared || RecoveryInProgress()) if (rel == NULL || rel->rd_rel->relisshared || RecoveryInProgress())
return horizons.shared_oldest_nonremovable; return horizons.shared_oldest_nonremovable;
else if (IsCatalogRelation(rel) || else if (IsCatalogRelation(rel) ||
RelationIsAccessibleInLogicalDecoding(rel)) RelationIsAccessibleInLogicalDecoding(rel))
return horizons.catalog_oldest_nonremovable; return horizons.catalog_oldest_nonremovable;
else if (RELATION_IS_LOCAL(rel)) else if (RELATION_IS_LOCAL(rel))
return horizons.temp_oldest_nonremovable; return horizons.temp_oldest_nonremovable;

View File

@ -1093,7 +1093,7 @@ SELECT LEAST(} . join(', ', (':i') x 256) . q{)}
], ],
[ 'gset alone', 1, [qr{gset must follow an SQL command}], q{\gset} ], [ 'gset alone', 1, [qr{gset must follow an SQL command}], q{\gset} ],
[ [
'gset no SQL', 1, 'gset no SQL', 1,
[qr{gset must follow an SQL command}], q{\set i +1 [qr{gset must follow an SQL command}], q{\set i +1
\gset} \gset}
], ],
@ -1102,7 +1102,7 @@ SELECT LEAST(} . join(', ', (':i') x 256) . q{)}
[qr{too many arguments}], q{SELECT 1 \gset a b} [qr{too many arguments}], q{SELECT 1 \gset a b}
], ],
[ [
'gset after gset', 1, 'gset after gset', 1,
[qr{gset must follow an SQL command}], q{SELECT 1 AS i \gset [qr{gset must follow an SQL command}], q{SELECT 1 AS i \gset
\gset} \gset}
], ],
@ -1197,7 +1197,7 @@ sub check_pgbench_logs
my $contents_raw = slurp_file($log); my $contents_raw = slurp_file($log);
my @contents = split(/\n/, $contents_raw); my @contents = split(/\n/, $contents_raw);
my $clen = @contents; my $clen = @contents;
ok( $min <= $clen && $clen <= $max, ok( $min <= $clen && $clen <= $max,
"transaction count for $log ($clen)"); "transaction count for $log ($clen)");
my $clen_match = grep(/$re/, @contents); my $clen_match = grep(/$re/, @contents);

View File

@ -462,7 +462,7 @@ typedef struct ResultRelInfo
/* batch insert stuff */ /* batch insert stuff */
int ri_NumSlots; /* number of slots in the array */ int ri_NumSlots; /* number of slots in the array */
int ri_NumSlotsInitialized; /* number of initialized slots */ int ri_NumSlotsInitialized; /* number of initialized slots */
int ri_BatchSize; /* max slots inserted in a single batch */ int ri_BatchSize; /* max slots inserted in a single batch */
TupleTableSlot **ri_Slots; /* input tuples for batch insert */ TupleTableSlot **ri_Slots; /* input tuples for batch insert */
TupleTableSlot **ri_PlanSlots; TupleTableSlot **ri_PlanSlots;

View File

@ -53,12 +53,12 @@ typedef struct JumbleState
} JumbleState; } JumbleState;
/* Values for the compute_query_id GUC */ /* Values for the compute_query_id GUC */
typedef enum enum ComputeQueryIdType
{ {
COMPUTE_QUERY_ID_OFF, COMPUTE_QUERY_ID_OFF,
COMPUTE_QUERY_ID_ON, COMPUTE_QUERY_ID_ON,
COMPUTE_QUERY_ID_AUTO COMPUTE_QUERY_ID_AUTO
} ComputeQueryIdType; };
/* GUC parameters */ /* GUC parameters */
extern int compute_query_id; extern int compute_query_id;

View File

@ -2126,8 +2126,8 @@ sub poll_query_until
$expected = 't' unless defined($expected); # default value $expected = 't' unless defined($expected); # default value
my $cmd = [ my $cmd = [
$self->installed_command('psql'), $self->installed_command('psql'), '-XAt',
'-XAt', '-d', $self->connstr($dbname) '-d', $self->connstr($dbname)
]; ];
my ($stdout, $stderr); my ($stdout, $stderr);
my $max_attempts = 180 * 10; my $max_attempts = 180 * 10;

View File

@ -64,9 +64,10 @@ $node_standby2->init_from_backup($node_primary, $backup_name,
$node_standby2->start; $node_standby2->start;
# Recovery is not yet paused. # Recovery is not yet paused.
is($node_standby2->safe_psql('postgres', is( $node_standby2->safe_psql(
"SELECT pg_get_wal_replay_pause_state()"), 'postgres', "SELECT pg_get_wal_replay_pause_state()"),
'not paused', 'pg_get_wal_replay_pause_state() reports not paused'); 'not paused',
'pg_get_wal_replay_pause_state() reports not paused');
# Request to pause recovery and wait until it's actually paused. # Request to pause recovery and wait until it's actually paused.
$node_standby2->safe_psql('postgres', "SELECT pg_wal_replay_pause()"); $node_standby2->safe_psql('postgres', "SELECT pg_wal_replay_pause()");
@ -74,28 +75,28 @@ $node_primary->safe_psql('postgres',
"INSERT INTO tab_int VALUES (generate_series(21,30))"); "INSERT INTO tab_int VALUES (generate_series(21,30))");
$node_standby2->poll_query_until('postgres', $node_standby2->poll_query_until('postgres',
"SELECT pg_get_wal_replay_pause_state() = 'paused'") "SELECT pg_get_wal_replay_pause_state() = 'paused'")
or die "Timed out while waiting for recovery to be paused"; or die "Timed out while waiting for recovery to be paused";
# Even if new WAL records are streamed from the primary, # Even if new WAL records are streamed from the primary,
# recovery in the paused state doesn't replay them. # recovery in the paused state doesn't replay them.
my $receive_lsn = $node_standby2->safe_psql('postgres', my $receive_lsn =
"SELECT pg_last_wal_receive_lsn()"); $node_standby2->safe_psql('postgres', "SELECT pg_last_wal_receive_lsn()");
my $replay_lsn = $node_standby2->safe_psql('postgres', my $replay_lsn =
"SELECT pg_last_wal_replay_lsn()"); $node_standby2->safe_psql('postgres', "SELECT pg_last_wal_replay_lsn()");
$node_primary->safe_psql('postgres', $node_primary->safe_psql('postgres',
"INSERT INTO tab_int VALUES (generate_series(31,40))"); "INSERT INTO tab_int VALUES (generate_series(31,40))");
$node_standby2->poll_query_until('postgres', $node_standby2->poll_query_until('postgres',
"SELECT '$receive_lsn'::pg_lsn < pg_last_wal_receive_lsn()") "SELECT '$receive_lsn'::pg_lsn < pg_last_wal_receive_lsn()")
or die "Timed out while waiting for new WAL to be streamed"; or die "Timed out while waiting for new WAL to be streamed";
is($node_standby2->safe_psql('postgres', is( $node_standby2->safe_psql('postgres', "SELECT pg_last_wal_replay_lsn()"),
"SELECT pg_last_wal_replay_lsn()"), qq($replay_lsn),
qq($replay_lsn), 'no WAL is replayed in the paused state'); 'no WAL is replayed in the paused state');
# Request to resume recovery and wait until it's actually resumed. # Request to resume recovery and wait until it's actually resumed.
$node_standby2->safe_psql('postgres', "SELECT pg_wal_replay_resume()"); $node_standby2->safe_psql('postgres', "SELECT pg_wal_replay_resume()");
$node_standby2->poll_query_until('postgres', $node_standby2->poll_query_until('postgres',
"SELECT pg_get_wal_replay_pause_state() = 'not paused' AND pg_last_wal_replay_lsn() > '$replay_lsn'::pg_lsn") "SELECT pg_get_wal_replay_pause_state() = 'not paused' AND pg_last_wal_replay_lsn() > '$replay_lsn'::pg_lsn"
or die "Timed out while waiting for recovery to be resumed"; ) or die "Timed out while waiting for recovery to be resumed";
# Check that the paused state ends and promotion continues if a promotion # Check that the paused state ends and promotion continues if a promotion
# is triggered while recovery is paused. # is triggered while recovery is paused.
@ -107,6 +108,5 @@ $node_standby2->poll_query_until('postgres',
or die "Timed out while waiting for recovery to be paused"; or die "Timed out while waiting for recovery to be paused";
$node_standby2->promote; $node_standby2->promote;
$node_standby2->poll_query_until('postgres', $node_standby2->poll_query_until('postgres', "SELECT NOT pg_is_in_recovery()")
"SELECT NOT pg_is_in_recovery()")
or die "Timed out while waiting for promotion to finish"; or die "Timed out while waiting for promotion to finish";

View File

@ -32,13 +32,14 @@ my $perlbin = TestLib::perl2host($^X);
$perlbin =~ s!\\!/!g if $TestLib::windows_os; $perlbin =~ s!\\!/!g if $TestLib::windows_os;
my $archivedir_primary = $node_primary->archive_dir; my $archivedir_primary = $node_primary->archive_dir;
$archivedir_primary =~ s!\\!/!g if $TestLib::windows_os; $archivedir_primary =~ s!\\!/!g if $TestLib::windows_os;
$node_primary->append_conf('postgresql.conf', qq( $node_primary->append_conf(
'postgresql.conf', qq(
archive_command = '"$perlbin" "$FindBin::RealBin/cp_history_files" "%p" "$archivedir_primary/%f"' archive_command = '"$perlbin" "$FindBin::RealBin/cp_history_files" "%p" "$archivedir_primary/%f"'
wal_keep_size=128MB wal_keep_size=128MB
)); ));
# Make sure that Msys perl doesn't complain about difficulty in setting locale # Make sure that Msys perl doesn't complain about difficulty in setting locale
# when called from the archive_command. # when called from the archive_command.
local $ENV{PERL_BADLANG}=0; local $ENV{PERL_BADLANG} = 0;
$node_primary->start; $node_primary->start;
# Take backup from primary # Take backup from primary
@ -47,8 +48,11 @@ $node_primary->backup($backup_name);
# Create streaming standby linking to primary # Create streaming standby linking to primary
my $node_standby = get_new_node('standby'); my $node_standby = get_new_node('standby');
$node_standby->init_from_backup($node_primary, $backup_name, $node_standby->init_from_backup(
allows_streaming => 1, has_streaming => 1, has_archiving => 1); $node_primary, $backup_name,
allows_streaming => 1,
has_streaming => 1,
has_archiving => 1);
$node_standby->start; $node_standby->start;
# Take backup of standby, use -Xnone so that pg_wal is empty. # Take backup of standby, use -Xnone so that pg_wal is empty.
@ -60,7 +64,8 @@ my $node_cascade = get_new_node('cascade');
$node_cascade->init_from_backup($node_standby, $backup_name, $node_cascade->init_from_backup($node_standby, $backup_name,
has_streaming => 1); has_streaming => 1);
$node_cascade->enable_restoring($node_primary); $node_cascade->enable_restoring($node_primary);
$node_cascade->append_conf('postgresql.conf', qq( $node_cascade->append_conf(
'postgresql.conf', qq(
recovery_target_timeline='latest' recovery_target_timeline='latest'
)); ));
@ -68,9 +73,8 @@ recovery_target_timeline='latest'
$node_standby->promote; $node_standby->promote;
# Wait for promotion to complete # Wait for promotion to complete
$node_standby->poll_query_until('postgres', $node_standby->poll_query_until('postgres', "SELECT NOT pg_is_in_recovery();")
"SELECT NOT pg_is_in_recovery();") or die "Timed out while waiting for promotion";
or die "Timed out while waiting for promotion";
# Find next WAL segment to be archived # Find next WAL segment to be archived
my $walfile_to_be_archived = $node_standby->safe_psql('postgres', my $walfile_to_be_archived = $node_standby->safe_psql('postgres',

View File

@ -51,8 +51,11 @@ $node_publisher->safe_psql('postgres',
"ALTER TABLE tab_nothing REPLICA IDENTITY NOTHING"); "ALTER TABLE tab_nothing REPLICA IDENTITY NOTHING");
# Replicate the changes without replica identity index # Replicate the changes without replica identity index
$node_publisher->safe_psql('postgres', "CREATE TABLE tab_no_replidentity_index(c1 int)"); $node_publisher->safe_psql('postgres',
$node_publisher->safe_psql('postgres', "CREATE INDEX idx_no_replidentity_index ON tab_no_replidentity_index(c1)"); "CREATE TABLE tab_no_replidentity_index(c1 int)");
$node_publisher->safe_psql('postgres',
"CREATE INDEX idx_no_replidentity_index ON tab_no_replidentity_index(c1)"
);
# Setup structure on subscriber # Setup structure on subscriber
$node_subscriber->safe_psql('postgres', "CREATE TABLE tab_notrep (a int)"); $node_subscriber->safe_psql('postgres', "CREATE TABLE tab_notrep (a int)");
@ -78,8 +81,11 @@ $node_subscriber->safe_psql('postgres',
); );
# replication of the table without replica identity index # replication of the table without replica identity index
$node_subscriber->safe_psql('postgres', "CREATE TABLE tab_no_replidentity_index(c1 int)"); $node_subscriber->safe_psql('postgres',
$node_subscriber->safe_psql('postgres', "CREATE INDEX idx_no_replidentity_index ON tab_no_replidentity_index(c1)"); "CREATE TABLE tab_no_replidentity_index(c1 int)");
$node_subscriber->safe_psql('postgres',
"CREATE INDEX idx_no_replidentity_index ON tab_no_replidentity_index(c1)"
);
# Setup logical replication # Setup logical replication
my $publisher_connstr = $node_publisher->connstr . ' dbname=postgres'; my $publisher_connstr = $node_publisher->connstr . ' dbname=postgres';
@ -137,7 +143,8 @@ $node_publisher->safe_psql('postgres',
"DELETE FROM tab_include WHERE a > 20"); "DELETE FROM tab_include WHERE a > 20");
$node_publisher->safe_psql('postgres', "UPDATE tab_include SET a = -a"); $node_publisher->safe_psql('postgres', "UPDATE tab_include SET a = -a");
$node_publisher->safe_psql('postgres', "INSERT INTO tab_no_replidentity_index VALUES(1)"); $node_publisher->safe_psql('postgres',
"INSERT INTO tab_no_replidentity_index VALUES(1)");
$node_publisher->wait_for_catchup('tap_sub'); $node_publisher->wait_for_catchup('tap_sub');
@ -162,8 +169,10 @@ $result = $node_subscriber->safe_psql('postgres',
is($result, qq(20|-20|-1), is($result, qq(20|-20|-1),
'check replicated changes with primary key index with included columns'); 'check replicated changes with primary key index with included columns');
is($node_subscriber->safe_psql('postgres', q(SELECT c1 FROM tab_no_replidentity_index)), is( $node_subscriber->safe_psql(
1, "value replicated to subscriber without replica identity index"); 'postgres', q(SELECT c1 FROM tab_no_replidentity_index)),
1,
"value replicated to subscriber without replica identity index");
# insert some duplicate rows # insert some duplicate rows
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres',

View File

@ -197,11 +197,9 @@ $node_publisher->safe_psql('postgres', "SELECT pg_reload_conf()");
# test that truncate works for logical replication when there are multiple # test that truncate works for logical replication when there are multiple
# subscriptions for a single table # subscriptions for a single table
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres', "CREATE TABLE tab5 (a int)");
"CREATE TABLE tab5 (a int)");
$node_subscriber->safe_psql('postgres', $node_subscriber->safe_psql('postgres', "CREATE TABLE tab5 (a int)");
"CREATE TABLE tab5 (a int)");
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres',
"CREATE PUBLICATION pub5 FOR TABLE tab5"); "CREATE PUBLICATION pub5 FOR TABLE tab5");
@ -235,8 +233,7 @@ $node_publisher->wait_for_catchup('sub5_2');
$result = $node_subscriber->safe_psql('postgres', $result = $node_subscriber->safe_psql('postgres',
"SELECT count(*), min(a), max(a) FROM tab5"); "SELECT count(*), min(a), max(a) FROM tab5");
is($result, qq(0||), is($result, qq(0||), 'truncate replicated for multiple subscriptions');
'truncate replicated for multiple subscriptions');
# check deadlocks # check deadlocks
$result = $node_subscriber->safe_psql('postgres', $result = $node_subscriber->safe_psql('postgres',

View File

@ -673,7 +673,8 @@ is($result, qq(), 'truncate of tab3_1 replicated');
# check that the map to convert tuples from leaf partition to the root # check that the map to convert tuples from leaf partition to the root
# table is correctly rebuilt when a new column is added # table is correctly rebuilt when a new column is added
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres',
"ALTER TABLE tab2 DROP b, ADD COLUMN c text DEFAULT 'pub_tab2', ADD b text"); "ALTER TABLE tab2 DROP b, ADD COLUMN c text DEFAULT 'pub_tab2', ADD b text"
);
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres',
"INSERT INTO tab2 (a, b) VALUES (1, 'xxx'), (3, 'yyy'), (5, 'zzz')"); "INSERT INTO tab2 (a, b) VALUES (1, 'xxx'), (3, 'yyy'), (5, 'zzz')");
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres',

View File

@ -11,8 +11,7 @@ use Test::More tests => 5;
# Create publisher node # Create publisher node
my $node_publisher = get_new_node('publisher'); my $node_publisher = get_new_node('publisher');
$node_publisher->init(allows_streaming => 'logical'); $node_publisher->init(allows_streaming => 'logical');
$node_publisher->append_conf('postgresql.conf', $node_publisher->append_conf('postgresql.conf', 'autovacuum = off');
'autovacuum = off');
$node_publisher->start; $node_publisher->start;
# Create subscriber node # Create subscriber node
@ -43,8 +42,10 @@ $node_publisher->wait_for_catchup('tap_sub');
$node_subscriber->safe_psql('postgres', "ALTER SUBSCRIPTION tap_sub DISABLE"); $node_subscriber->safe_psql('postgres', "ALTER SUBSCRIPTION tap_sub DISABLE");
# wait for the replication slot to become inactive in the publisher # wait for the replication slot to become inactive in the publisher
$node_publisher->poll_query_until('postgres', $node_publisher->poll_query_until(
"SELECT COUNT(*) FROM pg_catalog.pg_replication_slots WHERE slot_name = 'tap_sub' AND active='f'", 1); 'postgres',
"SELECT COUNT(*) FROM pg_catalog.pg_replication_slots WHERE slot_name = 'tap_sub' AND active='f'",
1);
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres',
"SELECT pg_logical_emit_message(true, 'pgoutput', 'a transactional message')" "SELECT pg_logical_emit_message(true, 'pgoutput', 'a transactional message')"

View File

@ -113,6 +113,7 @@ Append
AppendPath AppendPath
AppendRelInfo AppendRelInfo
AppendState AppendState
ApplyExecutionData
ApplySubXactData ApplySubXactData
Archive Archive
ArchiveEntryPtrType ArchiveEntryPtrType
@ -1163,6 +1164,7 @@ IpcSemaphoreKey
IsForeignPathAsyncCapable_function IsForeignPathAsyncCapable_function
IsForeignRelUpdatable_function IsForeignRelUpdatable_function
IsForeignScanParallelSafe_function IsForeignScanParallelSafe_function
IsoConnInfo
IspellDict IspellDict
Item Item
ItemId ItemId
@ -1683,7 +1685,6 @@ PLpgSQL_stmt_return
PLpgSQL_stmt_return_next PLpgSQL_stmt_return_next
PLpgSQL_stmt_return_query PLpgSQL_stmt_return_query
PLpgSQL_stmt_rollback PLpgSQL_stmt_rollback
PLpgSQL_stmt_set
PLpgSQL_stmt_type PLpgSQL_stmt_type
PLpgSQL_stmt_while PLpgSQL_stmt_while
PLpgSQL_trigtype PLpgSQL_trigtype
@ -1872,6 +1873,9 @@ PerlInterpreter
Perl_check_t Perl_check_t
Perl_ppaddr_t Perl_ppaddr_t
Permutation Permutation
PermutationStep
PermutationStepBlocker
PermutationStepBlockerType
PgArchData PgArchData
PgBackendGSSStatus PgBackendGSSStatus
PgBackendSSLStatus PgBackendSSLStatus
@ -2416,7 +2420,6 @@ SlabBlock
SlabChunk SlabChunk
SlabContext SlabContext
SlabSlot SlabSlot
SlotAcquireBehavior
SlotErrCallbackArg SlotErrCallbackArg
SlotNumber SlotNumber
SlruCtl SlruCtl
@ -2496,6 +2499,7 @@ StatsData
StatsElem StatsElem
StatsExtInfo StatsExtInfo
StdAnalyzeData StdAnalyzeData
StdRdOptIndexCleanup
StdRdOptions StdRdOptions
Step Step
StopList StopList
@ -2777,7 +2781,7 @@ UserOpts
VacAttrStats VacAttrStats
VacAttrStatsP VacAttrStatsP
VacErrPhase VacErrPhase
VacOptTernaryValue VacOptValue
VacuumParams VacuumParams
VacuumRelation VacuumRelation
VacuumStmt VacuumStmt