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/executor | |
parent | 62c06186f55f7968f432bfc16ea2b6a7150698a6 (diff) | |
download | postgresql-2f8f76bcd5f175021e34bf5e23dcefc4286cb485.tar.gz postgresql-2f8f76bcd5f175021e34bf5e23dcefc4286cb485.zip |
Add support for xmlval IS DOCUMENT expression.
Diffstat (limited to 'src/backend/executor')
-rw-r--r-- | src/backend/executor/execQual.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c index 8052f8b2d76..ca804dea210 100644 --- a/src/backend/executor/execQual.c +++ b/src/backend/executor/execQual.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/execQual.c,v 1.206 2007/01/12 21:47:26 petere Exp $ + * $PostgreSQL: pgsql/src/backend/executor/execQual.c,v 1.207 2007/01/14 13:11:53 petere Exp $ * *------------------------------------------------------------------------- */ @@ -2808,6 +2808,25 @@ ExecEvalXml(XmlExprState *xmlExpr, ExprContext *econtext, standalone)); } break; + + case IS_DOCUMENT: + { + ExprState *e; + + /* optional argument is known to be xml */ + Assert(list_length(xmlExpr->args) == 1); + + e = (ExprState *) linitial(xmlExpr->args); + value = ExecEvalExpr(e, econtext, &isnull, NULL); + if (isnull) + return (Datum) 0; + else + { + *isNull = false; + return BoolGetDatum(xml_is_document(DatumGetXmlP(value))); + } + } + break; } if (*isNull) |