Re: Library Versions (was: PQnotifies() in 7.3 broken?)

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: Library Versions (was: PQnotifies() in 7.3 broken?)
Дата
Msg-id 200212141945.gBEJjin07211@candle.pha.pa.us
обсуждение исходный текст
Ответ на Library Versions (was: PQnotifies() in 7.3 broken?)  (Lee Kindness <lkindness@csl.co.uk>)
Список 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@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: Library Versions (was: PQnotifies() in 7.3 broken?)
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: PQnotifies() in 7.3 broken?