aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_expr.c
diff options
context:
space:
mode:
authorThomas G. Lockhart <lockhart@fourpalms.org>1998-12-13 23:56:44 +0000
committerThomas G. Lockhart <lockhart@fourpalms.org>1998-12-13 23:56:44 +0000
commit2b189aa9537f7b4a518c63a79555ce8bf644294c (patch)
treefa930f0f23180882c36868a851732cc895c70b94 /src/backend/parser/parse_expr.c
parent44cf948467d5f76632af26893ff048e17961ad1a (diff)
downloadpostgresql-2b189aa9537f7b4a518c63a79555ce8bf644294c.tar.gz
postgresql-2b189aa9537f7b4a518c63a79555ce8bf644294c.zip
Improve CASE statement support.
Try to label CASE columns for a SELECT if not specified with an AS clause.
Diffstat (limited to 'src/backend/parser/parse_expr.c')
-rw-r--r--src/backend/parser/parse_expr.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c
index 8dcabc48dbb..acdf2d7d03d 100644
--- a/src/backend/parser/parse_expr.c
+++ b/src/backend/parser/parse_expr.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.37 1998/12/04 15:34:30 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.38 1998/12/13 23:56:43 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -251,8 +251,7 @@ transformExpr(ParseState *pstate, Node *expr, int precedence)
{
/*
- * look for a column name or a relation name (the default
- * behavior)
+ * look for a column name or a relation name (the default behavior)
*/
result = transformIdent(pstate, expr, precedence);
break;
@@ -358,13 +357,6 @@ transformExpr(ParseState *pstate, Node *expr, int precedence)
w->expr = (Node *)a;
}
lfirst(args) = transformExpr(pstate, (Node *) w, precedence);
-
- if (w->result == NULL)
- {
- A_Const *n = makeNode(A_Const);
- n->val.type = T_Null;
- w->result = (Node *)n;
- }
}
if (c->defresult == NULL)
@@ -413,7 +405,7 @@ transformExpr(ParseState *pstate, Node *expr, int precedence)
}
}
- /* Convert default clause, if necessary */
+ /* Convert default result clause, if necessary */
if (c->casetype != ptype)
{
if (! c->casetype)
@@ -469,8 +461,13 @@ transformExpr(ParseState *pstate, Node *expr, int precedence)
elog(ERROR,"WHEN clause must have a boolean result");
/* result is NULL for NULLIF() construct - thomas 1998-11-11 */
- if (w->result != NULL)
- w->result = transformExpr(pstate, (Node *) w->result, precedence);
+ if (w->result == NULL)
+ {
+ A_Const *n = makeNode(A_Const);
+ n->val.type = T_Null;
+ w->result = (Node *)n;
+ }
+ w->result = transformExpr(pstate, (Node *) w->result, precedence);
result = expr;
break;
}