Thread: changing xpath() and xpath_exists()

changing xpath() and xpath_exists()

From
Alvaro Herrera
Date:
Hello

Per discussion at
https://postgr.es/m/0684A598-002C-42A2-AE12-F024A324EAE4@winand.at
I intend to change xpath() and xpath_exists() in a subtly backwards-
incompatible way, so that they match the behavior of SQL-standard-
specified XMLTABLE.  It seems sane to keep them in sync.  Anybody wants
to object so that we keep the historical functions alone and only change
XMLTABLE?

Previously, this query would return empty:
SELECT xpath('root', '<root/>');

 xpath 
───────
 {}
(1 fila)

After this patch, it will return the root node:

   xpath   
───────────
 {<root/>}
(1 fila)


Note that if an absolute path is used, the behavior is unchanged:

alvherre=# SELECT xpath('/root', '<root/>');
   xpath   
───────────
 {<root/>}
(1 fila)

Please speak up if you think the former behavior should be kept.

-- 
Álvaro Herrera


Re: changing xpath() and xpath_exists()

From
Andrew Dunstan
Date:

On 06/20/2018 07:35 PM, Alvaro Herrera wrote:
> Hello
>
> Per discussion at
> https://postgr.es/m/0684A598-002C-42A2-AE12-F024A324EAE4@winand.at
> I intend to change xpath() and xpath_exists() in a subtly backwards-
> incompatible way, so that they match the behavior of SQL-standard-
> specified XMLTABLE.  It seems sane to keep them in sync.  Anybody wants
> to object so that we keep the historical functions alone and only change
> XMLTABLE?
>
> Previously, this query would return empty:
> SELECT xpath('root', '<root/>');
>
>   xpath
> ───────
>   {}
> (1 fila)
>
> After this patch, it will return the root node:
>
>     xpath
> ───────────
>   {<root/>}
> (1 fila)
>
>
> Note that if an absolute path is used, the behavior is unchanged:
>
> alvherre=# SELECT xpath('/root', '<root/>');
>     xpath
> ───────────
>   {<root/>}
> (1 fila)
>
> Please speak up if you think the former behavior should be kept.
>


So the existing behaviour is looking for a child of the root node called 
'root'? I agree that seems broken.

cheers

andrew

-- 
Andrew Dunstan                https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services