From: | Mike Rylander <mrylander(at)gmail(dot)com> |
---|---|
To: | Marko Tiikkaja <marko(at)joh(dot)to> |
Cc: | Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: xpath changes in the recent back branches |
Date: | 2015-03-04 16:48:32 |
Message-ID: | CAO8ar=n1pGwe=QSMVG88604qz07NBXkdH9Fi3WUwjU7ay6__ag@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Thu, Feb 19, 2015 at 5:53 AM, Marko Tiikkaja <marko(at)joh(dot)to> wrote:
> Hi,
>
> Commit 79af9a1d2668c9edc8171f03c39e7fed571eeb98 changed xpath handling
> with regard to namespaces, and it seems to be fixing an actual issue.
> However, it was also backpatched to all branches despite it breaking for
> example code like this:
>
> do $$
> declare
> _x xml;
> begin
> _x := (xpath('/x:Foo/x:Bar', xml '<Foo xmlns="teh:urn"><Bar><Baz>1</Baz><Bat>2</Bat></Bar></Foo>',
> array[['x','teh:urn']]))[1];
> raise notice '%', xpath('/Bar/Baz/text()', _x);
> raise notice '%', xpath('/Bar/Bat/text()', _x);
> end
> $$;
>
> The problem is that there's no way to write the code like this in such a
> way that it would work on both versions. If I add the namespace, it's
> broken on 9.1.14. Without it it's broken on 9.1.15.
>
> I'm now thinking of adding a workaround which strips namespaces, but that
> doesn't seem to be easy to do, even with PL/Perl. Is there a better
> workaround here that I'm not seeing?
>
>
FWIW, I've been working around the bug fixed in that commit for ages by
spelling my xpath like this:
xpath('/*[local-name()="Bar"]/*[local-name()="Baz"]/text()', data)
I've modularized my XML handling functions so the source of 'data' is
immaterial -- maybe it's a full document, maybe it's a fragment from a
previous xpath() call -- and the referenced commit is going to make correct
XPATH much more sane, readable, and maintainable. I, for one, welcome it
wholeheartedly.
HTH,
--Mike
From | Date | Subject | |
---|---|---|---|
Next Message | Paul Ramsey | 2015-03-04 16:58:33 | Re: compress method for spgist - 2 |
Previous Message | Jeff Janes | 2015-03-04 16:41:23 | Re: Comparing primary/HS standby in tests |