Re: [ADMIN] Schema comparisons

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Mark Lubratt <mark(dot)lubratt(at)indeq(dot)com>
Cc: pgsql-hackers(at)postgreSQL(dot)org
Subject: Re: [ADMIN] Schema comparisons
Date: 2004-02-28 15:39:40
Message-ID: 27965.1077982780@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin pgsql-hackers

Mark Lubratt <mark(dot)lubratt(at)indeq(dot)com> writes:
> On Feb 27, 2004, at 10:28 PM, Tom Lane wrote:
>> Mark Lubratt <mark(dot)lubratt(at)indeq(dot)com> writes:
>>> I've been trying to be careful, but I've gotten out of synch with
>>> whether or not I've applied the changes I've made to the development
>>> system to the production system. Is there a utility that will compare
>>> the tables, functions, trigger, views, etc. between two systems and
>>> flag the schema elements that aren't in synch between the two?
>>
>> Have you tried diffing pg_dump output? It's not the greatest tool but
>> it's helpful.

> Yes, I did. It was quite cumbersome. Especially since the OIDs and
> TOC entry numbers didn't matchup; and, since those didn't always match,
> the order of objects wasn't quite the same either. So, diff was
> throwing a lot of false positives at me.

Yeah. CVS-tip pg_dump doesn't show OIDs by default, to make it easier
to use for purposes like this. The ordering issue is the bigger problem
though. I presume that the object creation history is different in the
two databases and so pg_dump's habit of sorting by OID isn't helpful.

It occurs to me that this could be solved now that we have
dependency-driven ordering in pg_dump. The ordering algorithm is
presently
* Order by object type, and by OID within types;
* Move objects as needed to honor dependencies.
Ordering by OID should no longer be needed for correctness, because
the second phase will take care of any dependency problems. We
could instead make the initial sort be by object name (within types).
This should ensure that the schema output is identical for logically
equivalent databases, even if their history is different.

(When dumping from a pre-7.3 database, we'd have to stick to the OID
algorithm for lack of dependency info, but of course that case is
getting less interesting as time wears on.)

Comments? Anyone see a reason not to do this?

regards, tom lane

In response to

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message Michael Brusser 2004-02-28 17:58:26 Re: [ADMIN] Schema comparisons
Previous Message Gaetano Mendola 2004-02-28 12:32:34 Re: ALTER table taking ages...

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2004-02-28 15:52:46 Re: cvs lock
Previous Message strk 2004-02-28 15:22:36 cvs: mislinked plpgsql.so ?