@@ -258,7 +258,7 @@ static void processCASbits(int cas_bits, int location, const char *constrType,
258
258
%type <node> select_no_parens select_with_parens select_clause
259
259
simple_select
260
260
261
- %type <node> where_clause
261
+ %type <node> where_clause where_or_current_clause
262
262
a_expr b_expr c_expr AexprConst indirection_el opt_slice_bound
263
263
columnref in_expr having_clause array_expr
264
264
OptWhereClause
@@ -1385,6 +1385,21 @@ where_clause:
1385
1385
| /* EMPTY*/ { $$ = NULL ; }
1386
1386
;
1387
1387
1388
+
1389
+ /* variant for UPDATE and DELETE */
1390
+ where_or_current_clause :
1391
+ WHERE a_expr { $$ = $2 ; }
1392
+ /* | WHERE CURRENT_P OF cursor_name
1393
+ {
1394
+ CurrentOfExpr *n = makeNode(CurrentOfExpr);
1395
+
1396
+ n->cursor_name = $4;
1397
+ n->cursor_param = 0;
1398
+ $$ = (Node *) n;
1399
+ }*/
1400
+ | /* EMPTY*/ { $$ = NULL ; }
1401
+ ;
1402
+
1388
1403
opt_sort_clause :
1389
1404
sort_clause { $$ = $1 ; }
1390
1405
| /* EMPTY*/ { $$ = NIL; }
@@ -1609,14 +1624,14 @@ UpdateStmt: //opt_with_clause
1609
1624
UPDATE relation_expr_opt_alias
1610
1625
SET set_clause_list
1611
1626
from_clause
1612
- // where_or_current_clause
1627
+ where_or_current_clause
1613
1628
//returning_clause
1614
1629
{
1615
1630
UpdateStmt *n = makeNode(UpdateStmt);
1616
1631
n->relation = $2 ;
1617
1632
n->targetList = $4 ;
1618
1633
n->fromClause = $5 ;
1619
- n->whereClause = NULL ;// $7;
1634
+ n->whereClause = $6 ;// $7;
1620
1635
n->returningList = NULL ;// $8;
1621
1636
n->withClause = NULL ;// $1;
1622
1637
$$ = (Node *)n;
0 commit comments