Final pgindent + perltidy run for v10.

This commit is contained in:
Tom Lane 2017-08-14 17:29:33 -04:00
parent 5b6289c1e0
commit 21d304dfed
46 changed files with 273 additions and 273 deletions

View File

@ -1320,10 +1320,10 @@ _hash_splitbucket(Relation rel,
/* /*
* If possible, clean up the old bucket. We might not be able to do this * If possible, clean up the old bucket. We might not be able to do this
* if someone else has a pin on it, but if not then we can go ahead. This * if someone else has a pin on it, but if not then we can go ahead. This
* isn't absolutely necessary, but it reduces bloat; if we don't do it now, * isn't absolutely necessary, but it reduces bloat; if we don't do it
* VACUUM will do it eventually, but maybe not until new overflow pages * now, VACUUM will do it eventually, but maybe not until new overflow
* have been allocated. Note that there's no need to clean up the new * pages have been allocated. Note that there's no need to clean up the
* bucket. * new bucket.
*/ */
if (IsBufferCleanupOK(bucket_obuf)) if (IsBufferCleanupOK(bucket_obuf))
{ {

View File

@ -233,7 +233,7 @@ SimpleLruInit(SlruCtl ctl, const char *name, int nslots, int nlsns,
} }
/* Should fit to estimated shmem size */ /* Should fit to estimated shmem size */
Assert(ptr - (char *) shared <= SimpleLruShmemSize(nslots, nlsns)); Assert(ptr - (char *) shared <= SimpleLruShmemSize(nslots, nlsns));
} }
else else
Assert(found); Assert(found);

View File

@ -3802,14 +3802,14 @@ InitTempTableNamespace(void)
get_database_name(MyDatabaseId)))); get_database_name(MyDatabaseId))));
/* /*
* Do not allow a Hot Standby session to make temp tables. Aside * Do not allow a Hot Standby session to make temp tables. Aside from
* from problems with modifying the system catalogs, there is a naming * problems with modifying the system catalogs, there is a naming
* conflict: pg_temp_N belongs to the session with BackendId N on the * conflict: pg_temp_N belongs to the session with BackendId N on the
* master, not to a hot standby session with the same BackendId. We should not * master, not to a hot standby session with the same BackendId. We
* be able to get here anyway due to XactReadOnly checks, but let's just * should not be able to get here anyway due to XactReadOnly checks, but
* make real sure. Note that this also backstops various operations that * let's just make real sure. Note that this also backstops various
* allow XactReadOnly transactions to modify temp tables; they'd need * operations that allow XactReadOnly transactions to modify temp tables;
* RecoveryInProgress checks if not for this. * they'd need RecoveryInProgress checks if not for this.
*/ */
if (RecoveryInProgress()) if (RecoveryInProgress())
ereport(ERROR, ereport(ERROR,

View File

@ -728,9 +728,9 @@ check_new_partition_bound(char *relname, Relation parent,
errmsg("empty range bound specified for partition \"%s\"", errmsg("empty range bound specified for partition \"%s\"",
relname), relname),
errdetail("Specified lower bound %s is greater than or equal to upper bound %s.", errdetail("Specified lower bound %s is greater than or equal to upper bound %s.",
get_range_partbound_string(spec->lowerdatums), get_range_partbound_string(spec->lowerdatums),
get_range_partbound_string(spec->upperdatums)), get_range_partbound_string(spec->upperdatums)),
parser_errposition(pstate, spec->location))); parser_errposition(pstate, spec->location)));
} }
if (partdesc->nparts > 0) if (partdesc->nparts > 0)

View File

