On Fri, Apr 1, 2022 at 9:31 AM Peter Eisentraut <
peter.eisentr...@enterprisedb.com> wrote:

> 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.
>

Indeed, we need the syntax anyway.  We can constrain it though, and error
when trying to make them different but allow making them the same.  To
change a table's persistence you have to then change the table first -
putting them back into different states - then sync up the sequence again.

David J.

Reply via email to