Re: Damn triggers and NEW

Поиск
Список
Период
Сортировка
От Nigel J. Andrews
Тема Re: Damn triggers and NEW
Дата
Msg-id Pine.LNX.4.21.0306171608390.5417-100000@ponder.fairway2k.co.uk
обсуждение исходный текст
Ответ на Re: Damn triggers and NEW  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
On Tue, 17 Jun 2003, Tom Lane wrote:

> Joe Conway <mail@joeconway.com> writes:
> > Nigel J. Andrews wrote:
> >> I'd appreciate some pointers on this as it appears new/old can't be used in an
> >> execute statement in triggers but that sounds completely wrong.
>
> > I've tried this before, and unfortunately I think that statement is
> > currently true.
>
> The problem's not really specific to either NEW/OLD or to EXECUTE;
> AFAICT the issue is just that plpgsql does not do run-time field
> selection.  A field access has to look like foo.bar where both foo
> and bar are simple identifiers; you can't play games wherein the name
> bar is determined at runtime.
>
> > I ended up concluding that, short of a patch to the backend, a C code
> > trigger would be needed. You might be able to do something with pltcl or
> >   one of the other PLs though.
>
> I believe you can do this in pltcl --- it doesn't do any pre-parsing
> or pre-optimization of the code, so whether the field name is static
> or just calculated won't matter to it.  Also, I believe it allows you
> to inquire about the set of field names belonging to NEW or OLD, which
> is another thing that's impossible in plpgsql (and wouldn't do you any
> good if it were possible, because of the field-access syntax limitation).
>
> Use the right tool for the job.

Quite.

When I floated the idea of doing some server programming in pltcl or plpython
the client was unhappy with it so I've therefore just been bashing out stuff in
plpgsql until I can slow down a little and think about coding the things in C.

Of course, given that plpython seems on it's last legs for now it was probably
a wise choice not to go with that particular language.

Sorry, for asking another stupid plpgsql question. Unfortunately I hit the
problem as I was trying to load up a new development database, having
discovered yesterday that at least one function had been written for a changed
design without the dev database containing the change and it looking like a
time consuming task to revert and check everything when that time was better
spent actually loading a new db.


--
Nigel J. Andrews


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

Предыдущее
От: Teodor Sigaev
Дата:
Сообщение: Re: tsearch - v2 new dict
Следующее
От: Martijn van Oosterhout
Дата:
Сообщение: Re: Sort memory not being released