OSDN Git Service

NOT NULL implementation (submitted by Robson Paniago de Miranda).
authorVadim B. Mikheev <vadim4o@yahoo.com>
Tue, 19 Aug 1997 04:46:15 +0000 (04:46 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Tue, 19 Aug 1997 04:46:15 +0000 (04:46 +0000)
16 files changed:
src/backend/access/common/tupdesc.c
src/backend/catalog/heap.c
src/backend/catalog/index.c
src/backend/commands/command.c
src/backend/commands/copy.c
src/backend/commands/creatinh.c
src/backend/executor/execMain.c
src/backend/parser/gram.y
src/backend/utils/cache/relcache.c
src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/pg_dump.h
src/bin/psql/psql.c
src/bin/psql/psqlHelp.h
src/include/access/tupdesc.h
src/include/catalog/pg_attribute.h
src/include/nodes/parsenodes.h

index f0c8cbe..c86027b 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.13 1997/08/18 20:51:31 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.14 1997/08/19 04:42:31 vadim Exp $
  *
  * NOTES
  *    some of the executor utility code such as "ExecTypeFromTL" should be
@@ -60,6 +60,7 @@ CreateTemplateTupleDesc(int natts)
     size = natts * sizeof (AttributeTupleForm);
     desc = (TupleDesc) palloc(sizeof(struct tupleDesc));
     desc->attrs = (AttributeTupleForm*) palloc(size);
+    desc->constr = NULL;
     memset(desc->attrs, 0, size);
 
     desc->natts = natts;
@@ -87,7 +88,7 @@ CreateTupleDesc(int natts, AttributeTupleForm* attrs)
     desc = (TupleDesc) palloc(sizeof(struct tupleDesc));
     desc->attrs = attrs;
     desc->natts = natts;    
-
+    desc->constr = NULL;
 
     return (desc);
 }
@@ -117,6 +118,11 @@ CreateTupleDescCopy(TupleDesc tupdesc)
                tupdesc->attrs[i],
                ATTRIBUTE_TUPLE_SIZE);
     }
+    if (tupdesc->constr) {
+      desc->constr = (AttrConstr *) palloc(sizeof(struct attrConstr));
+      memmove(desc->constr, tupdesc->constr, sizeof(struct attrConstr));
+    } else
+      desc->constr = NULL;
     return desc;
 }
 
@@ -379,6 +385,15 @@ BuildDescForRelation(List *schema, char *relname)
        if (entry->typename->typlen > 0) {
            desc->attrs[attnum - 1]->attlen = entry->typename->typlen;
        }
+
+       /* This is for constraints */
+       if (entry->is_not_null) {
+           if (!desc->constr)
+               desc->constr = (AttrConstr *) palloc(sizeof(struct attrConstr));
+           desc->constr->has_not_null = true;
+        } 
+        desc->attrs[attnum-1]->attnotnull = entry->is_not_null;
+
     }
     return desc;
 }
index 61c38d0..986c7a0 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.15 1997/08/12 22:52:07 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.16 1997/08/19 04:42:54 vadim Exp $
  *
  * INTERFACE ROUTINES
  *     heap_creatr()           - Create an uncataloged heap relation
 
 static FormData_pg_attribute a1 = {
     0xffffffff, {"ctid"}, 27l, 0l, 0l, 0l, sizeof (ItemPointerData),
-    SelfItemPointerAttributeNumber, 0, '\0', '\001', 0l, 'i'
+    SelfItemPointerAttributeNumber, 0, '\0', '\001', 0l, 'i', '\0'
 };
 
 static FormData_pg_attribute a2 = {
     0xffffffff, {"oid"}, 26l, 0l, 0l, 0l, sizeof(Oid),
-    ObjectIdAttributeNumber, 0, '\001', '\001', 0l, 'i'
+    ObjectIdAttributeNumber, 0, '\001', '\001', 0l, 'i','\0'
 };
 
 static FormData_pg_attribute a3 = {
     0xffffffff, {"xmin"}, 28l, 0l, 0l, 0l, sizeof (TransactionId),
-    MinTransactionIdAttributeNumber, 0, '\0', '\001', 0l, 'i',
+    MinTransactionIdAttributeNumber, 0, '\0', '\001', 0l, 'i', '\0'
 };
 
 static FormData_pg_attribute a4 = {
     0xffffffff, {"cmin"}, 29l, 0l, 0l, 0l, sizeof (CommandId),
-    MinCommandIdAttributeNumber, 0, '\001', '\001', 0l, 's'
+    MinCommandIdAttributeNumber, 0, '\001', '\001', 0l, 's', '\0'
 };
 
 static FormData_pg_attribute a5 = {
     0xffffffff, {"xmax"}, 28l, 0l, 0l, 0l, sizeof (TransactionId),
-    MaxTransactionIdAttributeNumber, 0, '\0', '\001', 0l, 'i'
+    MaxTransactionIdAttributeNumber, 0, '\0', '\001', 0l, 'i', '\0'
 };
 
 static FormData_pg_attribute a6 = {
     0xffffffff, {"cmax"}, 29l, 0l, 0l, 0l, sizeof (CommandId),
-    MaxCommandIdAttributeNumber, 0, '\001', '\001', 0l, 's'
+    MaxCommandIdAttributeNumber, 0, '\001', '\001', 0l, 's', '\0'
 };
 
 static FormData_pg_attribute a7 = {
     0xffffffff, {"chain"}, 27l, 0l, 0l, 0l, sizeof (ItemPointerData),
-    ChainItemPointerAttributeNumber, 0, '\0', '\001', 0l, 'i',
+    ChainItemPointerAttributeNumber, 0, '\0', '\001', 0l, 'i', '\0'
 };
 
 static FormData_pg_attribute a8 = {
     0xffffffff, {"anchor"}, 27l, 0l, 0l, 0l, sizeof (ItemPointerData),
-    AnchorItemPointerAttributeNumber, 0, '\0', '\001', 0l, 'i'
+    AnchorItemPointerAttributeNumber, 0, '\0', '\001', 0l, 'i', '\0'
 };
 
 static FormData_pg_attribute a9 = {
     0xffffffff, {"tmin"}, 20l, 0l, 0l, 0l, sizeof (AbsoluteTime),
-    MinAbsoluteTimeAttributeNumber, 0, '\001', '\001', 0l, 'i'
+    MinAbsoluteTimeAttributeNumber, 0, '\001', '\001', 0l, 'i', '\0'
 };
 
 static FormData_pg_attribute a10 = {
     0xffffffff, {"tmax"}, 20l, 0l, 0l, 0l, sizeof (AbsoluteTime),
-    MaxAbsoluteTimeAttributeNumber, 0, '\001', '\001', 0l, 'i'
+    MaxAbsoluteTimeAttributeNumber, 0, '\001', '\001', 0l, 'i', '\0'
 };
 
 static FormData_pg_attribute a11 = {
     0xffffffff, {"vtype"}, 18l, 0l, 0l, 0l, sizeof (char),
-    VersionTypeAttributeNumber, 0, '\001', '\001', 0l, 'c'
+    VersionTypeAttributeNumber, 0, '\001', '\001', 0l, 'c', '\0'
 };
 
 static AttributeTupleForm HeapAtt[] =
@@ -565,7 +565,6 @@ AddNewAttributeTuples(Oid new_rel_oid,
                             (char *) *dpp);
        
        heap_insert(rdesc, tup);
-       
        if (hasindex)
            CatalogIndexInsert(idescs, Num_pg_attr_indices, rdesc, tup);
        
