Re: First draft of the PG 15 release notes

Bruce Momjian <bruce@momjian.us>

From: Bruce Momjian <bruce@momjian.us>
To: Justin Pryzby <pryzby@telsasoft.com>
Cc: pgsql-hackers@postgresql.org
Date: 2022-05-10T20:18:10Z
Lists: pgsql-hackers
On Tue, May 10, 2022 at 01:09:35PM -0500, Justin Pryzby wrote:
> Thanks for writting this.
> 
> Comments from my first read:
> 
> | This mode could cause server startup failure if the database server stopped abruptly while in this mode.
> 
> This sentence both begins and ends with "this mode".

Agreed, I rewrote this.

> | This allows query hash operations to use double the amount of work_mem memory as other operations. 
> 
> Should it say "node" ?

Uh, I think users think of things like operations, e.g. sort operation
vs sort node.

> |  Allow tsvector_delete_arr() and tsvector_setweight_by_filter() accept empty array elements (Jean-Christophe Arnu) 
> 
> TO accept
> I don't think this should be in the "compatibility" section?

Yes, moved to Function.

> |  This accepts numeric formats like ".1" and "1.", and disallow trailing junk after numeric literals, like "1.type()". 
> 
> disallows with an ess

Fixed.

> |  This will cause setseed() followed by random() to return a different value on older servers. 
> 
> *than* older servers

Fixed.

> | The Postgres default has always been to treat NULL indexed values as distinct, but this can now be changed by creating constraints and indexes using UNIQUE NULLS NOT DISTINCT. 
> 
> should not say default, since it wasn't previously configurable.
> "The previous behavior was ..."

Agreed, reworded.

> | Have extended statistics track statistics for a table's children separately (Tomas Vondra, Justin Pryzby)
> | Regular statistics already tracked child and non-child statistics separately. 
> 
> "separately" seems vague.  Currently in v10-v13, extended stats are collected
> for partitioned tables, and collected for the "SELECT FROM ONLY"/parent case
> for inheritance parents.  This changes to also collect stats for the "SELECT
> FROM tbl*" case.  See also: 20220204214103.GT23027@telsasoft.com.

Agreed, reworded.  Can you check you like my new wording?

> | Allow members of the pg_checkpointer predefined role to run the CHECKPOINT command (Jeff Davis)
> | Previously these views could only be run by super users.
> | Allow members of the pg_read_all_stats predefined role to access the views pg_backend_memory_contexts and pg_shmem_allocations (Bharath Rupireddy)
> | Previously these views could only be run by super users. 
> 
> checkpoint is not a view (and views cannot be run)

Fixed, was copy/paste error.

> | Previously runtime-computed values data_checksums, wal_segment_size, and data_directory_mode would report values that would not be accurate on the running server. They also can only be 
> 
> be what ?

Removed.

> |  Add server variable allow_in_place_tablespaces for tablespace testing (Thomas Munro) 
> 
> This is a developer setting, so doesn't need to be mentioned ?

Moved to Source Code.

> | Add function pg_settings_get_flags() to get the flags of server-side variables (Justin Pryzby) 
> 
> IMO this is the same, but I think maybe Michael things about it differently...

Uh, I thought it might hvae user value as well as developer.

> | Allow WAL full page writes to use LZ4 and ZSTD compression (Andrey Borodin, Justin Pryzby) 
> | Add support for LZ4 and ZSTD compression of server-side base backups (Jeevan Ladhe, Robert Haas) 
> | Allow pg_basebackup to decompress LZ4 and ZSTD compressed server-side base backups, and LZ4 and ZSTD compress output files (Dipesh Pandit, Jeevan Ladhe) 
> | Add configure option --with-zstd to enable ZSTD build (Jeevan Ladhe, Robert Haas, Michael Paquier) 
> 
> Maybe these should say "Zstandard" ?  See 586955dddecc95e0003262a3954ae83b68ce0372.

I wasn't aware that ZSTD stood for that, so updated.

> | The new options causes the column names to be output, and optionally verified on input. 
> 
> option

Fixed.
> 
> |  Previous the actual schema name was used. 
> 
> Previously

Fixed.

> | When EXPLAIN references the temporary object schema, refer to it as "pg_temp" (Amul Sul) 
> | When specifying fractional interval values in units greater than months, round to the nearest month (Bruce Momjian)
> | Limit support of psql to servers running PostgreSQL 9.2 and later (Tom Lane) 
> | Limit support of pg_dump and pg_dumpall to servers running PostgreSQL 9.2 and later (Tom Lane) 
> | Limit support of pg_upgrade to old servers running PostgreSQL 9.2 and later (Tom Lane) 
> | Remove server support for old BASE_BACKUP command syntax and base backup protocol (Robert Haas) 
> 
> Do these need to be in the "compatibility" section ?

Uh, I think of compatibility as breakage, while removing support for
something doesn't seem like breakage.  The protocol removal of
BASE_BACKUP only relates to people writing tools, I thought, so no
breakage for non-internals users.  I didn't think the fractional
interval change would be a breakage, though maybe it is.  I didn't think
EXPLAIN changes were user-parsed, so no breakage?

