Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hDV6e-0005cl-UC for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Apr 2019 14:18:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hDV6d-00077l-8M for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Apr 2019 14:18:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hDV6c-00074i-MU for pgsql-hackers@lists.postgresql.org; Mon, 08 Apr 2019 14:18:38 +0000 Received: from mail-it1-x131.google.com ([2607:f8b0:4864:20::131]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hDV6X-0001gg-4G for pgsql-hackers@postgresql.org; Mon, 08 Apr 2019 14:18:38 +0000 Received: by mail-it1-x131.google.com with SMTP id f22so21237760ita.3 for ; Mon, 08 Apr 2019 07:18:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telsasoft-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=lCVhLUp8QmWgOwwMMK+cr8RoJkM7LApreoJdFp2AApw=; b=JKQBn4DWEZnghQQlLAMzt7L+McMQncWsFfXsardEPGu2sKQhbGTYYz6IYtFV6eCDRQ yTK/DNqRIuWy46P7YfyTGFNob+2yjYxVQgNnE8ANg+aIUjPIAHwIX9sJrEzHx6FuCH66 7jjh7neGXZ4NfqCdlwLCm3zRo/Kv1fvNL3UQODRybQiP01IH8ACiYq9JFh2KkURY2PsF GSwsUfYbyBNTIH8LgbLDWwFHAv3UqBTInmsXLN9F6HGS/4m8cLkA0+u+o46EHQtQxe9v OhmOKgBfEi3/2sCxQfBcP8KCN1I7ypCifrIlsPM1QbDoWsOcmP9gkprN4OobTc1XXukg aW9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=lCVhLUp8QmWgOwwMMK+cr8RoJkM7LApreoJdFp2AApw=; b=MmCXOr9QFDLS5WgtP+qucMyqtb+a/nguzX7kKetG84/G7txMnyRgr6pD3D0x2iJRqn 2QYi03N/2NrMVdF3QB4m6nVPq+cHZhIW1OyhKx/yVxH8tJJkQsT5zItjHNjVWot15Jjx gcJKvYD60CYs2wZUg4WcVwqLvO2PEWjx+EzMOIiEwgKeuIzz2GdbM3wBrItq+DV1c0Ut oiT7+psdRZ3BO/+F+PAjho8aHy//C7Lkc6MWW/kxSmGV5YqVLedCsLmuW4SR6dj/JMEX gQTcuqycqXJGT1aW42U+kTclDnWq4Id0dHOA+B6Is27XgqjGmrrKtky5wS5dN3mpkEgS TDDA== X-Gm-Message-State: APjAAAVIPpDnZKQevtYsHZtfcu0DmqM2wj+BBAA4H2yU82G689MxG1ie we1Pe2vgh9xJMtXz3lu4JoDCy9dupyk= X-Google-Smtp-Source: APXvYqxUGApHr1OGeXL6jcuLKb/rs04DU7WyaXkonjNR503tEg54oWwPlYGyoIHxSHWIrrQHS3vVeA== X-Received: by 2002:a02:1384:: with SMTP id 126mr22233040jaz.72.1554733110789; Mon, 08 Apr 2019 07:18:30 -0700 (PDT) Received: from pryzbyj (charmander.telsasoft.com. [50.244.222.1]) by smtp.gmail.com with ESMTPSA id i203sm5120906iti.7.2019.04.08.07.18.29 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 08 Apr 2019 07:18:29 -0700 (PDT) Received: by pryzbyj (Postfix, from userid 1000) id 5BEED801065; Mon, 8 Apr 2019 09:18:28 -0500 (CDT) Date: Mon, 8 Apr 2019 09:18:28 -0500 From: Justin Pryzby To: pgsql-hackers@postgresql.org Subject: Re: clean up docs for v12 Message-ID: <20190408141828.GE10080@telsasoft.com> References: <20190330224333.GQ5815@telsasoft.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="u65IjBhB3TIa72Vp" Content-Disposition: inline In-Reply-To: <20190330224333.GQ5815@telsasoft.com> User-Agent: Mutt/1.5.23 (2014-03-12) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --u65IjBhB3TIa72Vp Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Find attached updated patches for v12 docs. Note that Alvaro applied an early patch for log_statement_sample_rate, but unfortunately I hadn't sent a v2 patch with additional change from myon, so there's one remaining hunk included here. If needed I can split up differently for review, or resend a couple on separate threads, or resend inline. Patches are currently optimized for review, but maybe should be squished into one and/or reindented before merging. Justin --u65IjBhB3TIa72Vp Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v2-0001-Clean-up-docs-for-log_statement_sample_rate.patch" From da9c81526918c49c3c30fdb6838323d2f66cba69 Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Thu, 28 Mar 2019 08:53:26 -0500 Subject: [PATCH v2 01/12] Clean up docs for log_statement_sample_rate.. ..which was added at commit 88bdbd3f746049834ae3cc972e6e650586ec3c9d And this one little bit was missed here: https://www.postgresql.org/message-id/20190403215938.GA26375%40alvherre.pgsql Author: Christoph Berg --- doc/src/sgml/config.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 804406a..ad5a620 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -5887,7 +5887,7 @@ local0.* /var/log/postgresql Determines the fraction of statements that exceed to be logged. - The default is 1, meaning log all such + The default is 1.0, meaning log all such statements. Setting this to zero disables logging by duration, same as setting log_min_duration_statement to -- 2.1.4 --u65IjBhB3TIa72Vp Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v2-0002-review-docs-for-pg12dev.patch" From 4c78b873d7db73ddc1e2f7aa94b6a2e816746d3b Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Thu, 28 Mar 2019 18:50:03 -0500 Subject: [PATCH v2 02/12] review docs for pg12dev --- doc/src/sgml/bloom.sgml | 2 +- doc/src/sgml/catalogs.sgml | 4 ++-- doc/src/sgml/config.sgml | 13 ++++++----- doc/src/sgml/ecpg.sgml | 18 +++++++------- doc/src/sgml/libpq.sgml | 2 +- doc/src/sgml/monitoring.sgml | 34 +++++++++++++-------------- doc/src/sgml/perform.sgml | 8 +++---- doc/src/sgml/ref/alter_table.sgml | 4 ++-- doc/src/sgml/ref/create_index.sgml | 4 ++-- doc/src/sgml/ref/pg_rewind.sgml | 17 +++++++------- doc/src/sgml/ref/pgbench.sgml | 6 ++--- doc/src/sgml/ref/reindex.sgml | 2 +- doc/src/sgml/runtime.sgml | 7 +++--- doc/src/sgml/sources.sgml | 48 +++++++++++++++++++------------------- doc/src/sgml/xfunc.sgml | 12 +++++----- src/bin/pg_upgrade/check.c | 6 ++--- 16 files changed, 92 insertions(+), 95 deletions(-) diff --git a/doc/src/sgml/bloom.sgml b/doc/src/sgml/bloom.sgml index 6eeadde..c341b65 100644 --- a/doc/src/sgml/bloom.sgml +++ b/doc/src/sgml/bloom.sgml @@ -65,7 +65,7 @@ Number of bits generated for each index column. Each parameter's name refers to the number of the index column that it controls. The default - is 2 bits and maximum is 4095. Parameters for + is 2 bits and the maximum is 4095. Parameters for index columns not actually used are ignored. diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml index 1701863..40ddec4 100644 --- a/doc/src/sgml/catalogs.sgml +++ b/doc/src/sgml/catalogs.sgml @@ -3052,7 +3052,7 @@ SCRAM-SHA-256$<iteration count>:&l simplifies ATTACH/DETACH PARTITION operations: the partition dependencies need only be added or removed. Example: a child partitioned index is made partition-dependent - on both the partition table it is on and the parent partitioned + on both the table partition and the parent partitioned index, so that it goes away if either of those is dropped, but not otherwise. The dependency on the parent index is primary, so that if the user tries to drop the child partitioned index, @@ -3115,7 +3115,7 @@ SCRAM-SHA-256$<iteration count>:&l Note that it's quite possible for two objects to be linked by more than one pg_depend entry. For example, a child partitioned index would have both a partition-type dependency on its - associated partition table, and an auto dependency on each column of + associated table partition, and an auto dependency on each column of that table that it indexes. This sort of situation expresses the union of multiple dependency semantics. A dependent object can be dropped without CASCADE if any of its dependencies satisfies diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index ad5a620..e45a321 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -112,7 +112,7 @@ For example, 30.1 GB will be converted to 30822 MB not 32319628902 B. If the parameter is of integer type, a final rounding to integer - occurs after any units conversion. + occurs after any unit conversion. @@ -3433,7 +3433,7 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows current when the base backup was taken. The value latest recovers to the latest timeline found in the archive, which is useful in - a standby server. latest is the default. + a standby server. The default is latest. @@ -3540,7 +3540,7 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows servers or streaming base backup clients (i.e., the maximum number of simultaneously running WAL sender processes). The default is 10. The value 0 means - replication is disabled. Abrupt streaming client disconnection might + replication is disabled. Abrupt disconnection of a streaming client might leave an orphaned connection slot behind until a timeout is reached, so this parameter should be set slightly higher than the maximum number of expected clients so disconnected clients can immediately @@ -4195,8 +4195,9 @@ ANY num_sync ( bytea - The handling of the bytea type is also similar to - the VARCHAR. The definition on an array of type + The handling of the bytea type is similar to + the VARCHAR. The definition of an array of type bytea is converted into a named struct for every variable. A declaration like: @@ -1220,9 +1220,8 @@ bytea var[180]; struct bytea_var { int len; char arr[180]; } var; - The member arr hosts binary format - data. It also can handle even '\0' as part of - data unlike VARCHAR. + The member arr stores binary format + data, which can include zero bytes, unlike VARCHAR. The data is converted from/to hex format and sent/received by ecpglib. @@ -7571,8 +7570,7 @@ PREPARE name FROM A literal C string or a host variable containing a preparable - statement, one of the SELECT, INSERT, UPDATE, or - DELETE. + statement (SELECT, INSERT, UPDATE, or DELETE). diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml index fe833aa..c8e6919 100644 --- a/doc/src/sgml/libpq.sgml +++ b/doc/src/sgml/libpq.sgml @@ -1122,7 +1122,7 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname connect_timeout - Maximum wait for connection, in seconds (write as a decimal integer, + Maximum time to wait while connecting, in seconds (write as a decimal integer, e.g. 10). Zero, negative, or not specified means wait indefinitely. The minimum allowed timeout is 2 seconds, therefore a value of 1 is interpreted as 2. diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml index 4eb43f2..a1c3848 100644 --- a/doc/src/sgml/monitoring.sgml +++ b/doc/src/sgml/monitoring.sgml @@ -271,13 +271,13 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser Some of the information in the dynamic statistics views shown in is security restricted. - Ordinary users can only see all the information about their own sessions - (sessions belonging to a role that they are a member of). In rows about + Ordinary users can only see all information about their own sessions + (sessions belonging to a role of which they are a member). In rows for other sessions, many columns will be null. Note, however, that the existence of a session and its general properties such as its sessions user and database are visible to all users. Superusers and members of the built-in role pg_read_all_stats (see also ) can see all the information about all sessions. + linkend="default-roles"/>) can see all information about all sessions. @@ -3631,9 +3631,9 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, The index is being built by the access method-specific code. In this phase, access methods that support progress reporting fill in their own progress data, - and the subphase is indicated in this column. Typically, + and the subphase is indicated in this column. blocks_total and blocks_done - will contain progress data, as well as potentially + will contain progress data, as may tuples_total and tuples_done. @@ -3718,16 +3718,16 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, VACUUM Progress Reporting - Whenever VACUUM is running, the - pg_stat_progress_vacuum view will contain - one row for each backend (including autovacuum worker processes) that is - currently vacuuming. The tables below describe the information + The pg_stat_progress_vacuum view will contain one + row for each backend that is running VACUUM, including + autovacuum worker processes. + The tables below describe the information that will be reported and provide information about how to interpret it. - Progress for VACUUM FULL commands is reported via - pg_stat_progress_cluster - because both VACUUM FULL and CLUSTER - rewrite the table, while regular VACUUM only modifies it - in place. See . + Progress for VACUUM FULL commands is instead reported via + pg_stat_progress_cluster, + because VACUUM FULL rewrites the table, like CLUSTER, + while regular VACUUM modifies it in place. See . +
@@ -3910,9 +3910,9 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, CLUSTER Progress Reporting - Whenever CLUSTER or VACUUM FULL is - running, the pg_stat_progress_cluster view will - contain a row for each backend that is currently running either command. + The pg_stat_progress_cluster view will contain a + row for each backend that is running either + CLUSTER or VACUUM FULL. The tables below describe the information that will be reported and provide information about how to interpret it. diff --git a/doc/src/sgml/perform.sgml b/doc/src/sgml/perform.sgml index a84be85..65c161b 100644 --- a/doc/src/sgml/perform.sgml +++ b/doc/src/sgml/perform.sgml @@ -899,10 +899,10 @@ EXPLAIN ANALYZE SELECT * FROM tenk1 WHERE unique1 < 100 AND unique2 > 9000 Generally, the EXPLAIN output will display details for every plan node which was generated by the query planner. However, there are cases where the executor is able to determine that certain nodes are - not required; currently, the only node types to support this are the - Append and MergeAppend nodes. These - node types have the ability to discard subnodes which they are able to - determine won't contain any records required by the query. It is possible + not required; currently, the only node types to support this are + Append and MergeAppend, which + are able to discard subnodes when it's deduced that + they will not contain any records required by the query. It is possible to determine that nodes have been removed in this way by the presence of a "Subplans Removed" property in the EXPLAIN output. diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml index 49b081a..dd80bd0 100644 --- a/doc/src/sgml/ref/alter_table.sgml +++ b/doc/src/sgml/ref/alter_table.sgml @@ -219,7 +219,7 @@ WITH ( MODULUS numeric_literal, REM SET NOT NULL may only be applied to a column - providing none of the records in the table contain a + provided none of the records in the table contain a NULL value for the column. Ordinarily this is checked during the ALTER TABLE by scanning the entire table; however, if a valid CHECK constraint is @@ -642,7 +642,7 @@ WITH ( MODULUS numeric_literal, REM When applied to a partitioned table, nothing is moved, but any partitions created afterwards with CREATE TABLE PARTITION OF will use that tablespace, - unless the TABLESPACE clause is used to override it. + unless overridden by its TABLESPACE clause. diff --git a/doc/src/sgml/ref/create_index.sgml b/doc/src/sgml/ref/create_index.sgml index d9d95b2..14a557a 100644 --- a/doc/src/sgml/ref/create_index.sgml +++ b/doc/src/sgml/ref/create_index.sgml @@ -181,8 +181,8 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] - Currently, the B-tree and the GiST index access methods supports this - feature. In B-tree and the GiST indexes, the values of columns listed + Currently, only the B-tree and GiST index access methods support this + feature. In B-tree and GiST indexes, the values of columns listed in the INCLUDE clause are included in leaf tuples which correspond to heap tuples, but are not included in upper-level index entries used for tree navigation. diff --git a/doc/src/sgml/ref/pg_rewind.sgml b/doc/src/sgml/ref/pg_rewind.sgml index e9715d5..68c1c4d 100644 --- a/doc/src/sgml/ref/pg_rewind.sgml +++ b/doc/src/sgml/ref/pg_rewind.sgml @@ -106,15 +106,14 @@ PostgreSQL documentation - pg_rewind will fail immediately if it finds - files it cannot write directly to. This can happen for example when - the source and the target server use the same file mapping for read-only - SSL keys and certificates. If such files are present on the target server + pg_rewind will fail immediately if it experiences + a write error. This can happen for example when + the source and target server use the same file mapping for read-only + SSL keys and certificates. If such files are present on the target server, it is recommended to remove them before running - pg_rewind. After doing the rewind, some of + pg_rewind. After performing the rewind, some of those files may have been copied from the source, in which case it may - be necessary to remove the data copied and restore back the set of links - used before the rewind. + be necessary to remove them and restore the files removed beforehand. @@ -185,7 +184,7 @@ PostgreSQL documentation pg_rewind to return without waiting, which is faster, but means that a subsequent operating system crash can leave the synchronized data folder corrupt. Generally, this option is - useful for testing but should not be used when creating a production + useful for testing but should not be used on a production installation. @@ -266,7 +265,7 @@ GRANT EXECUTE ON function pg_catalog.pg_read_binary_file(text, bigint, bigint, b When executing pg_rewind using an online cluster as source which has been recently promoted, it is necessary - to execute a CHECKPOINT after promotion so as its + to execute a CHECKPOINT after promotion such that its control file reflects up-to-date timeline information, which is used by pg_rewind to check if the target cluster can be rewound using the designated source cluster. diff --git a/doc/src/sgml/ref/pgbench.sgml b/doc/src/sgml/ref/pgbench.sgml index ee2501b..7d3cf25 100644 --- a/doc/src/sgml/ref/pgbench.sgml +++ b/doc/src/sgml/ref/pgbench.sgml @@ -474,10 +474,8 @@ pgbench options d - Because in "prepared" mode pgbench reuses - the parse analysis result for the second and subsequent query - iteration, pgbench runs faster in the - prepared mode than in other modes. + pgbench runs faster in prepared mode because the + parse analysis happens only during the first query. The default is simple query protocol. (See diff --git a/doc/src/sgml/ref/reindex.sgml b/doc/src/sgml/ref/reindex.sgml index e05a76c..a5a6eba 100644 --- a/doc/src/sgml/ref/reindex.sgml +++ b/doc/src/sgml/ref/reindex.sgml @@ -241,7 +241,7 @@ REINDEX [ ( VERBOSE ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } [ CONCURR Reindexing a single index or table requires being the owner of that index or table. Reindexing a schema or database requires being the - owner of that schema or database. Note that is therefore sometimes + owner of that schema or database. Note specifically that it's possible for non-superusers to rebuild indexes of tables owned by other users. However, as a special exception, when REINDEX DATABASE, REINDEX SCHEMA diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index fde9dbc..032553a 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -2601,8 +2601,9 @@ openssl x509 -req -in server.csr -text -days 365 \ using GSSAPI to encrypt client/server communications for increased security. Support requires that a GSSAPI implementation (such as MIT krb5) is installed on both client and server - systems, and that support in PostgreSQL is - enabled at build time (see ). + systems, and must be enabled at the time + PostgreSQL is built (see ). @@ -2611,7 +2612,7 @@ openssl x509 -req -in server.csr -text -days 365 \ The PostgreSQL server will listen for both normal and GSSAPI-encrypted connections on the same TCP - port, and will negotiate with any connecting client on whether to + port, and will negotiate with any connecting client whether to use GSSAPI for encryption (and for authentication). By default, this decision is up to the client (which means it can be downgraded by an attacker); see about diff --git a/doc/src/sgml/sources.sgml b/doc/src/sgml/sources.sgml index 419f753..79f5322 100644 --- a/doc/src/sgml/sources.sgml +++ b/doc/src/sgml/sources.sgml @@ -103,7 +103,7 @@ less -x4 message text. In addition there are optional elements, the most common of which is an error identifier code that follows the SQL spec's SQLSTATE conventions. - ereport itself is just a shell function, that exists + ereport itself is just a shell function that exists mainly for the syntactic convenience of making message generation look like a function call in the C source code. The only parameter accepted directly by ereport is the severity level. @@ -359,7 +359,7 @@ ereport(ERROR, specify suppression of the CONTEXT: portion of a message in the postmaster log. This should only be used for verbose debugging messages where the repeated inclusion of context would bloat the log - volume too much. + too much. @@ -452,8 +452,8 @@ Hint: the addendum enough for error messages. Detail and hint messages can be relegated to a verbose mode, or perhaps a pop-up error-details window. Also, details and hints would normally be suppressed from the server log to save - space. Reference to implementation details is best avoided since users - aren't expected to know the details. + space. References to implementation details are best avoided since users + aren't expected to know them. @@ -504,14 +504,14 @@ Hint: the addendum Use of Quotes - Use quotes always to delimit file names, user-supplied identifiers, and + Always use quotes to delimit file names, user-supplied identifiers, and other variables that might contain words. Do not use them to mark up variables that will not contain words (for example, operator names). There are functions in the backend that will double-quote their own output - at need (for example, format_type_be()). Do not put + as needed (for example, format_type_be()). Do not put additional quotes around the output of such functions. @@ -872,7 +872,7 @@ BETTER: unrecognized node type: 42 from a few platform dependent pieces. - A few features included in the C99 standard are, at this time, not be + A few features included in the C99 standard are, at this time, not permitted to be used in core PostgreSQL code. This currently includes variable length arrays, intermingled declarations and code, // comments, universal @@ -880,16 +880,16 @@ BETTER: unrecognized node type: 42 practices. - Features from later revision of the C standard or compiler specific + Features from later revisions of the C standard or compiler specific features can be used, if a fallback is provided. - For example _StaticAssert() and + For example, _StaticAssert() and __builtin_constant_p are currently used, even though - they are from newer revisions of the C standard and a - GCC extension respectively. If not available - we respectively fall back to using a C99 compatible replacement that - performs the same checks, but emits rather cryptic messages and do not + they are from a newer revision of the C standard and a + GCC extension, respectively. If not available, in the first case, + we fall back to using a C99 compatible replacement that + performs the same checks, but emits rather cryptic messages; in the second case, we do not use __builtin_constant_p. @@ -897,14 +897,14 @@ BETTER: unrecognized node type: 42 Function-Like Macros and Inline Functions - Both, macros with arguments and static inline - functions, may be used. The latter are preferable if there are + Both macros with arguments and static inline + functions may be used. The latter are preferable if there are multiple-evaluation hazards when written as a macro, as e.g. the case with #define Max(x, y) ((x) > (y) ? (x) : (y)) - or when the macro would be very long. In other cases it's only + or when the macro would be very long. In other cases, it's only possible to use macros, or at least easier. For example because expressions of various types need to be passed to the macro. @@ -936,19 +936,19 @@ MemoryContextSwitchTo(MemoryContext context) Writing Signal Handlers - To be suitable to run inside a signal handler code has to be + To be suitable to run inside a signal handler, code has to be written very carefully. The fundamental problem is that, unless blocked, a signal handler can interrupt code at any time. If code - inside the signal handler uses the same state as code outside - chaos may ensue. As an example consider what happens if a signal + inside the signal handler uses the same state as code outside, + chaos may ensue. As an example, consider what happens if a signal handler tries to acquire a lock that's already held in the interrupted code. - Barring special arrangements code in signal handlers may only + Barring special arrangements, code in signal handlers may only call async-signal safe functions (as defined in POSIX) and access variables of type volatile sig_atomic_t. A few - functions in postgres are also deemed signal safe, importantly + functions in postgres are also deemed signal safe; specifically, SetLatch(). @@ -969,9 +969,9 @@ handle_sighup(SIGNAL_ARGS) } errno is saved and restored because - SetLatch() might change it. If that were not done - interrupted code that's currently inspecting errno might see the wrong - value. + SetLatch() might change it. If that were not done, + code interrupted by a signal might see the wrong value of + errno. diff --git a/doc/src/sgml/xfunc.sgml b/doc/src/sgml/xfunc.sgml index 3403269..5c17b10 100644 --- a/doc/src/sgml/xfunc.sgml +++ b/doc/src/sgml/xfunc.sgml @@ -3364,11 +3364,11 @@ if (!ptr) - By default, a function is just a black box that the - database system knows very little about the behavior of. However, - that means that queries using the function may be executed much less + By default, a function is a black box that the + database system knows very little about, which + means queries calling the function may be executed less efficiently than they could be. It is possible to supply additional - knowledge that helps the planner optimize function calls. + information that helps the planner optimize function calls. @@ -3381,7 +3381,7 @@ if (!ptr) The parallel safety property (PARALLEL UNSAFE, PARALLEL RESTRICTED, or PARALLEL SAFE) must also be specified if you hope - to use the function in parallelized queries. + queries calling the function to use parallel query. It can also be useful to specify the function's estimated execution cost, and/or the number of rows a set-returning function is estimated to return. However, the declarative way of specifying those two @@ -3393,7 +3393,7 @@ if (!ptr) It is also possible to attach a planner support function to a SQL-callable function (called its target function), and thereby provide - knowledge about the target function that is too complex to be + information about the target function that is too complex to be represented declaratively. Planner support functions have to be written in C (although their target functions might not be), so this is an advanced feature that relatively few people will use. diff --git a/src/bin/pg_upgrade/check.c b/src/bin/pg_upgrade/check.c index fc5aa70..04c9ed8 100644 --- a/src/bin/pg_upgrade/check.c +++ b/src/bin/pg_upgrade/check.c @@ -222,13 +222,13 @@ output_completion_banner(char *analyze_script_file_name, /* Did we copy the free space files? */ if (GET_MAJOR_VERSION(old_cluster.major_version) >= 804) pg_log(PG_REPORT, - "Optimizer statistics are not transferred by pg_upgrade so,\n" - "once you start the new server, consider running:\n" + "Optimizer statistics are not transferred by pg_upgrade.\n" + "Once you start the new server, consider running:\n" " %s\n\n", analyze_script_file_name); else pg_log(PG_REPORT, "Optimizer statistics and free space information are not transferred\n" - "by pg_upgrade so, once you start the new server, consider running:\n" + "by pg_upgrade. Once you start the new server, consider running:\n" " %s\n\n", analyze_script_file_name); -- 2.1.4 --u65IjBhB3TIa72Vp Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v2-0003-JIT-typos.patch" From aae1a84b74436951222dba42b21de284ed8b1ac9 Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Sat, 30 Mar 2019 17:24:35 -0500 Subject: [PATCH v2 03/12] JIT typos.. ..which I sent to Andres some time ago and which I noticed were never applied (nor rejected). https://www.postgresql.org/message-id/20181127184133.GM10913%40telsasoft.com --- src/backend/jit/llvm/llvmjit_deform.c | 22 +++++++++++----------- src/backend/jit/llvm/llvmjit_inline.cpp | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/backend/jit/llvm/llvmjit_deform.c b/src/backend/jit/llvm/llvmjit_deform.c index 94b4635..e4a430f 100644 --- a/src/backend/jit/llvm/llvmjit_deform.c +++ b/src/backend/jit/llvm/llvmjit_deform.c @@ -103,7 +103,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, funcname = llvm_expand_funcname(context, "deform"); /* - * Check which columns do have to exist, so we don't have to check the + * Check which columns have to exist, so we don't have to check the * rows natts unnecessarily. */ for (attnum = 0; attnum < desc->natts; attnum++) @@ -298,7 +298,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, } /* - * Check if's guaranteed the all the desired attributes are available in + * Check if it's guaranteed that all the desired attributes are available in * tuple. If so, we can start deforming. If not, need to make sure to * fetch the missing columns. */ @@ -383,7 +383,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, /* * If this is the first attribute, slot->tts_nvalid was 0. Therefore - * reset offset to 0 to, it be from a previous execution. + * also reset offset to 0, it may be from a previous execution. */ if (attnum == 0) { @@ -413,7 +413,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, /* * Check for nulls if necessary. No need to take missing attributes - * into account, because in case they're present the heaptuple's natts + * into account, because if they're present, the heaptuple's natts * would have indicated that a slot_getmissingattrs() is needed. */ if (!att->attnotnull) @@ -500,13 +500,13 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, (known_alignment < 0 || known_alignment != TYPEALIGN(alignto, known_alignment))) { /* - * When accessing a varlena field we have to "peek" to see if we + * When accessing a varlena field, we have to "peek" to see if we * are looking at a pad byte or the first byte of a 1-byte-header * datum. A zero byte must be either a pad byte, or the first - * byte of a correctly aligned 4-byte length word; in either case + * byte of a correctly aligned 4-byte length word; in either case, * we can align safely. A non-zero byte must be either a 1-byte * length word, or the first byte of a correctly aligned 4-byte - * length word; in either case we need not align. + * length word; in either case, we need not align. */ if (att->attlen == -1) { @@ -600,8 +600,8 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, else if (att->attnotnull && attguaranteedalign && known_alignment >= 0) { /* - * If the offset to the column was previously known a NOT NULL & - * fixed width column guarantees that alignment is just the + * If the offset to the column was previously known, a NOT NULL & + * fixed-width column guarantees that alignment is just the * previous alignment plus column width. */ Assert(att->attlen > 0); @@ -642,8 +642,8 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, LLVMBuildGEP(b, v_tts_nulls, &l_attno, 1, "")); /* - * Store datum. For byval datums copy the value, extend to Datum's - * width, and store. For byref types, store pointer to data. + * Store datum. For byval datums: copy the value, extend to Datum's + * width, and store. For byref types: store pointer to data. */ if (att->attbyval) { diff --git a/src/backend/jit/llvm/llvmjit_inline.cpp b/src/backend/jit/llvm/llvmjit_inline.cpp index 96fc68a..07b5fc7 100644 --- a/src/backend/jit/llvm/llvmjit_inline.cpp +++ b/src/backend/jit/llvm/llvmjit_inline.cpp @@ -9,7 +9,7 @@ * for an external function is found - not guaranteed! - the index will then * be used to judge their instruction count / inline worthiness. After doing * so for all external functions, all the referenced functions (and - * prerequisites) will be imorted. + * prerequisites) will be imported. * * Copyright (c) 2016-2019, PostgreSQL Global Development Group * -- 2.1.4 --u65IjBhB3TIa72Vp Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v2-0004-Add-comma-for-readability.patch" From 888392260d2c4373dc685c2026e76256733c4136 Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Fri, 29 Mar 2019 19:37:35 -0500 Subject: [PATCH v2 04/12] Add comma for readability --- doc/src/sgml/backup.sgml | 2 +- doc/src/sgml/bki.sgml | 2 +- doc/src/sgml/client-auth.sgml | 4 ++-- doc/src/sgml/config.sgml | 4 ++-- doc/src/sgml/ddl.sgml | 2 +- doc/src/sgml/indices.sgml | 2 +- doc/src/sgml/installation.sgml | 2 +- doc/src/sgml/logical-replication.sgml | 2 +- doc/src/sgml/ref/create_table.sgml | 2 +- doc/src/sgml/ref/create_table_as.sgml | 2 +- doc/src/sgml/ref/pgupgrade.sgml | 4 ++-- doc/src/sgml/ref/psql-ref.sgml | 2 +- doc/src/sgml/sources.sgml | 4 ++-- doc/src/sgml/xoper.sgml | 2 +- 14 files changed, 18 insertions(+), 18 deletions(-) diff --git a/doc/src/sgml/backup.sgml b/doc/src/sgml/backup.sgml index b67da89..ae41bc7 100644 --- a/doc/src/sgml/backup.sgml +++ b/doc/src/sgml/backup.sgml @@ -1024,7 +1024,7 @@ SELECT pg_start_backup('label', true); consider during this backup. - As noted above, if the server crashes during the backup it may not be + As noted above, if the server crashes during the backup, it may not be possible to restart until the backup_label file has been manually deleted from the PGDATA directory. Note that it is very important to never remove the diff --git a/doc/src/sgml/bki.sgml b/doc/src/sgml/bki.sgml index aa3d6f8..e27fa76 100644 --- a/doc/src/sgml/bki.sgml +++ b/doc/src/sgml/bki.sgml @@ -403,7 +403,7 @@ 8000—9999. This minimizes the risk of OID collisions with other patches being developed concurrently. To keep the 8000—9999 range free for development purposes, after a patch has been committed - to the master git repository its OIDs should be renumbered into + to the master git repository, its OIDs should be renumbered into available space below that range. Typically, this will be done near the end of each development cycle, moving all OIDs consumed by patches committed in that cycle at the same time. The script diff --git a/doc/src/sgml/client-auth.sgml b/doc/src/sgml/client-auth.sgml index 45a3cf3..16bd1ae 100644 --- a/doc/src/sgml/client-auth.sgml +++ b/doc/src/sgml/client-auth.sgml @@ -157,7 +157,7 @@ hostnogssenc database user - To make use of this option the server must be built with + To make use of this option, the server must be built with SSL support. Furthermore, SSL must be enabled by setting the configuration parameter (see @@ -189,7 +189,7 @@ hostnogssenc database user - To make use of this option the server must be built with + To make use of this option, the server must be built with GSSAPI support. Otherwise, the hostgssenc record is ignored except for logging a warning that it cannot match any connections. diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index e45a321..ab83885 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -3458,7 +3458,7 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows reached. The default is pause, which means recovery will be paused. promote means the recovery process will finish and the server will start to accept connections. - Finally shutdown will stop the server after reaching the + Finally, shutdown will stop the server after reaching the recovery target. @@ -4188,7 +4188,7 @@ ANY num_sync ( , REM This clause specifies optional storage parameters for a table or index; see for more - information. For backward-compatibility the WITH + information. For backward-compatibility, the WITH clause for a table can also include OIDS=FALSE to specify that rows of the new table should not contain OIDs (object identifiers), OIDS=TRUE is not supported anymore. diff --git a/doc/src/sgml/ref/create_table_as.sgml b/doc/src/sgml/ref/create_table_as.sgml index 1371261..d1af36e 100644 --- a/doc/src/sgml/ref/create_table_as.sgml +++ b/doc/src/sgml/ref/create_table_as.sgml @@ -142,7 +142,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI This clause specifies optional storage parameters for the new table; see for more - information. For backward-compatibility the WITH + information. For backward-compatibility, the WITH clause for a table can also include OIDS=FALSE to specify that rows of the new table should contain no OIDs (object identifiers), OIDS=TRUE is not supported anymore. diff --git a/doc/src/sgml/ref/pgupgrade.sgml b/doc/src/sgml/ref/pgupgrade.sgml index c896882..7fee896 100644 --- a/doc/src/sgml/ref/pgupgrade.sgml +++ b/doc/src/sgml/ref/pgupgrade.sgml @@ -726,7 +726,7 @@ psql --username=postgres --file=script.sql postgres pg_upgrade launches short-lived postmasters in the old and new data directories. Temporary Unix socket files for communication with these postmasters are, by default, made in the current - working directory. In some situations the path name for the current + working directory. In some situations, the path name for the current directory might be too long to be a valid socket name. In that case you can use the option to put the socket files in some directory with a shorter path name. For security, be sure that that @@ -793,7 +793,7 @@ psql --username=postgres --file=script.sql postgres - In PostgreSQL 12 and later small tables by + In PostgreSQL 12 and later, small tables by default don't have a free space map, as a space optimization. If you are upgrading a pre-12 cluster, the free space maps of small tables will likewise not be transferred to the new cluster. diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index 636df6c..3ce9ef6 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -1053,7 +1053,7 @@ testdb=> These operations are not as efficient as the SQL COPY command with a file or program data source or destination, because all data must pass through the client/server - connection. For large amounts of data the SQL + connection. For large amounts of data, the SQL command might be preferable. diff --git a/doc/src/sgml/sources.sgml b/doc/src/sgml/sources.sgml index 79f5322..520bbae 100644 --- a/doc/src/sgml/sources.sgml +++ b/doc/src/sgml/sources.sgml @@ -100,7 +100,7 @@ less -x4 There are two required elements for every message: a severity level (ranging from DEBUG to PANIC) and a primary - message text. In addition there are optional elements, the most + message text. In addition, there are optional elements, the most common of which is an error identifier code that follows the SQL spec's SQLSTATE conventions. ereport itself is just a shell function that exists @@ -473,7 +473,7 @@ Hint: the addendum Rationale: Messages are not necessarily displayed on terminal-type - displays. In GUI displays or browsers these formatting instructions are + displays. In GUI displays or browsers, these formatting instructions are at best ignored. diff --git a/doc/src/sgml/xoper.sgml b/doc/src/sgml/xoper.sgml index 260e43c..55cd3b1 100644 --- a/doc/src/sgml/xoper.sgml +++ b/doc/src/sgml/xoper.sgml @@ -375,7 +375,7 @@ table1.column1 OP table2.column2 Another example is that on machines that meet the IEEE floating-point standard, negative zero and positive zero are different values (different bit patterns) but they are defined to compare equal. - If a float value might contain negative zero then extra steps are needed + If a float value might contain negative zero, then extra steps are needed to ensure it generates the same hash value as positive zero. -- 2.1.4 --u65IjBhB3TIa72Vp Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v2-0005-Consistent-language-must-be-superuser.patch" From 19de2fe69d90c1ac6fa43a2ab537bb70c4f08958 Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Fri, 29 Mar 2019 19:40:49 -0500 Subject: [PATCH v2 05/12] Consistent language: "must be superuser" --- src/backend/storage/ipc/signalfuncs.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/backend/storage/ipc/signalfuncs.c b/src/backend/storage/ipc/signalfuncs.c index 4769b1b..ab26328 100644 --- a/src/backend/storage/ipc/signalfuncs.c +++ b/src/backend/storage/ipc/signalfuncs.c @@ -115,7 +115,7 @@ pg_cancel_backend(PG_FUNCTION_ARGS) if (r == SIGNAL_BACKEND_NOSUPERUSER) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - (errmsg("must be a superuser to cancel superuser query")))); + (errmsg("must be superuser to cancel superuser query")))); if (r == SIGNAL_BACKEND_NOPERMISSION) ereport(ERROR, @@ -139,12 +139,12 @@ pg_terminate_backend(PG_FUNCTION_ARGS) if (r == SIGNAL_BACKEND_NOSUPERUSER) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - (errmsg("must be a superuser to terminate superuser process")))); + (errmsg("must be superuser to terminate superuser process")))); if (r == SIGNAL_BACKEND_NOPERMISSION) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - (errmsg("must be a member of the role whose process is being terminated or member of pg_signal_backend")))); + (errmsg("must be member of role whose process is being terminated or member of pg_signal_backend")))); PG_RETURN_BOOL(r == SIGNAL_BACKEND_SUCCESS); } -- 2.1.4 --u65IjBhB3TIa72Vp Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v2-0006-Consistent-spelling-timestamp.patch" From ab72d0f7035867f54a5f57d1e7a26c60e6c3be59 Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Fri, 29 Mar 2019 19:52:22 -0500 Subject: [PATCH v2 06/12] Consistent spelling: "timestamp" --- doc/src/sgml/config.sgml | 14 ++++++------- doc/src/sgml/datatype.sgml | 6 +++--- doc/src/sgml/ecpg.sgml | 4 ++-- doc/src/sgml/func.sgml | 30 +++++++++++++-------------- doc/src/sgml/logicaldecoding.sgml | 4 ++-- doc/src/sgml/plpgsql.sgml | 2 +- doc/src/sgml/ref/pgbench.sgml | 6 +++--- doc/src/sgml/replication-origins.sgml | 2 +- doc/src/sgml/trigger.sgml | 2 +- doc/src/sgml/uuid-ossp.sgml | 2 +- src/backend/utils/misc/guc.c | 4 ++-- src/backend/utils/misc/postgresql.conf.sample | 2 +- src/include/catalog/pg_control.h | 4 ++-- src/interfaces/ecpg/pgtypeslib/timestamp.c | 4 ++-- 14 files changed, 43 insertions(+), 43 deletions(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index ab83885..4722392 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -3344,7 +3344,7 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows - This parameter specifies the time stamp up to which recovery + This parameter specifies the timestamp up to which recovery will proceed. The precise stopping point is also influenced by . @@ -4171,7 +4171,7 @@ ANY num_sync ( @@ -6329,7 +6329,7 @@ local0.* /var/log/postgresql %s - Process start time stamp + Process start timestamp no @@ -6384,7 +6384,7 @@ FROM pg_stat_activity; Syslog produces its own - time stamp and process ID information, so you probably do not want to + timestamp and process ID information, so you probably do not want to include those escapes if you are logging to syslog. @@ -6533,7 +6533,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' This option emits log lines in comma-separated-values (CSV) format, with these columns: - time stamp with milliseconds, + timestamp with milliseconds, user name, database name, process ID, @@ -7959,7 +7959,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; - Sets the time zone for displaying and interpreting time stamps. + Sets the time zone for displaying and interpreting timestamps. The built-in default is GMT, but that is typically overridden in postgresql.conf; initdb will install a setting there corresponding to its system environment. diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml index cced57b..ba7e70c 100644 --- a/doc/src/sgml/datatype.sgml +++ b/doc/src/sgml/datatype.sgml @@ -2031,7 +2031,7 @@ MINUTE TO SECOND - Valid input for the time stamp types consists of the concatenation + Valid input for the timestamp types consists of the concatenation of a date and a time, followed by an optional time zone, followed by an optional AD or BC. (Alternatively, AD/BC can appear @@ -2159,12 +2159,12 @@ January 8 04:05:06 1999 PST infinity date, timestamp - later than all other time stamps + later than all other timestamps -infinity date, timestamp - earlier than all other time stamps + earlier than all other timestamps now diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml index 798aae4..c2d29c9 100644 --- a/doc/src/sgml/ecpg.sgml +++ b/doc/src/sgml/ecpg.sgml @@ -1030,7 +1030,7 @@ struct varchar_var { int len; char arr[180]; } var; the pgtypes library. The pgtypes library, described in detail in contains basic functions to deal with those types, such that you do not need to send a query to - the SQL server just for adding an interval to a time stamp for + the SQL server just for adding an interval to a timestamp for example. @@ -3622,7 +3622,7 @@ void PGTYPESdecimal_free(decimal *var); PGTYPESInvalidTimestamp - A value of type timestamp representing an invalid time stamp. This is + A value of type timestamp representing an invalid timestamp. This is returned by the function PGTYPEStimestamp_from_asc on parse error. Note that due to the internal representation of the timestamp data type, diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 5c3724a..defc287 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -5964,7 +5964,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); to_char(timestamp, text) text - convert time stamp to string + convert timestamp to string to_char(current_timestamp, 'HH12:MI:SS') @@ -6022,7 +6022,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); to_timestamp(text, text) timestamp with time zone - convert string to time stamp + convert string to timestamp to_timestamp('05 Dec 2000', 'DD Mon YYYY') @@ -7357,7 +7357,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); isfinite(timestamp) boolean - Test for finite time stamp (not +/-infinity) + Test for finite timestamp (not +/-infinity) isfinite(timestamp '2001-02-16 21:28:30') true @@ -7647,8 +7647,8 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); This expression yields true when two time periods (defined by their endpoints) overlap, false when they do not overlap. The endpoints - can be specified as pairs of dates, times, or time stamps; or as - a date, time, or time stamp followed by an interval. When a pair + can be specified as pairs of dates, times, or timestamps; or as + a date, time, or timestamp followed by an interval. When a pair of values is provided, either the start or the end can be written first; OVERLAPS automatically takes the earlier value of the pair as the start. Each time period is considered to @@ -7881,7 +7881,7 @@ SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours'); - You can convert an epoch value back to a time stamp + You can convert an epoch value back to a timestamp with to_timestamp: @@ -8288,7 +8288,7 @@ SELECT date_trunc('hour', INTERVAL '3 days 02:47:33'); The AT TIME ZONE converts time stamp without time zone to/from - time stamp with time zone, and + timestamp with time zone, and time values to different time zones. shows its variants. @@ -8310,7 +8310,7 @@ SELECT date_trunc('hour', INTERVAL '3 days 02:47:33'); timestamp without time zone AT TIME ZONE zone timestamp with time zone - Treat given time stamp without time zone as located in the specified time zone + Treat given timestamp without time zone as located in the specified time zone @@ -8318,7 +8318,7 @@ SELECT date_trunc('hour', INTERVAL '3 days 02:47:33'); timestamp with time zone AT TIME ZONE zone timestamp without time zone - Convert given time stamp with time zone to the new time + Convert given timestamp with time zone to the new time zone, with no time zone designation @@ -8355,7 +8355,7 @@ SELECT TIMESTAMP '2001-02-16 20:38:40-05' AT TIME ZONE 'Asia/Tokyo' AT TIME ZONE The first example adds a time zone to a value that lacks it, and displays the value using the current TimeZone - setting. The second example shifts the time stamp with time zone value + setting. The second example shifts the timestamp with time zone value to the specified time zone, and returns the value without a time zone. This allows storage and display of values different from the current TimeZone setting. The third example converts @@ -8448,7 +8448,7 @@ SELECT LOCALTIMESTAMP; the intent is to allow a single transaction to have a consistent notion of the current time, so that multiple modifications within the same transaction bear the same - time stamp. + timestamp. @@ -20143,7 +20143,7 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); pg_last_xact_replay_timestamp() timestamp with time zone - Get time stamp of last transaction replayed during recovery. + Get timestamp of last transaction replayed during recovery. This is the time at which the commit or abort WAL record for that transaction was generated on the primary. If no transactions have been replayed during recovery, this function @@ -21601,9 +21601,9 @@ SELECT convert_from(pg_read_binary_file('file_in_utf8.txt'), 'UTF8'); pg_stat_file returns a record containing the file - size, last accessed time stamp, last modified time stamp, - last file status change time stamp (Unix platforms only), - file creation time stamp (Windows only), and a boolean + size, last accessed timestamp, last modified timestamp, + last file status change timestamp (Unix platforms only), + file creation timestamp (Windows only), and a boolean indicating if it is a directory. Typical usages include: SELECT * FROM pg_stat_file('filename'); diff --git a/doc/src/sgml/logicaldecoding.sgml b/doc/src/sgml/logicaldecoding.sgml index 8db9686..01eacf7 100644 --- a/doc/src/sgml/logicaldecoding.sgml +++ b/doc/src/sgml/logicaldecoding.sgml @@ -536,7 +536,7 @@ typedef void (*LogicalDecodeBeginCB) (struct LogicalDecodingContext *ctx, ReorderBufferTXN *txn); The txn parameter contains meta information about - the transaction, like the time stamp at which it has been committed and + the transaction, like the timestamp at which it has been committed and its XID. @@ -660,7 +660,7 @@ typedef void (*LogicalDecodeMessageCB) (struct LogicalDecodingContext *ctx, const char *message); The txn parameter contains meta information about - the transaction, like the time stamp at which it has been committed and + the transaction, like the timestamp at which it has been committed and its XID. Note however that it can be NULL when the message is non-transactional and the XID was not assigned yet in the transaction which logged the message. The lsn has WAL diff --git a/doc/src/sgml/plpgsql.sgml b/doc/src/sgml/plpgsql.sgml index 50f1884..27dc1c7 100644 --- a/doc/src/sgml/plpgsql.sgml +++ b/doc/src/sgml/plpgsql.sgml @@ -4855,7 +4855,7 @@ $$ LANGUAGE plpgsql; PL/pgSQL interpreter casts this string to the timestamp type by calling the text_out and timestamp_in - functions for the conversion. So, the computed time stamp is updated + functions for the conversion. So, the computed timestamp is updated on each execution as the programmer expects. Even though this happens to work as expected, it's not terribly efficient, so use of the now() function would still be a better idea. diff --git a/doc/src/sgml/ref/pgbench.sgml b/doc/src/sgml/ref/pgbench.sgml index 7d3cf25..ee111b8 100644 --- a/doc/src/sgml/ref/pgbench.sgml +++ b/doc/src/sgml/ref/pgbench.sgml @@ -1660,9 +1660,9 @@ END; script_no identifies which script file was used (useful when multiple scripts were specified with or ), and time_epoch/time_us are a - Unix-epoch time stamp and an offset + Unix-epoch timestamp and an offset in microseconds (suitable for creating an ISO 8601 - time stamp with fractional seconds) showing when + timestamp with fractional seconds) showing when the transaction completed. The schedule_lag field is the difference between the transaction's scheduled start time, and the time it actually started, in @@ -1718,7 +1718,7 @@ END; where interval_start is the start of the interval (as a Unix - epoch time stamp), + epoch timestamp), num_transactions is the number of transactions within the interval, sum_latency is the sum of the transaction diff --git a/doc/src/sgml/replication-origins.sgml b/doc/src/sgml/replication-origins.sgml index a03ce76..aaa3705 100644 --- a/doc/src/sgml/replication-origins.sgml +++ b/doc/src/sgml/replication-origins.sgml @@ -61,7 +61,7 @@ marked as replaying from a remote node (using the pg_replication_origin_session_setup() function). Additionally the LSN and commit - time stamp of every source transaction can be configured on a per + timestamp of every source transaction can be configured on a per transaction basis using pg_replication_origin_xact_setup(). If that's done replication progress will persist in a crash safe diff --git a/doc/src/sgml/trigger.sgml b/doc/src/sgml/trigger.sgml index 67e1861..1bd69f2 100644 --- a/doc/src/sgml/trigger.sgml +++ b/doc/src/sgml/trigger.sgml @@ -335,7 +335,7 @@ requirements to call the same function. As an example, there could be a generalized trigger function that takes as its arguments two column names and puts the current user in one and - the current time stamp in the other. Properly written, this + the current timestamp in the other. Properly written, this trigger function would be independent of the specific table it is triggering on. So the same function could be used for INSERT events on any table with suitable diff --git a/doc/src/sgml/uuid-ossp.sgml b/doc/src/sgml/uuid-ossp.sgml index b3b816c..db8871b 100644 --- a/doc/src/sgml/uuid-ossp.sgml +++ b/doc/src/sgml/uuid-ossp.sgml @@ -41,7 +41,7 @@ This function generates a version 1 UUID. This involves the MAC - address of the computer and a time stamp. Note that UUIDs of this + address of the computer and a timestamp. Note that UUIDs of this kind reveal the identity of the computer that created the identifier and the time at which it did so, which might make it unsuitable for certain security-sensitive applications. diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index f7f726b..965f517 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -3534,7 +3534,7 @@ static struct config_string ConfigureNamesString[] = }, { {"recovery_target_time", PGC_POSTMASTER, WAL_RECOVERY_TARGET, - gettext_noop("Sets the time stamp up to which recovery will proceed."), + gettext_noop("Sets the timestamp up to which recovery will proceed."), NULL }, &recovery_target_time_string, @@ -3916,7 +3916,7 @@ static struct config_string ConfigureNamesString[] = { {"TimeZone", PGC_USERSET, CLIENT_CONN_LOCALE, - gettext_noop("Sets the time zone for displaying and interpreting time stamps."), + gettext_noop("Sets the time zone for displaying and interpreting timestamps."), NULL, GUC_REPORT }, diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index 77bb7c2..73d8e31 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -259,7 +259,7 @@ # (change requires restart) #recovery_target_name = '' # the named restore point to which recovery will proceed # (change requires restart) -#recovery_target_time = '' # the time stamp up to which recovery will proceed +#recovery_target_time = '' # the timestamp up to which recovery will proceed # (change requires restart) #recovery_target_xid = '' # the transaction ID up to which recovery will proceed # (change requires restart) diff --git a/src/include/catalog/pg_control.h b/src/include/catalog/pg_control.h index ff98d9e..06fbe76 100644 --- a/src/include/catalog/pg_control.h +++ b/src/include/catalog/pg_control.h @@ -48,7 +48,7 @@ typedef struct CheckPoint Oid oldestXidDB; /* database with minimum datfrozenxid */ MultiXactId oldestMulti; /* cluster-wide minimum datminmxid */ Oid oldestMultiDB; /* database with minimum datminmxid */ - pg_time_t time; /* time stamp of checkpoint */ + pg_time_t time; /* timestamp of checkpoint */ TransactionId oldestCommitTsXid; /* oldest Xid with valid commit * timestamp */ TransactionId newestCommitTsXid; /* newest Xid with valid commit @@ -125,7 +125,7 @@ typedef struct ControlFileData * System status data */ DBState state; /* see enum above */ - pg_time_t time; /* time stamp of last pg_control update */ + pg_time_t time; /* timestamp of last pg_control update */ XLogRecPtr checkPoint; /* last check point record ptr */ CheckPoint checkPointCopy; /* copy of last check point record */ diff --git a/src/interfaces/ecpg/pgtypeslib/timestamp.c b/src/interfaces/ecpg/pgtypeslib/timestamp.c index a7e0fe6..35697e2 100644 --- a/src/interfaces/ecpg/pgtypeslib/timestamp.c +++ b/src/interfaces/ecpg/pgtypeslib/timestamp.c @@ -854,7 +854,7 @@ PGTYPEStimestamp_defmt_asc(const char *str, const char *fmt, timestamp * d) } /* -* add an interval to a time stamp +* add an interval to a timestamp * * *tout = tin + span * @@ -913,7 +913,7 @@ PGTYPEStimestamp_add_interval(timestamp * tin, interval * span, timestamp * tout /* -* subtract an interval from a time stamp +* subtract an interval from a timestamp * * *tout = tin - span * -- 2.1.4 --u65IjBhB3TIa72Vp Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v2-0007-overridden-vs-overwritten.patch" From 50190b412dce43dc3d7436ece2ab037791e743ed Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Fri, 29 Mar 2019 13:18:12 -0500 Subject: [PATCH v2 07/12] overridden vs overwritten --- doc/src/sgml/ref/pgbench.sgml | 2 +- doc/src/sgml/ref/psql-ref.sgml | 2 +- src/test/regress/expected/create_table.out | 2 +- src/test/regress/sql/create_table.sql | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/src/sgml/ref/pgbench.sgml b/doc/src/sgml/ref/pgbench.sgml index ee111b8..0334229 100644 --- a/doc/src/sgml/ref/pgbench.sgml +++ b/doc/src/sgml/ref/pgbench.sgml @@ -941,7 +941,7 @@ pgbench options d random_seed - random generator seed (unless overwritten with ) + random generator seed (unless overridden with ) diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index 3ce9ef6..464c196 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -478,7 +478,7 @@ EOF leave off the equal sign. To set a variable with an empty value, use the equal sign but leave off the value. These assignments are done during command line processing, so variables that reflect - connection state will get overwritten later. + connection state will be overridden later. diff --git a/src/test/regress/expected/create_table.out b/src/test/regress/expected/create_table.out index ad0cb32..44c7864 100644 --- a/src/test/regress/expected/create_table.out +++ b/src/test/regress/expected/create_table.out @@ -874,7 +874,7 @@ create table parted_notnull_inh_test1 partition of parted_notnull_inh_test (a no insert into parted_notnull_inh_test (b) values (null); ERROR: null value in column "b" violates not-null constraint DETAIL: Failing row contains (1, null). --- note that while b's default is overriden, a's default is preserved +-- note that while b's default is overridden, a's default is preserved \d parted_notnull_inh_test1 Table "public.parted_notnull_inh_test1" Column | Type | Collation | Nullable | Default diff --git a/src/test/regress/sql/create_table.sql b/src/test/regress/sql/create_table.sql index 751c0d3..36222c2 100644 --- a/src/test/regress/sql/create_table.sql +++ b/src/test/regress/sql/create_table.sql @@ -720,7 +720,7 @@ CREATE TABLE part_c_1_10 PARTITION OF part_c FOR VALUES FROM (1) TO (10); create table parted_notnull_inh_test (a int default 1, b int not null default 0) partition by list (a); create table parted_notnull_inh_test1 partition of parted_notnull_inh_test (a not null, b default 1) for values in (1); insert into parted_notnull_inh_test (b) values (null); --- note that while b's default is overriden, a's default is preserved +-- note that while b's default is overridden, a's default is preserved \d parted_notnull_inh_test1 drop table parted_notnull_inh_test; -- 2.1.4 --u65IjBhB3TIa72Vp Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v2-0008-Clean-up-language-in-cf984672-Improve-behavior-of.patch" From 01a366c2bbff465c6e732d74da1c2f68f0efbc28 Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Sat, 30 Mar 2019 03:42:35 -0500 Subject: [PATCH v2 08/12] Clean up language in cf984672: Improve behavior of to_timestamp()/to_date() functions --- doc/src/sgml/func.sgml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index defc287..4b3f768 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -6399,19 +6399,19 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); exceeds the number of separators in the template. - If FX is specified, separator in template string - matches to exactly one character in input string. Notice we don't insist - input string character to be the same as template string separator. + If FX is specified, a separator in the template string + matches exactly one character in the input string. But note that the + character in the input string is not required to be the same character in the template string. For example, to_timestamp('2000/JUN', 'FXYYYY MON') works, but to_timestamp('2000/JUN', 'FXYYYY  MON') - returns an error because a space second template string space consumed - letter J from the input string. + returns an error because a space in its template string consumes + the letter J from the input string. - TZH template pattern can match a signed number. + The TZH template pattern can match a signed number. Without the FX option, it may lead to ambiguity in interpretation of the minus sign, which can also be interpreted as a separator. This ambiguity is resolved as follows. If the number of separators before -- 2.1.4 --u65IjBhB3TIa72Vp Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v2-0009-its-own-is-possessive.patch" From 47b72d94f2631ca29765c80118a27441a25d669a Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Sun, 31 Mar 2019 13:59:06 -0500 Subject: [PATCH v2 09/12] "its own" is possessive --- src/backend/utils/hash/dynahash.c | 2 +- src/interfaces/libpq/fe-auth.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/utils/hash/dynahash.c b/src/backend/utils/hash/dynahash.c index 9dc2a55..0dfbec8 100644 --- a/src/backend/utils/hash/dynahash.c +++ b/src/backend/utils/hash/dynahash.c @@ -817,7 +817,7 @@ hash_destroy(HTAB *hashp) { /* allocation method must be one we know how to free, too */ Assert(hashp->alloc == DynaHashAlloc); - /* so this hashtable must have it's own context */ + /* so this hashtable must have its own context */ Assert(hashp->hcxt != NULL); hash_stats("destroy", hashp); diff --git a/src/interfaces/libpq/fe-auth.c b/src/interfaces/libpq/fe-auth.c index 624e02b..bb04e27 100644 --- a/src/interfaces/libpq/fe-auth.c +++ b/src/interfaces/libpq/fe-auth.c @@ -879,7 +879,7 @@ pg_fe_sendauth(AuthRequest areq, int payloadlen, PGconn *conn) case AUTH_REQ_SSPI: /* - * SSPI has it's own startup message so libpq can decide which + * SSPI has its own startup message so libpq can decide which * method to use. Indicate to pg_SSPI_startup that we want SSPI * negotiation instead of Kerberos. */ -- 2.1.4 --u65IjBhB3TIa72Vp Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v2-0010-Duplicate-word-in-comment.patch" From 1808271e54a7293cc3d4578a6bd660f603a7dbcd Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Thu, 4 Apr 2019 01:21:10 -0500 Subject: [PATCH v2 10/12] Duplicate word in comment See also 9226a3b89b004b3472d963442856206f0c249a53 --- src/backend/optimizer/plan/planner.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index 5ed691c..0a6710c 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -118,7 +118,7 @@ typedef struct /* * Temporary structure for use during WindowClause reordering in order to be - * be able to sort WindowClauses on partitioning/ordering prefix. + * able to sort WindowClauses on partitioning/ordering prefix. */ typedef struct { -- 2.1.4 --u65IjBhB3TIa72Vp Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v2-0011-is-vs-are-plural.patch" From 2fe90f71d0b34ebff33973c3ca612bad6b4ebc5b Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Thu, 4 Apr 2019 18:57:48 -0500 Subject: [PATCH v2 11/12] is vs are plural --- doc/src/sgml/auto-explain.sgml | 4 ++-- doc/src/sgml/ddl.sgml | 2 +- doc/src/sgml/func.sgml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/src/sgml/auto-explain.sgml b/doc/src/sgml/auto-explain.sgml index da16164..1d0b226 100644 --- a/doc/src/sgml/auto-explain.sgml +++ b/doc/src/sgml/auto-explain.sgml @@ -179,8 +179,8 @@ LOAD 'auto_explain'; auto_explain.log_settings controls whether information - about modified configuration options are printed when execution plan is logged. - Only options affecting query planning with value different from the built-in + about modified configuration options is printed when an execution plan is logged. + Only those options which affect query planning and whose value differs from its built-in default value are included in the output. This parameter is off by default. Only superusers can change this setting. diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index 612eb23..e1efd68 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -3869,7 +3869,7 @@ CREATE INDEX ON measurement (logdate); Normally, the set of partitions established when initially defining the - table are not intended to remain static. It is common to want to + table is not intended to remain static. It is common to want to remove old partitions of data and periodically add new partitions for new data. One of the most important advantages of partitioning is precisely that it allows this otherwise painful task to be executed diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 4b3f768..d33b1fc 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -10275,7 +10275,7 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple Producing XML Content - A set of functions and function-like expressions are available for + A set of functions and function-like expressions is available for producing XML content from SQL data. As such, they are particularly suitable for formatting query results into XML documents for processing in client applications. -- 2.1.4 --u65IjBhB3TIa72Vp Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v2-0012-docs-create-or-reindex-progress-of-ptn-tables.patch" From f3e31268f7118d0719dcff190bdd5e1de88389d5 Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Thu, 4 Apr 2019 19:39:05 -0500 Subject: [PATCH v2 12/12] docs: create or reindex progress of ptn tables --- doc/src/sgml/monitoring.sgml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml index a1c3848..5ada8b7 100644 --- a/doc/src/sgml/monitoring.sgml +++ b/doc/src/sgml/monitoring.sgml @@ -3582,16 +3582,16 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, partitions_total bigint - When creating an index on a partitioned table, this column is set to - the total number of partitions on which the index is to be created. + When the index being created or reindexed is on a partitioned table, + this is the total number of partitions to be processed. partitions_done bigint - When creating an index on a partitioned table, this column is set to - the number of partitions on which the index has been completed. + When the index being created or reindexed is on a partitioned table, + this is the number of partitions for which the process is complete. -- 2.1.4 --u65IjBhB3TIa72Vp--