Mario González Troncoso escribió:

> Si funciona para 16.1, va a seguir funcionando para todas las 16.X que
> vengan. Aun mas, *podria* funcionar en las siguientes (Incluso
> anteriores) si es que las bibliotecas de libpq por ejemplo que estés
> usando mantengan la misma funcionalidad o no hayan cambiado el
> "signature" en las funciones. A medida de que tu extensión no se
> actualice a versiones futuras, digamos v18 o mayor, menor va a ser la
> certeza de que vaya a funcionar. En esos casos, IMO siempre es mejor
> volver a compilar y/o tener versiones para diferentes ramas.

No realmente -- entre cambios de versiones mayores, siempre tienes que
recompilar.  Esto es porque Postgres verifica que cada módulo que carga
tenga un bloque PG_MODULE_MAGIC, el cual incluye un número de versión
mayor; y se verifica que ese número de la biblioteca coincida con la
versión del servidor.

Es cierto que la recompilación puede ser limpia (es decir no necesitar
ningún cambio).

Sobre la pregunta de Daymel.  La ABI dentro de versiones *menores* se
trata de mantener lo más posible, y si bien todavía no tenemos
herramientas que lo verifiquen automáticamente, los committers son
muy cuidadosos en no introducir cambios, y cada vez hay más revisión de
que ese requisito se cumpla.  Por ejemplo en vez de cambiar la signatura
de funciones existentes, se prefiere agregar funciones adicionales
cuando ese necesario tener más argumentos o distintos; si hay que
agregar miembros a structs, se hace al final; si los structs se usan en
arrays no se pueden agregar miembros al final, se agregan structs
separados para lo que sea que necesites; los valores de los enums no se
reenumeran; y cosas así.

Como el PG_MODULE_MAGIC protege de que un módulo compilado para una
versión mayor anterior no funcione con una versión mayor nueva, todos
esos cambios se pueden hacer con tranquilidad en la rama master.

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/
 Are you not unsure you want to delete Firefox?
       [Not unsure]     [Not not unsure]    [Cancel]
                   http://smylers.hates-software.com/2008/01/03/566e45b2.html


Reply via email to