Обсуждение: some problem with casting unknown to smallint

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

some problem with casting unknown to smallint

От
"Pavel Stehule"
Дата:
Hello

I am not sure, it's probably bug.

postgres=# create function t1(smallint) returns smallint as $$select
$1$$ language sql;
CREATE FUNCTION
postgres=# create function t2(bigint) returns bigint as $$select $1$$
language sql;
CREATE FUNCTION
postgres=# select t1(10);
ERROR:  function t1(integer) does not exist
LINE 1: select t1(10);              ^
HINT:  No function matches the given name and argument types. You
might need to add explicit type casts.

but
postgres=# select t2(10);t2
----10
(1 row)

Regards
Pavel Stehule


Re: some problem with casting unknown to smallint

От
Tom Lane
Дата:
"Pavel Stehule" <pavel.stehule@gmail.com> writes:
> I am not sure, it's probably bug.

> postgres=# create function t1(smallint) returns smallint as $$select
> $1$$ language sql;
> CREATE FUNCTION
> postgres=# select t1(10);
> ERROR:  function t1(integer) does not exist

That's not "unknown to smallint", that's "integer to smallint",
which is not an implicit cast.

unknown to smallint would be t1('10')
        regards, tom lane


Re: some problem with casting unknown to smallint

От
"Pavel Stehule"
Дата:
2008/10/29 Tom Lane <tgl@sss.pgh.pa.us>:
> "Pavel Stehule" <pavel.stehule@gmail.com> writes:
>> I am not sure, it's probably bug.
>
>> postgres=# create function t1(smallint) returns smallint as $$select
>> $1$$ language sql;
>> CREATE FUNCTION
>> postgres=# select t1(10);
>> ERROR:  function t1(integer) does not exist
>
> That's not "unknown to smallint", that's "integer to smallint",
> which is not an implicit cast.
>
> unknown to smallint would be t1('10')
>

I understand. So every smallint should be call with casting?

regards
Pavel Stehule


>                        regards, tom lane
>


Re: some problem with casting unknown to smallint

От
Tom Lane
Дата:
"Pavel Stehule" <pavel.stehule@gmail.com> writes:
> I understand. So every smallint should be call with casting?

A long time ago we tried to make small integer literals be interpreted
as int2 initially, instead of int4, and the attempt failed rather
spectacularly.  (It broke most of the regression tests, IIRC, in ways
that suggested that many client applications would have problems too.)
Perhaps PG's type system has matured to the point where it'd work better
now, but I'm not really interested in trying it.  I don't see very much
point in declaring functions to take smallint rather than int anyway...
        regards, tom lane


Re: some problem with casting unknown to smallint

От
"Pavel Stehule"
Дата:
2008/10/29 Tom Lane <tgl@sss.pgh.pa.us>:
> "Pavel Stehule" <pavel.stehule@gmail.com> writes:
>> I understand. So every smallint should be call with casting?
>
> A long time ago we tried to make small integer literals be interpreted
> as int2 initially, instead of int4, and the attempt failed rather
> spectacularly.  (It broke most of the regression tests, IIRC, in ways
> that suggested that many client applications would have problems too.)
> Perhaps PG's type system has matured to the point where it'd work better
> now, but I'm not really interested in trying it.  I don't see very much
> point in declaring functions to take smallint rather than int anyway...

I found this question on one czech it specialized site. It's mostly
beginner's problem.

regards
Pavel Stehule


>
>                        regards, tom lane
>