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? 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. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings