Thread: PG 14 release notes, first draft

PG 14 release notes, first draft

From
Bruce Momjian
Date:
I have committed the first draft of the PG 14 release notes.  You can
see the most current  build of them here:

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

I need clarification on many items, and the document still needs its
items properly ordered, and markup added.  I also expect a lot of
feedback.

I plan to work on completing this document this coming week in
preparation for beta next week.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Laurenz Albe
Date:
On Mon, 2021-05-10 at 02:03 -0400, Bruce Momjian wrote:
> When using \e in psql, if the buffer is not modified by the editor, ignore the editor contents and leave the buffer
unchanged(Laurenz Albe)
 
> The \ef and \ev commands also now have this behavior. DOCS SAY BUFFER IS CLEARED.

It's a bit more complicated: If you edit the current buffer with \e, the buffer is
unchanged if you quit the editor.
However, if you edit the previous statement, a file or the definition of a function
or view, the query buffer is cleared if you quit the editor without saving.

Suggested wording:

When editing anything else than the current query buffer with \e, and you quit
the editor, the query buffer is cleared.  This makes the behavior less surprising
and prevents the unintended re-execution of the previous statement.

Yours,
Laurenz Albe




Re: PG 14 release notes, first draft

From
Julien Rouhaud
Date:
On Mon, May 10, 2021 at 02:03:08AM -0400, Bruce Momjian wrote:
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
> 
>     https://momjian.us/pgsql_docs/release-14.html
> 
> I need clarification on many items, and the document still needs its
> items properly ordered, and markup added.  I also expect a lot of
> feedback.

There's a small typo:

+Improve tab completion (Vignesh C,, Michael [...]

(duplicated comma)

Also

+<para>
+Avoid retrieval of CHECK constraints and DEFAULT exprs in data-only dump (Julien Rouhaud)
+</para>
+
+<para>
+IS THIS BACKWARD INCOMPATIBLE?
+</para>
+</listitem>

The new behavior doesn't have any impact on the generated dump, as the
modification is to avoid retrieving data that won't be used.

For users, it only means maybe slight faster pg_dump execution, or slightly
better change to be able to run a pg_dump --data-only if pg_constraint is
corrupted but not the rest of the user data, so maybe it's not necessary to
mention that in the release notes?



Re: PG 14 release notes, first draft

From
Masahiko Sawada
Date:
On Mon, May 10, 2021 at 3:03 PM Bruce Momjian <bruce@momjian.us> wrote:
>
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
>
>         https://momjian.us/pgsql_docs/release-14.html

Thank you!

> Add system view pg_stat_replication_slots to report replication slot activity (Sawada Masahiko, Amit Kapila)
>
> Function pg_stat_reset_replication_slot() resets slot statistics. THIS IS LOGICAL ONLY, BUT NO "LOGICAL" IN THE
NAME?

IIUC pg_stat_replication_slots view supports only logical slot for
now. But we might have it show also physical slot in the future. I'm
fine with the current view name and description but someone might want
to use "logical replication slot" instead of just "replication slot".

> IS "ACTIVITY" THE RIGHT WORD?

The doc says "The pg_stat_replication_slots view will contain one row
per logical replication slot, showing statistics about its usage.". So
we can say "... to report replication slot statistics about its
usage".

Regards,

--
Masahiko Sawada
EDB:  https://www.enterprisedb.com/



Re: PG 14 release notes, first draft

From
David Rowley
Date:
On Mon, 10 May 2021 at 18:03, Bruce Momjian <bruce@momjian.us> wrote:
> I need clarification on many items, and the document still needs its
> items properly ordered, and markup added.  I also expect a lot of
> feedback.

Thanks for drafting that up.

> Add executor method to cache results from the inner-side of joins (David Rowley)

I think it would be more accurate to say "inner-side of nested loop joins".

> Allow efficient retrieval of heap rows via tid (Edmund Horner, David Rowley)

I'd say we already had that feature with TID Scan. Maybe it would be
better to write:

"Allow efficient heap scanning on ranges of tids (Edmund Horner, David Rowley)"

> Improve the performance of parallel sequential scans (Thomas Munro, David Rowley)

I think it is worth mentioning "I/O" before "performance".  This
change won't really help cases if all the table's pages are already in
shared buffers.

David



Re: PG 14 release notes, first draft

From
Matthias van de Meent
Date:
On Mon, 10 May 2021 at 08:03, Bruce Momjian <bruce@momjian.us> wrote:
>
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
>         https://momjian.us/pgsql_docs/release-14.html
>
> I need clarification on many items, and the document still needs its
> items properly ordered, and markup added.  I also expect a lot of
> feedback.

I noticed that the improvement in bloat control in the HeapAM that I
know of (3c3b8a4b, 0ff8bbde) weren't documented here. Although each
can be considered minor, they together can decrease the bloating
behaviour of certain workloads significantly (and limit the total
damage), and in my opinion this should be mentioned.

3c3b8a4b: Returns space claimed for the line pointer array back to the
page's empty space, so that it can also be used for tuple data.

0ff8bbde: Allows large tuples to be inserted on pages which have only
a small amount of data, regardless of fillfactor.

Together they should be able to help significantly in both bloat
prevention and bloat reduction.

> I plan to work on completing this document this coming week in
> preparation for beta next week.

Thanks!

With regards,

Matthias van de Meent



Re: PG 14 release notes, first draft

From
Joe Conway
Date:
On 5/10/21 2:03 AM, Bruce Momjian wrote:
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
> 
>     https://momjian.us/pgsql_docs/release-14.html
> 
> I need clarification on many items, and the document still needs its
> items properly ordered, and markup added.  I also expect a lot of
> feedback.
> 
> I plan to work on completing this document this coming week in
> preparation for beta next week.

While only a small change, this commit does affect user visible behavior 
and so should probably be noted:

https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=b12bd4869b5e

Joe

-- 
Crunchy Data - http://crunchydata.com
PostgreSQL Support for Secure Enterprises
Consulting, Training, & Open Source Development



Re: PG 14 release notes, first draft

From
Alexander Korotkov
Date:
Hi, Bruce!

On Mon, May 10, 2021 at 9:03 AM Bruce Momjian <bruce@momjian.us> wrote:
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
>
>         https://momjian.us/pgsql_docs/release-14.html
>
> I need clarification on many items, and the document still needs its
> items properly ordered, and markup added.  I also expect a lot of
> feedback.
>
> I plan to work on completing this document this coming week in
> preparation for beta next week.

Thank you very much for your work!

Let me provide a missing description for the items related to me.

 * Improve handling of compound words in to_tsquery() and
websearch_to_tsquery() (Alexander Korotkov)
Compound words are now transformed into parts connected with phrase
search operators.  For example, to_tsquery('pg_class') becomes 'pg <->
class' instead of 'pg & class'.  This eliminates bug of handling
compound words connected with the phrase operator and makes the search
of compound words more strict.

 * Fix extra distance in phrase operators for quoted text in
websearch_to_tsquery() (Alexander Korotkov)
For example, websearch_to_tsquery('english', '"aaa: bbb"') becomes
'aaa <> bbb' instead of  'aaa <2> bbb'.

Feel free to make stylistic and other corrections if needed.

------
Regards,
Alexander Korotkov



Re: PG 14 release notes, first draft

From
Ian Lawrence Barwick
Date:
2021年5月10日(月) 15:03 Bruce Momjian <bruce@momjian.us>:
>
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
>
>         https://momjian.us/pgsql_docs/release-14.html
>
> I need clarification on many items, and the document still needs its
> items properly ordered, and markup added.  I also expect a lot of
> feedback.
>
> I plan to work on completing this document this coming week in
> preparation for beta next week.

This misses the change of default value, and is a bit unclear:

> Remove password_encryption's support for boolean values, e.g. true (Peter Eisentraut)
>
> Previous boolean values enabled md5.  Now, only the md5 string does this.

I'd suggest something along these lines:

> The default for password_encryption is now "scram-sha-256" (Peter Eisentraut)
>
> The pseudo-boolean values "true", "on", "yes" and "1" are no longer accepted as an alias for "md5".

(It hasn't been a true boolean setting since Pg 9.6).

Regards

Ian Barwick

--
EnterpriseDB: https://www.enterprisedb.com



Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
Thanks for putting it together.

I think these two should be merged:
| Remove containment operators @ and ~ from contrib modules cube, hstore, intarray, and seg (Justin Pryzby) 
| Remove deprecated containment operators for built-in geometry data types (Justin Pryzby) 

| Improve autovacuum's analyze of partitioned tables (Yuzuko Hosoya) 
| DETAILS? 

Should say: Autovacuum now analyzes partitioned tables.

| The server variable check_client_connection_interval allows supporting operating systems, e.g., Linux, to
automaticallycancel queries by disconnected clients. 
 
The GUC is actually called client_connection_check_interval - the commit
message used the wrong name.

|  This is particularly helpful for reducing index bloat on tables that frequently update indexed columns. 
Does it mean "..where indexed columns are frequently updated"?

|  Allow multiple foreign table scans to be run in parallel (Robert Haas, Kyotaro Horiguchi, Thomas Munro, Etsuro
Fujita)
 
I think it means multiple foreight table scan *nodes*

| If server variable compute_query_id is enabled, display the hash in pg_stat_activity, EXPLAIN VERBOSE, csvlog, and
optionallyin log_line_prefix (Julien Rouhaud) 
 
I think needs details, like: "If disabled, then the hash might be computed by
an extension, instead".

Later, you say:
| Extension pg_stat_statements will need to enable hash computation via the compute_query_id server variable to
functionproperly. pg_stat_statements can now use a custom hash computation method. 
 
Maybe it should say "will need hash computation to be enabled".

| Allow more than the common name (CN) to be matched for client certificate authentication (Andrew Dunstan) 
Your description makes it sound like arbitrary attributes can be compared.  But
the option just allows comparing CN or DN.

| Allow file system sync at the start of crash recovery on Linux (Thomas Munro) 
I think this should describe the existing, default behavior:
Allow syncfs method to sync data directory during recovery;
The default behavior is to open and fsync every data file, and the new setting
recovery_init_sync_method=syncfs instead syncs each filesystem in the data
directory.

| Add date_bin function (John Naylor) 
This truncate timestamps on an arbitrary interval.
Like date_trunc() but also supports eg. '15 minutes', and also uses an arbitrary "origin".

| Support negative indexes in split_part() (Nikhil Benesch) 
| Negative values count from the last field going forward. 
should say "start from the last field and count backward" ?

|  Add configure option --with-openssl to behave like --with-ssl={openssl} (Daniel Gustafsson, Michael Paquier) 
| The option --with-openssl is kept for compatibility. 
I think this is backwards.  The new option is with-ssl=openssl, and (as you
said) with-openssl is kept.

Should these be in the "compatibility" section?

| Force custom server variable names to match the pattern used for unquoted SQL identifiers (Tom Lane) 

| Change password_encryption's default to scram-sha-256 (Peter Eisentraut) 

| Change checkpoint_completion_target default to 0.9 (Stephen Frost) 

| Reduce the default value of vacuum_cost_page_miss (Peter Geoghegan) 

Nitpicks to follow:

| Allow some GiST index to be built by presorting the data (Andrey Borodin) 
indexes

| with --with-lz4 support to enable this feature
I would change to say "to support" rather than "support to enable"

| Speed truncation of small tables on large shared buffer servers (Kirk Jamison) 
"on servers with large settings of shared_buffers"

| Allow windowing functions to perform incremental sorts (David Rowley) 
Just "window" functions

| Improve pg_stat_activity reporting for walsenders processes (Tom Lane) 
 walsender

| Previously these functions could only be executed by super-users, and still defaults do that. 
..which is still the default behavior.

| This allows multiple queries to be send and only wait for completion when a specific synchronization message is sent.

be sent

| Enhance libpq libpq's target_session_attrs parameter options (Haribabu Kommi, Greg Nancarrow, Vignesh C, Tom Lane) 
remove first "libpq"

| With the removal of the ! operator in this release, factorial() is the only built-in way to computer a factorial. 
compute

| For example, GROUP BY CUBE (a,b), CUBE (b,c) will generated duplicate grouping combinations without DISTINCT. 

will generate

| Allow VACUUM VERBOSE to report page deletion counts for each scan of an index (Peter Geoghegan) 

I think "Allow" is wrong - should just say that VACUUM VERBOSE reports..

|By default, only the root of partitioned tables are imported. 
*is* imported

Can these be merged:
 Allow logical replication to stream long transactions to standbys (Dilip Kumar, Tomas Vondra, Amit Kapila, Nikhil
Sontakke)
 
 Improve the logical replication API to allow streaming large in-progress transactions (Tomas Vondra, Dilip Kumar, Amit
Kapila)
 



Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
Same as the last couple years, I checked for missing items in the release
notes, running something like this.

git log --cherry-pick --oneline origin/REL_13_STABLE...origin/master

Should any of these be included?

f82de5c46b Do COPY FROM encoding conversion/verification in larger chunks.
9e596b65f4 Add "LP_DEAD item?" column to GiST pageinspect functions

10a5b35a00 Report resource usage at the end of recovery
7e453634bb Add additional information in the vacuum error context.
1ea396362b Improve logging of bad parameter values in BIND messages.

86dc90056d Rework planning and execution of UPDATE and DELETE.
a1115fa078 Postpone some more stuff out of ExecInitModifyTable.
c5b7ba4e67 Postpone some stuff out of ExecInitModifyTable.

7db0cd2145 Set PD_ALL_VISIBLE and visibility map bits in COPY FREEZE
01e658fa74 Hash support for row types
a929e17e5a Allow run-time pruning on nested Append/MergeAppend nodes
8c15a29745 Allow ALTER TYPE to update an existing type's typsubscript value.
c7aba7c14e Support subscripting of arbitrary types, not only arrays.

7b94e99960 Remove catalog function currtid()
926fa801ac Remove undocumented IS [NOT] OF syntax.
cd9c1b3e19 Rename PGPROC->vacuumFlags to statusFlags
a04daa97a4 Remove es_result_relation_info from EState.

3d351d916b Redefine pg_class.reltuples to be -1 before the first VACUUM or ANALYZE.
fea10a6434 Rename VariableCacheData.nextFullXid to nextXid.
9de9294b0c Stop archive recovery if WAL generated with wal_level=minimal is found. (see also 15251c0a6)

f40c6969d0 Routine usage information schema tables

b4af70cb21 Simplify state managed by VACUUM.
4753ef37e0 Use a WaitLatch for vacuum/autovacuum sleeping
9dd963ae25 Recycle nbtree pages deleted during same VACUUM.
3c3b8a4b26 Truncate line pointer array during VACUUM.

ad1c36b070 Fix foreign-key selectivity estimation in the presence of constants.



Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Sun, May 9, 2021 at 11:03 PM Bruce Momjian <bruce@momjian.us> wrote:
> I have committed the first draft of the PG 14 release notes.

This definitely isn't necessary, since the commit in question was a
totally mechanical thing that cleaned up a minor inconsistency:

Initialize work_mem and maintenance_work_mem using current guc.c
default (Peter Geoghegan)

Oversight in commit 848ae330a49, which increased the previous defaults
for work_mem and maintenance_work_mem by 4X. IS THIS A BEHAVIORAL
CHANGE?

-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Mon, May 10, 2021 at 4:44 AM Matthias van de Meent
<boekewurm+postgres@gmail.com> wrote:
> I noticed that the improvement in bloat control in the HeapAM that I
> know of (3c3b8a4b, 0ff8bbde) weren't documented here. Although each
> can be considered minor, they together can decrease the bloating
> behaviour of certain workloads significantly (and limit the total
> damage), and in my opinion this should be mentioned.
>
> 3c3b8a4b: Returns space claimed for the line pointer array back to the
> page's empty space, so that it can also be used for tuple data.
>
> 0ff8bbde: Allows large tuples to be inserted on pages which have only
> a small amount of data, regardless of fillfactor.

+1 on mentioning both things.

-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Mon, May 10, 2021 at 7:00 AM Justin Pryzby <pryzby@telsasoft.com> wrote:
> | Allow VACUUM VERBOSE to report page deletion counts for each scan of an index (Peter Geoghegan)
>
> I think "Allow" is wrong - should just say that VACUUM VERBOSE reports..

It's also not accurate, since the count of deleted pages was always
shown by VACUUM VERBOSE (once per index scan). The new feature has us
show pages deleted by the VACUUM that actually ran (not some earlier
VACUUM) -- these are "newly deleted pages".

I don't think that this item is worth mentioning, though -- it's just
a nice to have. If Bruce removes it from the release notes entirely I
won't object.

In addition to the items that I commented on in my response to
Matthias just now, I should point out the following item as worthy of
inclusion:

9dd963ae25 Recycle nbtree pages deleted during same VACUUM.

I suggest that this item be phrased more or less as follows:

"Allow VACUUM to eagerly place newly deleted B-Tree pages in the Free
Space Map. Previously VACUUM could only place preexisting deleted
pages in the Free Space Map for recycling."

-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 08:16:16AM +0200, Laurenz Albe wrote:
> On Mon, 2021-05-10 at 02:03 -0400, Bruce Momjian wrote:
> > When using \e in psql, if the buffer is not modified by the editor, ignore the editor contents and leave the buffer
unchanged(Laurenz Albe)
 
> > The \ef and \ev commands also now have this behavior. DOCS SAY BUFFER IS CLEARED.
> 
> It's a bit more complicated: If you edit the current buffer with \e, the buffer is
> unchanged if you quit the editor.
> However, if you edit the previous statement, a file or the definition of a function
> or view, the query buffer is cleared if you quit the editor without saving.
> 
> Suggested wording:
> 
> When editing anything else than the current query buffer with \e, and you quit
> the editor, the query buffer is cleared.  This makes the behavior less surprising
> and prevents the unintended re-execution of the previous statement.

OK, I figured it out.  I was confused by \p because \? says:

    test=> \?
    Query Buffer
      \e [FILE] [LINE]       edit the query buffer (or file) with external editor
      \ef [FUNCNAME [LINE]]  edit function definition with external editor
      \ev [VIEWNAME [LINE]]  edit view definition with external editor
-->      \p                     show the contents of the query buffer
      \r                     reset (clear) the query buffer
      ...


but the documentaton says:

       \p or \print
           Print the current query buffer to the standard output. If
-->        the current query buffer is empty, the most recently executed
-->        query is printed instead.

I wasn't aware that \e loads the previous query if the buffer is empty. 
I came up with this release note text:

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2021-04-03 [55873a00e] Improve psql's behavior when the editor is exited withou
    -->
    
    <para>
    When editing the previous query or a file with psql's \e, ignore the
    contents if the editor exits without saving (Laurenz Albe)
    </para>
    
    <para>
    Previously, editing the previous query or a file and not saving the
    editor contents would still execute the editor contents.  The \ef and
    \ev commands also now have this behavior.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 02:51:28PM +0800, Julien Rouhaud wrote:
> On Mon, May 10, 2021 at 02:03:08AM -0400, Bruce Momjian wrote:
> > I have committed the first draft of the PG 14 release notes.  You can
> > see the most current  build of them here:
> > 
> >     https://momjian.us/pgsql_docs/release-14.html
> > 
> > I need clarification on many items, and the document still needs its
> > items properly ordered, and markup added.  I also expect a lot of
> > feedback.
> 
> There's a small typo:
> 
> +Improve tab completion (Vignesh C,, Michael [...]
> 
> (duplicated comma)

Fixed.

> Also
> 
> +<para>
> +Avoid retrieval of CHECK constraints and DEFAULT exprs in data-only dump (Julien Rouhaud)
> +</para>
> +
> +<para>
> +IS THIS BACKWARD INCOMPATIBLE?
> +</para>
> +</listitem>
> 
> The new behavior doesn't have any impact on the generated dump, as the
> modification is to avoid retrieving data that won't be used.
> 
> For users, it only means maybe slight faster pg_dump execution, or slightly
> better change to be able to run a pg_dump --data-only if pg_constraint is
> corrupted but not the rest of the user data, so maybe it's not necessary to
> mention that in the release notes?

Thanks, removed.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 05:28:24PM +0900, Masahiko Sawada wrote:
> On Mon, May 10, 2021 at 3:03 PM Bruce Momjian <bruce@momjian.us> wrote:
> >
> > I have committed the first draft of the PG 14 release notes.  You can
> > see the most current  build of them here:
> >
> >         https://momjian.us/pgsql_docs/release-14.html
> 
> Thank you!
> 
> > Add system view pg_stat_replication_slots to report replication slot activity (Sawada Masahiko, Amit Kapila)
> >
> > Function pg_stat_reset_replication_slot() resets slot statistics. THIS IS LOGICAL ONLY, BUT NO "LOGICAL" IN THE
NAME?
> 
> IIUC pg_stat_replication_slots view supports only logical slot for
> now. But we might have it show also physical slot in the future. I'm
> fine with the current view name and description but someone might want
> to use "logical replication slot" instead of just "replication slot".

OK, I was just confirming we are happy with the name.
> 
> > IS "ACTIVITY" THE RIGHT WORD?
> 
> The doc says "The pg_stat_replication_slots view will contain one row
> per logical replication slot, showing statistics about its usage.". So
> we can say "... to report replication slot statistics about its
> usage".

OK, I think I prefer "activity" so will just keep that.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 08:52:44PM +1200, David Rowley wrote:
> On Mon, 10 May 2021 at 18:03, Bruce Momjian <bruce@momjian.us> wrote:
> > I need clarification on many items, and the document still needs its
> > items properly ordered, and markup added.  I also expect a lot of
> > feedback.
> 
> Thanks for drafting that up.
> 
> > Add executor method to cache results from the inner-side of joins (David Rowley)
> 
> I think it would be more accurate to say "inner-side of nested loop joins".

OK, thanks.  I suspected that was true.

> > Allow efficient retrieval of heap rows via tid (Edmund Horner, David Rowley)
> 
> I'd say we already had that feature with TID Scan. Maybe it would be
> better to write:
> 
> "Allow efficient heap scanning on ranges of tids (Edmund Horner, David Rowley)"

I went with:

    Allow efficient heap scanning of a range of tids (Edmund Horner,
    David Rowley)

> > Improve the performance of parallel sequential scans (Thomas Munro, David Rowley)
> 
> I think it is worth mentioning "I/O" before "performance".  This
> change won't really help cases if all the table's pages are already in
> shared buffers.

I went with:

    Improve the performance of parallel sequential I/O scans (Thomas Munro,
    David Rowley)

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 01:44:12PM +0200, Matthias van de Meent wrote:
> On Mon, 10 May 2021 at 08:03, Bruce Momjian <bruce@momjian.us> wrote:
> >
> > I have committed the first draft of the PG 14 release notes.  You can
> > see the most current  build of them here:
> >         https://momjian.us/pgsql_docs/release-14.html
> >
> > I need clarification on many items, and the document still needs its
> > items properly ordered, and markup added.  I also expect a lot of
> > feedback.
> 
> I noticed that the improvement in bloat control in the HeapAM that I
> know of (3c3b8a4b, 0ff8bbde) weren't documented here. Although each
> can be considered minor, they together can decrease the bloating
> behaviour of certain workloads significantly (and limit the total
> damage), and in my opinion this should be mentioned.
> 
> 3c3b8a4b: Returns space claimed for the line pointer array back to the
> page's empty space, so that it can also be used for tuple data.
> 
> 0ff8bbde: Allows large tuples to be inserted on pages which have only
> a small amount of data, regardless of fillfactor.
> 
> Together they should be able to help significantly in both bloat
> prevention and bloat reduction.

I looked at those items.  I try to mention performance items that enable
new workloads or require some user action to benefit from it.  I am not
sure these two qualify, but can others comments?  Thanks.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Laurenz Albe
Date:
On Mon, 2021-05-10 at 12:38 -0400, Bruce Momjian wrote:
> I came up with this release note text:
> 
>     <listitem>
>     <!--
>     Author: Tom Lane <tgl@sss.pgh.pa.us>
>     2021-04-03 [55873a00e] Improve psql's behavior when the editor is exited withou
>     -->
>     
>     <para>
>     When editing the previous query or a file with psql's \e, ignore the
>     contents if the editor exits without saving (Laurenz Albe)
>     </para>
>     
>     <para>
>     Previously, editing the previous query or a file and not saving the
>     editor contents would still execute the editor contents.  The \ef and
>     \ev commands also now have this behavior.
>     </para>
>     </listitem>

Thanks, that looks much better.

The second paragraph starts describing the previous behavior, but the second
sentence details on the changes.  Perhaps it would be better to put that into
the first paragraph:

    <para>
    When editing the previous query or a file with psql's \e, or when a
    view or function definition are edited with \ev or \ef, ignore the
    contents if the editor exits without saving (Laurenz Albe)
    </para>
    
    <para>
    Previously, editing the previous query or a file and not saving the
    editor contents would still execute the editor contents.
    </para>

Yours,
Laurenz Albe




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 07:39:17PM +0200, Laurenz Albe wrote:
> On Mon, 2021-05-10 at 12:38 -0400, Bruce Momjian wrote:
> > I came up with this release note text:
> > 
> >     <listitem>
> >     <!--
> >     Author: Tom Lane <tgl@sss.pgh.pa.us>
> >     2021-04-03 [55873a00e] Improve psql's behavior when the editor is exited withou
> >     -->
> >     
> >     <para>
> >     When editing the previous query or a file with psql's \e, ignore the
> >     contents if the editor exits without saving (Laurenz Albe)
> >     </para>
> >     
> >     <para>
> >     Previously, editing the previous query or a file and not saving the
> >     editor contents would still execute the editor contents.  The \ef and
> >     \ev commands also now have this behavior.
> >     </para>
> >     </listitem>
> 
> Thanks, that looks much better.
> 
> The second paragraph starts describing the previous behavior, but the second
> sentence details on the changes.  Perhaps it would be better to put that into
> the first paragraph:
> 
>     <para>
>     When editing the previous query or a file with psql's \e, or when a
>     view or function definition are edited with \ev or \ef, ignore the
>     contents if the editor exits without saving (Laurenz Albe)
>     </para>
>     
>     <para>
>     Previously, editing the previous query or a file and not saving the
>     editor contents would still execute the editor contents.
>     </para>

Uh, I try to keep the first sentence short so people can scan it more
easily, so I am hesitant to make this change.  I went with this change:

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2021-04-03 [55873a00e] Improve psql's behavior when the editor is exited withou
    -->
    
    <para>
    When editing the previous query or a file with psql's \e, or using \ef and \ev, ignore the contents if the editor
exitswithout saving (Laurenz Albe)
 
    </para>
    
    <para>
    Previously, such edits would still execute the editor contents.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
John Naylor
Date:
Hi Bruce,

Thanks for doing this work again!

> Add date_bin function (John Naylor)
>
> WHAT DOES THIS DO?

Hard to describe in a one-liner, but it lines up timestamps into regular intervals as specified by the user. It is more clear after seeing examples:

https://www.postgresql.org/docs/devel/functions-datetime.html#FUNCTIONS-DATETIME-BIN

> Dramatically improve Unicode normalization (John Naylor)
>
> WHAT OPERATIONS USE THIS?

PG13 added the normalize() function to normalize Unicode sequences, as well as the IS NORMALIZED syntax to test for that. The commits* here do not change behavior and only improve performance. As such, this really belongs in the performance section. 

*There is one additional commit that belongs to this entry:

Author: Michael Paquier <michael@paquier.xyz>
2020-10-11 [80f8eb79e] Use perfect hash for NFC and NFKC Unicode Normalization quick check

--

Re: PG 14 release notes, first draft

From
Matthias van de Meent
Date:
On Mon, 10 May 2021 at 19:34, Bruce Momjian <bruce@momjian.us> wrote:
>
> On Mon, May 10, 2021 at 01:44:12PM +0200, Matthias van de Meent wrote:
> > On Mon, 10 May 2021 at 08:03, Bruce Momjian <bruce@momjian.us> wrote:
> > >
> > > I have committed the first draft of the PG 14 release notes.  You can
> > > see the most current  build of them here:
> > >         https://momjian.us/pgsql_docs/release-14.html
> > >
> > > I need clarification on many items, and the document still needs its
> > > items properly ordered, and markup added.  I also expect a lot of
> > > feedback.
> >
> > I noticed that the improvement in bloat control in the HeapAM that I
> > know of (3c3b8a4b, 0ff8bbde) weren't documented here. Although each
> > can be considered minor, they together can decrease the bloating
> > behaviour of certain workloads significantly (and limit the total
> > damage), and in my opinion this should be mentioned.
> >
> > 3c3b8a4b: Returns space claimed for the line pointer array back to the
> > page's empty space, so that it can also be used for tuple data.
> >
> > 0ff8bbde: Allows large tuples to be inserted on pages which have only
> > a small amount of data, regardless of fillfactor.
> >
> > Together they should be able to help significantly in both bloat
> > prevention and bloat reduction.
>
> I looked at those items.  I try to mention performance items that enable
> new workloads or require some user action to benefit from it.

0ff8bbde Enables a workload that inserts (and non-locally updates)
large (> FILLFACTOR %) tuples in tables that have a low FILLFACTOR.
Previously this would fail dramatically by only inserting on new
pages; this would extend the table indefinately. See the thread [0]

3c3b8a4b improves workloads with high local update-then-delete churn.
Previously this would irreversably claim space on the page for tuple
identifiers even when they were later deleted; now we can reclaim this
space when a tuple is deleted from the page.

I see these two improvements in a similar light as the bottom-up index
deletion in btree: No user action required, works out-of-the-box,
decreases bloat / disk usage, but good to note as it fixes (known)
bloating footguns that a user might have encountered.

> I am not sure these two qualify, but can others comments?  Thanks.

I'd like to refer to Peter Geoghegan's reply [1] upthread.

Thank you for your effort,

Matthias van de Meent

[0] https://www.postgresql.org/message-id/flat/6e263217180649339720afe2176c50aa%40opammb0562.comp.optiver.com
[1] https://www.postgresql.org/message-id/CAH2-Wz%3D-A%3DjRxpB2Owj3KQadCue7%2BNLqj56Q566ees7TapMRvA%40mail.gmail.com



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 07:54:24AM -0700, Peter Geoghegan wrote:
> On Mon, May 10, 2021 at 4:44 AM Matthias van de Meent
> <boekewurm+postgres@gmail.com> wrote:
> > I noticed that the improvement in bloat control in the HeapAM that I
> > know of (3c3b8a4b, 0ff8bbde) weren't documented here. Although each
> > can be considered minor, they together can decrease the bloating
> > behaviour of certain workloads significantly (and limit the total
> > damage), and in my opinion this should be mentioned.
> >
> > 3c3b8a4b: Returns space claimed for the line pointer array back to the
> > page's empty space, so that it can also be used for tuple data.
> >
> > 0ff8bbde: Allows large tuples to be inserted on pages which have only
> > a small amount of data, regardless of fillfactor.
> 
> +1 on mentioning both things.

OK, you are confirming what Matthias suggested.  I added these two
items, which both seem to apply only to heap pages, not index pages:

---------------------------------------------------------------------------

    <listitem>
    <!--
    Author: Peter Geoghegan <pg@bowt.ie>
    2021-04-07 [3c3b8a4b2] Truncate line pointer array during VACUUM.
    -->
    
    <para>
    Deallocate space reserved by trailing unused heap line pointers
    (Matthias van de Meent, Peter Geoghegan)
    </para>
    </listitem>
    
---------------------------------------------------------------------------

    <listitem>
    <!--
    Author: Noah Misch <noah@leadboat.com>
    2021-03-30 [0ff8bbdee] Accept slightly-filled pages for tuples larger
    than fill
    -->
    
    <para>
    Allow wide tuples to be always added to almost-empty heap pages (John Naylor,
    Floris van Nee)
    </para>
    
    <para>
    Previously tuples whose insertion would have exceeded the page's fill
    factor were instead added to new pages.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Mon, May 10, 2021 at 3:58 PM Bruce Momjian <bruce@momjian.us> wrote:
> OK, you are confirming what Matthias suggested.  I added these two
> items, which both seem to apply only to heap pages, not index pages:

That's right -- these two relate to heap pages only.

I think that Matthias compared these two to bottom-up index deletion
because all three patches are concerned about avoiding "a permanent
solution to a temporary problem". They're conceptually similar despite
being in fairly different areas. Evidently Matthias has a similar
mental model to my own when it comes to this stuff.

Unfortunately the practical significance of the line pointer patch is
hard to demonstrate with a benchmark. I believe that it is very useful
on a sufficiently long timeline and with certain workloads because of
the behavior it avoids. As I pointed out on that other thread
recently, once you have irreversible bloat very small adverse events
will eventually add up and cause big problems. When this happens it'll
be very hard or impossible to detect, since it just looks like heap
fragmentation.

That said, it's clearly an issue with one of the TPC-C tables if you
run BenchmarkSQL for days and days (just one table, though). So there
is hard evidence that line pointer bloat could get really out of hand
in at least some tables.

-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
David Rowley
Date:
Thanks for making the updates.

On Tue, 11 May 2021 at 05:07, Bruce Momjian <bruce@momjian.us> wrote:
>
> On Mon, May 10, 2021 at 08:52:44PM +1200, David Rowley wrote:
> > > Improve the performance of parallel sequential scans (Thomas Munro, David Rowley)
> >
> > I think it is worth mentioning "I/O" before "performance".  This
> > change won't really help cases if all the table's pages are already in
> > shared buffers.
>
> I went with:
>
>         Improve the performance of parallel sequential I/O scans (Thomas Munro,
>         David Rowley)

I think I'd have gone with:

"Improve I/O performance of parallel sequential scans (Thomas Munro,
David Rowley)"

The operation we're speeding up is called sequential scan. We don't
have any operation that's named sequential I/O scan.

David



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 07:50:14AM -0400, Joe Conway wrote:
> On 5/10/21 2:03 AM, Bruce Momjian wrote:
> > I have committed the first draft of the PG 14 release notes.  You can
> > see the most current  build of them here:
> > 
> >     https://momjian.us/pgsql_docs/release-14.html
> > 
> > I need clarification on many items, and the document still needs its
> > items properly ordered, and markup added.  I also expect a lot of
> > feedback.
> > 
> > I plan to work on completing this document this coming week in
> > preparation for beta next week.
> 
> While only a small change, this commit does affect user visible behavior and
> so should probably be noted:
> 
> https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=b12bd4869b5e

I see your point.  Here is the release entry I added:

    <listitem>
    <!--
    Author: Joe Conway <mail@joeconway.com>
    2021-03-31 [b12bd4869] Fix has_column_privilege function corner case
    -->
    
    <para>
    Return false for has_column_privilege() checks on non-existent or dropped columns (Joe Conway)
    </para>
    
    <para>
    Previously such columns returned an invalid column error.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 11, 2021 at 12:35:28PM +1200, David Rowley wrote:
> Thanks for making the updates.
> 
> On Tue, 11 May 2021 at 05:07, Bruce Momjian <bruce@momjian.us> wrote:
> >
> > On Mon, May 10, 2021 at 08:52:44PM +1200, David Rowley wrote:
> > > > Improve the performance of parallel sequential scans (Thomas Munro, David Rowley)
> > >
> > > I think it is worth mentioning "I/O" before "performance".  This
> > > change won't really help cases if all the table's pages are already in
> > > shared buffers.
> >
> > I went with:
> >
> >         Improve the performance of parallel sequential I/O scans (Thomas Munro,
> >         David Rowley)
> 
> I think I'd have gone with:
> 
> "Improve I/O performance of parallel sequential scans (Thomas Munro,
> David Rowley)"
> 
> The operation we're speeding up is called sequential scan. We don't
> have any operation that's named sequential I/O scan.

OK, new text:

    <listitem>
    <!--
    Author: David Rowley <drowley@postgresql.org>
    2020-07-26 [56788d215] Allocate consecutive blocks during parallel seqscans
    -->
    
    <para>
    Improve the I/O performance of parallel sequential scans (Thomas Munro, David Rowley)
    </para>
    
    <para>
    This was done by allocating blocks in groups to parallel workers.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 04:14:56PM -0700, Peter Geoghegan wrote:
> On Mon, May 10, 2021 at 3:58 PM Bruce Momjian <bruce@momjian.us> wrote:
> > OK, you are confirming what Matthias suggested.  I added these two
> > items, which both seem to apply only to heap pages, not index pages:
> 
> That's right -- these two relate to heap pages only.
> 
> I think that Matthias compared these two to bottom-up index deletion
> because all three patches are concerned about avoiding "a permanent
> solution to a temporary problem". They're conceptually similar despite
> being in fairly different areas. Evidently Matthias has a similar
> mental model to my own when it comes to this stuff.

Agreed, that is a very interesting distinction.

> Unfortunately the practical significance of the line pointer patch is
> hard to demonstrate with a benchmark. I believe that it is very useful
> on a sufficiently long timeline and with certain workloads because of
> the behavior it avoids. As I pointed out on that other thread
> recently, once you have irreversible bloat very small adverse events
> will eventually add up and cause big problems. When this happens it'll
> be very hard or impossible to detect, since it just looks like heap
> fragmentation.
> 
> That said, it's clearly an issue with one of the TPC-C tables if you
> run BenchmarkSQL for days and days (just one table, though). So there
> is hard evidence that line pointer bloat could get really out of hand
> in at least some tables.

OK, once I dug into what you two were saying, I see the significance.  I
was frankly surprised we didn't already have these optimizations, and
you are right they can lead to long-term problems.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 04:02:27PM +0300, Alexander Korotkov wrote:
> Hi, Bruce!
> 
> On Mon, May 10, 2021 at 9:03 AM Bruce Momjian <bruce@momjian.us> wrote:
> > I have committed the first draft of the PG 14 release notes.  You can
> > see the most current  build of them here:
> >
> >         https://momjian.us/pgsql_docs/release-14.html
> >
> > I need clarification on many items, and the document still needs its
> > items properly ordered, and markup added.  I also expect a lot of
> > feedback.
> >
> > I plan to work on completing this document this coming week in
> > preparation for beta next week.
> 
> Thank you very much for your work!
> 
> Let me provide a missing description for the items related to me.
> 
>  * Improve handling of compound words in to_tsquery() and
> websearch_to_tsquery() (Alexander Korotkov)
> Compound words are now transformed into parts connected with phrase
> search operators.  For example, to_tsquery('pg_class') becomes 'pg <->
> class' instead of 'pg & class'.  This eliminates bug of handling
> compound words connected with the phrase operator and makes the search
> of compound words more strict.

OK, what symbols trigger this change?  Underscore?  What else?  You are
saying the previous code allowed 'pg' and 'class' anywhere in the
string, while the new code requires them to be adjacent, which more
closely matches the pattern.

>  * Fix extra distance in phrase operators for quoted text in
> websearch_to_tsquery() (Alexander Korotkov)
> For example, websearch_to_tsquery('english', '"aaa: bbb"') becomes
> 'aaa <> bbb' instead of  'aaa <2> bbb'.

So colon and space were considered to be two tokens between 'aaa' and
'bbb', while is really only one because both tokens are discarded?  Is
this true of any discarded tokens, e.g. ''"aaa ?:, bbb"'?

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 10:53:03PM +0900, Ian Lawrence Barwick wrote:
> 2021年5月10日(月) 15:03 Bruce Momjian <bruce@momjian.us>:
> >
> > I have committed the first draft of the PG 14 release notes.  You can
> > see the most current  build of them here:
> >
> >         https://momjian.us/pgsql_docs/release-14.html
> >
> > I need clarification on many items, and the document still needs its
> > items properly ordered, and markup added.  I also expect a lot of
> > feedback.
> >
> > I plan to work on completing this document this coming week in
> > preparation for beta next week.
> 
> This misses the change of default value, and is a bit unclear:
> 
> > Remove password_encryption's support for boolean values, e.g. true (Peter Eisentraut)
> >
> > Previous boolean values enabled md5.  Now, only the md5 string does this.
> 
> I'd suggest something along these lines:
> 
> > The default for password_encryption is now "scram-sha-256" (Peter Eisentraut)
> >
> > The pseudo-boolean values "true", "on", "yes" and "1" are no longer accepted as an alias for "md5".
> 
> (It hasn't been a true boolean setting since Pg 9.6).

I reworeded it to:

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
    -->
    
    <para>
    Limit the ways password_encryption can enable md5 hashing (Peter Eisentraut)
    </para>
    
    <para>
    Previously on/true/yes/1 values enabled md5.  Now, only the string md5 does this.
    </para>
    </listitem>

I also have this entry:

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
    -->
    
    <para>
    Change password_encryption's default to scram-sha-256 (Peter Eisentraut)
    </para>
    
    <para>
    Previously it was md5.
    </para>
    </listitem>

I am hesitant to merge them since they are different changes.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Amit Langote
Date:
On Mon, May 10, 2021 at 11:40 PM Justin Pryzby <pryzby@telsasoft.com> wrote:
> Same as the last couple years, I checked for missing items in the release
> notes, running something like this.
>
> git log --cherry-pick --oneline origin/REL_13_STABLE...origin/master
>
> Should any of these be included?
>
> 86dc90056d Rework planning and execution of UPDATE and DELETE.
> a1115fa078 Postpone some more stuff out of ExecInitModifyTable.
> c5b7ba4e67 Postpone some stuff out of ExecInitModifyTable.

I was just about to ask Bruce what he thinks about these.

To clarify, the first one is a big refactoring commit that allowed us
to get rid of inheritance_planner(), a fairly inefficient way of
planning updates/deletes on partitioned tables, especially when many
partitions remain after pruning (or when pruning cannot be used).  One
may see the performance of update/deletes, especially on partitioned
tables, to be generally improved as a result of this commit, but maybe
not as significantly as to be mentioned in E.1.3.1.1. Partitioning or
even E.1.3.1.4. General Performance.  However, one user-visible
feature that came out of this work is that updates/deletes can now use
run-time pruning whereas they couldn't before.  Maybe that ought to be
mentioned.  (This reminds me to send a patch to remove the note from
5.11.4. Partition Pruning that says that runtime pruning cannot be
used for update/delete).

The other two commits can lead to improved performance of
update/deletes when there are many unpruned partitions in the plan,
but runtime pruning (a new feature as mentioned above) leads to only
one or few partitions to actually be updated/deleted from.  I admit
though that the cases for which performance has been improved still
under-perform the cases that already performed better starting in v12,
that is, the cases where the planner itself is able to trim down the
plan to contain one or few partitions, so maybe nothing very big to
see here just yet.  You may want to take a look at the benchmark
results I had posted here:
https://www.postgresql.org/message-id/CA%2BHiwqEcawatEaUh1uTbZMEZTJeLzbroRTz9_X9Z5CFjTWJkhw%40mail.gmail.com

Thank you.

--
Amit Langote
EDB: http://www.enterprisedb.com



Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Mon, May 10, 2021 at 7:18 PM Bruce Momjian <bruce@momjian.us> wrote:
>
> On Mon, May 10, 2021 at 04:14:56PM -0700, Peter Geoghegan wrote:
> > On Mon, May 10, 2021 at 3:58 PM Bruce Momjian <bruce@momjian.us> wrote:
> > > OK, you are confirming what Matthias suggested.  I added these two
> > > items, which both seem to apply only to heap pages, not index pages:
> >
> > That's right -- these two relate to heap pages only.
> >
> > I think that Matthias compared these two to bottom-up index deletion
> > because all three patches are concerned about avoiding "a permanent
> > solution to a temporary problem". They're conceptually similar despite
> > being in fairly different areas. Evidently Matthias has a similar
> > mental model to my own when it comes to this stuff.
>
> Agreed, that is a very interesting distinction.

BTW, I think that the wording of the bottom-up index deletion item
should be changed to describe the result rather than the mechanism
itself. The important idea is that non-HOT updaters are made to clean
up their own mess before it gets out of hand (i.e. before a
version-driven page split can go ahead), at least for those indexes
whose columns are not logically modified by the UPDATE statement
(usually most indexes on the table). We're making the updaters live
within their means -- they cannot be allowed to avoid paying small
incremental costs if that ultimately imposes a much larger, lasting
cost on the system as a whole. This could be thought of as a negative
externality.

The index deletion mechanism itself is not that different to what we
had before. The important point is how and when it kicks in, and the
systematic effect of that over time. It's a subtractive thing, not an
additive thing -- it's helpful because of what *doesn't* happen in
Postgres 14.

-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Amit Kapila
Date:
On Mon, May 10, 2021 at 7:30 PM Justin Pryzby <pryzby@telsasoft.com> wrote:
>
> Can these be merged:
>  Allow logical replication to stream long transactions to standbys (Dilip Kumar, Tomas Vondra, Amit Kapila, Nikhil
Sontakke)
>  Improve the logical replication API to allow streaming large in-progress transactions (Tomas Vondra, Dilip Kumar,
AmitKapila)
 
>

I think we should merge the below two:
Add support for streaming to built-in logical replication (Vondra,
Dilip Kumar, Amit Kapila, Ajin Cherian, Nikhil Sontakke, Stas Kelvich)

Allow logical replication to stream long transactions to standbys
(Dilip Kumar, Tomas Vondra, Amit Kapila, Nikhil Sontakke)

and say something like:
Allow logical replication to stream long in-progress transactions to standbys
Previously transactions that exceeded logical_decoding_work_mem were
written to disk until the transaction completed.

Also, the commits that lead to the above feature is:
2020-09-03 [464824323] Add support for streaming to built-in logical replicatio
2020-08-08 [7259736a6] Implement streaming mode in ReorderBuffer.

* Improve the logical replication API to allow streaming large
in-progress transactions (Tomas Vondra, Dilip Kumar, Amit Kapila)
The output functions begin with "stream". test_decoding also supports these.

In the above, I think it is better to say Enhance instead of Improve.

* Add system view pg_stat_replication_slots to report replication slot
activity (Sawada Masahiko, Amit Kapila)

I think for this item, we can give Vignesh C as author credit because
he helped a lot enhance/stabilize this feature after the initial
commit. See
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=f5fc2f5b23d1b1dff60f8ca5dc211161df47eda4
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=cca57c1d9bf7eeba5b81115e0b82651cf3d8e4ea
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=592f00f8dec68038301467a904ac514eddabf6cd

* Allow multiple xacts during table sync in logical replication (Peter
Smith, Amit Kapila, and Takamichi Osumi)

IMPORTANT?

Yes, this is a big enough improvement in the initial table sync
mechanism of logical replication that it is worth mentioning in
Release Notes. One of the main user-visible effects this commit can
have is that it will reduce the time for which we need to hold WAL on
the server during the initial table sync phase. Then it can avoid
large copies in case there is any error during the time when
apply-worker and tablesync-worker synchronizes the apply location.

* Enable logical replication to handle two phase commits (Ajin Cherian)
This is controlled via pg_create_logical_replication_slot().

We still haven't supported two-phase commits for built-in logical
replication but we have exposed APIs for decoding plugins to achieve
that. Using these APIs, we are planning to support it for built-in
logical replication but that will be probably done in PG-15. So, I
suggest we can modify it to something like:

* Enhance logical decoding APIs to handle two-phase commits
This is controlled via pg_create_logical_replication_slot().

Most of the work for this feature is done via commits:
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=a271a1b50e9bec07e2ef3a05e38e7285113e4ce6
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=0aa8a01d04c8fe200b7a106878eebc3d0af9105c

So, I think the author credit should be given to Ajin Cherian, Amit
Kapila, Nikhil Sontakke, and Stas Kelvich

* I think we should mention about commit:
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=d7eb52d7181d83cf2363570f7a205b8eb1008dbc

This allows Logical decoding to work efficiently in presence of a
large amount of DDLs. This was a complaint from many users for long
time. Apart from the discussion thread, see some of the earlier
complaints:
https://www.postgresql.org/message-id/flat/20f3de7675f83176253f607b5e199b228406c21c.camel@cybertec.at
https://www.postgresql.org/message-id/flat/CAHoiPjzea6N0zuCi=+f9v_j94nfsy6y8SU7-=bp4=7qw6_i=Rg@mail.gmail.com

and most recently at:
https://www.postgresql.org/message-id/DB8PR10MB36126BC0DC3570637FDFED12EB4F9%40DB8PR10MB3612.EURPRD10.PROD.OUTLOOK.COM

* Speed truncation of small tables on large shared buffer servers (Kirk Jamison)

This optimization applies during recovery. Shouldn't we mention that
in some way?

-- 
With Regards,
Amit Kapila.



Re: PG 14 release notes, first draft

From
Laurenz Albe
Date:
On Mon, 2021-05-10 at 13:47 -0400, Bruce Momjian wrote:
> Uh, I try to keep the first sentence short so people can scan it more
> easily, so I am hesitant to make this change.  I went with this change:
> 
>     <listitem>
>     <!--
>     Author: Tom Lane <tgl@sss.pgh.pa.us>
>     2021-04-03 [55873a00e] Improve psql's behavior when the editor is exited withou
>     -->
>     
>     <para>
>     When editing the previous query or a file with psql's \e, or using \ef and \ev, ignore the contents if the editor
exitswithout saving (Laurenz Albe)
 
>     </para>
>     
>     <para>
>     Previously, such edits would still execute the editor contents.
>     </para>
>     </listitem>

That is fine with me and probably better than my suggestion.

Yours,
Laurenz Albe




Re: PG 14 release notes, first draft

From
Alexander Korotkov
Date:
On Tue, May 11, 2021 at 5:34 AM Bruce Momjian <bruce@momjian.us> wrote:
> On Mon, May 10, 2021 at 04:02:27PM +0300, Alexander Korotkov wrote:
> > Hi, Bruce!
> >
> > On Mon, May 10, 2021 at 9:03 AM Bruce Momjian <bruce@momjian.us> wrote:
> > > I have committed the first draft of the PG 14 release notes.  You can
> > > see the most current  build of them here:
> > >
> > >         https://momjian.us/pgsql_docs/release-14.html
> > >
> > > I need clarification on many items, and the document still needs its
> > > items properly ordered, and markup added.  I also expect a lot of
> > > feedback.
> > >
> > > I plan to work on completing this document this coming week in
> > > preparation for beta next week.
> >
> > Thank you very much for your work!
> >
> > Let me provide a missing description for the items related to me.
> >
> >  * Improve handling of compound words in to_tsquery() and
> > websearch_to_tsquery() (Alexander Korotkov)
> > Compound words are now transformed into parts connected with phrase
> > search operators.  For example, to_tsquery('pg_class') becomes 'pg <->
> > class' instead of 'pg & class'.  This eliminates bug of handling
> > compound words connected with the phrase operator and makes the search
> > of compound words more strict.
>
> OK, what symbols trigger this change?  Underscore?  What else?

Any symbol, which is recognized as a separator by full-text parser,
but not tsquery parser.  Fulltext search is extensible and allowing
pluggable parsers.  In principle, we could dig the exact set of
symbols, but I'm not sure this worth the effort.

>  You are
> saying the previous code allowed 'pg' and 'class' anywhere in the
> string, while the new code requires them to be adjacent, which more
> closely matches the pattern.

Yes, that's it.

> >  * Fix extra distance in phrase operators for quoted text in
> > websearch_to_tsquery() (Alexander Korotkov)
> > For example, websearch_to_tsquery('english', '"aaa: bbb"') becomes
> > 'aaa <> bbb' instead of  'aaa <2> bbb'.
>
> So colon and space were considered to be two tokens between 'aaa' and
> 'bbb', while is really only one because both tokens are discarded?  Is
> this true of any discarded tokens, e.g. ''"aaa ?:, bbb"'?

Yes, that's true for any discarded tokens.

------
Regards,
Alexander Korotkov



Re: PG 14 release notes, first draft

From
Joe Conway
Date:
On 5/10/21 9:56 PM, Bruce Momjian wrote:
> On Mon, May 10, 2021 at 07:50:14AM -0400, Joe Conway wrote:
>> On 5/10/21 2:03 AM, Bruce Momjian wrote:
>> > I have committed the first draft of the PG 14 release notes.  You can
>> > see the most current  build of them here:
>> > 
>> >     https://momjian.us/pgsql_docs/release-14.html
>> > 
>> > I need clarification on many items, and the document still needs its
>> > items properly ordered, and markup added.  I also expect a lot of
>> > feedback.
>> > 
>> > I plan to work on completing this document this coming week in
>> > preparation for beta next week.
>> 
>> While only a small change, this commit does affect user visible behavior and
>> so should probably be noted:
>> 
>> https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=b12bd4869b5e
> 
> I see your point.  Here is the release entry I added:

Not quite -- maybe something like the below:

>     <para>
>     Return false for has_column_privilege() checks on non-existent or dropped columns (Joe Conway)

Always return NULL for has_column_privilege() checks on non-existent or 
dropped column by attnum (Joe Conway)

>     <para>
>     Previously such columns returned an invalid column error.

Previously existence of such columns were ignored when caller had table 
level privileges.


-- 
Crunchy Data - http://crunchydata.com
PostgreSQL Support for Secure Enterprises
Consulting, Training, & Open Source Development



Re: PG 14 release notes, first draft

From
"Jonathan S. Katz"
Date:
First Bruce, thank you for compiling the release notes draft. Comments
inline:

On 5/10/21 11:56 PM, Amit Kapila wrote:
> On Mon, May 10, 2021 at 7:30 PM Justin Pryzby <pryzby@telsasoft.com> wrote:
>>
>> Can these be merged:
>>  Allow logical replication to stream long transactions to standbys (Dilip Kumar, Tomas Vondra, Amit Kapila, Nikhil
Sontakke)
>>  Improve the logical replication API to allow streaming large in-progress transactions (Tomas Vondra, Dilip Kumar,
AmitKapila) 
>>
>
> I think we should merge the below two:
> Add support for streaming to built-in logical replication (Vondra,
> Dilip Kumar, Amit Kapila, Ajin Cherian, Nikhil Sontakke, Stas Kelvich)
>
> Allow logical replication to stream long transactions to standbys
> (Dilip Kumar, Tomas Vondra, Amit Kapila, Nikhil Sontakke)
>
> and say something like:
> Allow logical replication to stream long in-progress transactions to standbys
> Previously transactions that exceeded logical_decoding_work_mem were
> written to disk until the transaction completed.

I was going to post a question about the above bullet point(s), so this
clarification helps -- thanks!

Two comments on the above:

1. I do believe ther eis a missing "Tomas" in the first release note.
2. Would you want to s/standbys/subscribers/ given an instance can be in
read/write mode but still receive logical changes? Or did this patch
affect only subscribers that are also standbys?

Thanks,

Jonathan


Attachment

Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
I think these should be merged:

| Remove factorial operators ! and !! (Mark Dilger)
| Add documentation for the factorial() function (Peter Eisentraut)

| This can be disabled by turning client options "sslsni" off. 

option (no ess)

| Allow REINDEX to process all child tables and indexes of a partitioned table (Justin Pryzby, Michael Paquier) 

It should actually say "all child tables or indexes of a partitioned relation",
since you can REINDEX INDEX partitioned_index.

| Add bit_xor XOR aggregate function (Alexey Bashtanov) 

Remove XOR ?

| Remove support for postfix (right-unary) operators (Mark Dilger) 
| pg_dump and pg_upgrade will warn if post-fix operators are being dumped. 

postfix not post-fix

| Remove temporary files after backend crashes (Euler Taveira) 

crash (singular)

| Increase warning time and hard limit before transaction id and multi-transaction wraparound (Noah Misch) 
| This should reduce the number of failures without warning. 

I'd say: This should reduce the possibility of failures that occur without
having issued warnings about wraparound.

-- 
Justin



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 09:00:05AM -0500, Justin Pryzby wrote:
> Thanks for putting it together.
> 
> I think these two should be merged:
> | Remove containment operators @ and ~ from contrib modules cube, hstore, intarray, and seg (Justin Pryzby) 
> | Remove deprecated containment operators for built-in geometry data types (Justin Pryzby) 

Agreed, merged.
> 
> | Improve autovacuum's analyze of partitioned tables (Yuzuko Hosoya) 
> | DETAILS? 
> 
> Should say: Autovacuum now analyzes partitioned tables.

Agreed, updated.

> | The server variable check_client_connection_interval allows supporting operating systems, e.g., Linux, to
automaticallycancel queries by disconnected clients. 
 
> The GUC is actually called client_connection_check_interval - the commit
> message used the wrong name.

OK, fixed.

> |  This is particularly helpful for reducing index bloat on tables that frequently update indexed columns. 
> Does it mean "..where indexed columns are frequently updated"?


Yeah, that needs help.   ;-)  I updated it to :

    This is particularly helpful for reducing index bloat on tables
    whose indexed columns are frequently updated.

> |  Allow multiple foreign table scans to be run in parallel (Robert Haas, Kyotaro Horiguchi, Thomas Munro, Etsuro
Fujita)
 
> I think it means multiple foreight table scan *nodes*

How is this?

    Allow a query referencing multiple foreign tables to perform foreign
    table scans in parallel (Robert Haas, Kyotaro Horiguchi, Thomas Munro,
    Etsuro Fujita)

I am worried "nodes" is too vague.

> | If server variable compute_query_id is enabled, display the hash in pg_stat_activity, EXPLAIN VERBOSE, csvlog, and
optionallyin log_line_prefix (Julien Rouhaud) 
 
> I think needs details, like: "If disabled, then the hash might be computed by
> an extension, instead".

I ended up with:

    <para>
    If server variable compute_query_id is enabled, display the hash
    in pg_stat_activity, EXPLAIN VERBOSE, csvlog, and optionally in
    log_line_prefix (Julien Rouhaud)
    </para>
    
    <para>
    A query id computed by an extension will also be displayed.
    </para>

> Later, you say:
> | Extension pg_stat_statements will need to enable hash computation via the compute_query_id server variable to
functionproperly. pg_stat_statements can now use a custom hash computation method. 
 
> Maybe it should say "will need hash computation to be enabled".

Here is the updated entry:

    <listitem>
    <!--
    Author: Bruce Momjian <bruce@momjian.us>
    2021-04-07 [5fd9dfa5f] Move pg_stat_statements query jumbling to core.
    -->
    
    <para>
    Move query hash computation from pg_stat_statements to the core server (Julien Rouhaud)
    </para>
    
    <para>
    Extension pg_stat_statements will now need to enable query hash computation to function properly.
    This can be done by enabling the server variable compute_query_id or by using an extension with a custom hash
computationmethod.
 
    </para>
    </listitem>

> | Allow more than the common name (CN) to be matched for client certificate authentication (Andrew Dunstan) 
> Your description makes it sound like arbitrary attributes can be compared.  But
> the option just allows comparing CN or DN.

OK, new text is:

    <listitem>
    <!--
    Author: Andrew Dunstan <andrew@dunslane.net>
    2021-03-29 [6d7a6feac] Allow matching the DN of a client certificate for
    authen
    -->
    
    <para>
    Allow the certificate's distinguished name (DN) to be matched for client
    certificate authentication (Andrew Dunstan)
    </para>
    
    <para>
    The new pg_hba.conf keyword "clientname=DN" allows comparison with
    non-CN certificate attributes and can be combined with ident maps.
    </para>
    </listitem>

> | Allow file system sync at the start of crash recovery on Linux (Thomas Munro) 
> I think this should describe the existing, default behavior:
> Allow syncfs method to sync data directory during recovery;
> The default behavior is to open and fsync every data file, and the new setting
> recovery_init_sync_method=syncfs instead syncs each filesystem in the data
> directory.

I went with this text:

    <listitem>
    <!--
    Author: Thomas Munro <tmunro@postgresql.org>
    2021-03-20 [61752afb2] Provide recovery_init_sync_method=syncfs.
    -->
    
    <para>
    Allow file system sync at the start of crash recovery on Linux (Thomas
    Munro)
    </para>
    
    <para>
    By default, Postgres opens and fsyncs every data file at the start of
    crash recovery.
    This new setting, recovery_init_sync_method=syncfs, instead syncs each
    filesystem used by the database cluster.
    This allows for faster recovery on systems with many database files.
    </para>
    </listitem>

> | Add date_bin function (John Naylor) 
> This truncate timestamps on an arbitrary interval.
> Like date_trunc() but also supports eg. '15 minutes', and also uses an arbitrary "origin".

OK, so what I think it returns is the greatest datetime that is a
multiple of interval values added to origin which is not greater than
the target date, right?  Am I the only one who finds this unclear? 
Doesn't our documentation of this feature need to explain this?

> | Support negative indexes in split_part() (Nikhil Benesch) 
> | Negative values count from the last field going forward. 
> should say "start from the last field and count backward" ?

Yes, fixed with your wording.

> |  Add configure option --with-openssl to behave like --with-ssl={openssl} (Daniel Gustafsson, Michael Paquier) 
> | The option --with-openssl is kept for compatibility. 
> I think this is backwards.  The new option is with-ssl=openssl, and (as you
> said) with-openssl is kept.

Agreed:

    Add configure option --with-ssl={openssl} to behave like
        --with-openssl (Daniel Gustafsson, Michael Paquier)

> Should these be in the "compatibility" section?
> 
> | Force custom server variable names to match the pattern used for unquoted SQL identifiers (Tom Lane) 

Yes.

> | Change password_encryption's default to scram-sha-256 (Peter Eisentraut) 

Yes, I can see this impacting people.  I move it and added text to
highlight the incompatibility:

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
    -->
    
    <para>
    Change password_encryption's default to scram-sha-256 (Peter Eisentraut)
    </para>
    
    <para>
    Previously it was md5.    All new passwords will be stored as
    SHA256 unless this server variable is changed or the password is
    already md5-hashed.
    </para>
    </listitem>

> 
> | Change checkpoint_completion_target default to 0.9 (Stephen Frost) 

I don' think that is an incompatibility since it only affects
performance, and can be easily changed.

> | Reduce the default value of vacuum_cost_page_miss (Peter Geoghegan) 
> 
> Nitpicks to follow:
> 
> | Allow some GiST index to be built by presorting the data (Andrey Borodin) 
> indexes

Fixed.

> | with --with-lz4 support to enable this feature
> I would change to say "to support" rather than "support to enable"

Yes, better.

> | Speed truncation of small tables on large shared buffer servers (Kirk Jamison) 
> "on servers with large settings of shared_buffers"

I went with:

    Speed truncation of small tables on clusters with a large number of
    shared buffers (Kirk Jamison)

> | Allow windowing functions to perform incremental sorts (David Rowley) 
> Just "window" functions

OK, fixed.

> | Improve pg_stat_activity reporting for walsenders processes (Tom Lane) 
>  walsender

Fixed.

> | Previously these functions could only be executed by super-users, and still defaults do that. 
> ..which is still the default behavior.

Updated to:

    Previously these functions could only be executed by
    super-users, and this is still the default.

> | This allows multiple queries to be send and only wait for completion when a specific synchronization message is
sent.
 
> be sent

Fixed.

> | Enhance libpq libpq's target_session_attrs parameter options (Haribabu Kommi, Greg Nancarrow, Vignesh C, Tom Lane)

> remove first "libpq"

Fixed.

> | With the removal of the ! operator in this release, factorial() is the only built-in way to computer a factorial.
> compute

Fixed.

> | For example, GROUP BY CUBE (a,b), CUBE (b,c) will generated duplicate grouping combinations without DISTINCT. 
> 
> will generate

Fixed.

> | Allow VACUUM VERBOSE to report page deletion counts for each scan of an index (Peter Geoghegan) 
> 
> I think "Allow" is wrong - should just say that VACUUM VERBOSE reports..

Updated to:

    Have VACUUM VERBOSE report page deletion counts for each scan of
    an index (Peter Geoghegan)

> |By default, only the root of partitioned tables are imported. 
> *is* imported

Fixed.

> Can these be merged:
>  Allow logical replication to stream long transactions to standbys (Dilip Kumar, Tomas Vondra, Amit Kapila, Nikhil
Sontakke)
 
>  Improve the logical replication API to allow streaming large in-progress transactions (Tomas Vondra, Dilip Kumar,
AmitKapila) 
 

I am not sure.  I do think we need to merge some of the logical
replication items, but I am not sure which ones yet.

Thanks for all the good feedback.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 08:53:54PM -0700, Peter Geoghegan wrote:
> On Mon, May 10, 2021 at 7:18 PM Bruce Momjian <bruce@momjian.us> wrote:
> >
> > On Mon, May 10, 2021 at 04:14:56PM -0700, Peter Geoghegan wrote:
> > > On Mon, May 10, 2021 at 3:58 PM Bruce Momjian <bruce@momjian.us> wrote:
> > > > OK, you are confirming what Matthias suggested.  I added these two
> > > > items, which both seem to apply only to heap pages, not index pages:
> > >
> > > That's right -- these two relate to heap pages only.
> > >
> > > I think that Matthias compared these two to bottom-up index deletion
> > > because all three patches are concerned about avoiding "a permanent
> > > solution to a temporary problem". They're conceptually similar despite
> > > being in fairly different areas. Evidently Matthias has a similar
> > > mental model to my own when it comes to this stuff.
> >
> > Agreed, that is a very interesting distinction.
> 
> BTW, I think that the wording of the bottom-up index deletion item
> should be changed to describe the result rather than the mechanism
> itself. The important idea is that non-HOT updaters are made to clean
> up their own mess before it gets out of hand (i.e. before a
> version-driven page split can go ahead), at least for those indexes
> whose columns are not logically modified by the UPDATE statement
> (usually most indexes on the table). We're making the updaters live
> within their means -- they cannot be allowed to avoid paying small
> incremental costs if that ultimately imposes a much larger, lasting
> cost on the system as a whole. This could be thought of as a negative
> externality.
> 
> The index deletion mechanism itself is not that different to what we
> had before. The important point is how and when it kicks in, and the
> systematic effect of that over time. It's a subtractive thing, not an
> additive thing -- it's helpful because of what *doesn't* happen in
> Postgres 14.

I updated this to:

    <listitem>
    <!--
    Author: Peter Geoghegan <pg@bowt.ie>
    2021-01-13 [9dc718bdf] Pass down "logically unchanged index" hint.
    Author: Peter Geoghegan <pg@bowt.ie>
    2021-01-13 [d168b6668] Enhance nbtree index tuple deletion.
    -->
    
    <para>
    Allow index additions to remove expired btree index entries to prevent page
    splits (Peter Geoghegan)
    </para>
    
    <para>
    This is particularly helpful for reducing index bloat on tables whose
    indexed columns are frequently updated.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 11, 2021 at 06:57:19AM -0400, Joe Conway wrote:
> On 5/10/21 9:56 PM, Bruce Momjian wrote:
> > On Mon, May 10, 2021 at 07:50:14AM -0400, Joe Conway wrote:
> > > On 5/10/21 2:03 AM, Bruce Momjian wrote:
> > > > I have committed the first draft of the PG 14 release notes.  You can
> > > > see the most current  build of them here:
> > > > >     https://momjian.us/pgsql_docs/release-14.html
> > > > > I need clarification on many items, and the document still needs
> > > its
> > > > items properly ordered, and markup added.  I also expect a lot of
> > > > feedback.
> > > > > I plan to work on completing this document this coming week in
> > > > preparation for beta next week.
> > > 
> > > While only a small change, this commit does affect user visible behavior and
> > > so should probably be noted:
> > > 
> > > https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=b12bd4869b5e
> > 
> > I see your point.  Here is the release entry I added:
> 
> Not quite -- maybe something like the below:
> 
> >     <para>
> >     Return false for has_column_privilege() checks on non-existent or dropped columns (Joe Conway)
> 
> Always return NULL for has_column_privilege() checks on non-existent or
> dropped column by attnum (Joe Conway)
> 
> >     <para>
> >     Previously such columns returned an invalid column error.
> 
> Previously existence of such columns were ignored when caller had table
> level privileges.

I can't reproduce the NULL using column name text:

    test=> SELECT CURRENT_USER;
     current_user
    --------------
     postgres
    (1 row)

    test=> CREATE TABLE test (x int, y int);
    CREATE TABLE
    
    test=> CREATE USER test;
    CREATE ROLE
    
    test=> \c test test
    You are now connected to database "test" as user "test".
    
    test=> SELECT has_column_privilege('test', 'x', 'SELECT');
     has_column_privilege
    ----------------------
     f

    test=> SELECT has_column_privilege('test', 'z', 'SELECT');
    ERROR:  column "z" of relation "test" does not exist

but I was able to show it using attribute numbers, as you explained:

    test=> SELECT has_column_privilege('test', 1::smallint, 'SELECT');
     has_column_privilege
    ----------------------
     f
    (1 row)
    
    test=> SELECT has_column_privilege('test', 2::smallint, 'SELECT');
     has_column_privilege
    ----------------------
     f
    (1 row)
    
    test=> SELECT has_column_privilege('test', 3::smallint, 'SELECT');
     has_column_privilege
    ----------------------
    
    (1 row)

What is the logic that attribute numbers should behave differently than
attribute names?

Here is the updated text:

    <listitem>
    <!--
    Author: Joe Conway <mail@joeconway.com>
    2021-03-31 [b12bd4869] Fix has_column_privilege function corner case
    -->
    
    <para>
    Return false for has_column_privilege() checks on non-existent or
    dropped columns when using attribute numbers (Joe Conway)
    </para>
    
    <para>
    Previously such attribute numbers returned an invalid column error.
    </para>
    </listitem>
    
-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 02:03:08AM -0400, Bruce Momjian wrote:
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
> 
>     https://momjian.us/pgsql_docs/release-14.html
> 
> I need clarification on many items, and the document still needs its
> items properly ordered, and markup added.  I also expect a lot of
> feedback.
> 
> I plan to work on completing this document this coming week in
> preparation for beta next week.

Just to clarify, I am trying to process the release note feedback as
quickly as possible, and committing changes 1-2 times a day.  However,
the feedback is currently coming in quicker than I can process it ---
eventually I will catch up.  All the feedback has been very useful.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Joe Conway
Date:
On 5/11/21 11:11 AM, Bruce Momjian wrote:
> On Tue, May 11, 2021 at 06:57:19AM -0400, Joe Conway wrote:
>> On 5/10/21 9:56 PM, Bruce Momjian wrote:
>> > On Mon, May 10, 2021 at 07:50:14AM -0400, Joe Conway wrote:
>> > > On 5/10/21 2:03 AM, Bruce Momjian wrote:
>> > > > I have committed the first draft of the PG 14 release notes.  You can
>> > > > see the most current  build of them here:
>> > > > >     https://momjian.us/pgsql_docs/release-14.html
>> > > > > I need clarification on many items, and the document still needs
>> > > its
>> > > > items properly ordered, and markup added.  I also expect a lot of
>> > > > feedback.
>> > > > > I plan to work on completing this document this coming week in
>> > > > preparation for beta next week.
>> > > 
>> > > While only a small change, this commit does affect user visible behavior and
>> > > so should probably be noted:
>> > > 
>> > > https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=b12bd4869b5e
>> > 
>> > I see your point.  Here is the release entry I added:
>> 
>> Not quite -- maybe something like the below:
>> 
>> >     <para>
>> >     Return false for has_column_privilege() checks on non-existent or dropped columns (Joe Conway)
>> 
>> Always return NULL for has_column_privilege() checks on non-existent or
>> dropped column by attnum (Joe Conway)
>> 
>> >     <para>
>> >     Previously such columns returned an invalid column error.
>> 
>> Previously existence of such columns were ignored when caller had table
>> level privileges.
> 
> I can't reproduce the NULL using column name text:

>     test=> SELECT has_column_privilege('test', 'z', 'SELECT');
>     ERROR:  column "z" of relation "test" does not exist

That is the way it is supposed to work when the column is specified by 
name. The patch did not change that in any way.

> but I was able to show it using attribute numbers, as you explained:

Yes, that was what the patch fixed.

Joe

-- 
Crunchy Data - http://crunchydata.com
PostgreSQL Support for Secure Enterprises
Consulting, Training, & Open Source Development



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 11, 2021 at 11:26:48AM -0400, Joe Conway wrote:
> On 5/11/21 11:11 AM, Bruce Momjian wrote:
> > > Previously existence of such columns were ignored when caller had table
> > > level privileges.
> > 
> > I can't reproduce the NULL using column name text:
> 
> >     test=> SELECT has_column_privilege('test', 'z', 'SELECT');
> >     ERROR:  column "z" of relation "test" does not exist
> 
> That is the way it is supposed to work when the column is specified by name.
> The patch did not change that in any way.

I am just confused why attribute numbers are handled differently than
attribute names.

> > but I was able to show it using attribute numbers, as you explained:
> 
> Yes, that was what the patch fixed.

Thanks.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Joe Conway
Date:
On 5/11/21 11:37 AM, Bruce Momjian wrote:
> On Tue, May 11, 2021 at 11:26:48AM -0400, Joe Conway wrote:
>> On 5/11/21 11:11 AM, Bruce Momjian wrote:
>> > > Previously existence of such columns were ignored when caller had table
>> > > level privileges.
>> > 
>> > I can't reproduce the NULL using column name text:
>> 
>> >     test=> SELECT has_column_privilege('test', 'z', 'SELECT');
>> >     ERROR:  column "z" of relation "test" does not exist
>> 
>> That is the way it is supposed to work when the column is specified by name.
>> The patch did not change that in any way.
> 
> I am just confused why attribute numbers are handled differently than
> attribute names.

I am not entirely sure, but that boat sailed a long time ago and really 
has nothing to do with this patch ;-)

This is the code comment that predates the patch but is the reason 
behind the change:

------------
/*
  * has_any_column_privilege variants
  *        These are all named "has_any_column_privilege" at the SQL level.
  *        They take various combinations of relation name, relation OID,
  *        user name, user OID, or implicit user = current_user.
  *
  *        The result is a boolean value: true if user has the indicated
  *        privilege for any column of the table, false if not.  The variants
  *        that take a relation OID return NULL if the OID doesn't exist.
  */
------------

The patch made that last sentence true in the corner cases.

Joe
-- 
Crunchy Data - http://crunchydata.com
PostgreSQL Support for Secure Enterprises
Consulting, Training, & Open Source Development



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 11, 2021 at 12:31:01PM -0400, Joe Conway wrote:
> On 5/11/21 11:37 AM, Bruce Momjian wrote:
> > On Tue, May 11, 2021 at 11:26:48AM -0400, Joe Conway wrote:
> > > On 5/11/21 11:11 AM, Bruce Momjian wrote:
> > > > > Previously existence of such columns were ignored when caller had table
> > > > > level privileges.
> > > > > I can't reproduce the NULL using column name text:
> > > 
> > > >     test=> SELECT has_column_privilege('test', 'z', 'SELECT');
> > > >     ERROR:  column "z" of relation "test" does not exist
> > > 
> > > That is the way it is supposed to work when the column is specified by name.
> > > The patch did not change that in any way.
> > 
> > I am just confused why attribute numbers are handled differently than
> > attribute names.
> 
> I am not entirely sure, but that boat sailed a long time ago and really has
> nothing to do with this patch ;-)

It just feels like this change makes the function's behavior less
consistent.
 
> This is the code comment that predates the patch but is the reason behind
> the change:
> 
> ------------
> /*
>  * has_any_column_privilege variants
>  *        These are all named "has_any_column_privilege" at the SQL level.
>  *        They take various combinations of relation name, relation OID,
>  *        user name, user OID, or implicit user = current_user.
>  *
>  *        The result is a boolean value: true if user has the indicated
>  *        privilege for any column of the table, false if not.  The variants
>  *        that take a relation OID return NULL if the OID doesn't exist.
>  */
> ------------
> 
> The patch made that last sentence true in the corner cases.

Well, the example I showed was for attribute numbers but relation names,
which isn't mentioned in this comment.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Joe Conway
Date:
On 5/11/21 1:30 PM, Bruce Momjian wrote:
> On Tue, May 11, 2021 at 12:31:01PM -0400, Joe Conway wrote:
>> On 5/11/21 11:37 AM, Bruce Momjian wrote:
>> > On Tue, May 11, 2021 at 11:26:48AM -0400, Joe Conway wrote:
>> > > On 5/11/21 11:11 AM, Bruce Momjian wrote:
>> > > > > Previously existence of such columns were ignored when caller had table
>> > > > > level privileges.
>> > > > > I can't reproduce the NULL using column name text:
>> > > 
>> > > >     test=> SELECT has_column_privilege('test', 'z', 'SELECT');
>> > > >     ERROR:  column "z" of relation "test" does not exist
>> > > 
>> > > That is the way it is supposed to work when the column is specified by name.
>> > > The patch did not change that in any way.
>> > 
>> > I am just confused why attribute numbers are handled differently than
>> > attribute names.
>> 
>> I am not entirely sure, but that boat sailed a long time ago and really has
>> nothing to do with this patch ;-)
> 
> It just feels like this change makes the function's behavior less
> consistent.

See Tom's commit message here:
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=3d0f68dd30612

In particular:

   "The variants of these functions that take
    numeric inputs (OIDs or column numbers) are
    supposed to return NULL rather than failing
    on bad input; this rule reduces problems with
    snapshot skew when queries apply the functions
    to all rows of a catalog."

Joe
-- 
Crunchy Data - http://crunchydata.com
PostgreSQL Support for Secure Enterprises
Consulting, Training, & Open Source Development



Re: PG 14 release notes, first draft

From
Tom Lane
Date:
Joe Conway <mail@joeconway.com> writes:
> On 5/11/21 1:30 PM, Bruce Momjian wrote:
>> It just feels like this change makes the function's behavior less
>> consistent.

> See Tom's commit message here:
> https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=3d0f68dd30612

> In particular:

>    "The variants of these functions that take
>     numeric inputs (OIDs or column numbers) are
>     supposed to return NULL rather than failing
>     on bad input; this rule reduces problems with
>     snapshot skew when queries apply the functions
>     to all rows of a catalog."

Yeah, the null-return-for-bad-numeric-input behavior is important.
Perhaps a case could be made for returning null for bad text
input too, but I don't recall that anybody has asked for that.

A case could also be made that changing the behavior on the text
side would break applications that expect the current behavior.
So I'm disinclined to make a wholesale change there, without more
evidence that it's a good idea.

            regards, tom lane



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 11, 2021 at 03:51:39PM -0400, Tom Lane wrote:
> Joe Conway <mail@joeconway.com> writes:
> > On 5/11/21 1:30 PM, Bruce Momjian wrote:
> >> It just feels like this change makes the function's behavior less
> >> consistent.
> 
> > See Tom's commit message here:
> > https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=3d0f68dd30612
> 
> > In particular:
> 
> >    "The variants of these functions that take
> >     numeric inputs (OIDs or column numbers) are
> >     supposed to return NULL rather than failing
> >     on bad input; this rule reduces problems with
> >     snapshot skew when queries apply the functions
> >     to all rows of a catalog."
> 
> Yeah, the null-return-for-bad-numeric-input behavior is important.
> Perhaps a case could be made for returning null for bad text
> input too, but I don't recall that anybody has asked for that.
> 
> A case could also be made that changing the behavior on the text
> side would break applications that expect the current behavior.
> So I'm disinclined to make a wholesale change there, without more
> evidence that it's a good idea.

OK, as long as we thought about this, I am fine.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 11, 2021 at 01:16:38PM +0300, Alexander Korotkov wrote:
> > OK, what symbols trigger this change?  Underscore?  What else?
> 
> Any symbol, which is recognized as a separator by full-text parser,
> but not tsquery parser.  Fulltext search is extensible and allowing
> pluggable parsers.  In principle, we could dig the exact set of
> symbols, but I'm not sure this worth the effort.
> 
> >  You are
> > saying the previous code allowed 'pg' and 'class' anywhere in the
> > string, while the new code requires them to be adjacent, which more
> > closely matches the pattern.
> 
> Yes, that's it.
> 
> > >  * Fix extra distance in phrase operators for quoted text in
> > > websearch_to_tsquery() (Alexander Korotkov)
> > > For example, websearch_to_tsquery('english', '"aaa: bbb"') becomes
> > > 'aaa <> bbb' instead of  'aaa <2> bbb'.
> >
> > So colon and space were considered to be two tokens between 'aaa' and
> > 'bbb', while is really only one because both tokens are discarded?  Is
> > this true of any discarded tokens, e.g. ''"aaa ?:, bbb"'?
> 
> Yes, that's true for any discarded tokens.

I can up with this text for these two items.  I think it still needs ro
be more specific:

    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-01-31 [0c4f355c6] Fix parsing of complex morphs to tsquery
    -->
    
    <para>
    Fix to_tsquery() and websearch_to_tsquery() to properly parse
    certain discarded tokens in quotes (Alexander Korotkov)
    </para>
    
    <para>
    Certain discarded tokens, like underscore, caused the output
    of these functions to produce incorrect tsquery output, e.g.,
    websearch_to_tsquery('"pg_class pg"') used to output '( pg &
    class ) <-> pg', but now outputs 'pg <-> class <-> pg'.
    </para>
    </listitem>
    
    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-05-03 [eb086056f] Make websearch_to_tsquery() parse text in quotes as a si
    -->
    
    <para>
    Fix websearch_to_tsquery() to properly parse multiple adjacent
    discarded tokens in quotes (Alexander Korotkov)
    </para>
    
    <para>
    Previously, quoted text that contained multiple adjacent discarded
    tokens were treated as multiple tokens, causing incorrect tsquery
    output, e.g., websearch_to_tsquery('"aaa: bbb"') used to output
    'aaa <2> bbb', but now    outputs 'aaa <-> bbb'.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 08:08:01AM -0700, Peter Geoghegan wrote:
> On Mon, May 10, 2021 at 7:00 AM Justin Pryzby <pryzby@telsasoft.com> wrote:
> > | Allow VACUUM VERBOSE to report page deletion counts for each scan of an index (Peter Geoghegan)
> >
> > I think "Allow" is wrong - should just say that VACUUM VERBOSE reports..
> 
> It's also not accurate, since the count of deleted pages was always
> shown by VACUUM VERBOSE (once per index scan). The new feature has us
> show pages deleted by the VACUUM that actually ran (not some earlier
> VACUUM) -- these are "newly deleted pages".
> 
> I don't think that this item is worth mentioning, though -- it's just
> a nice to have. If Bruce removes it from the release notes entirely I
> won't object.

OK, removed.  Additional debug output usually isn't important
mentioning --- when you need it, you will see it.

> In addition to the items that I commented on in my response to
> Matthias just now, I should point out the following item as worthy of
> inclusion:
> 
> 9dd963ae25 Recycle nbtree pages deleted during same VACUUM.
> 
> I suggest that this item be phrased more or less as follows:
> 
> "Allow VACUUM to eagerly place newly deleted B-Tree pages in the Free
> Space Map. Previously VACUUM could only place preexisting deleted
> pages in the Free Space Map for recycling."

So, previously it could only place pages that were deleted from the
previous vacuum on the free list?

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Tue, May 11, 2021 at 1:41 PM Bruce Momjian <bruce@momjian.us> wrote:
> > "Allow VACUUM to eagerly place newly deleted B-Tree pages in the Free
> > Space Map. Previously VACUUM could only place preexisting deleted
> > pages in the Free Space Map for recycling."
>
> So, previously it could only place pages that were deleted from the
> previous vacuum on the free list?

Yes, exactly -- that's how it worked, even though in general there was
no way to predict when the next VACUUM would be. Now VACUUM will
usually manage to do everything in the same VACUUM operation, starting
from deleting the index tuples that make the page empty, then deleting
the page, and finally putting the page in the FSM. Makes a big
difference when the workload has lots of page deletions, say due to
range deletions.

-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 11, 2021 at 09:26:36AM +0530, Amit Kapila wrote:
> On Mon, May 10, 2021 at 7:30 PM Justin Pryzby <pryzby@telsasoft.com> wrote:
> >
> > Can these be merged:
> >  Allow logical replication to stream long transactions to standbys (Dilip Kumar, Tomas Vondra, Amit Kapila, Nikhil
Sontakke)
> >  Improve the logical replication API to allow streaming large in-progress transactions (Tomas Vondra, Dilip Kumar,
AmitKapila)
 
> >
> 
> I think we should merge the below two:
> Add support for streaming to built-in logical replication (Vondra,
> Dilip Kumar, Amit Kapila, Ajin Cherian, Nikhil Sontakke, Stas Kelvich)
> 
> Allow logical replication to stream long transactions to standbys
> (Dilip Kumar, Tomas Vondra, Amit Kapila, Nikhil Sontakke)
> 
> and say something like:
> Allow logical replication to stream long in-progress transactions to standbys
> Previously transactions that exceeded logical_decoding_work_mem were
> written to disk until the transaction completed.

OK, updated as you suggested.

> Also, the commits that lead to the above feature is:
> 2020-09-03 [464824323] Add support for streaming to built-in logical replicatio
> 2020-08-08 [7259736a6] Implement streaming mode in ReorderBuffer.

Yes, these were already listed above that item.

> * Improve the logical replication API to allow streaming large
> in-progress transactions (Tomas Vondra, Dilip Kumar, Amit Kapila)
> The output functions begin with "stream". test_decoding also supports these.
> 
> In the above, I think it is better to say Enhance instead of Improve.

OK, word changed.

> * Add system view pg_stat_replication_slots to report replication slot
> activity (Sawada Masahiko, Amit Kapila)
> 
> I think for this item, we can give Vignesh C as author credit because
> he helped a lot enhance/stabilize this feature after the initial
> commit. See
> https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=f5fc2f5b23d1b1dff60f8ca5dc211161df47eda4
> https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=cca57c1d9bf7eeba5b81115e0b82651cf3d8e4ea
> https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=592f00f8dec68038301467a904ac514eddabf6cd

OK, I have added him:

    Add system view pg_stat_replication_slots to report replication slot
    activity (Sawada Masahiko, Amit Kapila, Vignesh C)

> * Allow multiple xacts during table sync in logical replication (Peter
> Smith, Amit Kapila, and Takamichi Osumi)
> 
> IMPORTANT?
> 
> Yes, this is a big enough improvement in the initial table sync
> mechanism of logical replication that it is worth mentioning in
> Release Notes. One of the main user-visible effects this commit can
> have is that it will reduce the time for which we need to hold WAL on
> the server during the initial table sync phase. Then it can avoid
> large copies in case there is any error during the time when
> apply-worker and tablesync-worker synchronizes the apply location.

OK, thanks.

> * Enable logical replication to handle two phase commits (Ajin Cherian)
> This is controlled via pg_create_logical_replication_slot().
> 
> We still haven't supported two-phase commits for built-in logical
> replication but we have exposed APIs for decoding plugins to achieve
> that. Using these APIs, we are planning to support it for built-in
> logical replication but that will be probably done in PG-15. So, I
> suggest we can modify it to something like:
> 
> * Enhance logical decoding APIs to handle two-phase commits
> This is controlled via pg_create_logical_replication_slot().

OK, updated as you suggested.

> Most of the work for this feature is done via commits:
> https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=a271a1b50e9bec07e2ef3a05e38e7285113e4ce6
> https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=0aa8a01d04c8fe200b7a106878eebc3d0af9105c
> 
> So, I think the author credit should be given to Ajin Cherian, Amit
> Kapila, Nikhil Sontakke, and Stas Kelvich

OK, the new item text is:

    <listitem>
    <!--
    Author: Amit Kapila <akapila@postgresql.org>
    2020-12-30 [0aa8a01d0] Extend the output plugin API to allow decoding of prepar
    Author: Amit Kapila <akapila@postgresql.org>
    2021-01-04 [a271a1b50] Allow decoding at prepare time in ReorderBuffer.
    Author: Amit Kapila <akapila@postgresql.org>
    2021-03-03 [19890a064] Add option to enable two_phase commits via pg_create_log
    -->
    
    <para>
    Enhance logical decoding APIs to handle two-phase commits (Ajin
    Cherian, Amit Kapila, Nikhil Sontakke, Stas Kelvich)
    </para>
    
    <para>
    This is controlled via pg_create_logical_replication_slot().
    </para>
    </listitem>

> * I think we should mention about commit:
> https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=d7eb52d7181d83cf2363570f7a205b8eb1008dbc
> 
> This allows Logical decoding to work efficiently in presence of a
> large amount of DDLs. This was a complaint from many users for long
> time. Apart from the discussion thread, see some of the earlier
> complaints:
> https://www.postgresql.org/message-id/flat/20f3de7675f83176253f607b5e199b228406c21c.camel@cybertec.at
> https://www.postgresql.org/message-id/flat/CAHoiPjzea6N0zuCi=+f9v_j94nfsy6y8SU7-=bp4=7qw6_i=Rg@mail.gmail.com
> 
> and most recently at:
>
https://www.postgresql.org/message-id/DB8PR10MB36126BC0DC3570637FDFED12EB4F9%40DB8PR10MB3612.EURPRD10.PROD.OUTLOOK.COM

OK, I added this:

    <listitem>
    <!--
    Author: Amit Kapila <akapila@postgresql.org>
    2020-10-15 [d7eb52d71] Execute invalidation messages for each XLOG_XACT_INVALID
    -->
    
    <para>
    Allow logical decoding to more efficently process cache invalidation messages
    </para>
    
    <para>
    This allows Logical decoding to work efficiently in presence of a large amount of DDL.
    </para>
    </listitem>

> * Speed truncation of small tables on large shared buffer servers (Kirk Jamison)
> 
> This optimization applies during recovery. Shouldn't we mention that
> in some way?

Yes, new text:

    Speed truncation of small tables during recovery on clusters with a
    large number of shared buffers (Kirk Jamison)

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 08:08:01AM -0700, Peter Geoghegan wrote:
> On Mon, May 10, 2021 at 7:00 AM Justin Pryzby <pryzby@telsasoft.com> wrote:
> > | Allow VACUUM VERBOSE to report page deletion counts for each scan of an index (Peter Geoghegan)
> >
> > I think "Allow" is wrong - should just say that VACUUM VERBOSE reports..
> 
> It's also not accurate, since the count of deleted pages was always
> shown by VACUUM VERBOSE (once per index scan). The new feature has us
> show pages deleted by the VACUUM that actually ran (not some earlier
> VACUUM) -- these are "newly deleted pages".
> 
> I don't think that this item is worth mentioning, though -- it's just
> a nice to have. If Bruce removes it from the release notes entirely I
> won't object.
> 
> In addition to the items that I commented on in my response to
> Matthias just now, I should point out the following item as worthy of
> inclusion:
> 
> 9dd963ae25 Recycle nbtree pages deleted during same VACUUM.
> 
> I suggest that this item be phrased more or less as follows:
> 
> "Allow VACUUM to eagerly place newly deleted B-Tree pages in the Free
> Space Map. Previously VACUUM could only place preexisting deleted
> pages in the Free Space Map for recycling."

OK, god it.  New text is:

    <listitem>
    <!--
    Author: Peter Geoghegan <pg@bowt.ie>
    2021-03-21 [9dd963ae2] Recycle nbtree pages deleted during same VACUUM.
    -->
    
    <para>
    Allow VACUUM to eagerly add newly deleted btree pages in the free
    space map (Peter Geoghegan)
    </para>
    
    <para>
    Previously VACUUM could only place preexisting deleted pages in
    the free space map.
    </para>
    </listitem>


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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 11, 2021 at 09:13:31AM -0400, Jonathan Katz wrote:
> First Bruce, thank you for compiling the release notes draft. Comments
> inline:
> 
> On 5/10/21 11:56 PM, Amit Kapila wrote:
> > On Mon, May 10, 2021 at 7:30 PM Justin Pryzby <pryzby@telsasoft.com> wrote:
> >>
> >> Can these be merged:
> >>  Allow logical replication to stream long transactions to standbys (Dilip Kumar, Tomas Vondra, Amit Kapila, Nikhil
Sontakke)
> >>  Improve the logical replication API to allow streaming large in-progress transactions (Tomas Vondra, Dilip Kumar,
AmitKapila)
 
> >>
> > 
> > I think we should merge the below two:
> > Add support for streaming to built-in logical replication (Vondra,
> > Dilip Kumar, Amit Kapila, Ajin Cherian, Nikhil Sontakke, Stas Kelvich)
> > 
> > Allow logical replication to stream long transactions to standbys
> > (Dilip Kumar, Tomas Vondra, Amit Kapila, Nikhil Sontakke)
> > 
> > and say something like:
> > Allow logical replication to stream long in-progress transactions to standbys
> > Previously transactions that exceeded logical_decoding_work_mem were
> > written to disk until the transaction completed.
> 
> I was going to post a question about the above bullet point(s), so this
> clarification helps -- thanks!
> 
> Two comments on the above:
> 
> 1. I do believe ther eis a missing "Tomas" in the first release note.

Yes, I saw that and fixed, thanks.

> 2. Would you want to s/standbys/subscribers/ given an instance can be in
> read/write mode but still receive logical changes? Or did this patch
> affect only subscribers that are also standbys?

I don't know.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 11, 2021 at 08:24:22AM -0500, Justin Pryzby wrote:
> I think these should be merged:
> 
> | Remove factorial operators ! and !! (Mark Dilger)
> | Add documentation for the factorial() function (Peter Eisentraut)
> 
> | This can be disabled by turning client options "sslsni" off. 
> 
> option (no ess)

Fixed.

> | Allow REINDEX to process all child tables and indexes of a partitioned table (Justin Pryzby, Michael Paquier) 
> 
> It should actually say "all child tables or indexes of a partitioned relation",
> since you can REINDEX INDEX partitioned_index.

OK, fixed, good point. I had not thought of indexes.

> | Add bit_xor XOR aggregate function (Alexey Bashtanov) 
> 
> Remove XOR ?

Uh, I thought XOR was describing the function, since the name might not
be clear.  No?

> | Remove support for postfix (right-unary) operators (Mark Dilger) 
> | pg_dump and pg_upgrade will warn if post-fix operators are being dumped. 
> 
> postfix not post-fix

Oops, fixed.  :-)

> | Remove temporary files after backend crashes (Euler Taveira) 
> 
> crash (singular)

Uh, I thought I would say "all crashes" here.

> | Increase warning time and hard limit before transaction id and multi-transaction wraparound (Noah Misch) 
> | This should reduce the number of failures without warning. 
> 
> I'd say: This should reduce the possibility of failures that occur without
> having issued warnings about wraparound.

OK, added, thanks.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
"Jonathan S. Katz"
Date:
On 5/11/21 5:12 PM, Bruce Momjian wrote:
> On Tue, May 11, 2021 at 09:13:31AM -0400, Jonathan Katz wrote:
>> First Bruce, thank you for compiling the release notes draft. Comments
>> inline:
>>
>> On 5/10/21 11:56 PM, Amit Kapila wrote:

>>> and say something like:
>>> Allow logical replication to stream long in-progress transactions to standbys
>>> Previously transactions that exceeded logical_decoding_work_mem were
>>> written to disk until the transaction completed.
>>
>
>> 2. Would you want to s/standbys/subscribers/ given an instance can be in
>> read/write mode but still receive logical changes? Or did this patch
>> affect only subscribers that are also standbys?
>
> I don't know.

That question was geared more towards Amit as he proposed the revised
text :)

Thanks,

Jonathan


Attachment

Re: PG 14 release notes, first draft

From
Alexander Korotkov
Date:
.On Tue, May 11, 2021 at 11:31 PM Bruce Momjian <bruce@momjian.us> wrote:
> On Tue, May 11, 2021 at 01:16:38PM +0300, Alexander Korotkov wrote:
> > > OK, what symbols trigger this change?  Underscore?  What else?
> >
> > Any symbol, which is recognized as a separator by full-text parser,
> > but not tsquery parser.  Fulltext search is extensible and allowing
> > pluggable parsers.  In principle, we could dig the exact set of
> > symbols, but I'm not sure this worth the effort.
> >
> > >  You are
> > > saying the previous code allowed 'pg' and 'class' anywhere in the
> > > string, while the new code requires them to be adjacent, which more
> > > closely matches the pattern.
> >
> > Yes, that's it.
> >
> > > >  * Fix extra distance in phrase operators for quoted text in
> > > > websearch_to_tsquery() (Alexander Korotkov)
> > > > For example, websearch_to_tsquery('english', '"aaa: bbb"') becomes
> > > > 'aaa <> bbb' instead of  'aaa <2> bbb'.
> > >
> > > So colon and space were considered to be two tokens between 'aaa' and
> > > 'bbb', while is really only one because both tokens are discarded?  Is
> > > this true of any discarded tokens, e.g. ''"aaa ?:, bbb"'?
> >
> > Yes, that's true for any discarded tokens.
>
> I can up with this text for these two items.  I think it still needs ro
> be more specific:
>
>         <listitem>
>         <!--
>         Author: Alexander Korotkov <akorotkov@postgresql.org>
>         2021-01-31 [0c4f355c6] Fix parsing of complex morphs to tsquery
>         -->
>
>         <para>
>         Fix to_tsquery() and websearch_to_tsquery() to properly parse
>         certain discarded tokens in quotes (Alexander Korotkov)
>         </para>

This relates not just to quotes.  Original problem relates to quotes
in websearch_to_tsquery() and phrase operator in to_tsquery().  But
the solution changes output for all query operands containing
discarded tokens.

Could we try this?

Make to_tsquery() and websearch_to_tsquery() produce more strict
output for query parts containing discarded tokens.  In particular,
this makes to_tsquery() and websearch_to_tsquery() properly parse the
discarded tokens in phrase search operands and quotes correspondingly.

