Neil Conway wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > Couldn't we use SET only when we need to change the existing value?
>
> I'm not sure what you mean. The pg_dump output will look like:
>
> -- at the top of the dump
> SET default_with_oids = false; -- or true, doesn't really matter
>
> -- for a table that doesn't have OIDs
> CREATE TABLE (...);
>
> -- for a table that does have OIDs
> SET default_with_oids = true;
> CREATE TABLE (...);
> SET default_with_oids = false;
>
> The point is that in this example if all the tables in the DB have
> OIDs, you'll emit two SETs for each CREATE TABLE, so what you'd really
> like is to have chosen a different default to begin with.
>
> Anyway, it's just an implementation detail: I'll definitely implement
> it one way or another in time for 7.5 (unless someone else would like
> to do it, in which case I'd gladly step aside).
I assume we would _remember_ the current with_oids value inside pg_dump.
For example, if I create two tables as user 'guest', I see in pg_dump
output:
SET SESSION AUTHORIZATION 'guest';
--
-- Name: g1; Type: TABLE; Schema: public; Owner: guest
--
CREATE TABLE g1 (
x integer
) WITH OIDS;
--
-- Name: g2; Type: TABLE; Schema: public; Owner: guest
--
CREATE TABLE g2 (
x integer
) WITH OIDS;
SET SESSION AUTHORIZATION 'postgres';
Notice that only one SESSION AUTHORIZATION is used for guest. Can't we
do the same for WITH/WITHOUT OIDS?
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073