Re: Changing a column's type

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Changing a column's type
Дата
Msg-id 29983.1040083974@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Changing a column's type  (Hadley Willan <hadley.willan@deeper.co.nz>)
Ответы Re: Changing a column's type  (Hadley Willan <hadley.willan@deeper.co.nz>)
Список pgsql-general
Hadley Willan <hadley.willan@deeper.co.nz> writes:
> FUNCTION fn_create_new_item()
>     _seq RECORD;
> begin
>     SELECT INTO _seq NEXTVAL(''source_sequence'');
>     ..do stuff, insert ....
>     PERFORM fn_b( _seq.next_value );
> end;

> Call to fn_b breaks because _seq.next_value is of type BIGINT.

Oh, I see.  It seems like a rather random coding technique: why'd you
not declare _seq as type int?  If you don't want to change that, you
could insert an explicit cast in the PERFORM, too:

    PERFORM fn_b( _seq.next_value::int );

There's been some recent talk of allowing fn_b() with an int8 argument
to be resolved as fn_b(int4) --- with a runtime down-conversion --- if
there are no other candidates for fn_b().  But no one's put forward a
convincing argument for that as yet.  It might just add confusion.

            regards, tom lane

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

Предыдущее
От: Jakub Ouhrabka
Дата:
Сообщение: Re: working around setQuerySnapshot limitations in functions
Следующее
От: "scott.marlowe"
Дата:
Сообщение: Server testing.