diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/access/heap/heapam.c | 2 | ||||
-rw-r--r-- | src/backend/access/transam/README | 11 | ||||
-rw-r--r-- | src/backend/access/transam/varsup.c | 13 | ||||
-rw-r--r-- | src/backend/commands/async.c | 11 | ||||
-rw-r--r-- | src/backend/commands/vacuum.c | 10 | ||||
-rw-r--r-- | src/backend/storage/buffer/bufmgr.c | 2 | ||||
-rw-r--r-- | src/bin/pg_waldump/pg_waldump.c | 11 | ||||
-rw-r--r-- | src/include/access/xlog_internal.h | 7 | ||||
-rw-r--r-- | src/test/kerberos/README | 10 | ||||
-rw-r--r-- | src/test/perl/PostgresNode.pm | 6 | ||||
-rw-r--r-- | src/test/recovery/t/010_logical_decoding_timelines.pl | 2 | ||||
-rw-r--r-- | src/test/ssl/t/SSLServer.pm | 1 |
12 files changed, 36 insertions, 50 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index f75e1cf0e7b..9b5f417eac4 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -6920,8 +6920,6 @@ HeapTupleHeaderAdvanceLatestRemovedXid(HeapTupleHeader tuple, * updated/deleted by the inserting transaction. * * Look for a committed hint bit, or if no xmin bit is set, check clog. - * This needs to work on both primary and standby, where it is used to - * assess btree delete records. */ if (HeapTupleHeaderXminCommitted(tuple) || (!HeapTupleHeaderXminInvalid(tuple) && TransactionIdDidCommit(xmin))) diff --git a/src/backend/access/transam/README b/src/backend/access/transam/README index c5f09667ba1..1edc8180c12 100644 --- a/src/backend/access/transam/README +++ b/src/backend/access/transam/README @@ -635,12 +635,11 @@ be reconstructed later following a crash and the action is simply a way of optimising for performance. When a hint is written we use MarkBufferDirtyHint() to mark the block dirty. -If the buffer is clean and checksums are in use then -MarkBufferDirtyHint() inserts an XLOG_FPI record to ensure that we -take a full page image that includes the hint. We do this to avoid -a partial page write, when we write the dirtied page. WAL is not -written during recovery, so we simply skip dirtying blocks because -of hints when in recovery. +If the buffer is clean and checksums are in use then MarkBufferDirtyHint() +inserts an XLOG_FPI_FOR_HINT record to ensure that we take a full page image +that includes the hint. We do this to avoid a partial page write, when we +write the dirtied page. WAL is not written during recovery, so we simply skip +dirtying blocks because of hints when in recovery. If you do decide to optimise away a WAL record, then any calls to MarkBufferDirty() must be replaced by MarkBufferDirtyHint(), diff --git a/src/backend/access/transam/varsup.c b/src/backend/access/transam/varsup.c index 2d2b05be36c..a4944faa32e 100644 --- a/src/backend/access/transam/varsup.c +++ b/src/backend/access/transam/varsup.c @@ -367,12 +367,13 @@ SetTransactionIdLimit(TransactionId oldest_datfrozenxid, Oid oldest_datoid) * We'll refuse to continue assigning XIDs in interactive mode once we get * within 3M transactions of data loss. This leaves lots of room for the * DBA to fool around fixing things in a standalone backend, while not - * being significant compared to total XID space. (Note that since - * vacuuming requires one transaction per table cleaned, we had better be - * sure there's lots of XIDs left...) Also, at default BLCKSZ, this - * leaves two completely-idle segments. In the event of edge-case bugs - * involving page or segment arithmetic, idle segments render the bugs - * unreachable outside of single-user mode. + * being significant compared to total XID space. (VACUUM requires an XID + * if it truncates at wal_level!=minimal. "VACUUM (ANALYZE)", which a DBA + * might do by reflex, assigns an XID. Hence, we had better be sure + * there's lots of XIDs left...) Also, at default BLCKSZ, this leaves two + * completely-idle segments. In the event of edge-case bugs involving + * page or segment arithmetic, idle segments render the bugs unreachable + * outside of single-user mode. */ xidStopLimit = xidWrapLimit - 3000000; if (xidStopLimit < FirstNormalTransactionId) diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c index 4c1286eb988..774b26fd2c4 100644 --- a/src/backend/commands/async.c +++ b/src/backend/commands/async.c @@ -302,13 +302,10 @@ static SlruCtlData NotifyCtlData; #define QUEUE_FULL_WARN_INTERVAL 5000 /* warn at most once every 5s */ /* - * slru.c currently assumes that all filenames are four characters of hex - * digits. That means that we can use segments 0000 through FFFF. - * Each segment contains SLRU_PAGES_PER_SEGMENT pages which gives us - * the pages from 0 to SLRU_PAGES_PER_SEGMENT * 0x10000 - 1. - * - * It's of course possible to enhance slru.c, but this gives us so much - * space already that it doesn't seem worth the trouble. + * Use segments 0000 through FFFF. Each contains SLRU_PAGES_PER_SEGMENT pages + * which gives us the pages from 0 to SLRU_PAGES_PER_SEGMENT * 0x10000 - 1. + * We could use as many segments as SlruScanDirectory() allows, but this gives + * us so much space already that it doesn't seem worth the trouble. * * The most data we can have in the queue at a time is QUEUE_MAX_PAGE/2 * pages, because more than that would confuse slru.c into thinking there diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 5189a5ad5e3..23eb605d4cb 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -949,11 +949,11 @@ vacuum_set_xid_limits(Relation rel, /* * We can always ignore processes running lazy vacuum. This is because we * use these values only for deciding which tuples we must keep in the - * tables. Since lazy vacuum doesn't write its XID anywhere, it's safe to - * ignore it. In theory it could be problematic to ignore lazy vacuums in - * a full vacuum, but keep in mind that only one vacuum process can be - * working on a particular table at any time, and that each vacuum is - * always an independent transaction. + * tables. Since lazy vacuum doesn't write its XID anywhere (usually no + * XID assigned), it's safe to ignore it. In theory it could be + * problematic to ignore lazy vacuums in a full vacuum, but keep in mind + * that only one vacuum process can be working on a particular table at + * any time, and that each vacuum is always an independent transaction. */ *oldestXmin = GetOldestNonRemovableTransactionId(rel); diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index f1ae6f9f844..a2a963bd5b4 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -3578,7 +3578,7 @@ IncrBufferRefCount(Buffer buffer) * This is essentially the same as MarkBufferDirty, except: * * 1. The caller does not write WAL; so if checksums are enabled, we may need - * to write an XLOG_FPI WAL record to protect against torn pages. + * to write an XLOG_FPI_FOR_HINT WAL record to protect against torn pages. * 2. The caller might have only share-lock instead of exclusive-lock on the * buffer's content lock. * 3. This function does not guarantee that the buffer is always marked dirty diff --git a/src/bin/pg_waldump/pg_waldump.c b/src/bin/pg_waldump/pg_waldump.c index d1a06789353..31e99c2a6da 100644 --- a/src/bin/pg_waldump/pg_waldump.c +++ b/src/bin/pg_waldump/pg_waldump.c @@ -611,14 +611,9 @@ XLogDumpDisplayStats(XLogDumpConfig *config, XLogDumpStats *stats) double rec_len_pct, fpi_len_pct; - /* --- - * Make a first pass to calculate column totals: - * count(*), - * sum(xl_len+SizeOfXLogRecord), - * sum(xl_tot_len-xl_len-SizeOfXLogRecord), and - * sum(xl_tot_len). - * These are used to calculate percentages for each record type. - * --- + /* + * Each row shows its percentages of the total, so make a first pass to + * calculate column totals. */ for (ri = 0; ri < RM_NEXT_ID; ri++) diff --git a/src/include/access/xlog_internal.h b/src/include/access/xlog_internal.h index 9b2da56379e..4146753d476 100644 --- a/src/include/access/xlog_internal.h +++ b/src/include/access/xlog_internal.h @@ -43,11 +43,8 @@ typedef struct XLogPageHeaderData /* * When there is not enough space on current page for whole record, we * continue on the next page. xlp_rem_len is the number of bytes - * remaining from a previous page. - * - * Note that xlp_rem_len includes backup-block data; that is, it tracks - * xl_tot_len not xl_len in the initial header. Also note that the - * continuation data isn't necessarily aligned. + * remaining from a previous page; it tracks xl_tot_len in the initial + * header. Note that the continuation data isn't necessarily aligned. */ uint32 xlp_rem_len; /* total len of remaining data for record */ } XLogPageHeaderData; diff --git a/src/test/kerberos/README b/src/test/kerberos/README index 93af72e1636..fa9c03e7829 100644 --- a/src/test/kerberos/README +++ b/src/test/kerberos/README @@ -8,10 +8,12 @@ functionality. This requires a full MIT Kerberos installation, including server and client tools, and is therefore kept separate and not run by default. -Also, this test suite creates a KDC server that listens for TCP/IP -connections on localhost without any real access control, so it is not -safe to run this on a system where there might be untrusted local -users. +CAUTION: The test server run by this test is configured to listen for TCP +connections on localhost. Any user on the same host is able to log in to the +test server while the tests are running. Do not run this suite on a multi-user +system where you don't trust all local users! Also, this test suite creates a +KDC server that listens for TCP/IP connections on localhost without any real +access control. Running the tests ================= diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm index 8c1b77376fb..1488bffa2ba 100644 --- a/src/test/perl/PostgresNode.pm +++ b/src/test/perl/PostgresNode.pm @@ -1234,10 +1234,8 @@ sub can_bind return $ret; } -# Automatically shut down any still-running nodes when the test script exits. -# Note that this just stops the postmasters (in the same order the nodes were -# created in). Any temporary directories are deleted, in an unspecified -# order, later when the File::Temp objects are destroyed. +# Automatically shut down any still-running nodes (in the same order the nodes +# were created in) when the test script exits. END { diff --git a/src/test/recovery/t/010_logical_decoding_timelines.pl b/src/test/recovery/t/010_logical_decoding_timelines.pl index 09aaefa9f03..329500f0ae5 100644 --- a/src/test/recovery/t/010_logical_decoding_timelines.pl +++ b/src/test/recovery/t/010_logical_decoding_timelines.pl @@ -111,7 +111,7 @@ is($stdout, 'before_basebackup', # Examine the physical slot the replica uses to stream changes # from the primary to make sure its hot_standby_feedback # has locked in a catalog_xmin on the physical slot, and that -# any xmin is < the catalog_xmin +# any xmin is >= the catalog_xmin $node_primary->poll_query_until( 'postgres', q[ SELECT catalog_xmin IS NOT NULL diff --git a/src/test/ssl/t/SSLServer.pm b/src/test/ssl/t/SSLServer.pm index 1e392b8fbf6..f5987a003ef 100644 --- a/src/test/ssl/t/SSLServer.pm +++ b/src/test/ssl/t/SSLServer.pm @@ -9,7 +9,6 @@ # - a database called trustdb that lets anyone in # - another database called certdb that uses certificate authentication, ie. # the client must present a valid certificate signed by the client CA -# - two users, called ssltestuser and anotheruser. # # The server is configured to only accept connections from localhost. If you # want to run the client from another host, you'll have to configure that |