Re: proposal casting from XML[] to int[], numeric[], text[] - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: proposal casting from XML[] to int[], numeric[], text[]
Date
Msg-id 162867790709280319h36b36442hd9934d83ff761015@mail.gmail.com
Whole thread Raw
In response to Re: proposal casting from XML[] to int[], numeric[], text[]  ("Nikolay Samokhvalov" <nikolay@samokhvalov.com>)
Responses Re: proposal casting from XML[] to int[], numeric[], text[]
List pgsql-hackers
> We would create wrappers returning int[], bool[], string[], but there
> are several issues with such functions:
>   - if the type of the data located on nodes that match XPath
> expression differs from what is expected, what should we do?

raise exception

>   - in XML world, if you request for a text under some node, all
> descendants should be involved in generating result string (example:
> what should be returned for XML like "<em><strong>PostgreSQL</strong>
> is a powerful, open source relational database system</em>" if user
> requests for text under "em" node? In XML world, the correct answer is
> "PostgreSQL  is a powerful, open source relational database system" --
> concatenation of all strings from the node itself and all its
> descendants, in the correct order. Will be this expected for RDBMS
> users?).

It is corect. Or we can disallow any nested elements in casting array.
It's poblem only for text type. Numeric types are clear.

> Regarding GIN indexes, alternative approach would be creating opclass
> for xml[], it should be pretty simple (and better than creating
> implicit CASTs for xml[]<->int[], xml[]<->bool[], etc). Can we do this
> for 8.3 or it's too late? It would be very helpful feature.

It's not practic. If I would to use it for functional indexes for
xpath functions I need constructor for xml[], and I have not it
currently:

xpath('/root/id/text()', column)::int[] @< ARRAY[199,2200,222]

>
> Without that, the only way to have indexes is to use functional btree
> indexes over XPath expression (smth like "...btree(((xpath('...',
> field)[1]::text))" -- pretty ugly construction...)

It's not usefull, if xpath returns more values

Regards
Pavel Stehule


pgsql-hackers by date:

Previous
From: "Nikolay Samokhvalov"
Date:
Subject: Re: Getting to 8.3 beta1
Next
From: "Zeugswetter Andreas ADI SD"
Date:
Subject: Re: [FEATURE REQUEST] Streaming Onlinebackup (MaybeOFFTOPIC)