aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/parser/gram.y27
1 files changed, 9 insertions, 18 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index eab360bc774..1ddb5cb76ec 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.561 2006/09/02 20:34:47 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.562 2006/09/02 20:52:01 momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@@ -238,7 +238,7 @@ static void doNegateFloat(Value *v);
qualified_name_list any_name any_name_list
any_operator expr_list attrs
target_list update_col_list update_target_list
- update_value_list insert_column_list
+ update_value_list set_opt insert_column_list
values_list def_list indirection opt_indirection
group_clause TriggerFuncArgs select_limit
opt_select_limit opclass_item_list
@@ -5526,21 +5526,7 @@ opt_nowait: NOWAIT { $$ = TRUE; }
*****************************************************************************/
UpdateStmt: UPDATE relation_expr_opt_alias
- SET update_target_list
- from_clause
- where_clause
- returning_clause
- {
- UpdateStmt *n = makeNode(UpdateStmt);
- n->relation = $2;
- n->targetList = $4;
- n->fromClause = $5;
- n->whereClause = $6;
- n->returningList = $7;
- $$ = (Node *)n;
- }
- | UPDATE relation_expr_opt_alias
- SET update_target_lists_list
+ SET set_opt
from_clause
where_clause
returning_clause
@@ -5555,6 +5541,11 @@ UpdateStmt: UPDATE relation_expr_opt_alias
}
;
+set_opt:
+ update_target_list { $$ = $1; }
+ | update_target_lists_list { $$ = $1; }
+ ;
+
/*****************************************************************************
*
@@ -5981,7 +5972,7 @@ update_target_lists_el:
{
/* merge update_value_list with update_col_list */
ResTarget *res_col = (ResTarget *) lfirst(col_cell);
- ResTarget *res_val = (ResTarget *) lfirst(val_cell);
+ Node *res_val = (Node *) lfirst(val_cell);
res_col->val = (Node *)copyObject(res_val);
}