aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_target.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_target.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_target.c')
-rw-r--r--src/backend/parser/parse_target.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index e77183387d7..35d0db803a2 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.31 1998/12/04 15:34:30 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.32 1998/12/13 23:56:44 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -32,7 +32,7 @@
static List *ExpandAllTables(ParseState *pstate);
-static char *FigureColname(Node *expr, Node *resval);
+char *FigureColname(Node *expr, Node *resval);
static Node *SizeTargetExpr(ParseState *pstate,
Node *expr,
@@ -867,7 +867,7 @@ ExpandAllTables(ParseState *pstate)
* list, we have to guess.
*
*/
-static char *
+char *
FigureColname(Node *expr, Node *resval)
{
switch (nodeTag(expr))
@@ -881,6 +881,15 @@ FigureColname(Node *expr, Node *resval)
return ((FuncCall *) resval)->funcname;
}
break;
+ case T_CaseExpr:
+ {
+ char *name;
+ name = FigureColname(((CaseExpr *) expr)->defresult, resval);
+ if (!strcmp(name, "?column?"))
+ name = "case";
+ return name;
+ }
+ break;
default:
break;
}