>         <para>
>         Certain discarded tokens, like underscore, caused the output
>         of these functions to produce incorrect tsquery output, e.g.,
>         websearch_to_tsquery('"pg_class pg"') used to output '( pg &
>         class ) <-> pg', but now outputs 'pg <-> class <-> pg'.
>         </para>
>         </listitem>

This part looks good to me.  I'd just suggest to extend the example to
to_tsquery() as well.

Certain discarded tokens, like underscore, caused the output of these
functions to produce incorrect tsquery output, e.g., both
websearch_to_tsquery('"pg_class pg"') and to_tsquery('pg_class <->
pg') used to output '( pg & class ) <-> pg', but now both output 'pg
<-> class <-> pg'.

>         <listitem>
>         <!--
>         Author: Alexander Korotkov <akorotkov@postgresql.org>
>         2021-05-03 [eb086056f] Make websearch_to_tsquery() parse text in quotes as a si
>         -->
>
>         <para>
>         Fix websearch_to_tsquery() to properly parse multiple adjacent
>         discarded tokens in quotes (Alexander Korotkov)
>         </para>
>
>         <para>
>         Previously, quoted text that contained multiple adjacent discarded
>         tokens were treated as multiple tokens, causing incorrect tsquery
>         output, e.g., websearch_to_tsquery('"aaa: bbb"') used to output
>         'aaa <2> bbb', but now  outputs 'aaa <-> bbb'.
>         </para>
>         </listitem>

This item looks good to me.

------
Regards,
Alexander Korotkov



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
Thanks you for the review.  I did skip these items based on the criteria
I normally use, but it is good for people to review this list to see if
my analysis or criteria is wrong.

---------------------------------------------------------------------------

On Mon, May 10, 2021 at 09:40:45AM -0500, Justin Pryzby wrote:
> Same as the last couple years, I checked for missing items in the release
> notes, running something like this.
> 
> git log --cherry-pick --oneline origin/REL_13_STABLE...origin/master
> 
> Should any of these be included?
> 
> f82de5c46b Do COPY FROM encoding conversion/verification in larger chunks.
> 9e596b65f4 Add "LP_DEAD item?" column to GiST pageinspect functions
> 
> 10a5b35a00 Report resource usage at the end of recovery
> 7e453634bb Add additional information in the vacuum error context.
> 1ea396362b Improve logging of bad parameter values in BIND messages.
> 
> 86dc90056d Rework planning and execution of UPDATE and DELETE.
> a1115fa078 Postpone some more stuff out of ExecInitModifyTable.
> c5b7ba4e67 Postpone some stuff out of ExecInitModifyTable.
> 
> 7db0cd2145 Set PD_ALL_VISIBLE and visibility map bits in COPY FREEZE
> 01e658fa74 Hash support for row types
> a929e17e5a Allow run-time pruning on nested Append/MergeAppend nodes
> 8c15a29745 Allow ALTER TYPE to update an existing type's typsubscript value.
> c7aba7c14e Support subscripting of arbitrary types, not only arrays.
> 
> 7b94e99960 Remove catalog function currtid()
> 926fa801ac Remove undocumented IS [NOT] OF syntax.
> cd9c1b3e19 Rename PGPROC->vacuumFlags to statusFlags
> a04daa97a4 Remove es_result_relation_info from EState.
> 
> 3d351d916b Redefine pg_class.reltuples to be -1 before the first VACUUM or ANALYZE.
> fea10a6434 Rename VariableCacheData.nextFullXid to nextXid.
> 9de9294b0c Stop archive recovery if WAL generated with wal_level=minimal is found. (see also 15251c0a6)
> 
> f40c6969d0 Routine usage information schema tables
> 
> b4af70cb21 Simplify state managed by VACUUM.
> 4753ef37e0 Use a WaitLatch for vacuum/autovacuum sleeping
> 9dd963ae25 Recycle nbtree pages deleted during same VACUUM.
> 3c3b8a4b26 Truncate line pointer array during VACUUM.
> 
> ad1c36b070 Fix foreign-key selectivity estimation in the presence of constants.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 11, 2021 at 11:57:10AM +0900, Amit Langote wrote:
> On Mon, May 10, 2021 at 11:40 PM Justin Pryzby <pryzby@telsasoft.com> wrote:
> > Same as the last couple years, I checked for missing items in the release
> > notes, running something like this.
> >
> > git log --cherry-pick --oneline origin/REL_13_STABLE...origin/master
> >
> > Should any of these be included?
> >
> > 86dc90056d Rework planning and execution of UPDATE and DELETE.
> > a1115fa078 Postpone some more stuff out of ExecInitModifyTable.
> > c5b7ba4e67 Postpone some stuff out of ExecInitModifyTable.
> 
> I was just about to ask Bruce what he thinks about these.
> 
> To clarify, the first one is a big refactoring commit that allowed us
> to get rid of inheritance_planner(), a fairly inefficient way of
> planning updates/deletes on partitioned tables, especially when many
> partitions remain after pruning (or when pruning cannot be used).  One
> may see the performance of update/deletes, especially on partitioned
> tables, to be generally improved as a result of this commit, but maybe
> not as significantly as to be mentioned in E.1.3.1.1. Partitioning or
> even E.1.3.1.4. General Performance.  However, one user-visible
> feature that came out of this work is that updates/deletes can now use
> run-time pruning whereas they couldn't before.  Maybe that ought to be
> mentioned.  (This reminds me to send a patch to remove the note from
> 5.11.4. Partition Pruning that says that runtime pruning cannot be
> used for update/delete).
> 
> The other two commits can lead to improved performance of
> update/deletes when there are many unpruned partitions in the plan,
> but runtime pruning (a new feature as mentioned above) leads to only
> one or few partitions to actually be updated/deleted from.  I admit
> though that the cases for which performance has been improved still
> under-perform the cases that already performed better starting in v12,
> that is, the cases where the planner itself is able to trim down the
> plan to contain one or few partitions, so maybe nothing very big to
> see here just yet.  You may want to take a look at the benchmark
> results I had posted here:
> https://www.postgresql.org/message-id/CA%2BHiwqEcawatEaUh1uTbZMEZTJeLzbroRTz9_X9Z5CFjTWJkhw%40mail.gmail.com

Seems we might want to have a general release note item that mentions
improved update/delete performance for partitioned tables, yes?  I think
the run-time pruning and single-parition pullup are significant.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 07:53:08AM -0700, Peter Geoghegan wrote:
> On Sun, May 9, 2021 at 11:03 PM Bruce Momjian <bruce@momjian.us> wrote:
> > I have committed the first draft of the PG 14 release notes.
> 
> This definitely isn't necessary, since the commit in question was a
> totally mechanical thing that cleaned up a minor inconsistency:
> 
> Initialize work_mem and maintenance_work_mem using current guc.c
> default (Peter Geoghegan)
> 
> Oversight in commit 848ae330a49, which increased the previous defaults
> for work_mem and maintenance_work_mem by 4X. IS THIS A BEHAVIORAL
> CHANGE?

OK, that's what I thought --- removed.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Alvaro Herrera
Date:
On 2021-May-11, Bruce Momjian wrote:

> > 86dc90056d Rework planning and execution of UPDATE and DELETE.
> > a1115fa078 Postpone some more stuff out of ExecInitModifyTable.
> > c5b7ba4e67 Postpone some stuff out of ExecInitModifyTable.

Are these the set that means UPDATE/DELETE can now do partition pruning?
I think that's a significant improvement, because table partitioning
becomes usable in situations where it previously wasn't, so let's
mention it.

> > c7aba7c14e Support subscripting of arbitrary types, not only arrays.

There's an entry that says we allow subscripting of jsonb, but the
feature is more general than that: our subscripting is now extensible,
and jsonb is just the first implementation. I think this should be
mentioned.

> > f40c6969d0 Routine usage information schema tables

This is one small step towards compliance, I think, so it should be
mentioned.

-- 
Álvaro Herrera                            39°49'30"S 73°17'W



Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
On Tue, May 11, 2021 at 10:35:23AM -0400, Bruce Momjian wrote:
> > | Allow more than the common name (CN) to be matched for client certificate authentication (Andrew Dunstan) 
> > Your description makes it sound like arbitrary attributes can be compared.  But
> > the option just allows comparing CN or DN.
> 
> OK, new text is:
> 
>     <para>
>     Allow the certificate's distinguished name (DN) to be matched for client
>     certificate authentication (Andrew Dunstan)
>     </para>
>     
>     <para>
>     The new pg_hba.conf keyword "clientname=DN" allows comparison with
>     non-CN certificate attributes and can be combined with ident maps.
>     </para>
>     </listitem>

I think this part is still misleading.  The option just allows DN/CN, so it's
strange to say "non-CN attributes".

> > | Add date_bin function (John Naylor) 
> > This truncate timestamps on an arbitrary interval.
> > Like date_trunc() but also supports eg. '15 minutes', and also uses an arbitrary "origin".
> 
> OK, so what I think it returns is the greatest datetime that is a
> multiple of interval values added to origin which is not greater than
> the target date, right?  Am I the only one who finds this unclear? 
> Doesn't our documentation of this feature need to explain this?

I think the documentation is okay, myself:
https://www.postgresql.org/docs/devel/functions-datetime.html#FUNCTIONS-DATETIME-BIN
| The function date_bin “bins” the input timestamp into the specified interval (the stride)...

Anyway, the release notes have to be at least as succiently as that.

+Allow VACUUM to eagerly add newly deleted btree pages in the free space map (Peter Geoghegan)

say added "to" the FSM

-- 
Justin



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Wed, May 12, 2021 at 12:19:37AM +0300, Alexander Korotkov wrote:
> This relates not just to quotes.  Original problem relates to quotes
> in websearch_to_tsquery() and phrase operator in to_tsquery().  But
> the solution changes output for all query operands containing
> discarded tokens.
> 
> Could we try this?
> 
> Make to_tsquery() and websearch_to_tsquery() produce more strict
> output for query parts containing discarded tokens.  In particular,
> this makes to_tsquery() and websearch_to_tsquery() properly parse the
> discarded tokens in phrase search operands and quotes correspondingly.

> >         <para>
> >         Certain discarded tokens, like underscore, caused the output
> >         of these functions to produce incorrect tsquery output, e.g.,
> >         websearch_to_tsquery('"pg_class pg"') used to output '( pg &
> >         class ) <-> pg', but now outputs 'pg <-> class <-> pg'.
> >         </para>
> >         </listitem>
> 
> This part looks good to me.  I'd just suggest to extend the example to
> to_tsquery() as well.
> 
> Certain discarded tokens, like underscore, caused the output of these
> functions to produce incorrect tsquery output, e.g., both
> websearch_to_tsquery('"pg_class pg"') and to_tsquery('pg_class <->
> pg') used to output '( pg & class ) <-> pg', but now both output 'pg
> <-> class <-> pg'.

OK, I went with this:

    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-01-31 [0c4f355c6] Fix parsing of complex morphs to tsquery
    -->
    
    <para>
    Fix to_tsquery() and websearch_to_tsquery() to properly parse
    query text containing discarded tokens (Alexander Korotkov)
    </para>
    
    <para>
    Certain discarded tokens, like underscore, caused the output of
    these functions to produce incorrect tsquery output, e.g., both
    websearch_to_tsquery('"pg_class pg"') and to_tsquery('pg_class
    <-> pg') used to output '( pg & class ) <-> pg',
    but now both output 'pg <-> class <-> pg'.
    </para>
    </listitem>

> >         <listitem>
> >         <!--
> >         Author: Alexander Korotkov <akorotkov@postgresql.org>
> >         2021-05-03 [eb086056f] Make websearch_to_tsquery() parse text in quotes as a si
> >         -->
> >
> >         <para>
> >         Fix websearch_to_tsquery() to properly parse multiple adjacent
> >         discarded tokens in quotes (Alexander Korotkov)
> >         </para>
> >
> >         <para>
> >         Previously, quoted text that contained multiple adjacent discarded
> >         tokens were treated as multiple tokens, causing incorrect tsquery
> >         output, e.g., websearch_to_tsquery('"aaa: bbb"') used to output
> >         'aaa <2> bbb', but now  outputs 'aaa <-> bbb'.
> >         </para>
> >         </listitem>
> 
> This item looks good to me.

Good, thanks.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 11, 2021 at 05:13:21PM -0500, Justin Pryzby wrote:
> On Tue, May 11, 2021 at 10:35:23AM -0400, Bruce Momjian wrote:
> > > | Allow more than the common name (CN) to be matched for client certificate authentication (Andrew Dunstan) 
> > > Your description makes it sound like arbitrary attributes can be compared.  But
> > > the option just allows comparing CN or DN.
> > 
> > OK, new text is:
> > 
> >     <para>
> >     Allow the certificate's distinguished name (DN) to be matched for client
> >     certificate authentication (Andrew Dunstan)
> >     </para>
> >     
> >     <para>
> >     The new pg_hba.conf keyword "clientname=DN" allows comparison with
> >     non-CN certificate attributes and can be combined with ident maps.
> >     </para>
> >     </listitem>
> 
> I think this part is still misleading.  The option just allows DN/CN, so it's
> strange to say "non-CN attributes".

OK, so this is where I am confused.  I searched for distinguished name
(DN) and came up with DN being a concatentation of all the fields
provided to the certificate signing request (CSR).  Is that right? 
Wouldn't people test _parts_ of the DN, rather than all of it.  The test
in the patch seems to do that:

+     "# MAPNAME       SYSTEM-USERNAME                           PG-USERNAME\n",
+     "dn             \"CN=ssltestuser-dn,OU=Testing,OU=Engineering,O=PGDG\"    ssltestuser\n",
+     "dnre           \"/^.*OU=Testing,.*\$\"                    ssltestuser\n",
+     "cn              ssltestuser-dn                            ssltestuser\n";

I think someone need to explain to me exactly what the DN is and how it
is used.  Sorry.

> > > | Add date_bin function (John Naylor) 
> > > This truncate timestamps on an arbitrary interval.
> > > Like date_trunc() but also supports eg. '15 minutes', and also uses an arbitrary "origin".
> > 
> > OK, so what I think it returns is the greatest datetime that is a
> > multiple of interval values added to origin which is not greater than
> > the target date, right?  Am I the only one who finds this unclear? 
> > Doesn't our documentation of this feature need to explain this?
> 
> I think the documentation is okay, myself:
> https://www.postgresql.org/docs/devel/functions-datetime.html#FUNCTIONS-DATETIME-BIN
> | The function date_bin “bins” the input timestamp into the specified interval (the stride)...

OK, if everyone else is happy with it, I am fine.  I now have:

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2021-03-24 [49ab61f0b] Add date_bin function
    Author: Peter Eisentraut <peter@eisentraut.org>
    2021-04-10 [496e58bb0] Improve behavior of date_bin with origin in the
    future
    -->
    
    <para>
    Add date_bin function (John Naylor)
    </para>
    
    <para>
    The function date_bin "bins" the input timestamp into a specified
    interval aligned with a specified origin.
    </para>
    </listitem>

> Anyway, the release notes have to be at least as succiently as that.
> 
> +Allow VACUUM to eagerly add newly deleted btree pages in the free space map (Peter Geoghegan)
> 
> say added "to" the FSM

Yes, fixed.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Amit Kapila
Date:
On Tue, May 11, 2021 at 6:43 PM Jonathan S. Katz <jkatz@postgresql.org> wrote:
>
> First Bruce, thank you for compiling the release notes draft. Comments
> inline:
>
> On 5/10/21 11:56 PM, Amit Kapila wrote:
> > On Mon, May 10, 2021 at 7:30 PM Justin Pryzby <pryzby@telsasoft.com> wrote:
> >>
> >> Can these be merged:
> >>  Allow logical replication to stream long transactions to standbys (Dilip Kumar, Tomas Vondra, Amit Kapila, Nikhil
Sontakke)
> >>  Improve the logical replication API to allow streaming large in-progress transactions (Tomas Vondra, Dilip Kumar,
AmitKapila)
 
> >>
> >
> > I think we should merge the below two:
> > Add support for streaming to built-in logical replication (Vondra,
> > Dilip Kumar, Amit Kapila, Ajin Cherian, Nikhil Sontakke, Stas Kelvich)
> >
> > Allow logical replication to stream long transactions to standbys
> > (Dilip Kumar, Tomas Vondra, Amit Kapila, Nikhil Sontakke)
> >
> > and say something like:
> > Allow logical replication to stream long in-progress transactions to standbys
> > Previously transactions that exceeded logical_decoding_work_mem were
> > written to disk until the transaction completed.
>
> I was going to post a question about the above bullet point(s), so this
> clarification helps -- thanks!
>
> Two comments on the above:
>
> 1. I do believe ther eis a missing "Tomas" in the first release note.
> 2. Would you want to s/standbys/subscribers/ given an instance can be in
> read/write mode but still receive logical changes?
>

Right, that makes sense to me.

-- 
With Regards,
Amit Kapila.



Re: PG 14 release notes, first draft

From
Amit Kapila
Date:
On Wed, May 12, 2021 at 2:36 AM Bruce Momjian <bruce@momjian.us> wrote:
>
>
> OK, I added this:
>
>         <listitem>
>         <!--
>         Author: Amit Kapila <akapila@postgresql.org>
>         2020-10-15 [d7eb52d71] Execute invalidation messages for each XLOG_XACT_INVALID
>         -->
>
>         <para>
>         Allow logical decoding to more efficently process cache invalidation messages
>         </para>
>
>         <para>
>         This allows Logical decoding to work efficiently in presence of a large amount of DDL.
>         </para>
>         </listitem>
>

Dilip Kumar is the primary author of this work.

Thanks for all the updates.

-- 
With Regards,
Amit Kapila.



Re: PG 14 release notes, first draft

From
Amit Langote
Date:
On Wed, May 12, 2021 at 6:23 AM Bruce Momjian <bruce@momjian.us> wrote:
> On Tue, May 11, 2021 at 11:57:10AM +0900, Amit Langote wrote:
> > On Mon, May 10, 2021 at 11:40 PM Justin Pryzby <pryzby@telsasoft.com> wrote:
> > > Same as the last couple years, I checked for missing items in the release
> > > notes, running something like this.
> > >
> > > git log --cherry-pick --oneline origin/REL_13_STABLE...origin/master
> > >
> > > Should any of these be included?
> > >
> > > 86dc90056d Rework planning and execution of UPDATE and DELETE.
> > > a1115fa078 Postpone some more stuff out of ExecInitModifyTable.
> > > c5b7ba4e67 Postpone some stuff out of ExecInitModifyTable.
> >
> > I was just about to ask Bruce what he thinks about these.
> >
> > To clarify, the first one is a big refactoring commit that allowed us
> > to get rid of inheritance_planner(), a fairly inefficient way of
> > planning updates/deletes on partitioned tables, especially when many
> > partitions remain after pruning (or when pruning cannot be used).  One
> > may see the performance of update/deletes, especially on partitioned
> > tables, to be generally improved as a result of this commit, but maybe
> > not as significantly as to be mentioned in E.1.3.1.1. Partitioning or
> > even E.1.3.1.4. General Performance.  However, one user-visible
> > feature that came out of this work is that updates/deletes can now use
> > run-time pruning whereas they couldn't before.  Maybe that ought to be
> > mentioned.  (This reminds me to send a patch to remove the note from
> > 5.11.4. Partition Pruning that says that runtime pruning cannot be
> > used for update/delete).
> >
> > The other two commits can lead to improved performance of
> > update/deletes when there are many unpruned partitions in the plan,
> > but runtime pruning (a new feature as mentioned above) leads to only
> > one or few partitions to actually be updated/deleted from.  I admit
> > though that the cases for which performance has been improved still
> > under-perform the cases that already performed better starting in v12,
> > that is, the cases where the planner itself is able to trim down the
> > plan to contain one or few partitions, so maybe nothing very big to
> > see here just yet.  You may want to take a look at the benchmark
> > results I had posted here:
> > https://www.postgresql.org/message-id/CA%2BHiwqEcawatEaUh1uTbZMEZTJeLzbroRTz9_X9Z5CFjTWJkhw%40mail.gmail.com
>
> Seems we might want to have a general release note item that mentions
> improved update/delete performance for partitioned tables, yes?

Yes, that would not be entirely wrong.

The cases that benefit more from these commits are those where the
planner is not able to prune many (or any) partitions, such as, for
example, if a generic plan is chosen for prepared update/delete
queries.  The cases where the planner *is* able to prune most
partitions should run faster with v14 but only marginally; that case
was already extensively improved by the work done in v12 release.

>  I think
> the run-time pruning and single-parition pullup are significant.

Assuming, by "single-partition pullup", you mean run-time pruning now
allows the executor to touch only one affected partition out of the
many contained in a update/delete plan, then yes, that's new in v14.

--
Amit Langote
EDB: http://www.enterprisedb.com



Re: PG 14 release notes, first draft

From
Amit Langote
Date:
On Wed, May 12, 2021 at 6:47 AM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:
> On 2021-May-11, Bruce Momjian wrote:
>
> > > 86dc90056d Rework planning and execution of UPDATE and DELETE.
> > > a1115fa078 Postpone some more stuff out of ExecInitModifyTable.
> > > c5b7ba4e67 Postpone some stuff out of ExecInitModifyTable.
>
> Are these the set that means UPDATE/DELETE can now do partition pruning?
> I think that's a significant improvement, because table partitioning
> becomes usable in situations where it previously wasn't, so let's
> mention it.

Thanks.  To be clear, update/delete can now do *run-time* partition
pruning, while plan-time pruning has already been working since v12
(commit 428b260f87).  How?  The plan for update/delete now looks very
similar to that for an equivalent select query -- Append/MergeAppend
to scan partitions, with ModifyTable on top to do the actual
update/delete -- and because Append/MergeAppend nodes carry run-time
pruning info, update/delete now get that ability.

-- 
Amit Langote
EDB: http://www.enterprisedb.com



Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
On Tue, May 11, 2021 at 10:45:04PM -0400, Bruce Momjian wrote:
> On Tue, May 11, 2021 at 05:13:21PM -0500, Justin Pryzby wrote:
> > On Tue, May 11, 2021 at 10:35:23AM -0400, Bruce Momjian wrote:
> > > > | Allow more than the common name (CN) to be matched for client certificate authentication (Andrew Dunstan) 
> > > > Your description makes it sound like arbitrary attributes can be compared.  But
> > > > the option just allows comparing CN or DN.
> > > 
> > > OK, new text is:
> > > 
> > >     <para>
> > >     Allow the certificate's distinguished name (DN) to be matched for client
> > >     certificate authentication (Andrew Dunstan)
> > >     </para>
> > >     
> > >     <para>
> > >     The new pg_hba.conf keyword "clientname=DN" allows comparison with
> > >     non-CN certificate attributes and can be combined with ident maps.
> > >     </para>
> > >     </listitem>
> > 
> > I think this part is still misleading.  The option just allows DN/CN, so it's
> > strange to say "non-CN attributes".
> 
> OK, so this is where I am confused.  I searched for distinguished name
> (DN) and came up with DN being a concatentation of all the fields
> provided to the certificate signing request (CSR).  Is that right? 
> Wouldn't people test _parts_ of the DN, rather than all of it.

+Andrew

The full DN is probably not the postgres username, so the docs suggest that:
| This option is probably best used in conjunction with a username map.

You're right that clientname=DN allows testing *parts*, of the DN, but I don't
know if there's any reason to believe that's the typical use case.

The primary utility of clientname=DN seems to be that the CN alone is (or can
be) ambiguous - matching on the full DN is intended to resolve that.  I think
the release notes should focus on this.

Matching parts of the DN (other than the CN) seems like a 2ndary use.

Maybe a variation on your original words is better.
| Allow the distinguished name (DN) to be matched for client certificate authentication (Andrew Dunstan) 
| Previously, matching was done only the common name (DN).
| With a username map, the DN can be matched in full or in part.

> The test in the patch seems to do that:
> 
> +     "# MAPNAME       SYSTEM-USERNAME                           PG-USERNAME\n",
> +     "dn             \"CN=ssltestuser-dn,OU=Testing,OU=Engineering,O=PGDG\"    ssltestuser\n",
> +     "dnre           \"/^.*OU=Testing,.*\$\"                    ssltestuser\n",
> +     "cn              ssltestuser-dn                            ssltestuser\n";
> 
> I think someone need to explain to me exactly what the DN is and how it
> is used.  Sorry.

-- 
Justin



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Wed, May 12, 2021 at 09:15:55AM +0530, Amit Kapila wrote:
> On Tue, May 11, 2021 at 6:43 PM Jonathan S. Katz <jkatz@postgresql.org> wrote:
> > I was going to post a question about the above bullet point(s), so this
> > clarification helps -- thanks!
> >
> > Two comments on the above:
> >
> > 1. I do believe ther eis a missing "Tomas" in the first release note.
> > 2. Would you want to s/standbys/subscribers/ given an instance can be in
> > read/write mode but still receive logical changes?
> >
> 
> Right, that makes sense to me.

Change made.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Wed, May 12, 2021 at 09:18:27AM +0530, Amit Kapila wrote:
> On Wed, May 12, 2021 at 2:36 AM Bruce Momjian <bruce@momjian.us> wrote:
> >
> >
> > OK, I added this:
> >
> >         <listitem>
> >         <!--
> >         Author: Amit Kapila <akapila@postgresql.org>
> >         2020-10-15 [d7eb52d71] Execute invalidation messages for each XLOG_XACT_INVALID
> >         -->
> >
> >         <para>
> >         Allow logical decoding to more efficently process cache invalidation messages
> >         </para>
> >
> >         <para>
> >         This allows Logical decoding to work efficiently in presence of a large amount of DDL.
> >         </para>
> >         </listitem>
> >
> 
> Dilip Kumar is the primary author of this work.
> 
> Thanks for all the updates.

Thanks, added.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Wed, May 12, 2021 at 10:06:05AM -0500, Justin Pryzby wrote:
> On Tue, May 11, 2021 at 10:45:04PM -0400, Bruce Momjian wrote:
> > OK, so this is where I am confused.  I searched for distinguished name
> > (DN) and came up with DN being a concatentation of all the fields
> > provided to the certificate signing request (CSR).  Is that right? 
> > Wouldn't people test _parts_ of the DN, rather than all of it.
> 
> +Andrew
> 
> The full DN is probably not the postgres username, so the docs suggest that:
> | This option is probably best used in conjunction with a username map.
> 
> You're right that clientname=DN allows testing *parts*, of the DN, but I don't
> know if there's any reason to believe that's the typical use case.
> 
> The primary utility of clientname=DN seems to be that the CN alone is (or can
> be) ambiguous - matching on the full DN is intended to resolve that.  I think
> the release notes should focus on this.

OK, that matches what I thought.  Here is my updated version:

    <listitem>
    <!--
    Author: Andrew Dunstan <andrew@dunslane.net>
    2021-03-29 [6d7a6feac] Allow matching the DN of a client certificate for
    authen
    -->
    
    <para>
    Allow the certificate's distinguished name (DN) to be matched for client
    certificate authentication (Andrew Dunstan)
    </para>
    
    <para>
-->    The new pg_hba.conf keyword "clientname=DN" allows comparison with
-->    certificate attributes beyond the CN and can be combined with ident
-->    maps.
    </para>
    </listitem>

Technically these are attributes of the certificate signing request
(CSR), but I didn't want to mention that here.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 11, 2021 at 11:57:10AM +0900, Amit Langote wrote:
> On Mon, May 10, 2021 at 11:40 PM Justin Pryzby <pryzby@telsasoft.com> wrote:
> > 86dc90056d Rework planning and execution of UPDATE and DELETE.
> > a1115fa078 Postpone some more stuff out of ExecInitModifyTable.
> > c5b7ba4e67 Postpone some stuff out of ExecInitModifyTable.
> 
> I was just about to ask Bruce what he thinks about these.
> 
> To clarify, the first one is a big refactoring commit that allowed us
> to get rid of inheritance_planner(), a fairly inefficient way of
> planning updates/deletes on partitioned tables, especially when many
> partitions remain after pruning (or when pruning cannot be used).  One
> may see the performance of update/deletes, especially on partitioned
> tables, to be generally improved as a result of this commit, but maybe
> not as significantly as to be mentioned in E.1.3.1.1. Partitioning or
> even E.1.3.1.4. General Performance.  However, one user-visible
> feature that came out of this work is that updates/deletes can now use
> run-time pruning whereas they couldn't before.  Maybe that ought to be
> mentioned.  (This reminds me to send a patch to remove the note from
> 5.11.4. Partition Pruning that says that runtime pruning cannot be
> used for update/delete).
> 
> The other two commits can lead to improved performance of
> update/deletes when there are many unpruned partitions in the plan,
> but runtime pruning (a new feature as mentioned above) leads to only
> one or few partitions to actually be updated/deleted from.  I admit
> though that the cases for which performance has been improved still
> under-perform the cases that already performed better starting in v12,
> that is, the cases where the planner itself is able to trim down the
> plan to contain one or few partitions, so maybe nothing very big to
> see here just yet.  You may want to take a look at the benchmark
> results I had posted here:
> https://www.postgresql.org/message-id/CA%2BHiwqEcawatEaUh1uTbZMEZTJeLzbroRTz9_X9Z5CFjTWJkhw%40mail.gmail.com

OK, I added this entry:

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2021-03-31 [86dc90056] Rework planning and execution of UPDATE and DELETE.
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2021-04-06 [a1115fa07] Postpone some more stuff out of ExecInitModifyTable.
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2021-04-06 [c5b7ba4e6] Postpone some stuff out of ExecInitModifyTable.
    -->
    
    <para>
    Improve the performance of updates/deletes on partitioned tables
    when only a few partitions are affected (Amit Langote, Tom Lane)
    </para>
    
    <para>
    This also allows run-time pruning of updates/deletes on partitioned
    tables.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 11, 2021 at 05:47:27PM -0400, Álvaro Herrera wrote:
> On 2021-May-11, Bruce Momjian wrote:
> 
> > > 86dc90056d Rework planning and execution of UPDATE and DELETE.
> > > a1115fa078 Postpone some more stuff out of ExecInitModifyTable.
> > > c5b7ba4e67 Postpone some stuff out of ExecInitModifyTable.
> 
> Are these the set that means UPDATE/DELETE can now do partition pruning?
> I think that's a significant improvement, because table partitioning
> becomes usable in situations where it previously wasn't, so let's
> mention it.
> 
> > > c7aba7c14e Support subscripting of arbitrary types, not only arrays.
> 
> There's an entry that says we allow subscripting of jsonb, but the
> feature is more general than that: our subscripting is now extensible,
> and jsonb is just the first implementation. I think this should be
> mentioned.

OK, I added it into the existing entry:

    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-01-31 [676887a3b] Implementation of subscripting for jsonb
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-01-31 [81fcc72e6] Filling array gaps during jsonb subscripting
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-01-31 [aa6e46daf] Throw error when assigning jsonb scalar instead of a com
    -->
    
    <para>
    Allow subscripting of jsonb (Dmitry Dolgov)
    </para>
    
    <para>
    Subscripting can be used to extract from and assign to jsonb documents.
    Subscripting is now extensible so extensions and built-in data type can make use of this.
    </para>
    </listitem>

> > > f40c6969d0 Routine usage information schema tables
> 
> This is one small step towards compliance, I think, so it should be
> mentioned.

I added this item:

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2021-02-17 [f40c6969d] Routine usage information schema tables
    -->
    
    <para>
    Implement information schema view routine_column_usage to track columns
    referenced by function and procedure default expressions (Peter Eisentraut)
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Alvaro Herrera
Date:
On 2021-May-12, Bruce Momjian wrote:

> OK, I added it into the existing entry:
> 
>     <listitem>
>     <!--
>     Author: Alexander Korotkov <akorotkov@postgresql.org>
>     2021-01-31 [676887a3b] Implementation of subscripting for jsonb
>     Author: Alexander Korotkov <akorotkov@postgresql.org>
>     2021-01-31 [81fcc72e6] Filling array gaps during jsonb subscripting
>     Author: Alexander Korotkov <akorotkov@postgresql.org>
>     2021-01-31 [aa6e46daf] Throw error when assigning jsonb scalar instead of a com
>     -->
>     
>     <para>
>     Allow subscripting of jsonb (Dmitry Dolgov)
>     </para>
>     
>     <para>
>     Subscripting can be used to extract from and assign to jsonb documents.
>     Subscripting is now extensible so extensions and built-in data type can make use of this.
>     </para>
>     </listitem>

I dunno, this seems to approach the feature from the specifics rather
than its full generality.  I would have said something like 

 Make subscripting user-extensible for "container" types
    <!-- maybe "array-like types" -->

  Subscripting JSONB is now integrated in core, and adding user-defined
  subscripting for other types is possible.


-- 
Álvaro Herrera       Valdivia, Chile
Bob [Floyd] used to say that he was planning to get a Ph.D. by the "green
stamp method," namely by saving envelopes addressed to him as 'Dr. Floyd'.
After collecting 500 such letters, he mused, a university somewhere in
Arizona would probably grant him a degree.              (Don Knuth)



Re: PG 14 release notes, first draft

From
Alvaro Herrera
Date:
On 2021-May-10, Bruce Momjian wrote:

> I reworeded it to:
> 
>     <listitem>
>     <!--
>     Author: Peter Eisentraut <peter@eisentraut.org>
>     2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
>     -->
>     
>     <para>
>     Limit the ways password_encryption can enable md5 hashing (Peter Eisentraut)
>     </para>
>     
>     <para>
>     Previously on/true/yes/1 values enabled md5.  Now, only the string md5 does this.
>     </para>
>     </listitem>
> 
> I also have this entry:
> 
>     <listitem>
>     <!--
>     Author: Peter Eisentraut <peter@eisentraut.org>
>     2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
>     -->
>     
>     <para>
>     Change password_encryption's default to scram-sha-256 (Peter Eisentraut)
>     </para>
>     
>     <para>
>     Previously it was md5.
>     </para>
>     </listitem>
> 
> I am hesitant to merge them since they are different changes.

Different?  The commit IDs look pretty similar to me, not to say exactly
identical.

Reading these, it's pretty unclear what password_encryption *is* in the
first place.  The item should say "the password_encryption server
parameter" -- that's what we have in the pg10 note for precursor commit
eb61136dc.

I would suggest 

<para>
 Change the default of the password_encryption server parameter to
 scram-sha-256.
</para>

<para>
 Also, the legacy (and undocumented) boolean-like values which were
 previously synonyms of <literal>md5</literal> are no longer accepted.
</para>

-- 
Álvaro Herrera       Valdivia, Chile
"The Gord often wonders why people threaten never to come back after they've
been told never to return" (www.actsofgord.com)



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 02:42:08PM -0400, John Naylor wrote:
> Hi Bruce,
> 
> Thanks for doing this work again!
> 
> > Add date_bin function (John Naylor)
> >
> > WHAT DOES THIS DO?
> 
> Hard to describe in a one-liner, but it lines up timestamps into regular
> intervals as specified by the user. It is more clear after seeing examples:
> 
> https://www.postgresql.org/docs/devel/functions-datetime.html#
> FUNCTIONS-DATETIME-BIN

OK, I just copied the doc sentence into the release notes.

> > Dramatically improve Unicode normalization (John Naylor)
> >
> > WHAT OPERATIONS USE THIS?
> 
> PG13 added the normalize() function to normalize Unicode sequences, as well as
> the IS NORMALIZED syntax to test for that. The commits* here do not change
> behavior and only improve performance. As such, this really belongs in the
> performance section. 
> 
> *There is one additional commit that belongs to this entry:
> 
> Author: Michael Paquier <michael@paquier.xyz>
> 2020-10-11 [80f8eb79e] Use perfect hash for NFC and NFKC Unicode Normalization
> quick check

OK, updated text:

    <listitem>
    <!--
    Author: Michael Paquier <michael@paquier.xyz>
    2020-10-11 [80f8eb79e] Use perfect hash for NFC and NFKC Unicode Normalization
    Author: Michael Paquier <michael@paquier.xyz>
    2020-10-23 [783f0cc64] Improve performance of Unicode {de,re}composition in the
    -->
    
    <para>
    Dramatically improve Unicode normalization (John Naylor)
    </para>
    
    <para>
    This speeds normalize() and IS NORMALIZED.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Wed, May 12, 2021 at 06:06:31PM -0400, Álvaro Herrera wrote:
> On 2021-May-12, Bruce Momjian wrote:
> 
> > OK, I added it into the existing entry:
> > 
> >     <listitem>
> >     <!--
> >     Author: Alexander Korotkov <akorotkov@postgresql.org>
> >     2021-01-31 [676887a3b] Implementation of subscripting for jsonb
> >     Author: Alexander Korotkov <akorotkov@postgresql.org>
> >     2021-01-31 [81fcc72e6] Filling array gaps during jsonb subscripting
> >     Author: Alexander Korotkov <akorotkov@postgresql.org>
> >     2021-01-31 [aa6e46daf] Throw error when assigning jsonb scalar instead of a com
> >     -->
> >     
> >     <para>
> >     Allow subscripting of jsonb (Dmitry Dolgov)
> >     </para>
> >     
> >     <para>
> >     Subscripting can be used to extract from and assign to jsonb documents.
> >     Subscripting is now extensible so extensions and built-in data type can make use of this.
> >     </para>
> >     </listitem>
> 
> I dunno, this seems to approach the feature from the specifics rather
> than its full generality.  I would have said something like 
> 
>  Make subscripting user-extensible for "container" types
>     <!-- maybe "array-like types" -->
> 
>   Subscripting JSONB is now integrated in core, and adding user-defined
>   subscripting for other types is possible.

I wanted to highlight the more useful aspect of this change, which I
think is JSBONB subscripting.  Here is an updated version.  Changes?

    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-01-31 [676887a3b] Implementation of subscripting for jsonb
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-01-31 [81fcc72e6] Filling array gaps during jsonb subscripting
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-01-31 [aa6e46daf] Throw error when assigning jsonb scalar instead of a com
    -->
    
    <para>
    Allow subscripting of JSONB and simplify the implementation of subscripting
    (Dmitry Dolgov)
    </para>
    
    <para>
    JSONB subscripting can be used to extract from and assign to JSONB
    documents.  Extensions and built-in data types can now implement
    subscripting more easily.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Wed, May 12, 2021 at 06:19:28PM -0400, Álvaro Herrera wrote:
> > I am hesitant to merge them since they are different changes.
> 
> Different?  The commit IDs look pretty similar to me, not to say exactly
> identical.
> 
> Reading these, it's pretty unclear what password_encryption *is* in the
> first place.  The item should say "the password_encryption server
> parameter" -- that's what we have in the pg10 note for precursor commit
> eb61136dc.
> 
> I would suggest 
> 
> <para>
>  Change the default of the password_encryption server parameter to
>  scram-sha-256.
> </para>
> 
> <para>
>  Also, the legacy (and undocumented) boolean-like values which were
>  previously synonyms of <literal>md5</literal> are no longer accepted.
> </para>

OK, updated text:

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
    -->
    
    <para>
    Change the default of the password_encryption server parameter
    to scram-sha-256 (Peter Eisentraut)
    </para>
    
    <para>
    Previously it was md5.    All new passwords will be stored as SHA256
    unless this server variable is changed or the password is already
    md5-hashed.  Also, the legacy (and undocumented) boolean-like
    values which were previously synonyms of <literal>md5</literal>
    are no longer accepted.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Amit Langote
Date:
On Thu, May 13, 2021 at 2:39 AM Bruce Momjian <bruce@momjian.us> wrote:
> On Tue, May 11, 2021 at 11:57:10AM +0900, Amit Langote wrote:
> > On Mon, May 10, 2021 at 11:40 PM Justin Pryzby <pryzby@telsasoft.com> wrote:
> > > 86dc90056d Rework planning and execution of UPDATE and DELETE.
> > > a1115fa078 Postpone some more stuff out of ExecInitModifyTable.
> > > c5b7ba4e67 Postpone some stuff out of ExecInitModifyTable.
> >
> > I was just about to ask Bruce what he thinks about these.
> >
> > To clarify, the first one is a big refactoring commit that allowed us
> > to get rid of inheritance_planner(), a fairly inefficient way of
> > planning updates/deletes on partitioned tables, especially when many
> > partitions remain after pruning (or when pruning cannot be used).  One
> > may see the performance of update/deletes, especially on partitioned
> > tables, to be generally improved as a result of this commit, but maybe
> > not as significantly as to be mentioned in E.1.3.1.1. Partitioning or
> > even E.1.3.1.4. General Performance.  However, one user-visible
> > feature that came out of this work is that updates/deletes can now use
> > run-time pruning whereas they couldn't before.  Maybe that ought to be
> > mentioned.  (This reminds me to send a patch to remove the note from
> > 5.11.4. Partition Pruning that says that runtime pruning cannot be
> > used for update/delete).
> >
> > The other two commits can lead to improved performance of
> > update/deletes when there are many unpruned partitions in the plan,
> > but runtime pruning (a new feature as mentioned above) leads to only
> > one or few partitions to actually be updated/deleted from.  I admit
> > though that the cases for which performance has been improved still
> > under-perform the cases that already performed better starting in v12,
> > that is, the cases where the planner itself is able to trim down the
> > plan to contain one or few partitions, so maybe nothing very big to
> > see here just yet.  You may want to take a look at the benchmark
> > results I had posted here:
> > https://www.postgresql.org/message-id/CA%2BHiwqEcawatEaUh1uTbZMEZTJeLzbroRTz9_X9Z5CFjTWJkhw%40mail.gmail.com
>
> OK, I added this entry:

Thank you.

>         <listitem>
>         <!--
>         Author: Tom Lane <tgl@sss.pgh.pa.us>
>         2021-03-31 [86dc90056] Rework planning and execution of UPDATE and DELETE.
>         Author: Tom Lane <tgl@sss.pgh.pa.us>
>         2021-04-06 [a1115fa07] Postpone some more stuff out of ExecInitModifyTable.
>         Author: Tom Lane <tgl@sss.pgh.pa.us>
>         2021-04-06 [c5b7ba4e6] Postpone some stuff out of ExecInitModifyTable.
>         -->
>
>         <para>
>         Improve the performance of updates/deletes on partitioned tables
>         when only a few partitions are affected (Amit Langote, Tom Lane)
>         </para>
>
>         <para>
>         This also allows run-time pruning of updates/deletes on partitioned
>         tables.
>         </para>
>         </listitem>

How about writing the 2nd line instead as:

Updates/deletes on partitioned tables can now use execution-time
partition pruning.

We don't seem to use the term "run-time pruning" anywhere else in the
documentation, and "pruning of updates/deletes" sounds strange.

--
Amit Langote
EDB: http://www.enterprisedb.com



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Thu, May 13, 2021 at 02:46:58PM +0900, Amit Langote wrote:
> How about writing the 2nd line instead as:
> 
> Updates/deletes on partitioned tables can now use execution-time
> partition pruning.
> 
> We don't seem to use the term "run-time pruning" anywhere else in the
> documentation, and "pruning of updates/deletes" sounds strange.

Good point, updated text:

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2021-03-31 [86dc90056] Rework planning and execution of UPDATE and DELETE.
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2021-04-06 [a1115fa07] Postpone some more stuff out of ExecInitModifyTable.
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2021-04-06 [c5b7ba4e6] Postpone some stuff out of ExecInitModifyTable.
    -->
    
    <para>
    Improve the performance of updates/deletes on partitioned tables
    when only a few partitions are affected (Amit Langote, Tom Lane)
    </para>
    
    <para>
    This also allows updates/deletes on partitioned tables to use
    execution-time partition pruning.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 10, 2021 at 02:03:08AM -0400, Bruce Momjian wrote:
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
> 
>     https://momjian.us/pgsql_docs/release-14.html
> 
> I need clarification on many items, and the document still needs its
> items properly ordered, and markup added.  I also expect a lot of
> feedback.
> 
> I plan to work on completing this document this coming week in
> preparation for beta next week.

I have ordered the items in each section.  My next job is to add markup
and indenting to the XML.

FYI, the PG 14 release item count is much higher than usual:

    release-7.4:  263
    release-8.0:  230
    release-8.1:  174
    release-8.2:  215
    release-8.3:  214
    release-8.4:  314
    release-9.0:  237
    release-9.1:  203
    release-9.2:  238
    release-9.3:  177
    release-9.4:  211
    release-9.5:  193
    release-9.6:  214
    release-10:  189
    release-11:  170
    release-12:  180
    release-13:  178
    release-14:  220

PG 14 is a 23% increase over our previous release.  I think the cause is
either more hackers/sponsors, Covid, or both.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Amit Langote
Date:
On Thu, May 13, 2021 at 11:59 PM Bruce Momjian <bruce@momjian.us> wrote:
> On Thu, May 13, 2021 at 02:46:58PM +0900, Amit Langote wrote:
> > How about writing the 2nd line instead as:
> >
> > Updates/deletes on partitioned tables can now use execution-time
> > partition pruning.
> >
> > We don't seem to use the term "run-time pruning" anywhere else in the
> > documentation, and "pruning of updates/deletes" sounds strange.
>
> Good point, updated text:
>
>         <listitem>
>         <!--
>         Author: Tom Lane <tgl@sss.pgh.pa.us>
>         2021-03-31 [86dc90056] Rework planning and execution of UPDATE and DELETE.
>         Author: Tom Lane <tgl@sss.pgh.pa.us>
>         2021-04-06 [a1115fa07] Postpone some more stuff out of ExecInitModifyTable.
>         Author: Tom Lane <tgl@sss.pgh.pa.us>
>         2021-04-06 [c5b7ba4e6] Postpone some stuff out of ExecInitModifyTable.
>         -->
>
>         <para>
>         Improve the performance of updates/deletes on partitioned tables
>         when only a few partitions are affected (Amit Langote, Tom Lane)
>         </para>
>
>         <para>
>         This also allows updates/deletes on partitioned tables to use
>         execution-time partition pruning.
>         </para>
>         </listitem>

Thank you.

-- 
Amit Langote
EDB: http://www.enterprisedb.com



Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
On Mon, May 10, 2021 at 09:40:45AM -0500, Justin Pryzby wrote:
> Should any of these be included?

New SQL-accessible functionality should be included:
> 8c15a29745 Allow ALTER TYPE to update an existing type's typsubscript value.

These should be merged:
> 756ab29124 Allow pageinspect to inspect GiST indexes (Andrey Borodin, Heikki Linnakangas)
> 9e596b65f4 Add "LP_DEAD item?" column to GiST pageinspect functions

I'm undecided on this one:
> 7db0cd2145 Set PD_ALL_VISIBLE and visibility map bits in COPY FREEZE

People who didn't used to use FREEZE (because it didn't work or otherwise)
might want to start using it.

I'm withdrawing these, as modifications to existing log messages don't need to
be included:

> 10a5b35a00 Report resource usage at the end of recovery
> 7e453634bb Add additional information in the vacuum error context.
> 1ea396362b Improve logging of bad parameter values in BIND messages.

-- 
Justin



Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
On Thu, May 13, 2021 at 09:01:41PM -0500, Justin Pryzby wrote:
> These should be merged:
> > 756ab29124 Allow pageinspect to inspect GiST indexes (Andrey Borodin, Heikki Linnakangas)
> > 9e596b65f4 Add "LP_DEAD item?" column to GiST pageinspect functions

Sorry, this was my error while reconciling my list with yours.
Your notes only have one item for these, which is correct.

Possibly you'd want to include the 9e59 commit in the comment (but it wouldn't
have avoided my own confusion, tough).

