From cf2403896d34625e5764c10b269c777a82371ac3 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Thu, 13 Feb 1997 15:40:03 +0000
Subject: [PATCH] Only allow NULL in the prpoer places.

---
 src/backend/parser/gram.y | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index d412e4db23..af0e6c5c67 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.25 1997/01/16 14:56:05 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.26 1997/02/13 15:40:03 momjian Exp $
  *
  * HISTORY
  *    AUTHOR		DATE		MAJOR EVENT
@@ -149,7 +149,8 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
 %type <coldef>	columnDef
 %type <defelt>	def_elem
 %type <node>	def_arg, columnElem, where_clause, 
-		a_expr, AexprConst, in_expr_nodes, not_in_expr_nodes,
+		a_expr, a_expr_or_null, AexprConst,
+		in_expr_nodes, not_in_expr_nodes,
 		having_clause
 %type <value>	NumConst
 %type <attr>	event_object, attr
@@ -1751,6 +1752,15 @@ Typename:  typname opt_array_bounds
  *
  *****************************************************************************/
 
+a_expr_or_null: a_expr
+		{ $$ = $1;}
+	| Pnull
+		{	
+		    A_Const *n = makeNode(A_Const);
+		    n->val.type = T_Null;
+		    $$ = (Node *)n;
+		}
+		
 a_expr:  attr opt_indirection
 		{
 		    $1->indirection = $2;
@@ -1800,7 +1810,7 @@ a_expr:  attr opt_indirection
 		    }
 		    $$ = (Node *)$2;
 		}
-	| '(' a_expr ')'
+	| '(' a_expr_or_null ')'
 		{   $$ = $2; }
 	| a_expr Op a_expr
 		{   $$ = makeA_Expr(OP, $2, $1, $3); }
@@ -1892,9 +1902,9 @@ opt_indirection:  '[' a_expr ']' opt_indirection
 		{   $$ = NIL; }
 	;
    
-expr_list: a_expr
+expr_list: a_expr_or_null
 		{ $$ = lcons($1, NIL); }
-	|  expr_list ',' a_expr
+	|  expr_list ',' a_expr_or_null
 		{ $$ = lappend($1, $3); }
 	;
 
@@ -1966,7 +1976,7 @@ res_target_list:  res_target_list ',' res_target_el
 		}
 	;
 
-res_target_el: Id opt_indirection '=' a_expr
+res_target_el: Id opt_indirection '=' a_expr_or_null
 		{
 		    $$ = makeNode(ResTarget);
 		    $$->name = $1;
@@ -2014,7 +2024,7 @@ res_target_el2: a_expr AS Id
 		    $$->indirection = NULL;
 		    $$->val = (Node *)$1;
 		}
-	| a_expr
+	| a_expr_or_null
 		{
 		    $$ = makeNode(ResTarget);
 		    $$->name = NULL;
@@ -2108,12 +2118,6 @@ AexprConst:  Iconst
 		}
 	| ParamNo
 		{   $$ = (Node *)$1;  }
-	| Pnull		
-		{	
-		    A_Const *n = makeNode(A_Const);
-		    n->val.type = T_Null;
-		    $$ = (Node *)n;
-		}
 	;
 
 ParamNo:  PARAM
-- 
2.24.1