xpath() subquery for empty array

From: Roy Walter <walt(at)brookhouse(dot)co(dot)uk>
To: pgsql-general(at)postgresql(dot)org
Subject: xpath() subquery for empty array
Date: 2009-07-12 09:23:53
Message-ID: 4A59ABA9.9080209@brookhouse.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

In postgres 8.4 When running xpath() queries it seems that empty results
are always returned. So if I query a table containing 1000 XML documents
a 1000 rows will always be fetched even if the xpath() element of the
query only matches 10 documents.

The documentation states:

The function |xpath| evaluates the XPath expression /xpath/ against
the XML value /xml/. It returns an array of XML values corresponding
to the node set produced by the XPath expression.

Yet it seems that empty node sets (arrays) are also returned. So, my
thought was to run a subquery to eliminate empty arrays, e.g.:

SELECT x
FROM (SELECT xpath('//entry[contains(p, ''searchtext'')]/@*', docxml)
AS x FROM docs) AS y WHERE x <> [test for empty array?????????]

How do I test for an empty array in postgres?

Thanks in advance,
Roy

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Joe Conway 2009-07-12 09:51:39 Re: BUG #4916: wish: more statistical functions (median, percentiles etc)
Previous Message Craig Ringer 2009-07-12 08:39:12 Re: Weird disk/table space consumption problem