Re: proposal casting from XML[] to int[], numeric[], text[]

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: proposal casting from XML[] to int[], numeric[], text[]
Дата
Msg-id 200803242346.m2ONkTH00823@momjian.us
обсуждение исходный текст
Ответ на proposal casting from XML[] to int[], numeric[], text[]  ("Pavel Stehule" <pavel.stehule@gmail.com>)
Список pgsql-hackers
Added to TODO:

* Allow xml arrays to be cast to other data types
 http://archives.postgresql.org/pgsql-hackers/2007-09/msg00981.php
http://archives.postgresql.org/pgsql-hackers/2007-10/msg00231.php
http://archives.postgresql.org/pgsql-hackers/2007-11/msg00471.php



---------------------------------------------------------------------------

Pavel Stehule wrote:
> Hello
> 
> Current result from xpath function isn't indexable. It cannot be
> problem with possibility cast it to some base types.
> 
> CREATE OR REPLACE FUNCTION xml_list_to_int(xml[])
> RETURNS int[] AS $$
> SELECT ARRAY(SELECT to_number(($1[i])::text,'999999.99')::int
>                 FROM generate_series(1, array_upper($1,1)) g(i))
> $$ LANGUAGE SQL IMMUTABLE;
> 
> 
> CREATE CAST (xml[] AS int[]) WITH FUNCTION xml_list_to_int(xml[]);
> 
> -- now I can build functional index
> CREATE INDEX fx ON foo USING
> GIN((xpath('//id/text()',objednavka_v_xml)::int[]));
> 
> Does anybody know better solution?
> 
> Regards
> Pavel Stehule
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 9: In versions below 8.0, the planner will ignore your desire to
>        choose an index scan if your joining column's datatypes do not
>        match

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://postgres.enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: [pgsql-www] New email list for emergency communications
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: 8.4 TODO item: make src/port support libpq and ecpg directly