diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2007-01-14 13:11:54 +0000 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2007-01-14 13:11:54 +0000 |
commit | 2f8f76bcd5f175021e34bf5e23dcefc4286cb485 (patch) | |
tree | 988cbda3b12dda2b055f36d4a8596de7952b6614 /src/backend/parser/parse_expr.c | |
parent | 62c06186f55f7968f432bfc16ea2b6a7150698a6 (diff) | |
download | postgresql-2f8f76bcd5f175021e34bf5e23dcefc4286cb485.tar.gz postgresql-2f8f76bcd5f175021e34bf5e23dcefc4286cb485.zip |
Add support for xmlval IS DOCUMENT expression.
Diffstat (limited to 'src/backend/parser/parse_expr.c')
-rw-r--r-- | src/backend/parser/parse_expr.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index d9e42011d41..394a507f2ef 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_expr.c,v 1.207 2007/01/12 22:09:49 petere Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_expr.c,v 1.208 2007/01/14 13:11:53 petere Exp $ * *------------------------------------------------------------------------- */ @@ -1483,6 +1483,10 @@ transformXmlExpr(ParseState *pstate, XmlExpr *x) else newe = coerce_to_boolean(pstate, newe, "XMLROOT"); break; + case IS_DOCUMENT: + newe = coerce_to_specific_type(pstate, newe, XMLOID, + "IS DOCUMENT"); + break; } newx->args = lappend(newx->args, newe); i++; @@ -1782,7 +1786,10 @@ exprType(Node *expr) type = ((MinMaxExpr *) expr)->minmaxtype; break; case T_XmlExpr: - type = XMLOID; + if (((XmlExpr *) expr)->op == IS_DOCUMENT) + type = BOOLOID; + else + type = XMLOID; break; case T_NullIfExpr: type = exprType((Node *) linitial(((NullIfExpr *) expr)->args)); |