From 51972a9d5d068dd34b24ff4923981ffb90e5cc2d Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 16 Feb 2003 02:30:39 +0000 Subject: COALESCE() and NULLIF() are now first-class expressions, not macros that turn into CASE expressions. They evaluate their arguments at most once. Patch by Kris Jurka, review and (very light) editorializing by me. --- src/backend/parser/parse_clause.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) (limited to 'src/backend/parser/parse_clause.c') diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c index d65df553acf..33e7cce4203 100644 --- a/src/backend/parser/parse_clause.c +++ b/src/backend/parser/parse_clause.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.109 2003/02/13 20:45:21 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.110 2003/02/16 02:30:38 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -922,17 +922,10 @@ buildMergedJoinVar(JoinType jointype, Var *l_colvar, Var *r_colvar) * Here we must build a COALESCE expression to ensure that * the join output is non-null if either input is. */ - CaseExpr *c = makeNode(CaseExpr); - CaseWhen *w = makeNode(CaseWhen); - NullTest *n = makeNode(NullTest); - - n->arg = (Expr *) l_node; - n->nulltesttype = IS_NOT_NULL; - w->expr = (Expr *) n; - w->result = (Expr *) l_node; - c->casetype = outcoltype; - c->args = makeList1(w); - c->defresult = (Expr *) r_node; + CoalesceExpr *c = makeNode(CoalesceExpr); + + c->coalescetype = outcoltype; + c->args = makeList2(l_node, r_node); res_node = (Node *) c; break; } -- cgit v1.2.3