Quoting Peter Eisentraut <pete...@gmx.net>:

It would be nice to make XMLEXISTS work as in the standard, seeing how
many others are providing the same interface.

...

I think providing XPath is enough, at least for now.


Hi Peter,

From piecing together sections 8.4 (<XML exists predicate>) and 6.18 (<XML query>), I believe the full call signature would be (apologies if my bracketing isn't right):

XMLEXISTS
(
 xquery_expression
 [
  PASSING {BY REF|BY VALUE}
    { (xml_expression [BY REF|BY VALUE])
      | (xml_expression AS identifier)
    }
    [, ...]
 ]
)

Seeing as we're only intereseted in XPath for the moment and most of the syntax above is only really relevant to XQuery, I would suggest the following as accepatable until full XQuery support comes:

XMLEXISTS
(
 xpath_expression
  [
   PASSING BY REF xml_expression [BY REF]
  ]
)

There is one drawback in this approach, namely xml namespace support. I think borrowing the solution used in the xpath() (i.e. passing a nsarray) is out of the question as it won't be future proofed against full XQuery support. This is because the declaration of namespaces in XQuery is actually part of the query itself. I also think it inappropriate to attempt to parse the xpath_expression looking for XQuery style namespace declartions. So I think we ignore declared namespace support for the moment and just get the syntax correct ready for XQuery support in the hopefully near future.

Do you agree with what I have proposed?

Regards,
--
Mike Fowler



--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to