diff options
| author | Peter Eisentraut | 2020-03-31 06:40:32 +0000 |
|---|---|---|
| committer | Peter Eisentraut | 2020-03-31 06:50:39 +0000 |
| commit | de3bbfcc962f24c1a20a17b76c604e5973a05817 (patch) | |
| tree | 9cf34889eeded6c5b044f294dafb3b37aeb84e70 /src/backend | |
| parent | 616ae3d2b0566e91b49f301bf08410a9972fed93 (diff) | |
Fix INSERT OVERRIDING USER VALUE behavior
The original implementation disallowed using OVERRIDING USER VALUE on
identity columns defined as GENERATED ALWAYS, which is not per
standard. So allow that now.
Expand documentation and tests around this.
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Reviewed-by: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Reviewed-by: Vik Fearing <vik@postgresfriends.org>
Discussion: https://www.postgresql.org/message-id/flat/CAEZATCVrh2ufCwmzzM%3Dk_OfuLhTTPBJCdFkimst2kry4oHepuQ%40mail.gmail.com
Diffstat (limited to 'src/backend')
| -rw-r--r-- | src/backend/rewrite/rewriteHandler.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c index 3b4f28874aa..fe777c3103d 100644 --- a/src/backend/rewrite/rewriteHandler.c +++ b/src/backend/rewrite/rewriteHandler.c @@ -808,7 +808,9 @@ rewriteTargetListIU(List *targetList, { if (att_tup->attidentity == ATTRIBUTE_IDENTITY_ALWAYS && !apply_default) { - if (override != OVERRIDING_SYSTEM_VALUE) + if (override == OVERRIDING_USER_VALUE) + apply_default = true; + else if (override != OVERRIDING_SYSTEM_VALUE) ereport(ERROR, (errcode(ERRCODE_GENERATED_ALWAYS), errmsg("cannot insert into column \"%s\"", NameStr(att_tup->attname)), |
