Обсуждение: Prettification versus dump safety
In testing the TRIGGER WHEN patch, I notice that pg_dump is relying on
pg_get_triggerdef(triggeroid, true) (ie, "pretty" mode) to dump
triggers. This means that trigger WHEN conditions will be dumped
without adequate parenthesization to ensure they are interpreted the
same way when loaded into future PG versions. That's not acceptable.
The easy ways out of this are
(1) change pg_dump to not prettify trigger definitions at all, or
(2) change pg_get_triggerdef from the submitted patch so that it
doesn't reduce parenthesization even in "pretty" mode.
Or somebody could bite the bullet and decouple formatting from
parenthesization decisions in ruleutils.c. That's not going to be
me, though.
Comments, preferences?
regards, tom lane
-----BEGIN PGP SIGNED MESSAGE----- Hash: RIPEMD160 > (1) change pg_dump to not prettify trigger definitions at all, or > (2) change pg_get_triggerdef from the submitted patch so that it > doesn't reduce parenthesization even in "pretty" mode. > > Or somebody could bite the bullet and decouple formatting from > parenthesization decisions in ruleutils.c. That's not going to be > me, though. > > Comments, preferences? Apply (2), and add the decoupling to the official todo list. - -- Greg Sabino Mullane greg@turnstep.com PGP Key: 0x14964AC8 200911201315 http://biglumber.com/x/web?pk=2529DF6AB8F79407E94445B4BC9B906714964AC8 -----BEGIN PGP SIGNATURE----- iEYEAREDAAYFAksG3NEACgkQvJuQZxSWSsiIjgCg1u1oZqXGsM/ToBYH6OCBMcDt yXUAoK8xquH56UerP6AQl7bVxhMhPyyH =yuZ4 -----END PGP SIGNATURE-----
Tom Lane wrote: > In testing the TRIGGER WHEN patch, I notice that pg_dump is relying on > pg_get_triggerdef(triggeroid, true) (ie, "pretty" mode) to dump > triggers. This means that trigger WHEN conditions will be dumped > without adequate parenthesization to ensure they are interpreted the > same way when loaded into future PG versions. That's not acceptable. > > The easy ways out of this are > (1) change pg_dump to not prettify trigger definitions at all, or > (2) change pg_get_triggerdef from the submitted patch so that it > doesn't reduce parenthesization even in "pretty" mode. > The pretty option was explicitely never intended for pg_dump use. When pg_dump is used to create a future version proof dump, it shouldn't use the pretty option, when used to create some schema scripts for exernal editing it may be enabled. I propose to invent a cmd line option for that (maybe as "prettified plain text" output format). Regards, Andreas
Andreas Pflug <pgadmin@pse-consulting.de> writes:
> Tom Lane wrote:
>> The easy ways out of this are
>> (1) change pg_dump to not prettify trigger definitions at all, or
>> (2) change pg_get_triggerdef from the submitted patch so that it
>> doesn't reduce parenthesization even in "pretty" mode.
>>
> The pretty option was explicitely never intended for pg_dump use.
Yeah. I went with (1) because it's something we can undo in future
on the pg_dump side. The alternative is to immortalize an arbitrary
deviation of pg_get_triggerdef's pretty-fying behavior compared to
every other ruleutils.c function.
regards, tom lane