I wrote:
> I've successfully done check-world after renumbering every OID above
> 4000 to somewhere else.  I also tried renumbering everything below
> 4000, which unsurprisingly blew up because there are various catalog
> columns we haven't fixed to use symbolic OIDs.  (The one that initdb
> immediately trips over is pg_database.dattablespace.)  I'm not sure
> if it's worth the trouble to make that totally clean, but I suspect
> we ought to at least mop up text-search references to be symbolic.
> That's material for a separate patch though.

So I couldn't resist poking at that, and after a couple hours' work
I have the attached patch, which removes all remaining hard-wired
OID references in the .dat files.

Using this, I renumbered all the OIDs in include/catalog, and behold
things pretty much worked.  I got through check-world after hacking
up these points:

* Unsurprisingly, there are lots of regression tests that have object
OIDs hard-wired in queries and/or expected output.

* initdb.c has a couple of places that know that template1 has OID 1.

* information_schema.sql has several SQL-language functions that
hard-wire the OIDs of assorted built-in types.

I'm not particularly fussed about the first two points, but the
last is a bit worrisome.  It's not too hard to imagine somebody
adding knowledge of their new type to those functions, and the
code getting broken by a renumbering pass, and us not noticing
if the point isn't stressed by a regression test (which mostly
those functions aren't).

We could imagine fixing those functions along the lines of

   CASE WHEN $2 = -1 /* default typmod */
        THEN null
-       WHEN $1 IN (1042, 1043) /* char, varchar */
+       WHEN $1 IN ('pg_catalog.bpchar'::pg_catalog.regtype,
+                   'pg_catalog.varchar'::pg_catalog.regtype)
        THEN $2 - 4

which would add some parsing overhead, but I'm not sure if anyone
would notice that.

                        regards, tom lane

diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 10c2b24..ce159ae 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -174,6 +174,20 @@ foreach my $row (@{ $catalog_data{pg_am} })
 	$amoids{ $row->{amname} } = $row->{oid};
 }
 
+# class (relation) OID lookup (note this only covers bootstrap catalogs!)
+my %classoids;
+foreach my $row (@{ $catalog_data{pg_class} })
+{
+	$classoids{ $row->{relname} } = $row->{oid};
+}
+
+# collation OID lookup
+my %collationoids;
+foreach my $row (@{ $catalog_data{pg_collation} })
+{
+	$collationoids{ $row->{collname} } = $row->{oid};
+}
+
 # language OID lookup
 my %langoids;
 foreach my $row (@{ $catalog_data{pg_language} })
@@ -243,6 +257,41 @@ foreach my $row (@{ $catalog_data{pg_proc} })
 	}
 }
 
+# tablespace OID lookup
+my %tablespaceoids;
+foreach my $row (@{ $catalog_data{pg_tablespace} })
+{
+	$tablespaceoids{ $row->{spcname} } = $row->{oid};
+}
+
+# text search configuration OID lookup
+my %tsconfigoids;
+foreach my $row (@{ $catalog_data{pg_ts_config} })
+{
+	$tsconfigoids{ $row->{cfgname} } = $row->{oid};
+}
+
+# text search dictionary OID lookup
+my %tsdictoids;
+foreach my $row (@{ $catalog_data{pg_ts_dict} })
+{
+	$tsdictoids{ $row->{dictname} } = $row->{oid};
+}
+
+# text search parser OID lookup
+my %tsparseroids;
+foreach my $row (@{ $catalog_data{pg_ts_parser} })
+{
+	$tsparseroids{ $row->{prsname} } = $row->{oid};
+}
+
+# text search template OID lookup
+my %tstemplateoids;
+foreach my $row (@{ $catalog_data{pg_ts_template} })
+{
+	$tstemplateoids{ $row->{tmplname} } = $row->{oid};
+}
+
 # type lookups
 my %typeoids;
 my %types;
