Tom Lane wrote: > Alvaro Herrera <[EMAIL PROTECTED]> writes: > > Tom Lane wrote: > >> 1. Find a way to make the processing order consistent (eg by driving it > >> off OID ordering). Doesn't seem easy, but maybe I'm missing an idea. > > > Hmm, what about > > > 1. get the complete list of tables to truncate, AccessShareLock'ed, get > > their names > > 2. release locks > > 3. sort the list lexicographically (or by Oid, whatever) > > 4. acquire the stronger locks, in list order, taking care of not > > aborting if a table is no longer there > > 5. truncate > > Releasing locks is no good ... what if someone adds/drops FK constraints > while you've not got any lock?
Recheck after acquiring the stronger locks, unlock and drop from list. > One thing I was toying with was to add an index to pg_constraint on, > say, (confrelid, conrelid), and to replace the existing seqscans for FK > constraints with scans using this index. The second-column ordering > would guarantee everybody visits the entries in the same order. Not > sure about overall performance implications ... in a small database, > several indexscans might take more time than one seqscan. I think there is more than one place that would benefit from such an index. Probably turn into a syscache as well? -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings