Re: implement CAST(expr AS type FORMAT 'template')

Поиск
Список
Период
Сортировка
От Vik Fearing
Тема Re: implement CAST(expr AS type FORMAT 'template')
Дата
Msg-id 1b702de4-86b0-4144-a2d0-38266296894f@postgresfriends.org
обсуждение исходный текст
Ответ на Re: implement CAST(expr AS type FORMAT 'template')  (jian he <jian.universality@gmail.com>)
Ответы Re: implement CAST(expr AS type FORMAT 'template')
Список pgsql-hackers
On 28/07/2025 10:41, jian he wrote:
> select oid, castsource::regtype, casttarget::regtype,
> castfunc::regproc, castcontext, castmethod
> from pg_cast
> where casttarget::regtype::text in ('text') or
> castsource::regtype::text in ('text');
>
> As you can see from the query output, cast from other type to text or
> cast from text to other type is not in the pg_cast catalog entry.
> there are in type input/output functions. it will be represented as a
> CoerceViaIO node.
> see function find_coercion_pathway (src/backend/parser/parse_coerce.c
> line:3577).


This is the same issue I came across when I tried to implement it 
several years ago.


> adding these pg_cast entries seems tricky.
> for example:
> (assume castsource as numeric, casttarget as text)
> will
> (castsource as numeric, casttarget as text, castfunc as numeric_out,
> castformatfunc as numeric_to_char)
> ever work?
> but numeric_out' result type is cstring.


I had been imagining another castcontext that would only specify the 
castfunc when the FORMAT claused is used, otherwise the current method 
of passing through IO would be used.


> so I tend to think adding castformatfunc to pg_cast will not work.


Perhaps not, but we need to find a way to make this generic so that 
custom types can define formatting rules for themselves.

-- 

Vik Fearing




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