Peter Eisentraut <peter.eisentr...@2ndquadrant.com> writes: > On 2021-01-29 17:41, Tom Lane wrote: >> However ... this doesn't solve all the cases noted in this thread. >> In the first example I gave at [1], >> d3=# create table parent (f1 int default 2); >> CREATE TABLE >> d3=# create table child (f1 int default 3) inherits(parent); >> NOTICE: merging column "f1" with inherited definition >> CREATE TABLE >> d3=# create table child2() inherits(parent); >> CREATE TABLE >> d3=# alter table child2 alter column f1 set default 42; >> ALTER TABLE >> >> pg_dump still fails to restore child2.f1's non-inherited default.
> I can't tell what the problem is in this example. I tried with PG11, > 12, and master, and the schema dump comes out with those same four > commands and they restore correctly AFAICT. Oh! Trying it now, I see that the child2 default does get restored as a "separate default" object: ALTER TABLE ONLY public.child2 ALTER COLUMN f1 SET DEFAULT 42; This is a bit weird, because you'd think it would be handled the same as the other child's default, but it isn't; that one comes out as CREATE TABLE public.child ( f1 integer DEFAULT 3 ) INHERITS (public.parent); while child2 looks like CREATE TABLE public.child2 ( ) INHERITS (public.parent); I now suspect that I'd seen this dump of "child2" and missed the later ALTER. So no bug here, just pilot error. Sorry for the noise. regards, tom lane