"David E. Wheeler" <da...@kineticode.com> writes:
> On Feb 2, 2011, at 6:45 AM, Dimitri Fontaine wrote:
>
>> Well, you write 3 scripts.
>> 
>> Let's consider an example, the lo contrib, with its 3 objects:
>> 
>>  CREATE DOMAIN lo AS pg_catalog.oid;
>>  CREATE OR REPLACE FUNCTION lo_oid(lo) …
>>  CREATE OR REPLACE FUNCTION lo_manage() …
>> 
>> Now, the upgrade script from version NULL to 1.0 is
>> 
>>  alter domain @extschema@.lo set extension lo;
>>  alter function @extschema@.lo_oid(lo) set extension lo;
>>  alter function @extschema@.lo_manage() set extension lo;
>> 
>> The upgrade script from version 1.0 to 2.0 is, let's say:
>> 
>>  CREATE OR REPLACE FUNCTION @extschema@.lo_newfunc() …
>> 
>> So the upgrade script from version NULL to 2.0 is:
>> 
>>  alter domain @extschema@.lo set extension lo;
>>  alter function @extschema@.lo_oid(lo) set extension lo;
>>  alter function @extschema@.lo_manage() set extension lo;
>>  CREATE OR REPLACE FUNCTION @extschema@.lo_newfunc() …
>> 
>> If as an extension author you're kind enough to provide all those 3
>> scripts and the upgrade setup in the control file, then the user can
>> issue ALTER EXTENSION lo UPGRADE; and have all your cases covered
>> automatically.
>
> As an extension author, I can't emphasize enough how much I hate the 
> redundancy of this approach.

Well, fair enough I suppose.  Or it would be if you gave me an
alternative that provides a simpler way to support those 3 upgrades.

Of course if that's too much for you, you can also choose to only
support upgrades one versions at a time and provide only two scripts.
Note also that I don't recall of any proposal on the table that would
help with that situation, so I'm all ears.

Regards.
-- 
Dimitri Fontaine
http://2ndQuadrant.fr     PostgreSQL : Expertise, Formation et Support

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

Reply via email to