@@ -287,14 +336,21 @@ close $ef;
 
 # Map lookup name to the corresponding hash table.
 my %lookup_kind = (
-	pg_am       => \%amoids,
-	pg_language => \%langoids,
-	pg_opclass  => \%opcoids,
-	pg_operator => \%operoids,
-	pg_opfamily => \%opfoids,
-	pg_proc     => \%procoids,
-	pg_type     => \%typeoids,
-	encoding    => \%encids);
+	pg_am          => \%amoids,
+	pg_class       => \%classoids,
+	pg_collation   => \%collationoids,
+	pg_language    => \%langoids,
+	pg_opclass     => \%opcoids,
+	pg_operator    => \%operoids,
+	pg_opfamily    => \%opfoids,
+	pg_proc        => \%procoids,
+	pg_tablespace  => \%tablespaceoids,
+	pg_ts_config   => \%tsconfigoids,
+	pg_ts_dict     => \%tsdictoids,
+	pg_ts_parser   => \%tsparseroids,
+	pg_ts_template => \%tstemplateoids,
+	pg_type        => \%typeoids,
+	encoding       => \%encids);
 
 
 # Open temp files
@@ -730,8 +786,8 @@ sub morph_row_for_pgattr
 	$row->{attndims} = $type->{typcategory} eq 'A' ? '1' : '0';
 
 	# collation-aware catalog columns must use C collation
