aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1997-02-13 15:40:03 +0000
committerBruce Momjian <bruce@momjian.us>1997-02-13 15:40:03 +0000
commitcf2403896d34625e5764c10b269c777a82371ac3 (patch)
tree7fd3e9553664fc45e92741795479b75026a5ca16 /src
parenteacd0fd938663b8c673d8e3ac9549c9f3b7b463d (diff)
downloadpostgresql-cf2403896d34625e5764c10b269c777a82371ac3.tar.gz
postgresql-cf2403896d34625e5764c10b269c777a82371ac3.zip
Only allow NULL in the prpoer places.
Diffstat (limited to 'src')
-rw-r--r--src/backend/parser/gram.y30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index d412e4db23e..af0e6c5c67e 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