Re: implement CAST(expr AS type FORMAT 'template') - Mailing list pgsql-hackers

From Zsolt Parragi
Subject Re: implement CAST(expr AS type FORMAT 'template')
Date
Msg-id CAN4CZFNeCfLzt5g90vf_Dw5BKW2u-QhVKo369XbO-vXYq4ci5g@mail.gmail.com
Whole thread
In response to Re: implement CAST(expr AS type FORMAT 'template')  (jian he <jian.universality@gmail.com>)
Responses Re: implement CAST(expr AS type FORMAT 'template')
List pgsql-hackers
v6 is better, but I found a few more questions:

+select pg_get_viewdef('tcast_v1', true);
+                                       pg_get_viewdef
+--------------------------------------------------------------------------------------------
+  SELECT CAST( col1 AS date FORMAT 'YYYY-MM-DD'::text) AS to_date,
                     +

Is that space after "CAST(" intentional?

+ format = coerce_to_target_type(pstate, fmt,
+    exprType(fmt), TEXTOID,
+    exprTypmod(fmt),
+    ccontext, cformat,
+    exprLocation(fmt));

Is exprTypmod(fmt) correct, shouldn't it use -1?

This one also shows a not so userfriendly error:

postgres=# SELECT CAST('hello' AS name FORMAT 'test') ;
2026-03-30 22:12:53.651 UTC [750980] ERROR:  function
pg_catalog.to_char(text, text) does not exist
2026-03-30 22:12:53.651 UTC [750980] DETAIL:  No function of that name
accepts the given argument types.
2026-03-30 22:12:53.651 UTC [750980] HINT:  You might need to add
explicit type casts.
2026-03-30 22:12:53.651 UTC [750980] STATEMENT:  SELECT CAST('hello'
AS name FORMAT 'test') ;
ERROR:  function pg_catalog.to_char(text, text) does not exist
DETAIL:  No function of that name accepts the given argument types.
HINT:  You might need to add explicit type casts.

And varchar/bpchar adds details about binary coercible casts:

SELECT CAST('hello' AS bpchar FORMAT 'test') ;
2026-03-30 22:14:12.081 UTC [750980] ERROR:  cannot cast type text to
character while using a format template at character 8
2026-03-30 22:14:12.081 UTC [750980] DETAIL:  binary coercible type
cast is not supported while using a format template
2026-03-30 22:14:12.081 UTC [750980] STATEMENT:  SELECT CAST('hello'
AS bpchar FORMAT 'test') ;
ERROR:  cannot cast type text to character while using a format template
LINE 1: SELECT CAST('hello' AS bpchar FORMAT 'test') ;



pgsql-hackers by date:

Previous
From: Heikki Linnakangas
Date:
Subject: Re: Shared hash table allocations
Next
From: Zsolt Parragi
Date:
Subject: Re: Fix race with LLVM and bison.