@ -1454,7 +1454,7 @@ BeginCopy(ParseState *pstate,
*/ */
if (cstate->transition_capture != NULL) if (cstate->transition_capture != NULL)
{ {
int i; int i;
cstate->transition_tupconv_maps = (TupleConversionMap **) cstate->transition_tupconv_maps = (TupleConversionMap **)
palloc0(sizeof(TupleConversionMap *) * palloc0(sizeof(TupleConversionMap *) *
@ -2651,6 +2651,7 @@ CopyFrom(CopyState cstate)
cstate->transition_capture->tcs_map = NULL; cstate->transition_capture->tcs_map = NULL;
} }
} }
/* /*
* We might need to convert from the parent rowtype to the * We might need to convert from the parent rowtype to the
* partition rowtype. * partition rowtype.

View File

@ -919,9 +919,10 @@ DropSubscription(DropSubscriptionStmt *stmt, bool isTopLevel)
LWLockAcquire(LogicalRepWorkerLock, LW_SHARED); LWLockAcquire(LogicalRepWorkerLock, LW_SHARED);
subworkers = logicalrep_workers_find(subid, false); subworkers = logicalrep_workers_find(subid, false);
LWLockRelease(LogicalRepWorkerLock); LWLockRelease(LogicalRepWorkerLock);
foreach (lc, subworkers) foreach(lc, subworkers)
{ {
LogicalRepWorker *w = (LogicalRepWorker *) lfirst(lc); LogicalRepWorker *w = (LogicalRepWorker *) lfirst(lc);
if (slotname) if (slotname)
logicalrep_worker_stop(w->subid, w->relid); logicalrep_worker_stop(w->subid, w->relid);
else else

View File

@ -13509,8 +13509,8 @@ ATExecAttachPartition(List **wqueue, Relation rel, PartitionCmd *cmd)
* having to construct this list again, so we request the strongest lock * having to construct this list again, so we request the strongest lock
* on all partitions. We need the strongest lock, because we may decide * on all partitions. We need the strongest lock, because we may decide
* to scan them if we find out that the table being attached (or its leaf * to scan them if we find out that the table being attached (or its leaf
* partitions) may contain rows that violate the partition constraint. * partitions) may contain rows that violate the partition constraint. If
* If the table has a constraint that would prevent such rows, which by * the table has a constraint that would prevent such rows, which by
* definition is present in all the partitions, we need not scan the * definition is present in all the partitions, we need not scan the
* table, nor its partitions. But we cannot risk a deadlock by taking a * table, nor its partitions. But we cannot risk a deadlock by taking a
* weaker lock now and the stronger one only when needed. * weaker lock now and the stronger one only when needed.

View File

@ -2071,11 +2071,11 @@ FindTriggerIncompatibleWithInheritance(TriggerDesc *trigdesc)
{ {
if (trigdesc != NULL) if (trigdesc != NULL)
{ {
int i; int i;
for (i = 0; i < trigdesc->numtriggers; ++i) for (i = 0; i < trigdesc->numtriggers; ++i)
{ {
Trigger *trigger = &trigdesc->triggers[i]; Trigger *trigger = &trigdesc->triggers[i];
if (trigger->tgoldtable != NULL || trigger->tgnewtable != NULL) if (trigger->tgoldtable != NULL || trigger->tgnewtable != NULL)
return trigger->tgname; return trigger->tgname;
@ -5253,12 +5253,12 @@ AfterTriggerSaveEvent(EState *estate, ResultRelInfo *relinfo,
*/ */
if (row_trigger && transition_capture != NULL) if (row_trigger && transition_capture != NULL)
{ {
HeapTuple original_insert_tuple = transition_capture->tcs_original_insert_tuple; HeapTuple original_insert_tuple = transition_capture->tcs_original_insert_tuple;
TupleConversionMap *map = transition_capture->tcs_map; TupleConversionMap *map = transition_capture->tcs_map;
bool delete_old_table = transition_capture->tcs_delete_old_table; bool delete_old_table = transition_capture->tcs_delete_old_table;
bool update_old_table = transition_capture->tcs_update_old_table; bool update_old_table = transition_capture->tcs_update_old_table;
bool update_new_table = transition_capture->tcs_update_new_table; bool update_new_table = transition_capture->tcs_update_new_table;
bool insert_new_table = transition_capture->tcs_insert_new_table;; bool insert_new_table = transition_capture->tcs_insert_new_table;;
if ((event == TRIGGER_EVENT_DELETE && delete_old_table) || if ((event == TRIGGER_EVENT_DELETE && delete_old_table) ||
(event == TRIGGER_EVENT_UPDATE && update_old_table)) (event == TRIGGER_EVENT_UPDATE && update_old_table))

View File

@ -529,11 +529,11 @@ lazy_scan_heap(Relation onerel, int options, LVRelStats *vacrelstats,
* safely set for relfrozenxid or relminmxid. * safely set for relfrozenxid or relminmxid.
* *
* Before entering the main loop, establish the invariant that * Before entering the main loop, establish the invariant that
* next_unskippable_block is the next block number >= blkno that we * next_unskippable_block is the next block number >= blkno that we can't
* can't skip based on the visibility map, either all-visible for a * skip based on the visibility map, either all-visible for a regular scan
* regular scan or all-frozen for an aggressive scan. We set it to * or all-frozen for an aggressive scan. We set it to nblocks if there's
* nblocks if there's no such block. We also set up the skipping_blocks * no such block. We also set up the skipping_blocks flag correctly at
* flag correctly at this stage. * this stage.
* *
* Note: The value returned by visibilitymap_get_status could be slightly * Note: The value returned by visibilitymap_get_status could be slightly
* out-of-date, since we make this test before reading the corresponding * out-of-date, since we make this test before reading the corresponding

View File

@ -411,9 +411,9 @@ ExecProcNodeFirst(PlanState *node)
/* /*
* Perform stack depth check during the first execution of the node. We * Perform stack depth check during the first execution of the node. We
* only do so the first time round because it turns out to not be cheap on * only do so the first time round because it turns out to not be cheap on
* some common architectures (eg. x86). This relies on the assumption that * some common architectures (eg. x86). This relies on the assumption
* ExecProcNode calls for a given plan node will always be made at roughly * that ExecProcNode calls for a given plan node will always be made at
* the same stack depth. * roughly the same stack depth.
*/ */
check_stack_depth(); check_stack_depth();

View File

@ -1469,7 +1469,7 @@ static void
ExecSetupTransitionCaptureState(ModifyTableState *mtstate, EState *estate) ExecSetupTransitionCaptureState(ModifyTableState *mtstate, EState *estate)
{ {
ResultRelInfo *targetRelInfo = getASTriggerResultRelInfo(mtstate); ResultRelInfo *targetRelInfo = getASTriggerResultRelInfo(mtstate);
int i; int i;
/* Check for transition tables on the directly targeted relation. */ /* Check for transition tables on the directly targeted relation. */
mtstate->mt_transition_capture = mtstate->mt_transition_capture =
@ -1483,7 +1483,7 @@ ExecSetupTransitionCaptureState(ModifyTableState *mtstate, EState *estate)
if (mtstate->mt_transition_capture != NULL) if (mtstate->mt_transition_capture != NULL)
{ {
ResultRelInfo *resultRelInfos; ResultRelInfo *resultRelInfos;
int numResultRelInfos; int numResultRelInfos;
/* Find the set of partitions so that we can find their TupleDescs. */ /* Find the set of partitions so that we can find their TupleDescs. */
if (mtstate->mt_partition_dispatch_info != NULL) if (mtstate->mt_partition_dispatch_info != NULL)
@ -2254,8 +2254,8 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags)
else if (relkind == RELKIND_FOREIGN_TABLE) else if (relkind == RELKIND_FOREIGN_TABLE)
{ {
/* /*
* When there is a row-level trigger, there should be a * When there is a row-level trigger, there should be
* wholerow attribute. * a wholerow attribute.
*/ */
j->jf_junkAttNo = ExecFindJunkAttribute(j, "wholerow"); j->jf_junkAttNo = ExecFindJunkAttribute(j, "wholerow");
} }

View File

@ -730,9 +730,10 @@ be_tls_write(Port *port, void *ptr, size_t len, int *waitfor)
n = -1; n = -1;
break; break;
case SSL_ERROR_ZERO_RETURN: case SSL_ERROR_ZERO_RETURN:
/* /*
* the SSL connnection was closed, leave it to the caller * the SSL connnection was closed, leave it to the caller to
* to ereport it * ereport it
*/ */
errno = ECONNRESET; errno = ECONNRESET;
n = -1; n = -1;

View File

@ -46,7 +46,7 @@
*/ */
int int
cx(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring, cx(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring,
int num_gene, City *city_table) int num_gene, City * city_table)
{ {
int i, int i,
start_pos, start_pos,

View File

@ -45,7 +45,7 @@
*/ */
void void
ox1(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring, int num_gene, ox1(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring, int num_gene,
City *city_table) City * city_table)
{ {
int left, int left,
right, right,

View File

@ -44,7 +44,7 @@
* position crossover * position crossover
*/ */
void void
ox2(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring, int num_gene, City *city_table) ox2(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring, int num_gene, City * city_table)
{ {
int k, int k,
j, j,

View File

@ -45,7 +45,7 @@
*/ */
void void
px(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring, int num_gene, px(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring, int num_gene,
City *city_table) City * city_table)
{ {
int num_positions; int num_positions;
int i, int i,

View File

@ -84,7 +84,7 @@ alloc_city_table(PlannerInfo *root, int num_gene)
* deallocate memory of city table * deallocate memory of city table
*/ */
void void
free_city_table(PlannerInfo *root, City *city_table) free_city_table(PlannerInfo *root, City * city_table)
{ {
pfree(city_table); pfree(city_table);
} }

View File

@ -2131,8 +2131,8 @@ transformCheckConstraints(CreateStmtContext *cxt, bool skipValidation)
/* /*
* If creating a new table (but not a foreign table), we can safely skip * If creating a new table (but not a foreign table), we can safely skip
* validation of check constraints, and nonetheless mark them valid. * validation of check constraints, and nonetheless mark them valid. (This
* (This will override any user-supplied NOT VALID flag.) * will override any user-supplied NOT VALID flag.)
*/ */
if (skipValidation) if (skipValidation)
{ {

View File

@ -75,8 +75,8 @@ LogicalRepCtxStruct *LogicalRepCtx;
typedef struct LogicalRepWorkerId typedef struct LogicalRepWorkerId
{ {
Oid subid; Oid subid;
Oid relid; Oid relid;
} LogicalRepWorkerId; } LogicalRepWorkerId;
static List *on_commit_stop_workers = NIL; static List *on_commit_stop_workers = NIL;
@ -552,7 +552,7 @@ void
logicalrep_worker_stop_at_commit(Oid subid, Oid relid) logicalrep_worker_stop_at_commit(Oid subid, Oid relid)
{ {
LogicalRepWorkerId *wid; LogicalRepWorkerId *wid;
MemoryContext oldctx; MemoryContext oldctx;
/* Make sure we store the info in context that survives until commit. */ /* Make sure we store the info in context that survives until commit. */
oldctx = MemoryContextSwitchTo(TopTransactionContext); oldctx = MemoryContextSwitchTo(TopTransactionContext);
@ -824,11 +824,12 @@ AtEOXact_ApplyLauncher(bool isCommit)
{ {
if (isCommit) if (isCommit)
{ {
ListCell *lc; ListCell *lc;
foreach (lc, on_commit_stop_workers) foreach(lc, on_commit_stop_workers)
{ {
LogicalRepWorkerId *wid = lfirst(lc); LogicalRepWorkerId *wid = lfirst(lc);
logicalrep_worker_stop(wid->subid, wid->relid); logicalrep_worker_stop(wid->subid, wid->relid);
} }

View File

@ -353,7 +353,7 @@ restart:
{ {
if (state->acquired_by != 0) if (state->acquired_by != 0)
{ {
ConditionVariable *cv; ConditionVariable *cv;
if (nowait) if (nowait)
ereport(ERROR, ereport(ERROR,
@ -977,7 +977,7 @@ replorigin_get_progress(RepOriginId node, bool flush)
static void static void
ReplicationOriginExitCleanup(int code, Datum arg) ReplicationOriginExitCleanup(int code, Datum arg)
{ {
ConditionVariable *cv = NULL; ConditionVariable *cv = NULL;
LWLockAcquire(ReplicationOriginLock, LW_EXCLUSIVE); LWLockAcquire(ReplicationOriginLock, LW_EXCLUSIVE);
@ -1097,7 +1097,7 @@ replorigin_session_setup(RepOriginId node)
void void
replorigin_session_reset(void) replorigin_session_reset(void)
{ {
ConditionVariable *cv; ConditionVariable *cv;
Assert(max_replication_slots != 0); Assert(max_replication_slots != 0);

View File

@ -1117,9 +1117,9 @@ SnapBuildProcessRunningXacts(SnapBuild *builder, XLogRecPtr lsn, xl_running_xact
* only ever look at those. * only ever look at those.
* *
* NB: We only increase xmax when a catalog modifying transaction commits * NB: We only increase xmax when a catalog modifying transaction commits
* (see SnapBuildCommitTxn). Because of this, xmax can be lower than xmin, * (see SnapBuildCommitTxn). Because of this, xmax can be lower than
* which looks odd but is correct and actually more efficient, since we hit * xmin, which looks odd but is correct and actually more efficient, since
* fast paths in tqual.c. * we hit fast paths in tqual.c.
*/ */
builder->xmin = running->oldestRunningXid; builder->xmin = running->oldestRunningXid;

View File

@ -351,8 +351,8 @@ retry:
if (s->in_use && strcmp(name, NameStr(s->data.name)) == 0) if (s->in_use && strcmp(name, NameStr(s->data.name)) == 0)
{ {
/* /*
* This is the slot we want. We don't know yet if it's active, * This is the slot we want. We don't know yet if it's active, so
* so get ready to sleep on it in case it is. (We may end up not * get ready to sleep on it in case it is. (We may end up not
* sleeping, but we don't want to do this while holding the * sleeping, but we don't want to do this while holding the
* spinlock.) * spinlock.)
*/ */
@ -397,7 +397,7 @@ retry:
goto retry; goto retry;
} }
else else
ConditionVariableCancelSleep(); /* no sleep needed after all */ ConditionVariableCancelSleep(); /* no sleep needed after all */
/* Let everybody know we've modified this slot */ /* Let everybody know we've modified this slot */
ConditionVariableBroadcast(&slot->active_cv); ConditionVariableBroadcast(&slot->active_cv);

View File

@ -293,8 +293,8 @@ SyncRepWaitForLSN(XLogRecPtr lsn, bool commit)
* WalSender has checked our LSN and has removed us from queue. Clean up * WalSender has checked our LSN and has removed us from queue. Clean up
* state and leave. It's OK to reset these shared memory fields without * state and leave. It's OK to reset these shared memory fields without
* holding SyncRepLock, because any walsenders will ignore us anyway when * holding SyncRepLock, because any walsenders will ignore us anyway when
* we're not on the queue. We need a read barrier to make sure we see * we're not on the queue. We need a read barrier to make sure we see the
* the changes to the queue link (this might be unnecessary without * changes to the queue link (this might be unnecessary without
* assertions, but better safe than sorry). * assertions, but better safe than sorry).
*/ */
pg_read_barrier(); pg_read_barrier();
@ -715,7 +715,7 @@ SyncRepGetSyncStandbysQuorum(bool *am_sync)
for (i = 0; i < max_wal_senders; i++) for (i = 0; i < max_wal_senders; i++)
{ {
XLogRecPtr flush; XLogRecPtr flush;
WalSndState state; WalSndState state;
int pid; int pid;
walsnd = &WalSndCtl->walsnds[i]; walsnd = &WalSndCtl->walsnds[i];
@ -794,7 +794,7 @@ SyncRepGetSyncStandbysPriority(bool *am_sync)
for (i = 0; i < max_wal_senders; i++) for (i = 0; i < max_wal_senders; i++)
{ {
XLogRecPtr flush; XLogRecPtr flush;
WalSndState state; WalSndState state;
int pid; int pid;
walsnd = &WalSndCtl->walsnds[i]; walsnd = &WalSndCtl->walsnds[i];

View File

@ -1408,8 +1408,8 @@ GetOldestXmin(Relation rel, int flags)
* being careful not to generate a "permanent" XID. * being careful not to generate a "permanent" XID.
* *
* vacuum_defer_cleanup_age provides some additional "slop" for the * vacuum_defer_cleanup_age provides some additional "slop" for the
* benefit of hot standby queries on standby servers. This is quick and * benefit of hot standby queries on standby servers. This is quick
* dirty, and perhaps not all that useful unless the master has a * and dirty, and perhaps not all that useful unless the master has a
* predictable transaction rate, but it offers some protection when * predictable transaction rate, but it offers some protection when
* there's no walsender connection. Note that we are assuming * there's no walsender connection. Note that we are assuming
* vacuum_defer_cleanup_age isn't large enough to cause wraparound --- * vacuum_defer_cleanup_age isn't large enough to cause wraparound ---

View File

@ -8723,8 +8723,8 @@ get_rule_expr(Node *node, deparse_context *context,
list_length(spec->upperdatums)); list_length(spec->upperdatums));
appendStringInfo(buf, "FOR VALUES FROM %s TO %s", appendStringInfo(buf, "FOR VALUES FROM %s TO %s",
get_range_partbound_string(spec->lowerdatums), get_range_partbound_string(spec->lowerdatums),
get_range_partbound_string(spec->upperdatums)); get_range_partbound_string(spec->upperdatums));
break; break;
default: default:

View File

@ -32,14 +32,16 @@ else
print $conf "listen_addresses = '127.0.0.1'\n"; print $conf "listen_addresses = '127.0.0.1'\n";
} }
close $conf; close $conf;
my $ctlcmd = [ 'pg_ctl', 'start', '-D', "$tempdir/data", my $ctlcmd = [
'-l', "$TestLib::log_path/001_start_stop_server.log" ]; 'pg_ctl', 'start', '-D', "$tempdir/data", '-l',
"$TestLib::log_path/001_start_stop_server.log" ];
if ($Config{osname} ne 'msys') if ($Config{osname} ne 'msys')
{ {
command_like($ctlcmd, qr/done.*server started/s, 'pg_ctl start'); command_like($ctlcmd, qr/done.*server started/s, 'pg_ctl start');
} }
else else
{ {
# use the version of command_like that doesn't hang on Msys here # use the version of command_like that doesn't hang on Msys here
command_like_safe($ctlcmd, qr/done.*server started/s, 'pg_ctl start'); command_like_safe($ctlcmd, qr/done.*server started/s, 'pg_ctl start');
} }

View File

@ -593,7 +593,7 @@ cfread(void *ptr, int size, cfp *fp)
ret = gzread(fp->compressedfp, ptr, size); ret = gzread(fp->compressedfp, ptr, size);
if (ret != size && !gzeof(fp->compressedfp)) if (ret != size && !gzeof(fp->compressedfp))
{ {
int errnum; int errnum;
const char *errmsg = gzerror(fp->compressedfp, &errnum); const char *errmsg = gzerror(fp->compressedfp, &errnum);
exit_horribly(modulename, exit_horribly(modulename,

View File

@ -557,7 +557,7 @@ _tarReadRaw(ArchiveHandle *AH, void *buf, size_t len, TAR_MEMBER *th, FILE *fh)
if (res != len && !GZEOF(th->zFH)) if (res != len && !GZEOF(th->zFH))
{ {
#ifdef HAVE_LIBZ #ifdef HAVE_LIBZ
int errnum; int errnum;
const char *errmsg = gzerror(th->zFH, &errnum); const char *errmsg = gzerror(th->zFH, &errnum);
exit_horribly(modulename, exit_horribly(modulename,

View File

@ -676,8 +676,8 @@ main(int argc, char **argv)
dopt.no_security_labels = 1; dopt.no_security_labels = 1;
/* /*
* On hot standbys, never try to dump unlogged table data, since it * On hot standbys, never try to dump unlogged table data, since it will
* will just throw an error. * just throw an error.
*/ */
if (fout->isStandby) if (fout->isStandby)
dopt.no_unlogged_table_data = true; dopt.no_unlogged_table_data = true;
@ -4141,8 +4141,8 @@ getNamespaces(Archive *fout, int *numNamespaces)
*/ */
if (dopt->outputClean) if (dopt->outputClean)
appendPQExpBuffer(query, " AND pip.objoid <> " appendPQExpBuffer(query, " AND pip.objoid <> "
"coalesce((select oid from pg_namespace " "coalesce((select oid from pg_namespace "
"where nspname = 'public'),0)"); "where nspname = 'public'),0)");
appendPQExpBuffer(query, ") "); appendPQExpBuffer(query, ") ");

View File

@ -100,18 +100,12 @@ my %pgdump_runs = (
defaults_no_public => { defaults_no_public => {
database => 'regress_pg_dump_test', database => 'regress_pg_dump_test',
dump_cmd => [ dump_cmd => [
'pg_dump', 'pg_dump', '--no-sync', '-f', "$tempdir/defaults_no_public.sql",
'--no-sync',
'-f',
"$tempdir/defaults_no_public.sql",
'regress_pg_dump_test', ], }, 'regress_pg_dump_test', ], },
defaults_no_public_clean => { defaults_no_public_clean => {
database => 'regress_pg_dump_test', database => 'regress_pg_dump_test',
dump_cmd => [ dump_cmd => [
'pg_dump', 'pg_dump', '--no-sync', '-c', '-f',
'--no-sync',
'-c',
'-f',
"$tempdir/defaults_no_public_clean.sql", "$tempdir/defaults_no_public_clean.sql",
'regress_pg_dump_test', ], }, 'regress_pg_dump_test', ], },
@ -464,9 +458,8 @@ my %tests = (
with_oids => 1, }, }, with_oids => 1, }, },
'ALTER COLLATION test0 OWNER TO' => { 'ALTER COLLATION test0 OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)',
regexp => qr/^ALTER COLLATION test0 OWNER TO .*;/m, regexp => qr/^ALTER COLLATION test0 OWNER TO .*;/m,
collation => 1, collation => 1,
like => { like => {
@ -491,11 +484,10 @@ my %tests = (
test_schema_plus_blobs => 1, }, }, test_schema_plus_blobs => 1, }, },
'ALTER FOREIGN DATA WRAPPER dummy OWNER TO' => { 'ALTER FOREIGN DATA WRAPPER dummy OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)', regexp => qr/^ALTER FOREIGN DATA WRAPPER dummy OWNER TO .*;/m,
regexp => qr/^ALTER FOREIGN DATA WRAPPER dummy OWNER TO .*;/m, like => {
like => {
binary_upgrade => 1, binary_upgrade => 1,
clean => 1, clean => 1,
clean_if_exists => 1, clean_if_exists => 1,
@ -518,11 +510,10 @@ my %tests = (
test_schema_plus_blobs => 1, }, }, test_schema_plus_blobs => 1, }, },
'ALTER SERVER s1 OWNER TO' => { 'ALTER SERVER s1 OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)', regexp => qr/^ALTER SERVER s1 OWNER TO .*;/m,
regexp => qr/^ALTER SERVER s1 OWNER TO .*;/m, like => {
like => {
binary_upgrade => 1, binary_upgrade => 1,
clean => 1, clean => 1,
clean_if_exists => 1, clean_if_exists => 1,
@ -545,10 +536,9 @@ my %tests = (
test_schema_plus_blobs => 1, }, }, test_schema_plus_blobs => 1, }, },
'ALTER FUNCTION dump_test.pltestlang_call_handler() OWNER TO' => { 'ALTER FUNCTION dump_test.pltestlang_call_handler() OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)', regexp => qr/^
regexp => qr/^
\QALTER FUNCTION dump_test.pltestlang_call_handler() \E \QALTER FUNCTION dump_test.pltestlang_call_handler() \E
\QOWNER TO \E \QOWNER TO \E
.*;/xm, .*;/xm,
@ -574,10 +564,9 @@ my %tests = (
role => 1, }, }, role => 1, }, },
'ALTER OPERATOR FAMILY dump_test.op_family OWNER TO' => { 'ALTER OPERATOR FAMILY dump_test.op_family OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)', regexp => qr/^
regexp => qr/^
\QALTER OPERATOR FAMILY dump_test.op_family USING btree \E \QALTER OPERATOR FAMILY dump_test.op_family USING btree \E
\QOWNER TO \E \QOWNER TO \E
.*;/xm, .*;/xm,
@ -653,10 +642,9 @@ my %tests = (
role => 1, }, }, role => 1, }, },
'ALTER OPERATOR CLASS dump_test.op_class OWNER TO' => { 'ALTER OPERATOR CLASS dump_test.op_class OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)', regexp => qr/^
regexp => qr/^
\QALTER OPERATOR CLASS dump_test.op_class USING btree \E \QALTER OPERATOR CLASS dump_test.op_class USING btree \E
\QOWNER TO \E \QOWNER TO \E
.*;/xm, .*;/xm,
@ -744,11 +732,10 @@ my %tests = (
section_post_data => 1, }, }, section_post_data => 1, }, },
'ALTER PROCEDURAL LANGUAGE pltestlang OWNER TO' => { 'ALTER PROCEDURAL LANGUAGE pltestlang OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)', regexp => qr/^ALTER PROCEDURAL LANGUAGE pltestlang OWNER TO .*;/m,
regexp => qr/^ALTER PROCEDURAL LANGUAGE pltestlang OWNER TO .*;/m, like => {
like => {
binary_upgrade => 1, binary_upgrade => 1,
clean => 1, clean => 1,
clean_if_exists => 1, clean_if_exists => 1,
@ -770,11 +757,10 @@ my %tests = (
test_schema_plus_blobs => 1, }, }, test_schema_plus_blobs => 1, }, },
'ALTER SCHEMA dump_test OWNER TO' => { 'ALTER SCHEMA dump_test OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)', regexp => qr/^ALTER SCHEMA dump_test OWNER TO .*;/m,
regexp => qr/^ALTER SCHEMA dump_test OWNER TO .*;/m, like => {
like => {
binary_upgrade => 1, binary_upgrade => 1,
clean => 1, clean => 1,
clean_if_exists => 1, clean_if_exists => 1,
@ -796,11 +782,10 @@ my %tests = (
role => 1, }, }, role => 1, }, },
'ALTER SCHEMA dump_test_second_schema OWNER TO' => { 'ALTER SCHEMA dump_test_second_schema OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)', regexp => qr/^ALTER SCHEMA dump_test_second_schema OWNER TO .*;/m,
regexp => qr/^ALTER SCHEMA dump_test_second_schema OWNER TO .*;/m, like => {
like => {
binary_upgrade => 1, binary_upgrade => 1,
clean => 1, clean => 1,
clean_if_exists => 1, clean_if_exists => 1,
@ -1191,11 +1176,10 @@ my %tests = (
section_post_data => 1, }, }, section_post_data => 1, }, },
'ALTER TABLE test_table OWNER TO' => { 'ALTER TABLE test_table OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)', regexp => qr/^ALTER TABLE test_table OWNER TO .*;/m,
regexp => qr/^ALTER TABLE test_table OWNER TO .*;/m, like => {
like => {
binary_upgrade => 1, binary_upgrade => 1,
clean => 1, clean => 1,
clean_if_exists => 1, clean_if_exists => 1,
@ -1249,11 +1233,10 @@ my %tests = (
role => 1, }, }, role => 1, }, },
'ALTER TABLE test_second_table OWNER TO' => { 'ALTER TABLE test_second_table OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)', regexp => qr/^ALTER TABLE test_second_table OWNER TO .*;/m,
regexp => qr/^ALTER TABLE test_second_table OWNER TO .*;/m, like => {
like => {
binary_upgrade => 1, binary_upgrade => 1,
clean => 1, clean => 1,
clean_if_exists => 1, clean_if_exists => 1,
@ -1276,11 +1259,10 @@ my %tests = (
role => 1, }, }, role => 1, }, },
'ALTER TABLE test_third_table OWNER TO' => { 'ALTER TABLE test_third_table OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)', regexp => qr/^ALTER TABLE test_third_table OWNER TO .*;/m,
regexp => qr/^ALTER TABLE test_third_table OWNER TO .*;/m, like => {
like => {
binary_upgrade => 1, binary_upgrade => 1,
clean => 1, clean => 1,
clean_if_exists => 1, clean_if_exists => 1,
@ -1303,11 +1285,10 @@ my %tests = (
test_schema_plus_blobs => 1, }, }, test_schema_plus_blobs => 1, }, },
'ALTER TABLE measurement OWNER TO' => { 'ALTER TABLE measurement OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)', regexp => qr/^ALTER TABLE measurement OWNER TO .*;/m,
regexp => qr/^ALTER TABLE measurement OWNER TO .*;/m, like => {
like => {
binary_upgrade => 1, binary_upgrade => 1,
clean => 1, clean => 1,
clean_if_exists => 1, clean_if_exists => 1,
@ -1330,11 +1311,10 @@ my %tests = (
role => 1, }, }, role => 1, }, },
'ALTER TABLE measurement_y2006m2 OWNER TO' => { 'ALTER TABLE measurement_y2006m2 OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)', regexp => qr/^ALTER TABLE measurement_y2006m2 OWNER TO .*;/m,
regexp => qr/^ALTER TABLE measurement_y2006m2 OWNER TO .*;/m, like => {
like => {
binary_upgrade => 1, binary_upgrade => 1,
clean => 1, clean => 1,
clean_if_exists => 1, clean_if_exists => 1,
@ -1357,11 +1337,10 @@ my %tests = (
test_schema_plus_blobs => 1, }, }, test_schema_plus_blobs => 1, }, },
'ALTER FOREIGN TABLE foreign_table OWNER TO' => { 'ALTER FOREIGN TABLE foreign_table OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)', regexp => qr/^ALTER FOREIGN TABLE foreign_table OWNER TO .*;/m,
regexp => qr/^ALTER FOREIGN TABLE foreign_table OWNER TO .*;/m, like => {
like => {
binary_upgrade => 1, binary_upgrade => 1,
clean => 1, clean => 1,
clean_if_exists => 1, clean_if_exists => 1,
@ -1384,9 +1363,8 @@ my %tests = (
role => 1, }, }, role => 1, }, },
'ALTER TEXT SEARCH CONFIGURATION alt_ts_conf1 OWNER TO' => { 'ALTER TEXT SEARCH CONFIGURATION alt_ts_conf1 OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)',
regexp => regexp =>
qr/^ALTER TEXT SEARCH CONFIGURATION alt_ts_conf1 OWNER TO .*;/m, qr/^ALTER TEXT SEARCH CONFIGURATION alt_ts_conf1 OWNER TO .*;/m,
like => { like => {
@ -1412,9 +1390,8 @@ my %tests = (
role => 1, }, }, role => 1, }, },
'ALTER TEXT SEARCH DICTIONARY alt_ts_dict1 OWNER TO' => { 'ALTER TEXT SEARCH DICTIONARY alt_ts_dict1 OWNER TO' => {
all_runs => 1, all_runs => 1,
catch_all => catch_all => 'ALTER ... OWNER commands (except post-data objects)',
'ALTER ... OWNER commands (except post-data objects)',
regexp => regexp =>
qr/^ALTER TEXT SEARCH DICTIONARY alt_ts_dict1 OWNER TO .*;/m, qr/^ALTER TEXT SEARCH DICTIONARY alt_ts_dict1 OWNER TO .*;/m,
like => { like => {
@ -4542,12 +4519,12 @@ qr/CREATE TRANSFORM FOR integer LANGUAGE sql \(FROM SQL WITH FUNCTION pg_catalog
test_schema_plus_blobs => 1, }, }, test_schema_plus_blobs => 1, }, },
'CREATE SCHEMA public' => { 'CREATE SCHEMA public' => {
all_runs => 1, all_runs => 1,
catch_all => 'CREATE ... commands', catch_all => 'CREATE ... commands',
regexp => qr/^CREATE SCHEMA public;/m, regexp => qr/^CREATE SCHEMA public;/m,
like => { like => {
clean => 1, clean => 1,
clean_if_exists => 1, }, clean_if_exists => 1, },
unlike => { unlike => {
binary_upgrade => 1, binary_upgrade => 1,
createdb => 1, createdb => 1,
@ -5266,31 +5243,32 @@ qr/CREATE TRANSFORM FOR integer LANGUAGE sql \(FROM SQL WITH FUNCTION pg_catalog
section_data => 1, }, }, section_data => 1, }, },
'DROP SCHEMA public (for testing without public schema)' => { 'DROP SCHEMA public (for testing without public schema)' => {
all_runs => 1, all_runs => 1,
database => 'regress_pg_dump_test', database => 'regress_pg_dump_test',
create_order => 100, create_order => 100,
create_sql => 'DROP SCHEMA public;', create_sql => 'DROP SCHEMA public;',
regexp => qr/^DROP SCHEMA public;/m, regexp => qr/^DROP SCHEMA public;/m,
like => { }, like => {},
unlike => { defaults_no_public => 1, unlike => {
defaults_no_public_clean => 1, } }, defaults_no_public => 1,
defaults_no_public_clean => 1, } },
'DROP SCHEMA public' => { 'DROP SCHEMA public' => {
all_runs => 1, all_runs => 1,
catch_all => 'DROP ... commands', catch_all => 'DROP ... commands',
regexp => qr/^DROP SCHEMA public;/m, regexp => qr/^DROP SCHEMA public;/m,
like => { clean => 1 }, like => { clean => 1 },
unlike => { unlike => {
clean_if_exists => 1, clean_if_exists => 1,
pg_dumpall_globals_clean => 1, }, }, pg_dumpall_globals_clean => 1, }, },
'DROP SCHEMA IF EXISTS public' => { 'DROP SCHEMA IF EXISTS public' => {
all_runs => 1, all_runs => 1,
catch_all => 'DROP ... commands', catch_all => 'DROP ... commands',
regexp => qr/^DROP SCHEMA IF EXISTS public;/m, regexp => qr/^DROP SCHEMA IF EXISTS public;/m,
like => { clean_if_exists => 1 }, like => { clean_if_exists => 1 },
unlike => { unlike => {
clean => 1, clean => 1,
pg_dumpall_globals_clean => 1, }, }, pg_dumpall_globals_clean => 1, }, },
'DROP EXTENSION plpgsql' => { 'DROP EXTENSION plpgsql' => {
@ -6508,7 +6486,7 @@ if ($collation_check_stderr !~ /ERROR: /)
} }
# Create a second database for certain tests to work against # Create a second database for certain tests to work against
$node->psql('postgres','create database regress_pg_dump_test;'); $node->psql('postgres', 'create database regress_pg_dump_test;');
# Start with number of command_fails_like()*2 tests below (each # Start with number of command_fails_like()*2 tests below (each
# command_fails_like is actually 2 tests) # command_fails_like is actually 2 tests)
@ -6517,9 +6495,10 @@ my $num_tests = 12;
foreach my $run (sort keys %pgdump_runs) foreach my $run (sort keys %pgdump_runs)
{ {
my $test_key = $run; my $test_key = $run;
my $run_db = 'postgres'; my $run_db = 'postgres';
if (defined($pgdump_runs{$run}->{database})) { if (defined($pgdump_runs{$run}->{database}))
{
$run_db = $pgdump_runs{$run}->{database}; $run_db = $pgdump_runs{$run}->{database};
} }
@ -6540,17 +6519,20 @@ foreach my $run (sort keys %pgdump_runs)
# Then count all the tests run against each run # Then count all the tests run against each run
foreach my $test (sort keys %tests) foreach my $test (sort keys %tests)
{ {
# postgres is the default database, if it isn't overridden # postgres is the default database, if it isn't overridden
my $test_db = 'postgres'; my $test_db = 'postgres';
# Specific tests can override the database to use # Specific tests can override the database to use
if (defined($tests{$test}->{database})) { if (defined($tests{$test}->{database}))
{
$test_db = $tests{$test}->{database}; $test_db = $tests{$test}->{database};
} }
# The database to test against needs to match the database the run is # The database to test against needs to match the database the run is
# for, so skip combinations where they don't match up. # for, so skip combinations where they don't match up.
if ($run_db ne $test_db) { if ($run_db ne $test_db)
{
next; next;
} }
@ -6626,7 +6608,8 @@ foreach my $test (
{ {
my $test_db = 'postgres'; my $test_db = 'postgres';
if (defined($tests{$test}->{database})) { if (defined($tests{$test}->{database}))
{
$test_db = $tests{$test}->{database}; $test_db = $tests{$test}->{database};
} }

View File

@ -228,10 +228,10 @@ pg_recvint64(int64 value)
{ {
union union
{ {
int64 i64; int64 i64;
uint32 i32[2]; uint32 i32[2];
} swap; } swap;
int64 result; int64 result;
swap.i64 = value; swap.i64 = value;

View File

@ -75,13 +75,14 @@ typedef struct TransitionCaptureState
/* /*
* The tuplestores backing the transition tables. We use separate * The tuplestores backing the transition tables. We use separate
* tuplestores for INSERT and UPDATE, because INSERT ... ON CONFLICT * tuplestores for INSERT and UPDATE, because INSERT ... ON CONFLICT ...
* ... DO UPDATE causes INSERT and UPDATE triggers to fire and needs a way * DO UPDATE causes INSERT and UPDATE triggers to fire and needs a way to
* to keep track of the new tuple images resulting from the two cases * keep track of the new tuple images resulting from the two cases
* separately. We only need a single old image tuplestore, because there * separately. We only need a single old image tuplestore, because there
* is no statement that can both update and delete at the same time. * is no statement that can both update and delete at the same time.
*/ */
Tuplestorestate *tcs_old_tuplestore; /* for DELETE and UPDATE old images */ Tuplestorestate *tcs_old_tuplestore; /* for DELETE and UPDATE old
* images */
Tuplestorestate *tcs_insert_tuplestore; /* for INSERT new images */ Tuplestorestate *tcs_insert_tuplestore; /* for INSERT new images */
Tuplestorestate *tcs_update_tuplestore; /* for UPDATE new images */ Tuplestorestate *tcs_update_tuplestore; /* for UPDATE new images */
} TransitionCaptureState; } TransitionCaptureState;

View File

@ -980,9 +980,9 @@ typedef struct ModifyTableState
/* Per partition tuple conversion map */ /* Per partition tuple conversion map */
TupleTableSlot *mt_partition_tuple_slot; TupleTableSlot *mt_partition_tuple_slot;
struct TransitionCaptureState *mt_transition_capture; struct TransitionCaptureState *mt_transition_capture;
/* controls transition table population */ /* controls transition table population */
TupleConversionMap **mt_transition_tupconv_maps; TupleConversionMap **mt_transition_tupconv_maps;
/* Per plan/partition tuple conversion */ /* Per plan/partition tuple conversion */
} ModifyTableState; } ModifyTableState;
/* ---------------- /* ----------------

View File

@ -65,25 +65,25 @@ typedef struct City
int tour1_position; int tour1_position;
int used; int used;
int select_list; int select_list;
} City; } City;
extern City *alloc_city_table(PlannerInfo *root, int num_gene); extern City * alloc_city_table(PlannerInfo *root, int num_gene);
extern void free_city_table(PlannerInfo *root, City *city_table); extern void free_city_table(PlannerInfo *root, City * city_table);
/* cycle crossover [CX] */ /* cycle crossover [CX] */
extern int cx(PlannerInfo *root, Gene *tour1, Gene *tour2, extern int cx(PlannerInfo *root, Gene *tour1, Gene *tour2,
Gene *offspring, int num_gene, City *city_table); Gene *offspring, int num_gene, City * city_table);
/* position crossover [PX] */ /* position crossover [PX] */
extern void px(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring, extern void px(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring,
int num_gene, City *city_table); int num_gene, City * city_table);
/* order crossover [OX1] according to Davis */ /* order crossover [OX1] according to Davis */
extern void ox1(PlannerInfo *root, Gene *mom, Gene *dad, Gene *offspring, extern void ox1(PlannerInfo *root, Gene *mom, Gene *dad, Gene *offspring,
int num_gene, City *city_table); int num_gene, City * city_table);
/* order crossover [OX2] according to Syswerda */ /* order crossover [OX2] according to Syswerda */
extern void ox2(PlannerInfo *root, Gene *mom, Gene *dad, Gene *offspring, extern void ox2(PlannerInfo *root, Gene *mom, Gene *dad, Gene *offspring,
int num_gene, City *city_table); int num_gene, City * city_table);
#endif /* GEQO_RECOMBINATION_H */ #endif /* GEQO_RECOMBINATION_H */

View File

@ -1232,10 +1232,9 @@ sub poll_query_until
{ {
my ($self, $dbname, $query, $expected) = @_; my ($self, $dbname, $query, $expected) = @_;
$expected = 't' unless defined($expected); # default value $expected = 't' unless defined($expected); # default value
my $cmd = my $cmd = [ 'psql', '-XAt', '-c', $query, '-d', $self->connstr($dbname) ];
[ 'psql', '-XAt', '-c', $query, '-d', $self->connstr($dbname) ];
my ($stdout, $stderr); my ($stdout, $stderr);
my $max_attempts = 180 * 10; my $max_attempts = 180 * 10;
my $attempts = 0; my $attempts = 0;

View File

@ -303,6 +303,7 @@ sub command_like
sub command_like_safe sub command_like_safe
{ {
# Doesn't rely on detecting end of file on the file descriptors, # Doesn't rely on detecting end of file on the file descriptors,
# which can fail, causing the process to hang, notably on Msys # which can fail, causing the process to hang, notably on Msys
# when used with 'pg_ctl start' # when used with 'pg_ctl start'

View File

@ -152,12 +152,12 @@ sub get_slot_xmins
{ {
my ($node, $slotname, $check_expr) = @_; my ($node, $slotname, $check_expr) = @_;
$node->poll_query_until('postgres', qq[ $node->poll_query_until(
'postgres', qq[
SELECT $check_expr SELECT $check_expr
FROM pg_catalog.pg_replication_slots FROM pg_catalog.pg_replication_slots
WHERE slot_name = '$slotname'; WHERE slot_name = '$slotname';
]) ]) or die "Timed out waiting for slot xmins to advance";
or die "Timed out waiting for slot xmins to advance";
my $slotinfo = $node->slot($slotname); my $slotinfo = $node->slot($slotname);
return ($slotinfo->{'xmin'}, $slotinfo->{'catalog_xmin'}); return ($slotinfo->{'xmin'}, $slotinfo->{'catalog_xmin'});
@ -166,14 +166,16 @@ sub get_slot_xmins
# There's no hot standby feedback and there are no logical slots on either peer # There's no hot standby feedback and there are no logical slots on either peer
# so xmin and catalog_xmin should be null on both slots. # so xmin and catalog_xmin should be null on both slots.
my ($xmin, $catalog_xmin) = get_slot_xmins($node_master, $slotname_1, my ($xmin, $catalog_xmin) = get_slot_xmins($node_master, $slotname_1,
"xmin IS NULL AND catalog_xmin IS NULL"); "xmin IS NULL AND catalog_xmin IS NULL");
is($xmin, '', 'xmin of non-cascaded slot null with no hs_feedback'); is($xmin, '', 'xmin of non-cascaded slot null with no hs_feedback');
is($catalog_xmin, '', 'catalog xmin of non-cascaded slot null with no hs_feedback'); is($catalog_xmin, '',
'catalog xmin of non-cascaded slot null with no hs_feedback');
($xmin, $catalog_xmin) = get_slot_xmins($node_standby_1, $slotname_2, ($xmin, $catalog_xmin) = get_slot_xmins($node_standby_1, $slotname_2,
"xmin IS NULL AND catalog_xmin IS NULL"); "xmin IS NULL AND catalog_xmin IS NULL");
is($xmin, '', 'xmin of cascaded slot null with no hs_feedback'); is($xmin, '', 'xmin of cascaded slot null with no hs_feedback');
is($catalog_xmin, '', 'catalog xmin of cascaded slot null with no hs_feedback'); is($catalog_xmin, '',
'catalog xmin of cascaded slot null with no hs_feedback');
# Replication still works? # Replication still works?
$node_master->safe_psql('postgres', 'CREATE TABLE replayed(val integer);'); $node_master->safe_psql('postgres', 'CREATE TABLE replayed(val integer);');
@ -210,19 +212,20 @@ $node_standby_2->reload;
replay_check(); replay_check();
($xmin, $catalog_xmin) = get_slot_xmins($node_master, $slotname_1, ($xmin, $catalog_xmin) = get_slot_xmins($node_master, $slotname_1,
"xmin IS NOT NULL AND catalog_xmin IS NULL"); "xmin IS NOT NULL AND catalog_xmin IS NULL");
isnt($xmin, '', 'xmin of non-cascaded slot non-null with hs feedback'); isnt($xmin, '', 'xmin of non-cascaded slot non-null with hs feedback');
is($catalog_xmin, '', is($catalog_xmin, '',
'catalog xmin of non-cascaded slot still null with hs_feedback'); 'catalog xmin of non-cascaded slot still null with hs_feedback');
my ($xmin1, $catalog_xmin1) = get_slot_xmins($node_standby_1, $slotname_2, my ($xmin1, $catalog_xmin1) = get_slot_xmins($node_standby_1, $slotname_2,
"xmin IS NOT NULL AND catalog_xmin IS NULL"); "xmin IS NOT NULL AND catalog_xmin IS NULL");
isnt($xmin1, '', 'xmin of cascaded slot non-null with hs feedback'); isnt($xmin1, '', 'xmin of cascaded slot non-null with hs feedback');
is($catalog_xmin1, '', is($catalog_xmin1, '',
'catalog xmin of cascaded slot still null with hs_feedback'); 'catalog xmin of cascaded slot still null with hs_feedback');
note "doing some work to advance xmin"; note "doing some work to advance xmin";
$node_master->safe_psql('postgres', q{ $node_master->safe_psql(
'postgres', q{
do $$ do $$
begin begin
for i in 10000..11000 loop for i in 10000..11000 loop
@ -239,15 +242,16 @@ end$$;
$node_master->safe_psql('postgres', 'VACUUM;'); $node_master->safe_psql('postgres', 'VACUUM;');
$node_master->safe_psql('postgres', 'CHECKPOINT;'); $node_master->safe_psql('postgres', 'CHECKPOINT;');
my ($xmin2, $catalog_xmin2) = get_slot_xmins($node_master, $slotname_1, my ($xmin2, $catalog_xmin2) =
"xmin <> '$xmin'"); get_slot_xmins($node_master, $slotname_1, "xmin <> '$xmin'");
note "master slot's new xmin $xmin2, old xmin $xmin"; note "master slot's new xmin $xmin2, old xmin $xmin";
isnt($xmin2, $xmin, 'xmin of non-cascaded slot with hs feedback has changed'); isnt($xmin2, $xmin, 'xmin of non-cascaded slot with hs feedback has changed');
is($catalog_xmin2, '', is($catalog_xmin2, '',
'catalog xmin of non-cascaded slot still null with hs_feedback unchanged'); 'catalog xmin of non-cascaded slot still null with hs_feedback unchanged'
);
($xmin2, $catalog_xmin2) = get_slot_xmins($node_standby_1, $slotname_2, ($xmin2, $catalog_xmin2) =
"xmin <> '$xmin1'"); get_slot_xmins($node_standby_1, $slotname_2, "xmin <> '$xmin1'");
note "standby_1 slot's new xmin $xmin2, old xmin $xmin1"; note "standby_1 slot's new xmin $xmin2, old xmin $xmin1";
isnt($xmin2, $xmin1, 'xmin of cascaded slot with hs feedback has changed'); isnt($xmin2, $xmin1, 'xmin of cascaded slot with hs feedback has changed');
is($catalog_xmin2, '', is($catalog_xmin2, '',
@ -265,14 +269,14 @@ $node_standby_2->reload;
replay_check(); replay_check();
($xmin, $catalog_xmin) = get_slot_xmins($node_master, $slotname_1, ($xmin, $catalog_xmin) = get_slot_xmins($node_master, $slotname_1,
"xmin IS NULL AND catalog_xmin IS NULL"); "xmin IS NULL AND catalog_xmin IS NULL");
is($xmin, '', 'xmin of non-cascaded slot null with hs feedback reset'); is($xmin, '', 'xmin of non-cascaded slot null with hs feedback reset');
is($catalog_xmin, '', is($catalog_xmin, '',
'catalog xmin of non-cascaded slot still null with hs_feedback reset'); 'catalog xmin of non-cascaded slot still null with hs_feedback reset');
($xmin, $catalog_xmin) = get_slot_xmins($node_standby_1, $slotname_2, ($xmin, $catalog_xmin) = get_slot_xmins($node_standby_1, $slotname_2,
"xmin IS NULL AND catalog_xmin IS NULL"); "xmin IS NULL AND catalog_xmin IS NULL");
is($xmin, '', 'xmin of cascaded slot null with hs feedback reset'); is($xmin, '', 'xmin of cascaded slot null with hs feedback reset');
is($catalog_xmin, '', is($catalog_xmin, '',
'catalog xmin of cascaded slot still null with hs_feedback reset'); 'catalog xmin of cascaded slot still null with hs_feedback reset');
@ -288,14 +292,14 @@ $node_standby_2->safe_psql('postgres',
'ALTER SYSTEM SET hot_standby_feedback = off;'); 'ALTER SYSTEM SET hot_standby_feedback = off;');
$node_standby_2->stop; $node_standby_2->stop;
($xmin, $catalog_xmin) = get_slot_xmins($node_standby_1, $slotname_2, ($xmin, $catalog_xmin) =
"xmin IS NOT NULL"); get_slot_xmins($node_standby_1, $slotname_2, "xmin IS NOT NULL");
isnt($xmin, '', 'xmin of cascaded slot non-null with postgres shut down'); isnt($xmin, '', 'xmin of cascaded slot non-null with postgres shut down');
# Xmin from a previous run should be cleared on startup. # Xmin from a previous run should be cleared on startup.
$node_standby_2->start; $node_standby_2->start;
($xmin, $catalog_xmin) = get_slot_xmins($node_standby_1, $slotname_2, ($xmin, $catalog_xmin) =
"xmin IS NULL"); get_slot_xmins($node_standby_1, $slotname_2, "xmin IS NULL");
is($xmin, '', is($xmin, '',
'xmin of cascaded slot reset after startup with hs feedback reset'); 'xmin of cascaded slot reset after startup with hs feedback reset');

View File

@ -111,8 +111,7 @@ SKIP:
'-S', 'otherdb_slot', '-f', '-', '--start' ]); '-S', 'otherdb_slot', '-f', '-', '--start' ]);
$node_master->poll_query_until('otherdb', $node_master->poll_query_until('otherdb',
"SELECT EXISTS (SELECT 1 FROM pg_replication_slots WHERE slot_name = 'otherdb_slot' AND active_pid IS NOT NULL)" "SELECT EXISTS (SELECT 1 FROM pg_replication_slots WHERE slot_name = 'otherdb_slot' AND active_pid IS NOT NULL)"
) ) or die "slot never became active";
or die "slot never became active";
is($node_master->psql('postgres', 'DROP DATABASE otherdb'), is($node_master->psql('postgres', 'DROP DATABASE otherdb'),
3, 'dropping a DB with active logical slots fails'); 3, 'dropping a DB with active logical slots fails');
$pg_recvlogical->kill_kill; $pg_recvlogical->kill_kill;
@ -122,8 +121,7 @@ SKIP:
$node_master->poll_query_until('otherdb', $node_master->poll_query_until('otherdb',
"SELECT EXISTS (SELECT 1 FROM pg_replication_slots WHERE slot_name = 'otherdb_slot' AND active_pid IS NULL)" "SELECT EXISTS (SELECT 1 FROM pg_replication_slots WHERE slot_name = 'otherdb_slot' AND active_pid IS NULL)"
) ) or die "slot never became inactive";
or die "slot never became inactive";
is($node_master->psql('postgres', 'DROP DATABASE otherdb'), is($node_master->psql('postgres', 'DROP DATABASE otherdb'),
0, 'dropping a DB with inactive logical slots succeeds'); 0, 'dropping a DB with inactive logical slots succeeds');

View File

@ -23,7 +23,7 @@ sub test_sync_state
$self->reload; $self->reload;
} }
ok( $self->poll_query_until('postgres', $check_sql, $expected), $msg); ok($self->poll_query_until('postgres', $check_sql, $expected), $msg);
} }
# Initialize master node # Initialize master node

View File

@ -18,8 +18,7 @@ sub configure_and_reload
'postgresql.conf', qq( 'postgresql.conf', qq(
$parameter $parameter
)); ));
$node->psql('postgres', "SELECT pg_reload_conf()", $node->psql('postgres', "SELECT pg_reload_conf()", stdout => \$psql_out);
stdout => \$psql_out);
is($psql_out, 't', "reload node $name with $parameter"); is($psql_out, 't', "reload node $name with $parameter");
} }
@ -44,7 +43,7 @@ $node_paris->start;
# Switch to synchronous replication in both directions # Switch to synchronous replication in both directions
configure_and_reload($node_london, "synchronous_standby_names = 'paris'"); configure_and_reload($node_london, "synchronous_standby_names = 'paris'");
configure_and_reload($node_paris, "synchronous_standby_names = 'london'"); configure_and_reload($node_paris, "synchronous_standby_names = 'london'");
# Set up nonce names for current master and standby nodes # Set up nonce names for current master and standby nodes
note "Initially, london is master and paris is standby"; note "Initially, london is master and paris is standby";
@ -352,7 +351,7 @@ $cur_master->psql(
'postgres', 'postgres',
"SELECT * FROM t_009_tbl ORDER BY id", "SELECT * FROM t_009_tbl ORDER BY id",
stdout => \$psql_out); stdout => \$psql_out);
is($psql_out, qq{1|issued to london is( $psql_out, qq{1|issued to london
2|issued to london 2|issued to london
5|issued to london 5|issued to london
6|issued to london 6|issued to london
@ -374,14 +373,15 @@ is($psql_out, qq{1|issued to london
24|issued to paris 24|issued to paris
25|issued to london 25|issued to london
26|issued to london}, 26|issued to london},
"Check expected t_009_tbl data on master"); "Check expected t_009_tbl data on master");
$cur_master->psql( $cur_master->psql(
'postgres', 'postgres',
"SELECT * FROM t_009_tbl2", "SELECT * FROM t_009_tbl2",
stdout => \$psql_out); stdout => \$psql_out);
is($psql_out, qq{27|issued to paris}, is( $psql_out,
"Check expected t_009_tbl2 data on master"); qq{27|issued to paris},
"Check expected t_009_tbl2 data on master");
$cur_standby->psql( $cur_standby->psql(
'postgres', 'postgres',
@ -393,7 +393,7 @@ $cur_standby->psql(
'postgres', 'postgres',
"SELECT * FROM t_009_tbl ORDER BY id", "SELECT * FROM t_009_tbl ORDER BY id",
stdout => \$psql_out); stdout => \$psql_out);
is($psql_out, qq{1|issued to london is( $psql_out, qq{1|issued to london
2|issued to london 2|issued to london
5|issued to london 5|issued to london
6|issued to london 6|issued to london
@ -415,11 +415,12 @@ is($psql_out, qq{1|issued to london
24|issued to paris 24|issued to paris
25|issued to london 25|issued to london
26|issued to london}, 26|issued to london},
"Check expected t_009_tbl data on standby"); "Check expected t_009_tbl data on standby");
$cur_standby->psql( $cur_standby->psql(
'postgres', 'postgres',
"SELECT * FROM t_009_tbl2", "SELECT * FROM t_009_tbl2",
stdout => \$psql_out); stdout => \$psql_out);
is($psql_out, qq{27|issued to paris}, is( $psql_out,
"Check expected t_009_tbl2 data on standby"); qq{27|issued to paris},
"Check expected t_009_tbl2 data on standby");

View File

@ -117,8 +117,7 @@ $node_master->poll_query_until(
SELECT catalog_xmin IS NOT NULL SELECT catalog_xmin IS NOT NULL
FROM pg_replication_slots FROM pg_replication_slots
WHERE slot_name = 'phys_slot' WHERE slot_name = 'phys_slot'
]) ]) or die "slot's catalog_xmin never became set";
or die "slot's catalog_xmin never became set";
my $phys_slot = $node_master->slot('phys_slot'); my $phys_slot = $node_master->slot('phys_slot');
isnt($phys_slot->{'xmin'}, '', 'xmin assigned on physical slot of master'); isnt($phys_slot->{'xmin'}, '', 'xmin assigned on physical slot of master');

View File

@ -22,16 +22,15 @@ $node_publisher->safe_psql('postgres',
"CREATE TABLE tab_ins AS SELECT generate_series(1,1002) AS a"); "CREATE TABLE tab_ins AS SELECT generate_series(1,1002) AS a");
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres',
"CREATE TABLE tab_full AS SELECT generate_series(1,10) AS a"); "CREATE TABLE tab_full AS SELECT generate_series(1,10) AS a");
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres', "CREATE TABLE tab_full2 (x text)");
"CREATE TABLE tab_full2 (x text)");
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres',
"INSERT INTO tab_full2 VALUES ('a'), ('b'), ('b')"); "INSERT INTO tab_full2 VALUES ('a'), ('b'), ('b')");
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres',
"CREATE TABLE tab_rep (a int primary key)"); "CREATE TABLE tab_rep (a int primary key)");
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres',
"CREATE TABLE tab_mixed (a int primary key, b text)"); "CREATE TABLE tab_mixed (a int primary key, b text)");
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres',
"INSERT INTO tab_mixed (a, b) VALUES (1, 'foo')"); "INSERT INTO tab_mixed (a, b) VALUES (1, 'foo')");
# 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)");
@ -40,9 +39,10 @@ $node_subscriber->safe_psql('postgres', "CREATE TABLE tab_full (a int)");
$node_subscriber->safe_psql('postgres', "CREATE TABLE tab_full2 (x text)"); $node_subscriber->safe_psql('postgres', "CREATE TABLE tab_full2 (x text)");
$node_subscriber->safe_psql('postgres', $node_subscriber->safe_psql('postgres',
"CREATE TABLE tab_rep (a int primary key)"); "CREATE TABLE tab_rep (a int primary key)");
# different column count and order than on publisher # different column count and order than on publisher
$node_subscriber->safe_psql('postgres', $node_subscriber->safe_psql('postgres',
"CREATE TABLE tab_mixed (c text, b text, a int primary key)"); "CREATE TABLE tab_mixed (c text, b text, a int primary key)");
# Setup logical replication # Setup logical replication
my $publisher_connstr = $node_publisher->connstr . ' dbname=postgres'; my $publisher_connstr = $node_publisher->connstr . ' dbname=postgres';
@ -50,7 +50,8 @@ $node_publisher->safe_psql('postgres', "CREATE PUBLICATION tap_pub");
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres',
"CREATE PUBLICATION tap_pub_ins_only WITH (publish = insert)"); "CREATE PUBLICATION tap_pub_ins_only WITH (publish = insert)");
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres',
"ALTER PUBLICATION tap_pub ADD TABLE tab_rep, tab_full, tab_full2, tab_mixed"); "ALTER PUBLICATION tap_pub ADD TABLE tab_rep, tab_full, tab_full2, tab_mixed"
);
$node_publisher->safe_psql('postgres', $node_publisher->safe_psql('postgres',
"ALTER PUBLICATION tap_pub_ins_only ADD TABLE tab_ins"); "ALTER PUBLICATION tap_pub_ins_only ADD TABLE tab_ins");
@ -89,7 +90,8 @@ $node_publisher->safe_psql('postgres',
$node_publisher->safe_psql('postgres', "DELETE FROM tab_rep WHERE a > 20"); $node_publisher->safe_psql('postgres', "DELETE FROM tab_rep WHERE a > 20");
$node_publisher->safe_psql('postgres', "UPDATE tab_rep SET a = -a"); $node_publisher->safe_psql('postgres', "UPDATE tab_rep SET a = -a");
$node_publisher->safe_psql('postgres', "INSERT INTO tab_mixed VALUES (2, 'bar')"); $node_publisher->safe_psql('postgres',
"INSERT INTO tab_mixed VALUES (2, 'bar')");
$node_publisher->poll_query_until('postgres', $caughtup_query) $node_publisher->poll_query_until('postgres', $caughtup_query)
or die "Timed out while waiting for subscriber to catch up"; or die "Timed out while waiting for subscriber to catch up";
@ -102,9 +104,9 @@ $result = $node_subscriber->safe_psql('postgres',
"SELECT count(*), min(a), max(a) FROM tab_rep"); "SELECT count(*), min(a), max(a) FROM tab_rep");
is($result, qq(20|-20|-1), 'check replicated changes on subscriber'); is($result, qq(20|-20|-1), 'check replicated changes on subscriber');
$result = $node_subscriber->safe_psql('postgres', $result =
"SELECT c, b, a FROM tab_mixed"); $node_subscriber->safe_psql('postgres', "SELECT c, b, a FROM tab_mixed");
is($result, qq(|foo|1 is( $result, qq(|foo|1
|bar|2), 'check replicated changes with different column order'); |bar|2), 'check replicated changes with different column order');
# insert some duplicate rows # insert some duplicate rows
@ -127,7 +129,8 @@ $node_subscriber->safe_psql('postgres',
# and do the updates # and do the updates
$node_publisher->safe_psql('postgres', "UPDATE tab_full SET a = a * a"); $node_publisher->safe_psql('postgres', "UPDATE tab_full SET a = a * a");
$node_publisher->safe_psql('postgres', "UPDATE tab_full2 SET x = 'bb' WHERE x = 'b'"); $node_publisher->safe_psql('postgres',
"UPDATE tab_full2 SET x = 'bb' WHERE x = 'b'");
# Wait for subscription to catch up # Wait for subscription to catch up
$node_publisher->poll_query_until('postgres', $caughtup_query) $node_publisher->poll_query_until('postgres', $caughtup_query)
@ -140,7 +143,7 @@ is($result, qq(20|1|100),
$result = $node_subscriber->safe_psql('postgres', $result = $node_subscriber->safe_psql('postgres',
"SELECT x FROM tab_full2 ORDER BY 1"); "SELECT x FROM tab_full2 ORDER BY 1");
is($result, qq(a is( $result, qq(a
bb bb
bb), bb),
'update works with REPLICA IDENTITY FULL and text datums'); 'update works with REPLICA IDENTITY FULL and text datums');

View File

@ -520,10 +520,10 @@ sub mkvcbuild
# Add defines from Perl's ccflags; see PGAC_CHECK_PERL_EMBED_CCFLAGS # Add defines from Perl's ccflags; see PGAC_CHECK_PERL_EMBED_CCFLAGS
my @perl_embed_ccflags; my @perl_embed_ccflags;
foreach my $f (split(" ",$Config{ccflags})) foreach my $f (split(" ", $Config{ccflags}))
{ {
if ($f =~ /^-D[^_]/ || if ( $f =~ /^-D[^_]/
$f =~ /^-D_USE_32BIT_TIME_T/) || $f =~ /^-D_USE_32BIT_TIME_T/)
{ {
$f =~ s/\-D//; $f =~ s/\-D//;
push(@perl_embed_ccflags, $f); push(@perl_embed_ccflags, $f);

View File

@ -183,7 +183,7 @@ sub tap_check
{ {
next unless $_[$arg] =~ /^PROVE_FLAGS=(.*)/; next unless $_[$arg] =~ /^PROVE_FLAGS=(.*)/;
@flags = split(/\s+/, $1); @flags = split(/\s+/, $1);
splice(@_,$arg,1); splice(@_, $arg, 1);
last; last;
} }
@ -237,7 +237,7 @@ sub taptest
die "no tests found!" unless -d "$topdir/$dir/t"; die "no tests found!" unless -d "$topdir/$dir/t";
push(@args,"$topdir/$dir"); push(@args, "$topdir/$dir");
InstallTemp(); InstallTemp();
my $status = tap_check(@args); my $status = tap_check(@args);

View File

@ -13,11 +13,12 @@ use Getopt::Long;
# Update for pg_bsd_indent version # Update for pg_bsd_indent version
my $INDENT_VERSION = "2.0"; my $INDENT_VERSION = "2.0";
# Our standard indent settings # Our standard indent settings
my $indent_opts = my $indent_opts =
"-bad -bap -bbb -bc -bl -cli1 -cp33 -cdb -nce -d0 -di12 -nfc1 -i4 -l79 -lp -lpl -nip -npro -sac -tpg -ts4"; "-bad -bap -bbb -bc -bl -cli1 -cp33 -cdb -nce -d0 -di12 -nfc1 -i4 -l79 -lp -lpl -nip -npro -sac -tpg -ts4";
my $devnull = File::Spec->devnull; my $devnull = File::Spec->devnull;
my ($typedefs_file, $typedef_str, $code_base, $excludes, $indent, $build); my ($typedefs_file, $typedef_str, $code_base, $excludes, $indent, $build);
@ -75,7 +76,7 @@ sub check_indent
if ($? == 0) if ($? == 0)
{ {
print STDERR print STDERR
"You appear to have GNU indent rather than BSD indent.\n"; "You appear to have GNU indent rather than BSD indent.\n";
exit 1; exit 1;
} }
} }
@ -254,8 +255,7 @@ sub run_indent
my $source = shift; my $source = shift;
my $error_message = shift; my $error_message = shift;
my $cmd = my $cmd = "$indent $indent_opts -U" . $filtered_typedefs_fh->filename;
"$indent $indent_opts -U" . $filtered_typedefs_fh->filename;
my $tmp_fh = new File::Temp(TEMPLATE => "pgsrcXXXXX"); my $tmp_fh = new File::Temp(TEMPLATE => "pgsrcXXXXX");
my $filename = $tmp_fh->filename; my $filename = $tmp_fh->filename;
@ -394,6 +394,7 @@ push(@files, @ARGV);
foreach my $source_filename (@files) foreach my $source_filename (@files)
{ {
# Automatically ignore .c and .h files that correspond to a .y or .l # Automatically ignore .c and .h files that correspond to a .y or .l
# file. indent tends to get badly confused by Bison/flex output, # file. indent tends to get badly confused by Bison/flex output,
# and there's no value in indenting derived files anyway. # and there's no value in indenting derived files anyway.

View File

@ -307,7 +307,6 @@ CheckpointStatsData
CheckpointerRequest CheckpointerRequest
CheckpointerShmemStruct CheckpointerShmemStruct
Chromosome Chromosome
City
CkptSortItem CkptSortItem
CkptTsStatus CkptTsStatus
ClientAuthentication_hook_type ClientAuthentication_hook_type
@ -327,6 +326,7 @@ CoerceViaIO
CoercionContext CoercionContext
CoercionForm CoercionForm
CoercionPathType CoercionPathType
CollAliasData
CollInfo CollInfo
CollateClause CollateClause
CollateExpr CollateExpr
@ -569,6 +569,7 @@ ExecForeignUpdate_function
ExecParallelEstimateContext ExecParallelEstimateContext
ExecParallelInitializeDSMContext ExecParallelInitializeDSMContext
ExecPhraseData ExecPhraseData
ExecProcNodeMtd
ExecRowMark ExecRowMark
ExecScanAccessMtd ExecScanAccessMtd
ExecScanRecheckMtd ExecScanRecheckMtd
@ -1180,6 +1181,7 @@ LogicalRepRelation
LogicalRepTupleData LogicalRepTupleData
LogicalRepTyp LogicalRepTyp
LogicalRepWorker LogicalRepWorker
LogicalRepWorkerId
LogicalRewriteMappingData LogicalRewriteMappingData
LogicalTape LogicalTape
LogicalTapeSet LogicalTapeSet
@ -1770,7 +1772,6 @@ RWConflictPoolHeader
Range Range
RangeBound RangeBound
RangeBox RangeBox
RangeDatumContent
RangeFunction RangeFunction
RangeIOData RangeIOData
RangeQueryClause RangeQueryClause
@ -1880,6 +1881,7 @@ ResourceReleaseCallback
ResourceReleaseCallbackItem ResourceReleaseCallbackItem
ResourceReleasePhase ResourceReleasePhase
RestoreOptions RestoreOptions
RestorePass
RestrictInfo RestrictInfo
Result Result
ResultPath ResultPath
@ -2251,6 +2253,7 @@ TransactionStmt
TransactionStmtKind TransactionStmtKind
TransformInfo TransformInfo
TransformJsonStringValuesState TransformJsonStringValuesState
TransitionCaptureState
TrgmArc TrgmArc
TrgmArcInfo TrgmArcInfo
TrgmColor TrgmColor
@ -2388,6 +2391,7 @@ WaitEventIO
WaitEventIPC WaitEventIPC
WaitEventSet WaitEventSet
WaitEventTimeout WaitEventTimeout
WaitPMResult
WalCloseMethod WalCloseMethod
WalLevel WalLevel
WalRcvData WalRcvData