Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1g8mrH-0004qS-Ln for pgsql-hackers@arkaria.postgresql.org; Sat, 06 Oct 2018 13:43:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1g8mrD-0002Ge-2N for pgsql-hackers@arkaria.postgresql.org; Sat, 06 Oct 2018 13:42:59 +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_SHA384:256) (Exim 4.89) (envelope-from ) id 1g8mrC-0002GX-LT for pgsql-hackers@lists.postgresql.org; Sat, 06 Oct 2018 13:42:58 +0000 Received: from mail-it1-x12d.google.com ([2607:f8b0:4864:20::12d]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1g8mr8-0003H9-0p for pgsql-hackers@postgresql.org; Sat, 06 Oct 2018 13:42:57 +0000 Received: by mail-it1-x12d.google.com with SMTP id l191-v6so6141887ita.4 for ; Sat, 06 Oct 2018 06:42:53 -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:mime-version:content-disposition :user-agent; bh=z10w6qKf2mbp5+9ucLwrTRkLXFSqotobVzF8n7e6pLk=; b=Dq/kIVBnTn5cRJdixLgt/yocYk6Th+HMIu+6FrZjQoIjrcu1d4Whr/QZfVdMgPjose ILcDz7D9HGyN4SgOeofhw6UM5qGOiEAQft8ydG27lmaK85qSBaiOBMN9eQqylnTNJFqi 3RC3T+OXFhCbxh4v2cE+0n2qNRt010Kd9xymJ/kbR7bFN1zl4oNxxCyu5AgK3MGVeuJ4 YdKs9v1M+b/x7/BOpneRVJ0VSECcDI9HJQ/WKwn3w9ZIJhg+BPoyzGywHV7yUVxDUaUL b5KiTJzvEzRtk0kJt//a8N3nozI7g1y5+x5sossYVHDgDY9eeLNVZ+JC11KqAC5OPcuJ jflw== 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:mime-version :content-disposition:user-agent; bh=z10w6qKf2mbp5+9ucLwrTRkLXFSqotobVzF8n7e6pLk=; b=qVw4owe7NNxSpgrXT+/bkMNwaUGeYRdwIcJNspFpevzQfGLrNIvfHbOaTde+ZtyRJo 8DQS3F5d/nsWjMSX4zUCfC4bN18NC6xyCSXCAd/SlGdHP+ZLQZGGy2GMzWt306aES/+6 yt4qWxa/D8qQLbMvbztnX5pnYmQKEn9k61HfX1Rk35KFg7mWdkyFbRcXAQNqjncDztcN 0ScIV/olXkiUk9Z/OyNMNMb88NHVpNjm9Oo26e4SJGRQetYLVm9jSC5NSL4KUsgZXhzA ut4ilGizXuXVA6ZwgWplK7CTNwGSJR2BQNHkZbh4+ApHy2YLF4oDYpwDcK7/V/bOsUA7 nibw== X-Gm-Message-State: ABuFfoj5BKA0EjCDZTIVVmuJqm2t0HwyZ8iQHEj3KqwvXEu2Ni1dTEnx 2Yfr3Lzx8HOe5JqhbAYYuUaj7YpMUCk= X-Google-Smtp-Source: ACcGV60Hb2j0BhBa8c/4Rem/XsuCUGwdXswTR5GPcvNBxiZ9iqVJ6JR3Ziy6gnfAZMSq0+DDA7Z7+Q== X-Received: by 2002:a02:3d8e:: with SMTP id n136-v6mr12404248jan.87.1538833371222; Sat, 06 Oct 2018 06:42:51 -0700 (PDT) Received: from pryzbyj (charmander.telsasoft.com. [50.244.222.1]) by smtp.gmail.com with ESMTPSA id k19-v6sm2270051itb.3.2018.10.06.06.42.50 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 06 Oct 2018 06:42:50 -0700 (PDT) Received: by pryzbyj (Postfix, from userid 1000) id B6BC3801F33; Sat, 6 Oct 2018 08:42:49 -0500 (CDT) Date: Sat, 6 Oct 2018 08:42:49 -0500 From: Justin Pryzby To: pgsql-hackers@postgresql.org Subject: fine tune v11 release notes Message-ID: <20181006134249.GD871@telsasoft.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk Find below various fixes to release notes for v11, for discussion purposes. Note: I changed these: "B-tree indexes can now be built in parallel with" "Allow btree indexes to be built in parallel" ..since they could be construed to mean building multiple indexes simultaneously (perhaps like what's done by pg_restore --jobs or pg_repack). Conversely, in create_index.sgml, change pre-existing phase "in parallel" to "simultaneously", since "parallel" is now used to refer to parallel build of a (single) index. I think this needs to be rewritten, maybe in a separate commit, but I'm having trouble writing something less impenetrable: doc/src/sgml/ref/alter_index.sgml ATTACH PARTITION Causes the named index to become attached to the altered index. The named index must be on a partition of the table containing the index being altered, and have an equivalent definition. An attached Finally: should there be an entry for this? fb466d7b Fully enforce uniqueness of constraint names. (Tom Lane) "Previously, multiple constraints could be created with same name. A new unique index on pg_constraint now avoids that situation." That was never intended to be allowed..but could still be a pg_upgrade hazard, which would mean disruptive downtime scheduled and executed, but failure late in pg_upgrade due to unique violation. Maybe it'd be worth adding a check early in pg_upgrade to detect that and exit(1) before stopping the old cluster. I'm drawing a comparison with inconsistent nullability across inheritence heirarchy, as discussed at [0]. That affected pg_upgrades at several of our customers (in our case, not due to adding primary keys). The last 25% of this thread is what's relevant. It looks like that check was never implemented though. [0] https://www.postgresql.org/message-id/flat/CACQjQLoMsE%2B1pyLe98pi0KvPG2jQQ94LWJ%2BPTiLgVRK4B%3Di_jg%40mail.gmail.com#015ff524738be6cb9a2bd6875c87094a diff --git a/doc/src/sgml/ref/create_index.sgml b/doc/src/sgml/ref/create_index.sgml index 3c1223b..7bd1da3 100644 --- a/doc/src/sgml/ref/create_index.sgml +++ b/doc/src/sgml/ref/create_index.sgml @@ -612,10 +612,10 @@ Indexes: Regular index builds permit other regular index builds on the - same table to occur in parallel, but only one concurrent index build - can occur on a table at a time. In both cases, no other types of schema - modification on the table are allowed meanwhile. Another difference - is that a regular CREATE INDEX command can be performed within + same table to occur simultaneously, but only one concurrent index build + can occur on a table at a time. In either case, schema modification of the + table is not allowed while the index is being built. Another difference is + that a regular CREATE INDEX command can be performed within a transaction block, but CREATE INDEX CONCURRENTLY cannot. @@ -650,7 +650,7 @@ Indexes: ordering. For example, we might want to sort a complex-number data type either by absolute value or by real part. We could do this by defining two operator classes for the data type and then selecting - the proper class when making an index. More information about + the proper class when creating an index. More information about operator classes is in and in . @@ -673,7 +673,8 @@ Indexes: valid, once all partitions acquire the index.) Note, however, that any partition that is created in the future using CREATE TABLE ... PARTITION OF will automatically - contain the index regardless of whether this option was specified. + contain the index regardless of whether ONLY was + specified. diff --git a/doc/src/sgml/release-11.sgml b/doc/src/sgml/release-11.sgml index ca42f28..a945502 100644 --- a/doc/src/sgml/release-11.sgml +++ b/doc/src/sgml/release-11.sgml @@ -32,25 +32,25 @@ UPDATE statements that change a partition key - now move affected rows to the appropriate partitions + now cause affected rows to be moved to the appropriate partitions Improved SELECT performance from enhanced partition - elimination strategies during query processing and execution + elimination strategies during query planning and execution - Support for PRIMARY KEY, FOREIGN - KEY, indexes, and triggers on partitioned tables + Added support on partitioned tables for PRIMARY + KEY, FOREIGN KEY, indexes, and triggers - Having a "default" partition for storing data that does not match any - of the remaining partitions + Allow creation of a "default" partition for storing rows which are + excluded by bounds of all other partitions. @@ -63,7 +63,7 @@ - B-tree indexes can now be built in parallel with + A B-tree index can now be built in parallel with CREATE INDEX @@ -118,9 +118,9 @@ - Many other useful performance improvements, including making - ALTER TABLE .. ADD COLUMN with a - non-null column default faster + Many other useful performance improvements, including the ability to avoid + a table rewrite when using ALTER TABLE .. ADD COLUMN + with a non-null column default. @@ -163,7 +163,7 @@ - Previously database attributes like + Previously, database attributes like GRANT/REVOKE permissions and ALTER DATABASE SET and ALTER ROLE IN DATABASE SET variable settings were only dumped by A restore of pg_dumpall will now create databases with their original locale and encoding, and will fail if - the creation fails. Previously CREATE DATABASE + the creation fails. Previously, CREATE DATABASE would be dumped without such specifications if the database locale and encoding matched the old cluster's defaults. @@ -317,7 +317,7 @@ - Previously _bytes_ were skipped. + Previously, bytes were skipped. @@ -353,7 +353,7 @@ Per the SQL standard, relative paths start from the document node of the XML input document, not the root node as these functions - formerly did it. + previously did. @@ -450,7 +450,7 @@ - Previously index options names like ("FillFactor" = 50) were + Previously, index options names like ("FillFactor" = 50) were automatically lower-cased. This quoted capitalization will now generate an error. @@ -519,7 +519,8 @@ --> - Allow faster partition elimination during query processing (Amit + Allow faster partition elimination during query planning (Amit +??? Langote, David Rowley, Dilip Kumar) @@ -539,7 +540,7 @@ - Previously partition elimination could only happen at planning + Previously, partition elimination could only happen at planning time, meaning many joins and prepared queries could not use partition elimination. @@ -591,8 +592,7 @@ Allow UNIQUE indexes on partitioned tables if - the partition key guarantees uniqueness (Álvaro Herrera, - Amit Langote) + the partition key is included in the index (Álvaro Herrera, Amit Langote) @@ -602,15 +602,18 @@ --> - Allow indexes on a partitioned table to be automatically created - in any child partitions (Álvaro Herrera) + Support indexes on partitioned tables (Álvaro Herrera) + + + + This is not a global index, but rather a mechanism to create indexes on + on each partition of a partitioned table. The new command ALTER - INDEX ATTACH PARTITION allows indexes to be - attached to partitions. This does not behave as a global index - since the contents are private to each index. + INDEX ATTACH PARTITION allows an index on a partition + to be inherited by the index on its partitioned tables. @@ -653,7 +656,7 @@ Creation of a trigger on partitioned tables automatically creates - triggers on all partition tables, and on newly-created ones. + triggers on all existing and future partitions. This also allows deferred unique constraints on partitioned tables. @@ -666,9 +669,8 @@ --> - Allow equality joins between partitioned tables with identically - partitioned child tables to join the child tables directly - (Ashutosh Bapat) + Allow partitioned tables to be joined directly for equality joins with + identically partitioned child tables. (Ashutosh Bapat) @@ -685,8 +687,8 @@ --> - Perform aggregation on each partition, and then merge the results - (Jeevan Chalke, Ashutosh Bapat, Robert Haas) + Allow first performing aggregate functions on each partition and then + merging the results. (Jeevan Chalke, Ashutosh Bapat, Robert Haas) @@ -725,7 +727,7 @@ --> - Allow btree indexes to be built in parallel (Peter Geoghegan, + Allow parallel building of a btree index (Peter Geoghegan, Rushabh Lathia, Heikki Linnakangas) @@ -763,7 +765,7 @@ same commits as above --> - Allow partition scans to more efficiently use parallel workers + Allow partition scans to use parallel workers (Amit Khandekar, Robert Haas, Amul Sul) @@ -867,7 +869,7 @@ same commits as above Allow indexes to INCLUDE columns - that are not part of the unique constraint but are available + that are not part of the indexed columns but are available for index-only scans (Anastasia Lubennikova, Alexander Korotkov, Teodor Sigaev) @@ -886,8 +888,8 @@ same commits as above Remember the highest btree index page to optimize future - monotonically increasing index additions (Pavan Deolasee, Peter - Geoghegan) + insertions of values for the case that those values are increasing + monotonically (Pavan Deolasee, Peter Geoghegan) @@ -901,7 +903,7 @@ same commits as above - Previously for each hash index entry, we need to refind the scan + Previously, for each hash index entry, we needed to refind the scan position within the page. This cuts down on lock/unlock traffic. @@ -1004,12 +1006,12 @@ same commits as above - Previously most-common-values (MCV) were - chosen based on their significance compared to all column + Previously, the most-common-values (MCV) were + chosen based on their frequency compared to all column values. Now, MCV are chosen based on their significance compared to the non-MCV values. - This improves the statistics for uniform (fewer) and non-uniform - (more) distributions. + This allows improved estimates for both uniform and non-uniform + distributions. @@ -1024,7 +1026,7 @@ same commits as above - Previously such cases used the same selectivity as > and + Previously, such cases used the same selectivity as > and <, respectively. This change is particularly useful for BETWEEN with small ranges. @@ -1051,8 +1053,8 @@ same commits as above --> - Improve row count optimizer estimates for EXISTS - and NOT EXISTS queries (Tom Lane) + Improve row count estimates for EXISTS and + NOT EXISTS queries (Tom Lane) @@ -1095,8 +1097,7 @@ same commits as above This feature requires LLVM to be - available, and it is not currently enabled by default, even in - builds that support it. + available, and it is currently disabled by default. @@ -1172,7 +1173,7 @@ same commits as above - Previously only non-join UPDATEs and + Previously, only non-join UPDATEs and DELETEs were pushed. @@ -1351,7 +1352,7 @@ same commits as above pg_execute_server_program. These roles now also control who can use COPY and extension file_fdw. - Previously only superusers could use these functions, and that + Previously, only superusers could use these functions, and that is still the default behavior. @@ -1390,8 +1391,7 @@ same commits as above - Previously, superusers were exclusively granted access to these - functions. + Previously, only superusers were granted access to these functions. @@ -1415,7 +1415,7 @@ same commits as above PostgreSQL only allows superusers to access postgres_fdw tables without - passwords, e.g. via peer. Previously the + passwords, e.g. via peer. Previously, the session owner had to be a superuser to allow such access; now the view owner is checked instead. @@ -1489,11 +1489,11 @@ same commits as above Allow server options related to memory and file sizes to be - specified as number of bytes (Beena Emerson) + specified in units of bytes (Beena Emerson) - The new unit is "B". This is in addition to "kB", "MB", "GB" + The new unit suffix is "B". This is in addition to "kB", "MB", "GB" and "TB". @@ -1519,7 +1519,7 @@ same commits as above - Previously the 16MB default could only be changed at compile time. + Previously, the 16MB default could only be changed at compile time. @@ -1529,13 +1529,12 @@ same commits as above --> - No longer retain WAL that spans two checkpoints + Retain WAL for a single checkpoint, only. (Simon Riggs) - The retention of WAL records for only one - checkpoint is required. + Previously, WAL was retained for two checkpoints. @@ -1610,7 +1609,7 @@ same commits as above --> - Allow heap pages checksums to be checked during streaming base + Allow checksums of heap pages to be verified during streaming base backup (Michael Banck) @@ -1626,7 +1625,8 @@ same commits as above - This allows efficient advancement replication slots when the + This allows efficient advancing of replication slots when the +???? contents do not need to be consumed. This is performed by pg_replication_slot_advance(). @@ -1706,9 +1706,8 @@ same commits as above --> - Allow ALTER TABLE to add a column with - a non-null default without a table rewrite (Andrew Dunstan, - Serge Rielau) + Allow ALTER TABLE to avoid a table rewrite when + adding a column with a non-null default (Andrew Dunstan, Serge Rielau) @@ -1752,6 +1751,7 @@ same commits as above +DOES THIS NEED TO BE IN "COMPATIBILITY NOTES"? Also, if any table mentioned in VACUUM uses a column list, then the ANALYZE keyword must be supplied; previously, ANALYZE was implied in @@ -1894,7 +1894,7 @@ same commits as above Allow to_char() and to_timestamp() to specify the time zone's - hours and minutes from UTC (Nikita Glukhov, + offset from UTC in hours and minutes (Nikita Glukhov, Andrew Dunstan) @@ -1970,7 +1970,7 @@ same commits as above PROCEDURE command and invoked via CALL. The new ALTER/DROP ROUTINE commands - allows altering/dropping of procedures, functions, and aggregates. + allow altering/dropping of procedures, functions, and aggregates. @@ -2019,7 +2019,7 @@ same commits as above - Previously such circumstances generated errors. + Previously, such circumstances generated errors. @@ -2188,7 +2188,7 @@ same commits as above - Previously partition information would not be displayed for a + Previously, partition information would not be displayed for a partitioned table if it had no partitions. Also indicate which partitions are themselves partitioned. @@ -2270,7 +2270,7 @@ same commits as above - Previously tab completion queries could fail. + Previously, tab completion queries could fail. @@ -2789,9 +2789,9 @@ same commits as above --> - Make the computation of system column + Make the computation of pg_class.reltuples - consistent (Tomas Vondra) + by VACUUM consistent with computation by ANALYZE (Tomas Vondra) @@ -2951,7 +2951,7 @@ same commits as above - Previously only superusers could call adminpack functions; + Previously, only superusers could call adminpack functions; now role permissions are checked.