diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2003-02-16 02:30:39 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2003-02-16 02:30:39 +0000 |
| commit | 51972a9d5d068dd34b24ff4923981ffb90e5cc2d (patch) | |
| tree | c68fddbb3eaafbd332e84afbafe3c171f6372d4e /src/pl | |
| parent | de25638d2fbe9e56ecfc60a7dda8a0c56028317a (diff) | |
| download | postgresql-51972a9d5d068dd34b24ff4923981ffb90e5cc2d.tar.gz | |
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.
Diffstat (limited to 'src/pl')
| -rw-r--r-- | src/pl/plpgsql/src/pl_exec.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c index 7d4785ef7d..3486f1ccd2 100644 --- a/src/pl/plpgsql/src/pl_exec.c +++ b/src/pl/plpgsql/src/pl_exec.c @@ -3,7 +3,7 @@ * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.78 2003/02/03 21:15:45 tgl Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.79 2003/02/16 02:30:39 tgl Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -3628,6 +3628,28 @@ exec_simple_check_node(Node *node) return TRUE; } + case T_CoalesceExpr: + { + CoalesceExpr *expr = (CoalesceExpr *) node; + + if (!exec_simple_check_node((Node *) expr->args)) + return FALSE; + + return TRUE; + } + + case T_NullIfExpr: + { + NullIfExpr *expr = (NullIfExpr *) node; + + if (expr->opretset) + return FALSE; + if (!exec_simple_check_node((Node *) expr->args)) + return FALSE; + + return TRUE; + } + case T_NullTest: return exec_simple_check_node((Node *) ((NullTest *) node)->arg); |