-- 
Justin



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Thu, May 13, 2021 at 09:08:37PM -0500, Justin Pryzby wrote:
> On Thu, May 13, 2021 at 09:01:41PM -0500, Justin Pryzby wrote:
> > These should be merged:
> > > 756ab29124 Allow pageinspect to inspect GiST indexes (Andrey Borodin, Heikki Linnakangas)
> > > 9e596b65f4 Add "LP_DEAD item?" column to GiST pageinspect functions
> 
> Sorry, this was my error while reconciling my list with yours.
> Your notes only have one item for these, which is correct.
> 
> Possibly you'd want to include the 9e59 commit in the comment (but it wouldn't
> have avoided my own confusion, tough).

OK, I added that commit:

    <listitem>
    <!--
    Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
    2021-01-13 [756ab2912] Add functions to 'pageinspect' to inspect GiST indexes.
    Author: Peter Geoghegan <pg@bowt.ie>
    2021-02-14 [9e596b65f] Add "LP_DEAD item?" column to GiST pageinspect functions
    -->
    
    <para>
    Allow pageinspect to inspect GiST indexes (Andrey Borodin,
    Heikki Linnakangas)
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Thu, May 13, 2021 at 09:01:41PM -0500, Justin Pryzby wrote:
> On Mon, May 10, 2021 at 09:40:45AM -0500, Justin Pryzby wrote:
> > Should any of these be included?
> 
> New SQL-accessible functionality should be included:
> > 8c15a29745 Allow ALTER TYPE to update an existing type's typsubscript value.

OK, text is:

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-12-11 [8c15a2974] Allow ALTER TYPE to update an existing type's typsubscri
    -->
    
    <para>
    Allow ALTER TYPE to specify or remove a SUBSCRIPT handler
    (Tom Lane)
    </para>
    </listitem>

> I'm undecided on this one:
> > 7db0cd2145 Set PD_ALL_VISIBLE and visibility map bits in COPY FREEZE
> 
> People who didn't used to use FREEZE (because it didn't work or otherwise)
> might want to start using it.

Yes, that seems very important:

    <listitem>
    <!--
    Author: Tomas Vondra <tomas.vondra@postgresql.org>
    2021-01-17 [7db0cd214] Set PD_ALL_VISIBLE and visibility map bits in COPY FREEZ
    -->
    
    <para>
    Have COPY FREEZE appropriately update page visibility bits
    (Anastasia Lubennikova, Pavan Deolasee, Jeff Janes)
    </para>
    </listitem>

This one one of those, "I must be confused, since we certainly already
did this before."

> I'm withdrawing these, as modifications to existing log messages don't need to
> be included:
> 
> > 10a5b35a00 Report resource usage at the end of recovery
> > 7e453634bb Add additional information in the vacuum error context.
> > 1ea396362b Improve logging of bad parameter values in BIND messages.

OK.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Tom Lane
Date:
Bruce Momjian <bruce@momjian.us> writes:
> On Thu, May 13, 2021 at 09:01:41PM -0500, Justin Pryzby wrote:
>> New SQL-accessible functionality should be included:
>>> 8c15a29745 Allow ALTER TYPE to update an existing type's typsubscript value.

> OK, text is:

>     <listitem>
>     <!--
>     Author: Tom Lane <tgl@sss.pgh.pa.us>
>     2020-12-11 [8c15a2974] Allow ALTER TYPE to update an existing type's typsubscri
>     -->

>     <para>
>     Allow ALTER TYPE to specify or remove a SUBSCRIPT handler
>     (Tom Lane)
>     </para>
>     </listitem>

I don't understand why we'd bother to list that as a separate bullet item.
It's an expected part of the custom-subscript capability, I'd think.

            regards, tom lane



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Fri, May 14, 2021 at 03:39:39PM -0400, Tom Lane wrote:
> Bruce Momjian <bruce@momjian.us> writes:
> > On Thu, May 13, 2021 at 09:01:41PM -0500, Justin Pryzby wrote:
> >> New SQL-accessible functionality should be included:
> >>> 8c15a29745 Allow ALTER TYPE to update an existing type's typsubscript value.
> 
> > OK, text is:
> 
> >     <listitem>
> >     <!--
> >     Author: Tom Lane <tgl@sss.pgh.pa.us>
> >     2020-12-11 [8c15a2974] Allow ALTER TYPE to update an existing type's typsubscri
> >     -->
>     
> >     <para>
> >     Allow ALTER TYPE to specify or remove a SUBSCRIPT handler
> >     (Tom Lane)
> >     </para>
> >     </listitem>
> 
> I don't understand why we'd bother to list that as a separate bullet item.
> It's an expected part of the custom-subscript capability, I'd think.

I am not sure either.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Fri, May 14, 2021 at 04:01:32PM -0400, Bruce Momjian wrote:
> On Fri, May 14, 2021 at 03:39:39PM -0400, Tom Lane wrote:
> > Bruce Momjian <bruce@momjian.us> writes:
> > > On Thu, May 13, 2021 at 09:01:41PM -0500, Justin Pryzby wrote:
> > >> New SQL-accessible functionality should be included:
> > >>> 8c15a29745 Allow ALTER TYPE to update an existing type's typsubscript value.
> > 
> > > OK, text is:
> > 
> > >     <listitem>
> > >     <!--
> > >     Author: Tom Lane <tgl@sss.pgh.pa.us>
> > >     2020-12-11 [8c15a2974] Allow ALTER TYPE to update an existing type's typsubscri
> > >     -->
> >     
> > >     <para>
> > >     Allow ALTER TYPE to specify or remove a SUBSCRIPT handler
> > >     (Tom Lane)
> > >     </para>
> > >     </listitem>
> > 
> > I don't understand why we'd bother to list that as a separate bullet item.
> > It's an expected part of the custom-subscript capability, I'd think.
> 
> I am not sure either.

Removed.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Alvaro Herrera
Date:
On 2021-May-12, Bruce Momjian wrote:

> OK, updated text:
> 
>     <listitem>
>     <!--
>     Author: Peter Eisentraut <peter@eisentraut.org>
>     2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
>     -->
>     
>     <para>
>     Change the default of the password_encryption server parameter
>     to scram-sha-256 (Peter Eisentraut)
>     </para>
>     
>     <para>
>     Previously it was md5.    All new passwords will be stored as SHA256
>     unless this server variable is changed or the password is already
>     md5-hashed.  Also, the legacy (and undocumented) boolean-like
>     values which were previously synonyms of <literal>md5</literal>
>     are no longer accepted.
>     </para>
>     </listitem>

Thanks, looks ok as far as what the original point was about.

I have to say that this sentence is a bit odd: "All new passwords will
be stored as sha256 unless ... the password is already md5-hashed".
Does this mean that if you change a password for a user whose password
was md5, the new one is stored as md5 too even if the setting is
scram-sha-256?  Or if "the password" means an old password, then why is
it a new password?

-- 
Álvaro Herrera       Valdivia, Chile



Re: PG 14 release notes, first draft

From
Alvaro Herrera
Date:
On 2021-May-10, Bruce Momjian wrote:

> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
> 
>     https://momjian.us/pgsql_docs/release-14.html

Thanks for putting this all together.

> <listitem>
> <!--
> Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
> 2021-04-08 [0827e8af7] autovacuum: handle analyze for partitioned tables
> -->
> 
> <para>
> Autovacuum now analyzes partitioned tables (Yuzuko Hosoya)
> </para>

I would add something like:

"The insert, update and delete tuple counts from partitions are
propagated to their parent tables, so autovacuum knows to process them
too."

Because I spent a considerable amount of time on this patch, I think
it's fair to list me as co-author, after Hosoya-san's name.  Same with
the PQtrace() item.

Thanks

-- 
Álvaro Herrera       Valdivia, Chile



Re: PG 14 release notes, first draft

From
Tom Lane
Date:
Alvaro Herrera <alvherre@alvh.no-ip.org> writes:
> I, um, again think that the item should not be primarily about JSONB,
> but about our (IMO groundbreaking) extensible subscripting work.

+1.  Extensible subscripting is THE feature here, using it for jsonb
is just an application.

            regards, tom lane



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Sat, May 15, 2021 at 07:05:35PM -0400, Álvaro Herrera wrote:
> On 2021-May-12, Bruce Momjian wrote:
> 
> > OK, updated text:
> > 
> >     <listitem>
> >     <!--
> >     Author: Peter Eisentraut <peter@eisentraut.org>
> >     2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
> >     -->
> >     
> >     <para>
> >     Change the default of the password_encryption server parameter
> >     to scram-sha-256 (Peter Eisentraut)
> >     </para>
> >     
> >     <para>
> >     Previously it was md5.    All new passwords will be stored as SHA256
> >     unless this server variable is changed or the password is already
> >     md5-hashed.  Also, the legacy (and undocumented) boolean-like
> >     values which were previously synonyms of <literal>md5</literal>
> >     are no longer accepted.
> >     </para>
> >     </listitem>
> 
> Thanks, looks ok as far as what the original point was about.
> 
> I have to say that this sentence is a bit odd: "All new passwords will
> be stored as sha256 unless ... the password is already md5-hashed".
> Does this mean that if you change a password for a user whose password
> was md5, the new one is stored as md5 too even if the setting is
> scram-sha-256?  Or if "the password" means an old password, then why is
> it a new password?

OK, what I was trying to say was that if you dump/restore, and the old
password was md5, the newly-restored password will be md5, but it was
very unclear.  I changed it to this:

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
    -->
    
    <para>
    Change the default of the password_encryption server parameter to
    scram-sha-256 (Peter Eisentraut)
    </para>
    
    <para>
    Previously it was md5.    All new passwords will be stored as SHA256
    unless this server variable is changed or the password is specified
    in md5 format.    Also, the legacy (and undocumented) boolean-like
    values which were previously synonyms for <literal>md5</literal>
    are no longer accepted.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Sat, May 15, 2021 at 10:27:08PM -0400, Tom Lane wrote:
> Alvaro Herrera <alvherre@alvh.no-ip.org> writes:
> > I, um, again think that the item should not be primarily about JSONB,
> > but about our (IMO groundbreaking) extensible subscripting work.
> 
> +1.  Extensible subscripting is THE feature here, using it for jsonb
> is just an application.

OK, I moved the entry into 'data types', and listed two entries instead
of one:

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-12-09 [c7aba7c14] Support subscripting of arbitrary types, not only arrays
    -->
    
    <para>
    Allow extensions and built-in data types to implement subscripting (Tom Lane)
    </para>
    
    <para>
    Previously subscript handling was hard-coded into the server and
    was difficult to add to date types.
    </para>
    </listitem>
    
    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-01-31 [676887a3b] Implementation of subscripting for jsonb
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-01-31 [81fcc72e6] Filling array gaps during jsonb subscripting
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-01-31 [aa6e46daf] Throw error when assigning jsonb scalar instead of a com
    -->
    
    <para>
    Allow subscripting of JSONB (Dmitry Dolgov)
    </para>
    
    <para>
    JSONB subscripting can be used to extract from and assign to
    JSONB documents.
    </para>
    </listitem>


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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Sat, May 15, 2021 at 07:16:18PM -0400, Álvaro Herrera wrote:
> On 2021-May-10, Bruce Momjian wrote:
> 
> > I have committed the first draft of the PG 14 release notes.  You can
> > see the most current  build of them here:
> > 
> >     https://momjian.us/pgsql_docs/release-14.html
> 
> Thanks for putting this all together.
> 
> > <listitem>
> > <!--
> > Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
> > 2021-04-08 [0827e8af7] autovacuum: handle analyze for partitioned tables
> > -->
> > 
> > <para>
> > Autovacuum now analyzes partitioned tables (Yuzuko Hosoya)
> > </para>
> 
> I would add something like:
> 
> "The insert, update and delete tuple counts from partitions are
> propagated to their parent tables, so autovacuum knows to process them
> too."

OK, updated text:

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2021-04-08 [0827e8af7] autovacuum: handle analyze for partitioned tables
    -->
    
    <para>
    Autovacuum now analyzes partitioned tables (Yuzuko Hosoya, Álvaro
    Herrera)
    </para>
    
    <para>
    Insert, update, and delete tuple counts from partitions are now
    propagated to their parent tables so autovacuum knows when to
    process them.
    </para>
    </listitem>

> Because I spent a considerable amount of time on this patch, I think
> it's fair to list me as co-author, after Hosoya-san's name.  Same with
> the PQtrace() item.

Done, thanks.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Tom Lane
Date:
Bruce Momjian <bruce@momjian.us> writes:
> OK, I moved the entry into 'data types', and listed two entries instead
> of one:

>     <para>
>     Allow extensions and built-in data types to implement subscripting (Tom Lane)
>     </para>

Better, but Dmitry Dolgov gets the credit not me.

>     <para>
>     Previously subscript handling was hard-coded into the server and
>     was difficult to add to date types.
>     </para>
>     </listitem>

"Difficult"?  I don't think it was possible at all.  Perhaps

    Previously subscript handling was hard-coded into the server,
    so that subscripting could only be applied to array types.
    This change allows subscript notation to be used to extract
    or assign portions of a value of any type for which the concept
    makes sense.

>     JSONB subscripting can be used to extract from and assign to
>     JSONB documents.

Perhaps "extract and assign to portions of JSONB documents" or
something like that?

            regards, tom lane



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Sun, May 16, 2021 at 11:17:46PM -0400, Tom Lane wrote:
> Bruce Momjian <bruce@momjian.us> writes:
> > OK, I moved the entry into 'data types', and listed two entries instead
> > of one:
>     
> >     <para>
> >     Allow extensions and built-in data types to implement subscripting (Tom Lane)
> >     </para>
> 
> Better, but Dmitry Dolgov gets the credit not me.

OK, fixed.

> >     <para>
> >     Previously subscript handling was hard-coded into the server and
> >     was difficult to add to date types.
> >     </para>
> >     </listitem>
> 
> "Difficult"?  I don't think it was possible at all.  Perhaps

I used difficult to mean you had to hack the server code to enable it,
but your sentence below is better since it highlights usage beyond
arrays.


>     Previously subscript handling was hard-coded into the server,
>     so that subscripting could only be applied to array types.
>     This change allows subscript notation to be used to extract
>     or assign portions of a value of any type for which the concept
>     makes sense.
> 
> >     JSONB subscripting can be used to extract from and assign to
> >     JSONB documents.
> 
> Perhaps "extract and assign to portions of JSONB documents" or
> something like that?

OK, updated text for both items:

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-12-09 [c7aba7c14] Support subscripting of arbitrary types, not only arrays
    -->
    
    <para>
    Allow extensions and built-in data types to implement subscripting (Dmitry Dolgov)
    </para>
    
    <para>
    Previously subscript handling was hard-coded into the server,
    so that subscripting could only be applied to array types.  This
    change allows subscript notation to be used to extract or assign
    portions of a value of any type for which the concept makes sense.
    </para>
    </listitem>
    
    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-01-31 [676887a3b] Implementation of subscripting for jsonb
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-01-31 [81fcc72e6] Filling array gaps during jsonb subscripting
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2021-01-31 [aa6e46daf] Throw error when assigning jsonb scalar instead of a com
    -->
    
    <para>
    Allow subscripting of JSONB (Dmitry Dolgov)
    </para>
    
    <para>
    JSONB subscripting can be used to extract and assign to portions
    of JSONB documents.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Fujii Masao
Date:

On 2021/05/10 15:03, Bruce Momjian wrote:
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
> 
>     https://momjian.us/pgsql_docs/release-14.html

Thanks a lot!!


> I need clarification on many items, and the document still needs its
> items properly ordered, and markup added.  I also expect a lot of
> feedback.

> <para>
> Add function pg_backend_memory_contexts() to output the memory contexts of arbitrary backends (Atsushi Torikoshi)

Could you fix the function name from pg_backend_memory_contexts() to
pg_log_backend_memory_contexts()? That is, "log_" is necessary just after
"pg_" in the function name.


> <para>
> Add lock wait time to pg_locks (Atsushi Torikoshi)

Could you change "lock wait time" to "lock wait start time"? Because
the pg_locks.waitstart column that was added in v14 reports the time
when the server process *started* waiting for the lock.


Regards,

-- 
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 17, 2021 at 04:18:27PM +0900, Fujii Masao wrote:
> 
> 
> On 2021/05/10 15:03, Bruce Momjian wrote:
> > I have committed the first draft of the PG 14 release notes.  You can
> > see the most current  build of them here:
> > 
> >     https://momjian.us/pgsql_docs/release-14.html
> 
> Thanks a lot!!
> 
> 
> > I need clarification on many items, and the document still needs its
> > items properly ordered, and markup added.  I also expect a lot of
> > feedback.
> 
> > <para>
> > Add function pg_backend_memory_contexts() to output the memory contexts of arbitrary backends (Atsushi Torikoshi)
> 
> Could you fix the function name from pg_backend_memory_contexts() to
> pg_log_backend_memory_contexts()? That is, "log_" is necessary just after
> "pg_" in the function name.

Ah, I see my mistake, fixed.

> > <para>
> > Add lock wait time to pg_locks (Atsushi Torikoshi)
> 
> Could you change "lock wait time" to "lock wait start time"? Because
> the pg_locks.waitstart column that was added in v14 reports the time
> when the server process *started* waiting for the lock.

Yes, good point, fixed.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
"Jonathan S. Katz"
Date:
Hi,

On 5/10/21 2:03 AM, Bruce Momjian wrote:
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
>
>     https://momjian.us/pgsql_docs/release-14.html
>
> I need clarification on many items, and the document still needs its
> items properly ordered, and markup added.  I also expect a lot of
> feedback.
>
> I plan to work on completing this document this coming week in
> preparation for beta next week.

Again, thanks for compiling the release notes.

