Custom type literal conversion

Поиск
Список
Период
Сортировка
От Chris Bandy
Тема Custom type literal conversion
Дата
Msg-id CAMDg7WxSnTtb0UhqS31HWrfHGKnvNrLX1C7ASTSBjJcR5kb8Yg@mail.gmail.com
обсуждение исходный текст
Ответы Re: Custom type literal conversion  (hubert depesz lubaczewski <depesz@gmail.com>)
Список pgsql-general
I would like to create a new type for version strings that sorts numerically. The composite type below was quick to write and does not require superuser privileges. However, it doesn't respond to type casts the way I'd like.

Is there a way to implement this type's literal conversion without resorting to a base type?

Thanks
-- Chris

===

=> CREATE TYPE myversion AS (version integer[], build varchar);
CREATE TYPE
=> CREATE OR REPLACE FUNCTION myversion(text)
-> RETURNS myversion AS $$
$>     SELECT
$>         string_to_array(split_part($1, '+', 1), '.')::integer[],
$>         split_part($1, '+', 2);
$> $$ LANGUAGE SQL IMMUTABLE STRICT;
CREATE FUNCTION
=> SELECT myversion('1.0.9+jenkins');
      myversion      
---------------------
 ("{1,0,9}",jenkins)
(1 row)

=> SELECT '1.0.9+jenkins'::myversion;
ERROR:  malformed record literal: "1.0.9+jenkins"
LINE 1: SELECT '1.0.9+jenkins'::myversion;
               ^
DETAIL:  Missing left parenthesis.

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: pg_dump: [archiver] -C and -c are incompatible options
Следующее
От: hubert depesz lubaczewski
Дата:
Сообщение: Re: Custom type literal conversion