Обсуждение: BUG #17765: SELECT CAST(true AS BIGINT);

Поиск
Список
Период
Сортировка

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

От
PG Bug reporting form
Дата:
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);

От
"David G. Johnston"
Дата:
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);

От
Tom Lane
Дата:
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