Re: PG 13 release notes, first draft

Justin Pryzby <pryzby@telsasoft.com>

From: Justin Pryzby <pryzby@telsasoft.com>
To: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Peter Geoghegan <pg@bowt.ie>
Cc: Amit Kapila <amit.kapila16@gmail.com>, Bruce Momjian <bruce@momjian.us>, pgsql-hackers@postgresql.org
Date: 2020-09-07T13:40:26Z
Lists: pgsql-hackers

Attachments

There's some obvious improvements for which I include a patch.

>Add alternate version of jsonb_setI() with special NULL handling (Andrew Dunstan)
>The new function, jsonb_set_lax(), allows null new values to either set the specified key to JSON null, delete the key, raise exception, or ignore the operation. 
jsonb_set()
raise *an* exception
new null values?

>IS 'return_target' CLEAR?
I haven't used these before, but following the examples, it seems to return the
"target" argument, unchanged.

| Add function min_scale() that returns the number of digits to the right the decimal point that is required to represent the numeric value with full precision (Pavel Stehule)
right *of*
that *are* required ?

|The old function names were kept for backward compatibility. DO WE HAVE NEW NAMES?

=> I think the docs are clear:
> In releases of PostgreSQL before 13 there was no xid8 type, so variants of these functions were provided that used bigint to represent a 64-bit XID, with a correspondingly distinct snapshot data type txid_snapshot. These older functions have txid in their names. They are still supported for backward compatibility, but may be removed from a future release. See Table 9.76....

> This improves performance for queries that access many object. The internal List API has also been improved.
many objects*

|Allow skipping of WAL for full table writes if wal_level is minimal (Kyotaro Horiguchi)
Allow WAL writes to be skipped...
And: this is not related to full_page_writes.

| Enable Unix-domain sockets support on Windows (Peter Eisentraut)
Enable support for ..

| Improve the performance when replaying DROP DATABASE commands when many tablespaces are in use (Fujii Masao)
s/the//

|Allow a sample of statements to be logged (Adrien Nayrat)
Allow logging a sample of statements

|Allow WAL receivers use a temporary replication slot if a permanent one is not specified (Peter Eisentraut, Sergei Kornilov)
*to* use

| Add leader_pid to pg_stat_activity to report parallel worker ownership (Julien Rouhaud)
s/ownership/leader/ ?

|Allow WAL recovery to continue even if invalid pages are referenced (Fujii Masao)
remove "WAL" or say:
>Allow recovery to continue even if invalid pages are referenced by WAL (Fujii Masao)








A few things I have't fixed in my patch:

|Previously, this value was adjusted before effecting the number of concurrent requests. This value is now used directly. Conversion of old values to new ones can be done using:
|SELECT round(sum(OLD / n::float)) FROM generate_series(1, OLD) s(n);

I think the round() should be aliased, "AS new".
I think "before effecting" is confusing, maybe say:
| Previously, the effective value was computed internally from the user-supplied parameter...

|Allow partitioned tables to be logically replicated via publications (Amit Langote)
|Previously, partitions had to be replicated individually. Now partitioned tables can be published explicitly causing all partitions to be automatically published. Addition/removal of partitions from partitioned tables are automatically added/removed from publications. The CREATE PUBLICATION option publish_via_partition_root controls whether changes to partitions are published as their own or their ancestor's.

=> "causing any future partitions to be automatically published".

"addition/removal .. are automatically" isn't right

|Implement incremental sorting (James Coleman, Alexander Korotkov, Tomas Vondra)
|If a result is already sorted by several leading keys, this allows for batch sorting of additional trailing keys because the previous keys are already equal. This is controlled by enable_incremental_sort.

s/several/one or more/
remove "additional" ?
remove "batch" ?
maybe "of ONLY trailing keys"

|Allow inserts to trigger autovacuum activity (Laurenz Albe, Darafei Praliaskouski)
|This new behavior reduces the work necessary when the table needs to be frozen and allows pages to be set as all-visible. All-visible pages allow index-only scans to access fewer heap rows.

There's a lot of "allow" here, but it sounds like relaxing a restriction when
actually this is a new functionality.  Maybe:
| Allow autovacuum to be triggered by INSERTs.
| ..and allows autovacuum to set pages as all-visible.





I already mentioned a couple things back in May that still stand out;:

|Add jsonpath .datetime() method (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov)
|This allows json values to be converted to timestamps, which can then be processed in jsonpath expressions. This also adds jsonpath functions that support time zone-aware output.
timezone-aware or time-zone-aware, if you must.

> Allow vacuum commands run by vacuumdb to operate in parallel mode (Masahiko Sawada)
=> I think this is still going to be lost/misunderstood/confuse some people.
vacuumdb already supports -j.  This allows it to run vacuum(parallel N).  So
maybe say "...to process indexes in parallel".

-- 
Justin

Commits

  1. Doc: improve release notes' info about FROM UNPACKAGED feature removal.

  2. Doc: fix misstatement in v13 release notes.

  3. Doc: some more v13 release note tweaking.

  4. Doc: update v13 release notes through today, do a copy-editing pass.

  5. Doc: fill in "major enhancements" list in v13 release notes.

  6. doc: PG 13 relnotes: fix typos

  7. doc: PG 13 relnotes, update TOAST item to mention decompression

  8. pgbench: document that the default data loading is client-side

  9. psql \d: Display table where trigger is defined, if inherited

  10. Skip WAL for new relfilenodes, under wal_level=minimal.

  11. Introduce vacuum errcontext to display additional information.

  12. Fix lquery's behavior for consecutive '*' items.

  13. Improve the internal implementation of ereport().

  14. Add object names to partition integrity violations.

  15. Allow page lock to conflict among parallel group members.

  16. Allow relation extension lock to conflict among parallel group members.

  17. Introduce "anycompatible" family of polymorphic types.

  18. Improve checking of child pages in contrib/amcheck.

  19. doc: Add information about new SQL part SQL/MDA

  20. Added relation name in error messages for constraint checks.

  21. Avoid full scan of GIN indexes when possible

  22. Use carriage returns for data insertion logs in pgbench on terminal

  23. Use memcpy instead of a byte loop in pglz_decompress

  24. Add backtrace support for error reporting

  25. Improve pruning of a default partition

  26. Improve psql's \d output for partitioned indexes.

  27. initdb: Change authentication defaults