On 01.04.22 18:22, Peter Eisentraut wrote:

On 01.04.22 00:43, Tomas Vondra wrote:
Hmm, so what about doing a little bit different thing:

1) owned sequences inherit persistence of the table by default

2) allow ALTER SEQUENCE to change persistence for all sequences (no
restriction for owned sequences)

3) ALTER TABLE ... SET [UN]LOGGED changes persistence for sequences
matching the initial table persistence

Consider that an identity sequence creates an "internal" dependency and a serial sequence creates an "auto" dependency.

An "internal" dependency means that the internal object shouldn't really be operated on directly.  (In some cases it's allowed for convenience.) So I think in that case the sequence must follow the table's persistence in all cases.  This is accomplished by setting the initial persistence to the table's, making ALTER TABLE propagate persistence changes, and prohibiting direct ALTER SEQUENCE SET.

But to make pg_upgrade work for identity sequences of unlogged tables, we need to allow ALTER SEQUENCE ... SET LOGGED on such sequences. Which I guess is not a real problem in the end.


Reply via email to