Michael Paquier <michael.paquier@gmail.com> writes:
> On Fri, Dec 8, 2017 at 2:13 AM, Peter Eisentraut
> <peter.eisentraut@2ndquadrant.com> wrote:
>> That indeed appears to be a bug.
> That's a bug. When doing a COPY with or without a list of columns, and
> that a column is not listed and has a default expression, then this
> expression is used. This is a role filled in by build_column_default()
> but identity columns need to create a NextValueExpr expression
> instead. As this expression is missing, the backend complains about a
> NULL input for this column, which is logic without an expression.
> Attached is a patch with a regression test.
Now that I look more closely at this patch, isn't it fixing things
in the wrong place? Why is it that COPY needs to know about this,
rather than build_column_default()? Aren't we going to have to
fix every other caller of build_column_default()?
For that matter, should build_column_default() know about it explicitly
either? Why aren't we implementing IDENTITY by storing an appropriate
default expression in the catalogs?
regards, tom lane