Tom Lane wrote:
Hackers: we might reasonably fix this by doing a deep copy of the
relcache's trigger info during initResultRelInfo(); or we could fix it
by getting rid of ri_TrigDesc and re-fetching from the relcache every
time.  The former would imply that trigger state would remain unchanged
throughout a query, the latter would try to track currently-committed
trigger behavior.  Either way has got pitfalls I think.

The fact that there's a problem at all is because people are using
direct poking of the system catalogs instead of some kind of ALTER TABLE
command to disable/enable triggers; an ALTER command would presumably
gain exclusive lock on the table and thereby delay until active queries
finish.  But that technique is out there (even in pg_dump files :-() and
so we'd best try to make the system proof against it.

Any thoughts on which way to go?
I'd say:

1. go with the former
2. we definitely should also have an ALTER command to allow disable/enable of
   triggers
3. along with the ALTER, document that directly messing with the system
   catalogs is highly discouraged

Joe



---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to