]> granicus.if.org Git - postgresql/blobdiff - src/include/catalog/pg_am.h
Create a "sort support" interface API for faster sorting.
[postgresql] / src / include / catalog / pg_am.h
index c2f4a49c7600889f071db6fc7bc1d06d474e379c..ddacdf274c49ac7e83b941aa983dbf96214f5812 100644 (file)
@@ -5,13 +5,13 @@
  *       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.59 2008/10/17 22:10:30 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!
@@ -40,25 +40,29 @@ CATALOG(pg_am,2601)
                                                                 * 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 */
@@ -76,49 +80,53 @@ typedef FormData_pg_am *Form_pg_am;
  *             compiler constants for pg_am
  * ----------------
  */
-#define Natts_pg_am                                            26
+#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_amcanbackward               5
-#define Anum_pg_am_amcanunique                 6
-#define Anum_pg_am_amcanmulticol               7
-#define Anum_pg_am_amoptionalkey               8
-#define Anum_pg_am_amindexnulls                        9
-#define Anum_pg_am_amsearchnulls               10
-#define Anum_pg_am_amstorage                   11
-#define Anum_pg_am_amclusterable               12
-#define Anum_pg_am_amkeytype                   13
-#define Anum_pg_am_aminsert                            14
-#define Anum_pg_am_ambeginscan                 15
-#define Anum_pg_am_amgettuple                  16
-#define Anum_pg_am_amgetbitmap                 17
-#define Anum_pg_am_amrescan                            18
-#define Anum_pg_am_amendscan                   19
-#define Anum_pg_am_ammarkpos                   20
-#define Anum_pg_am_amrestrpos                  21
-#define Anum_pg_am_ambuild                             22
-#define Anum_pg_am_ambulkdelete                        23
-#define Anum_pg_am_amvacuumcleanup             24
-#define Anum_pg_am_amcostestimate              25
-#define Anum_pg_am_amoptions                   26
+#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 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 t 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 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 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