El Grupo Global de Desarrollo de PostgreSQL ha liberado una actualización para todas las versiones soportadas de nuestro sistema de base de datos, lo que incluye las versiones 9.6.2, 9.5.6, 9.4.11, 9.3.16 y 9.2.20. Esta actualización incluye correcciones que previenen problemas de corrupción de datos en la creación de índices y problemas en ciertas situaciones de restauración de WAL, los cuales se detallan abajo. También corrige más de 75 otros fallos reportados en los últimos tres meses.
Los usuarios deben planificar la aplicación de esta actualización en la siguiente ventana de mantención planeada. Corrupción al crear índices con CREATE INDEX CONCURRENTLY ---------------------------------------------------------------------------------------- Se producía una condición de carrera si se ejecutaba CREATE INDEX CONCURRENTLY en una columna que no estaba indexada previamente, por lo que los registros que eran modificados por UPDATEs que se estaban ejecutando simultáneamente con CREATE INDEX CONCURRENTLY podrían no haber sido indexados. Si sospecha que esto le pudo haber pasado, la solución más confiable es reconstruir los índices afectados después de instalar esta actualización. Este problema está presente en las series 9.2, 9.3, 9.4, 9.5 y 9.6 de PostgreSQL. Arreglos para visibilidad y estabilidad del WAL ----------------------------------------------------------- Esta actualización contiene varios arreglos para mejorar la estabilidad de los datos visibles y del registro del WAL que quisiéramos destacar aquí. Antes de esta actualización, había datos que podían ser eliminados prematuramente por un VACUUM que eran necesarios para un “snapshot” usado para examinar catálogos del sistema. Específicamente, VACUUM no estaría enterado del xmin más antiguo para este “snapshot” especial. El error se manifiesta con un mensaje como: “cache lookup failed for relation 1255” Esta actualización asegura que los VACUUM tomarán en cuenta los “snapshots” para examinar catálogos de sistema. Además, hay varios arreglos para mejorar la estabilidad del registro del WAL, incluyendo: - Arreglo para el registro de índices BRIN en el WAL, donde una restauración podía hacer que una porción del índice BRIN quedara inutilizable y requiriera recrearse. - Arreglo para una tabla “unlogged” cuando un registro de WAL se crea bajo la opción “wal_level = minimal”, y al restaurar luego de una caída, la tabla no pareciera restablecerse apropiadamente. - Arreglo en la validación de cabecera de página de WAL al releer segmentos que causaba el error “ID de timeline fuera de secuencia” que podía aparecer durante la recuperación Estos problemas están presentes en la serie de versiones 9.6 de PostgreSQL y puede que estén presentes en las series 9.2, 9.3, 9.4 y 9.5. Mejoras y correcciones de fallos ----------------------------------------- Esta actualización también corrige varios fallos reportados en los últimos meses. Algunos de estos problemas sólo afectan a la serie 9.6, pero puede que afecten a todas las versiones soportadas. Hay más de 75 correcciones provistas en esta actualización, incluyendo: - Varios arreglos para PostgreSQL al funcionar en modo hot standby - Prohibir que se establezca el campo num_sync en cero, en synchronous_standby_names - No contar los procesos background worker en el límite de conexiones de un usuario - Arreglo en la verificación de que un objeto miembro de una extensión pueda ser eliminado - Arreglo al buscar privilegios iniciales de objetos miembros de una extensión para que funcione correctamente con ALTER EXTENSION … ADD/DROP - Varios arreglos para VACUUM y AUTOVACUUM - Arreglo en CREATE OR REPLACE VIEW para que actualice la consulta de la vista antes de intentar aplicar las nuevas opciones de vista - Asegurar que ALTER TABLE conserve asignaciones de tablespace para índices al reconstruir los índices - Varios arreglos al planificador de consultas, incluyendo arreglos para tablas foráneas y CTEs - Varios arreglos a la característica de búsqueda de texto completo para mejorar la precisión y el rendimiento de la búsqueda - Varios arreglos y mejoras de rendimiento en varias funciones de array - Varios arreglos en la interacción de restricciones de llave foránea con funciones de disparador en operaciones ALTER TABLE específicas - Eliminación de optimizaciones para tipos de datos de fecha/hora que retornaban datos incorrectos - Arreglo al uso incorrecto de reloptions de vista como reloptions de una tabla normal - Arreglo al mensaje “las listas de resultados pueden tener a lo más N entradas” que aparecía incorrectamente al usar ON CONFLICT con tablas de muchas columnas - Arreglo a mensajes falsos de error tipo “la consulta entrega un valor para una columna eliminada” que aparecía incorrectamente al hacer INSERT o UPDATE en una tabla con una columna eliminada - Prevenir expansión multicolumna de foo.* en una expresión con base UPDATE - Asegurar que los typmods de columna se determinen de forma precisa para constructos VALUES con múltiples registros - Varios arreglos para la herramienta de línea de comandos psql - Prevenir que se ejecuten múltiples llamados a pg_start_backup() y pg_stop_backup() al mismo tiempo - Varios arreglos para pg_dump, pg_restore y pg_basebackup, incluyendo una posible falla de pg_basebackup en un servidor standby al incluir ficheros de WAL - Varios arreglos para trabajadores paralelos y planes para consultas paralelas incluyendo el arreglo a una caída que se producía si el número de trabajadores disponibles para una consulta paralela disminuía durante un reescaneo - Varios arreglos para Unicode - Varios arreglos para PL/pgSQL, PL/Python y PL/Tcl - Varios arreglos para módulos contrib - Permitir caracteres de fin de línea estilo DOS en los ficheros ~/.pgpass, incluso en Unix - Sincronización de nuestra copia de la librería para zonas horarias con la versión tzcode2016j de IANA - Actualización de los ficheros con datos de zonas horarias a la versión 2016j de tzdata por cambios en la ley de horario de verano en Chipre del Norte (agregando una nueva zona Asia/Famagusta), Rusia (agregando una nueva zona Europa/Saratov), Tonga y Antártica/Casey. Correcciones históricas para Italia, Kazajistán, Malta y Palestina. Cambio de preferencia a abreviaciones numéricas de zona para Tonga. Actualizando ---------------- Todas las actualizaciones de PostgreSQL son acumulativas. Al igual que otros lanzamientos de versiones menores, no se requiere que los usuarios hagan un dump y vuelvan a cargar sus bases de datos o usen pg_upgrade para aplicar esta actualización; puede simplemente parar PostgreSQL y actualizar sus binarios. Si cree que puede estar afectado por el fallo en CREATE INDEX CONCURRENTLY mencionado anteriormente, tendrá que reconstruir el índice. Un ejemplo de reconstrucción de índice: CREATE INDEX CONCURRENTLY nuevo_indice ON nombre_table (nombre_columna); DROP INDEX CONCURRENTLY indice_antiguo; /* Si lo desea, puede renombrar el índice para conservar el nombre original: */ ALTER INDEX nuevo_indice RENAME TO indice_antiguo; Los usuarios que se hayan saltado una o más actualizaciones pueden tener que seguir pasos adicionales luego de la actualización; por favor vea las notas de versión de las versiones anteriores para tener más detalles. Links: - [Descarga](http://www.postgresql.org/download) - [Notas de la versión]( http://www.postgresql.org/docs/current/static/release.html) - [Página de seguridad](http://www.postgresql.org/support/security/) - [Política de versionamiento]( https://www.postgresql.org/support/versioning/) -- -- Carlos Chapi