mirror of
https://github.com/postgres/postgres.git
synced 2025-06-29 10:41:53 +03:00
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.
This commit is contained in:
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.97 2003/02/13 05:53:46 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.98 2003/02/16 02:30:38 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -482,6 +482,14 @@ FigureColnameInternal(Node *node, char **name)
|
||||
case T_FuncCall:
|
||||
*name = strVal(llast(((FuncCall *) node)->funcname));
|
||||
return 2;
|
||||
case T_A_Expr:
|
||||
/* make nullif() act like a regular function */
|
||||
if (((A_Expr *) node)->kind == AEXPR_NULLIF)
|
||||
{
|
||||
*name = "nullif";
|
||||
return 2;
|
||||
}
|
||||
break;
|
||||
case T_A_Const:
|
||||
if (((A_Const *) node)->typename != NULL)
|
||||
{
|
||||
@ -510,6 +518,10 @@ FigureColnameInternal(Node *node, char **name)
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
case T_CoalesceExpr:
|
||||
/* make coalesce() act like a regular function */
|
||||
*name = "coalesce";
|
||||
return 2;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user