Lanzamiento de PostgreSQL 14.4
El Grupo Global de Desarrollo de PostgreSQL ha lanzado PostgreSQL 14.4 para corregir un problema que podía causar la corrupción silenciosa de datos al utilizar los comandos CREATE INDEX CONCURRENTLY
o REINDEX CONCURRENTLY
. La siguiente sección contiene información sobre cómo detectar y corregir la corrupción silenciosa de datos en los índices.
Esta versión también corrige más de 15 errores que han sido detectados desde el lanzamiento de PostgreSQL 14.3 en mayo. Las notas de la versión contienen la lista completa de cambios.
Este lanzamiento es únicamente para PostgreSQL 14. El 11 de agosto de 2022 el Grupo Global de Desarrollo de PostgreSQL realizará el lanzamiento de una actualización programada para todas las versiones soportadas de PostgreSQL (10 – 14).
Detección y corrección de la corrupción de datos con «CREATE INDEX CONCURRENTLY» / «REINDEX CONCURRENTLY»
PostgreSQL 14.4 corrige un problema con CREATE INDEX CONCURRENTLY
y REINDEX CONCURRENTLY
que podía provocar la corrupción silenciosa de datos en los índices. Antes de la corrección, CREATE INDEX CONCURRENTLY
y REINDEX CONCURRENTLY podían generar índices en los que faltaban entradas, provocando que las consultas SELECT
que utilizaban estos índices no encontraran determinadas filas. Puede que este problema no haya corrompido sus índices. En cualquier caso, si no están seguros, les aconsejamos que realicen un reindex siguiendo las instrucciones que aparecen a continuación.
Es posible detectar si un índice B-tree (el tipo de índice por defecto) presenta corrupción de datos utilizando el comando pg_amcheck
con la opción --heapallindexed
. Por ejemplo:
pg_amcheck --heapallindexed database
Si pg_amcheck
detecta corrupción o si ustedes ejecutaron CREATE INDEX CONCURRENTLY
o REINDEX CONCURRENTLY
en cualquier otro tipo de índice (por ejemplo, GiST, GIN, etc.), sigan las siguientes instrucciones.
Una vez actualizado el sistema a PostgreSQL 14.4, es posible solucionar cualquier corrupción de datos silenciosa utilizando REINDEX CONCURRENTLY
. Por ejemplo, si tienen un índice llamado elephant_idx
que presenta corrupción de datos, en PostgreSQL 14.4 podrán arreglarlo ejecutando el siguiente comando:
REINDEX CONCURRENTLY elephant_idx
;
Se puede usar el comando reindexdb
para reindexar todos los índices de un cluster. reindexdb
también cuenta con la opción --jobs
que permite ejecutar las operaciones de reindexación en paralelo. Por ejemplo, para reindexar todo el clúster de PostgreSQL utilizando <N>
trabajos en paralelo, podrá ejecutarse el siguiente comando:
reindexdb --all --concurrently --jobs <N>
Corrección de errores y mejoras
Esta actualización corrige más de 15 errores que fueron reportados en los últimos meses. Los problemas enumerados a continuación afectan a PostgreSQL 14.
Se incluye en esta versión:
- Varias correcciones para la memoización del plan de consulta.
- Corrige las consultas en las que una «variable de fila completa» hace referencia al resultado de una función que devuelve un dominio sobre un tipo compuesto.
- Corrige el error del planificador «variable not found in subplan target list» al utilizar un sub-
SELECT
al que se hace referencia en una funciónGROUPING
. - Corrige la comprobación de errores en
COPY FROM
cuando la codificación de la base de datos esSQL_ASCII
mientras que la codificación del cliente es de tipo multibyte. - Reporta a los triggers de eventos la creación implícita de familias de operadores (generadas por
CREATE OPERATOR CLASS
). - Evita la activación de
wal_receiver_timeout
en un standby durante la replicación lógica de transacciones de gran tamaño. - Elimina la comprobación incorrecta de la propiedad del archivo de clave privada TLS en libpq.
- Previene la caída del sistema tras la pérdida de conexión con el servidor en
pg_amcheck
.
Para la lista completa de los cambios disponibles, consulten las notas de la versión.
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.
Sin embargo, si han ejecutado CREATE INDEX CONCURRENTLY
o REINDEX CONCURRENTLY
en PostgreSQL 14, es posible que tengan que tomar medidas adicionales. Para más detalles, consulten la sección «Detect and Fix CREATE INDEX CONCURRENTLY
/ REINDEX CONCURRENTLY
Corruption».
Si anteriormente omitieron una o más actualizaciones, podría ser necesario seguir algunos pasos posteriores a la actualización. Para más detalles consulten las notas de las versiones anteriores.
Para más detalles, véanse las notas de la versión.
Notificación de EOL para PostgreSQL 10
PostgreSQL 10 dejará de recibir correcciones el 10 de noviembre de 2022. Si están ejecutando PostgreSQL 10 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.