I have published the first draft of the release announcement on
-advocacy, you can find the original email here:

https://www.postgresql.org/message-id/f82ccf97-d02c-0974-27b8-e0f5e4c1de02%40postgresql.org

If you are interested in reviewing the release announcement, please
provide feedback on the -advocacy mailing list.

Thanks!

Jonathan


Attachment

Re: PG 14 release notes, first draft

From
Alvaro Herrera
Date:
On 2021-May-16, Bruce Momjian wrote:

> OK, what I was trying to say was that if you dump/restore, and the old
> password was md5, the newly-restored password will be md5, but it was
> very unclear.  I changed it to this:
> 
>     <listitem>
>     <!--
>     Author: Peter Eisentraut <peter@eisentraut.org>
>     2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
>     Author: Peter Eisentraut <peter@eisentraut.org>
>     2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
>     -->
>     
>     <para>
>     Change the default of the password_encryption server parameter to
>     scram-sha-256 (Peter Eisentraut)
>     </para>
>     
>     <para>
>     Previously it was md5.    All new passwords will be stored as SHA256
>     unless this server variable is changed or the password is specified
>     in md5 format.    Also, the legacy (and undocumented) boolean-like
>     values which were previously synonyms for <literal>md5</literal>
>     are no longer accepted.
>     </para>
>     </listitem>

Ah, yeah, now I understand.  WFM.

Thanks

