On Feb 2, 2011, at 10:04 AM, Dimitri Fontaine wrote:
> "David E. Wheeler" <david@kineticode.com> writes:
>> They are identical except for the extra line in the second one. If I
>> had, say 15 different versions of an extension, then I'd have 15
>> upgrade scripts. That's fine. But in your plan, the script to upgrade
>> from version 1 to version 15 would have all the same code as the v14
>> script, plus any additional. The v14 script would have everything in
>> v13. v13 would have everything in v12. With no support for the
>> equivalent of psql's \i, that's extremely redundant and a huge PITA to
>> maintain. Hence my hate.
>
> That's easy enough to manage in your Makefile, really:
>
> upgrade.null-v15.sql: upgrade.v14.sql upgrade.v15.sql
> cat upgrade.v14.sql upgrade.v15.sql > $@
Sure, if you know Make really well. But then I need to add a line to the Makefile for every bloody upgrade script.
Gross.
> There's a difference between what you maintain and what you ship.
Yes.
>> My proposal would also have 15 upgrade scripts, but each one would
>> only upgrade from the previous one. So to upgrade from v1 to v15,
>> UPGRADE EXTENSION would run all of them. So v15 would only need to
>> have deltas from v14. V14 would need only deltas from v13. Etc.
>
> What if you can reuse the later script for upgrading from any previous
> version, like when the extension only contains CREATE OR REPLACE
> statements (functions only extension, like adminpack).
I don't understand the question.
> I don't see benefits in your proposal.
The benefit is reduced redundancy.
> It all comes down to the benefits. I don't see any in your proposal.
> That might be just me though.
Could be.
Best,
David