BUG #17765: SELECT CAST(true AS BIGINT);
The following bug has been logged on the website:
Bug reference: 17765
Logged by: Vladimir Vinnikov
Email address: vvinnikov@list.ru
PostgreSQL version: 15.1
Operating system: x86_64-pc-linux-gnu
Description:
ERROR: cannot cast type boolean to bigint
That's inconsistent since casting boolean to int is OK (SELECT CAST(true AS
INT);) or double casting is OK (SELECT CAST(CAST(true AS INT) AS BIGINT);).
On Tuesday, January 31, 2023, PG Bug reporting form <noreply@postgresql.org>
wrote:
The following bug has been logged on the website:
Bug reference: 17765
Logged by: Vladimir Vinnikov
Email address: vvinnikov@list.ru
PostgreSQL version: 15.1
Operating system: x86_64-pc-linux-gnu
Description:ERROR: cannot cast type boolean to bigint
That's inconsistent since casting boolean to int is OK (SELECT CAST(true AS
INT);) or double casting is OK (SELECT CAST(CAST(true AS INT) AS BIGINT);).
If you want to create your own cast by all means, but just because we are
stuck with allowing bool-to-int doesn’t mean we have allow bool-to-bigint.
This is neither a big nor, IMO, a desirable feature. Casts that don’t make
sense should not exist. And I have no clue how the double-casting example
means anything here. Of course integer to bigint is a valid cast.
David J.
PG Bug reporting form <noreply@postgresql.org> writes:
ERROR: cannot cast type boolean to bigint
That's inconsistent since casting boolean to int is OK (SELECT CAST(true AS
INT);) or double casting is OK (SELECT CAST(CAST(true AS INT) AS BIGINT);).
We also don't offer direct casts from bool to smallint, numeric, float4,
or float8. I'm disinclined to add any of those, although you certainly
can make them locally if you need them.
regards, tom lane