Re: xpath improvement suggestion - Mailing list pgsql-hackers

From Scott Bailey
Subject Re: xpath improvement suggestion
Date
Msg-id 4B43DAA6.3070109@comcast.net
Whole thread Raw
In response to xpath improvement suggestion  (Arie Bikker <arie@abikker.nl>)
List pgsql-hackers
Arie Bikker wrote:
> Hi all,
> 
> Well I had  to burn some midnight oil trying to figure out why a 
> construct like
> SELECT xpath('name()','<a/>');
> doesn't give the expected result. Kept getting an empty array:
>   xpath
> -------------
> {}
> instead of the expected "{a}"
> BugID 4294 and the TODO item "better handling of XPath data types" 
> pointed in the right direction.
> whithin src/backend/utils/adt/xml.c in the function xpath the result of 
> the call to xmlXPathCompiledEval is not handled optimally. In fact, the 
> result is assumed to be a nodeset without consulting the ->type member 
> of the result. I've made some minor changes to xml.c to handle some 
> non-nodeset results of xmlXPathCompiledEval.
> Essentially, the revised code makes an array of all the nodes in the 
> xpathobj result in case this is a nodeset, or an array with a single 
> element in case the reult is a number/string/boolean. The problem cases 
> mentioned in 
> http://archives.postgresql.org/pgsql-hackers/2008-06/msg00616.php now 
> work as expected.
> Revision of the code involves:
> - A switch statement to handle the result type of xmlXPathCompiledEval.
> - an additional function xmlpathobjtoxmltype.
> 
> diff of the revisioned code with respect to original is in attached file.
> 
> kind regards, Arie Bikker

Well that's interesting. I was getting ready to dig into libxml2 to see 
what it would take to return scalar values from xpath expressions. Thanks.

Scott


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Status of plperl inter-sp calling
Next
From: u235sentinel
Date:
Subject: Auto-extending table partitions?