Thread: BUG #17765: SELECT CAST(true AS BIGINT);

BUG #17765: SELECT CAST(true AS BIGINT);

From
PG Bug reporting form
Date:
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);).


Re: BUG #17765: SELECT CAST(true AS BIGINT);

From
"David G. Johnston"
Date:
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.

Re: BUG #17765: SELECT CAST(true AS BIGINT);

From
Tom Lane
Date:
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