aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_expr.c
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2007-01-14 13:11:54 +0000
committerPeter Eisentraut <peter_e@gmx.net>2007-01-14 13:11:54 +0000
commit2f8f76bcd5f175021e34bf5e23dcefc4286cb485 (patch)
tree988cbda3b12dda2b055f36d4a8596de7952b6614 /src/backend/parser/parse_expr.c
parent62c06186f55f7968f432bfc16ea2b6a7150698a6 (diff)
downloadpostgresql-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.c11
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));