From 281a724d5cb8a5fea2f42e80575a768f5879b35c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 8 Jun 2008 22:41:04 +0000 Subject: Rewrite DROP's dependency traversal algorithm into an honest two-pass algorithm, replacing the original intention of a one-pass search, which had been hacked up over time to be partially two-pass in hopes of handling various corner cases better. It still wasn't quite there, especially as regards emitting unwanted NOTICE messages. More importantly, this approach lets us fix a number of open bugs concerning concurrent DROP scenarios, because we can take locks during the first pass and avoid traversing to dependent objects that were just deleted by someone else. There is more that can be done here, but I'll go ahead and commit the base patch before working on the options. --- src/include/access/genam.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/include/access') diff --git a/src/include/access/genam.h b/src/include/access/genam.h index 21374f17d3d..c59c3b9d52f 100644 --- a/src/include/access/genam.h +++ b/src/include/access/genam.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/access/genam.h,v 1.72 2008/05/12 00:00:53 alvherre Exp $ + * $PostgreSQL: pgsql/src/include/access/genam.h,v 1.73 2008/06/08 22:41:04 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -138,6 +138,7 @@ extern SysScanDesc systable_beginscan(Relation heapRelation, Snapshot snapshot, int nkeys, ScanKey key); extern HeapTuple systable_getnext(SysScanDesc sysscan); +extern bool systable_recheck_tuple(SysScanDesc sysscan, HeapTuple tup); extern void systable_endscan(SysScanDesc sysscan); extern SysScanDesc systable_beginscan_ordered(Relation heapRelation, Relation indexRelation, -- cgit v1.2.3