aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/index/indexam.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2006-02-11 23:31:34 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2006-02-11 23:31:34 +0000
commitfd267c1ebc363ae6b1bf586794fa5cc9e8cca43c (patch)
tree13c387759e392e99689d2a37a55db6a84f139bf5 /src/backend/access/index/indexam.c
parenta02f6ce33b593039213a8987ba651f121b64464c (diff)
downloadpostgresql-fd267c1ebc363ae6b1bf586794fa5cc9e8cca43c.tar.gz
postgresql-fd267c1ebc363ae6b1bf586794fa5cc9e8cca43c.zip
Skip ambulkdelete scan if there's nothing to delete and the index is not
partial. None of the existing AMs do anything useful except counting tuples when there's nothing to delete, and we can get a tuple count from the heap as long as it's not a partial index. (hash actually can skip anyway because it maintains a tuple count in the index metapage.) GIST is not currently able to exploit this optimization because, due to failure to index NULLs, GIST is always effectively partial. Possibly we should fix that sometime. Simon Riggs w/ some review by Tom Lane.
Diffstat (limited to 'src/backend/access/index/indexam.c')
-rw-r--r--src/backend/access/index/indexam.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/backend/access/index/indexam.c b/src/backend/access/index/indexam.c
index 6a681192caf..69c9ecb9189 100644
--- a/src/backend/access/index/indexam.c
+++ b/src/backend/access/index/indexam.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/access/index/indexam.c,v 1.89 2006/02/11 17:14:08 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/access/index/indexam.c,v 1.90 2006/02/11 23:31:33 tgl Exp $
*
* INTERFACE ROUTINES
* index_open - open an index relation by relation OID
@@ -685,6 +685,10 @@ index_getmulti(IndexScanDesc scan,
* callback routine tells whether a given main-heap tuple is
* to be deleted
*
+ * if callback_state is NULL then there are no tuples to be deleted;
+ * index AM can choose to avoid work in this case, but must still
+ * follow the protocol of returning statistical info.
+ *
* return value is an optional palloc'd struct of statistics
* ----------------
*/