aboutsummaryrefslogtreecommitdiff
path: root/src/backend/rewrite/rewriteHandler.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2003-06-25 04:19:24 +0000
committerBruce Momjian <bruce@momjian.us>2003-06-25 04:19:24 +0000
commit53c4f1233fa950c0c6c0e0bbaa7a177278e14b04 (patch)
tree43a4943c7111a7ffa40c3a41de76d8dc563c535a /src/backend/rewrite/rewriteHandler.c
parenta09ccc70dd78b33271b06a6c250f7578aa4e16a1 (diff)
downloadpostgresql-53c4f1233fa950c0c6c0e0bbaa7a177278e14b04.tar.gz
postgresql-53c4f1233fa950c0c6c0e0bbaa7a177278e14b04.zip
UPDATE ... SET <col> = DEFAULT
Rod Taylor
Diffstat (limited to 'src/backend/rewrite/rewriteHandler.c')
-rw-r--r--src/backend/rewrite/rewriteHandler.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index 5d481a3f0a5..4c1e1247b2c 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.120 2003/05/02 20:54:35 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.121 2003/06/25 04:19:24 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -307,7 +307,25 @@ rewriteTargetList(Query *parsetree, Relation target_relation)
{
Assert(strcmp(resdom->resname,
NameStr(att_tup->attname)) == 0);
- new_tle = process_matched_tle(old_tle, new_tle);
+
+ if (old_tle->expr != NULL && IsA(old_tle->expr, SetToDefault))
+ {
+ /* Set to the default value of the column, as requested */
+ Node *new_expr;
+
+ new_expr = build_column_default(target_relation, attrno);
+
+ new_tle = makeTargetEntry(makeResdom(attrno,
+ att_tup->atttypid,
+ att_tup->atttypmod,
+ pstrdup(NameStr(att_tup->attname)),
+ false),
+ (Expr *) new_expr);
+ }
+ else
+ /* Normal Case */
+ new_tle = process_matched_tle(old_tle, new_tle);
+
/* keep scanning to detect multiple assignments to attr */
}
}