mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
Only evaluate default values as required when doing COPY FROM
Commit 9f8377f7a2
was a little too eager in fetching default values.
Normally this would not matter, but if the default value is not valid
for the type (e.g. a varchar that's too long) it caused an unnecessary
error.
Complaint and fix from Laurenz Albe
Backpatch to release 16.
Discussion: https://postgr.es/m/75a7b7483aeb331aa017328d606d568fc715b90d.camel@cybertec.at
This commit is contained in:
@ -1571,7 +1571,14 @@ BeginCopyFrom(ParseState *pstate,
|
||||
/* Get default info if available */
|
||||
defexprs[attnum - 1] = NULL;
|
||||
|
||||
if (!att->attgenerated)
|
||||
/*
|
||||
* We only need the default values for columns that do not appear in
|
||||
* the column list, unless the DEFAULT option was given. We never need
|
||||
* default values for generated columns.
|
||||
*/
|
||||
if ((cstate->opts.default_print != NULL ||
|
||||
!list_member_int(cstate->attnumlist, attnum)) &&
|
||||
!att->attgenerated)
|
||||
{
|
||||
Expr *defexpr = (Expr *) build_column_default(cstate->rel,
|
||||
attnum);
|
||||
|
Reference in New Issue
Block a user