-	$row->{attcollation} = $type->{typcollation} != 0 ?
-	    $C_COLLATION_OID : 0;
+	$row->{attcollation} =
+	  $type->{typcollation} ne '0' ? $C_COLLATION_OID : 0;
 
 	if (defined $attr->{forcenotnull})
 	{
diff --git a/src/include/catalog/pg_class.dat b/src/include/catalog/pg_class.dat
index 5a1f3aa..511d876 100644
--- a/src/include/catalog/pg_class.dat
+++ b/src/include/catalog/pg_class.dat
@@ -21,48 +21,44 @@
 # similarly, "1" in relminmxid stands for FirstMultiXactId
 
 { oid => '1247',
-  relname => 'pg_type', relnamespace => 'PGNSP', reltype => '71',
-  reloftype => '0', relowner => 'PGUID', relam => 'PGHEAPAM',
-  relfilenode => '0', reltablespace => '0', relpages => '0', reltuples => '0',
-  relallvisible => '0', reltoastrelid => '0', relhasindex => 'f',
-  relisshared => 'f', relpersistence => 'p', relkind => 'r', relnatts => '31',
-  relchecks => '0', relhasrules => 'f', relhastriggers => 'f',
-  relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f',
-  relispopulated => 't', relreplident => 'n', relispartition => 'f',
-  relrewrite => '0', relfrozenxid => '3', relminmxid => '1', relacl => '_null_',
+  relname => 'pg_type', reltype => 'pg_type', relam => 'PGHEAPAM',
+  relfilenode => '0', relpages => '0', reltuples => '0', relallvisible => '0',
+  reltoastrelid => '0', relhasindex => 'f', relisshared => 'f',
+  relpersistence => 'p', relkind => 'r', relnatts => '31', relchecks => '0',
+  relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f',
+  relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't',
+  relreplident => 'n', relispartition => 'f', relrewrite => '0',
+  relfrozenxid => '3', relminmxid => '1', relacl => '_null_',
   reloptions => '_null_', relpartbound => '_null_' },
 { oid => '1249',
-  relname => 'pg_attribute', relnamespace => 'PGNSP', reltype => '75',
-  reloftype => '0', relowner => 'PGUID', relam => 'PGHEAPAM',
-  relfilenode => '0', reltablespace => '0', relpages => '0', reltuples => '0',
-  relallvisible => '0', reltoastrelid => '0', relhasindex => 'f',
-  relisshared => 'f', relpersistence => 'p', relkind => 'r', relnatts => '24',
-  relchecks => '0', relhasrules => 'f', relhastriggers => 'f',
-  relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f',
-  relispopulated => 't', relreplident => 'n', relispartition => 'f',
-  relrewrite => '0', relfrozenxid => '3', relminmxid => '1', relacl => '_null_',
+  relname => 'pg_attribute', reltype => 'pg_attribute', relam => 'PGHEAPAM',
+  relfilenode => '0', relpages => '0', reltuples => '0', relallvisible => '0',
+  reltoastrelid => '0', relhasindex => 'f', relisshared => 'f',
+  relpersistence => 'p', relkind => 'r', relnatts => '24', relchecks => '0',
+  relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f',
+  relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't',
+  relreplident => 'n', relispartition => 'f', relrewrite => '0',
+  relfrozenxid => '3', relminmxid => '1', relacl => '_null_',
   reloptions => '_null_', relpartbound => '_null_' },
 { oid => '1255',
-  relname => 'pg_proc', relnamespace => 'PGNSP', reltype => '81',
-  reloftype => '0', relowner => 'PGUID', relam => 'PGHEAPAM',
-  relfilenode => '0', reltablespace => '0', relpages => '0', reltuples => '0',
-  relallvisible => '0', reltoastrelid => '0', relhasindex => 'f',
-  relisshared => 'f', relpersistence => 'p', relkind => 'r', relnatts => '29',
-  relchecks => '0', relhasrules => 'f', relhastriggers => 'f',
-  relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f',
-  relispopulated => 't', relreplident => 'n', relispartition => 'f',
-  relrewrite => '0', relfrozenxid => '3', relminmxid => '1', relacl => '_null_',
+  relname => 'pg_proc', reltype => 'pg_proc', relam => 'PGHEAPAM',
+  relfilenode => '0', relpages => '0', reltuples => '0', relallvisible => '0',
+  reltoastrelid => '0', relhasindex => 'f', relisshared => 'f',
+  relpersistence => 'p', relkind => 'r', relnatts => '29', relchecks => '0',
+  relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f',
+  relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't',
+  relreplident => 'n', relispartition => 'f', relrewrite => '0',
+  relfrozenxid => '3', relminmxid => '1', relacl => '_null_',
   reloptions => '_null_', relpartbound => '_null_' },
 { oid => '1259',
-  relname => 'pg_class', relnamespace => 'PGNSP', reltype => '83',
-  reloftype => '0', relowner => 'PGUID', relam => 'PGHEAPAM',
-  relfilenode => '0', reltablespace => '0', relpages => '0', reltuples => '0',
-  relallvisible => '0', reltoastrelid => '0', relhasindex => 'f',
-  relisshared => 'f', relpersistence => 'p', relkind => 'r', relnatts => '33',
-  relchecks => '0', relhasrules => 'f', relhastriggers => 'f',
-  relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f',
-  relispopulated => 't', relreplident => 'n', relispartition => 'f',
-  relrewrite => '0', relfrozenxid => '3', relminmxid => '1', relacl => '_null_',
+  relname => 'pg_class', reltype => 'pg_class', relam => 'PGHEAPAM',
+  relfilenode => '0', relpages => '0', reltuples => '0', relallvisible => '0',
+  reltoastrelid => '0', relhasindex => 'f', relisshared => 'f',
+  relpersistence => 'p', relkind => 'r', relnatts => '33', relchecks => '0',
+  relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f',
+  relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't',
+  relreplident => 'n', relispartition => 'f', relrewrite => '0',
+  relfrozenxid => '3', relminmxid => '1', relacl => '_null_',
   reloptions => '_null_', relpartbound => '_null_' },
 
 ]
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index ad698c9..d88703d 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -28,56 +28,113 @@
  */
 CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,RelationRelation_Rowtype_Id) BKI_SCHEMA_MACRO
 {
-	Oid			oid;			/* oid */
-	NameData	relname;		/* class name */
-	Oid			relnamespace;	/* OID of namespace containing this class */
-	Oid			reltype;		/* OID of entry in pg_type for table's
-								 * implicit row type */
-	Oid			reloftype;		/* OID of entry in pg_type for underlying
-								 * composite type */
-	Oid			relowner;		/* class owner */
-	Oid			relam;			/* access method; 0 if not a table / index */
-	Oid			relfilenode;	/* identifier of physical storage file */
+	/* oid */
+	Oid			oid;
 
+	/* class name */
+	NameData	relname;
+
+	/* OID of namespace containing this class */
+	Oid			relnamespace BKI_DEFAULT(PGNSP);
+
+	/* OID of entry in pg_type for table's implicit row type */
+	Oid			reltype BKI_LOOKUP(pg_type);
+
+	/* OID of entry in pg_type for underlying composite type */
+	Oid			reloftype BKI_DEFAULT(0) BKI_LOOKUP(pg_type);
+
+	/* class owner */
+	Oid			relowner BKI_DEFAULT(PGUID);
+
+	/* access method; 0 if not a table / index */
+	Oid			relam;
+
+	/* identifier of physical storage file */
 	/* relfilenode == 0 means it is a "mapped" relation, see relmapper.c */
-	Oid			reltablespace;	/* identifier of table space for relation */
-	int32		relpages;		/* # of blocks (not always up-to-date) */
-	float4		reltuples;		/* # of tuples (not always up-to-date) */
-	int32		relallvisible;	/* # of all-visible blocks (not always
-								 * up-to-date) */
-	Oid			reltoastrelid;	/* OID of toast table; 0 if none */
-	bool		relhasindex;	/* T if has (or has had) any indexes */
-	bool		relisshared;	/* T if shared across databases */
-	char		relpersistence; /* see RELPERSISTENCE_xxx constants below */
-	char		relkind;		/* see RELKIND_xxx constants below */
-	int16		relnatts;		/* number of user attributes */
+	Oid			relfilenode;
+
+	/* identifier of table space for relation (0 means default for database) */
+	Oid			reltablespace BKI_DEFAULT(0) BKI_LOOKUP(pg_tablespace);
+
+	/* # of blocks (not always up-to-date) */
+	int32		relpages;
+
+	/* # of tuples (not always up-to-date) */
+	float4		reltuples;
+
+	/* # of all-visible blocks (not always up-to-date) */
+	int32		relallvisible;
+
+	/* OID of toast table; 0 if none */
+	Oid			reltoastrelid;
+
+	/* T if has (or has had) any indexes */
+	bool		relhasindex;
+
+	/* T if shared across databases */
+	bool		relisshared;
+
+	/* see RELPERSISTENCE_xxx constants below */
+	char		relpersistence;
+
+	/* see RELKIND_xxx constants below */
+	char		relkind;
+
+	/* number of user attributes */
+	int16		relnatts;
 
 	/*
 	 * Class pg_attribute must contain exactly "relnatts" user attributes
 	 * (with attnums ranging from 1 to relnatts) for this class.  It may also
 	 * contain entries with negative attnums for system attributes.
 	 */
-	int16		relchecks;		/* # of CHECK constraints for class */
-	bool		relhasrules;	/* has (or has had) any rules */
-	bool		relhastriggers; /* has (or has had) any TRIGGERs */
-	bool		relhassubclass; /* has (or has had) child tables or indexes */
-	bool		relrowsecurity; /* row security is enabled or not */
-	bool		relforcerowsecurity;	/* row security forced for owners or
-										 * not */
-	bool		relispopulated; /* matview currently holds query results */
-	char		relreplident;	/* see REPLICA_IDENTITY_xxx constants  */
-	bool		relispartition; /* is relation a partition? */
-	Oid			relrewrite;		/* heap for rewrite during DDL, link to
-								 * original rel */
-	TransactionId relfrozenxid; /* all Xids < this are frozen in this rel */
-	TransactionId relminmxid;	/* all multixacts in this rel are >= this.
-								 * this is really a MultiXactId */
+
+	/* # of CHECK constraints for class */
+	int16		relchecks;
+
+	/* has (or has had) any rules */
+	bool		relhasrules;
+
+	/* has (or has had) any TRIGGERs */
+	bool		relhastriggers;
+
+	/* has (or has had) child tables or indexes */
+	bool		relhassubclass;
+
+	/* row security is enabled or not */
+	bool		relrowsecurity;
+
+	/* row security forced for owners or not */
+	bool		relforcerowsecurity;
+
+	/* matview currently holds query results */
+	bool		relispopulated;
+
+	/* see REPLICA_IDENTITY_xxx constants */
+	char		relreplident;
+
+	/* is relation a partition? */
+	bool		relispartition;
+
+	/* heap for rewrite during DDL, link to original rel */
+	Oid			relrewrite;
+
+	/* all Xids < this are frozen in this rel */
+	TransactionId relfrozenxid;
+
+	/* all multixacts in this rel are >= this; it is really a MultiXactId */
+	TransactionId relminmxid;
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
 	/* NOTE: These fields are not present in a relcache entry's rd_rel field. */
-	aclitem		relacl[1];		/* access permissions */
-	text		reloptions[1];	/* access-method-specific options */
-	pg_node_tree relpartbound;	/* partition bound node tree */
+	/* access permissions */
+	aclitem		relacl[1];
+
+	/* access-method-specific options */
+	text		reloptions[1];
+
+	/* partition bound node tree */
+	pg_node_tree relpartbound;
 #endif
 } FormData_pg_class;
 