-- 
Álvaro Herrera                            39°49'30"S 73°17'W
"La fuerza no está en los medios físicos
sino que reside en una voluntad indomable" (Gandhi)



Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
I propose that the B-Tree index item (bottom-up index deletion, "Allow
btree index additions to remove expired index entries to prevent page
splits") link back to the documentation for those that want to drill
down:

https://www.postgresql.org/docs/14/btree-implementation.html#BTREE-DELETION

The same approach was used for the Postgres 13 B-Tree deduplication
release note item (same page from the docs, even).

I understand that it's kind of hard to get the point of the feature
across within the confines of the release notes, which have a very
wide audience. I believe that the practical take-away for more
experienced users should be something like "significantly ameliorates
write-amplification problems in indexes with non-HOT updates". But
that's quite a mouthful. Having a hyperlink to the docs seems like a
sensible compromise. I really just want experienced users to be able
to make the connection between this feature and well-publicized
problems with Postgres index bloat/VACUUM.

Thanks
-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Mon, May 17, 2021 at 12:45 PM Peter Geoghegan <pg@bowt.ie> wrote:
> https://www.postgresql.org/docs/14/btree-implementation.html#BTREE-DELETION

This linke currently 404s --
https://www.postgresql.org/docs/devel/btree-implementation.html#BTREE-DELETION
works, though.

-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, May 17, 2021 at 12:45:44PM -0700, Peter Geoghegan wrote:
> I propose that the B-Tree index item (bottom-up index deletion, "Allow
> btree index additions to remove expired index entries to prevent page
> splits") link back to the documentation for those that want to drill
> down:
> 
> https://www.postgresql.org/docs/14/btree-implementation.html#BTREE-DELETION
> 
> The same approach was used for the Postgres 13 B-Tree deduplication
> release note item (same page from the docs, even).
> 
> I understand that it's kind of hard to get the point of the feature
> across within the confines of the release notes, which have a very
> wide audience. I believe that the practical take-away for more
> experienced users should be something like "significantly ameliorates
> write-amplification problems in indexes with non-HOT updates". But
> that's quite a mouthful. Having a hyperlink to the docs seems like a
> sensible compromise. I really just want experienced users to be able
> to make the connection between this feature and well-publicized
> problems with Postgres index bloat/VACUUM.

Yes, I am going to add links to everything, but haven't had time yet.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Masahiko Sawada
Date:
On Mon, May 10, 2021 at 3:03 PM Bruce Momjian <bruce@momjian.us> wrote:
>
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
>
>         https://momjian.us/pgsql_docs/release-14.html
>

I think we need to mention in the release note that
vacuum_cleanup_index_scale_factor GUC parameter has been removed and
vacuum_cleanup_index_scale_factor storage parameter has been
deprecated (please refer to commit 9f3665fb and effdd3f3b63).

Regards,

--
Masahiko Sawada
EDB:  https://www.enterprisedb.com/



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 18, 2021 at 06:28:49PM +0900, Masahiko Sawada wrote:
> On Mon, May 10, 2021 at 3:03 PM Bruce Momjian <bruce@momjian.us> wrote:
> >
> > I have committed the first draft of the PG 14 release notes.  You can
> > see the most current  build of them here:
> >
> >         https://momjian.us/pgsql_docs/release-14.html
> >
> 
> I think we need to mention in the release note that
> vacuum_cleanup_index_scale_factor GUC parameter has been removed and
> vacuum_cleanup_index_scale_factor storage parameter has been
> deprecated (please refer to commit 9f3665fb and effdd3f3b63).

Looking at the full commit message:

    commit 9f3665fbfc
    Author: Peter Geoghegan <pg@bowt.ie>
    Date:   Wed Mar 10 16:27:01 2021 -0800
    
        Don't consider newly inserted tuples in nbtree VACUUM.
    
        Remove the entire idea of "stale stats" within nbtree VACUUM (stop
        caring about stats involving the number of inserted tuples).  Also
        remove the vacuum_cleanup_index_scale_factor GUC/param on the master
        branch (though just disable them on postgres 13).
    
        The vacuum_cleanup_index_scale_factor/stats interface made the nbtree AM
        partially responsible for deciding when pg_class.reltuples stats needed
        to be updated.  This seems contrary to the spirit of the index AM API,
        though -- it is not actually necessary for an index AM's bulk delete and
        cleanup callbacks to provide accurate stats when it happens to be
        inconvenient.  The core code owns that.  (Index AMs have the authority
        to perform or not perform certain kinds of deferred cleanup based on
        their own considerations, such as page deletion and recycling, but that
        has little to do with pg_class.reltuples/num_index_tuples.)
    
        This issue was fairly harmless until the introduction of the
        autovacuum_vacuum_insert_threshold feature by commit b07642db, which had
        an undesirable interaction with the vacuum_cleanup_index_scale_factor
        mechanism: it made insert-driven autovacuums perform full index scans,
        even though there is no real benefit to doing so.  This has been tied to
        a regression with an append-only insert benchmark [1].
    
        Also have remaining cases that perform a full scan of an index during a
        cleanup-only nbtree VACUUM indicate that the final tuple count is only
        an estimate.  This prevents vacuumlazy.c from setting the index's
        pg_class.reltuples in those cases (it will now only update pg_class when
        vacuumlazy.c had TIDs for nbtree to bulk delete).  This arguably fixes
        an oversight in deduplication-related bugfix commit 48e12913.
    
        [1] https://smalldatum.blogspot.com/2021/01/insert-benchmark-postgres-is-still.html
    
        Author: Peter Geoghegan <pg@bowt.ie>
        Reviewed-By: Masahiko Sawada <sawada.mshk@gmail.com>
        Discussion: https://postgr.es/m/CAD21AoA4WHthN5uU6+WScZ7+J_RcEjmcuH94qcoUPuB42ShXzg@mail.gmail.com
-->        Backpatch: 13-, where autovacuum_vacuum_insert_threshold was added.

This was backpatched into PG 13.3, which was released last week:

        <listitem>
    <!--
    Author: Peter Geoghegan <pg@bowt.ie>
    Branch: master [9f3665fbf] 2021-03-10 16:27:01 -0800
    Branch: REL_13_STABLE [9663d1244] 2021-03-10 16:26:58 -0800
    Author: Peter Geoghegan <pg@bowt.ie>
    Branch: master [5f8727f5a] 2021-03-10 17:07:57 -0800
    Branch: REL_13_STABLE [1fc5a5738] 2021-03-10 17:07:55 -0800
    -->
         <para>
          Disable the <varname>vacuum_cleanup_index_scale_factor</varname>
          parameter and storage option (Peter Geoghegan)
         </para>
    
         <para>
          The notion of tracking <quote>stale</quote> index statistics proved
          to interact badly with
          the <varname>autovacuum_vacuum_insert_threshold</varname> parameter,
          resulting in unnecessary full-index scans and consequent degradation
          of autovacuum performance.  The latter mechanism seems superior, so
          remove the stale-statistics logic.  The control parameter for that,
          <varname>vacuum_cleanup_index_scale_factor</varname>, will be
          removed entirely in v14.  In v13, it remains present to avoid
          breaking existing configuration files, but it no longer does
          anything.
         </para>
        </listitem>

Therefore, it didn't show up in my src/tools/git_changelog output, and I
did not include it.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Masahiko Sawada
Date:
On Tue, May 18, 2021 at 11:07 PM Bruce Momjian <bruce@momjian.us> wrote:
>
> On Tue, May 18, 2021 at 06:28:49PM +0900, Masahiko Sawada wrote:
> > On Mon, May 10, 2021 at 3:03 PM Bruce Momjian <bruce@momjian.us> wrote:
> > >
> > > I have committed the first draft of the PG 14 release notes.  You can
> > > see the most current  build of them here:
> > >
> > >         https://momjian.us/pgsql_docs/release-14.html
> > >
> >
> > I think we need to mention in the release note that
> > vacuum_cleanup_index_scale_factor GUC parameter has been removed and
> > vacuum_cleanup_index_scale_factor storage parameter has been
> > deprecated (please refer to commit 9f3665fb and effdd3f3b63).
>
> Looking at the full commit message:
>
>         commit 9f3665fbfc
>         Author: Peter Geoghegan <pg@bowt.ie>
>         Date:   Wed Mar 10 16:27:01 2021 -0800
>
>             Don't consider newly inserted tuples in nbtree VACUUM.
>
>             Remove the entire idea of "stale stats" within nbtree VACUUM (stop
>             caring about stats involving the number of inserted tuples).  Also
>             remove the vacuum_cleanup_index_scale_factor GUC/param on the master
>             branch (though just disable them on postgres 13).
>
>             The vacuum_cleanup_index_scale_factor/stats interface made the nbtree AM
>             partially responsible for deciding when pg_class.reltuples stats needed
>             to be updated.  This seems contrary to the spirit of the index AM API,
>             though -- it is not actually necessary for an index AM's bulk delete and
>             cleanup callbacks to provide accurate stats when it happens to be
>             inconvenient.  The core code owns that.  (Index AMs have the authority
>             to perform or not perform certain kinds of deferred cleanup based on
>             their own considerations, such as page deletion and recycling, but that
>             has little to do with pg_class.reltuples/num_index_tuples.)
>
>             This issue was fairly harmless until the introduction of the
>             autovacuum_vacuum_insert_threshold feature by commit b07642db, which had
>             an undesirable interaction with the vacuum_cleanup_index_scale_factor
>             mechanism: it made insert-driven autovacuums perform full index scans,
>             even though there is no real benefit to doing so.  This has been tied to
>             a regression with an append-only insert benchmark [1].
>
>             Also have remaining cases that perform a full scan of an index during a
>             cleanup-only nbtree VACUUM indicate that the final tuple count is only
>             an estimate.  This prevents vacuumlazy.c from setting the index's
>             pg_class.reltuples in those cases (it will now only update pg_class when
>             vacuumlazy.c had TIDs for nbtree to bulk delete).  This arguably fixes
>             an oversight in deduplication-related bugfix commit 48e12913.
>
>             [1] https://smalldatum.blogspot.com/2021/01/insert-benchmark-postgres-is-still.html
>
>             Author: Peter Geoghegan <pg@bowt.ie>
>             Reviewed-By: Masahiko Sawada <sawada.mshk@gmail.com>
>             Discussion: https://postgr.es/m/CAD21AoA4WHthN5uU6+WScZ7+J_RcEjmcuH94qcoUPuB42ShXzg@mail.gmail.com
> -->         Backpatch: 13-, where autovacuum_vacuum_insert_threshold was added.
>
> This was backpatched into PG 13.3, which was released last week:
>
>             <listitem>
>         <!--
>         Author: Peter Geoghegan <pg@bowt.ie>
>         Branch: master [9f3665fbf] 2021-03-10 16:27:01 -0800
>         Branch: REL_13_STABLE [9663d1244] 2021-03-10 16:26:58 -0800
>         Author: Peter Geoghegan <pg@bowt.ie>
>         Branch: master [5f8727f5a] 2021-03-10 17:07:57 -0800
>         Branch: REL_13_STABLE [1fc5a5738] 2021-03-10 17:07:55 -0800
>         -->
>              <para>
>               Disable the <varname>vacuum_cleanup_index_scale_factor</varname>
>               parameter and storage option (Peter Geoghegan)
>              </para>
>
>              <para>
>               The notion of tracking <quote>stale</quote> index statistics proved
>               to interact badly with
>               the <varname>autovacuum_vacuum_insert_threshold</varname> parameter,
>               resulting in unnecessary full-index scans and consequent degradation
>               of autovacuum performance.  The latter mechanism seems superior, so
>               remove the stale-statistics logic.  The control parameter for that,
>               <varname>vacuum_cleanup_index_scale_factor</varname>, will be
>               removed entirely in v14.  In v13, it remains present to avoid
>               breaking existing configuration files, but it no longer does
>               anything.
>              </para>
>             </listitem>
>
> Therefore, it didn't show up in my src/tools/git_changelog output, and I
> did not include it.
>

Thanks for your explanation. I understood and agreed not to include it
in PG14 release note.

Regards,

-- 
Masahiko Sawada
EDB:  https://www.enterprisedb.com/



Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
On Tue, May 18, 2021 at 10:07:25AM -0400, Bruce Momjian wrote:
> On Tue, May 18, 2021 at 06:28:49PM +0900, Masahiko Sawada wrote:
> > On Mon, May 10, 2021 at 3:03 PM Bruce Momjian <bruce@momjian.us> wrote:
> > >
> > > I have committed the first draft of the PG 14 release notes.  You can
> > > see the most current  build of them here:
> > >
> > >         https://momjian.us/pgsql_docs/release-14.html
> > 
> > I think we need to mention in the release note that
> > vacuum_cleanup_index_scale_factor GUC parameter has been removed and
> > vacuum_cleanup_index_scale_factor storage parameter has been
> > deprecated (please refer to commit 9f3665fb and effdd3f3b63).
> 
> Looking at the full commit message:
> 
>     commit 9f3665fbfc
>     Author: Peter Geoghegan <pg@bowt.ie>
>     Date:   Wed Mar 10 16:27:01 2021 -0800
>     
>         Don't consider newly inserted tuples in nbtree VACUUM.
>     
>         Remove the entire idea of "stale stats" within nbtree VACUUM (stop
>         caring about stats involving the number of inserted tuples).  Also
>         remove the vacuum_cleanup_index_scale_factor GUC/param on the master
>         branch (though just disable them on postgres 13).

> This was backpatched into PG 13.3, which was released last week:

>           remove the stale-statistics logic.  The control parameter for that,
>           <varname>vacuum_cleanup_index_scale_factor</varname>, will be
>           removed entirely in v14.  In v13, it remains present to avoid
>           breaking existing configuration files, but it no longer does
>           anything.
>          </para>
>         </listitem>
> 
> Therefore, it didn't show up in my src/tools/git_changelog output, and I
> did not include it.

Normally, stuff that was backpatched isn't included in major release notes,
since the change would/could normally happen during a minor -> minor+1 release.

As things stand, in this case I think it *should* be included, since the
backpatched change isn't the same as the change to HEAD (removing the GUC).
The git_changelog output might well be wrong in this case (or, arguably, the
"remove the GUC entirely" should've been a separate master-only commit than the
"make the GUC do nothing" commit).

However, Peter indicated an intent to add a reloption to disable the vacuum
optimization, so maybe the removal of the GUC could be documented at that time.

-- 
Justin



Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Tue, May 18, 2021 at 7:44 AM Justin Pryzby <pryzby@telsasoft.com> wrote:
> As things stand, in this case I think it *should* be included, since the
> backpatched change isn't the same as the change to HEAD (removing the GUC).
> The git_changelog output might well be wrong in this case (or, arguably, the
> "remove the GUC entirely" should've been a separate master-only commit than the
> "make the GUC do nothing" commit).

I suppose that's true -- maybe it should be listed separately, because
the GUC is removed in 14 only.

> However, Peter indicated an intent to add a reloption to disable the vacuum
> optimization, so maybe the removal of the GUC could be documented at that time.

This is unrelated to the bypass indexes in VACUUM thing.

-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 18, 2021 at 09:44:09AM -0500, Justin Pryzby wrote:
> As things stand, in this case I think it *should* be included, since the
> backpatched change isn't the same as the change to HEAD (removing the GUC).
> The git_changelog output might well be wrong in this case (or, arguably, the
> "remove the GUC entirely" should've been a separate master-only commit than the
> "make the GUC do nothing" commit).

I think having the same commit message for different patches to
different branches is an unwise behavior, particularly if the commit is
release-note worthy.  (I think it is fine if the patch is purely
mechanical and hence not release-note worthy.)  The master patch is hash
9f3665fbfc and the PG 13 patch is hash 9663d12446.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 18, 2021 at 07:51:00AM -0700, Peter Geoghegan wrote:
> On Tue, May 18, 2021 at 7:44 AM Justin Pryzby <pryzby@telsasoft.com> wrote:
> > As things stand, in this case I think it *should* be included, since the
> > backpatched change isn't the same as the change to HEAD (removing the GUC).
> > The git_changelog output might well be wrong in this case (or, arguably, the
> > "remove the GUC entirely" should've been a separate master-only commit than the
> > "make the GUC do nothing" commit).
> 
> I suppose that's true -- maybe it should be listed separately, because
> the GUC is removed in 14 only.

OK, this is a mess then.  Would someone please give me the full text for
this, including the commit hash(es)?  Is the PG 13.3 release note text
accurate?

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Tue, May 18, 2021 at 8:09 AM Bruce Momjian <bruce@momjian.us> wrote:
> > I suppose that's true -- maybe it should be listed separately, because
> > the GUC is removed in 14 only.
>
> OK, this is a mess then.  Would someone please give me the full text for
> this, including the commit hash(es)?  Is the PG 13.3 release note text
> accurate?

The 13.3 release notes say this:

"""
Disable the vacuum_cleanup_index_scale_factor parameter and storage
option (Peter Geoghegan)

The notion of tracking “stale” index statistics proved to interact
badly with the autovacuum_vacuum_insert_threshold parameter, resulting
in unnecessary full-index scans and consequent degradation of
autovacuum performance. The latter mechanism seems superior, so remove
the stale-statistics logic. The control parameter for that,
vacuum_cleanup_index_scale_factor, will be removed entirely in v14. In
v13, it remains present to avoid breaking existing configuration
files, but it no longer does anything.
"""

I think that this is slightly inaccurate, though that's probably of
little consequence. The autovacuum_vacuum_insert_threshold GUC was in
fact removed in v14, but the reloption was ultimately not removed from
HEAD/v14 for compatibility reasons. This is not apparent just from
commit 9f3665fb -- there was a clean-up commit (commit effdd3f3) that
added the reloption back following further discussion. So the
equivalent reloption remains in place though is disabled, just for
compatibility purposes -- on v13 and v14. The GUC is where v13 and v14
differ -- only v13 still has the GUC to avoid breaking user's
postgresql.conf files (though it's also delisted). Deprecating a
reloption is much harder than deprecating a GUC.

In my opinion this should be interpreted as already handled by the
backpatch to 13.3, and so not necessary to handle again now -- despite
the GUC thing. It's possible that no users set the GUC at all, because
it wasn't particularly well thought out. This entire situation is
probably unprecedented (we just don't deprecate reloptions very
often), so I defer to your judgement, Bruce.

--
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 18, 2021 at 08:34:55AM -0700, Peter Geoghegan wrote:
> In my opinion this should be interpreted as already handled by the
> backpatch to 13.3, and so not necessary to handle again now -- despite
> the GUC thing. It's possible that no users set the GUC at all, because
> it wasn't particularly well thought out. This entire situation is
> probably unprecedented (we just don't deprecate reloptions very
> often), so I defer to your judgement, Bruce.

I am thiking the vacuum_cleanup_index_scale_factor existance in a PG 14
postgresql.conf will throw an error, unlike 13.x, so I do think we need
to mention this so people will know to remove it from their
postgresql.conf before upgrades, right?  I don't think the PG 13.3
release note mention really makes it clear it has to be removed.  In a
dump/restore, so we retain the reloption
vacuum_cleanup_index_scale_factor and just ignore it, or drop it on
restore?  I am hoping it is the later.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Tue, May 18, 2021 at 8:48 AM Bruce Momjian <bruce@momjian.us> wrote:
> I am thiking the vacuum_cleanup_index_scale_factor existance in a PG 14
> postgresql.conf will throw an error, unlike 13.x, so I do think we need
> to mention this so people will know to remove it from their
> postgresql.conf before upgrades, right?  I don't think the PG 13.3
> release note mention really makes it clear it has to be removed.  In a
> dump/restore, so we retain the reloption
> vacuum_cleanup_index_scale_factor and just ignore it, or drop it on
> restore?  I am hoping it is the later.

There is no dump/restore hazard on upgrade to 14, since the
vacuum_cleanup_index_scale_factor reloption remains in place (it's
just not in psql tab completion anymore, nor is it documented, etc).

It is possible (though I would certainly say unlikely) that the
vacuum_cleanup_index_scale_factor GUC will be in somebody's
postgresql.conf from an earlier version, and won't be recognized on
upgrade to v14. So maybe you need to say something about that
particular issue -- which could be framed as finishing off the process
started by the 13.3 commit. But that's it.

-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 18, 2021 at 08:54:56AM -0700, Peter Geoghegan wrote:
> On Tue, May 18, 2021 at 8:48 AM Bruce Momjian <bruce@momjian.us> wrote:
> > I am thiking the vacuum_cleanup_index_scale_factor existance in a PG 14
> > postgresql.conf will throw an error, unlike 13.x, so I do think we need
> > to mention this so people will know to remove it from their
> > postgresql.conf before upgrades, right?  I don't think the PG 13.3
> > release note mention really makes it clear it has to be removed.  In a
> > dump/restore, so we retain the reloption
> > vacuum_cleanup_index_scale_factor and just ignore it, or drop it on
> > restore?  I am hoping it is the later.
> 
> There is no dump/restore hazard on upgrade to 14, since the
> vacuum_cleanup_index_scale_factor reloption remains in place (it's
> just not in psql tab completion anymore, nor is it documented, etc).

So it is the former behavior --- "so we retain the reloption
vacuum_cleanup_index_scale_factor and just ignore it"?

> It is possible (though I would certainly say unlikely) that the
> vacuum_cleanup_index_scale_factor GUC will be in somebody's
> postgresql.conf from an earlier version, and won't be recognized on
> upgrade to v14. So maybe you need to say something about that
> particular issue -- which could be framed as finishing off the process
> started by the 13.3 commit. But that's it.

Yes.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
We do retain the reloption, but ignore it. Purely to avoid the dump and reload hazard. I think that you could reasonably tell users that it's gone completely, because it does nothing on either 13 or 14. It's hidden from them to the extent that that's possible. 

Peter Geoghegan
(Sent from my phone)

Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, May 18, 2021 at 09:01:44AM -0700, Peter Geoghegan wrote:
> We do retain the reloption, but ignore it. Purely to avoid the dump and reload
> hazard. I think that you could reasonably tell users that it's gone completely,
> because it does nothing on either 13 or 14. It's hidden from them to the extent
> that that's possible. 

I went with this release note text:

    <listitem>
    <!--
    Author: Peter Geoghegan <pg@bowt.ie>
    2021-03-10 [9f3665fbf] Don't consider newly inserted tuples in nbtree VACUUM.
    Author: Peter Geoghegan <pg@bowt.ie>
    2021-03-11 [effdd3f3b] Add back vacuum_cleanup_index_scale_factor parameter.
    -->
    
    <para>
    Remove server variable vacuum_cleanup_index_scale_factor (Peter Geoghegan)
    </para>
    
    <para>
    This setting was disabled in PostgreSQL version 13.3.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Tue, May 18, 2021 at 12:17 PM Bruce Momjian <bruce@momjian.us> wrote:
> I went with this release note text:

That seems reasonable -- thanks!

-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
These sound weird since markup was added in 6a5bde7d4:
https://www.postgresql.org/docs/devel/release-14.html
| Remove server and Chapter 34 support for the version 2 wire protocol (Heikki Linnakangas)
...
| Pass doubled quote marks in Chapter 36 SQL command strings literally (Tom Lane)

-Remove server and libpq support for the version 2 wire protocol (Heikki Linnakangas)
+Remove server and <xref linkend="libpq"/> support for the version 2 <link linkend="protocol">wire protocol</link>
(HeikkiLinnakangas)
 

> Force custom server variable names to match the pattern used for unquoted SQL identifiers (Tom Lane)
Say "Require" not force?

> This setting was disabled in PostgreSQL version 13.3.
"disabled" sounds like it was set to "off".  Maybe say it was ignored.

> Add long-running queries to be canceled if the client disconnects (Sergey Cherkashin, Thomas Munro)
Should say: Allow

> The server variable client_connection_check_interval allows supporting operating systems, e.g., Linux, to
automaticallycancel queries by disconnected clients.
 
say "some operating systems" ?

> This can be disabled by turning client option "sslsni" off.
"turning off"

| Add %P to log_line_prefix to report the parallel group leader (Justin Pryzby)

Maybe it should say "Allow %P in log_line_prefix to ...", otherwise it sounds
like the default was changed.

| Reduce the default value of vacuum_cost_page_miss (Peter Geoghegan) 
|  This new default better reflects current hardware capabilities. 
Also say: the previous default was 10.



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Wed, May 19, 2021 at 09:39:08AM -0500, Justin Pryzby wrote:
> These sound weird since markup was added in 6a5bde7d4:
> https://www.postgresql.org/docs/devel/release-14.html
> | Remove server and Chapter 34 support for the version 2 wire protocol (Heikki Linnakangas)
> ...
> | Pass doubled quote marks in Chapter 36 SQL command strings literally (Tom Lane)

> -Remove server and libpq support for the version 2 wire protocol (Heikki Linnakangas)
> +Remove server and <xref linkend="libpq"/> support for the version 2 <link linkend="protocol">wire protocol</link>
(HeikkiLinnakangas)
 

Agreed, fixed.

> > Force custom server variable names to match the pattern used for unquoted SQL identifiers (Tom Lane)
> Say "Require" not force?

Agreed, fixed.

> > This setting was disabled in PostgreSQL version 13.3.
> "disabled" sounds like it was set to "off".  Maybe say it was ignored.

OK, I went with this:

    This setting was ignored starting in
    <productname>PostgreSQL</productname> version 13.3.

> > Add long-running queries to be canceled if the client disconnects (Sergey Cherkashin, Thomas Munro)
> Should say: Allow

Yes.

> > The server variable client_connection_check_interval allows supporting operating systems, e.g., Linux, to
automaticallycancel queries by disconnected clients.
 
> say "some operating systems" ?

Agreed, done.

> > This can be disabled by turning client option "sslsni" off.
> "turning off"

Agreed.

> | Add %P to log_line_prefix to report the parallel group leader (Justin Pryzby)
> 
> Maybe it should say "Allow %P in log_line_prefix to ...", otherwise it sounds
> like the default was changed.

I am not sure, but I changed it as you suggested:

    Allow %P in <varname>log_line_prefix</varname> to report the
    parallel group leader (Justin Pryzby)

> | Reduce the default value of vacuum_cost_page_miss (Peter Geoghegan) 
> |  This new default better reflects current hardware capabilities. 
> Also say: the previous default was 10.

Uh, we didn't report the new value, so why report the old one?

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
On Thu, May 20, 2021 at 03:44:46PM -0400, Bruce Momjian wrote:
> > | Reduce the default value of vacuum_cost_page_miss (Peter Geoghegan) 
> > |  This new default better reflects current hardware capabilities. 
> > Also say: the previous default was 10.
> 
> Uh, we didn't report the new value, so why report the old one?

Good point.
For symmetry with this one, maybe the old and new values should be included?

|Change checkpoint_completion_target default to 0.9 (Stephen Frost)
|The previous default was 0.5.

-- 
Justin



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Thu, May 20, 2021 at 02:55:18PM -0500, Justin Pryzby wrote:
> On Thu, May 20, 2021 at 03:44:46PM -0400, Bruce Momjian wrote:
> > > | Reduce the default value of vacuum_cost_page_miss (Peter Geoghegan) 
> > > |  This new default better reflects current hardware capabilities. 
> > > Also say: the previous default was 10.
> > 
> > Uh, we didn't report the new value, so why report the old one?
> 
> Good point.
> For symmetry with this one, maybe the old and new values should be included?

Not sure.  Those values are kind of hard to understand, so I am afraid
there would be more confusion by mentioning them.

> |Change checkpoint_completion_target default to 0.9 (Stephen Frost)
> |The previous default was 0.5.

Uh, that one is frequently modified by users, to an extent I didn't
understand why we kept it at 0.5 for so long, which is why I mentioned
it.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Alvaro Herrera
Date:
On 2021-May-20, Bruce Momjian wrote:

> On Thu, May 20, 2021 at 02:55:18PM -0500, Justin Pryzby wrote:
> > On Thu, May 20, 2021 at 03:44:46PM -0400, Bruce Momjian wrote:
> > > > | Reduce the default value of vacuum_cost_page_miss (Peter Geoghegan) 
> > > > |  This new default better reflects current hardware capabilities. 
> > > > Also say: the previous default was 10.
> > > 
> > > Uh, we didn't report the new value, so why report the old one?
> > 
> > Good point.
> > For symmetry with this one, maybe the old and new values should be included?
> 
> Not sure.  Those values are kind of hard to understand, so I am afraid
> there would be more confusion by mentioning them.
> 
> > |Change checkpoint_completion_target default to 0.9 (Stephen Frost)
> > |The previous default was 0.5.
> 
> Uh, that one is frequently modified by users, to an extent I didn't
> understand why we kept it at 0.5 for so long, which is why I mentioned
> it.

You also mentioned 'md5' in the entry about password_encryption,
remember?  I tend to agree with Justin: if it's not too much extra space
to mention both values, let's just do that.  "Reduce the value of X to Y
from Z.  The new default better reflects ..." seems OK to me.

I prefer "to Y from Z" rather than "from Z to Y", because then the new
value appears first, which seems a tiny improvement in readability,
though the phrase is in the opposite order of traditional.  Also it
seems better than "change value of X to Y.  The previous default was Z"
because it then becomes a little more verbose than really needed.  But
maybe that's OK too.

-- 
Álvaro Herrera                            39°49'30"S 73°17'W
"La fuerza no está en los medios físicos
sino que reside en una voluntad indomable" (Gandhi)



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Thu, May 20, 2021 at 04:35:07PM -0400, Álvaro Herrera wrote:
> On 2021-May-20, Bruce Momjian wrote:
> 
> > On Thu, May 20, 2021 at 02:55:18PM -0500, Justin Pryzby wrote:
> > > On Thu, May 20, 2021 at 03:44:46PM -0400, Bruce Momjian wrote:
> > > > > | Reduce the default value of vacuum_cost_page_miss (Peter Geoghegan) 
> > > > > |  This new default better reflects current hardware capabilities. 
> > > > > Also say: the previous default was 10.
> > > > 
> > > > Uh, we didn't report the new value, so why report the old one?
> > > 
> > > Good point.
> > > For symmetry with this one, maybe the old and new values should be included?
> > 
> > Not sure.  Those values are kind of hard to understand, so I am afraid
> > there would be more confusion by mentioning them.
> > 
> > > |Change checkpoint_completion_target default to 0.9 (Stephen Frost)
> > > |The previous default was 0.5.
> > 
> > Uh, that one is frequently modified by users, to an extent I didn't
> > understand why we kept it at 0.5 for so long, which is why I mentioned
> > it.
> 
> You also mentioned 'md5' in the entry about password_encryption,
> remember?  I tend to agree with Justin: if it's not too much extra space
> to mention both values, let's just do that.  "Reduce the value of X to Y
> from Z.  The new default better reflects ..." seems OK to me.
> 
> I prefer "to Y from Z" rather than "from Z to Y", because then the new
> value appears first, which seems a tiny improvement in readability,
> though the phrase is in the opposite order of traditional.  Also it
> seems better than "change value of X to Y.  The previous default was Z"
> because it then becomes a little more verbose than really needed.  But
> maybe that's OK too.

I went with this text:

    Reduce the default value of <varname><xref
    linkend="guc-vacuum-cost-page-miss"></varname> from 10 milliseconds to 2
    (Peter Geoghegan)

I think with numbers, and the fact we are saying "decrease" havint them
in the from/to order is best.  If this was non-numeric, like to scram
from md5, it would make more sense to use to/from.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Thu, May 20, 2021 at 2:37 PM Bruce Momjian <bruce@momjian.us> wrote:
> I went with this text:
>
>         Reduce the default value of <varname><xref
>         linkend="guc-vacuum-cost-page-miss"></varname> from 10 milliseconds to 2
>         (Peter Geoghegan)
>
> I think with numbers, and the fact we are saying "decrease" havint them
> in the from/to order is best.  If this was non-numeric, like to scram
> from md5, it would make more sense to use to/from.

The point of this change was to make the cost of dirtying pages much
higher than everything else, since writes are in effect much more
expensive on modern hardware. Don't know if you need to say that.


-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Thu, May 20, 2021 at 04:19:50PM -0700, Peter Geoghegan wrote:
> On Thu, May 20, 2021 at 2:37 PM Bruce Momjian <bruce@momjian.us> wrote:
> > I went with this text:
> >
> >         Reduce the default value of <varname><xref
> >         linkend="guc-vacuum-cost-page-miss"></varname> from 10 milliseconds to 2
> >         (Peter Geoghegan)
> >
> > I think with numbers, and the fact we are saying "decrease" havint them
> > in the from/to order is best.  If this was non-numeric, like to scram
> > from md5, it would make more sense to use to/from.
> 
> The point of this change was to make the cost of dirtying pages much
> higher than everything else, since writes are in effect much more
> expensive on modern hardware. Don't know if you need to say that.

I think our text "This new default better reflects current hardware
capabilities." is detailed enough.  People can dig into the item to see
what it does and how it adjusts costs.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Thu, May 20, 2021 at 4:54 PM Bruce Momjian <bruce@momjian.us> wrote:
> I think our text "This new default better reflects current hardware
> capabilities." is detailed enough.  People can dig into the item to see
> what it does and how it adjusts costs.

Fair enough.

I noticed something about the same item that needs to be fixed,
though. The vacuum_cost_page_miss GUC does not directly represent any
kind of time-based delay, but the current wording says that it uses
millisecond units. In fact the vacuum_cost_page_miss GUC is based on
abstract cost units, apportioned from vacuum_cost_limit. I suggested
that the wording talk about relative cost differences in part because
that's just how the GUC works, in general.

-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Sat, May 22, 2021 at 03:35:13PM -0700, Peter Geoghegan wrote:
> On Thu, May 20, 2021 at 4:54 PM Bruce Momjian <bruce@momjian.us> wrote:
> > I think our text "This new default better reflects current hardware
> > capabilities." is detailed enough.  People can dig into the item to see
> > what it does and how it adjusts costs.
> 
> Fair enough.
> 
> I noticed something about the same item that needs to be fixed,
> though. The vacuum_cost_page_miss GUC does not directly represent any
> kind of time-based delay, but the current wording says that it uses
> millisecond units. In fact the vacuum_cost_page_miss GUC is based on
> abstract cost units, apportioned from vacuum_cost_limit. I suggested
> that the wording talk about relative cost differences in part because
> that's just how the GUC works, in general.

OK, thanks.  Here is the updated text:

    <listitem>
    <!--
    Author: Peter Geoghegan <pg@bowt.ie>
    2021-01-27 [e19594c5c] Reduce the default value of
    vacuum_cost_page_miss.
    -->
    
    <para>
    Reduce the default value of <xref linkend="guc-vacuum-cost-page-miss"/>
    to better reflects current hardware capabilities (Peter Geoghegan)
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Stephen Frost
Date:
Greetings,

* Bruce Momjian (bruce@momjian.us) wrote:
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
>
>     https://momjian.us/pgsql_docs/release-14.html

It occurs to me that the wording around the new default roles could
probably be better.  Specifically:

Add predefined roles pg_read_all_data and pg_write_all_data (Stephen Frost)

These non-login roles give read-only/write-only access to all objects.

Might be better as:

These non-login roles give read, or write, access to all tables, views,
and sequences.

(These roles don't actually allow, for example, a function to be
redefined, so saying 'all objects' isn't quite right either.)

While these roles could be used to create a 'read only' or 'write only'
role, they, themselves, do not explicitly convey that on to a role
because they don't do anything to prevent someone from GRANT'ing other
rights to some role which has been GRANT'd these predefined roles.  I
don't think anyone on this list thought differently from that, but the
phrasing strikes me as potentially confusing.

Maybe another way would be:

These non-login roles give (only) read, or write, access to all tables,
views, and sequences.

but I don't think saying 'only' there really adds anything and instead
invites confusion.

Thanks!

Stephen

Attachment

Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Sat, May 22, 2021 at 07:29:45PM -0400, Stephen Frost wrote:
> Greetings,
> 
> * Bruce Momjian (bruce@momjian.us) wrote:
> > I have committed the first draft of the PG 14 release notes.  You can
> > see the most current  build of them here:
> > 
> >     https://momjian.us/pgsql_docs/release-14.html
> 
> It occurs to me that the wording around the new default roles could
> probably be better.  Specifically:
> 
> Add predefined roles pg_read_all_data and pg_write_all_data (Stephen Frost)
> 
> These non-login roles give read-only/write-only access to all objects.
> 
> Might be better as:
> 
> These non-login roles give read, or write, access to all tables, views,
> and sequences.
> 
> (These roles don't actually allow, for example, a function to be
> redefined, so saying 'all objects' isn't quite right either.)
> 
> While these roles could be used to create a 'read only' or 'write only'
> role, they, themselves, do not explicitly convey that on to a role
> because they don't do anything to prevent someone from GRANT'ing other
> rights to some role which has been GRANT'd these predefined roles.  I
> don't think anyone on this list thought differently from that, but the
> phrasing strikes me as potentially confusing.
> 
> Maybe another way would be:
> 
> These non-login roles give (only) read, or write, access to all tables,
> views, and sequences.
> 
> but I don't think saying 'only' there really adds anything and instead
> invites confusion.

OK, I went with this text:

    <listitem>
    <!--
    Author: Stephen Frost <sfrost@snowman.net>
    2021-04-05 [6c3ffd697] Add pg_read_all_data and pg_write_all_data roles
    -->
    
    <para>
    Add predefined roles <link
    linkend="predefined-roles"><structname>pg_read_all_data</structname></link>
    and <structname>pg_write_all_data</structname> (Stephen Frost)
    </para>
    
    <para>
    These non-login roles can be used to give read or write permission to
    all tables, views, and sequences.
    </para>
    </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
doc/src/sgml/release-14.sgml-      <listitem>
doc/src/sgml/release-14.sgml-<!--
doc/src/sgml/release-14.sgml-Author: Fujii Masao <fujii@postgresql.org>
doc/src/sgml/release-14.sgml-2020-10-02 [8d9a93596] Add pg_stat_wal statistics view.
doc/src/sgml/release-14.sgml-Author: Fujii Masao <fujii@postgresql.org>
doc/src/sgml/release-14.sgml-2020-12-02 [01469241b] Track total number of WAL records, FPIs and bytes genera
doc/src/sgml/release-14.sgml-Author: Fujii Masao <fujii@postgresql.org>
doc/src/sgml/release-14.sgml:2021-03-09 [ff99918c6] Track total amounts of times spent writing and syncing W
doc/src/sgml/release-14.sgml--->
doc/src/sgml/release-14.sgml-
doc/src/sgml/release-14.sgml-       <para>
doc/src/sgml/release-14.sgml-        Add system view <link
doc/src/sgml/release-14.sgml-        linkend="monitoring-pg-stat-wal-view"><structname>pg_stat_wal</structname></link>
doc/src/sgml/release-14.sgml-        which reports <acronym>WAL</acronym> activity (Masahiro Ikeda)
doc/src/sgml/release-14.sgml-       </para>
doc/src/sgml/release-14.sgml-      </listitem>

I think this should also mention the GUC:
| track_wal_io_timing

-- 
Justin



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Fri, Jun  4, 2021 at 04:31:06PM -0500, Justin Pryzby wrote:
> doc/src/sgml/release-14.sgml-      <listitem>
> doc/src/sgml/release-14.sgml-<!--
> doc/src/sgml/release-14.sgml-Author: Fujii Masao <fujii@postgresql.org>
> doc/src/sgml/release-14.sgml-2020-10-02 [8d9a93596] Add pg_stat_wal statistics view.
> doc/src/sgml/release-14.sgml-Author: Fujii Masao <fujii@postgresql.org>
> doc/src/sgml/release-14.sgml-2020-12-02 [01469241b] Track total number of WAL records, FPIs and bytes genera
> doc/src/sgml/release-14.sgml-Author: Fujii Masao <fujii@postgresql.org>
> doc/src/sgml/release-14.sgml:2021-03-09 [ff99918c6] Track total amounts of times spent writing and syncing W
> doc/src/sgml/release-14.sgml--->
> doc/src/sgml/release-14.sgml-
> doc/src/sgml/release-14.sgml-       <para>
> doc/src/sgml/release-14.sgml-        Add system view <link
> doc/src/sgml/release-14.sgml-
linkend="monitoring-pg-stat-wal-view"><structname>pg_stat_wal</structname></link>
> doc/src/sgml/release-14.sgml-        which reports <acronym>WAL</acronym> activity (Masahiro Ikeda)
> doc/src/sgml/release-14.sgml-       </para>
> doc/src/sgml/release-14.sgml-      </listitem>
> 
> I think this should also mention the GUC:
> | track_wal_io_timing

This is part of this commit:

    commit ff99918c62
    Author: Fujii Masao <fujii@postgresql.org>
    Date:   Tue Mar 9 16:52:06 2021 +0900
    
        Track total amounts of times spent writing and syncing WAL data to disk.
    
        This commit adds new GUC track_wal_io_timing. When this is enabled,
        the total amounts of time XLogWrite writes and issue_xlog_fsync syncs
        WAL data to disk are counted in pg_stat_wal. This information would be
        useful to check how much WAL write and sync affect the performance.

The feature is clearly the new system view pg_stat_wal.  The question is
whether we should also document that track_wal_io_timing adds timing
control to that new system view.  Normally we don't mention additional
features, like pg_dump support, for features we add in a major release. 
The documentation we link to from the release notes does mention
track_wal_io_timing.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
| Add Set Server Name Indication (SNI) for SSL connection packets (Peter Eisentraut) 
Remove "Set"

| Reduce the default value of vacuum_cost_page_miss from 10 milliseconds to 2 (Peter Geoghegan) 
Peter mentioned that this should not say "milliseconds" (but maybe the page I'm
looking at is old).

| Cause vacuum operations to be aggressive if the table is near xid or multixact wraparound (Masahiko Sawada, Peter
Geoghegan)
 
Say "become aggressive" ?

|  Allow the arbitrary collations of partition boundary values (Tom Lane) 
Remove "the"

| Generate WAL invalidations message during command completion when using logical replication (Dilip Kumar, Tomas
Vondra,Amit Kapila) 
 
invalidation messages

|  Add support for infinity and -infinity values to the numeric data type (Tom Lane) 
"-infinity" has markup but not "infinity" ?

| Allow vacuum to deallocate space reserved by trailing unused heap line pointers (Matthias van de Meent, Peter
Geoghegan)
 
say "reclaim space" ?



Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
On Fri, Jun 11, 2021 at 10:45:51PM -0500, Justin Pryzby wrote:
> | Add Set Server Name Indication (SNI) for SSL connection packets (Peter Eisentraut) 
> Remove "Set"
> 
> | Reduce the default value of vacuum_cost_page_miss from 10 milliseconds to 2 (Peter Geoghegan) 
> Peter mentioned that this should not say "milliseconds" (but maybe the page I'm
> looking at is old).
> 
> | Cause vacuum operations to be aggressive if the table is near xid or multixact wraparound (Masahiko Sawada, Peter
Geoghegan)
 
> Say "become aggressive" ?
> 
> |  Allow the arbitrary collations of partition boundary values (Tom Lane) 
> Remove "the"
> 
> | Generate WAL invalidations message during command completion when using logical replication (Dilip Kumar, Tomas
Vondra,Amit Kapila) 
 
> invalidation messages
> 
> |  Add support for infinity and -infinity values to the numeric data type (Tom Lane) 
> "-infinity" has markup but not "infinity" ?
> 
> | Allow vacuum to deallocate space reserved by trailing unused heap line pointers (Matthias van de Meent, Peter
Geoghegan)
 
> say "reclaim space" ?

Some more:

| VACUUM now has a PROCESS_TOAST which can be set to false to disable TOAST processing, and vacuumdb has a
--no-process-toastoption. 
 
has a process_toast *option

| Previously, if the object already exists, EXPLAIN would fail. 
already existed

| Function pg_stat_reset_replication_slot() resets slot statistics. 
*The function.  But maybe it should be omitted.

| New options are read-only, primary, standby, and prefer-standby. 
*The new options

| Allow reindexdb to change the tablespace of the new index (Michael Paquier)
| This is done by specifying --tablespace.
I think this should be merged with the corresponding server feature, like this one:
|Add ability to skip vacuuming of TOAST tables (Nathan Bossart)
|VACUUM now has a PROCESS_TOAST which can be set to false to disable TOAST processing, and vacuumdb has a
--no-process-toastoption. 
 

Or, the client-side option could be omitted.  This is distinguished from
vacuumdb --no-index-cleanup and --no-truncate, for which the server support was
added in v12, and the client support was essentially an omision.

| Add documentation for the factorial() function (Peter Eisentraut)
| With the removal of the ! operator in this release, factorial() is the only built-in way to compute a factorial. 
Could be ommited or collapsed into the other item.  I know Tom thinks that
it's unnecesary to document changes to documentation.

-- 
Justin



Re: PG 14 release notes, first draft

From
Tomas Vondra
Date:
On 5/10/21 8:03 AM, Bruce Momjian wrote:
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
> 
>     https://momjian.us/pgsql_docs/release-14.html
> 
> I need clarification on many items, and the document still needs its
> items properly ordered, and markup added.  I also expect a lot of
> feedback.
> 
> I plan to work on completing this document this coming week in
> preparation for beta next week.
> 

Sorry it took me a while to look at the release notes. I have one
suggestion regarding this item:


  Allow logical replication to stream long in-progress transactions to
  subscribers (Tomas Vondra, Dilip Kumar, Amit Kapila, Ajin Cherian,
  Nikhil Sontakke, Stas Kelvich)

AFAICS the authors are generally ordered by how much they contributed to
the feature. In that case I'd move myself down the list - certainly
after Dilip and Amit, perhaps after Ajin. While I posted the original
patch, but most of the work after that to get it committed was done by
those two/three people.


regards

-- 
Tomas Vondra
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



Re: PG 14 release notes, first draft

From
John Naylor
Date:
Hi Bruce,

For this item:

<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-26 [77b88cd1b] BRIN bloom indexes
-->

       <para>
        Allow <acronym>BRIN</acronym> indexes to use bloom filters
        (Tomas Vondra)
       </para>

       <para>
        This allows bloom indexes to be used effectively with data that
        is not physically localized in the heap.
       </para>
      </listitem>

The text implies that this affects contrib/bloom. I think it should be "This allows BRIN indexes...". 

--

Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Fri, Jun 11, 2021 at 10:45:51PM -0500, Justin Pryzby wrote:
> | Add Set Server Name Indication (SNI) for SSL connection packets (Peter Eisentraut) 
> Remove "Set"

Fixed.

> | Reduce the default value of vacuum_cost_page_miss from 10 milliseconds to 2 (Peter Geoghegan) 
> Peter mentioned that this should not say "milliseconds" (but maybe the page I'm
> looking at is old).

It is old.  It is now:

        Reduce the default value of <xref
        linkend="guc-vacuum-cost-page-miss"/> to better reflects current
        hardware capabilities (Peter Geoghegan)

> | Cause vacuum operations to be aggressive if the table is near xid or multixact wraparound (Masahiko Sawada, Peter
Geoghegan)
 
> Say "become aggressive" ?

Updated text:

        Cause vacuum operations to be more aggressive if the table is near
        xid or multixact wraparound (Masahiko Sawada, Peter Geoghegan)

> |  Allow the arbitrary collations of partition boundary values (Tom Lane) 
> Remove "the"

Agreed, removed.

> | Generate WAL invalidations message during command completion when using logical replication (Dilip Kumar, Tomas
Vondra,Amit Kapila) 
 
> invalidation messages

Fixed.

> |  Add support for infinity and -infinity values to the numeric data type (Tom Lane) 
> "-infinity" has markup but not "infinity" ?

Fixed.
> 
> | Allow vacuum to deallocate space reserved by trailing unused heap line pointers (Matthias van de Meent, Peter
Geoghegan)
 
> say "reclaim space" ?

OK, new text is:

        Allow vacuum to reclaim space used by unused trailing heap
        line pointers (Matthias van de Meent, Peter Geoghegan)

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, Jun 14, 2021 at 11:37:58AM -0500, Justin Pryzby wrote:
> Some more:
> 
> | VACUUM now has a PROCESS_TOAST which can be set to false to disable TOAST processing, and vacuumdb has a
--no-process-toastoption. 
 
> has a process_toast *option

Agreed.

> | Previously, if the object already exists, EXPLAIN would fail. 
> already existed

Fixed.

> | Function pg_stat_reset_replication_slot() resets slot statistics. 
> *The function.  But maybe it should be omitted.

OK, I went with "The function".

> | New options are read-only, primary, standby, and prefer-standby. 
> *The new options

Agreed.

> | Allow reindexdb to change the tablespace of the new index (Michael Paquier)
> | This is done by specifying --tablespace.
> I think this should be merged with the corresponding server feature, like this one:
> |Add ability to skip vacuuming of TOAST tables (Nathan Bossart)
> |VACUUM now has a PROCESS_TOAST which can be set to false to disable TOAST processing, and vacuumdb has a
--no-process-toastoption. 
 
> 
> Or, the client-side option could be omitted.  This is distinguished from
> vacuumdb --no-index-cleanup and --no-truncate, for which the server support was
> added in v12, and the client support was essentially an omision.

I am inclined to mention reindexdb because we mention the SQL command
option in the text.  Here is the updated text:

         <listitem>
    <!--
    Author: Michael Paquier <michael@paquier.xyz>
    2021-02-04 [c5b286047] Add TABLESPACE option to REINDEX
    Author: Michael Paquier <michael@paquier.xyz>
    2021-03-03 [57e6db706] Add - -tablespace option to reindexdb
    -->
    
          <para>
           Allow <link linkend="sql-reindex"><command>REINDEX</command></link>
           to change the tablespace of the new index (Alexey Kondratov,
           Michael Paquier, Justin Pryzby)
          </para>
    
          <para>
           This is done by specifying a <literal>TABLESPACE</literal> clause.
           A <option>--tablespace</option> option was also added to <link
           linkend="app-reindexdb"><application>reindexdb</application></link>
           to control this.
         </listitem>

> | Add documentation for the factorial() function (Peter Eisentraut)
> | With the removal of the ! operator in this release, factorial() is the only built-in way to compute a factorial. 
> Could be ommited or collapsed into the other item.  I know Tom thinks that
> it's unnecesary to document changes to documentation.

Uh, I think we need both items.  We are removing a feature and asking
people to use an existing feature that was previously undocumented.  I
think having two items makes it clear that the feature existed in
previous releases.  I just tried merging them into one item and there
were just too many changes for it to be clear.

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, Jun 14, 2021 at 06:57:41PM +0200, Tomas Vondra wrote:
> Sorry it took me a while to look at the release notes. I have one
> suggestion regarding this item:
> 
> 
>   Allow logical replication to stream long in-progress transactions to
>   subscribers (Tomas Vondra, Dilip Kumar, Amit Kapila, Ajin Cherian,
>   Nikhil Sontakke, Stas Kelvich)
> 
> AFAICS the authors are generally ordered by how much they contributed to
> the feature. In that case I'd move myself down the list - certainly
> after Dilip and Amit, perhaps after Ajin. While I posted the original
> patch, but most of the work after that to get it committed was done by
> those two/three people.

OK, I moved you after Ajin.   Sometimes it isn't clear how much of an
original patch was modified by later authors.

FYI, the most recent PG 14 relnote doc build is at:

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

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, Jun 14, 2021 at 01:29:42PM -0400, John Naylor wrote:
> Hi Bruce,
> 
> For this item:
> 
> <!--
> Author: Tomas Vondra <tomas.vondra@postgresql.org>
> 2021-03-26 [77b88cd1b] BRIN bloom indexes
> -->
> 
>        <para>
>         Allow <acronym>BRIN</acronym> indexes to use bloom filters
>         (Tomas Vondra)
>        </para>
> 
>        <para>
>         This allows bloom indexes to be used effectively with data that
>         is not physically localized in the heap.
>        </para>
>       </listitem>
> 
> The text implies that this affects contrib/bloom. I think it should be "This
> allows BRIN indexes...". 

Ah, I see your point.  Updated text is:

          <listitem>
    <!--
    Author: Tomas Vondra <tomas.vondra@postgresql.org>
    2021-03-26 [77b88cd1b] BRIN bloom indexes
    -->
    
           <para>
            Allow <acronym>BRIN</acronym> indexes to use bloom filters
            (Tomas Vondra)
           </para>
    
           <para>
            This allows <acronym>BRIN</acronym> indexes to be used effectively
            with data that is not physically localized in the heap.
           </para>
          </listitem>

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Masahiko Sawada
Date:
On Mon, May 10, 2021 at 3:03 PM Bruce Momjian <bruce@momjian.us> wrote:
>
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
>
>         https://momjian.us/pgsql_docs/release-14.html
>

It might have already been discussed but I think we should mention
commit bed90759f in the release note. The commit seems like a bug fix
but it not back-patched to the older versions at least for now. There
is a discussion[1] that we will revisit that a couple of months after
14 is released so as there is some feedback from the field with this
change.

Regards,

[1] https://www.postgresql.org/message-id/YCsZIX2A2Ilsvfnl@paquier.xyz

--
Masahiko Sawada
EDB:  https://www.enterprisedb.com/



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, Jun 15, 2021 at 10:06:49AM +0900, Masahiko Sawada wrote:
> On Mon, May 10, 2021 at 3:03 PM Bruce Momjian <bruce@momjian.us> wrote:
> >
> > I have committed the first draft of the PG 14 release notes.  You can
> > see the most current  build of them here:
> >
> >         https://momjian.us/pgsql_docs/release-14.html
> >
> 
> It might have already been discussed but I think we should mention
> commit bed90759f in the release note. The commit seems like a bug fix
> but it not back-patched to the older versions at least for now. There
> is a discussion[1] that we will revisit that a couple of months after
> 14 is released so as there is some feedback from the field with this
> change.

OK, but I need more information on how users will see a difference based
on this commit:

    commit bed90759fc
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    Date:   Fri Oct 9 16:20:12 2020 -0400
    
        Fix our Windows stat() emulation to handle file sizes > 4GB.
    
        Hack things so that our idea of "struct stat" is equivalent to Windows'
        struct __stat64, allowing it to have a wide enough st_size field.
    
        Instead of relying on native stat(), use GetFileInformationByHandle().
        This avoids a number of issues with Microsoft's multiple and rather
        slipshod emulations of stat().  We still need to jump through hoops
        to deal with ERROR_DELETE_PENDING, though :-(
    
        Pull the relevant support code out of dirmod.c and put it into
        its own file, win32stat.c.
    
        Still TODO: do we need to do something different with lstat(),
        rather than treating it identically to stat()?
    
        Juan José Santamaría Flecha, reviewed by Emil Iggland;
        based on prior work by Michael Paquier, Sergey Zubkovsky, and others
    
        Discussion: https://postgr.es/m/1803D792815FC24D871C00D17AE95905CF5099@g01jpexmbkw24
        Discussion: https://postgr.es/m/15858-9572469fd3b73263@postgresql.org


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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Masahiko Sawada
Date:
On Tue, Jun 15, 2021 at 10:36 AM Bruce Momjian <bruce@momjian.us> wrote:
>
> On Tue, Jun 15, 2021 at 10:06:49AM +0900, Masahiko Sawada wrote:
> > On Mon, May 10, 2021 at 3:03 PM Bruce Momjian <bruce@momjian.us> wrote:
> > >
> > > I have committed the first draft of the PG 14 release notes.  You can
> > > see the most current  build of them here:
> > >
> > >         https://momjian.us/pgsql_docs/release-14.html
> > >
> >
> > It might have already been discussed but I think we should mention
> > commit bed90759f in the release note. The commit seems like a bug fix
> > but it not back-patched to the older versions at least for now. There
> > is a discussion[1] that we will revisit that a couple of months after
> > 14 is released so as there is some feedback from the field with this
> > change.
>
> OK, but I need more information on how users will see a difference based
> on this commit:

I think that since with this commit the server on Windows can handle a
file over 4GB, COPY FROM loading data from an over 4GB file and
pg_dump dumping a large table work now.

Regards,

-- 
Masahiko Sawada
EDB:  https://www.enterprisedb.com/



Re: PG 14 release notes, first draft

From
Michael Paquier
Date:
On Tue, Jun 15, 2021 at 11:49:21AM +0900, Masahiko Sawada wrote:
> On Tue, Jun 15, 2021 at 10:36 AM Bruce Momjian <bruce@momjian.us> wrote:
>> OK, but I need more information on how users will see a difference based
>> on this commit:

+1.  That would be good to have in the release notes.

> I think that since with this commit the server on Windows can handle a
> file over 4GB, COPY FROM loading data from an over 4GB file and
> pg_dump dumping a large table work now.

Segment files or WAL files larger than 4GB also gain from that.
Anything for which we may finish to do a stat() on benefits from this
change if running on Windows.  For pg_dump, a workaround in PG <= 13
was to use --no-sync as the stat() failure came from files with a size
larger than 4GB.  That's rather sad as that means sacrifying
durability for more usability :(
--
Michael

Attachment

Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Mon, Jun 14, 2021 at 1:11 PM Bruce Momjian <bruce@momjian.us> wrote:
> FYI, the most recent PG 14 relnote doc build is at:
>
>         https://momjian.us/pgsql_docs/release-14.html

I just pushed a commit that makes the existing vacuum_index_cleanup
reloption and INDEX_CLEANUP VACUUM parameter support disabling the
"Allow vacuum to skip index vacuuming when the number of removable
index entries is insignificant" behavior. This should be mentioned in
the release notes.

-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, Jun 15, 2021 at 12:01:00PM +0900, Michael Paquier wrote:
> On Tue, Jun 15, 2021 at 11:49:21AM +0900, Masahiko Sawada wrote:
> > On Tue, Jun 15, 2021 at 10:36 AM Bruce Momjian <bruce@momjian.us> wrote:
> >> OK, but I need more information on how users will see a difference based
> >> on this commit:
> 
> +1.  That would be good to have in the release notes.
> 
> > I think that since with this commit the server on Windows can handle a
> > file over 4GB, COPY FROM loading data from an over 4GB file and
> > pg_dump dumping a large table work now.
> 
> Segment files or WAL files larger than 4GB also gain from that.
> Anything for which we may finish to do a stat() on benefits from this
> change if running on Windows.  For pg_dump, a workaround in PG <= 13
> was to use --no-sync as the stat() failure came from files with a size
> larger than 4GB.  That's rather sad as that means sacrifying
> durability for more usability :(

OK, I went with this text and put it in the Source Code section since it
applies to several layers of Postgres.

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

  If only the physical world exists, free will is an illusion.


Attachment

Re: PG 14 release notes, first draft

From
Masahiko Sawada
Date:
On Mon, Jun 21, 2021 at 12:50 PM Bruce Momjian <bruce@momjian.us> wrote:
>
> On Tue, Jun 15, 2021 at 12:01:00PM +0900, Michael Paquier wrote:
> > On Tue, Jun 15, 2021 at 11:49:21AM +0900, Masahiko Sawada wrote:
> > > On Tue, Jun 15, 2021 at 10:36 AM Bruce Momjian <bruce@momjian.us> wrote:
> > >> OK, but I need more information on how users will see a difference based
> > >> on this commit:
> >
> > +1.  That would be good to have in the release notes.
> >
> > > I think that since with this commit the server on Windows can handle a
> > > file over 4GB, COPY FROM loading data from an over 4GB file and
> > > pg_dump dumping a large table work now.
> >
> > Segment files or WAL files larger than 4GB also gain from that.
> > Anything for which we may finish to do a stat() on benefits from this
> > change if running on Windows.  For pg_dump, a workaround in PG <= 13
> > was to use --no-sync as the stat() failure came from files with a size
> > larger than 4GB.  That's rather sad as that means sacrifying
> > durability for more usability :(
>
> OK, I went with this text and put it in the Source Code section since it
> applies to several layers of Postgres.

Thanks!

I got the parse error after applying the patch:

release-14.sgml:3562: parser error : Input is not proper UTF-8,
indicate encoding !
Bytes: 0xE9 0x20 0x53 0x61
        (Juan Jos Santamara Flecha)
                 ^

Is that a problem with my environment?

Regards,

-- 
Masahiko Sawada
EDB:  https://www.enterprisedb.com/



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, Jun 21, 2021 at 01:57:32PM +0900, Masahiko Sawada wrote:
> > OK, I went with this text and put it in the Source Code section since it
> > applies to several layers of Postgres.
> 
> Thanks!
> 
> I got the parse error after applying the patch:
> 
> release-14.sgml:3562: parser error : Input is not proper UTF-8,
> indicate encoding !
> Bytes: 0xE9 0x20 0x53 0x61
>         (Juan Jos Santamara Flecha)
>                  ^
> 
> Is that a problem with my environment?

I don't know, but it builds here and properly shows here:

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

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

  If only the physical world exists, free will is an illusion.




Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Fri, Jun 18, 2021 at 08:47:21PM -0700, Peter Geoghegan wrote:
> On Mon, Jun 14, 2021 at 1:11 PM Bruce Momjian <bruce@momjian.us> wrote:
> > FYI, the most recent PG 14 relnote doc build is at:
> >
> >         https://momjian.us/pgsql_docs/release-14.html
> 
> I just pushed a commit that makes the existing vacuum_index_cleanup
> reloption and INDEX_CLEANUP VACUUM parameter support disabling the
> "Allow vacuum to skip index vacuuming when the number of removable
> index entries is insignificant" behavior. This should be mentioned in
> the release notes.

Agreed.  I updated the PG 14 release notes to be current as of today,
and adjusted your item --- patch attached.

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

  If only the physical world exists, free will is an illusion.


Attachment

Re: PG 14 release notes, first draft

From
Masahiko Sawada
Date:
On Mon, Jun 21, 2021 at 2:07 PM Bruce Momjian <bruce@momjian.us> wrote:
>
> On Mon, Jun 21, 2021 at 01:57:32PM +0900, Masahiko Sawada wrote:
> > > OK, I went with this text and put it in the Source Code section since it
> > > applies to several layers of Postgres.
> >
> > Thanks!
> >
> > I got the parse error after applying the patch:
> >
> > release-14.sgml:3562: parser error : Input is not proper UTF-8,
> > indicate encoding !
> > Bytes: 0xE9 0x20 0x53 0x61
> >         (Juan Jos Santamara Flecha)
> >                  ^
> >
> > Is that a problem with my environment?
>
> I don't know, but it builds here and properly shows here:
>
>         https://momjian.us/pgsql_docs/release-14.html

Maybe it's my environmental problem. Thanks anyway!

Regards,

-- 
Masahiko Sawada
EDB:  https://www.enterprisedb.com/



Re: PG 14 release notes, first draft

From
Tatsuo Ishii
Date:
> On Mon, Jun 21, 2021 at 12:50 PM Bruce Momjian <bruce@momjian.us> wrote:
>>
>> On Tue, Jun 15, 2021 at 12:01:00PM +0900, Michael Paquier wrote:
>> > On Tue, Jun 15, 2021 at 11:49:21AM +0900, Masahiko Sawada wrote:
>> > > On Tue, Jun 15, 2021 at 10:36 AM Bruce Momjian <bruce@momjian.us> wrote:
>> > >> OK, but I need more information on how users will see a difference based
>> > >> on this commit:
>> >
>> > +1.  That would be good to have in the release notes.
>> >
>> > > I think that since with this commit the server on Windows can handle a
>> > > file over 4GB, COPY FROM loading data from an over 4GB file and
>> > > pg_dump dumping a large table work now.
>> >
>> > Segment files or WAL files larger than 4GB also gain from that.
>> > Anything for which we may finish to do a stat() on benefits from this
>> > change if running on Windows.  For pg_dump, a workaround in PG <= 13
>> > was to use --no-sync as the stat() failure came from files with a size
>> > larger than 4GB.  That's rather sad as that means sacrifying
>> > durability for more usability :(
>>
>> OK, I went with this text and put it in the Source Code section since it
>> applies to several layers of Postgres.
> 
> Thanks!
> 
> I got the parse error after applying the patch:
> 
> release-14.sgml:3562: parser error : Input is not proper UTF-8,
> indicate encoding !
> Bytes: 0xE9 0x20 0x53 0x61
>         (Juan Jos Santamara Flecha)
>                  ^
> 
> Is that a problem with my environment?

Me too. I think the problem is, Bruce's patch is encoded in
ISO-8859-1, not UTF-8. As far as I know PostgreSQL never encodes
*.sgml files in ISO-8859-1. Anyway, attached is the Bruce's patch
encoded in UTF-8. This works for me.

My guess is, when Bruce attached the file, his MUA automatically
changed the file encoding from UTF-8 to ISO-8859-1 (it could happen in
many MUA). Also that's the reason why he does not see the problem
while compiling the sgml files. In his environment release-14.sgml is
encoded in UTF-8, I guess. To prevent the problem next time, it's
better to change the mime type of the attached file to
Application/Octet-Stream.

Best regards,
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese:http://www.sraoss.co.jp

Attachment

Re: PG 14 release notes, first draft

From
Simon Riggs
Date:
On Mon, May 10, 2021 at 7:03 AM Bruce Momjian <bruce@momjian.us> wrote:
>
> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
>
>         https://momjian.us/pgsql_docs/release-14.html
>
> I need clarification on many items, and the document still needs its
> items properly ordered, and markup added.  I also expect a lot of
> feedback.
>
> I plan to work on completing this document this coming week in
> preparation for beta next week.

Very good, thanks.

I just noticed that these commits are missing, yet are very important
new features:
d9d076222f5b94a8
f9900df5f9
c98763bf51bf

These are important enough to be major features of PG14.

-- 
Simon Riggs                http://www.EnterpriseDB.com/



Re: PG 14 release notes, first draft

From
Peter Geoghegan
Date:
On Wed, Jun 23, 2021 at 5:50 AM Simon Riggs
<simon.riggs@enterprisedb.com> wrote:
> I just noticed that these commits are missing, yet are very important
> new features:
> d9d076222f5b94a8
> f9900df5f9
> c98763bf51bf
>
> These are important enough to be major features of PG14.

I certainly think that they're important enough to be mentioned.

-- 
Peter Geoghegan



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Wed, Jun 23, 2021 at 07:45:53AM -0700, Peter Geoghegan wrote:
> On Wed, Jun 23, 2021 at 5:50 AM Simon Riggs
> <simon.riggs@enterprisedb.com> wrote:
> > I just noticed that these commits are missing, yet are very important
> > new features:
> > d9d076222f5b94a8
> > f9900df5f9
> > c98763bf51bf
> >
> > These are important enough to be major features of PG14.
> 
> I certainly think that they're important enough to be mentioned.

OK, here is a doc patch to add a mention of this.  I originally thought
this was an optimization that wouldn't be of general interest.

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

  If only the physical world exists, free will is an illusion.


Attachment

Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
> Require custom server variable names to use only character which are valid for unquoted SQL identifiers (Tom Lane)

characters plural (since 69a58bfe4)

> This is similar to how Unicode can be specified in literal string.

literal strings

> Add executor method to cache results from the inner-side of nested loop joins (David Rowley)
> This is useful if only a small percentage of rows is checked on the inner side.

I think this should mention the GUC, whether we leave it enabled by default (in
which case people may want to disable it) or disable by default (in which case
people may want to enable it).

> The postgres_fdw supports these type of scans if async_capable is set.
this type
remove "The" ?

> Prevent the containment operators (<@ and @>) for intarray from using GiST indexes (Tom Lane)
> Remove deprecated containment operators @ and ~ for built-in geometric data types and contrib modules cube, hstore,
intarray,and seg (Justin Pryzby)
 
> For example, disregard ^ in its expansion in \1 in (^\d+).*\1.
> Add point operators <<| and |>> to be strictly above/below geometry (Emre Hasegeli)
> Previously >^ and <^ were marked as performing this test, but non-point geometric operators used these operators for
non-strictcomparisons, leading to confusion. The old operators still exist but will be eventually removed. ACCURATE?
 

Should these have markup added?

> Certain discarded tokens, like underscore, caused the output of these functions to produce incorrect tsquery output,
e.g.,both websearch_to_tsquery('"pg_class pg"') and to_tsquery('pg_class <-> pg') used to output '( pg & class ) <->
pg',but now both output 'pg <-> class <-> pg'.
 
> Previously, quoted text that contained multiple adjacent discarded tokens were treated as multiple tokens, causing
incorrecttsquery output, e.g., websearch_to_tsquery('"aaa: bbb"') used to output 'aaa <2> bbb', but now outputs 'aaa
<->bbb'.
 

Missing markup?

> This is controlled by server variable ssl_crl_dir and libpq connection option sslcrldir. Previously only CRL files
couldbe specified.
 
> Allow pgstattuple_approx() to report on TOAST tables (Peter Eisentraut)
> Add pg_stat_statements_info system view to show pg_stat_statements activity (Katsuragi Yuta, Yuki Seino, Naoki
Nakamichi)
> Add postgres_fdw function postgres_fdw_get_connections() to report open foreign server connections (Bharath
Rupireddy)

These should have additional hyperlinks

> Add primary keys, unique constraints, and foreign keys to system catalogs (Peter Eisentraut)

Should mention and link to pg_get_catalog_foreign_keys()

> Pass doubled quote marks in Chapter 36 SQL command strings literally (Tom Lane)

"Chapter 36" looks funny?
See also: 4f7d1c309

>Previously window frame clauses like 'inf' PRECEDING AND 'inf' FOLLOWING returned incorrect results.
>Negative values produced undesirable results.
>Previously such cases returned 1.
>This previously was allowed but produced incorrect results.
>This could be accomplished previously using existing syntax.

All these details could be omitted.

>Only the target table can be referenced.

Could be omitted or folded into the preceding line.

> This was already disabled by default in previous Postgres releases, and most modern OpenSSL and TLS versions no
longersupport it.
 
> This was last used as the default in Postgres 7.3 (year 2002).
> By default, Postgres opens and fsyncs every data file at the start of crash recovery. This new setting,
recovery_init_sync_method=syncfs,instead syncs each filesystem used by the database cluster. This allows for faster
recoveryon systems with many database files.
 
> The new syntax is SUBSTRING(text SIMILAR pattern ESCAPE escapechar). The previous standard syntax was SUBSTRING(text
FROMpattern FOR escapechar), and is still supported by Postgres.
 

These should all say <productname>PostgreSQL</productname>

> Allow psql's \df and \do commands to specify function and operator argument types (Greg Sabino Mullane, Tom Lane)
> Add an access method column to psql's \d[i|m|t]+ output (Georgios Kokolatos)
> Allow psql's \dt and \di to show TOAST tables and their indexes (Justin Pryzby)
> Add psql command \dX to list extended statistics objects (Tatsuro Yamada)
> Fix psql's \dT to understand array syntax and backend grammar aliases, like "int" for "integer" (Greg Sabino Mullane,
TomLane)
 
> When editing the previous query or a file with psql's \e, or using \ef and \ev, ignore the contents if the editor
exitswithout saving (Laurenz Albe)
 

All these slash commands should be <literal>

> Stop pg_upgrade from creating analyze_new_cluster script (Michael Paquier)

It's called analyze_new_cluster.sh (except on window), and it's Magnus' patch.

> EXTRACT(date) now throws an error for units that are not part of the date data type.

"Date data" always seems hard to read.
Could you add markup for "<type>date</type>" ?
Or say: of type "date".

> EXTRACT(date) now throws an error for units that are not part of the date data type.

Could say "if requested to extract units that are not part of the "date" type.

-- 
Justin



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Fri, Jun 25, 2021 at 06:04:56PM -0500, Justin Pryzby wrote:
> > Require custom server variable names to use only character which are valid for unquoted SQL identifiers (Tom Lane)
> 
> characters plural (since 69a58bfe4)

Fixed.

> > This is similar to how Unicode can be specified in literal string.
> 
> literal strings

Fixed.

> > Add executor method to cache results from the inner-side of nested loop joins (David Rowley)
> > This is useful if only a small percentage of rows is checked on the inner side.
> 
> I think this should mention the GUC, whether we leave it enabled by default (in
> which case people may want to disable it) or disable by default (in which case
> people may want to enable it).

OK, I changed it to:

        This is useful if only a small percentage of rows is checked on
        the inner side and is controlled by <xref
        linkend="guc-enable-resultcache"/>.

> > The postgres_fdw supports these type of scans if async_capable is set.
> this type
> remove "The" ?

New text is:

    <link
    linkend="postgres-fdw"><application>postgres_fdw</application></link>
    supports these type of scans if <literal>async_capable</literal>

I kept "these types" because the paragraph above says:

    Allow a query referencing multiple <link
    linkend="sql-createforeigntable">foreign tables</link> to perform
    foreign table scans in parallel (Robert Haas, Kyotaro Horiguchi,
    Thomas Munro, Etsuro Fujita)

so we are talking about scans in parallel, so I think it is plural.  Wrong?

> > Prevent the containment operators (<@ and @>) for intarray from using GiST indexes (Tom Lane)

I show this markup as:

      Prevent the containment operators (<@ and @>) for <xref
      linkend="intarray"/> from using GiST indexes (Tom Lane)

What markup is missing?

> > Remove deprecated containment operators @ and ~ for built-in geometric data types and contrib modules cube, hstore,
intarray,and seg (Justin Pryzby)
 

Same. what is missing?

      Remove deprecated containment operators @ and ~ for built-in
      <link linkend="functions-geometry">geometric data types</link> and
      contrib modules <xref linkend="cube"/>, <xref linkend="hstore"/>,
      <xref linkend="intarray"/>, and <xref linkend="seg"/> (Justin Pryzby)

I could link to our "Geometric Functions and Operators" section, but my
understanding is those are operators for our built-in types, not for
extensions, which is what we are talking about here.

> > For example, disregard ^ in its expansion in \1 in (^\d+).*\1.

Fixed:

      Improve handling of regular expression <link
      linkend="posix-escape-sequences">back-references</link> (Tom Lane)

I didn't know we had a good section for that, but I see it now.

> > Add point operators <<| and |>> to be strictly above/below geometry (Emre Hasegeli)
> > Previously >^ and <^ were marked as performing this test, but non-point geometric operators used these operators
fornon-strict comparisons, leading to confusion. The old operators still exist but will be eventually removed.
ACCURATE?

I see markup on this:

       Add <link linkend="functions-geometry">point operators</link>
       <<| and |>> to be strictly above/below geometry
       (Emre Hasegeli)

> Should these have markup added?
> 
> > Certain discarded tokens, like underscore, caused the output of these functions to produce incorrect tsquery
output,e.g., both websearch_to_tsquery('"pg_class pg"') and to_tsquery('pg_class <-> pg') used to output '( pg & class
)<-> pg', but now both output 'pg <-> class <-> pg'.
 
> > Previously, quoted text that contained multiple adjacent discarded tokens were treated as multiple tokens, causing
incorrecttsquery output, e.g., websearch_to_tsquery('"aaa: bbb"') used to output 'aaa <2> bbb', but now outputs 'aaa
<->bbb'.
 
> 
> Missing markup?

I see markup on the main text of this item:

      Fix <link
      linkend="functions-textsearch"><function>to_tsquery()</function></link>
      and <function>websearch_to_tsquery()</function> to properly parse
      query text containing discarded tokens (Alexander Korotkov)

> > This is controlled by server variable ssl_crl_dir and libpq connection option sslcrldir. Previously only CRL files
couldbe specified.
 

OK, added link to sslcrldir.

> > Allow pgstattuple_approx() to report on TOAST tables (Peter Eisentraut)

Fixed:

       Allow <link
       linkend="pgstattuple"><function>pgstattuple_approx()</function></link>
       to report on <acronym>TOAST</acronym> tables (Peter Eisentraut)

> > Add pg_stat_statements_info system view to show pg_stat_statements activity (Katsuragi Yuta, Yuki Seino, Naoki
Nakamichi)

The section heading already has a link so I don't add any for individual
items.

> > Add postgres_fdw function postgres_fdw_get_connections() to report open foreign server connections (Bharath
Rupireddy)

Same, this is already in the section with a link in the heading.

> > Add primary keys, unique constraints, and foreign keys to system catalogs (Peter Eisentraut)
> 
> Should mention and link to pg_get_catalog_foreign_keys()

Uh, why?  I don't see the release notes as a place to explain how to use
Postgres features.

> > Pass doubled quote marks in Chapter 36 SQL command strings literally (Tom Lane)
> 
> "Chapter 36" looks funny?
> See also: 4f7d1c309

Yes, fixed.

> >Previously window frame clauses like 'inf' PRECEDING AND 'inf' FOLLOWING returned incorrect results.
> >Negative values produced undesirable results.
> >Previously such cases returned 1.
> >This previously was allowed but produced incorrect results.
> >This could be accomplished previously using existing syntax.
> 
> All these details could be omitted.

I think explaining the previous behavior helps people understand the new
behavior.

> >Only the target table can be referenced.
> 
> Could be omitted or folded into the preceding line.

I only use a single sentence for the main text.

> > This was already disabled by default in previous Postgres releases, and most modern OpenSSL and TLS versions no
longersupport it.
 
> > This was last used as the default in Postgres 7.3 (year 2002).
> > By default, Postgres opens and fsyncs every data file at the start of crash recovery. This new setting,
recovery_init_sync_method=syncfs,instead syncs each filesystem used by the database cluster. This allows for faster
recoveryon systems with many database files.
 
> > The new syntax is SUBSTRING(text SIMILAR pattern ESCAPE escapechar). The previous standard syntax was
SUBSTRING(textFROM pattern FOR escapechar), and is still supported by Postgres.
 
> 
> These should all say <productname>PostgreSQL</productname>

OK, fixed.

> > Allow psql's \df and \do commands to specify function and operator argument types (Greg Sabino Mullane, Tom Lane)
> > Add an access method column to psql's \d[i|m|t]+ output (Georgios Kokolatos)

I don't think this one is actually literal.

> > Allow psql's \dt and \di to show TOAST tables and their indexes (Justin Pryzby)
> > Add psql command \dX to list extended statistics objects (Tatsuro Yamada)
> > Fix psql's \dT to understand array syntax and backend grammar aliases, like "int" for "integer" (Greg Sabino
Mullane,Tom Lane)
 
> > When editing the previous query or a file with psql's \e, or using \ef and \ev, ignore the contents if the editor
exitswithout saving (Laurenz Albe)
 
> 
> All these slash commands should be <literal>

Yes, fixed except for the one mentioned above.

> > Stop pg_upgrade from creating analyze_new_cluster script (Michael Paquier)
> 
> It's called analyze_new_cluster.sh (except on window), and it's Magnus' patch.

Ah, yes, Magnus, fixed.  I don't see the value in adding .sh since it is
not always accurate, but I could add .sh/.bat, but that seems confusing.

> > EXTRACT(date) now throws an error for units that are not part of the date data type.
> 
> "Date data" always seems hard to read.
> Could you add markup for "<type>date</type>" ?

Done.

Thank you for all the help on this.  Patch attached.  Since we just
branched for PG 15, our official developer doc build no longer has the
PG 14 release notes, so I changed my local doc tree to build PG 14 until
PG14 is released in a few months;  my URL is:

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

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

  If only the physical world exists, free will is an illusion.



Attachment

Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
On Mon, Jun 28, 2021 at 09:01:40PM -0400, Bruce Momjian wrote:
> On Fri, Jun 25, 2021 at 06:04:56PM -0500, Justin Pryzby wrote:
> > > The postgres_fdw supports these type of scans if async_capable is set.
> > this type
> > remove "The" ?
> 
> New text is:
> 
>     <link
>     linkend="postgres-fdw"><application>postgres_fdw</application></link>
>     supports these type of scans if <literal>async_capable</literal>
> 
> I kept "these types" because the paragraph above says:
> 
>     Allow a query referencing multiple <link
>     linkend="sql-createforeigntable">foreign tables</link> to perform
>     foreign table scans in parallel (Robert Haas, Kyotaro Horiguchi,
>     Thomas Munro, Etsuro Fujita)
> 
> so we are talking about scans in parallel, so I think it is plural.  Wrong?

I think the "type" of scan being referenced is a "parallel" type, right ?
So there's only one type, but multiple scans.
So I think it should say "this type" of scan, but it seems like it's not only
easier but generally better to say

| postgres_fdw supports parallel scans if async_capable

>> Prevent the containment operators (<@ and @>) for intarray from using GiST indexes (Tom Lane)
>> Remove deprecated containment operators @ and ~ for built-in geometric data types and contrib modules cube, hstore,
intarray,and seg (Justin Pryzby)
 
>> For example, disregard ^ in its expansion in \1 in (^\d+).*\1.
>> Add point operators <<| and |>> to be strictly above/below geometry (Emre Hasegeli)
>> Previously >^ and <^ were marked as performing this test, but non-point geometric operators used these operators for
non-strictcomparisons, leading to confusion. The old operators still exist but will be eventually removed.
 

> What markup is missing?

I mean markup for the operators, like <literal><@</literal>

> > > Add primary keys, unique constraints, and foreign keys to system catalogs (Peter Eisentraut)
>
> > Should mention and link to pg_get_catalog_foreign_keys()
> 
> Uh, why?  I don't see the release notes as a place to explain how to use
> Postgres features.

Because the normal way to show foreign keys (\d) doesn't show them - the
references are shown by the function.

Thanks,
-- 
Justin



Re: PG 14 release notes, first draft

From
Simon Riggs
Date:
On Fri, Jun 25, 2021 at 2:56 AM Bruce Momjian <bruce@momjian.us> wrote:
>
> On Wed, Jun 23, 2021 at 07:45:53AM -0700, Peter Geoghegan wrote:
> > On Wed, Jun 23, 2021 at 5:50 AM Simon Riggs
> > <simon.riggs@enterprisedb.com> wrote:
> > > I just noticed that these commits are missing, yet are very important
> > > new features:
> > > d9d076222f5b94a8
> > > f9900df5f9
> > > c98763bf51bf
> > >
> > > These are important enough to be major features of PG14.
> >
> > I certainly think that they're important enough to be mentioned.
>
> OK, here is a doc patch to add a mention of this.  I originally thought
> this was an optimization that wouldn't be of general interest.

Perhaps we should also add this text from the commit message to ensure
the importance is understood:
"This is extremely useful in cases where CIC/RC can run for a very long
    time, because that used to be a significant headache for concurrent
    vacuuming of other tables."

Proposed edits:

* "during certain index operations" -> "while concurrent index
operations run on other tables"
* spell Alvaro's name correctly
* "row expiration" is a term not currently used in PG docs, so we
should probably look for something else.


There are 2 important features here, so the 2nd feature is worth
mentioning also:

Avoid spurious waits in concurrent indexing

Previously, multiple concurrent index operations could deadlock or
cause long waits.
Waits are avoided except for indexes with expressions, or WHERE predicates.

-- 
Simon Riggs                http://www.EnterpriseDB.com/



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Tue, Jun 29, 2021 at 07:36:47PM +0100, Simon Riggs wrote:
> Perhaps we should also add this text from the commit message to ensure
> the importance is understood:
> "This is extremely useful in cases where CIC/RC can run for a very long
>     time, because that used to be a significant headache for concurrent
>     vacuuming of other tables."

Uh, hopefully this idea is captured below.

> Proposed edits:
> 
> * "during certain index operations" -> "while concurrent index
> operations run on other tables"

Uh, the problem here is that it isn't clear if we are talking about
concurrent index operations, "concurrently"-enabled index options, or
"concurrently"-enabled concurrent index operations.  I went with
"minimal-locking index operations".

> * spell Alvaro's name correctly

Uh, this is the second time Mutt's default to using iso-8859-1 for
non-ASCII attachments has caused confusion.  I found that using 'set
send_charset="us-ascii:utf-8"' in Mutt fixed this, so the attachment
should now be fine.

> * "row expiration" is a term not currently used in PG docs, so we
> should probably look for something else.

Yeah, I changed that to "removing dead rows" which seems to be our
standard text.

> There are 2 important features here, so the 2nd feature is worth
> mentioning also:
> 
> Avoid spurious waits in concurrent indexing
> 
> Previously, multiple concurrent index operations could deadlock or
> cause long waits.
> Waits are avoided except for indexes with expressions, or WHERE predicates.

OK, I added text to the bottom to try and capture that;  new patch
attached, now with UTF8 encoding.

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

  If only the physical world exists, free will is an illusion.


Attachment

Re: PG 14 release notes, first draft

From
Simon Riggs
Date:
On Wed, Jun 30, 2021 at 11:20 PM Bruce Momjian <bruce@momjian.us> wrote:
>
> On Tue, Jun 29, 2021 at 07:36:47PM +0100, Simon Riggs wrote:
> > Perhaps we should also add this text from the commit message to ensure
> > the importance is understood:
> > "This is extremely useful in cases where CIC/RC can run for a very long
> >     time, because that used to be a significant headache for concurrent
> >     vacuuming of other tables."
>
> Uh, hopefully this idea is captured below.
>
> > Proposed edits:
> >
> > * "during certain index operations" -> "while concurrent index
> > operations run on other tables"
>
> Uh, the problem here is that it isn't clear if we are talking about
> concurrent index operations, "concurrently"-enabled index options, or
> "concurrently"-enabled concurrent index operations.  I went with
> "minimal-locking index operations".
>
> > * spell Alvaro's name correctly
>
> Uh, this is the second time Mutt's default to using iso-8859-1 for
> non-ASCII attachments has caused confusion.  I found that using 'set
> send_charset="us-ascii:utf-8"' in Mutt fixed this, so the attachment
> should now be fine.
>
> > * "row expiration" is a term not currently used in PG docs, so we
> > should probably look for something else.
>
> Yeah, I changed that to "removing dead rows" which seems to be our
> standard text.

What you have now looks great for this feature, thanks.


> > There are 2 important features here, so the 2nd feature is worth
> > mentioning also:
> >
> > Avoid spurious waits in concurrent indexing
> >
> > Previously, multiple concurrent index operations could deadlock or
> > cause long waits.
> > Waits are avoided except for indexes with expressions, or WHERE predicates.
>
> OK, I added text to the bottom to try and capture that;  new patch
> attached, now with UTF8 encoding.

The text from "This also avoids..." tries to explain this, but they
are two separate features, each important in its own right.

So regrettably, this part doesn't capture it, for me.

-- 
Simon Riggs                http://www.EnterpriseDB.com/



Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Thu, Jul  1, 2021 at 03:13:30PM +0100, Simon Riggs wrote:
> On Wed, Jun 30, 2021 at 11:20 PM Bruce Momjian <bruce@momjian.us> wrote:
> > > * "row expiration" is a term not currently used in PG docs, so we
> > > should probably look for something else.
> >
> > Yeah, I changed that to "removing dead rows" which seems to be our
> > standard text.
> 
> What you have now looks great for this feature, thanks.

Good.

> > > There are 2 important features here, so the 2nd feature is worth
> > > mentioning also:
> > >
> > > Avoid spurious waits in concurrent indexing
> > >
> > > Previously, multiple concurrent index operations could deadlock or
> > > cause long waits.
> > > Waits are avoided except for indexes with expressions, or WHERE predicates.
> >
> > OK, I added text to the bottom to try and capture that;  new patch
> > attached, now with UTF8 encoding.
> 
> The text from "This also avoids..." tries to explain this, but they
> are two separate features, each important in its own right.
> 
> So regrettably, this part doesn't capture it, for me.

I see what you mean.  This is in the VACUUM section, and this feature,
though from the same commits, has nothing to do with vacuum.  Attached
is an updated patch.

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

  If only the physical world exists, free will is an illusion.


Attachment

Re: PG 14 release notes, first draft

From
Bruce Momjian
Date:
On Mon, Jun 28, 2021 at 09:25:47PM -0500, Justin Pryzby wrote:
> On Mon, Jun 28, 2021 at 09:01:40PM -0400, Bruce Momjian wrote:
> > so we are talking about scans in parallel, so I think it is plural.  Wrong?
> 
> I think the "type" of scan being referenced is a "parallel" type, right ?
> So there's only one type, but multiple scans.
> So I think it should say "this type" of scan, but it seems like it's not only
> easier but generally better to say
> 
> | postgres_fdw supports parallel scans if async_capable
> 
> >> Prevent the containment operators (<@ and @>) for intarray from using GiST indexes (Tom Lane)
> >> Remove deprecated containment operators @ and ~ for built-in geometric data types and contrib modules cube,
hstore,intarray, and seg (Justin Pryzby)
 
> >> For example, disregard ^ in its expansion in \1 in (^\d+).*\1.
> >> Add point operators <<| and |>> to be strictly above/below geometry (Emre Hasegeli)
> >> Previously >^ and <^ were marked as performing this test, but non-point geometric operators used these operators
fornon-strict comparisons, leading to confusion. The old operators still exist but will be eventually removed.
 
> 
> > What markup is missing?
> 
> I mean markup for the operators, like <literal><@</literal>
> 
> > Uh, why?  I don't see the release notes as a place to explain how to use
> > Postgres features.
> 
> Because the normal way to show foreign keys (\d) doesn't show them - the
> references are shown by the function.

OK, agreed.  Here is an updated applied patch.

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

  If only the physical world exists, free will is an illusion.


Attachment

Re: PG 14 release notes, first draft

From
Simon Riggs
Date:
On Fri, Jul 2, 2021 at 12:50 AM Bruce Momjian <bruce@momjian.us> wrote:
>
> On Thu, Jul  1, 2021 at 03:13:30PM +0100, Simon Riggs wrote:
> > On Wed, Jun 30, 2021 at 11:20 PM Bruce Momjian <bruce@momjian.us> wrote:
> > > > * "row expiration" is a term not currently used in PG docs, so we
> > > > should probably look for something else.
> > >
> > > Yeah, I changed that to "removing dead rows" which seems to be our
> > > standard text.
> >
> > What you have now looks great for this feature, thanks.
>
> Good.
>
> > > > There are 2 important features here, so the 2nd feature is worth
> > > > mentioning also:
> > > >
> > > > Avoid spurious waits in concurrent indexing
> > > >
> > > > Previously, multiple concurrent index operations could deadlock or
> > > > cause long waits.
> > > > Waits are avoided except for indexes with expressions, or WHERE predicates.
> > >
> > > OK, I added text to the bottom to try and capture that;  new patch
> > > attached, now with UTF8 encoding.
> >
> > The text from "This also avoids..." tries to explain this, but they
> > are two separate features, each important in its own right.
> >
> > So regrettably, this part doesn't capture it, for me.
>
> I see what you mean.  This is in the VACUUM section, and this feature,
> though from the same commits, has nothing to do with vacuum.  Attached
> is an updated patch.

Perfect, many thanks.

-- 
Simon Riggs                http://www.EnterpriseDB.com/



Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
I think the release notes for the autovacuum item (which was first reverted and
then partially un-reverted) should say something like "Partitioned tables are
now included in pg_stat_all_tables":
| e1efc5b465 Keep stats up to date for partitioned tables

Remove some internal question/marks:
ACCURATE?
REMOVE?
ALTER TABLE ... ALTER COLUMN ... TYPE RESETS STASTISTICS? (was never intended to have markup added?)

Also, I'm not sure if this one should be included.
9a4c0e36fb Dump ALTER TABLE ... ATTACH PARTITION as a separate ArchiveEntry.
See: https://www.postgresql.org/message-id/flat/20210830154249.GX26465@telsasoft.com#9ad6fd4c36e13deea1c5f92f5114320e

What about this ?
ce6b662aae psql: Fix name quoting on extended statistics

-- 
Justin



Re: PG 14 release notes, first draft

From
Tom Lane
Date:
Justin Pryzby <pryzby@telsasoft.com> writes:
> I think the release notes for the autovacuum item (which was first reverted and
> then partially un-reverted) should say something like "Partitioned tables are
> now included in pg_stat_all_tables":
> | e1efc5b465 Keep stats up to date for partitioned tables

Hmm.  If I'm reading the commit message properly, the actual change there
is not that, but that analyze count and last analyze time are now tracked
correctly for partitioned tables.  Might be worth mentioning, not sure.

> Remove some internal question/marks:
> ACCURATE?
> REMOVE?
> ALTER TABLE ... ALTER COLUMN ... TYPE RESETS STASTISTICS? (was never intended to have markup added?)

Did that in the copy-editing I just pushed.

> Also, I'm not sure if this one should be included.
> 9a4c0e36fb Dump ALTER TABLE ... ATTACH PARTITION as a separate ArchiveEntry.
> See: https://www.postgresql.org/message-id/flat/20210830154249.GX26465@telsasoft.com#9ad6fd4c36e13deea1c5f92f5114320e

Probably not worth listing --- the amount of explanation needed seems
to outweigh the probability of users caring.

> What about this ?
> ce6b662aae psql: Fix name quoting on extended statistics

Seems way too minor to bother with here.

            regards, tom lane



Re: PG 14 release notes, first draft

From
Justin Pryzby
Date:
On Sat, Sep 18, 2021 at 05:15:39PM -0400, Tom Lane wrote:
> Justin Pryzby <pryzby@telsasoft.com> writes:
> > I think the release notes for the autovacuum item (which was first reverted and
> > then partially un-reverted) should say something like "Partitioned tables are
> > now included in pg_stat_all_tables":
> > | e1efc5b465 Keep stats up to date for partitioned tables
> 
> Hmm.  If I'm reading the commit message properly, the actual change there
> is not that, but that analyze count and last analyze time are now tracked
> correctly for partitioned tables.  Might be worth mentioning, not sure.

The reverted patch to autoanalyze included partitioned tables in
pg_stat_all_tables, and the revert specifically avoided changing that (to avoid
a catbump).  But last_analyzed and analyze_count were always shown as "0".  So
the e1 commit addresses that by tracking that information and showing correct
value instead of always 0.

The relevant portion starts here:
https://www.postgresql.org/message-id/flat/202108161700.d4eh6a7n2lki%40alvherre.pgsql#b2e426eb19dbbddee0adf9bb1bcbbcf1

I suggest that this *should* be included in the release notes, since I
specifically requested that partitioned tables be included in 2018.

> In 20200418050815(dot)GE26953(at)telsasoft(dot)com I wrote:
> |This patch includes partitioned tables in pg_stat_*_tables, which is great; I
> |complained awhile ago that they were missing [0].  It might be useful if that
> |part was split out into a separate 0001 patch (?).
> | [0] https://www.postgresql.org/message-id/20180601221428.GU5164%40telsasoft.com

Also, I've patched my analyze script to use that field (same as for
nonpartitioned tables) rather than needing to do a subquery involving
max(last_analyzed) of the partitions.  Since it's still needed to manually
analyze parent tables.

-- 
Justin



Re: PG 14 release notes, first draft

From
Yugo NAGATA
Date:
On Mon, 10 May 2021 02:03:08 -0400
Bruce Momjian <bruce@momjian.us> wrote:

> I have committed the first draft of the PG 14 release notes.  You can
> see the most current  build of them here:
> 
>     https://momjian.us/pgsql_docs/release-14.html
> 
> I need clarification on many items, and the document still needs its
> items properly ordered, and markup added.  I also expect a lot of
> feedback.

I found that there isn't an item that referring the following commit:

commit 547f04e7348b6ed992bd4a197d39661fe7c25097
Author: Thomas Munro <tmunro@postgresql.org>
Date:   Wed Mar 10 16:09:50 2021 +1300

    pgbench: Improve time logic.
    
    Instead of instr_time (struct timespec) and the INSTR_XXX macros,
    introduce pg_time_usec_t and use integer arithmetic.  Don't include the
    connection time in TPS unless using -C mode, but report it separately.

This commit changed the output results that are visible for users, that is,
tps with "including connection establishing" and "excluding ..." are no
longer reported, so I wonder we should let users know it.

Another user-visible change on pgbench that is not listed in the release
notes is the support for pipeline mode. There is a mention about libpq
supporting pipeline, so I think we can also mention that of pgbench.

There are other minor improvement on pgbench, but pgbench is just a
benchnark tool and its changes do not directly affect to user application,
so maybe we don't have to describe all in the release notes.

Regards,
Yugo Nagata

-- 
Yugo NAGATA <nagata@sraoss.co.jp>