index 89497ee..8c453f6 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.16 1997/08/12 22:52:09 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.17 1997/08/19 04:42:55 vadim Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -112,17 +112,17 @@ static void DefaultBuild(Relation heapRelation, Relation indexRelation,
  * ----------------------------------------------------------------
  */
 static FormData_pg_attribute   sysatts[] = {
-   { 0l, {"ctid"},   27l,  0l, 0l, 0l,  6,  -1, 0,   '\0', '\001', 0l, 'i' },
-   { 0l, {"oid"},    26l,  0l, 0l, 0l,  4,  -2, 0, '\001', '\001', 0l, 'i' },
-   { 0l, {"xmin"},   28l,  0l, 0l, 0l,  5,  -3, 0,   '\0', '\001', 0l, 'i' },
-   { 0l, {"cmin"},   29l,  0l, 0l, 0l,  1,  -4, 0, '\001', '\001', 0l, 's' },
-   { 0l, {"xmax"},   28l,  0l, 0l, 0l,  5,  -5, 0,   '\0', '\001', 0l, 'i' },
-   { 0l, {"cmax"},   29l,  0l, 0l, 0l,  1,  -6, 0, '\001', '\001', 0l, 's' },
-   { 0l, {"chain"},  27l,  0l, 0l, 0l,  6,  -7, 0,   '\0', '\001', 0l, 'i' },
-   { 0l, {"anchor"}, 27l,  0l, 0l, 0l,  6,  -8, 0,   '\0', '\001', 0l, 'i' },
-   { 0l, {"tmin"},   20l,  0l, 0l, 0l,  4,  -9, 0, '\001', '\001', 0l, 'i' },
-   { 0l, {"tmax"},   20l,  0l, 0l, 0l,  4, -10, 0, '\001', '\001', 0l, 'i' },
-   { 0l, {"vtype"},  18l,  0l, 0l, 0l,  1, -11, 0, '\001', '\001', 0l, 'c' },
+   { 0l, {"ctid"},   27l,  0l, 0l, 0l,  6,  -1, 0,   '\0', '\001', 0l, 'i', '\0' },
+   { 0l, {"oid"},    26l,  0l, 0l, 0l,  4,  -2, 0, '\001', '\001', 0l, 'i', '\0' },
+   { 0l, {"xmin"},   28l,  0l, 0l, 0l,  5,  -3, 0,   '\0', '\001', 0l, 'i', '\0' },
+   { 0l, {"cmin"},   29l,  0l, 0l, 0l,  1,  -4, 0, '\001', '\001', 0l, 's', '\0' },
+   { 0l, {"xmax"},   28l,  0l, 0l, 0l,  5,  -5, 0,   '\0', '\001', 0l, 'i', '\0' },
+   { 0l, {"cmax"},   29l,  0l, 0l, 0l,  1,  -6, 0, '\001', '\001', 0l, 's', '\0' },
+   { 0l, {"chain"},  27l,  0l, 0l, 0l,  6,  -7, 0,   '\0', '\001', 0l, 'i', '\0' },
+   { 0l, {"anchor"}, 27l,  0l, 0l, 0l,  6,  -8, 0,   '\0', '\001', 0l, 'i', '\0' },
+   { 0l, {"tmin"},   20l,  0l, 0l, 0l,  4,  -9, 0, '\001', '\001', 0l, 'i', '\0' },
+   { 0l, {"tmax"},   20l,  0l, 0l, 0l,  4, -10, 0, '\001', '\001', 0l, 'i', '\0' },
+   { 0l, {"vtype"},  18l,  0l, 0l, 0l,  1, -11, 0, '\001', '\001', 0l, 'c', '\0' },
 };
 
 /* ----------------------------------------------------------------
index 7494199..6cbe9bd 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.9 1997/08/18 20:52:11 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.10 1997/08/19 04:43:27 vadim Exp $
  *
  * NOTES
  *    The PortalExecutorHeapMemory crap needs to be eliminated
@@ -279,7 +279,11 @@ PerformAddAttribute(char *relationName,
        elog(WARN, "PerformAddAttribute: you do not own class \"%s\"",
             relationName);
 #endif
-    
+    /*   
+     * we can't add a not null attribute
+     */
+    if (colDef->is_not_null)
+        elog(WARN,"Can't add a not null attribute to a existent relation");
     /*
      * if the first element in the 'schema' list is a "*" then we are
      * supposed to add this attribute to all classes that inherit from
@@ -454,6 +458,7 @@ PerformAddAttribute(char *relationName,
        attribute->attcacheoff = -1;
        attribute->attisset = (bool) (form->typtype == 'c');
        attribute->attalign = form->typalign;
+        attribute->attnotnull = false;
        
        heap_insert(attrdesc, attributeTuple);
        if (hasindex)
index b444140..ee7948a 100644 (file)
@@ -6,7 +6,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.25 1997/08/18 02:14:34 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.26 1997/08/19 04:43:28 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -602,6 +602,22 @@ CopyFrom(Relation rel, bool binary, bool oids, FILE *fp, char *delim)
         tuple = heap_formtuple(tupDesc, values, nulls);
         if (oids)
             tuple->t_oid = loaded_oid;
+
+       /* ----------------
+        * Check the constraints of a tuple
+        * ----------------
+        */
+       
+       if (rel->rd_att->constr && rel->rd_att->constr->has_not_null)
+         {
+           int attrChk;
+           for (attrChk = 1; attrChk <= rel->rd_att->natts; attrChk++) {
+             if (rel->rd_att->attrs[attrChk-1]->attnotnull && heap_attisnull(tuple,attrChk))
+               elog(WARN,"CopyFrom:  Fail to add null value in not null attribute %s",
+                    rel->rd_att->attrs[attrChk-1]->attname.data);
+           }
+         }
+       
         heap_insert(rel, tuple);
             
         if (has_index) {
index 1113a84..28143a9 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.11 1997/08/18 20:52:16 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.12 1997/08/19 04:43:30 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -276,14 +276,16 @@ MergeAttributes(List *schema, List *supers)
            AttributeTupleForm  attribute = tupleDesc->attrs[attrno];
            char *attributeName;
            char *attributeType;
+           AttrConstr  constraints;
            HeapTuple   tuple;
            ColumnDef   *def;
            TypeName    *typename;
            
            /*
-            * form name and type
+            * form name, type and constraints
             */
            attributeName = (attribute->attname).data;
+            constraints.has_not_null = attribute->attnotnull;
            tuple =
                SearchSysCacheTuple(TYPOID,
                                    ObjectIdGetDatum(attribute->atttypid),
@@ -311,7 +313,8 @@ MergeAttributes(List *schema, List *supers)
            def->colname = pstrdup(attributeName);
            typename->name = pstrdup(attributeType); 
            def->typename = typename;
-           partialResult = lcons(def, partialResult);
+           def->is_not_null = constraints.has_not_null;
+            partialResult = lcons(def, partialResult);
        }
        
        /*
index b79be5d..b839ece 100644 (file)
@@ -26,7 +26,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.15 1997/08/18 20:52:25 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.16 1997/08/19 04:43:45 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -401,6 +401,7 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate)
     if (resultRelation != 0 && operation != CMD_SELECT) {
        /* ----------------
         *    if we have a result relation, open it and
+
         *    initialize the result relation info stuff.
         * ----------------
         */
@@ -911,6 +912,21 @@ ExecAppend(TupleTableSlot *slot,
      */
 
     /* ----------------
+     * Check the constraints of a tuple
+     * ----------------
+     */
+
+    if (resultRelationDesc->rd_att->constr && resultRelationDesc->rd_att->constr->has_not_null)
+      {
+       int attrChk;
+       for (attrChk = 1; attrChk <= resultRelationDesc->rd_att->natts; attrChk++) {
+         if (resultRelationDesc->rd_att->attrs[attrChk-1]->attnotnull && heap_attisnull(tuple,attrChk))
+           elog(WARN,"ExecAppend:  Fail to add null value in not null attribute %s",
+                resultRelationDesc->rd_att->attrs[attrChk-1]->attname.data);
+       }
+      }
+
+    /* ----------------
      * insert the tuple
      * ----------------
      */
@@ -1031,6 +1047,21 @@ ExecReplace(TupleTableSlot *slot,
      */
 
     /* ----------------
+     * Check the constraints of a tuple
+     * ----------------
+     */
+
+    if (resultRelationDesc->rd_att->constr && resultRelationDesc->rd_att->constr->has_not_null)
+      {
+       int attrChk;
+       for (attrChk = 1; attrChk <= resultRelationDesc->rd_att->natts; attrChk++) {
+         if (resultRelationDesc->rd_att->attrs[attrChk-1]->attnotnull && heap_attisnull(tuple,attrChk))
+           elog(WARN,"ExecReplace:  Fail to update null value in not null attribute %s",
+                resultRelationDesc->rd_att->attrs[attrChk-1]->attname.data);
+       }
+      }
+
+    /* ----------------
      * replace the heap tuple
      *
      * Don't want to continue if our heap_replace didn't actually
index 32d32e6..0cd06b7 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.35 1997/08/12 20:15:33 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.36 1997/08/19 04:44:01 vadim Exp $
  *
  * HISTORY
  *    AUTHOR           DATE            MAJOR EVENT
@@ -135,7 +135,7 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
        def_list, opt_indirection, group_clause, groupby_list
 
 %type <boolean>        opt_inh_star, opt_binary, opt_instead, opt_with_copy,
-               index_opt_unique, opt_verbose, opt_analyze
+               index_opt_unique, opt_verbose, opt_analyze, opt_null
 
 %type <ival>   copy_dirn, archive_type, OptArchiveType, OptArchiveLocation, 
        def_type, opt_direction, remove_type, opt_column, event
@@ -333,14 +333,20 @@ AddAttrStmt:  ALTER TABLE relation_name opt_inh_star ADD COLUMN columnDef
                }
        ;
 
-columnDef:  Id Typename
+columnDef:  Id Typename opt_null
                {  
                    $$ = makeNode(ColumnDef);
                    $$->colname = $1;
                    $$->typename = $2;
+                    $$->is_not_null = $3;
                }
        ;
 
+opt_null:   PNULL                         { $$ = false; }
+            | NOT PNULL                   { $$ = true; }
+            | NOTNULL                     { $$ = true; }
+            | /* EMPTY */                 { $$ = false; }
+        ;
        
 /*****************************************************************************
  *     
index d7bb7e7..585d82f 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.13 1997/08/18 20:53:48 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.14 1997/08/19 04:44:21 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -506,7 +506,7 @@ build_tupdesc_seq(RelationBuildDescInfo buildinfo,
     HeapScanDesc pg_attribute_scan;
     ScanKeyData         key;
     int                 need;
-    
+                                   
     /* ----------------
      * form a scan key
      * ----------------
@@ -529,6 +529,10 @@ build_tupdesc_seq(RelationBuildDescInfo buildinfo,
      * ----------------
      */
     need = natts;
+    if (!relation->rd_att->constr)
+      relation->rd_att->constr = (AttrConstr *) palloc(sizeof(struct attrConstr));
+    relation->rd_att->constr->has_not_null = false;
+
     pg_attribute_tuple = heap_getnext(pg_attribute_scan, 0, (Buffer *) NULL);
     while (HeapTupleIsValid(pg_attribute_tuple) && need > 0) {
        attp = (AttributeTupleForm) GETSTRUCT(pg_attribute_tuple);
@@ -540,6 +544,11 @@ build_tupdesc_seq(RelationBuildDescInfo buildinfo,
            memmove((char *) (relation->rd_att->attrs[attp->attnum - 1]),
                    (char *) attp,
                    ATTRIBUTE_TUPLE_SIZE);
+
+            /* Update if this attribute have a constraint */
+            if (attp->attnotnull)
+             relation->rd_att->constr->has_not_null = true;
+           
            need--;
        }
        pg_attribute_tuple = heap_getnext(pg_attribute_scan,
@@ -567,6 +576,10 @@ build_tupdesc_ind(RelationBuildDescInfo buildinfo,
     Relation attrel;
     HeapTuple atttup;
     int i;
+
+    if (!relation->rd_att->constr)
+      relation->rd_att->constr = (AttrConstr *) palloc(sizeof(struct attrConstr));
+    relation->rd_att->constr->has_not_null = false;
      
     attrel = heap_openr(AttributeRelationName);
     
@@ -585,6 +598,10 @@ build_tupdesc_ind(RelationBuildDescInfo buildinfo,
        memmove((char *) (relation->rd_att->attrs[i - 1]),
                (char *) attp,
                ATTRIBUTE_TUPLE_SIZE);
+
+       /* Update if this attribute have a constraint */
+       if (attp->attnotnull)
+         relation->rd_att->constr->has_not_null = true;
     }
     
     heap_close(attrel);
@@ -1229,7 +1246,9 @@ RelationFlushRelation(Relation *relationPtr,
        for (i = 0; i < relation->rd_rel->relnatts; i++, p++)
            pfree (*p);
        pfree (relation->rd_att->attrs);
-       pfree (relation->rd_att);
+        if (relation->rd_att->constr)
+           pfree (relation->rd_att->constr);
+        pfree (relation->rd_att);
 
 #if 0
        if (relation->rd_rules) {
index 1af318a..efd411d 100644 (file)
@@ -21,7 +21,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.36 1997/07/28 23:53:54 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.37 1997/08/19 04:44:38 vadim Exp $
  *
  * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
  *
@@ -798,6 +798,8 @@ clearTableInfo(TableInfo *tblinfo, int numTables)
         if ( tblinfo[i].sequence )
             continue;
 
+       if (tblinfo[i].notnull) free (tblinfo[i].notnull);
+
        /* Process Attributes */
         for(j=0;j<tblinfo[i].numatts;j++) {
             if(tblinfo[i].attnames[j]) free (tblinfo[i].attnames[j]);
@@ -1233,6 +1235,7 @@ getTableAttrs(TableInfo* tblinfo, int numTables)
     int i_attname;
     int i_typname;
     int i_attlen;
+    int i_attnotnull;
     PGresult *res;
     int ntups;
 
@@ -1255,7 +1258,7 @@ getTableAttrs(TableInfo* tblinfo, int numTables)
                 tblinfo[i].relname,
                 g_comment_end);
 
-        sprintf(q,"SELECT a.attnum, a.attname, t.typname, a.attlen "
+        sprintf(q,"SELECT a.attnum, a.attname, t.typname, a.attlen, a.attnotnull "
                 "from pg_attribute a, pg_type t "
                 "where a.attrelid = '%s'::oid and a.atttypid = t.oid "
                 "and a.attnum > 0 order by attnum",
@@ -1272,12 +1275,14 @@ getTableAttrs(TableInfo* tblinfo, int numTables)
         i_attname = PQfnumber(res,"attname");
         i_typname = PQfnumber(res,"typname");
         i_attlen  = PQfnumber(res,"attlen");
+       i_attnotnull = PQfnumber(res,"attnotnull");
 
         tblinfo[i].numatts = ntups;
         tblinfo[i].attnames = (char**) malloc( ntups * sizeof(char*));
         tblinfo[i].typnames = (char**) malloc( ntups * sizeof(char*));
         tblinfo[i].attlen   = (int*) malloc(ntups * sizeof(int));
         tblinfo[i].inhAttrs = (int*) malloc (ntups * sizeof(int));
+       tblinfo[i].notnull  = (bool*) malloc (ntups * sizeof(bool));
         tblinfo[i].parentRels = NULL;
         tblinfo[i].numParents = 0;
         for (j=0;j<ntups;j++) {
@@ -1287,6 +1292,7 @@ getTableAttrs(TableInfo* tblinfo, int numTables)
             if (tblinfo[i].attlen[j] > 0) 
               tblinfo[i].attlen[j] = tblinfo[i].attlen[j] - 4;
             tblinfo[i].inhAttrs[j] = 0; /* this flag is set in flagInhAttrs()*/
+           tblinfo[i].notnull[j]  = PQgetvalue(res,j,i_attnotnull)[0]=='t'?true:false;
         }
         PQclear(res);
     } 
@@ -1766,6 +1772,7 @@ void dumpTables(FILE* fout, TableInfo *tblinfo, int numTables,
                                 tblinfo[i].typnames[j]);
                         actual_atts++;
                     }
+                   sprintf(q, "%s%s NULL", q, tblinfo[i].notnull[j]?" NOT":"");
                 }
             }
 
index e65eb6e..a8df2db 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_dump.h,v 1.17 1997/07/23 17:15:13 momjian Exp $
+ * $Id: pg_dump.h,v 1.18 1997/08/19 04:44:40 vadim Exp $
  *
  * Modifications - 6/12/96 - dave@bensoft.com - version 1.13.dhb.2
  *
@@ -70,6 +70,7 @@ typedef struct _tableInfo {
                              an inherited attribute */
     char **attnames;        /* the attribute names */
     char **typnames;        /* fill out attributes */
+    bool *notnull;          /* Not null constraints of an attribute */
     int numParents;         /* number of (immediate) parent supertables */
     char **parentRels;      /* names of parent relations, NULL
                               if numParents == 0 */
index e8ef009..b894760 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.82 1997/08/17 00:48:45 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.83 1997/08/19 04:45:02 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -422,7 +422,7 @@ tableDesc(PsqlSettings * ps, char *table)
            table[i] = tolower(table[i]);
 
     descbuf[0] = '\0';
-    strcat(descbuf, "SELECT a.attnum, a.attname, t.typname, a.attlen");
+    strcat(descbuf, "SELECT a.attnum, a.attname, t.typname, a.attlen, a.attnotnull");
     strcat(descbuf, "  FROM pg_class c, pg_attribute a, pg_type t ");
     strcat(descbuf, "    WHERE c.relname = '");
     strcat(descbuf, table);
index e3b2ed0..a889186 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: psqlHelp.h,v 1.20 1997/07/24 19:11:53 momjian Exp $
+ * $Id: psqlHelp.h,v 1.21 1997/08/19 04:45:04 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -76,7 +76,7 @@ static struct _helpStruct QL_HELP[] = {
       "create sequence <sequence_name>\n\t[increment <NUMBER>]\n\t[start <NUMBER>]\n\t[minvalue <NUMBER>]\n\t[maxvalue <NUMBER>]\n\t[cache <NUMBER>]\n\t[cycle];"},
   { "create table",
       "create a new table",
-      "create table <class_name> ( <attr1> <type1>,... <attrN> <typeN>)\n\t[inherits (<class_name1>,...<class_nameN>\n\tarchive=<archive_mode>\n\tstore=<smgr_name>\n\tarch_store=<smgr_name>];"},
+      "create table <class_name> ( <attr1> <type1> [[not] null],... <attrN> <typeN>)\n\t[inherits (<class_name1>,...<class_nameN>\n\tarchive=<archive_mode>\n\tstore=<smgr_name>\n\tarch_store=<smgr_name>];"},
   { "create type",
       "create a new user-defined base data type",
       "create type <typename> (\n\tinternallength = (<number> | variable),\n\t[externallength = (<number>|variable),]\n\tinput=<input_function>, output = <output_function>\n\t[,element = <typename>][,delimiter=<character>][,default=\'<string>\']\n\t[,send = <send_function>][,receive = <receive_function>][,passedbyvalue]);"},
index 34d57b7..cad6d01 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: tupdesc.h,v 1.5 1996/11/04 07:45:28 scrappy Exp $
+ * $Id: tupdesc.h,v 1.6 1997/08/19 04:45:20 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include <access/attnum.h>
 #include <catalog/pg_attribute.h>
 
+typedef struct attrConstr {
+/*------------------------------------------------------------------------
+  This structure contains flags to the constraints of a tuple
+  ------------------------------------------------------------------------*/
+  bool    has_not_null;
+} AttrConstr;
+
 typedef struct tupleDesc {
 /*------------------------------------------------------------------------ 
   This structure contains all the attribute information (i.e. from Class 
@@ -26,6 +33,7 @@ typedef struct tupleDesc {
       /* Number of attributes in the tuple */
     AttributeTupleForm *attrs;
       /* attrs[N] is a pointer to the description of Attribute Number N+1.  */
+    AttrConstr *constr;
 } *TupleDesc;
 
 extern TupleDesc CreateTemplateTupleDesc(int natts);
index 4af1525..a5fed2a 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_attribute.h,v 1.7 1997/01/14 01:41:46 momjian Exp $
+ * $Id: pg_attribute.h,v 1.8 1997/08/19 04:45:58 vadim Exp $
  *
  * NOTES
  *    the genbki.sh script reads this file and generates .bki
@@ -93,6 +93,8 @@ CATALOG(pg_attribute) BOOTSTRAP {
          attribute.  See atttypid above.  See struct TypeTupleFormData for
          definition.
          */
+    bool        attnotnull;
+      /* This flag represents the "NOT NULL" constraint */
 } FormData_pg_attribute;
 
 /*
@@ -100,7 +102,7 @@ CATALOG(pg_attribute) BOOTSTRAP {
  * the size of the C struct is not the same as the size of the tuple.)
  */
 #define ATTRIBUTE_TUPLE_SIZE \
-    (offsetof(FormData_pg_attribute,attalign) + sizeof(char))
+    (offsetof(FormData_pg_attribute,attnotnull) + sizeof(char))
 
 /* ----------------
  *     Form_pg_attribute corresponds to a pointer to a tuple with
@@ -114,7 +116,7 @@ typedef FormData_pg_attribute       *AttributeTupleForm;
  * ----------------
  */
 
-#define Natts_pg_attribute             16
+#define Natts_pg_attribute             17
 #define Anum_pg_attribute_attrelid     1
 #define Anum_pg_attribute_attname      2
 #define Anum_pg_attribute_atttypid     3
@@ -131,6 +133,7 @@ typedef FormData_pg_attribute       *AttributeTupleForm;
 #define Anum_pg_attribute_attcacheoff  14
 #define Anum_pg_attribute_attisset      15
 #define Anum_pg_attribute_attalign      16
+#define Anum_pg_attribute_attnotnull    17
 
 
 /* ----------------
@@ -158,342 +161,344 @@ typedef FormData_pg_attribute   *AttributeTupleForm;
  * ----------------
  */
 #define Schema_pg_type \
-{ 1247l, {"typname"},      19l, 0l, 0l, 0l, NAMEDATALEN,  1, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1247l, {"typowner"},     26l, 0l, 0l, 0l,  4,  2, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1247l, {"typlen"},       21l, 0l, 0l, 0l,  2,  3, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's' }, \
-{ 1247l, {"typprtlen"},    21l, 0l, 0l, 0l,  2,  4, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's' }, \
-{ 1247l, {"typbyval"},     16l, 0l, 0l, 0l,  1,  5, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1247l, {"typtype"},      18l, 0l, 0l, 0l,  1,  6, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1247l, {"typisdefined"}, 16l, 0l, 0l, 0l,  1,  7, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1247l, {"typdelim"},     18l, 0l, 0l, 0l,  1,  8, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1247l, {"typrelid"},     26l, 0l, 0l, 0l,  4,  9, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1247l, {"typelem"},      26l, 0l, 0l, 0l,  4, 10, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1247l, {"typinput"},     24l, 0l, 0l, 0l,  4, 11, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1247l, {"typoutput"},    24l, 0l, 0l, 0l,  4, 12, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1247l, {"typreceive"},   24l, 0l, 0l, 0l,  4, 13, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1247l, {"typsend"},      24l, 0l, 0l, 0l,  4, 14, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1247l, {"typalign"},     18l, 0l, 0l, 0l,  1, 15, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1247l, {"typdefault"},   25l, 0l, 0l, 0l, -1, 16, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i' }
+{ 1247l, {"typname"},      19l, 0l, 0l, 0l, NAMEDATALEN,  1, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1247l, {"typowner"},     26l, 0l, 0l, 0l,  4,  2, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1247l, {"typlen"},       21l, 0l, 0l, 0l,  2,  3, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's', '\0' }, \
+{ 1247l, {"typprtlen"},    21l, 0l, 0l, 0l,  2,  4, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's', '\0' }, \
+{ 1247l, {"typbyval"},     16l, 0l, 0l, 0l,  1,  5, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1247l, {"typtype"},      18l, 0l, 0l, 0l,  1,  6, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1247l, {"typisdefined"}, 16l, 0l, 0l, 0l,  1,  7, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1247l, {"typdelim"},     18l, 0l, 0l, 0l,  1,  8, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1247l, {"typrelid"},     26l, 0l, 0l, 0l,  4,  9, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1247l, {"typelem"},      26l, 0l, 0l, 0l,  4, 10, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1247l, {"typinput"},     24l, 0l, 0l, 0l,  4, 11, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1247l, {"typoutput"},    24l, 0l, 0l, 0l,  4, 12, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1247l, {"typreceive"},   24l, 0l, 0l, 0l,  4, 13, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1247l, {"typsend"},      24l, 0l, 0l, 0l,  4, 14, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1247l, {"typalign"},     18l, 0l, 0l, 0l,  1, 15, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1247l, {"typdefault"},   25l, 0l, 0l, 0l, -1, 16, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }
 
-DATA(insert OID = 0 ( 1247 typname          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 typowner         26 0 0 0  4   2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 typlen           21 0 0 0  2   3 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1247 typprtlen        21 0 0 0  2   4 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1247 typbyval         16 0 0 0  1   5 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1247 typtype          18 0 0 0  1   6 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1247 typisdefined     16 0 0 0  1   7 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1247 typdelim         18 0 0 0  1   8 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1247 typrelid         26 0 0 0  4   9 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 typelem          26 0 0 0  4  10 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 typinput         24 0 0 0  4  11 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 typoutput        24 0 0 0  4  12 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 typreceive       24 0 0 0  4  13 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 typsend          24 0 0 0  4  14 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 typalign         18 0 0 0  1  15 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1247 typdefault       25 0 0 0 -1  16 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1247 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1247 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1247 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c));
+DATA(insert OID = 0 ( 1247 typname          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 typowner         26 0 0 0  4   2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 typlen           21 0 0 0  2   3 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1247 typprtlen        21 0 0 0  2   4 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1247 typbyval         16 0 0 0  1   5 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1247 typtype          18 0 0 0  1   6 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1247 typisdefined     16 0 0 0  1   7 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1247 typdelim         18 0 0 0  1   8 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1247 typrelid         26 0 0 0  4   9 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 typelem          26 0 0 0  4  10 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 typinput         24 0 0 0  4  11 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 typoutput        24 0 0 0  4  12 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 typreceive       24 0 0 0  4  13 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 typsend          24 0 0 0  4  14 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 typalign         18 0 0 0  1  15 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1247 typdefault       25 0 0 0 -1  16 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1247 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1247 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1247 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c f));
 
 /* ----------------
  *     pg_database
  * ----------------
  */
-DATA(insert OID = 0 ( 1262 datname          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1262 datdba           26 0 0 0  4   2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1262 datpath          25 0 0 0 -1   3 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1262 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1262 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1262 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1262 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1262 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1262 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1262 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1262 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1262 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1262 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1262 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c));
+DATA(insert OID = 0 ( 1262 datname          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1262 datdba           26 0 0 0  4   2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1262 datpath          25 0 0 0 -1   3 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1262 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1262 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1262 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1262 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1262 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1262 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1262 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1262 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1262 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1262 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1262 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c f));
     
 /* ----------------
  *     pg_demon
  * ----------------
  */
-DATA(insert OID = 0 ( 1251 demserid         26 0 0 0  4   1 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1251 demname          19 0 0 0 NAMEDATALEN   2 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1251 demowner         26 0 0 0  4   3 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1251 demcode          24 0 0 0  4   4 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1251 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i));
+DATA(insert OID = 0 ( 1251 demserid         26 0 0 0  4   1 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1251 demname          19 0 0 0 NAMEDATALEN   2 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1251 demowner         26 0 0 0  4   3 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1251 demcode          24 0 0 0  4   4 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1251 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i f));
 
-DATA(insert OID = 0 ( 1251 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1251 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1251 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1251 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1251 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1251 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1251 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1251 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1251 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1251 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c));
+DATA(insert OID = 0 ( 1251 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1251 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1251 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1251 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1251 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1251 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1251 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1251 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1251 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1251 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c f));
     
 /* ----------------
  *     pg_proc
  * ----------------
  */
 #define Schema_pg_proc \
-{ 1255l, {"proname"},       19l, 0l, 0l, 0l, NAMEDATALEN,  1, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1255l, {"proowner"},      26l, 0l, 0l, 0l,  4,  2, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1255l, {"prolang"},       26l, 0l, 0l, 0l,  4,  3, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1255l, {"proisinh"},      16l, 0l, 0l, 0l,  1,  4, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1255l, {"proistrusted"},  16l, 0l, 0l, 0l,  1,  5, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1255l, {"proiscachable"}, 16l, 0l, 0l, 0l,  1,  6, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1255l, {"pronargs"},      21l, 0l, 0l, 0l,  2,  7, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's' }, \
-{ 1255l, {"proretset"},     16l, 0l, 0l, 0l,  1,  8, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1255l, {"prorettype"},    26l, 0l, 0l, 0l,  4,  9, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
+{ 1255l, {"proname"},       19l, 0l, 0l, 0l, NAMEDATALEN,  1, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1255l, {"proowner"},      26l, 0l, 0l, 0l,  4,  2, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1255l, {"prolang"},       26l, 0l, 0l, 0l,  4,  3, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1255l, {"proisinh"},      16l, 0l, 0l, 0l,  1,  4, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1255l, {"proistrusted"},  16l, 0l, 0l, 0l,  1,  5, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1255l, {"proiscachable"}, 16l, 0l, 0l, 0l,  1,  6, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1255l, {"pronargs"},      21l, 0l, 0l, 0l,  2,  7, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's', '\0' }, \
+{ 1255l, {"proretset"},     16l, 0l, 0l, 0l,  1,  8, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1255l, {"prorettype"},    26l, 0l, 0l, 0l,  4,  9, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
 { 1255l, {"proargtypes"},   30l, 0l, 0l, 0l, 32, 10, 0,   '\0', '\001', 0l, 0l, \
-      -1l, '\0', 'i' }, \
+      -1l, '\0', 'i', '\0' }, \
 { 1255l, {"probyte_pct"},   23l, 0l, 0l, 0l,  4, 11, 0, '\001', '\001', 0l, 0l, \
-      -1l, '\0', 'i' }, \
-{ 1255l, {"properbyte_cpu"},   23l, 0l, 0l, 0l,  4, 12, 0, '\001', '\001', 0l, 0l,      -1l, '\0', 'i' }, \
-{ 1255l, {"propercall_cpu"},   23l, 0l, 0l, 0l,  4, 13, 0, '\001', '\001', 0l, 0l,      -1l, '\0', 'i' }, \
-{ 1255l, {"prooutin_ratio"},   23l, 0l, 0l, 0l,  4, 14, 0, '\001', '\001', 0l, 0l,      -1l, '\0', 'i' }, \
-{ 1255l, {"prosrc"},        25l, 0l, 0l, 0l, -1,  15, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1255l, {"probin"},        17l, 0l, 0l, 0l, -1,  16, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i' }
+      -1l, '\0', 'i', '\0' }, \
+{ 1255l, {"properbyte_cpu"},   23l, 0l, 0l, 0l,  4, 12, 0, '\001', '\001', 0l, 0l,      -1l, '\0', 'i', '\0' }, \
+{ 1255l, {"propercall_cpu"},   23l, 0l, 0l, 0l,  4, 13, 0, '\001', '\001', 0l, 0l,      -1l, '\0', 'i', '\0' }, \
+{ 1255l, {"prooutin_ratio"},   23l, 0l, 0l, 0l,  4, 14, 0, '\001', '\001', 0l, 0l,      -1l, '\0', 'i', '\0' }, \
+{ 1255l, {"prosrc"},        25l, 0l, 0l, 0l, -1,  15, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1255l, {"probin"},        17l, 0l, 0l, 0l, -1,  16, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }
 
-DATA(insert OID = 0 ( 1255 proname          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 proowner         26 0 0 0  4   2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 prolang          26 0 0 0  4   3 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 proisinh         16 0 0 0  1   4 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1255 proistrusted     16 0 0 0  1   5 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1255 proiscachable    16 0 0 0  1   6 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1255 pronargs         21 0 0 0  2   7 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1255 proretset        16 0 0 0  1   8 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1255 prorettype       26 0 0 0  4   9 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 proargtypes      30 0 0 0 32  10 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 probyte_pct      23 0 0 0  4  11 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 properbyte_cpu   23 0 0 0  4  12 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 propercall_cpu   23 0 0 0  4  13 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 prooutin_ratio   23 0 0 0  4  14 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 prosrc           25 0 0 0 -1  15 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 probin           17 0 0 0 -1  16 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1255 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 cmax             29 0 0 0  2 -6 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1255 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1255 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c));
+DATA(insert OID = 0 ( 1255 proname          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 proowner         26 0 0 0  4   2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 prolang          26 0 0 0  4   3 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 proisinh         16 0 0 0  1   4 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1255 proistrusted     16 0 0 0  1   5 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1255 proiscachable    16 0 0 0  1   6 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1255 pronargs         21 0 0 0  2   7 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1255 proretset        16 0 0 0  1   8 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1255 prorettype       26 0 0 0  4   9 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 proargtypes      30 0 0 0 32  10 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 probyte_pct      23 0 0 0  4  11 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 properbyte_cpu   23 0 0 0  4  12 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 propercall_cpu   23 0 0 0  4  13 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 prooutin_ratio   23 0 0 0  4  14 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 prosrc           25 0 0 0 -1  15 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 probin           17 0 0 0 -1  16 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1255 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 cmax             29 0 0 0  2 -6 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1255 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1255 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c f));
     
 /* ----------------
  *     pg_server
  * ----------------
  */
-DATA(insert OID = 0 ( 1257 sername          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1257 serpid           21 0 0 0  2   2 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1257 serport          21 0 0 0  2   3 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1257 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1257 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1257 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1257 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1257 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1257 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1257 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1257 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1257 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1257 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1257 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c));
+DATA(insert OID = 0 ( 1257 sername          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1257 serpid           21 0 0 0  2   2 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1257 serport          21 0 0 0  2   3 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1257 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1257 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1257 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1257 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1257 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1257 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1257 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1257 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1257 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1257 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1257 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c f));
     
 /* ----------------
  *     pg_user
  * ----------------
  */
-DATA(insert OID = 0 ( 1260 usename          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1260 usesysid         23 0 0 0  4   2 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1260 usecreatedb      16 0 0 0  1   3 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1260 usetrace         16 0 0 0  1   4 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1260 usesuper         16 0 0 0  1   5 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1260 usecatupd        16 0 0 0  1   6 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1260 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1260 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1260 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1260 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1260 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1260 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1260 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1260 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1260 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1260 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1260 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c));
+DATA(insert OID = 0 ( 1260 usename          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1260 usesysid         23 0 0 0  4   2 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1260 usecreatedb      16 0 0 0  1   3 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1260 usetrace         16 0 0 0  1   4 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1260 usesuper         16 0 0 0  1   5 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1260 usecatupd        16 0 0 0  1   6 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1260 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1260 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1260 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1260 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1260 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1260 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1260 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1260 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1260 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1260 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1260 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c f));
 
 /* ----------------
  *     pg_group
  * ----------------
  */
-DATA(insert OID = 0 ( 1261 groname          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1261 grosysid         23 0 0 0  4   2 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1261 grolist        1007 0 0 0 -1   3 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1261 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1261 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1261 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1261 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1261 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1261 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1261 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1261 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1261 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1261 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1261 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c));
+DATA(insert OID = 0 ( 1261 groname          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1261 grosysid         23 0 0 0  4   2 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1261 grolist        1007 0 0 0 -1   3 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1261 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1261 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1261 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1261 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1261 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1261 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1261 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1261 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1261 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1261 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1261 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c f));
     
 /* ----------------
  *     pg_attribute
  * ----------------
  */
 #define Schema_pg_attribute \
-{ 1249l, {"attrelid"},    26l, 0l, 0l, 0l,  4,  1, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1249l, {"attname"},     19l, 0l, 0l, 0l, NAMEDATALEN,  2, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1249l, {"atttypid"},    26l, 0l, 0l, 0l,  4,  3, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1249l, {"attdefrel"},   26l, 0l, 0l, 0l,  4,  4, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1249l, {"attnvals"},    23l, 0l, 0l, 0l,  4,  5, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1249l, {"atttyparg"},   26l, 0l, 0l, 0l,  4,  6, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1249l, {"attlen"},      21l, 0l, 0l, 0l,  2,  7, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's' }, \
-{ 1249l, {"attnum"},      21l, 0l, 0l, 0l,  2,  8, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's' }, \
-{ 1249l, {"attbound"},    21l, 0l, 0l, 0l,  2,  9, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's' }, \
-{ 1249l, {"attbyval"},    16l, 0l, 0l, 0l,  1, 10, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1249l, {"attcanindex"}, 16l, 0l, 0l, 0l,  1, 11, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1249l, {"attproc"},     26l, 0l, 0l, 0l,  4, 12, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1249l, {"attnelems"},   23l, 0l, 0l, 0l,  4, 13, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1249l, {"attcacheoff"}, 23l, 0l, 0l, 0l,  4, 14, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1249l, {"attisset"},    16l, 0l, 0l, 0l,  1, 15, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1249l, {"attalign"},    18l, 0l, 0l, 0l,  1, 16, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }
+{ 1249l, {"attrelid"},    26l, 0l, 0l, 0l,  4,  1, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1249l, {"attname"},     19l, 0l, 0l, 0l, NAMEDATALEN,  2, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1249l, {"atttypid"},    26l, 0l, 0l, 0l,  4,  3, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1249l, {"attdefrel"},   26l, 0l, 0l, 0l,  4,  4, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1249l, {"attnvals"},    23l, 0l, 0l, 0l,  4,  5, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1249l, {"atttyparg"},   26l, 0l, 0l, 0l,  4,  6, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1249l, {"attlen"},      21l, 0l, 0l, 0l,  2,  7, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's', '\0' }, \
+{ 1249l, {"attnum"},      21l, 0l, 0l, 0l,  2,  8, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's', '\0' }, \
+{ 1249l, {"attbound"},    21l, 0l, 0l, 0l,  2,  9, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's', '\0' }, \
+{ 1249l, {"attbyval"},    16l, 0l, 0l, 0l,  1, 10, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1249l, {"attcanindex"}, 16l, 0l, 0l, 0l,  1, 11, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1249l, {"attproc"},     26l, 0l, 0l, 0l,  4, 12, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1249l, {"attnelems"},   23l, 0l, 0l, 0l,  4, 13, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1249l, {"attcacheoff"}, 23l, 0l, 0l, 0l,  4, 14, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1249l, {"attisset"},    16l, 0l, 0l, 0l,  1, 15, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1249l, {"attalign"},    18l, 0l, 0l, 0l,  1, 16, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 12491, {"attnotnull"},  16l, 0l, 0l, 0l,  1, 17, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }
 
-DATA(insert OID = 0 ( 1249 attrelid         26 0 0 0  4   1 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 attname          19 0 0 0 NAMEDATALEN   2 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 atttypid         26 0 0 0  4   3 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 attdefrel        26 0 0 0  4   4 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 attnvals         23 0 0 0  4   5 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 atttyparg        26 0 0 0  4   6 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 attlen           21 0 0 0  2   7 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1249 attnum           21 0 0 0  2   8 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1249 attbound         21 0 0 0  2   9 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1249 attbyval         16 0 0 0  1  10 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1249 attcanindex      16 0 0 0  1  11 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1249 attproc          26 0 0 0  4  12 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 attnelems        23 0 0 0  4  13 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 attcacheoff      23 0 0 0  4  14 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 attisset         16 0 0 0  1  15 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1249 attalign         18 0 0 0  1  16 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1249 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1249 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1249 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1249 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c));
+DATA(insert OID = 0 ( 1249 attrelid         26 0 0 0  4   1 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 attname          19 0 0 0 NAMEDATALEN   2 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 atttypid         26 0 0 0  4   3 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 attdefrel        26 0 0 0  4   4 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 attnvals         23 0 0 0  4   5 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 atttyparg        26 0 0 0  4   6 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 attlen           21 0 0 0  2   7 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1249 attnum           21 0 0 0  2   8 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1249 attbound         21 0 0 0  2   9 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1249 attbyval         16 0 0 0  1  10 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1249 attcanindex      16 0 0 0  1  11 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1249 attproc          26 0 0 0  4  12 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 attnelems        23 0 0 0  4  13 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 attcacheoff      23 0 0 0  4  14 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 attisset         16 0 0 0  1  15 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1249 attalign         18 0 0 0  1  16 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1249 attnotnull       16 0 0 0  1  17 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1249 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1249 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1249 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1249 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c f));
     
 /* ----------------
  *     pg_class
  * ----------------
  */
 #define Schema_pg_class \
-{ 1259l, {"relname"},      19l, 0l, 0l, 0l, NAMEDATALEN,  1, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1259l, {"reltype"},     26l, 0l, 0l, 0l,  4,  2, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1259l, {"relowner"},     26l, 0l, 0l, 0l,  4,  2, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1259l, {"relam"},        26l, 0l, 0l, 0l,  4,  3, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1259l, {"relpages"},     23,  0l, 0l, 0l,  4,  4, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1259l, {"reltuples"},    23,  0l, 0l, 0l,  4,  5, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1259l, {"relexpires"},   702,  0l, 0l, 0l,  4,  6, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1259l, {"relpreserved"}, 703,  0l, 0l, 0l,  4,  7, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1259l, {"relhasindex"},  16,  0l, 0l, 0l,  1,  8, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1259l, {"relisshared"},  16,  0l, 0l, 0l,  1,  9, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1259l, {"relkind"},      18,  0l, 0l, 0l,  1, 10, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1259l, {"relarch"},      18,  0l, 0l, 0l,  1, 11, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1259l, {"relnatts"},     21,  0l, 0l, 0l,  2, 12, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's' }, \
-{ 1259l, {"relsmgr"},      210l,  0l, 0l, 0l,  2, 13, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's' }, \
-{ 1259l, {"relkey"},       22,  0l, 0l, 0l, 16, 14, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1259l, {"relkeyop"},     30,  0l, 0l, 0l, 32, 15, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i' }, \
-{ 1259l, {"relhasrules"},  16,  0l, 0l, 0l,  1, 16, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c' }, \
-{ 1259l, {"relacl"},     1034l, 0l, 0l, 0l, -1, 17, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i' }
+{ 1259l, {"relname"},      19l, 0l, 0l, 0l, NAMEDATALEN,  1, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1259l, {"reltype"},     26l, 0l, 0l, 0l,  4,  2, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1259l, {"relowner"},     26l, 0l, 0l, 0l,  4,  2, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1259l, {"relam"},        26l, 0l, 0l, 0l,  4,  3, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1259l, {"relpages"},     23,  0l, 0l, 0l,  4,  4, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1259l, {"reltuples"},    23,  0l, 0l, 0l,  4,  5, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1259l, {"relexpires"},   702,  0l, 0l, 0l,  4,  6, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1259l, {"relpreserved"}, 703,  0l, 0l, 0l,  4,  7, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1259l, {"relhasindex"},  16,  0l, 0l, 0l,  1,  8, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1259l, {"relisshared"},  16,  0l, 0l, 0l,  1,  9, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1259l, {"relkind"},      18,  0l, 0l, 0l,  1, 10, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1259l, {"relarch"},      18,  0l, 0l, 0l,  1, 11, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1259l, {"relnatts"},     21,  0l, 0l, 0l,  2, 12, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's', '\0' }, \
+{ 1259l, {"relsmgr"},      210l,  0l, 0l, 0l,  2, 13, 0, '\001', '\001', 0l, 0l, -1l, '\0', 's', '\0' }, \
+{ 1259l, {"relkey"},       22,  0l, 0l, 0l, 16, 14, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1259l, {"relkeyop"},     30,  0l, 0l, 0l, 32, 15, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }, \
+{ 1259l, {"relhasrules"},  16,  0l, 0l, 0l,  1, 16, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'c', '\0' }, \
+{ 1259l, {"relacl"},     1034l, 0l, 0l, 0l, -1, 17, 0,   '\0', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }
 
-DATA(insert OID = 0 ( 1259 relname          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 reltype          26 0 0 0  4   2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 relowner         26 0 0 0  4   2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 relam            26 0 0 0  4   3 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 relpages         23 0 0 0  4   4 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 reltuples        23 0 0 0  4   5 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 relexpires      702 0 0 0  4   6 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 relpreserved    702 0 0 0  4   7 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 relhasindex      16 0 0 0  1   8 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1259 relisshared      16 0 0 0  1   9 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1259 relkind          18 0 0 0  1  10 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1259 relarch          18 0 0 0  1  11 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1259 relnatts         21 0 0 0  2  12 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1259 relsmgr         210 0 0 0  2  13 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1259 relkey           22 0 0 0 16  14 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 relkeyop         30 0 0 0 32  15 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 relhasrules      16 0 0 0  1  16 0 t t 0 0 -1 f c));
-DATA(insert OID = 0 ( 1259 relacl         1034 0 0 0 -1  17 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1259 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1259 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1259 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c));
+DATA(insert OID = 0 ( 1259 relname          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 reltype          26 0 0 0  4   2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 relowner         26 0 0 0  4   2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 relam            26 0 0 0  4   3 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 relpages         23 0 0 0  4   4 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 reltuples        23 0 0 0  4   5 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 relexpires      702 0 0 0  4   6 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 relpreserved    702 0 0 0  4   7 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 relhasindex      16 0 0 0  1   8 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1259 relisshared      16 0 0 0  1   9 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1259 relkind          18 0 0 0  1  10 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1259 relarch          18 0 0 0  1  11 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1259 relnatts         21 0 0 0  2  12 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1259 relsmgr         210 0 0 0  2  13 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1259 relkey           22 0 0 0 16  14 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 relkeyop         30 0 0 0 32  15 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 relhasrules      16 0 0 0  1  16 0 t t 0 0 -1 f c f));
+DATA(insert OID = 0 ( 1259 relacl         1034 0 0 0 -1  17 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1259 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1259 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1259 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c f));
     
 /* ----------------
  *     pg_magic
  * ----------------
  */
-DATA(insert OID = 0 ( 1253 magname          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1253 magvalue         19 0 0 0 NAMEDATALEN   2 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1253 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1253 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1253 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1253 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1253 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1253 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1253 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1253 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1253 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1253 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1253 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c));
+DATA(insert OID = 0 ( 1253 magname          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1253 magvalue         19 0 0 0 NAMEDATALEN   2 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1253 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1253 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1253 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1253 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1253 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1253 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1253 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1253 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1253 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1253 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1253 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c f));
     
 /* ----------------
  *     pg_defaults
  * ----------------
  */
-DATA(insert OID = 0 ( 1263 defname          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1263 defvalue         19 0 0 0 NAMEDATALEN   2 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1263 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1263 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1263 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1263 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1263 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1263 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s));
-DATA(insert OID = 0 ( 1263 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1263 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1263 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1263 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1263 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c));
+DATA(insert OID = 0 ( 1263 defname          19 0 0 0 NAMEDATALEN   1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1263 defvalue         19 0 0 0 NAMEDATALEN   2 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1263 ctid             27 0 0 0  6  -1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1263 oid              26 0 0 0  4  -2 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1263 xmin             28 0 0 0  4  -3 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1263 cmin             29 0 0 0  2  -4 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1263 xmax             28 0 0 0  4  -5 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1263 cmax             29 0 0 0  2  -6 0 t t 0 0 -1 f s f));
+DATA(insert OID = 0 ( 1263 chain            27 0 0 0  6  -7 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1263 anchor           27 0 0 0  6  -8 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1263 tmax            702 0 0 0  4  -9 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1263 tmin            702 0 0 0  4 -10 0 t t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1263 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c f));
     
 
 /* ----------------
@@ -502,9 +507,9 @@ DATA(insert OID = 0 ( 1263 vtype            18 0 0 0  1 -11 0 t t 0 0 -1 f c));
  *               
  * ----------------
  */
-DATA(insert OID = 0 ( 1273 dbName           19 0 0 0  NAMEDATALEN   1 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1273 address           25 0 0 0  -1   2 0 f t 0 0 -1 f i));
-DATA(insert OID = 0 ( 1273 mask           25 0 0 0  -1   3 0 f t 0 0 -1 f i));
+DATA(insert OID = 0 ( 1273 dbName           19 0 0 0  NAMEDATALEN   1 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1273 address           25 0 0 0  -1   2 0 f t 0 0 -1 f i f));
+DATA(insert OID = 0 ( 1273 mask           25 0 0 0  -1   3 0 f t 0 0 -1 f i f));
 
 /* ----------------
  *     pg_variable - this relation is modified by special purpose access
@@ -513,9 +518,9 @@ DATA(insert OID = 0 ( 1273 mask           25 0 0 0  -1   3 0 f t 0 0 -1 f i));
  * ----------------
  */
 #define Schema_pg_variable \
-{ 1264l, {"varfoo"},  26l, 0l, 0l, 0l, 4, 1, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }
+{ 1264l, {"varfoo"},  26l, 0l, 0l, 0l, 4, 1, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }
     
-DATA(insert OID = 0 ( 1264 varfoo           26 0 0 0  4   1 0 t t 0 0 -1 f i));
+DATA(insert OID = 0 ( 1264 varfoo           26 0 0 0  4   1 0 t t 0 0 -1 f i f));
     
 /* ----------------
  *     pg_log - this relation is modified by special purpose access
@@ -524,9 +529,9 @@ DATA(insert OID = 0 ( 1264 varfoo           26 0 0 0  4   1 0 t t 0 0 -1 f i));
  * ----------------
  */
 #define Schema_pg_log \
-{ 1269l, {"logfoo"},  26l, 0l, 0l, 0l, 4, 1, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }
+{ 1269l, {"logfoo"},  26l, 0l, 0l, 0l, 4, 1, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }
 
-DATA(insert OID = 0 ( 1269 logfoo           26 0 0 0  4   1 0 t t 0 0 -1 f i));
+DATA(insert OID = 0 ( 1269 logfoo           26 0 0 0  4   1 0 t t 0 0 -1 f i f));
     
 /* ----------------
  *     pg_time - this relation is modified by special purpose access
@@ -535,8 +540,8 @@ DATA(insert OID = 0 ( 1269 logfoo           26 0 0 0  4   1 0 t t 0 0 -1 f i));
  * ----------------
  */
 #define Schema_pg_time \
-{ 1271l, {"timefoo"},  26l, 0l, 0l, 0l, 4, 1, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i' }
+{ 1271l, {"timefoo"},  26l, 0l, 0l, 0l, 4, 1, 0, '\001', '\001', 0l, 0l, -1l, '\0', 'i', '\0' }
 
-DATA(insert OID = 0 (  1271 timefoo         26 0 0 0  4   1 0 t t 0 0 -1 f i));
+DATA(insert OID = 0 (  1271 timefoo         26 0 0 0  4   1 0 t t 0 0 -1 f i f));
     
 #endif /* PG_ATTRIBUTE_H */
index 288434c..b58baa7 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: parsenodes.h,v 1.16 1997/05/22 00:16:13 scrappy Exp $
+ * $Id: parsenodes.h,v 1.17 1997/08/19 04:46:15 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -607,6 +607,7 @@ typedef struct ColumnDef {
     NodeTag            type;
     char               *colname;       /* name of column */
     TypeName           *typename;      /* type of column */
+    bool                is_not_null;    /* flag to NOT NULL constraint */
 } ColumnDef;
 
 /*