diff --git a/src/include/catalog/pg_database.dat b/src/include/catalog/pg_database.dat
index cbd91bc..89bd75d 100644
--- a/src/include/catalog/pg_database.dat
+++ b/src/include/catalog/pg_database.dat
@@ -14,10 +14,9 @@
 
 { oid => '1', oid_symbol => 'TemplateDbOid',
   descr => 'default template for new databases',
-  datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING',
-  datcollate => 'LC_COLLATE', datctype => 'LC_CTYPE', datistemplate => 't',
-  datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0',
-  datfrozenxid => '0', datminmxid => '1', dattablespace => '1663',
-  datacl => '_null_' },
+  datname => 'template1', encoding => 'ENCODING', datcollate => 'LC_COLLATE',
+  datctype => 'LC_CTYPE', datistemplate => 't', datallowconn => 't',
+  datconnlimit => '-1', datlastsysoid => '0', datfrozenxid => '0',
+  datminmxid => '1', dattablespace => 'pg_default', datacl => '_null_' },
 
 ]
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index 63e8efa..06fea45 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -28,22 +28,48 @@
  */
 CATALOG(pg_database,1262,DatabaseRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248,DatabaseRelation_Rowtype_Id) BKI_SCHEMA_MACRO
 {
-	Oid			oid;			/* oid */
-	NameData	datname;		/* database name */
-	Oid			datdba;			/* owner of database */
-	int32		encoding;		/* character encoding */
-	NameData	datcollate;		/* LC_COLLATE setting */
-	NameData	datctype;		/* LC_CTYPE setting */
-	bool		datistemplate;	/* allowed as CREATE DATABASE template? */
-	bool		datallowconn;	/* new connections allowed? */
-	int32		datconnlimit;	/* max connections allowed (-1=no limit) */
-	Oid			datlastsysoid;	/* highest OID to consider a system OID */
-	TransactionId datfrozenxid; /* all Xids < this are frozen in this DB */
-	TransactionId datminmxid;	/* all multixacts in the DB are >= this */
-	Oid			dattablespace;	/* default table space for this DB */
+	/* oid */
+	Oid			oid;
+
+	/* database name */
+	NameData	datname;
+
+	/* owner of database */
+	Oid			datdba BKI_DEFAULT(PGUID);
+
+	/* character encoding */
+	int32		encoding;
+
+	/* LC_COLLATE setting */
+	NameData	datcollate;
+
+	/* LC_CTYPE setting */
+	NameData	datctype;
+
+	/* allowed as CREATE DATABASE template? */
+	bool		datistemplate;
+
+	/* new connections allowed? */
+	bool		datallowconn;
+
+	/* max connections allowed (-1=no limit) */
+	int32		datconnlimit;
+
+	/* highest OID to consider a system OID */
+	Oid			datlastsysoid;
+
+	/* all Xids < this are frozen in this DB */
+	TransactionId datfrozenxid;
+
+	/* all multixacts in the DB are >= this */
+	TransactionId datminmxid;
+
+	/* default table space for this DB */
+	Oid			dattablespace BKI_LOOKUP(pg_tablespace);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
-	aclitem		datacl[1];		/* access permissions */
+	/* access permissions */
+	aclitem		datacl[1];
 #endif
 } FormData_pg_database;
 
diff --git a/src/include/catalog/pg_ts_config.dat b/src/include/catalog/pg_ts_config.dat
index 47d2342..bddaa81 100644
--- a/src/include/catalog/pg_ts_config.dat
+++ b/src/include/catalog/pg_ts_config.dat
@@ -13,7 +13,6 @@
 [
 
 { oid => '3748', descr => 'simple configuration',
-  cfgname => 'simple', cfgnamespace => 'PGNSP', cfgowner => 'PGUID',
-  cfgparser => '3722' },
+  cfgname => 'simple', cfgparser => 'default' },
 
 ]
diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h
index 4531c3e..7ab97a8 100644
--- a/src/include/catalog/pg_ts_config.h
+++ b/src/include/catalog/pg_ts_config.h
@@ -29,11 +29,20 @@
  */
 CATALOG(pg_ts_config,3602,TSConfigRelationId)
 {
-	Oid			oid;			/* oid */
-	NameData	cfgname;		/* name of configuration */
-	Oid			cfgnamespace;	/* name space */
-	Oid			cfgowner;		/* owner */
-	Oid			cfgparser;		/* OID of parser (in pg_ts_parser) */
+	/* oid */
+	Oid			oid;
+
+	/* name of configuration */
+	NameData	cfgname;
+
+	/* name space */
+	Oid			cfgnamespace BKI_DEFAULT(PGNSP);
+
+	/* owner */
+	Oid			cfgowner BKI_DEFAULT(PGUID);
+
+	/* OID of parser */
+	Oid			cfgparser BKI_LOOKUP(pg_ts_parser);
 } FormData_pg_ts_config;
 
 typedef FormData_pg_ts_config *Form_pg_ts_config;
