summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorPeter Eisentraut2020-03-31 06:40:32 +0000
committerPeter Eisentraut2020-03-31 06:50:39 +0000
commitde3bbfcc962f24c1a20a17b76c604e5973a05817 (patch)
tree9cf34889eeded6c5b044f294dafb3b37aeb84e70 /src/backend
parent616ae3d2b0566e91b49f301bf08410a9972fed93 (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.c4
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)),