Re: BUG #14952: COPY fails to fill in IDENTITY column default value - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #14952: COPY fails to fill in IDENTITY column default value
Date
Msg-id 31740.1513222740@sss.pgh.pa.us
Whole thread Raw
In response to Re: BUG #14952: COPY fails to fill in IDENTITY column default value  (Michael Paquier <michael.paquier@gmail.com>)
Responses Re: BUG #14952: COPY fails to fill in IDENTITY column default value  (Michael Paquier <michael.paquier@gmail.com>)
Re: BUG #14952: COPY fails to fill in IDENTITY column default value  (Peter Eisentraut <peter.eisentraut@2ndquadrant.com>)
List pgsql-bugs
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


pgsql-bugs by date:

Previous
From: Michael Paquier
Date:
Subject: Re: BUG #14970: Foreign Data Wrapper for windows
Next
From: Michael Paquier
Date:
Subject: Re: BUG #14952: COPY fails to fill in IDENTITY column default value