diff --git a/src/include/catalog/pg_ts_config_map.dat b/src/include/catalog/pg_ts_config_map.dat
index 3ce4e16..43a8bd4 100644
--- a/src/include/catalog/pg_ts_config_map.dat
+++ b/src/include/catalog/pg_ts_config_map.dat
@@ -12,24 +12,43 @@
 
 [
 
-{ mapcfg => '3748', maptokentype => '1', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '2', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '3', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '4', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '5', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '6', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '7', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '8', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '9', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '10', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '11', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '15', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '16', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '17', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '18', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '19', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '20', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '21', mapseqno => '1', mapdict => '3765' },
-{ mapcfg => '3748', maptokentype => '22', mapseqno => '1', mapdict => '3765' },
+{ mapcfg => 'simple', maptokentype => '1', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '2', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '3', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '4', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '5', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '6', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '7', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '8', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '9', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '10', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '11', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '15', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '16', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '17', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '18', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '19', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '20', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '21', mapseqno => '1',
+  mapdict => 'simple' },
+{ mapcfg => 'simple', maptokentype => '22', mapseqno => '1',
+  mapdict => 'simple' },
 
 ]
diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h
index dd2de48..7892e17 100644
--- a/src/include/catalog/pg_ts_config_map.h
+++ b/src/include/catalog/pg_ts_config_map.h
@@ -29,10 +29,17 @@
  */
 CATALOG(pg_ts_config_map,3603,TSConfigMapRelationId)
 {
-	Oid			mapcfg;			/* OID of configuration owning this entry */
-	int32		maptokentype;	/* token type from parser */
-	int32		mapseqno;		/* order in which to consult dictionaries */
-	Oid			mapdict;		/* dictionary to consult */
+	/* OID of configuration owning this entry */
+	Oid			mapcfg BKI_LOOKUP(pg_ts_config);
+
+	/* token type from parser */
+	int32		maptokentype;
+
+	/* order in which to consult dictionaries */
+	int32		mapseqno;
+
+	/* dictionary to consult */
+	Oid			mapdict BKI_LOOKUP(pg_ts_dict);
 } FormData_pg_ts_config_map;
 
 typedef FormData_pg_ts_config_map *Form_pg_ts_config_map;
diff --git a/src/include/catalog/pg_ts_dict.dat b/src/include/catalog/pg_ts_dict.dat
index cda413a..f9d50da 100644
--- a/src/include/catalog/pg_ts_dict.dat
+++ b/src/include/catalog/pg_ts_dict.dat
@@ -14,7 +14,6 @@
 
 { oid => '3765',
   descr => 'simple dictionary: just lower case and check for stopword',
-  dictname => 'simple', dictnamespace => 'PGNSP', dictowner => 'PGUID',
-  dicttemplate => '3727', dictinitoption => '_null_' },
+  dictname => 'simple', dicttemplate => 'simple', dictinitoption => '_null_' },
 
 ]
diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h
index b77c422..be7f016 100644
--- a/src/include/catalog/pg_ts_dict.h
+++ b/src/include/catalog/pg_ts_dict.h
@@ -28,14 +28,24 @@
  */
 CATALOG(pg_ts_dict,3600,TSDictionaryRelationId)
 {
-	Oid			oid;			/* oid */
-	NameData	dictname;		/* dictionary name */
-	Oid			dictnamespace;	/* name space */
-	Oid			dictowner;		/* owner */
-	Oid			dicttemplate;	/* dictionary's template */
+	/* oid */
+	Oid			oid;
+
+	/* dictionary name */
+	NameData	dictname;
+
+	/* name space */
+	Oid			dictnamespace BKI_DEFAULT(PGNSP);
+
+	/* owner */
+	Oid			dictowner BKI_DEFAULT(PGUID);
+
+	/* dictionary's template */
+	Oid			dicttemplate BKI_LOOKUP(pg_ts_template);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
-	text		dictinitoption; /* options passed to dict_init() */
+	/* options passed to dict_init() */
+	text		dictinitoption;
 #endif
 } FormData_pg_ts_dict;
 
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
index d129583..2495ed6 100644
--- a/src/include/catalog/pg_type.dat
+++ b/src/include/catalog/pg_type.dat
@@ -54,7 +54,7 @@
   typname => 'name', typlen => 'NAMEDATALEN', typbyval => 'f',
   typcategory => 'S', typelem => 'char', typinput => 'namein',
   typoutput => 'nameout', typreceive => 'namerecv', typsend => 'namesend',
-  typalign => 'c', typcollation => '950' },
+  typalign => 'c', typcollation => 'C' },
 { oid => '20', array_type_oid => '1016',
   descr => '~18 digit integer, 8-byte storage',
   typname => 'int8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL',
@@ -85,7 +85,7 @@
   typname => 'text', typlen => '-1', typbyval => 'f', typcategory => 'S',
   typispreferred => 't', typinput => 'textin', typoutput => 'textout',
   typreceive => 'textrecv', typsend => 'textsend', typalign => 'i',
-  typstorage => 'x', typcollation => '100' },
+  typstorage => 'x', typcollation => 'default' },
 { oid => '26', array_type_oid => '1028',
   descr => 'object identifier(oid), maximum 4 billion',
   typname => 'oid', typlen => '4', typbyval => 't', typcategory => 'N',
@@ -115,22 +115,22 @@
 # NB: OIDs assigned here must match the BKI_ROWTYPE_OID declarations
 { oid => '71',
   typname => 'pg_type', typlen => '-1', typbyval => 'f', typtype => 'c',
-  typcategory => 'C', typrelid => '1247', typinput => 'record_in',
+  typcategory => 'C', typrelid => 'pg_type', typinput => 'record_in',
   typoutput => 'record_out', typreceive => 'record_recv',
   typsend => 'record_send', typalign => 'd', typstorage => 'x' },
 { oid => '75',
   typname => 'pg_attribute', typlen => '-1', typbyval => 'f', typtype => 'c',
-  typcategory => 'C', typrelid => '1249', typinput => 'record_in',
+  typcategory => 'C', typrelid => 'pg_attribute', typinput => 'record_in',
   typoutput => 'record_out', typreceive => 'record_recv',
   typsend => 'record_send', typalign => 'd', typstorage => 'x' },
 { oid => '81',
   typname => 'pg_proc', typlen => '-1', typbyval => 'f', typtype => 'c',
-  typcategory => 'C', typrelid => '1255', typinput => 'record_in',
+  typcategory => 'C', typrelid => 'pg_proc', typinput => 'record_in',
   typoutput => 'record_out', typreceive => 'record_recv',
   typsend => 'record_send', typalign => 'd', typstorage => 'x' },
 { oid => '83',
   typname => 'pg_class', typlen => '-1', typbyval => 'f', typtype => 'c',
-  typcategory => 'C', typrelid => '1259', typinput => 'record_in',
+  typcategory => 'C', typrelid => 'pg_class', typinput => 'record_in',
   typoutput => 'record_out', typreceive => 'record_recv',
   typsend => 'record_send', typalign => 'd', typstorage => 'x' },
 
@@ -150,21 +150,21 @@
   typcategory => 'S', typinput => 'pg_node_tree_in',
   typoutput => 'pg_node_tree_out', typreceive => 'pg_node_tree_recv',
   typsend => 'pg_node_tree_send', typalign => 'i', typstorage => 'x',
-  typcollation => '100' },
+  typcollation => 'default' },
 { oid => '3361', oid_symbol => 'PGNDISTINCTOID',
   descr => 'multivariate ndistinct coefficients',
   typname => 'pg_ndistinct', typlen => '-1', typbyval => 'f',
   typcategory => 'S', typinput => 'pg_ndistinct_in',
   typoutput => 'pg_ndistinct_out', typreceive => 'pg_ndistinct_recv',
   typsend => 'pg_ndistinct_send', typalign => 'i', typstorage => 'x',
-  typcollation => '100' },
+  typcollation => 'default' },
 { oid => '3402', oid_symbol => 'PGDEPENDENCIESOID',
   descr => 'multivariate dependencies',
   typname => 'pg_dependencies', typlen => '-1', typbyval => 'f',
   typcategory => 'S', typinput => 'pg_dependencies_in',
   typoutput => 'pg_dependencies_out', typreceive => 'pg_dependencies_recv',
   typsend => 'pg_dependencies_send', typalign => 'i', typstorage => 'x',
-  typcollation => '100' },
+  typcollation => 'default' },
 { oid => '32', oid_symbol => 'PGDDLCOMMANDOID',
   descr => 'internal type for passing CollectedCommand',
   typname => 'pg_ddl_command', typlen => 'SIZEOF_POINTER', typbyval => 't',
@@ -269,14 +269,14 @@
   typinput => 'bpcharin', typoutput => 'bpcharout', typreceive => 'bpcharrecv',
   typsend => 'bpcharsend', typmodin => 'bpchartypmodin',
   typmodout => 'bpchartypmodout', typalign => 'i', typstorage => 'x',
-  typcollation => '100' },
+  typcollation => 'default' },
 { oid => '1043', array_type_oid => '1015',
   descr => 'varchar(length), non-blank-padded string, variable storage length',
   typname => 'varchar', typlen => '-1', typbyval => 'f', typcategory => 'S',
   typinput => 'varcharin', typoutput => 'varcharout',
   typreceive => 'varcharrecv', typsend => 'varcharsend',
   typmodin => 'varchartypmodin', typmodout => 'varchartypmodout',
-  typalign => 'i', typstorage => 'x', typcollation => '100' },
+  typalign => 'i', typstorage => 'x', typcollation => 'default' },
 { oid => '1082', array_type_oid => '1182', descr => 'date',
   typname => 'date', typlen => '4', typbyval => 't', typcategory => 'D',
   typinput => 'date_in', typoutput => 'date_out', typreceive => 'date_recv',
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 24d114b..4a24739 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -99,7 +99,7 @@ CATALOG(pg_type,1247,TypeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71,TypeRelati
 	char		typdelim BKI_DEFAULT(',');
 
 	/* associated pg_class OID if a composite type, else 0 */
-	Oid			typrelid BKI_DEFAULT(0) BKI_ARRAY_DEFAULT(0);
+	Oid			typrelid BKI_DEFAULT(0) BKI_ARRAY_DEFAULT(0) BKI_LOOKUP(pg_class);
 
 	/*
 	 * If typelem is not 0 then it identifies another row in pg_type. The
@@ -215,7 +215,7 @@ CATALOG(pg_type,1247,TypeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71,TypeRelati
 	 * DEFAULT_COLLATION_OID) for collatable base types, possibly some other
 	 * OID for domains over collatable types
 	 */
-	Oid			typcollation BKI_DEFAULT(0);
+	Oid			typcollation BKI_DEFAULT(0) BKI_LOOKUP(pg_collation);
 
 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
 

Reply via email to