Re: Removing pg_migrator limitations

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Bruce Momjian <bruce@momjian.us>
Cc: Andrew Dunstan <andrew@dunslane.net>, PostgreSQL-development <pgsql-hackers@postgresql.org>, Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: 2009-12-19T01:31:20Z
Lists: pgsql-hackers
Bruce Momjian <bruce@momjian.us> writes:
> ... The idea I had was to create a global structure:

> 	struct pg_migrator_oids {
> 		Oid	pg_type;
> 		Oid	pg_type_array;
> 		...
> 	}

> This would initialize to zero as a global structure, and only
> pg_migrator server-side functions set it.

I would prefer *not* to do that, as that makes the list of settable oids
far more public than I would like; also you are totally dependent on
pg_migrator and the backend to be in sync about the definition of that
struct, which is going to be problematic in alpha releases in
particular, since PG_VERSION isn't going to distinguish them.

What I had in mind was more like

	static Oid next_pg_class_oid = InvalidOid;

	void
	set_next_pg_class_oid(Oid oid)
	{
		next_pg_class_oid = oid;
	}

in each module that needs to be able to accept a next-oid setting,
and then the pg_migrator loadable module would expose SQL-callable
wrappers for these functions.  That way, any inconsistency shows up as
a link error: function needed not present.

			regards, tom lane