<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >pg_am</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REV="MADE" HREF="mailto:pgsql-docs@postgresql.org"><LINK REL="HOME" TITLE="PostgreSQL 8.0.11 Documentation" HREF="index.html"><LINK REL="UP" TITLE="System Catalogs" HREF="catalogs.html"><LINK REL="PREVIOUS" TITLE="pg_aggregate" HREF="catalog-pg-aggregate.html"><LINK REL="NEXT" TITLE="pg_amop" HREF="catalog-pg-amop.html"><LINK REL="STYLESHEET" TYPE="text/css" HREF="stylesheet.css"><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"><META NAME="creation" CONTENT="2007-02-02T03:57:22"></HEAD ><BODY CLASS="SECT1" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="5" ALIGN="center" VALIGN="bottom" >PostgreSQL 8.0.11 Documentation</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="catalog-pg-aggregate.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="catalogs.html" >Fast Backward</A ></TD ><TD WIDTH="60%" ALIGN="center" VALIGN="bottom" >Chapter 41. System Catalogs</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="top" ><A HREF="catalogs.html" >Fast Forward</A ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="top" ><A HREF="catalog-pg-amop.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="CATALOG-PG-AM" >41.3. <TT CLASS="STRUCTNAME" >pg_am</TT ></A ></H1 ><A NAME="AEN52072" ></A ><P > The catalog <TT CLASS="STRUCTNAME" >pg_am</TT > stores information about index access methods. There is one row for each index access method supported by the system. </P ><DIV CLASS="TABLE" ><A NAME="AEN52076" ></A ><P ><B >Table 41-3. <TT CLASS="STRUCTNAME" >pg_am</TT > Columns</B ></P ><TABLE BORDER="1" CLASS="CALSTABLE" ><COL><COL><COL><COL><THEAD ><TR ><TH >Name</TH ><TH >Type</TH ><TH >References</TH ><TH >Description</TH ></TR ></THEAD ><TBODY ><TR ><TD ><TT CLASS="STRUCTFIELD" >amname</TT ></TD ><TD ><TT CLASS="TYPE" >name</TT ></TD ><TD > </TD ><TD >Name of the access method</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >amowner</TT ></TD ><TD ><TT CLASS="TYPE" >int4</TT ></TD ><TD ><TT CLASS="LITERAL" ><A HREF="catalog-pg-shadow.html" ><TT CLASS="STRUCTNAME" >pg_shadow</TT ></A >.usesysid</TT ></TD ><TD >User ID of the owner (currently not used)</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >amstrategies</TT ></TD ><TD ><TT CLASS="TYPE" >int2</TT ></TD ><TD > </TD ><TD >Number of operator strategies for this access method</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >amsupport</TT ></TD ><TD ><TT CLASS="TYPE" >int2</TT ></TD ><TD > </TD ><TD >Number of support routines for this access method</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >amorderstrategy</TT ></TD ><TD ><TT CLASS="TYPE" >int2</TT ></TD ><TD > </TD ><TD >Zero if the index offers no sort order, otherwise the strategy number of the strategy operator that describes the sort order</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >amcanunique</TT ></TD ><TD ><TT CLASS="TYPE" >bool</TT ></TD ><TD > </TD ><TD >Does the access method support unique indexes?</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >amcanmulticol</TT ></TD ><TD ><TT CLASS="TYPE" >bool</TT ></TD ><TD > </TD ><TD >Does the access method support multicolumn indexes?</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >amindexnulls</TT ></TD ><TD ><TT CLASS="TYPE" >bool</TT ></TD ><TD > </TD ><TD >Does the access method support null index entries?</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >amconcurrent</TT ></TD ><TD ><TT CLASS="TYPE" >bool</TT ></TD ><TD > </TD ><TD >Does the access method support concurrent updates?</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >amgettuple</TT ></TD ><TD ><TT CLASS="TYPE" >regproc</TT ></TD ><TD ><TT CLASS="LITERAL" ><A HREF="catalog-pg-proc.html" ><TT CLASS="STRUCTNAME" >pg_proc</TT ></A >.oid</TT ></TD ><TD ><SPAN CLASS="QUOTE" >"Next valid tuple"</SPAN > function</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >aminsert</TT ></TD ><TD ><TT CLASS="TYPE" >regproc</TT ></TD ><TD ><TT CLASS="LITERAL" ><A HREF="catalog-pg-proc.html" ><TT CLASS="STRUCTNAME" >pg_proc</TT ></A >.oid</TT ></TD ><TD ><SPAN CLASS="QUOTE" >"Insert this tuple"</SPAN > function</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >ambeginscan</TT ></TD ><TD ><TT CLASS="TYPE" >regproc</TT ></TD ><TD ><TT CLASS="LITERAL" ><A HREF="catalog-pg-proc.html" ><TT CLASS="STRUCTNAME" >pg_proc</TT ></A >.oid</TT ></TD ><TD ><SPAN CLASS="QUOTE" >"Start new scan"</SPAN > function</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >amrescan</TT ></TD ><TD ><TT CLASS="TYPE" >regproc</TT ></TD ><TD ><TT CLASS="LITERAL" ><A HREF="catalog-pg-proc.html" ><TT CLASS="STRUCTNAME" >pg_proc</TT ></A >.oid</TT ></TD ><TD ><SPAN CLASS="QUOTE" >"Restart this scan"</SPAN > function</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >amendscan</TT ></TD ><TD ><TT CLASS="TYPE" >regproc</TT ></TD ><TD ><TT CLASS="LITERAL" ><A HREF="catalog-pg-proc.html" ><TT CLASS="STRUCTNAME" >pg_proc</TT ></A >.oid</TT ></TD ><TD ><SPAN CLASS="QUOTE" >"End this scan"</SPAN > function</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >ammarkpos</TT ></TD ><TD ><TT CLASS="TYPE" >regproc</TT ></TD ><TD ><TT CLASS="LITERAL" ><A HREF="catalog-pg-proc.html" ><TT CLASS="STRUCTNAME" >pg_proc</TT ></A >.oid</TT ></TD ><TD ><SPAN CLASS="QUOTE" >"Mark current scan position"</SPAN > function</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >amrestrpos</TT ></TD ><TD ><TT CLASS="TYPE" >regproc</TT ></TD ><TD ><TT CLASS="LITERAL" ><A HREF="catalog-pg-proc.html" ><TT CLASS="STRUCTNAME" >pg_proc</TT ></A >.oid</TT ></TD ><TD ><SPAN CLASS="QUOTE" >"Restore marked scan position"</SPAN > function</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >ambuild</TT ></TD ><TD ><TT CLASS="TYPE" >regproc</TT ></TD ><TD ><TT CLASS="LITERAL" ><A HREF="catalog-pg-proc.html" ><TT CLASS="STRUCTNAME" >pg_proc</TT ></A >.oid</TT ></TD ><TD ><SPAN CLASS="QUOTE" >"Build new index"</SPAN > function</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >ambulkdelete</TT ></TD ><TD ><TT CLASS="TYPE" >regproc</TT ></TD ><TD ><TT CLASS="LITERAL" ><A HREF="catalog-pg-proc.html" ><TT CLASS="STRUCTNAME" >pg_proc</TT ></A >.oid</TT ></TD ><TD >Bulk-delete function</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >amvacuumcleanup</TT ></TD ><TD ><TT CLASS="TYPE" >regproc</TT ></TD ><TD ><TT CLASS="LITERAL" ><A HREF="catalog-pg-proc.html" ><TT CLASS="STRUCTNAME" >pg_proc</TT ></A >.oid</TT ></TD ><TD >Post-<TT CLASS="COMMAND" >VACUUM</TT > cleanup function</TD ></TR ><TR ><TD ><TT CLASS="STRUCTFIELD" >amcostestimate</TT ></TD ><TD ><TT CLASS="TYPE" >regproc</TT ></TD ><TD ><TT CLASS="LITERAL" ><A HREF="catalog-pg-proc.html" ><TT CLASS="STRUCTNAME" >pg_proc</TT ></A >.oid</TT ></TD ><TD >Function to estimate cost of an index scan</TD ></TR ></TBODY ></TABLE ></DIV ><P > An index access method that supports multiple columns (has <TT CLASS="STRUCTFIELD" >amcanmulticol</TT > true) <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >must</I ></SPAN > support indexing null values in columns after the first, because the planner will assume the index can be used for queries on just the first column(s). For example, consider an index on (a,b) and a query with <TT CLASS="LITERAL" >WHERE a = 4</TT >. The system will assume the index can be used to scan for rows with <TT CLASS="LITERAL" >a = 4</TT >, which is wrong if the index omits rows where <TT CLASS="LITERAL" >b</TT > is null. It is, however, OK to omit rows where the first indexed column is null. (GiST currently does so.) <TT CLASS="STRUCTFIELD" >amindexnulls</TT > should be set true only if the index access method indexes all rows, including arbitrary combinations of null values. </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="catalog-pg-aggregate.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="catalog-pg-amop.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><TT CLASS="STRUCTNAME" >pg_aggregate</TT ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="catalogs.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><TT CLASS="STRUCTNAME" >pg_amop</TT ></TD ></TR ></TABLE ></DIV ></BODY ></HTML >