On 2014-09-28 17:32:21 +1300, David Rowley wrote: > My understanding of foreign keys is that any pending foreign key triggers > will be executed just before the query completes, so we should only ever > encounter pending foreign key triggers during planning when we're planning > a query that's being executed from somewhere like a volatile function or > trigger function, if the outer query has updated or deleted some records > which are referenced by a foreign key.
Note that foreign key checks also can be deferred. So the window for these cases is actually larger.
Thanks Andres, I know you had said this before but I had previously failed to realise exactly what you meant. I thought you were talking about defining a foreign key to reference a column that has a deferrable unique index. I now realise you were talking about making the foreign key itself as deferrable. I've made a change to the patch locally to ignore foreign keys that are marked as deferrable.