E.3. Release 18.2 #

E.3.1. Migración a la versión 18.2
E.3.2. Cambios

Fecha de lanzamiento: 2026-02-12

Este lanzamiento contiene una variedad de correcciones desde la versión 18.1. Para obtener información sobre las nuevas características de la versión principal 18, consulta Section E.5.

E.3.1. Migración a la versión 18.2 #

No se requiere un dump/restore para quienes tengan la versión 18.X.

Sin embargo, si tienes índices en columnas ltree, puede ser necesario reindexarlos después de actualizar. Consulta la sexta entrada del changelog a continuación.

E.3.2. Cambios #

  • Protégete contra dimensiones inesperadas de oidvector/int2vector (Tom Lane) §

    Se espera que estos tipos de datos sean arreglos unidimensionales que no contengan nulos, pero existen rutas de conversión que permiten violar esas expectativas. Añade comprobaciones a algunas funciones que dependían de esas expectativas sin verificarlas, y que como consecuencia podían comportarse de manera incorrecta.

    El Proyecto PostgreSQL agradece a Altan Birler por reportar este problema. (CVE-2026-2003)

  • Refuerza los estimadores de selectividad contra la posibilidad de asociarse a operadores que aceptan tipos de datos inesperados (Tom Lane) § §

    contrib/intarray contenía una función de estimación de selectividad de la que se podía abusar para la ejecución de código arbitrario, ya que no comprobaba que su entrada fuera del tipo de datos esperado. Las extensiones de terceros deberían verificar peligros similares y agregar defensas utilizando la técnica que ahora usa intarray. Dado que las correcciones de tales extensiones tomarán tiempo, ahora requerimos privilegios de superuser para asociar un estimador de selectividad no incorporado a un operador.

    El Proyecto PostgreSQL agradece a Daniel Firer, como parte de zeroday.cloud, por reportar este problema. (CVE-2026-2004)

  • Corrige un desbordamiento de búfer en las funciones de descifrado PGP de contrib/pgcrypto (Michael Paquier) §

    Descifrar un mensaje manipulado con una clave de sesión excesivamente larga causaba un desbordamiento de búfer, con consecuencias tan graves como la ejecución de código arbitrario.

    El Proyecto PostgreSQL agradece a Team Xint Code, como parte de zeroday.cloud, por reportar este problema. (CVE-2026-2005)

  • Corrige la validación inadecuada de longitudes de caracteres multibyte (Thomas Munro, Noah Misch) § § § § § §

    Varios errores permitían a un atacante capaz de emitir SQL manipulado desbordar los búferes de cadenas, con consecuencias tan graves como la ejecución de código arbitrario. Después de estas correcciones, las aplicaciones pueden observar errores invalid byte sequence for encoding cuando las funciones de cadena procesen texto no válido que se haya almacenado en la base de datos.

    El Proyecto PostgreSQL agradece a Paul Gerste y Moritz Sanft, como parte de zeroday.cloud, por reportar este problema. (CVE-2026-2006)

  • Refuerza contrib/pg_trgm contra cambios en el comportamiento de la conversión de cadenas a minúsculas (Heikki Linnakangas) § §

    Corrige potenciales desbordamientos de búfer derivados del hecho de que en algunas configuraciones regionales convertir una cadena a minúsculas puede producir más caracteres (no bytes) de los que había en el original. Ese comportamiento es nuevo en la versión 18, al igual que el error.

    El Proyecto PostgreSQL agradece a Heikki Linnakangas por reportar este problema. (CVE-2026-2007)

  • Corrige la coincidencia insensible a mayúsculas/minúsculas inconsistente en contrib/ltree (Jeff Davis) § §

    Las rutinas relacionadas con índices en ltree utilizaban una implementación diferente de case-folding que los operadores principales. Su comportamiento era equivalente solo si el proveedor de colación por defecto era libc y la codificación era de un solo byte.

    Para solucionarlo, cambia el código para usar case-folding con la colación por defecto de la base de datos. Este cambio requerirá reindexar los índices en columnas ltree (independientemente del método de acceso al índice) a menos que la base de datos use libc como proveedor de colación y su codificación sea de un solo byte. Sin eso, las búsquedas de tales índices no lograrán ubicar las entradas relevantes.

  • Al usar ALTER TABLE ... ADD CONSTRAINT para añadir una restricción not-null con un nombre explícito, si la columna ya está marcada como NOT NULL, requiere que el nombre proporcionado coincida con el nombre de la restricción existente (Álvaro Herrera, Srinath Reddy Sadipiralla) §

  • No permite que las referencias a CTE en subconsultas determinen los niveles semánticos de las funciones de agregación (Tom Lane) §

    Este cambio revierte una modificación realizada hace dos versiones menores, lanzando en su lugar un error si una subconsulta hace referencia a una CTE que está por debajo del nivel semántico que las reglas estándar de SQL asignarían al agregado en función de las referencias a columnas y agregados contenidos. El intento de solución resultó causar problemas por sí mismo, y no está claro qué hacer en su lugar. Dado que las subconsultas dentro de agregados están totalmente desautorizadas por el estándar SQL, tratar tales casos como errores parece suficiente.

  • Corrige la captura de la tabla de transición de disparadores para MERGE en consultas CTE (Dean Rasheed) §

    Al ejecutar una consulta CTE de modificación de datos que contenía tanto un MERGE como otra operación DML en una tabla con disparadores AFTER a nivel de sentencia, las tablas de transición pasadas a los disparadores no incluían las filas afectadas por el MERGE, solo aquellas afectadas por la(s) otra(s) operación(es).

  • Corrige la poda incorrecta de marcas de fila (rowmarks) pertenecientes a entradas de la tabla de rango que no son relaciones, como las subconsultas (Dean Rasheed) §

    Esto conducía a resultados incorrectos si una actualización de fila propuesta necesitaba ser modificada por la recomprobación de EvalPlanQual, como podía suceder si había una actualización concurrente en esa fila.

  • Corrige el fallo cuando se han podado todos los hijos de una tabla destino particionada en un update o delete (Amit Langote) §

    En tales casos, el ejecutor podía reportar errores de tipo could not find junk ctid column, a pesar de que no es necesario hacer nada.

  • Corrige un error de evaluación de expresiones para una subconsulta dentro de un subíndice de arreglo (Andres Freund) §

  • Corrige la búsqueda de subcadenas de texto para colaciones no deterministas (Laurenz Albe) §

    Al usar una colación no determinista, no lográbamos detectar una coincidencia que ocurriera al final de la cadena buscada.

  • Evita un posible fallo del planificador cuando una consulta contiene llamadas duplicadas a funciones de ventana (Meng Zhang, David Rowley) §

    La confusión sobre la deduplicación de tales llamadas podía resultar en errores como WindowFunc with winref 2 assigned to WindowAgg with winref 1.

  • Corrige un error del planificador con funciones que retornan conjuntos (SRF) y grouping sets (Richard Guo) §

    Al construir un nodo de plan ProjectSet, el planificador no lograba detectar que las subexpresiones que involucraban expresiones de agrupación ya habían sido calculadas por el plan de entrada. Esto conducía a planes ineficientes o errores como variable not found in subplan target list.

  • Evita una optimización incorrecta cuando la cláusula de agrupación de una subconsulta contiene una función volátil o que retorna un conjunto (Richard Guo) §

    El planificador estaba dispuesto a empujar hacia abajo (push down) las restricciones de la consulta externa que hacían referencia a tal columna de agrupación, lo que conducía a un comportamiento incorrecto debido a la evaluación múltiple de una función volátil, o a errores causados por la introducción de una función que retorna un conjunto en las cláusulas WHERE/HAVING de la subconsulta.

  • Examina a través de los nodos PlaceHolderVar al buscar estadísticas sobre una expresión (Richard Guo) §

    Este cambio permite al planificador encontrar estadísticas relevantes sobre expresiones extraídas de subconsultas o utilizadas en GROUP BY, evitando tener que recurrir a una estimación por defecto. (Se podría argumentar que deberíamos ajustar cualquier estadística encontrada para tener en cuenta una mayor probabilidad de que el valor sea NULL, pero nunca hemos hecho lo equivalente para Vars normales tampoco). Aunque esta restricción es antigua, los cambios en la versión 18 de PostgreSQL hicieron que los PlaceHolderVars sean más comunes que antes, así que realiza este cambio para evitar regresiones en los planes en los casos afectados.

  • Examina a través de nodos PlaceHolderVar sin efecto (no-op) al emparejar expresiones con índices (Richard Guo) §

    Debido a que la versión 18 de PostgreSQL utiliza PlaceHolderVars en más casos que antes, algunas consultas que antes podían usar un índice no lograban hacerlo. Añade lógica para prevenir esa regresión.

  • Corrige la conversión del planificador de cláusulas OR a condiciones de índice ScalarArrayOp (Tender Wang, Tom Lane) §

    El código no manejaba correctamente los nodos RelabelType, y podía generar expresiones inválidas o no realizar una conversión válida.

  • Permite indexscans en índices hash parciales incluso cuando el predicado del índice implica la veracidad de la cláusula WHERE (Tom Lane) §

    Normalmente descartamos una cláusula WHERE que está implícita en el predicado, ya que no tiene sentido evaluarla; debe cumplirse para cada entrada del índice. Sin embargo, eso puede impedir la creación de un plan de indexscan si el índice requiere una cláusula WHERE en la clave principal del índice, como lo hacen los índices hash. No descartes las cláusulas implícitas cuando se considere tal índice.

  • No emite WAL para índices BRIN no registrados (unlogged) (Kirill Reshke) §

    Una ruta de código poco frecuentada emitía incorrectamente un registro WAL relacionado con un índice BRIN incluso si el índice estaba marcado como no registrado. La recuperación tras fallos (crash recovery) fallaría entonces al reproducir ese registro, quejándose de que el archivo ya existe.

  • Usa la función de ordenamiento correcta en construcciones paralelas de índices GIN (Tomas Vondra) §

    El código paralelo utilizaba el operador de ordenamiento por defecto (que está determinado por la clase de operador btree del tipo de datos de la columna), mientras que debería usar la función de ordenamiento especificada por la clase de operador GIN, si existe. Esto conducía a un fallo si el tipo de datos no tiene clase de operador btree, o a un índice inválido si la clase de operador especifica una función de ordenamiento que no coincide con la clase de operador btree.

  • Evita la truncación del CLOG que aún es necesario para los mensajes NOTIFY no leídos (Joel Jacobson, Heikki Linnakangas) § § §

    Esta corrección evita errores del tipo could not access status of transaction cuando un backend es lento para absorber los mensajes NOTIFY.

  • Escala los errores ocurridos durante el procesamiento de mensajes NOTIFY a FATAL, es decir, cierra la conexión (Heikki Linnakangas) §

    Anteriormente, si un backend obtenía un error al absorber un mensaje NOTIFY, avanzaba más allá de ese mensaje, reportaba el error al cliente y continuaba. Sin embargo, ese comportamiento estaba plagado de problemas. Una gran preocupación es que el cliente no tiene una buena forma de saber que se perdió una notificación y, ciertamente, no hay forma de saber qué contenía. Dependiendo de la lógica de la aplicación, perder una notificación podría causar que la aplicación se quede esperando, por ejemplo. Además, cualquier mensaje restante no se procesaría hasta que alguien enviara un nuevo NOTIFY.

    Además, si la conexión está inactiva en el momento de recibir una señal NOTIFY, cualquier ERROR se escalaría a FATAL de todos modos, debido a problemas no relacionados. Por lo tanto, hemos optado por hacer que eso suceda en todos los casos, para mantener la consistencia y proporcionar una señal clara a la aplicación de que podría haber perdido algunas notificaciones.

  • Considera las expresiones de agrupación al calcular un hash de ID de consulta (Jian He) §

    Anteriormente, dos consultas que eran idénticas excepto por las expresiones en GROUP BY se fusionaban por contrib/pg_stat_statements y otros usuarios de IDs de consultas.

  • Corrige el conteo erróneo de actualizaciones en EXPLAIN ANALYZE MERGE con una actualización concurrente (Dean Rasheed) §

    Esta situación conducía a un conteo incorrecto de tuplas skipped en la salida de EXPLAIN, o a un fallo de aserción en compilaciones con aserciones habilitadas.

  • Corrige un error al seguir la cadena de actualización al bloquear una tupla (Jasper Smit) §

    Esta ruta de código omitía comprobar el xmin de la primera nueva tupla en la cadena de actualización, haciendo posible bloquear una tupla no relacionada si el actualizador original abortaba y el espacio era inmediatamente reclamado por VACUUM y luego reutilizado. Eso podía causar retrasos inesperados en las transacciones o interbloqueos (deadlocks). También se han observado errores asociados con haber identificado la tupla incorrecta.

  • Corrige el manejo incorrecto de respaldos (backups) incrementales de tablas grandes (Robert Haas, Oleg Tkachenko) §

    Si una tabla que excede 1 GB (o en general, el tamaño de segmento de la instalación) es truncada por VACUUM entre el respaldo base y el respaldo incremental, pg_combinebackup podía fallar con un error sobre truncation block length in excess of segment size. Esto impedía restaurar el respaldo incremental.

  • Corrige una posible caída (crash) del proceso backend al finalizar debido al intento de liberar un bloqueo en un segmento de memoria compartida que ya ha sido desmapeado (Rahila Syed) §

  • Corrige una condición de carrera (race condition) en el código de E/S asíncrona (Andres Freund) §

    Era posible que el código de resultado de una operación de E/S asíncrona se sobrescribiera antes de ser recuperado.

  • Guard a contra la truncación incorrecta del registro de multixact después de una caída (Heikki Linnakangas) §

  • Corrige un resultado posiblemente mal codificado de pg_stat_get_backend_activity() (Chao Li) §

    El búfer de memoria compartida que contiene la cadena de actividad de una sesión puede terminar con un carácter multibyte incompleto. Se supone que los lectores deben truncar cualquier carácter incompleto de este tipo, pero esta función no lo hacía.

  • Protege contra el registro (logging) recursivo de contextos de memoria (Fujii Masao) §

    Un flujo constante de señales solicitando el registro de contextos de memoria podía provocar la ejecución recursiva del código de registro, lo que en teoría podía conducir a un desbordamiento de pila (stack overflow).

  • Corrige el uso del contexto de memoria al reinicializar un contexto de ejecución paralela (Jakub Wartak, Jeevan Chalke) §

    Este error podía resultar en una caída (crash) debido a que una estructura de datos subsidiaria tenía una vida útil más corta que la del contexto paralelo. No se sabe si el problema es alcanzable utilizando únicamente el núcleo (core) de PostgreSQL, pero tenemos reportes de problemas en extensiones.

  • Establece el desplazamiento (offset) del siguiente multixid al crear un nuevo multixid, para eliminar el bucle de espera que era necesario en casos límite (Andrey Borodin) § §

    La lógica anterior podía quedarse atascada esperando una actualización que nunca ocurriría.

  • Evita reescribir CTEs que modifican datos más de una vez (Bernice Southey, Dean Rasheed) §

    Anteriormente, al actualizar una vista auto-actualizable o una relación con reglas, si la consulta original tenía alguna CTE de modificación de datos, el reescritor reescribía esas CTEs múltiples veces debido a la recursión. Esto era ineficiente y podía producir errores falsos si una CTE incluía una actualización de una columna generada siempre (always-generated).

  • Permite reintentar la inicialización de una entrada del registro DSM (Nathan Bossart) §

    Si fallamos a mitad de la inicialización de una entrada de memoria compartida dinámica, permite que el siguiente intento de usar esa entrada reintente la inicialización. Anteriormente, la entrada quedaba en un estado de fallo permanente.

  • Evita el fallo de las vistas de estado de NUMA cuando una página ha sido enviada al área de intercambio (swapped out) (Tomas Vondra) §

  • Evita errores de tipo operation not permitted al consultar el estado de páginas NUMA con versiones antiguas de libnuma (Tomas Vondra) §

  • Hace fallar la recuperación si el WAL no existe hacia atrás hasta el punto de redo indicado por el registro de checkpoint (Nitin Jadhav) §

    Añade una comprobación explícita para esto antes de iniciar la recuperación, de modo que no se cause daño y se proporcione un mensaje de error útil. Anteriormente, la recuperación podía colapsar o corromper la base de datos en esta situación.

  • Evita alterar el árbol de consulta de origen durante un ALTER PUBLICATION (Sunil S) §

    Este error tenía el efecto visible de que un disparador de eventos (event trigger) activado para la consulta vería únicamente la primera opción publish, incluso si se hubieran especificado varias. Si tal consulta se configuraba como una sentencia preparada (prepared statement), las re-ejecuciones también se comportarían de forma incorrecta.

  • Pasa las opciones de conexión especificadas en CREATE SUBSCRIPTION ... CONNECTION al walsender del publicador (Fujii Masao) §

    Antes de esta corrección, la opción de conexión options (si la había) era ignorada, lo que por ejemplo impedía establecer valores personalizados de parámetros del servidor en la sesión del walsender. La intención era que esto funcionara, y funcionaba antes de que la refactorización en la versión 15 de PostgreSQL lo rompiera, así que se restaura el comportamiento anterior.

  • Evita la invalidación de slots de replicación recién creados o recién sincronizados (Zhijie Hou) § § §

    Una condición de carrera con un checkpoint concurrente podía permitir que se eliminara el WAL necesario para el slot de replicación, provocando que el slot fuera marcado como inválido de inmediato.

  • Corrige una condición de carrera al calcular el xmin requerido por un slot de replicación (Zhijie Hou) §

    Esto podía conducir al error cannot build an initial slot snapshot as oldest safe xid follows snapshot's xmin.

  • Durante la sincronización inicial de una suscripción de replicación lógica, confirma (commit) la adición de una entrada en pg_replication_origin antes de comenzar a copiar los datos (Zhijie Hou) §

    Anteriormente, si el paso de copia fallaba, la nueva entrada en pg_replication_origin se perdía debido al rollback de la transacción. Esto conducía a un estado inconsistente en la memoria compartida.

  • No hace avanzar el progreso de la replicación lógica tras un fallo en la aplicación del parallel worker (Zhijie Hou) §

    El comportamiento anterior permitía que el suscriptor perdiera transacciones.

  • Corrige los procesos worker slotsync de replicación lógica para que manejen correctamente las señales LOCK_TIMEOUT (Zhijie Hou) §

    Anteriormente, las señales de timeout eran ignoradas de forma efectiva.

  • Corrige un posible fallo con unexpected data beyond EOF durante el reinicio de un servidor réplica en streaming (Anthonin Bonnefoy) §

  • Corrige el reporte de errores para discordancias de tipos en rutas SQL/JSON (Jian He) §

    El código podía producir un error cache lookup failed for type 0 en lugar de la queja prevista sobre que la expresión de ruta no era del tipo correcto.

  • Corrige el seguimiento erróneo de la posición de columna al analizar los límites de rango de particiones (myzhen) §

    Esto podía, por ejemplo, hacer que se citara un nombre de columna incorrecto en los mensajes de error sobre la conversión de valores de límites de partición al tipo de datos de la columna.

  • Corrige varios errores menores en mensajes de error (Man Zeng, Tianchen Zhang) § § § § §

    Por ejemplo, un reporte de error sobre la discordancia del número de timeline en un manifiesto de respaldo mostraba el número de timeline inicial cuando correspondía mostrar el número de timeline final.

  • Corrige el fallo al realizar el inlining de funciones cuando se hace compilación JIT con LLVM versión 17 o posterior (Anthonin Bonnefoy) §

  • Ajusta nuestro código JIT para que funcione con LLVM 21 (Holger Hoffstätte) §

    La codificación anterior fallaba al compilar en máquinas aarch64.

  • Corrige el código específico de aarch64 para que compile con archivos de cabecera del sistema antiguos (de la era RHEL7) (Tom Lane) § §

  • Corrige la comprobación de configure incorrecta para io_uring_queue_init_mem() (Masahiko Sawada) §

    Este error provocaba que no se optimizaran las asignaciones de búfer de E/S asíncrona en compilaciones basadas en autotools, aunque el código sí funcionaba al compilar con meson. El impacto principal de esta omisión era la finalización del proceso backend más lenta de lo necesario.

  • Añade el nuevo parámetro de servidor file_extend_method para controlar el uso de posix_fallocate() (Thomas Munro) §

    PostgreSQL versión 16 y posteriores utilizará posix_fallocate(), si la plataforma lo proporciona, para extender los archivos de relación. Sin embargo, se ha reportado que esto interactúa mal con algunos sistemas de archivos: la compresión BTRFS se desactiva mediante el uso de posix_fallocate(), y XFS podía producir errores ENOSPC espurios en versiones más antiguas del kernel de Linux. Para proporcionar una solución alternativa, se introduce este nuevo parámetro de servidor. Establecer file_extend_method en write_zeros hará que el servidor vuelva al método anterior de extender archivos escribiendo bloques de ceros.

  • Respeta la bandera O_CLOEXEC de open() en Windows (Bryan Green, Thomas Munro) § § §

    Hace que esta bandera funcione como en plataformas POSIX, de modo que no filtremos descriptores de archivos (file handles) a procesos hijo como COPY TO/FROM PROGRAM. Aunque esa filtración no ha causado muchos problemas, resulta indeseable.

  • Corrige el fallo al analizar opciones largas en la línea de comandos del servidor en ejecutables de Solaris compilados con meson (Tom Lane) §

  • Soporta cambios en el título del proceso en GNU/Hurd (Michael Banck) §

  • Corrige el autocompletado con tabulador de psql para los valores de opciones de VACUUM (Yugo Nagata) §

  • En los prompts de comandos de psql, no muestra ningún valor para %P (estado del pipeline) cuando no hay conexión con el servidor (Chao Li) §

    Esto hace que %P actúe como otras secuencias de escape del prompt cuyos valores dependen de la conexión activa.

  • Corrige la lógica de pg_dump para recolectar valores de secuencias (Nathan Bossart) § §

    pg_dump fallaba si una secuencia se eliminaba concurrentemente con el dump, incluso si la secuencia no estaba entre los objetos de la base de datos a respaldar. Además, si el usuario que realiza la llamada carece de privilegios para leer el valor de una secuencia, pg_dump emitía valores incorrectos en lugar de fallar como se esperaba.

  • Corrige el entrecomillado potencialmente incorrecto de los valores de oauth_validator_libraries por parte de pg_dump (ChangAo Chen) §

    pg_dump aplicaba la regla de entrecomillado incorrecta si necesitaba respaldar un valor de esta configuración.

  • Evita un fallo de aserción de pg_dump en el modo binary-upgrade (Vignesh C) §

    El fallo al manejar objetos de relación de suscripción en el código de ordenamiento de objetos provocaba una aserción, aunque no hubo efectos secundarios graves en las compilaciones de producción.

  • Corrige el manejo incorrecto de errores en pgbench con múltiples comandos \syncpipeline en modo pipeline (Yugo Nagata) §

    Si se encuentran múltiples comandos \syncpipeline después de un error en una consulta, pgbench reportaría failed to exit pipeline mode, o experimentaría un fallo de aserción en compilaciones con aserciones habilitadas.

  • Hace que pg_resetwal imprima el valor actualizado al cambiar OldestXID (Heikki Linnakangas) §

    Ya hacía eso para todas las demás variables que puede cambiar.

  • Hace que pg_resetwal permita establecer el siguiente xid de multixact a 0 o el siguiente offset de multixact a UINT32_MAX (Maxim Orlov) §

    Estos son valores válidos, por lo que rechazarlos era incorrecto. En el peor de los casos, si se intenta un pg_upgrade exactamente en el punto de wraparound de multixact, la actualización fallaría.

  • En contrib/amcheck, utiliza el snapshot correcto para las comprobaciones de padres de índices btree (Mihail Nikalayeu) § §

    La codificación anterior causaba errores espurios al examinar índices creados con CREATE INDEX CONCURRENTLY.

  • Corrige contrib/amcheck para manejar correctamente las páginas de índice btree half-dead (semi-muertas) (Heikki Linnakangas) §

    amcheck esperaba que tal página tuviera un enlace descendente (downlink) de padre, pero no lo tiene, lo que conducía a un reporte de error falso sobre mismatch between parent key and child high key.

  • Corrige contrib/amcheck para manejar correctamente las divisiones incompletas de páginas raíz btree (Heikki Linnakangas) §

    amcheck podía reportar un error falso sobre block is not true root.

  • Corrige la asignación excesiva de memoria en contrib/pg_buffercache (David Geier) §

    El código asignaba el doble de memoria de la necesaria para el estado de páginas NUMA.

  • Corrige un desbordamiento de entero en un caso límite en el estimador de selectividad de contrib/intarray para @@ (Chao Li) §

    Esto podía causar que se produjeran estimaciones de selectividad deficientes para casos que involucraban el valor entero máximo.

  • Corrige un problema de codificación multibyte en contrib/ltree (Jeff Davis) §

    La codificación anterior podía pasar un carácter multibyte incompleto a lower(), lo que probablemente resultaba en un comportamiento incorrecto.

  • Evita una caída (crash) en contrib/pg_stat_statements cuando una lista IN contiene tanto constantes como expresiones no constantes (Sami Imseih) §

  • Actualiza los archivos de datos de zonas horarias a la versión 2025c de tzdata (Tom Lane) §

    El único cambio se encuentra en los datos históricos para marcas de tiempo anteriores a 1976 en Baja California.