Lanzamiento de PostgreSQL 15.4, 14.9, 13.12, 12.16, 11.21, y PostgreSQL 16 Beta 3
El Grupo Global de Desarrollo de PostgreSQL ha lanzado una actualización para todas las versiones soportadas de PostgreSQL, entre ellas la 15.4, 14.9, 13.12, 12.16 y 11.21, así como la tercera versión beta de PostgreSQL 16. Esta versión corrige dos vulnerabilidades de seguridad y más de 40 errores reportados en los últimos meses.
Si utilizan índices BRIN para la búsqueda de valores NULL
, tendrán que reindexarlos tras la actualización a esta versión. En PostgreSQL 12 y posteriores, pueden utilizar REINDEX CONCURRENTLY
para evitar el bloqueo de escrituras en índices y tablas afectadas, por ejemplo:
REINDEX INDEX CONCURRENTLY nombre_de_su_índice;
Para ver la lista completa de cambios, revisen las notas de la versión.
Aviso de EOL para PostgreSQL 11
PostgreSQL 11 dejará de recibir correcciones el 9 de noviembre de 2023. Si están ejecutando PostgreSQL 11 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-2023-39417: Un script de extensión @substitutions@
entre comillas permite inyecciones SQL.
Versiones soportadas vulnerables: 11 – 15. El equipo de seguridad no suele realizar pruebas en versiones no soportadas, pero se trata de un problema antiguo.
Un script de extensión es vulnerable si utiliza @extowner@
, @extschema@
, o @extschema:...@
en una construcción entre comillas (comillas de dólar, ''
, o ""
). Ninguna extensión integrada es vulnerable. Los usos vulnerables aparecen en un ejemplo de la documentación y en extensiones no integradas. Por lo tanto, el prerrequisito para un ataque implica que un administrador haya instalado archivos de una extensión vulnerable, de confianza pero no integrada. Si se cumple este prerrequisito, un atacante con privilegios CREATE
a nivel de base de datos podrá ejecutar código arbitrario como superusuario de inicialización. Puesto que PostgreSQL bloqueará este ataque en el servidor central, no es necesario modificar extensiones individuales.
El proyecto PostgreSQL agradece a Micah Gate, Valerie Woolard, Tim Carey-Smith y Christoph Berg por reportar este problema.
CVE-2023-39418: MERGE
no logra aplicar las políticas de seguridad a nivel de registros para UPDATE
o SELECT
.
Versiones soportadas vulnerables: 15.
PostgreSQL 15 introdujo el comando MERGE
, el cual no logra probar los nuevos registros según las políticas de seguridad de registros definidas para UPDATE
y SELECT
. Si las políticas para UPDATE
y SELECT
rechazan algún registro que las políticas para INSERT
no prohíben, un usuario podría almacenar dichos registros. Las consecuencias resultantes dependerán de la aplicación. Este problema afecta únicamente a bases de datos que hayan utilizado CREATE POLICY
para definir una política de seguridad a nivel de registros.
El proyecto PostgreSQL agradece a Dean Rasheed por reportar este problema.
Nota sobre PostgreSQL 16 Beta
Con este lanzamiento se publica la tercera versión beta de PostgreSQL 16, 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 16 en sus sistemas. Esto nos ayudará a eliminar errores u otros posibles problemas. Aunque no recomendamos ejecutar PostgreSQL 16 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 16 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/
Para más información sobre todas las características y cambios en PostgreSQL 16, consulten las notas de la versión en:
https://www.postgresql.org/docs/16/release-16.html
Corrección de errores y mejoras
Esta actualización corrige más de 40 errores reportados en los últimos meses. Aunque los problemas enumerados a continuación afectan a PostgreSQL 15, es posible que algunos de ellos afecten también a otras versiones soportadas de PostgreSQL.
- Corrección del manejo de valores
NULL
en índices BRIN. Esta corrección no se aplica a los índices BRIN existentes: deberá ejecutarseREINDEX
para corregir los índices BRIN utilizados en la búsqueda de valores NULL. - Evita que quede una base de datos corrupta cuando se interrumpe DROP DATABASE.
- Varias correcciones para índices particionados.
- Corrección de
ALTER EXTENSION ... SET SCHEMA
. En caso de que la extensión contenga objetos fuera del esquema de la extensión, se producirá un error. - Corrección del control de dependencias en los métodos de acceso a las tablas.
- No se utilizan índices únicos parciales para pruebas de unicidad en el planificador.
- Manejo correcto de sub-SELECTs en expresiones de políticas RLS y vistas con restricciones de seguridad al expandir las acciones de reglas.
- Corrección de condiciones de carrera en la detección de conflictos para el modo de aislamiento de transacciones
SERIALIZABLE
. - Corrección de fallos intermitentes al intentar actualizar campos de columnas compuestas que requieren TOAST fuera de línea.
- Corrección de varias fugas de memoria que se producían durante la vida útil de una consulta.
- Se aceptan fracciones de segundo en la entrada del método
datetime()
de jsonpath. - Se incrementa a 10.240 bytes el límite de tokens en
pg_hba.conf
ypg_ident.conf
. - Un error de falta de memoria de JIT ahora provocará un error
FATAL
de PostgreSQL en lugar de una excepción de C++. - Se permite que el proceso de
VACUUM
continúe tras detectar ciertos tipos de corrupción en índices B-tree. Aunque esta corrección mantiene activo el proceso de VACUUM, sigue siendo necesario realizar unREINDEX
para reparar el índice corrupto. - Se evita la aplicación doble de transacciones preparadas durante la recuperación tras una caída del sistema.
- Asegura que el checkpoint invoque
fsync
en una tabla recién creada aunque esté vacía. - Se silencia los errores «missing contrecord» para evitar el registro de mensajes inexactos de
pg_waldump
ywalsender
. - Corrección de la función [fuzzystrmatch](https://www.postgresql.org/docs/current/fuzzystrmatch.html Soundex
difference()
para que gestione correctamente las entradas vacías - Varias correcciones para
intarray
, incluida la prohibición de matrices de entrada de gran tamaño en un índice GiST. - Corrección de
pg_dump
para que maneje correctamente los cuerpos de función SQL estándar (BEGIN ATOMIC
) que requieren dependencias de tiempo de análisis sintáctico en índices únicos.
Para la lista completa de cambios realizados, consulten las notas de la versión.
Correcciones en PostgreSQL 16 Beta 3
- Se añade el comando
\drg
apsql
para mostrar información sobre la asignación de roles. - Se añade el ID de la línea de tiempo a los nombres de archivo generados con
pg_waldump --save-fullpage
. - Corrección de la caída que se produce tras un bloqueo mutuo en un worker en paralelo de
VACUUM
.
Consulten las notas de la versión para consultar la lista completa de nuevas características y cambios:
https://www.postgresql.org/docs/16/release-16.html
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 utilizan índices BRIN para la búsqueda de valores NULL
, tendrán que reindexarlos tras la actualización a esta versión. En PostgreSQL 12 y posteriores, pueden utilizar REINDEX CONCURRENTLY
para evitar el bloqueo de escrituras en índices y tablas afectadas, por ejemplo:
REINDEX INDEX CONCURRENTLY nombre_de_su_índice;
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.
Actualizar a PostgreSQL 16 Beta 3
Para actualizar a PostgreSQL 16 Beta 3 desde una versión previa de PostgreSQL 16 Beta, 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.
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 16. Dado que se trata de una versión beta, 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
- Descargas
- Notas de la versión
- Seguridad
- Política de versiones
- Información sobre las pruebas beta
- Notas de la versión beta de PostgreSQL 16
- Problemas abiertos de PostgreSQL 16
- Sígannos en Twitter @postgresql
- Donaciones
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 public