Thread: 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