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

Started by PG Bug reporting formabout 3 years ago3 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

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);).

#2David G. Johnston
david.g.johnston@gmail.com
In reply to: PG Bug reporting form (#1)
Re: BUG #17765: SELECT CAST(true 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.

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: BUG #17765: SELECT CAST(true AS BIGINT);

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