summaryrefslogtreecommitdiff
path: root/src/backend/access/index/indexam.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2011-12-18 15:49:00 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2011-12-18 15:50:37 -0500
commit3695a555136a6d179cac8ae48d5f90171d5b30e9 (patch)
treeefb7fb5afb3dea1292c9a50635b53215cc548e64 /src/backend/access/index/indexam.c
parent19d223171801dda36f84e24dc89c9fbab1ababad (diff)
Replace simple constant pg_am.amcanreturn with an AM support function.
The need for this was debated when we put in the index-only-scan feature, but at the time we had no near-term expectation of having AMs that could support such scans for only some indexes; so we kept it simple. However, the SP-GiST AM forces the issue, so let's fix it. This patch only installs the new API; no behavior actually changes.
Diffstat (limited to 'src/backend/access/index/indexam.c')
-rw-r--r--src/backend/access/index/indexam.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/backend/access/index/indexam.c b/src/backend/access/index/indexam.c
index 6d423a7d682..e5fb5183897 100644
--- a/src/backend/access/index/indexam.c
+++ b/src/backend/access/index/indexam.c
@@ -26,6 +26,7 @@
* index_getbitmap - get all tuples from a scan
* index_bulk_delete - bulk deletion of index tuples
* index_vacuum_cleanup - post-deletion cleanup of an index
+ * index_can_return - does index support index-only scans?
* index_getprocid - get a support procedure OID
* index_getprocinfo - get a support procedure's lookup info
*
@@ -712,6 +713,27 @@ index_vacuum_cleanup(IndexVacuumInfo *info,
}
/* ----------------
+ * index_can_return - does index support index-only scans?
+ * ----------------
+ */
+bool
+index_can_return(Relation indexRelation)
+{
+ FmgrInfo *procedure;
+
+ RELATION_CHECKS;
+
+ /* amcanreturn is optional; assume FALSE if not provided by AM */
+ if (!RegProcedureIsValid(indexRelation->rd_am->amcanreturn))
+ return false;
+
+ GET_REL_PROCEDURE(amcanreturn);
+
+ return DatumGetBool(FunctionCall1(procedure,
+ PointerGetDatum(indexRelation)));
+}
+
+/* ----------------
* index_getprocid
*
* Index access methods typically require support routines that are