Re: argument type problem with plpgsql function
От | Stephan Szabo |
---|---|
Тема | Re: argument type problem with plpgsql function |
Дата | |
Msg-id | 20051122161059.H87037@megazone.bigpanda.com обсуждение исходный текст |
Ответ на | argument type problem with plpgsql function (Luca Pireddu <luca@cs.ualberta.ca>) |
Ответы |
Re: argument type problem with plpgsql function
|
Список | pgsql-sql |
On Tue, 22 Nov 2005, Luca Pireddu wrote: > I wrote a little function that has to work with big numbers > > CREATE OR REPLACE FUNCTION blast_evalue(seq_len bigint, db_size bigint, > bit_score double precision) > RETURNS double precision AS $$ > BEGIN > RETURN 2^(bit_score) * db_size * seq_len; > END; > $$ > LANGUAGE 'plpgsql' > IMMUTABLE > RETURNS NULL ON NULL INPUT; > > but it doesn't work properly unless I cast the db_size parameter when I call > the function: > > select blast_evalue(273, 8903836, -55.4546); > blast_evalue > -------------- > 2430747228 <- wrong number. This is 273 * 8903836 > (1 row) > > select blast_evalue(273, 8903836::bigint, -55.4546); > blast_evalue > --------------------- > 4.9231356421437e-08 <- that's correct > (1 row) > > I don't understand why the cast is necessary. Is there a way to make this > work without it? I got the same answer (the second) for both calls from my 8.0 and 8.1 setups, what version were you trying on?
В списке pgsql-sql по дате отправления: