Blog

Noticias, PostgreSQL

Lanzamiento de PostgreSQL 16.4, 15.8, 14.13, 13.16, 12.20, y 17 Beta 3

El Grupo Global de Desarrollo de PostgreSQL ha lanzado una actualización para todas las versiones soportadas de PostgreSQL, entre ellas la 16.4, 15.8, 14.13, 13.16, y 12.20, así como la tercera versión beta de PostgreSQL 17. Esta versión corrige una vulnerabilidad de seguridad y más de 55 errores reportados en los últimos meses.

Para ver la lista completa de cambios, revisen las notas de la versión.

Aviso de EOL para PostgreSQL 12

PostgreSQL 12 dejará de recibir correcciones el 14 de noviembre de 2024. Si están ejecutando PostgreSQL 12 en un entorno de producción, les sugerimos que hagan planes para actualizar a una versión más reciente y soportada de PostgreSQL. Para más información, consulten nuestra política de versiones.

Problemas de seguridad

CVE-2024-7348: La sustitución de relaciones PostgreSQL durante un pg_dump permite ejecutar SQL arbitrario

Puntuación base CVSS v3.1: 8.8

Versiones soportadas vulnerables: 14 – 16.

Un atacante capaz de crear y eliminar objetos no temporales podría inyectar código SQL que sería ejecutado por una sesión de pg_dump concurrente y con privilegios del rol que ejecuta pg_dump (normalmente el de superusuario). El ataque consistiría en sustituir una secuencia u objeto similar por una vista o tabla ajena que ejecutaría código malicioso. Para prevenir esta posibilidad, es necesario introducir el nuevo parámetro de servidor restrict_nonsystem_relation_kind  que pueda deshabilitar la expansión de vistas no integradas así como el acceso a tablas foráneas, y pedir a pg_dump que lo establezca cuando esté disponible. Hay que tener en cuenta que el ataque sólo se previene si tanto pg_dump como el servidor desde el que se realiza el volcado son lo suficientemente recientes como para disponer de este parámetro.

El proyecto PostgreSQL agradece a Noah Misch por reportar este problema.

Corrección de errores y mejoras

Esta actualización corrige más de 55 errores reportados en los últimos meses. Aunque los problemas enumerados a continuación afectan a PostgreSQL 16, es posible que algunos de ellos afecten también a otras versiones soportadas de PostgreSQL.

  • Evita resultados incorrectos en los planes «Merge Right Anti Join», en los cuales, si se sabe que la relación interna contiene claves de join únicas, el proceso de merge podría no realizarse correctamente al existir claves de join duplicadas en la relación externa.
  • Previene el bucle infinito en VACUUM.
  • Corrige la configuración de eliminación de particiones durante ALTER TABLE DETACH ... PARTITION CONCURRENTLY.
  • Corrige el comportamiento de las funciones estables que se utilizan como argumento en una sentencia CALL.
  • pg_sequence_last_value() devuelve ahora NULL en lugar de arrojar un error al invocarse en secuencias no registradas de servidores en standby y en secuencias temporales de otras sesiones.
  • Corrige el análisis de operadores ignorados en websearch_to_tsquery().
  • Comprueba de forma correcta la posibilidad de actualizar las columnas de vista definidas en INSERT ... DEFAULT.
  • Bloquea las secuencias de propiedad durante ALTER TABLE ... SET LOGGED|UNLOGGED.
  • Evita que se arroje un error si un trigger AFTER en cola ya no existe.
  • Corrige la selección de un índice árbitro para INSERT ... ON CONFLICT cuando el índice deseado contiene expresiones o predicados, por ejemplo, a través de una vista actualizable.
  • Rechaza la modificación de una tabla temporal perteneciente a otra sesión con ALTER TABLE.
  • Corrige el manejo de estadísticas extendidas en expresiones de CREATE TABLE ... LIKE STATISTICS.
  • Corrige el fallo que se producía al recalcular subconsultas generadas a partir de agregados MIN() o MAX() .
  • No permite guiones bajos en los parámetros de posición.
  • Evita caídas de sistema si una función backend integrada en JIT produce un error.
  • Corrige la gestión de subtransacciones de transacciones preparadas al iniciar un servidor en espera activa (hot standby).
  • Previene la inicialización incorrecta de los slots de replicación lógica.
  • Corrige la fuga de memoria en el remitente WAL (WAL sender) de replicación lógica al publicar cambios en una tabla particionada cuyas particiones contienen tipos de fila físicamente distintos a los de la tabla.
  • Deshabilita la creación de tickets de sesión TLS con estado por parte de OpenSSL.
  • Corrige el manejo de rangos de enteros que contengan guiones bajos (por ejemplo, FOR i IN 1_001..1_002) por parte de PL/pgSQL.
  • Corrige la incompatibilidad entre PL/Perl y Perl 5.40.
  • Varias correcciones relacionadas con funciones PL/Python recursivas y triggers.
  • Asegura que pg_restore -l reporte correctamente las entradas dependientes de la tabla de contenidos.
  • pg_stat_statements proporciona ahora un ID de consulta para las sentencias de utilidad (no SELECT/INSERT/UPDATE) que aparecen en las funciones en lenguaje SQL.
  • Corrección de postgres_fdw al asignar una tabla externa a una vista remota no trivial.
  • postgres_fdw ya no envía una cláusula FETCH FIRST WITH TIES a un servidor remoto.

Actualización

Todas las actualizaciones de PostgreSQL son acumulativas. Al igual que en otras actualizaciones menores, no es necesario realizar un dump y volver a cargar la base de datos. Tampoco es necesario el uso de pg_upgrade para instalar esta actualización. Es suficiente con detener PostgreSQL y actualizar los binarios.

Si anteriormente se omitieron una o más actualizaciones, podría ser necesario seguir algunos pasos posteriores a la actualización. Encontrarán detalles adicionales en las notas de las versiones anteriores.

Para más detalles, véanse las notas de la versión.

Nota sobre PostgreSQL 17 Beta

Con este lanzamiento se publica la tercera versión beta de PostgreSQL 17, lo cual acerca aún más a la comunidad a la disponibilidad general prevista aproximadamente para el final del tercer trimestre.

De acuerdo con el espíritu de la comunidad de código abierto de PostgreSQL, recomendamos encarecidamente que prueben las nuevas características de PostgreSQL 17 en sus sistemas. Esto nos ayudará a eliminar errores u otros posibles problemas. Aunque no recomendamos ejecutar PostgreSQL 17 Beta 3 en un entorno de producción, les invitamos a encontrar formas de ejecutar esta versión beta con cargas de trabajo típicas de sus aplicaciones.

Sus pruebas y comentarios ayudarán a la comunidad a asegurar que PostgreSQL 17 cumpla con nuestros estándares de entrega de una versión estable y confiable de la base de datos relacional de código abierto más avanzada del mundo. Por favor, lean más sobre nuestro proceso de pruebas beta y cómo pueden contribuir en:

https://www.postgresql.org/developer/beta/

Actualizar a PostgreSQL 17 Beta 3

Para actualizar a PostgreSQL 17 Beta 3 desde una versión previa de PostgreSQL, deberán utilizar una estrategia similar a la empleada para la actualización entre versiones principales de PostgreSQL (por ejemplo, pg_upgrade o pg_dump / pg_restore). Para más información, vean la documentación, en la sección sobre actualizaciones.

Cambios desde la versión Beta

Las correcciones y cambios en PostgreSQL 17 Beta 3 incluyen:

  • Cambia el nombre del parámetro standby_slot_names a synchronized_standby_slots.
  • Varias correcciones en SQL/JSON.
  • Corrección de pg_combinebackup --clone.
  • Corrección de pg_createsubscriber para que funcione con nombres de bases de datos que contengan un espacio.
  • pg_createsubscriber ahora elimina las suscripciones preexistentes al ejecutarse en una base de datos de destino.
  • Mejora la eficiencia en la recuperación de la información de suscripción durante el proceso pg_upgrade.
  • Corrección del comportamiento alternativo de TLS durante sslmode=prefer a error cuando un servidor emite un error durante el proceso de inicio.
  • Se documenta un caso de error con el respaldo incremental de pg_basebackup en un servidor en standby al ejecutarse inmediatamente tras el respaldo anterior.
  • Corrige el problema por el que pg_upgrade --transaction-size podía provocar que el backend utilizara un orden de magnitud más de RAM.

Para obtener una lista completa de las características nuevas y modificadas, consulten las notas de la versión. Además, consulten los problemas abiertos de PostgreSQL 17 para obtener más detalles sobre correcciones y cambios.

Pruebas de errores y compatibilidad

La estabilidad de cada versión de PostgreSQL depende en gran medida de que ustedes, la comunidad, prueben la próxima versión con sus cargas de trabajo y herramientas de prueba para detectar errores y regresiones antes del lanzamiento oficial de PostgreSQL 17. Dado que se trata de una versión beta, aún es posible que se produzcan cambios en los comportamientos de la base de datos, los detalles de las funciones y las API. Sus impresiones y pruebas ayudarán a determinar los ajustes finales de las nuevas funciones, así que les rogamos que la prueben lo antes posible. La calidad de las pruebas de los usuarios contribuirá a definir el momento en el que podamos lanzar la versión final.

Una lista de problemas abiertos está disponible al público en el wiki de PostgreSQL. Pueden reportar errores usando el siguiente formulario en el sitio web de PostgreSQL:

https://www.postgresql.org/account/submitbug/

Enlaces

Si desean proponer alguna corrección o hacer sugerencias en relación con este anuncio de lanzamiento, envíenlas a la lista de correo pública pgsql-www@lists.postgresql.org

Haz clic aquí para leer la noticia original en inglés en la página web oficial de PostgreSQL.