Rewrite system catalog documentation man page in DocBook with more recent
authorPeter Eisentraut
Wed, 29 Nov 2000 20:15:59 +0000 (20:15 +0000)
committerPeter Eisentraut
Wed, 29 Nov 2000 20:15:59 +0000 (20:15 +0000)
information.

doc/src/sgml/catalogs.sgml
doc/src/sgml/developer.sgml
doc/src/sgml/extend.sgml
doc/src/sgml/sql.sgml

index 1613774f26be2981842625b7b2f36f30479f308a..a185d185495afdca9be8a80e388093f999df8112 100644 (file)
-.\" This is -*-nroff-*-
-.\" XXX standard disclaimer belongs here....
-.\" $Header: /cvsroot/pgsql/doc/src/sgml/catalogs.sgml,v 2.7 2000/07/17 03:04:40 tgl Exp $
-.TH "SYSTEM CATALOGS" INTRO 03/13/94 PostgreSQL PostgreSQL
-.SH "Section 7 - System Catalogs"
-.de LS
-.PP
-.if n .ta 5 +13 +13
-.if t .ta 0.5i +1.3i +1.3i
-.in 0
-.nf
-..
-.de LE
-.fi
-.in
-..
-.SH "DESCRIPTION"
-In this
-section we list each of the attributes of the system catalogs and
-define their meanings.
-.SH "CLASS/TYPE SYSTEM CATALOGS"
-These catalogs form the core of the extensibility system:
-.LS
-   \fBname\fP  \fBshared/local\fP  \fBdescription\fP
-   pg_aggregate    local   aggregate functions
-   pg_am   local   access methods
-   pg_amop local   operators usable with specific access methods
-   pg_amproc   local   procedures used with specific access methods
-   pg_attribute    local   class attributes
-   pg_class    local   classes
-   pg_index    local   indices
-   pg_inherits local   class inheritance hierarchy
-   pg_language local   procedure implementation languages
-   pg_opclass  local   operator classes
-   pg_operator local   query language operators
-   pg_proc local   procedures (functions)
-   pg_type local   data types
-.LE
-.SH "ENTITIES"
-These catalogs deal with identification of entities known throughout
-the site:
-.LS
-   \fBname\fP  \fBshared/local\fP  \fBdescription\fP
-   pg_database shared  current databases
-   pg_group    shared  user groups
-   pg_shadow   shared  valid users
-.LE
-.SH "RULE SYSTEM CATALOGS"
-.LS
-   \fBname\fP  \fBshared/local\fP  \fBdescription\fP
-   pg_listener local   processes waiting on alerters
-   pg_prs2plans    local   instance system procedures
-   pg_prs2rule local   instance system rules
-   pg_prs2stub local   instance system ``stubs''
-   pg_rewrite  local   rewrite system information
-.LE
-.SH "LARGE OBJECT CATALOGS"
-.PP
-These catalogs are specific to the Inversion file system and large
-objects in general:
-.LS
-   \fBname\fP  \fBshared/local\fP  \fBdescription\fP
-   pg_lobj local   description of a large object
-   pg_naming   local   Inversion name space mapping
-   pg_platter  local   jukebox platter inventory
-   pg_plmap    local   jukebox platter extent map
-.LE
-.SH "INTERNAL CATALOGS"
-.PP
-These catalogs are internal classes that are not stored as normal
-heaps and cannot be accessed through normal means (attempting to do so
-causes an error).
-.LS
-   \fBname\fP  \fBshared/local\fP  \fBdescription\fP
-   pg_log  shared  transaction commit/rollback log
-   pg_magic    shared  magic constant
-   pg_time shared  commit/rollback times
-   pg_variable shared  special variable values
-.LE
-.PP
-There are several other classes defined with \*(lqpg_\*(rq names.
-Aside from those that end in \*(lqind\*(rq (secondary indices), these
-are all obsolete or otherwise deprecated.
-.SH "CLASS/TYPE SYSTEM CATALOGS"
-.PP
-The following catalogs relate to the class/type system.
-.nf M
-/*
- * aggregates
- *
- * see DEFINE AGGREGATE for an explanation of transition functions
- */
-pg_aggregate
-    NameData    aggname        /* aggregate name (e.g., "count") */
-    oid         aggowner   /* usesysid of creator */
-    regproc     aggtransfn /* transition function */
-    regproc     aggfinalfn /* final function */
-    oid         aggbasetype    /* type of data on which aggregate
-                  operates */
-    oid         aggtranstype   /* type of aggregate's transition
-                  (state) data */
-    oid         aggfinaltype   /* type of aggregate's final result */
-    text        agginitval /* external format of initial state value */
-.fi
-.nf M
-pg_am
-    NameData    amname          /* access method name */
-    oid         amowner         /* usesysid of creator */
-    int2        amstrategies    /* total NUMBER of strategies by which
-                                   we can traverse/search this AM */
-    int2        amsupport       /* total NUMBER of support functions
-                                   that this AM uses */
-    int2        amorderstrategy /* if this AM has a sort order, the
-                                 * strategy number of the sort operator.
-                                 * Zero if AM is not ordered.
-                                 */
-    regproc     amgettuple      /* "next valid tuple" function */
-    regproc     aminsert        /* "insert this tuple" function */
-    regproc     amdelete        /* "delete this tuple" function */
-    regproc     amgetattr       /* - deprecated */
-    regproc     amsetlock       /* - deprecated */
-    regproc     amsettid        /* - deprecated */
-    regproc     amfreetuple     /* - deprecated */
-    regproc     ambeginscan     /* "start new scan" function */
-    regproc     amrescan        /* "restart this scan" function */
-    regproc     amendscan       /* "end this scan" function */
-    regproc     ammarkpos       /* "mark current scan position"
-                                   function */
-    regproc     amrestrpos      /* "restore marked scan position"
-                                   function */
-    regproc     amopen          /* - deprecated */
-    regproc     amclose         /* - deprecated */
-    regproc     ambuild         /* "build new index" function */
-    regproc     amcreate        /* - deprecated */
-    regproc     amdestroy       /* - deprecated */
-    regproc     amcostestimate  /* estimate cost of an indexscan */
-
-.fi
-.nf M
-pg_amop
-    oid         amopid     /* access method with which this 
-                  operator be used */
-    oid         amopclaid  /* operator class with which this
-                  operator can be used */
-    oid         amopopr    /* the operator */
-    int2        amopstrategy   /* traversal/search strategy number
-                  to which this operator applies */
-.fi
-.nf M
-pg_amproc
-    oid         amid       /* access method with which this
-                  procedure is associated */
-    oid         amopclaid  /* operator class with which this
-                  operator can be used */
-    oid         amproc     /* the procedure */
-    int2        amprocnum  /* support function number to which
-                  this operator applies */
-.fi
-.nf M
-pg_class
-     NameData     relname  /* class name */
-     oid        relowner   /* usesysid of owner */
-     oid        relam  /* access method */
-     int4       relpages   /* # of 8KB pages */
-     int4       reltuples  /* # of instances */
-     abstime    relexpires /* time after which instances are
-                  deleted from non-archival storage */
-     reltime    relpreserved   /* timespan after which instances are
-                  deleted from non-archival storage */
-     bool       relhasindex    /* does the class have a secondary
-                  index? */
-     bool       relisshared    /* is the class shared or local? */
-     char       relkind        /* type of relation:
-                  i=index
-                  r=relation (heap)
-                  s=special
-                  u=uncatalogued (temporary) */
-     char       relarch    /* archive mode:
-              h=heavy
-              l=light
-              n=none */
-     int2       relnatts   /* current # of non-system
-                  attributes */
-     int2       relsmgr    /* storage manager:
-              0=magnetic disk
-              1=sony WORM jukebox
-              2=main memory */
-     int2vector relkey     /* - unused */
-     oidvector  relkeyop   /* - unused */
-     bool       relhassubclass /* does the class have a subclass?
-                   */
-     aclitem    relacl[1]  /* access control lists */
-.fi
-.nf M
-pg_attribute
-    oid         attrelid   /* class containing this attribute */
-    NameData      attname  /* attribute name */
-    oid         atttypid   /* attribute type */
-    oid         attdefrel  /* - deprecated */
-    int4        attnvals   /* - deprecated */
-    oid         atttyparg  /* - deprecated */
-    int2        attlen /* attribute length, in bytes
-              -1=variable */
-    int2        attnum /* attribute number
-              >0=user attribute
-              <0=system attribute */
-    int2        attbound   /* - deprecated */
-    bool        attbyval   /* type passed by value? */
-    bool        attcanindex    /* - deprecated */
-    oid         attproc    /* - deprecated */
-    int4        attnelems  /* # of array dimensions */
-    int4        attcacheoff    /* cached offset into tuple */
-    bool        attisset   /* is attribute set-valued? */
-.fi
-.nf M
-pg_inherits
-    oid         inhrel /* child class */
-    oid         inhparent  /* parent class */
-    int4        inhseqno   /* - deprecated */
-.fi
-.nf M
-    oid         indexrelid /* oid of secondary index class */
-    oid         indrelid   /* oid of indexed heap class */
-    oid         indproc    /* function to compute index key from
-                  attribute(s) in heap
-                  0=not a functional index */
-    int2vector  indkey /* attribute numbers of key 
-              attribute(s) */
-    oidvector   indclass   /* opclass of each key */
-    bool        indisclustered /* is the index clustered?
-                  - unused */
-    bool        indisarchived  /* is the index archival?
-                  - unused */
-    text        indpred    /* query plan for partial index 
-              predicate */
-.fi
-.nf M
-pg_type
-    NameData      typname  /* type name */
-    oid         typowner   /* usesysid of owner */
-    int2        typlen /* length in internal form
-              -1=variable-length */
-    int2        typprtlen  /* length in external form */
-    bool        typbyval   /* type passed by value? */
-    char        typtype    /* kind of type:
-              c=catalog (composite)
-              b=base */
-    bool        typisdefined   /* defined or still a shell? */
-    char        typdelim   /* delimiter for array external form */
-    oid         typrelid   /* class (if composite) */
-    oid         typelem    /* type of each array element */
-    regproc     typinput   /* external-internal conversion
-                  function */ 
-    regproc     typoutput  /* internal-external conversion
-                  function */
-    regproc     typreceive /* client-server conversion function */
-    regproc     typsend    /* server-client conversion function */
-    text        typdefault /* default value */
-.fi
-.nf M
-pg_operator
-    NameData      oprname  /* operator name */
-    oid         oprowner   /* usesysid of owner */
-    int2        oprprec    /* - deprecated */
-    char        oprkind    /* kind of operator:
-              b=binary
-              l=left unary
-              r=right unary */
-    bool        oprisleft  /* is operator left/right associative? */
-    bool        oprcanhash /* is operator usable for hashjoin? */
-    oid         oprleft    /* left operand type */
-    oid         oprright   /* right operand type */
-    oid         oprresult  /* result type */
-    oid         oprcom /* commutator operator */
-    oid         oprnegate  /* negator operator */
-    oid         oprlsortop /* sort operator for left operand */
-    oid         oprrsortop /* sort operator for right operand */
-    regproc     oprcode    /* function implementing this operator */
-    regproc     oprrest    /* function to calculate operator
-              restriction selectivity */
-    regproc     oprjoin    /* function to calculate operator 
-              join selectivity */
-.fi
-.nf M
-pg_opclass
-    NameData      opcname  /* operator class name */
-.fi
-.nf M
-pg_proc
-    NameData      proname  /* function name */
-    oid         proowner   /* usesysid of owner */
-    oid         prolang    /* function implementation language */
-    bool        proisinh   /* - deprecated */
-    bool        proistrusted   /* run in server or untrusted function
-                  process? */
-    bool        proiscachable  /* can the function return values be
-                  cached? */
-    int2        pronargs   /* # of arguments */
-    bool        proretset  /* does the function return a set?
-                  - unused */
-    oid         prorettype /* return type */
-    oidvector   proargtypes    /* argument types */
-    int4        probyte_pct    /* % of argument size (in bytes) that
-                  needs to be examined in order to
-                  compute the function */ 
-    int4        properbyte_cpu /* sensitivity of the function's
-                  running time to the size of its
-                  inputs */
-    int4        propercall_cpu /* overhead of the function's
-                  invocation (regardless of input
-                  size) */
-    int4        prooutin_ratio /* size of the function's output as a
-                  percentage of the size of the input */
-    text        prosrc /* function definition:
-              INTERNAL function: actual C name of function
-              C function: currently, this field is unused
-              SQL function: text of query(s)
-              PL function: text in procedural language */
-    bytea       probin /* path to object file (C functions only) */
-.fi
-.nf M
-pg_language
-    NameData      lanname  /* language name */
-    text        lancompiler    /* - deprecated */
-.fi
-.SH "ENTITIES"
-.nf M
-pg_database
-    NameData      datname      /* database name */
-    oid         datdba     /* usesysid of database administrator */
-    text        datpath        /* directory of database under
-                  $PGDATA */ 
-.fi
-.nf M
-pg_group
-    NameData      groname  /* group name */
-    int2        grosysid   /* group's UNIX group id */
-    int2        grolist[1] /* list of usesysids of group members */
-.fi
-.nf M
-pg_shadow
-    NameData      usename      /* user's name */
-    int2        usesysid   /* user's UNIX user id */
-    bool        usecreatedb    /* can user create databases? */
-    bool        usetrace   /* can user set trace flags? */
-    bool        usesuper   /* can user be POSTGRES superuser? */
-    bool        usecatupd  /* can user update catalogs? */
-.fi
-.SH "RULE SYSTEM CATALOGS"
-.nf M
-pg_listener
-    NameData      relname  /* class for which asynchronous 
-              notification is desired */
-    int4        listenerpid    /* process id of server corresponding
-                  to a frontend program waiting for
-                  asynchronous notification */
-    int4        notification   /* whether an event notification for
-                  this process id still pending */
-
-.fi
-.nf M
-pg_prs2rule
-    NameData      prs2name /* rule name */
-    char        prs2eventtype  /* rule event type:
-                  R=retrieve
-                  U=update (replace)
-                  A=append
-                  D=delete */
-    oid         prs2eventrel   /* class to which event applies */
-    int2        prs2eventattr  /* attribute to which event applies */
-    float8      necessary  /* - deprecated */
-    float8      sufficient /* - deprecated */
-    text        prs2text   /* text of original rule definition */
-.fi
-.nf M
-pg_prs2plans
-    oid         prs2ruleid /* prs2rule instance for which this
-                  plan is used */
-    int2        prs2planno /* plan number (one rule may invoke
-                  multiple plans) */
-    text        prs2code   /* external representation of the plan */
-.fi
-.nf M
-pg_prs2stub
-    oid         prs2relid  /* class to which this rule applies */
-    bool        prs2islast /* is this the last stub fragment? */
-    int4        prs2no     /* stub fragment number */
-    stub        prs2stub   /* stub fragment */
-.fi
-.nf M
-pg_rewrite
-    NameData      rulename /* rule name */
-    char        ev_type    /* event type:
-              RETRIEVE, REPLACE, APPEND, DELETE
-              codes are parser-dependent (!?) */
-    oid         ev_class   /* class to which this rule applies */
-    int2        ev_attr    /* attribute to which this rule applies */
-    bool        is_instead /* is this an "instead" rule? */
-    text        ev_qual    /* qualification with which to modify
-              (rewrite) the plan that triggered this
-              rule */
-    text        action /* parse tree of action */
-.fi
-.SH "LARGE OBJECT CATALOGS"
-.nf M
-pg_lobj
-    oid         ourid      /* 'ourid' from pg_naming that
-                  identifies this object in the
-                  Inversion file system namespace */
-    int4        objtype        /* storage type code:
-                  0=Inversion
-                  1=Unix
-                  2=External
-                  3=Jaquith */
-    bytea       object_descripto/* opaque object-handle structure */
-.fi
-.nf M
-pg_naming
-    NameData      filename /* filename component */
-    oid         ourid      /* random oid used to identify this
-                  instance in other instances (can't
-                  use the actual oid for obscure
-                  reasons */
-    oid         parentid   /* pg_naming instance of parent
-                  Inversion file system directory */
-.fi
-.nf M
-pg_platter
-     NameData     plname       /* platter name */
-     int4       plstart        /* the highest OCCUPIED extent */
-.fi
-.nf M
-pg_plmap
-     oid        plid       /* platter (in pg_platter) on which
-                  this extent (of blocks) resides */
-     oid        pldbid     /* database of the class to which this
-                  extent (of blocks) belongs */
-     oid        plrelid        /* class to which this extend (of
-                  blocks) belongs */
-     int4       plblkno        /* starting block number within the
-                  class */ 
-     int4       ploffset   /* offset within the platter at which
-                  this extent begins */
-     int4       plextentsz /* length of this extent */
-.fi
+
+
+
System Catalogs
+
+  Overview
+
+  
+   The system catalogs are the place where a relational database
+   management system stores schema metadata, such as information about
+   tables and columns, and internal bookkeeping information.
+   PostgreSQL's system catalogs are regular
+   tables.  You can drop and recreate the tables, add columns, insert
+   and update values, and severely mess up your system that way.
+   Normally one never has to change the system catalogs by hand, there
+   are always SQL commands to do that.  (For example, CREATE
+   DATABASE inserts a row into the
+   pg_database catalog -- and actually
+   creates the database on disk.)  There are some exceptions for
+   esoteric operations, such as adding index access methods.
+  
+
+  
+   System Catalogs
+
+   
+    
+     
+      Catalog Name
+      Purpose
+     
+    
+
+    
+     
+      pg_aggregate
+      aggregate functions
+     
+
+     
+      pg_am
+      index access methods
+     
+
+     
+      pg_amop
+      access method operators
+     
+
+     
+      pg_amproc
+      access method support procedures
+     
+
+     
+      pg_attrdef
+      column default values
+     
+
+     
+      pg_attribute
+      table columns (attributes, fields)
+     
+
+     
+      pg_class
+      tables, indexes, sequences (relations)
+     
+
+     
+      pg_database
+      databases
+     
+
+     
+      pg_description
+      descriptions or comments on database objects
+     
+
+     
+      pg_group
+      user groups
+     
+
+     
+      pg_index
+      additional index information
+     
+
+     
+      pg_inheritproc
+      (not used)
+     
+
+     
+      pg_inherits
+      table inheritance hierarchy
+     
+
+     
+      pg_ipl
+      (not used)
+     
+
+     
+      pg_language
+      languages for writing functions
+     
+
+     
+      pg_largeobject
+      large objects
+     
+
+     
+      pg_listener
+      asynchronous notification
+     
+
+     
+      pg_opclass
+      index access method operator classes
+     
+
+     
+      pg_operator
+      operators
+     
+
+     
+      pg_proc
+      functions and procedures
+     
+
+     
+      pg_relcheck
+      check constraints
+     
+
+     
+      pg_rewrite
+      query rewriter rules
+     
+
+     
+      pg_shadow
+      database users
+     
+
+     
+      pg_statistic
+      optimizer statistics
+     
+
+     
+      pg_trigger
+      triggers
+     
+
+     
+      pg_type
+      data types
+     
+    
+   
+  
+
+  
+   More detailed documentation of most catalogs follow below.  The
+   catalogs that relate to index access methods are explained in the
+   Programmer's Guide.  Some catalogs don't
+   have any documentation, yet.
+  
+
+
+
+  pg_aggregate
+
+  
+   pg_aggregate stores information about
+   aggregate functions.  An aggregate function is a function that
+   operates on a set of values (typically one column from each the row
+   that matches a query condition) and returns a single value computed
+   from all these values.  Typical aggregate functions are
+   sumcount, and
+   max.
+  
+
+  
+   pg_aggregate Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+    
+     
+      aggname
+      name
+      
+      Name of the aggregate function
+     
+     
+      aggowner
+      int4
+      pg_shadow.usesysid
+      Owner (creator) of the aggregate function
+     
+     
+      aggtransfn
+      regproc (function)
+      
+      Transition function
+     
+     
+      aggfinalfn
+      regproc (function)
+      
+      Final function
+     
+     
+      aggbasetype
+      oid
+      pg_type.oid
+      The type on which this function operates when invoked from SQL
+     
+     
+      aggtranstype
+      oid
+      pg_type.oid
+      The type of the aggregate function's internal transition (state) data
+     
+     
+      aggfinaltype
+      oid
+      pg_type.oid
+      The type of the result
+     
+     
+      agginitval
+      text
+      
+      
+       The initial value of the transition state.  This is a text
+       field which will be cast to the type of aggtranstype.
+      
+     
+    
+   
+  
+
+  
+   New aggregate functions are registered with the CREATE
+   AGGREGATE command.  See the Programmer's
+   Guide for more information about writing aggregate
+   functions and the meaning of the transition functions, etc.
+  
+
+  
+   An aggregate function is identified through name
+   and argument type.  Hence aggname and aggname
+   are the composite primary key.
+  
+
+
+
+  pg_attrdef
+
+  
+   This catalog stores column default values.  The main information
+   about columns is stored in pg_attribute
+   (see below).  Only columns that explicitly specify a default value
+   (when the table is created or the column is added) will have an
+   entry here.
+  
+
+  
+   pg_attrdef Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+
+    
+     
+      adrelid
+      oid
+      pg_class.oid
+      The table this column belongs to
+     
+
+     
+      adnum
+      int2
+      
+      
+       The number of the column; see
+       pg_attribute.pg_attnum
+      
+     
+
+     
+      adbin
+      text
+      
+      An internal representation of the column default value
+     
+
+     
+      adsrc
+      text
+      
+      A human-readable representation of the default value
+     
+    
+   
+  
+
+
+
+  pg_attribute
+
+  
+   pg_attribute stores information about
+   table columns.  There will be exactly one
+   pg_attribute row for every column in every
+   table in the database.  (There will also be attribute entries for
+   indexes and other objects.  See pg_class.)
+  
+
+  
+   The term attribute is equivalent to column and is used for
+   historical reasons.
+  
+
+  
+   pg_attribute Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+
+    
+     
+      attrelid
+      oid
+      pg_class.oid
+      The table this column belongs to
+     
+
+     
+      attname
+      name
+      
+      Column name
+     
+
+     
+      atttypid
+      oid
+      pg_type.oid
+      The data type of this column
+     
+
+     
+      attdispersion
+      float4
+      
+      
+       attdispersion is the dispersion
+       statistic of the column (0.0 to 1.0), or zero if the statistic
+       has not been calculated, or -1.0 if VACUUM
+       found that the column contains no duplicate entries (in which
+       case the dispersion should be taken as
+       1.0/numberOfRows for the current table size).
+       The -1.0 hack is useful because the number of rows may be
+       updated more often than
+       attdispersion is. We assume that the
+       column will retain its no-duplicate-entry property.
+      
+     
+
+     
+      attlen
+      int2
+      
+      
+       This is a copy of the
+       pg_type.typlen
+       for this column's type.
+      
+     
+
+     
+      attnum
+      int2
+      
+      
+       The number of the column.  Ordinary columns are numbered from 1
+       up.  System columns, such as oid,
+       have (arbitrary) negative numbers.
+      
+     
+
+     
+      attnelems
+      int4
+      
+      Number of dimensions, if the column is an array
+     
+
+     
+      attcacheoff
+      int4
+      
+      
+       Always -1 in storage, but when loaded into a tuple descriptor
+       in memory this may be updated cache the offset of the attribute
+       within the tuple.
+      
+     
+
+     
+      atttypmod
+      int4
+      
+      
+       atttypmod records type-specific data
+       supplied at table creation time (for example, the maximum
+       length of a varchar column).  It is passed to
+       type-specific input and output functions as the third
+       argument. The value will generally be -1 for types that do not
+       need typmod.
+      
+     
+
+     
+      attbyval
+      bool
+      
+      
+       A copy of
+       pg_type.typbyval
+       of this column's type
+      
+     
+
+     
+      attstorage
+      char
+      
+      
+       A copy of
+       pg_type.typstorage
+       of this column's type
+      
+     
+
+     
+      attisset
+      bool
+      
+      
+       If true, this attribute is a set.  In that case, what is really
+       stored in the attribute is the OID of a tuple in the
+       pg_proc catalog.  The
+       pg_proc tuple contains the query
+       string which defines this set - i.e., the query to run to get
+       the set.  So the atttypid (see
+       above) refers to the type returned by this query, but the
+       actual length of this attribute is the length (size) of an
+       oid.  --- At least this is the theory.  All this
+       is probably quite broken these days.
+      
+     
+
+     
+      attalign
+      char
+      
+      
+       A copy of
+       pg_type.typalign
+       of this column's type
+      
+     
+
+     
+      attnotnull
+      bool
+      
+      
+       This represents a NOT NULL constraint.  It is possible to
+       change this field to enable or disable the constraint.
+      
+     
+
+     
+      atthasdef
+      bool
+      
+      
+       This column has a default value, in which case there will be a
+       corresponding entry in the pg_attrdef
+       catalog that actually defines the value.
+      
+     
+
+    
+   
+  
+
+
+  pg_class
+
+  
+   pg_class catalogues tables and mostly
+   everything else that has columns or is otherwise similar to a
+   table.  This includes indexes (but see
+   pg_index), sequences, views, and some
+   kinds of special relation kinds.  Below, when we mean all of these
+   kinds of objects we speak of relations.  Not all
+   fields are meaningful for all relation types.
+  
+
+  
+   pg_class Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+
+    
+     
+      relname
+      name
+      
+      Name of the table, index, view, etc.
+     
+
+     
+      reltype
+      oid
+      pg_type.oid
+      
+       The data type that corresponds to this table (not functional,
+       only set for system tables)
+      
+     
+
+     
+      relowner
+      int4
+      pg_shadow.usesysid
+      Owner of the relation
+     
+
+     
+      relam
+      oid
+      pg_am.oid
+      If this is an index, the access method used (btree, hash, etc.)
+     
+
+     
+      relfilenode
+      oid
+      
+      Name of the on-disk file of this relation
+     
+
+     
+      relpages
+      int4
+      
+      
+       Size of the on-disk representation of this table in pages (size
+       BLCKSZ).  This is only an approximate value
+       which is calculated during vacuum.
+      
+     
+
+     
+      reltuples
+      int4
+      
+      
+       Number of tuples in the table.  This is only an estimate used
+       by the planner, updated by VACUUM.
+      
+     
+
+     
+      reltoastrelid
+      oid
+      pg_class.oid
+      
+       Oid of the TOAST table associated with this table, 0 if none.
+       The TOAST table stores large attributes out of
+       line in a secondary table.
+      
+     
+
+     
+      reltoastidxid
+      oid
+      pg_class.oid
+      Oid of the index on the TOAST table for this table, 0 if none
+     
+
+     
+      relhasindex
+      bool
+      
+      True if this is a table and it has at least one index
+     
+
+     
+      relisshared
+      bool
+      
+      XXX (This is not what it seems to be.)
+     
+
+     
+      relkind
+      char
+      
+      
+       'r' = ordinary table, 'i' = index, 'S' = sequence, 'v' = view,
+       's' = special, 't' = secondary TOAST table
+      
+     
+
+     
+      relnatts
+      int2
+      
+      
+       Number of columns in the relation, besides system columns.
+       There must be this many corresponding entries in
+       pg_attribute.  See also
+       pg_attribute.attnum.
+      
+     
+
+     
+      relchecks
+      int2
+      
+      
+       Number of check constraints on the table; see
+       pg_relcheck catalog
+      
+     
+
+     
+      reltriggers
+      int2
+      
+      
+       Number of triggers on the table; see
+       pg_trigger catalog
+      
+     
+
+     
+      relukeys
+      int2
+      
+      unused  (Not the number of unique keys or something.)
+     
+
+     
+      relfkeys
+      int2
+      
+      Number foreign keys on the table
+     
+
+     
+      relhaspkey
+      bool
+      
+      
+       unused  (No, this does not say whether the table has a primary
+       key.  It's really unused.)
+      
+     
+
+     
+      relhasrules
+      bool
+      
+      Table has rules
+     
+
+     
+      relhassubclass
+      bool
+      
+      At least one table inherits this one
+     
+
+     
+      relacl
+      aclitem[]
+      
+      
+       Access permissions.  See the descriptions of
+       GRANT and REVOKE for
+       details.
+      
+     
+    
+   
+  
+
+
+  pg_database
+
+  
+   The pg_database catalog stores information
+   about the available databases.  The
+   pg_database table is shared between all
+   databases of a cluster.  Databases are created with the
+   CREATE DATABASE.  Consult the
+   Administrator's Guide for details about the
+   meaning of some of the parameters.
+  
+
+  
+   pg_database Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+
+    
+     
+      datname
+      name
+      
+      Database name
+     
+
+     
+      datdba
+      int4
+      pg_shadow.usesysid
+      Owner of the database, initially who created it
+     
+
+     
+      encoding
+      int4
+      
+      Character/multibyte encoding for this database
+     
+
+     
+      datistemplate
+      bool
+      
+      
+       If true then this database can be used in the
+       TEMPLATE clause of CREATE
+       DATABASE to create the new database as a clone of
+       this one.
+      
+     
+
+     
+      datallowconn
+      bool
+      
+      
+       If false then no one can connect to this database.  This is
+       used to protect the template0 database from being altered.
+      
+     
+
+     
+      datlastsysoid
+      oid
+      
+      
+       Last oid in existence after the database was created; useful
+       particularly to pg_dump
+      
+     
+
+     
+      datpath
+      text
+      
+      
+       If the database is stored at an alternative location then this
+       records the location.  It's either an environment variable name
+       or an absolute path, depending how it was entered.
+      
+     
+    
+   
+  
+
+
+  pg_description
+
+  
+   The pg_description table can store an optional description or
+   comment for each database object.  Descriptions can be manipulated
+   with the COMMENT command.  Client applications
+   can view the descriptions by joining with this table.  Many builtin
+   system objects have comments associated with them that are shown by
+   psql's \d commands.
+  
+
+  
+   pg_description Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+
+    
+     
+      objoid
+      oid
+      any oid attribute
+      The oid of the object this description pertains to
+     
+
+     
+      description
+      text
+      
+      Arbitrary text that serves as the description of this object.
+     
+    
+   
+  
+
+
+
+  pg_group
+
+  
+   This catalog defines groups and stores what users belong to what
+   groups.  Groups are created with the CREATE
+   GROUP command.  Consult the Administrator's
+   Guide for information about user permission management.
+  
+
+  
+   pg_group Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+
+    
+     
+      groname
+      name
+      
+      Name of the group
+     
+
+     
+      grosysid
+      int4
+      
+      An arbitrary number to identify this group
+     
+
+     
+      grolist
+      int4[]
+      pg_shadow.usesysid
+      An array containing the ids of the users in this group
+     
+    
+   
+  
+
+
+
+  pg_index
+
+  
+   pg_index contains part of the information
+   about indexes.  The rest is mostly in
+   pg_class.
+  
+
+  
+   pg_index Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+
+    
+     
+      indexrelid
+      oid
+      pg_class.oid
+      The oid of the pg_class entry for this index
+     
+
+     
+      indrelid
+      oid
+      pg_class.oid
+      The oid of the pg_class entry for the table this index is for
+     
+
+     
+      indproc
+      oid
+      pg_proc.oid
+      The registered procedure if this is a functional index
+     
+
+     
+      indkey
+      int2vector
+      pg_attribute.attnum
+      
+       This is an vector (array) of up to
+       INDEX_MAX_KEYS values that indicate which
+       table columns this index pertains to.  For example a value of
+       1 3 would mean that the first and the third
+       column make up the index key.
+      
+     
+
+     
+      indclass
+      oidvector
+      pg_opclass.oid
+      
+       For each column in the index key this contains a reference to
+       the operator class to use.  See
+       pg_opclass for details.
+      
+     
+
+     
+      indisclustered
+      bool
+      
+      unused
+     
+
+     
+      indislossy
+      bool
+      
+      ???
+     
+
+     
+      indisunique
+      bool
+      
+      If true, this is a unique index.
+     
+
+     
+      indisprimary
+      bool
+      
+      If true, this index is a unique index that represents the primary key of the table.
+     
+
+     
+      indreference
+      oid
+      
+      unused
+     
+
+     
+      indpred
+      text
+      
+      Query plan for partial index predicate (not functional)
+     
+    
+   
+  
+
+
+
+  pg_inherits
+
+  
+   This catalog records information about table inheritance hierarchies.
+  
+
+  
+   pg_inherits Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+
+    
+     
+      inhrelid
+      oid
+      pg_class.oid
+      
+       This is the reference to the subtable, that is, it records the
+       fact that the identified table is inherited from some other
+       table.
+      
+     
+
+     
+      inhparent
+      oid
+      pg_class.oid
+      
+       This is the reference to the parent table, from which the table
+       referenced by inhrelid inherited
+       from.
+      
+     
+
+     
+      inhseqno
+      int4
+      
+      
+       If there is more than one subtable/parent pair (multiple
+       inheritance), this number tells the order in which the
+       inherited columns are to be arranged.  The count starts at 1.
+      
+     
+    
+   
+  
+
+
+
+  pg_language
+
+  
+   pg_language registers call interfaces or
+   languages in which you can write functions or stored procedures.
+   See under CREATE LANGUAGE and in the
+   Programmer's Guide for more information
+   about language handlers.
+  
+
+  
+   pg_language Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+
+    
+     
+      lanname
+      name
+      
+      Name of the language (to be specified when creating a function)
+     
+
+     
+      lanispl
+      bool
+      
+      
+       This is false for internal languages (such as SQL) and true for
+       dynamically loaded language handler modules.  It essentially
+       means that, if it is true, the language may be dropped.
+      
+     
+
+     
+      lanpltrusted
+      bool
+      
+      
+       This is a trusted language.  See under CREATE
+       LANGUAGE what this means.  If this is an internal
+       language (lanispl is false) then
+       this field is meaningless.
+      
+     
+
+     
+      lanplcallfoid
+      oid
+      pg_proc.oid
+      
+       For non-internal languages this references the language
+       handler, which is a special function that is responsible for
+       executing all functions that are written in the particular
+       language.
+      
+     
+
+     
+      lancompiler
+      text
+      
+      not useful
+     
+    
+   
+  
+
+
+
+  pg_operator
+
+  
+   See CREATE OPERATOR and the
+   Programmer's Guide for details on these
+   operator parameters.
+  
+
+  
+   pg_operator Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+
+    
+     
+      oprname
+      name
+      
+      Name of the operator
+     
+
+     
+      oprowner
+      int4
+      pg_shadow.usesysid
+      Owner (creator) of the operator
+     
+
+     
+      oprprec
+      int2
+      
+      unused
+     
+
+     
+      oprkind
+      char
+      
+      
+       'b' = infix (both), 'l' = prefix
+       (left), 'r' = postfix (right)
+      
+     
+
+     
+      oprisleft
+      bool
+      
+      unused
+     
+
+     
+      oprcanhash
+      bool
+      
+      This operator supports hash joins.
+     
+
+     
+      oprleft
+      oid
+      pg_type.oid
+      Type of the left operand
+     
+
+     
+      oprright
+      oid
+      pg_type.oid
+      Type of the right operand
+     
+
+     
+      oprresult
+      oid
+      pg_type.oid
+      Type of the result
+     
+
+     
+      oprcom
+      oid
+      pg_operator.oid
+      Commutator of this operator, if any
+     
+
+     
+      oprnegate
+      oid
+      pg_operator.oid
+      Inverse of this operator, if any
+     
+
+     
+      oprlsortop
+      oid
+      pg_operator.oid
+      
+       If this operator supports merge joins, the operator that sorts
+       the type of the left-hand operand
+      
+     
+
+     
+      oprrsortop
+      oid
+      pg_operator.oid
+      
+       If this operator supports merge joins, the operator that sorts
+       the type of the left-hand operand
+      
+     
+
+     
+      oprcode
+      regproc
+      
+      Function that implements this operator
+     
+
+     
+      oprrest
+      regproc
+      
+      Restriction selectivity estimation function for this operator
+     
+
+     
+      oprjoin
+      regproc
+      
+      Join selectivity estimation function for this operator
+     
+    
+   
+  
+
+
+
+  pg_proc
+
+  
+   This catalog stores information about functions (or procedures).
+   The description of CREATE FUNCTION and the
+   Programmer's Guide contain more information
+   about the meaning of some fields.
+  
+
+  
+   pg_proc Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+
+    
+     
+      proname
+      name
+      
+      Name of the function
+     
+
+     
+      proowner
+      int4
+      pg_shadow.usesysid
+      Owner (creator) of the function
+     
+
+     
+      prolang
+      oid
+      pg_language.oid
+      Implementation language or call interface of this function
+     
+
+     
+      proisinh
+      bool
+      
+      unused
+     
+
+     
+      proistrusted
+      bool
+      
+      not functional
+     
+
+     
+      proiscachable
+      bool
+      
+      Function returns same result for same input values
+     
+
+     
+      proisstrict
+      bool
+      
+      
+       Function returns null if any call argument is null.  In that
+       case the function won't actually be called at all.  Functions
+       that are not strict must be prepared to handle
+       null inputs.
+      
+     
+
+     
+      pronargs
+      int2
+      
+      Number of arguments
+     
+
+     
+      proretset
+      bool
+      
+      Function returns a set (probably not functional)
+     
+
+     
+      prorettype
+      oid
+      pg_type.oid
+      Data type of the return value (0 if the function does not return a value)
+     
+
+     
+      proargtypes
+      oidvector
+      pg_type.oid
+      A vector with the data types of the function arguments
+     
+
+     
+      probyte_pct
+      int4
+      
+      dead code
+     
+
+     
+      properbyte_pct
+      int4
+      
+      dead code
+     
+
+     
+      propercall_pct
+      int4
+      
+      dead code
+     
+
+     
+      prooutin_ratio
+      int4
+      
+      dead code
+     
+
+     
+      prosrc
+      text
+      
+      
+       This tells the function handler how to invoke the function.  It
+       might be the actual source code of the function for interpreted
+       languages, a link symbol, a file name, or just about anything
+       else, depending the implementation language/call convention.
+      
+     
+
+     
+      probin
+      bytea
+      
+      ?
+     
+    
+   
+  
+
+
+
+  pg_relcheck
+
+  
+   This system catalog stores CHECK constraints on tables.  (Column
+   constraints are not treated specially.  Every column constraint is
+   equivalent to some table constraint.)  See under CREATE
+   TABLE for more information.
+  
+
+  
+   pg_relcheck Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+
+    
+     
+      rcrelid
+      oid
+      pg_class.oid
+      The table this check constraint is on
+     
+
+     
+      rcname
+      name
+      
+      Constraint name
+     
+
+     
+      rcbin
+      text
+      
+      An internal representation of the constraint expression
+     
+
+     
+      rcsrc
+      text
+      
+      A human-readable representation of the consraint expression
+     
+    
+   
+  
+
+  
+   
+    pg_class.relchecks
+    needs to match up with the entries in this table.
+   
+  
+
+
+
+  pg_shadow
+
+  
+   pg_shadow contains information about
+   database users.  The name stems from the fact that this table
+   should not be readable by the public since it contains passwords.
+   pg_user is a view on
+   pg_shadow that blanks out the password field.
+  
+
+  
+   The Administrator's Guide contains detailed
+   information about user and permission management.
+  
+
+  
+   pg_shadow Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+
+    
+     
+      usename
+      name
+      
+      User name
+     
+
+     
+      usesysid
+      int4
+      
+      User id (arbitrary number used to reference this user)
+     
+
+     
+      usecreatedb
+      bool
+      
+      User may create databases
+     
+
+     
+      usetrace
+      bool
+      
+      not used
+     
+
+     
+      usesuper
+      bool
+      
+      User is a superuser
+     
+
+     
+      usecatupd
+      bool
+      
+      
+       User may update system catalogs.  (Even a superuser may not do
+       this unless this attribute is true.)
+      
+     
+
+     
+      passwd
+      text
+      
+      Password
+     
+
+     
+      valuntil
+      abstime
+      
+      Account expiry time (only used for password authentication)
+     
+    
+   
+  
+
+
+
+  pg_type
+
+  
+   pg_type Columns
+
+   
+    
+     
+      Name
+      Type
+      References
+      Description
+     
+    
+
+    
+     
+      typname
+      name
+      
+      Data type name
+     
+
+     
+      typowner
+      int4
+      pg_shadow.usesysid
+      Owner (creator) of the type
+     
+
+     
+      typlen
+      int2
+      
+      Length of the storage representation of the type, -1 if variable length
+     
+
+     
+      typprtlen
+      int2
+      
+      unused
+     
+
+     
+      typbyval
+      bool
+      
+      
+       typbyval determines whether internal
+       routines pass a value of this type by value or by reference.
+       Only charshort, and
+       int equivalent items can be passed by value, so if
+       the type is not 1, 2, or 4 bytes long, Postgres does not have
+       the option of passing by value and so
+       typbyval had better be false.
+       Variable-length types are always passed by reference. Note that
+       typbyval can be false even if the
+       length would allow pass-by-value; this is currently true for
+       type float4, for example.
+      
+     
+
+     
+      typtype
+      char
+      
+      
+       typtype is b for
+       a basic type and c for a catalog type (i.e.,
+       a table).  If typtype is
+       ctyprelid is
+       the OID of the type's entry in
+       pg_class.
+      
+     
+
+     
+      typisdefined
+      bool
+      
+      ???
+     
+
+     
+      typdelim
+      char
+      
+      Character that separates two values of this type when parsing array input
+     
+
+     
+      typrelid
+      oid
+      pg_class.oid
+      
+       If this is a catalog type (see
+       typtype), then this field points to
+       the pg_class entry that defines the
+       corresponding table. A table could theoretically be used as a
+       composite data type, but this is not fully functional.
+      
+     
+
+     
+      typelem
+      oid
+      pg_type.oid
+      
+       If typelem is not 0 then it
+       identifies another row in pg_type.
+       The current type can then be subscripted like an array yielding
+       values of type typelem. A non-zero
+       typelem does not guarantee this type
+       to be a real array type; some ordinary
+       fixed-length types can also be subscripted (e.g.,
+       oidvector). Variable-length types can
+       not be turned into pseudo-arrays like
+       that. Hence, the way to determine whether a type is a
+       true array type is typelem != 0 and typlen < 0.
+      
+     
+
+     
+      typinput
+      regproc
+      
+      Input function
+     
+
+     
+      typoutput
+      regproc
+      
+      Output function
+     
+
+     
+      typreceive
+      regproc
+      
+      unused
+     
+
+     
+      typsend
+      regproc
+      
+      unused
+     
+
+     
+      typalign
+      char
+      
+      
+
+       typalign is the alignment required
+       when storing a value of this type.  It applies to storage on
+       disk as well as most representations of the value inside
+       Postgres.  When multiple values are stored consecutively, such
+       as in the representation of a complete row on disk, padding is
+       inserted before a datum of this type so that it begins on the
+       specified boundary.  The alignment reference is the beginning
+       of the first datum in the sequence.
+      
+       Possible values are:
+       
+        
+         'c' = CHAR alignment, ie no alignment needed.
+        
+        
+         's' = SHORT alignment (2 bytes on most machines).
+        
+        
+         'i' = INT alignment (4 bytes on most machines).
+        
+        
+         'd' = DOUBLE alignment (8 bytes on many machines, but by no means all).
+        
+       
+      
+       
+        For types used in system tables, it is critical that the size
+        and alignment defined in pg_type
+        agree with the way that the compiler will lay out the field in
+        a struct representing a table row.
+       
+      
+     
+
+     
+      typstorage
+      char
+      
+      
+       typstorage tells for variable-length
+       types (those with typlen = -1) if
+       the type is prepared for toasting and what the default strategy
+       for attributes of this type should be.
+       Possible values are
+       
+        
+         'p': Value must always be stored plain.
+        
+        
+         
+          'e': Value can be stored in a secondary
+          relation (if relation has one, see
+          pg_class.reltoastrelid).
+         
+        
+        
+         'm': Value can be stored compressed inline.
+        
+        
+         'x': Value can be stored compressed inline or in secondary.
+        
+       
+       Note that 'm' fields can also be moved out to secondary
+       storage, but only as a last resort ('e' and 'x' fields are
+       moved first).
+      
+     
+
+     
+      typdefault
+      text
+      
+      ???
+     
+    
+   
+  
+
+
+
index 586f0eaa95ace2e735684de9049cc50bfc6f7a8e..4cd9a876856ce3df1f17b39f6d64c0f4eae06cb2 100644 (file)
@@ -1,4 +1,4 @@
-
+
 
 
 
  
  &sources;
  &arch-dev; 
- &geqo;
-
  &protocol;
  &compiler;
  &bki;
  &page;
+ &geqo;
 
  &biblio;
 ]]>
index 5f18a1c770da087c3d609991e213e794354b8f32..7d4d6f8f61ba390363f67494f2e43cd8f3bfed77 100644 (file)
@@ -1,5 +1,5 @@
 
 
  
@@ -107,7 +107,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/extend.sgml,v 1.6 2000/09/29 20:21:33 peter
    
   
 
-  
+  pg-system-catalogs">
    About the <productname>Postgres</productname> System Catalogs
 
    
index 51bd5e43c536eed0777bf35a6044fee5c2933fc9..ce668e37b3935a9a05db6eabe079bd6b52621fbc 100644 (file)
@@ -1,5 +1,5 @@
 
 
  
@@ -1574,7 +1574,7 @@ CREATE INDEX I ON SUPPLIER (SNAME);
       view (i.e. the rules about how to access physically stored base
       tables in order to materialize the view) somewhere in the system
       catalogs (see
-      catalogs-title" endterm="catalogs-title">). For a
+      tutorial-catalogs-title" endterm="tutorial-catalogs-title">). For a
       discussion on different techniques to implement views refer to