binary migration: pg_migrator
authorBruce Momjian
Sat, 19 Dec 2009 00:47:57 +0000 (00:47 +0000)
committerBruce Momjian
Sat, 19 Dec 2009 00:47:57 +0000 (00:47 +0000)
Add comments about places where system oids have to be preserved for
binary migration.

src/backend/catalog/pg_enum.c
src/backend/commands/typecmds.c
src/backend/utils/adt/arrayfuncs.c
src/backend/utils/adt/enum.c
src/backend/utils/adt/rowtypes.c

index c6cb004b14e1dcc1e8306763ce10e0bae6a8929d..ee075d94c84b130c23dd303ebe3819e2ee0ce33e 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/catalog/pg_enum.c,v 1.9 2009/01/01 17:23:37 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/catalog/pg_enum.c,v 1.10 2009/12/19 00:47:57 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -67,6 +67,10 @@ EnumValuesCreate(Oid enumTypeOid, List *vals)
    oids = (Oid *) palloc(n * sizeof(Oid));
    for (i = 0; i < n; i++)
    {
+       /*
+        *  The pg_enum.oid is stored in user tables.  This oid must be
+        *  preserved by binary upgrades.
+        */
        oids[i] = GetNewOid(pg_enum);
    }
 
index 54d8220cb37a59d241879aad0b20de63542e6333..a11825c8a912581fbce23686ddd5a6fab7365731 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/commands/typecmds.c,v 1.139 2009/12/07 05:22:21 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/commands/typecmds.c,v 1.140 2009/12/19 00:47:57 momjian Exp $
  *
  * DESCRIPTION
  *   The "DefineFoo" routines take the parse tree and pick out the
@@ -531,6 +531,12 @@ DefineType(List *names, List *parameters)
     * now have TypeCreate do all the real work.
     */
    typoid =
+       /*
+        *  The pg_type.oid is stored in user tables as array elements
+        *  (base types) in ArrayType and in composite types in
+        *  DatumTupleFields.  This oid must be preserved by binary
+        *  upgrades.
+        */
        TypeCreate(InvalidOid,  /* no predetermined type OID */
                   typeName,    /* type name */
                   typeNamespace,       /* namespace */
index e76734edd507d1a60331e0e949095286b5045ac3..b7033d4b1c43155dc0c909f7919fc439d3953415 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.161 2009/09/04 11:20:22 heikki Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.162 2009/12/19 00:47:57 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -328,6 +328,11 @@ array_in(PG_FUNCTION_ARGS)
    SET_VARSIZE(retval, nbytes);
    retval->ndim = ndim;
    retval->dataoffset = dataoffset;
+   /*
+    *  This comes from the array's pg_type.typelem (which points to the
+    *  base data type's pg_type.oid) and stores system oids in user tables.
+    *  This oid must be preserved by binary upgrades.
+    */
    retval->elemtype = element_type;
    memcpy(ARR_DIMS(retval), dim, ndim * sizeof(int));
    memcpy(ARR_LBOUND(retval), lBound, ndim * sizeof(int));
index 009c6c3f924721fb2034e3755571c10f516549d4..388057222179b74efe01cebb3400700f8ded2530 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/adt/enum.c,v 1.7 2009/01/01 17:23:49 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/adt/enum.c,v 1.8 2009/12/19 00:47:57 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -56,6 +56,10 @@ enum_in(PG_FUNCTION_ARGS)
                        format_type_be(enumtypoid),
                        name)));
 
+   /*
+    *  This comes from pg_enum.oid and stores system oids in user tables.
+    *  This oid must be preserved by binary upgrades.
+    */
    enumoid = HeapTupleGetOid(tup);
 
    ReleaseSysCache(tup);
index 9ea8a2d80fadb25501b9f878d5758626e579803a..e86e6426034d1a2212b90aa73286afa0ee310628 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/adt/rowtypes.c,v 1.25 2009/06/11 14:49:04 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/adt/rowtypes.c,v 1.26 2009/12/19 00:47:57 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -97,6 +97,11 @@ record_in(PG_FUNCTION_ARGS)
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
           errmsg("input of anonymous composite types is not implemented")));
    tupTypmod = -1;             /* for all non-anonymous types */
+   /*
+    *  This comes from the composite type's pg_type.oid and
+    *  stores system oids in user tables, specifically DatumTupleFields.
+    *  This oid must be preserved by binary upgrades.
+    */
    tupdesc = lookup_rowtype_tupdesc(tupType, tupTypmod);
    ncolumns = tupdesc->natts;