Обсуждение: plain text difference with pg_dump

Поиск
Список
Период
Сортировка

plain text difference with pg_dump

От
"Sabin Coanda"
Дата:
Hi there,

I have two databases DD and DP. DD is used for development, and DP in
production.
After develop something on DD, a diff package is made and it upgrades DP.
Normally after that DD has to be identically with DP.

The problem is when I check the structure difference between DD and DP. My
procedure is to use pg_dump to make a plain text dump of the two databases,
and compare them, ignoring the comments. All the procedures are sorted
identically, excepting those with the same name, but different arguments.

Do you know a method to get the same text dump ?

TIA,
Sabin



Re: plain text difference with pg_dump

От
Tom Lane
Дата:
"Sabin Coanda" <sabin.coanda@deuromedia.ro> writes:
> The problem is when I check the structure difference between DD and DP. My
> procedure is to use pg_dump to make a plain text dump of the two databases,
> and compare them, ignoring the comments. All the procedures are sorted
> identically, excepting those with the same name, but different arguments.

> Do you know a method to get the same text dump ?

Yeah, this has been complained about before.  The problem is that
pg_dump's DOTypeNameCompare() function sorts only by object name,
and if the names are the same then by object OID (which typically
boils down to being the creation order).  Ideally we should get it
to consider more data, such as the argument lists for similarly-named
functions, before falling back on OID order.

If you're not up to hacking a fix for that, you could try dropping
the functions and re-creating them in the same order on both machines,
so that the OID sort produces similar results.

            regards, tom lane

Re: plain text difference with pg_dump

От
"Marc Mamin"
Дата:
Hello,


A long time ago I started to write a procedure to retrive a signature of
all objects of a given type for a similar purpose.
Depending on what kind of objects you want to check this may be a - very
ugly and complicate - solution.
In my case I was only interested in the object definition, not the data.


here my old code for the procs....

select 'pg_proc' ||'|'||
proowner ||'|'||
proname ||'|'||
prolang ||'|'||
case when proisagg =true then 'y' else 'n' end ||'|'||
case when prosecdef =true then 'y' else 'n' end ||'|'||
case when proisstrict =true then 'y' else 'n' end ||'|'||
case when proretset =true then 'y' else 'n' end ||'|'||
provolatile ||'|'||
pronargs ||'|'||
prorettype ||'|'||
to_querystring(proargtypes) ||'|'||
to_querystring(proargmodes) ||'|'||
to_querystring(proargnames) ||'|'
AS CHECKSTRING
from pg_proc
order by CHECKSTRING

Marc Mamin












-----Original Message-----
From: pgsql-admin-owner@postgresql.org
[mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Sabin Coanda
Sent: Thursday, March 26, 2009 3:54 PM
To: pgsql-admin@postgresql.org
Subject: [ADMIN] plain text difference with pg_dump

Hi there,

I have two databases DD and DP. DD is used for development, and DP in
production.
After develop something on DD, a diff package is made and it upgrades
DP.
Normally after that DD has to be identically with DP.

The problem is when I check the structure difference between DD and DP.
My procedure is to use pg_dump to make a plain text dump of the two
databases, and compare them, ignoring the comments. All the procedures
are sorted identically, excepting those with the same name, but
different arguments.

Do you know a method to get the same text dump ?

TIA,
Sabin



--
Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org) To make
changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin