* along with the relation's initial contents.
*
*
- * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/catalog/pg_am.h,v 1.58 2008/09/15 18:43:41 tgl Exp $
+ * src/include/catalog/pg_am.h
*
* NOTES
- * the genbki.sh script reads this file and generates .bki
+ * the genbki.pl script reads this file and generates .bki
* information from the DATA() statements.
*
* XXX do NOT break up DATA() statements into multiple lines!
* assignments. */
int2 amsupport; /* total number of support functions that this
* AM uses */
- bool amcanorder; /* does AM support ordered scan results? */
+ bool amcanorder; /* does AM support order by column value? */
+ bool amcanorderbyop; /* does AM support order by operator result? */
+ bool amcanbackward; /* does AM support backward scan? */
bool amcanunique; /* does AM support UNIQUE indexes? */
bool amcanmulticol; /* does AM support multi-column indexes? */
+ bool amcanreturn; /* can AM return IndexTuples? */
bool amoptionalkey; /* can query omit key for the first column? */
- bool amindexnulls; /* does AM support NULL index entries? */
- bool amsearchnulls; /* can AM search for NULL index entries? */
+ bool amsearcharray; /* can AM handle ScalarArrayOpExpr quals? */
+ bool amsearchnulls; /* can AM search for NULL/NOT NULL entries? */
bool amstorage; /* can storage type differ from column type? */
bool amclusterable; /* does AM support cluster command? */
+ bool ampredlocks; /* does AM handle predicate locks? */
Oid amkeytype; /* type of data in index, or InvalidOid */
regproc aminsert; /* "insert this tuple" function */
- regproc ambeginscan; /* "start new scan" function */
- regproc amgettuple; /* "next valid tuple" function */
- regproc amgetbitmap; /* "fetch all valid tuples" function */
- regproc amrescan; /* "restart this scan" function */
- regproc amendscan; /* "end this scan" function */
+ regproc ambeginscan; /* "prepare for index scan" function */
+ regproc amgettuple; /* "next valid tuple" function, or 0 */
+ regproc amgetbitmap; /* "fetch all valid tuples" function, or 0 */
+ regproc amrescan; /* "(re)start index scan" function */
+ regproc amendscan; /* "end index scan" function */
regproc ammarkpos; /* "mark current scan position" function */
regproc amrestrpos; /* "restore marked scan position" function */
regproc ambuild; /* "build new index" function */
+ regproc ambuildempty; /* "build empty index" function */
regproc ambulkdelete; /* bulk-delete function */
regproc amvacuumcleanup; /* post-VACUUM cleanup function */
regproc amcostestimate; /* estimate cost of an indexscan */
* compiler constants for pg_am
* ----------------
*/
-#define Natts_pg_am 25
+#define Natts_pg_am 30
#define Anum_pg_am_amname 1
#define Anum_pg_am_amstrategies 2
#define Anum_pg_am_amsupport 3
#define Anum_pg_am_amcanorder 4
-#define Anum_pg_am_amcanunique 5
-#define Anum_pg_am_amcanmulticol 6
-#define Anum_pg_am_amoptionalkey 7
-#define Anum_pg_am_amindexnulls 8
-#define Anum_pg_am_amsearchnulls 9
-#define Anum_pg_am_amstorage 10
-#define Anum_pg_am_amclusterable 11
-#define Anum_pg_am_amkeytype 12
-#define Anum_pg_am_aminsert 13
-#define Anum_pg_am_ambeginscan 14
-#define Anum_pg_am_amgettuple 15
-#define Anum_pg_am_amgetbitmap 16
-#define Anum_pg_am_amrescan 17
-#define Anum_pg_am_amendscan 18
-#define Anum_pg_am_ammarkpos 19
-#define Anum_pg_am_amrestrpos 20
-#define Anum_pg_am_ambuild 21
-#define Anum_pg_am_ambulkdelete 22
-#define Anum_pg_am_amvacuumcleanup 23
-#define Anum_pg_am_amcostestimate 24
-#define Anum_pg_am_amoptions 25
+#define Anum_pg_am_amcanorderbyop 5
+#define Anum_pg_am_amcanbackward 6
+#define Anum_pg_am_amcanunique 7
+#define Anum_pg_am_amcanmulticol 8
+#define Anum_pg_am_amcanreturn 9
+#define Anum_pg_am_amoptionalkey 10
+#define Anum_pg_am_amsearcharray 11
+#define Anum_pg_am_amsearchnulls 12
+#define Anum_pg_am_amstorage 13
+#define Anum_pg_am_amclusterable 14
+#define Anum_pg_am_ampredlocks 15
+#define Anum_pg_am_amkeytype 16
+#define Anum_pg_am_aminsert 17
+#define Anum_pg_am_ambeginscan 18
+#define Anum_pg_am_amgettuple 19
+#define Anum_pg_am_amgetbitmap 20
+#define Anum_pg_am_amrescan 21
+#define Anum_pg_am_amendscan 22
+#define Anum_pg_am_ammarkpos 23
+#define Anum_pg_am_amrestrpos 24
+#define Anum_pg_am_ambuild 25
+#define Anum_pg_am_ambuildempty 26
+#define Anum_pg_am_ambulkdelete 27
+#define Anum_pg_am_amvacuumcleanup 28
+#define Anum_pg_am_amcostestimate 29
+#define Anum_pg_am_amoptions 30
/* ----------------
* initial contents of pg_am
* ----------------
*/
-DATA(insert OID = 403 ( btree 5 1 t t t t t t f t 0 btinsert btbeginscan btgettuple btgetbitmap btrescan btendscan btmarkpos btrestrpos btbuild btbulkdelete btvacuumcleanup btcostestimate btoptions ));
+DATA(insert OID = 403 ( btree 5 2 t f t t t t t t t f t t 0 btinsert btbeginscan btgettuple btgetbitmap btrescan btendscan btmarkpos btrestrpos btbuild btbuildempty btbulkdelete btvacuumcleanup btcostestimate btoptions ));
DESCR("b-tree index access method");
#define BTREE_AM_OID 403
-DATA(insert OID = 405 ( hash 1 1 f f f f f f f f 23 hashinsert hashbeginscan hashgettuple hashgetbitmap hashrescan hashendscan hashmarkpos hashrestrpos hashbuild hashbulkdelete hashvacuumcleanup hashcostestimate hashoptions ));
+DATA(insert OID = 405 ( hash 1 1 f f t f f f f f f f f f 23 hashinsert hashbeginscan hashgettuple hashgetbitmap hashrescan hashendscan hashmarkpos hashrestrpos hashbuild hashbuildempty hashbulkdelete hashvacuumcleanup hashcostestimate hashoptions ));
DESCR("hash index access method");
#define HASH_AM_OID 405
-DATA(insert OID = 783 ( gist 0 7 f f t t t t t t 0 gistinsert gistbeginscan gistgettuple gistgetbitmap gistrescan gistendscan gistmarkpos gistrestrpos gistbuild gistbulkdelete gistvacuumcleanup gistcostestimate gistoptions ));
+DATA(insert OID = 783 ( gist 0 8 f t f f t f t f t t t f 0 gistinsert gistbeginscan gistgettuple gistgetbitmap gistrescan gistendscan gistmarkpos gistrestrpos gistbuild gistbuildempty gistbulkdelete gistvacuumcleanup gistcostestimate gistoptions ));
DESCR("GiST index access method");
#define GIST_AM_OID 783
-DATA(insert OID = 2742 ( gin 0 5 f f t t f f t f 0 gininsert ginbeginscan gingettuple gingetbitmap ginrescan ginendscan ginmarkpos ginrestrpos ginbuild ginbulkdelete ginvacuumcleanup gincostestimate ginoptions ));
+DATA(insert OID = 2742 ( gin 0 5 f f f f t f t f f t f f 0 gininsert ginbeginscan - gingetbitmap ginrescan ginendscan ginmarkpos ginrestrpos ginbuild ginbuildempty ginbulkdelete ginvacuumcleanup gincostestimate ginoptions ));
DESCR("GIN index access method");
#define GIN_AM_OID 2742