> |  Fix inforcement of PL/pgSQL variable CONSTANT markings (Tom Lane) 
> 
> enforcement

Fixed.

> |  Allow IP address matching against a server's certificate Subject Alternative Name (Jacob Champion) 
> 
> Should say "server certificate's" ?

Agreed.

> |  Allow libpq's SSL private to be owned by the root user (David Steele) 
> 
> private *key*

I changed it to "private key file".

> |  Have psql output all output if multiple queries are passed to the server at once (Fabien Coelho) 
> 
> all *results* ?

Yes, fixed.

> |  This can be disabled setting SHOW_ALL_RESULTS. 
> 
> disabled *by* setting

Agreed, fixed.

> |  Allow pg_basebackup's --compress option to control the compression method (Michael Paquier, Robert Haas) 
> 
> Should probably say "compression method and options"

Good point, that feature moved around during the development cycle.

> | Allow pg_basebackup to decompress LZ4 and ZSTD compressed server-side base backups, and LZ4 and ZSTD compress output files (Dipesh Pandit, Jeevan Ladhe)
> | Allow pg_basebackup to compress on the server slide and decompress on the client side before storage (Dipesh Pandit) 
> 
> Maybe these should be combined into one entry ?

Uh, I think it applies to gzip as well so they can't be combined, and
they seem to do different things.

> |  Add the LZ4 compression method to pg_receivewal (Georgios Kokolatos)
> | This is enabled via --compression-method=lz4 and requires binaries to be built using --with-lz4. 
> | Redesign pg_receivewal's compression options (Georgios Kokolatos)
> | The new --compression-method option controls the type of compression, rather than just relying on --compress. 
> 
> It's --compress since 042a923ad.

Yep, fixed.

> |  Previously, pg_receivewal would start based on the WAL file stored in the local archive directory, or at the sending server's current WAL flush location. With this change, if the sending server is running Postgres 15 or later, the local archive directory is empty, and a replication slot is specified, the replication slots restart point will be used. 
> 
> slot's restart point (with a >>'<<)

Fixed.

> | Add dump/restore option --no-table-access-method to force restore to use only the default table access method (Justin Pryzby) 
> 
> remove "only" ?

I changed it to "to only use the default" since I think that is the
point --- it doesn't use anything but the default.

> | This is for portability in restoring from systems using non-default table access methods. 
> 
> I would remove part about "portability".  The use-case I see for this is
> restoring something to a different table AM (not just heapam), in the same way
> as is possible for tablespaces:
> PGOPTIONS='-c default-table-access-method=foo' pg_restore --no-table-am ./dump

I removed the portability sentence.

> | Previously only the first invalid connection setting database was reported. 
> 
> "only the first database with an invalid connection setting..."

Yes, reworded.

> |  Add new protocol message TARGET to specific a new COPY method to be for base backups (Robert Haas) 
> 
> specify

Fixed.

> |  Automatically export server variables using PGDLLIMPORT on Windows (Robert Haas) 
> 
> I don't think it's "automatic" ?

Yes, reworded.

> |  Allow informational escape sequences to be used in postgres_fdw's application name (Hayato Kuroda, Fujii Masao) 
> 
> I don't think this should be a separate entry

Uh, the entry above is about per-connection application name, while this
is about escapes --- seems different to me, and hard to combine.

> |  This is enabled with the "parallel_commit" postgres_fdw option. 
> 
> It's an option to the SQL "SERVER" command.

Yes, reworded.  URL contents updated:

	https://momjian.us/pgsql_docs/release-15.html

Can you verify you like the new contents please?  Thanks.

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  Indecision is a decision.  Inaction is an action.  Mark Batterson




Commits

  1. Doc: last minute adjustment to the release notes

  2. Doc: more tweaking of v15 release notes.

  3. Doc: further adjust notes about pg_upgrade_output.d.

  4. Doc: add list of major features to the v15 release notes.

  5. relnotes: update item about public schema permission change

  6. relnotes: update ordered partition scan item

  7. relnotes: add Heikki to UTF8 item

  8. relnotes: improve UTF8 text item in relation to ASCII

  9. relnotes: add null logical replication item

  10. relnotes: adjust several logical replication items and FK text

  11. relnotes: mention non-exclusive backup mode was deprecated

  12. relnotes: add author to in-memory sorts item

  13. relnotes: update for non-exclusive backup mode removal

  14. relnote: improve sorting entries

  15. relnotes: adjustments from Álvaro Herrera

  16. relnotes: update foreign key partition and add sort items

  17. relnotes: more adjustments

  18. relnotes: logical replication permissions checked by subscrib.

  19. relnotes: adjustments

  20. relnotes: remove sequence replication and update 'postgres -C'

  21. relnote: extensive updates

  22. relnotes: "training" -> "trailing"

  23. Standardize references to Zstandard as <productname>

  24. pgstat: Update docs to match the shared memory stats reality.

  25. Raise a WARNING for missing publications.

  26. Skip empty transactions for logical replication.

  27. Optionally disable subscriptions on error.

  28. Allow root-owned SSL private keys in libpq, not only the backend.

  29. Use COPY FREEZE in pgbench for faster benchmark table population.