Re: Dump dello schema dall’interno di psql

Lists: Postg토토 사이트SQL : Postg토토
From: Giorgio Valoti <giorgio_v(at)mac(dot)com>
To: pgsql-it-generale <pgsql-it-generale(at)postgresql(dot)org>
Subject: Dump dello schema dall’interno di psql
Date: 2009-01-15 08:09:11
Message-ID: 9DCEBEE9-A75E-4AF1-B0F1-9966BDE7A0DB@mac.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-it-generale

Ciao a tutti,
stavo cercando di capire se esiste un modo per invocare il dump da
psql e credo di averlo trovato: basta invocare il comando con
"\! ...." senza quoting né escaping. Fin qui tutto bene.

Le cose si complicano se prima di effettuare il dump ci sono degli
statement che modificano lo schema:

begin;
alter table ...;
...
\! pgdump...
\q
rollback;

In quel caso il dump non termina, presumibilmente perché rimane in
attesa del rilascio del lock delle operazioni di DDL. La cosa corretta
sarebbe poter eseguire il dump all’interno della stessa transazione,
credo, ma non ho trovato nulla al riguardo.

In pratica quello che vorrei ottenere è questo. Dopo aver modificato
lo schema del database, lo vorrei dumpare e confrontare con un altro
schema di riferimento; se tutto è a posto farò poi il commit
manualmente.

Suggerimenti?

Grazie
--
Giorgio Valoti


From: rotellaro(at)gmail(dot)com
To: pgsql-it-generale(at)postgresql(dot)org
Subject: Re: Dump dello schema dall’interno di psql
Date: 2009-01-15 10:37:37
Message-ID: a3e8e2210901150237u7f88adfh4d7273cf0a564e94@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: Postg토토 사이트SQL : Postg토토

On Thu, Jan 15, 2009 at 9:09 AM, Giorgio Valoti <giorgio_v(at)mac(dot)com> wrote:
> Ciao a tutti,
> stavo cercando di capire se esiste un modo per invocare il dump da psql e
> credo di averlo trovato: basta invocare il comando con "\! ...." senza
> quoting né escaping. Fin qui tutto bene.
>
> Le cose si complicano se prima di effettuare il dump ci sono degli statement
> che modificano lo schema:
>
> begin;
> alter table ...;
> ...
> \! pgdump...
> \q
> rollback;
>
> In quel caso il dump non termina, presumibilmente perché rimane in attesa
> del rilascio del lock delle operazioni di DDL. La cosa corretta sarebbe
> poter eseguire il dump all'interno della stessa transazione, credo, ma non
> ho trovato nulla al riguardo.
>
> In pratica quello che vorrei ottenere è questo. Dopo aver modificato lo
> schema del database, lo vorrei dumpare e confrontare con un altro schema di
> riferimento; se tutto è a posto farò poi il commit manualmente.
>

Il problema non e' aggirabile in quanto il pg_dump per garantire lo
snapshot consistente della base dati opera un

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

Quindi di fatto anche se tu impostassi un livello di isolamento piu'
permissivo lo vedresti annullato dal successivo comando pg_dump .

Ciao
Federico

--
Rotellaro & Sgargatubo - CBR 600 F '95
/*******************************
Consigliere spirituale per elefanti depressi
"dal terminale arrow e' uscita la quinta sinfonia di beethoven"
http://www.rotellaro.com
*******************************/