Re: CREATE OR REPLACE AGGREGATE

Поиск
Список
Период
Сортировка
От Robert James
Тема Re: CREATE OR REPLACE AGGREGATE
Дата
Msg-id CAGYyBggyYDDjNvAowOhpycHjd35-b14QY3sNhjFcCcKAGKC9vw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: CREATE OR REPLACE AGGREGATE  (Merlin Moncure <mmoncure@gmail.com>)
Список pgsql-general
On 12/15/11, Merlin Moncure <mmoncure@gmail.com> wrote:
> On Thu, Dec 15, 2011 at 11:29 AM, Robert James <srobertjames@gmail.com>
> wrote:
>> Is there anyway to do the equivalent of CREATE OR REPLACE AGGREGATE?
>> Or - maybe even better - CREATE AGGREGATE if it doesn't already exist?
>
> Well, you have DROP [IF EXISTS] which should cover at least some of
> the use cases.
>
> I'm not sure a OR REPLACE for aggreates is a good idea -- you can
> already REPLACE the internal function (which is mostly what you need).
>  The aggregate itself mainly defines the input types, state, and
> output types.  The main advantage of replace is you get to preserve
> the oid and avoid dependency issues -- if you are changing the
> aggregate, it's pretty likely you'd have to go through that anyways.

Thanks.  Can you elaborate? My use case is that the CREATE is done as
part of a database migration system, and we don't always track fully
if it's been run once already.  (Not to mention that some aggregates
are built into 8.4 but lacking on 8.3).  I'd like code that will
create it if it's not there.

My concern with simply dropping it first is that some other objects
might depend on it, causing the drop to be rejected.

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

Предыдущее
От: Filip Rembiałkowski
Дата:
Сообщение: segfault with plproxy
Следующее
От: Robert James
Дата:
Сообщение: Re: Logical Aggregate Functions (eg ANY())