From: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
---|---|
To: | Lee Kindness <lkindness(at)csl(dot)co(dot)uk> |
Cc: | pgsql-hackers(at)postgresql(dot)org, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Subject: | Re: Library Versions (was: PQnotifies() in 7.3 broken?) |
Date: | 2002-12-14 19:45:44 |
Message-ID: | 200212141945.gBEJjin07211@candle.pha.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
I have added this info too.
---------------------------------------------------------------------------
Lee Kindness wrote:
> Guys,
>
> Some further comments on bumbing the major version number which aren't
> so cut-n-dry...
>
> Lee Kindness writes:
> > The major version number should be updated whenever the source of the
> > library changes to make it binary incompatible. Such changes include,
> > but limited to:
> >
> > 1. Removing a public function or structure (or typedef, enum, ...)
> >
> > 2. Modifying a public functions arguments.
> >
> > 3. Removing a field from a public structure.
> >
> > 3. Adding a field to a public structure, unless steps have been
> > previously taken to shield users from such a change, for example by
> > such structures only ever being allocated/instantiated by a library
> > function which would give the new field a suitable default value.
>
> For #2 steps could be taken to maintain binary compatibility across
> minor PostgreSQL releases (e.g. the 7.2 series, the 7.3 series, the
> 7.4/8.0 series). Consider the following function
>
> void print_stuff(int arg1, int arg2)
> {
> printf("stuff: %d %d\n", arg1, arg2);
> }
>
> If we wanted to add a third argument:
>
> void print_stuff(int arg1, int arg2, int arg3)
> {
> printf("stuff: %d %d %d\n", arg1, arg2, arg3);
> }
>
> Then doing it like this:
>
> void print_stuff2(int arg1, int arg2, int arg3)
> {
> printf("stuff: %d %d %d\n", arg1, arg2, arg3);
> }
>
> void print_stuff(int arg1, int arg2)
> {
> print_stuff(arg1, arg2, 0);
> }
>
> would maintain binary compatibility. Obviously this would add a fair
> bit of cruft if used extensively, but considering the changes between
> minor versions would probably be worthwhile to avoid bumping library
> major version. Naturally in the next major version print_stuff() would
> assume the functionality and arguments of print_stuff2().
>
> Lee.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>
--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2002-12-14 19:47:55 | Re: PQnotifies() in 7.3 broken? |
Previous Message | Bruce Momjian | 2002-12-14 19:45:16 | Re: Library Versions (was: PQnotifies() in 7.3 broken?) |