On 2018-Nov-09, Amit Langote wrote: > Or is it a *bug* of tuple-routing that it doesn't substitute default > values that may be defined for partitions? It kind of looks like one if > you see an example like this. > > create table p (a int, b int) partition by list (a); > create table p1 partition of p (b not null default 1) for values in (1); > insert into p1 values (1); > table p; > a │ b > ───┼─── > 1 │ 1 > (1 row) > > insert into p values (1); > ERROR: null value in column "b" violates not-null constraint > DETAIL: Failing row contains (1, null).
I don't know. I wonder if the bug isn't that we allow the default to be specified for the partition at all -- why shouldn't we just reject that with an error? See this example, where the inserts give values that could be said to be inconsistent: create table p (a int , b int default 3) partition by list (a); create table p1 partition of p (b default 42) for values in (1); insert into p (a) values (1); insert into p1 (a) values (1); select * from p; a │ b ───┼──── 1 │ 3 1 │ 42 (2 filas) -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services