Re: Weird type selection choice

Поиск
Список
Период
Сортировка
От Bernd Helmle
Тема Re: Weird type selection choice
Дата
Msg-id 77CFD63F45729B2BD54BDB7D@imhotep.credativ.de
обсуждение исходный текст
Ответ на Weird type selection choice  (Peter Eisentraut <peter_e@gmx.net>)
Список pgsql-hackers
--On Dienstag, November 06, 2007 16:31:05 +0100 Peter Eisentraut 
<peter_e@gmx.net> wrote:

> I noticed this problem in 8.2 and 8.3:
>
> pei=# select mod( trunc( 1 ), 2 );
> ERROR:  42883: function mod(double precision, integer) does not exist
> LINE 1: select mod( trunc( 1 ), 2 );
>                ^
>
> It apparently casts the 1 to double precision to pick the variant
> trunc(dp)=>dp instead of trunc(numeric)=>numeric.  I was under the
> impression  that we didn't want to cast integers to float types
> implicitly because this  loses information.  Clearly, the numeric variant
> should be preferred anyway.   What's wrong here?

Indeed, if i go and make the implicit cast from int4 to float8 explicit or 
implicit on assignment it's going to work:

bernd@localhost:bernd #= UPDATE pg_cast SET castcontext = 'e' WHERE 
castsource = 23 AND casttarget = 701;
UPDATE 1
Time: 7,320 ms
bernd@localhost:bernd #=  select mod( trunc( 1 ), 2 );mod
-----  1
(1 row)

--  Thanks
                   Bernd


В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Gokulakannan Somasundaram"
Дата:
Сообщение: Re: Visibility map thoughts
Следующее
От: Peter Eisentraut
Дата:
Сообщение: Re: Weird type selection choice