> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-vortex-format.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Registro de cambios de 2026

# Registro de cambios 2026

<div id="268">
  ### Lanzamiento de ClickHouse 26.8 LTS, 2026-08-27, FIXME (en curso)
</div>

<div id="268-backward-incompatible-change">
  #### Cambio incompatible con versiones anteriores
</div>

* Los números JSON sin comillas de las columnas `DateTime` y `DateTime64` en `JSONEachRow` y formatos similares ahora se interpretan como timestamps Unix con precisión subsegundo opcional, al igual que en `Values`, `CAST` y `toDateTime64`. Anteriormente, se rechazaba un número fraccionario como `1703363853.035`, y un entero sin comillas como `1703363853` se leía como el valor escalado sin procesar de `DateTime64`, lo que producía un timestamp `1970-...`. Las cadenas entre comillas y la salida JSON propia de ClickHouse no se ven afectadas. [#108091](https://github.com/ClickHouse/ClickHouse/pull/108091) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El valor predeterminado de `max_insert_threads` cambió de `1` a `auto`, que se resuelve como el número de núcleos de CPU disponibles para el servidor. De forma predeterminada, esto paraleliza `INSERT SELECT`, y ahora `max_insert_threads` también puede paralelizar la parte de escritura de un `INSERT` simple cuando la ruta de escritura de destino puede distribuir el trabajo de forma segura. Esto puede cambiar el número de partes creadas por dichas consultas y el orden de las filas insertadas. Para restaurar el comportamiento anterior, establezca `max_insert_threads` en `1` o `compatibility` en una versión anterior a `26.8`. [#109000](https://github.com/ClickHouse/ClickHouse/pull/109000) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#109006](https://github.com/ClickHouse/ClickHouse/pull/109006) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los motores de base de datos `PostgreSQL` y `MaterializedPostgreSQL` ahora respetan `remote_url_allow_hosts`, al igual que el motor de tabla `PostgreSQL`, la función de tabla `postgresql` y los diccionarios creados mediante DDL. Con `remote_url_allow_hosts` configurado, `CREATE DATABASE` y los comandos `ATTACH DATABASE` emitidos por usuarios ahora rechazan las bases de datos `PostgreSQL` y `MaterializedPostgreSQL` que apuntan a hosts no permitidos con `UNACCEPTABLE_URL`. Las bases de datos existentes se siguen cargando al iniciar el servidor. [#111135](https://github.com/ClickHouse/ClickHouse/pull/111135) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El códec experimental `ALP(STD)` ahora realiza la aritmética de escalado de `Float32` en `Float64`. Esto mejora las relaciones de compresión y elimina la compresión de datos decimales que genera muchas excepciones, pero los valores `Float32` escritos por versiones anteriores ahora pueden decodificarse con una diferencia de 1 ULP. [#111627](https://github.com/ClickHouse/ClickHouse/pull/111627) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se eliminó la fuente de diccionario `library`. `SOURCE(LIBRARY(...))` ahora falla con `UNKNOWN_ELEMENT_IN_CONFIG`, y la configuración del servidor `dictionaries_lib_path` está obsoleta y no tiene efecto. [#111980](https://github.com/ClickHouse/ClickHouse/pull/111980) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* TODO: @Mikhail Artemenko ¿Por qué esto es un cambio incompatible con versiones anteriores? La entrada del changelog no lo explica: las transacciones de discos de almacenamiento de objetos ahora usan de forma predeterminada las transacciones nativas del almacenamiento de metadatos en lugar de las transacciones simuladas anteriores. [#89658](https://github.com/ClickHouse/ClickHouse/pull/89658) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se eliminaron el reader y writer basados en la biblioteca Apache Arrow para los formatos `Arrow` y `ArrowStream`. La implementación nativa de ClickHouse, que es la predeterminada desde la versión 26.7, ahora es la única disponible. Las configuraciones `input_format_arrow_use_native_reader` y `output_format_arrow_use_native_writer` están obsoletas: se siguen aceptando, pero no tienen efecto, por lo que una consulta que las establecía en `0` para forzar la implementación de Apache Arrow ahora usa la nativa. [#111996](https://github.com/ClickHouse/ClickHouse/pull/111996) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* TODO: explicar la incompatibilidad con versiones anteriores: rechazar valores de configuración de intervalos de tiempo (milisegundos/segundos) que desborden los microsegundos de Int64. [#112757](https://github.com/ClickHouse/ClickHouse/pull/112757) ([Azat Khuzhin](https://github.com/azat)).
* Las credenciales TLS de un origen `MySQL` (`ssl_ca`, `ssl_cert`, `ssl_key`) ya no pueden especificarse como rutas de archivo desde SQL, por ejemplo, en `CREATE NAMED COLLECTION`, argumentos de consulta o `CREATE DICTIONARY`, porque el servidor abre esos archivos con sus propios privilegios. Las rutas siguen siendo compatibles en el archivo de configuración del servidor. En otros casos, proporcione el contenido del certificado o de la clave en los nuevos parámetros `ssl_ca_pem`, `ssl_cert_pem` y `ssl_key_pem`, que se enmascaran en los registros y en las consultas `SHOW`, al igual que las contraseñas. [#112070](https://github.com/ClickHouse/ClickHouse/pull/112070) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las comprobaciones de privilegios para los comandos `SYSTEM ... CACHE ON CLUSTER` ahora usan el privilegio específico de cada comando en lugar del grupo de privilegios `SYSTEM DROP CACHE`. Esto permite a quienes tienen un único privilegio granular de caché ejecutar el comando correspondiente e impide que quienes tienen el grupo ejecuten `SYSTEM SYNC FILESYSTEM CACHE ON CLUSTER` sin `SYSTEM SYNC FILESYSTEM CACHE`. [#114042](https://github.com/ClickHouse/ClickHouse/pull/114042) ([Groene AI](https://github.com/groeneai)).
* Para las vistas cuyo cuerpo es un `SELECT` simple sobre una única tabla `Distributed`, toda la consulta externa ahora se envía a los segmentos (nuevo ajuste `optimize_trivial_view_pushdown_to_distributed`, habilitado de forma predeterminada). Esto cambia el comportamiento observable de dichas vistas: `FINAL` y `SAMPLE` especificados en la referencia a la vista ahora se propagan a la tabla local del segmento en lugar de ignorarse, y `extremes` no se informa en clústeres de un solo segmento. Establezca `optimize_trivial_view_pushdown_to_distributed = 0` para restaurar el comportamiento anterior. [#101791](https://github.com/ClickHouse/ClickHouse/pull/101791) ([simonmichal](https://github.com/simonmichal)).
* TODO: esperar a la reversión de la reversión. Las partes de parche de `UPDATE` ligero ahora usan un nuevo formato en disco v2, ordenado por (`sorting_key..., _block_number, _block_offset`), y se aplican con un nuevo algoritmo de fusión. El pico de memoria queda limitado por la mayor secuencia de claves de ordenación iguales, en lugar de por el parche completo, y las actualizaciones que cruzan límites de fusión ya no recurren a la aplicación mediante Join en memoria. Las partes de parche en formato antiguo siguen siendo legibles. Durante una actualización progresiva desde una versión anterior a la 26.8, mantenga `patch_parts_version = 'v1'` o use el ajuste `compatibility` hasta que se actualicen todas las réplicas. [#103182](https://github.com/ClickHouse/ClickHouse/pull/103182) ([Anton Popov](https://github.com/CurtizJ)).
* Se añadió la cláusula `VALID FOR <interval>` a `CREATE USER` y `ALTER USER` como abreviatura de `VALID UNTIL`. La fecha límite de expiración se calcula como la hora actual más el intervalo indicado en el momento de ejecutar la consulta y se almacena en la forma `VALID UNTIL`. La columna `valid_until` de la tabla `system.users` ahora tiene el tipo `Array(DateTime64(0))` en lugar de `Array(DateTime)`, para que las fechas límite posteriores al año 2106 se representen con exactitud; las herramientas que leen esta columna deben admitir el nuevo tipo. [#110171](https://github.com/ClickHouse/ClickHouse/pull/110171) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `EXPLAIN SYNTAX` ahora devuelve la consulta reformateada como un único registro `String` (con saltos de línea incrustados) en lugar de un registro por línea, por lo que la salida es una única fila recuperable y de uso directo (por ejemplo, `SELECT count() FROM (EXPLAIN SYNTAX ...)` devuelve `1`). Esto se controla mediante la nueva opción `single_record`, cuyo valor predeterminado es `1`; establezca `single_record = 0` para restaurar la salida histórica de un registro por línea. Los demás tipos de `EXPLAIN` (`PLAN`/`PIPELINE`/`AST`) conservan su salida en árbol por línea. [#110479](https://github.com/ClickHouse/ClickHouse/pull/110479) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se amplió el rango admitido de `Date32` de `[1900-01-01, 2299-12-31]` a `[0000-01-01, 9999-12-31]`, igualándolo a `DateTime64`. El análisis sintáctico y las conversiones ahora aceptan el rango ampliado en lugar de ajustarse silenciosamente a los límites anteriores. Notas de compatibilidad con versiones anteriores: en la conversión numérica `toDate32(N)`, los valores de `[120530, 2932896]` ahora se interpretan como números de día (fechas de `2300-01-01` a `9999-12-31`) en lugar de timestamps Unix de principios de 1970, conforme a la regla de que un número que cabe en el rango de números de día es un número de día; los números inferiores al número de día de `0000-01-01` y los timestamps posteriores a `9999-12-31` se saturan en los nuevos límites. [#111534](https://github.com/ClickHouse/ClickHouse/pull/111534) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `arrayIntersect` y `arraySymmetricDifference` ya no tratan un valor repetido dentro de un único argumento como si apareciera en varios argumentos. Las consultas que dependan del comportamiento anterior ahora pueden devolver resultados distintos: `arrayIntersect([1], [2], [1, 1])` devuelve `[]` en lugar de `[1]`, `arrayIntersect([1, 2], [2], [1, 1, 2])` devuelve `[2]` en lugar de `[1, 2]`, y `arraySymmetricDifference([1], [2], [1, 1])` devuelve `[2, 1]` en lugar de `[2]`. Para `arraySymmetricDifference`, ya bastan dos argumentos: `arraySymmetricDifference([1], [2, 2])` devuelve `[2, 1]` en lugar de `[1]`. Ahora un valor se cuenta para un argumento solo si estaba presente en todos los argumentos anteriores, por lo que el resultado contiene exactamente los valores presentes en todos los argumentos. Como parte del mismo cambio, `arrayIntersect` crea su tabla hash a partir del argumento más pequeño en lugar de todos ellos, lo que la hace hasta 1,85 veces más rápida y reduce el uso de memoria en un tercio cuando los argumentos difieren mucho en tamaño. `arrayUnion` no se ve afectada. [#113021](https://github.com/ClickHouse/ClickHouse/pull/113021) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `disable_insertion_and_mutation` ahora impide el consumo en segundo plano de las tablas `Kafka`, `RabbitMQ` y `NATS`, pero sigue permitiendo escrituras directas en almacenamiento externo. Las tablas `Kafka2`, `NATS` y `RabbitMQ` sujetas a esta restricción no inicializan consumidores para operaciones `SELECT` directas. La configuración `message_queue_disable_insertion`, introducida recientemente, ahora requiere reiniciar el servidor. [#113660](https://github.com/ClickHouse/ClickHouse/pull/113660) ([Christoph Wurm](https://github.com/cwurm)).
* Una `PARTITION BY` u `ORDER BY` de ventana sobre una columna `AggregateFunction` ahora se rechaza con `ILLEGAL_COLUMN`, como ya ocurría con una `ORDER BY` de nivel superior sobre esa columna. Anteriormente, al menos un analizador aceptaba esa consulta, y la `PARTITION BY` de ventana particionaba de forma distinta según `max_threads`. El rechazo también abarca un estado anidado en `Array`, `Tuple`, `Map`, `Variant` o `SimpleAggregateFunction`. Una `SimpleAggregateFunction` sobre un tipo ordinario, `QBit`, así como `GROUP BY` y `DISTINCT` sobre un estado, no se ven afectados. [#113878](https://github.com/ClickHouse/ClickHouse/pull/113878) ([Groene AI](https://github.com/groeneai)).
* La configuración `include_from` ya no tiene որպես valor predeterminado `/etc/metrika.xml`. Anteriormente, ese archivo se utilizaba para sustituciones de configuración siempre que existía, aunque nada en la configuración de ClickHouse hacía referencia a él. Si dependía de ese archivo de sustituciones implícito, agregue explícitamente `<include_from>/etc/metrika.xml</include_from>` a cada archivo de configuración afectado; los archivos `users.xml` cargados por separado y las configuraciones XML de diccionarios necesitan su propio elemento `include_from`. [#114161](https://github.com/ClickHouse/ClickHouse/pull/114161) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El motor de tabla `NATS` acepta credenciales en línea mediante la nueva configuración `nats_credentials` (con la misma carga útil que un archivo `.creds`) y ya no acepta `nats_credential_file` desde SQL: la ruta hace referencia a un archivo en el sistema de archivos del servidor, que este abre con sus propios privilegios, por lo que solo puede especificarse en una colección con nombre definida en el archivo de configuración del servidor o como `nats.credential_file` en la propia configuración del servidor. Una consulta puede sustituir una ruta configurada de este modo por `nats_credentials` en línea, salvo que el operador la haya fijado con `<nats_credential_file overridable="false">`. Las tablas creadas antes de esta restricción siguen funcionando tras una actualización. [#114644](https://github.com/ClickHouse/ClickHouse/pull/114644) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las métricas asíncronas ahora pueden tener el tipo de datos `Map`, y las métricas por núcleo de CPU y por dispositivo se han convertido en métricas de clave-valor únicas: `OSUserTimeCPU0`, `OSUserTimeCPU1`, ... se convirtieron en una única métrica `OSUserTimeCPU` con un mapa que asocia el número de núcleo de CPU con el valor (y de forma similar para las demás métricas `OS*TimeCPU*`, `CPUFrequencyMHz_*`, `Temperature*`, `EDAC*`, `Block*_*`, `Network(Receive|Send)*_*`, `Disk*_*`, `*BlobsQueueEstimate` y `AsyncLogging*QueueSize`). `system.asynchronous_metrics` tiene una nueva columna `key_values Map(LowCardinality(String), Float64)` (la columna `value` es `NaN` para estas métricas), `system.asynchronous_metric_log` las registra como una fila por clave mediante una nueva columna `key`, el endpoint de Prometheus las exporta con una etiqueta (por ejemplo, `ClickHouseAsyncMetrics_BlockReadBytes{device="sda"}`) y `MetricsTransmitter` de Graphite las envía como `<prefix>.<Metric>.<key>`. [#115333](https://github.com/ClickHouse/ClickHouse/pull/115333) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-new-feature">
  #### Nueva funcionalidad
</div>

* Se añadieron las sentencias `CREATE HANDLER`, `ALTER HANDLER` y `DROP HANDLER` para definir handlers HTTP personalizados desde SQL, almacenados de forma persistente en almacenamiento local o en Keeper. También se añadieron las funciones `currentHandler` y `currentRequestURL`, la tabla `system.handlers` y las columnas `http_handler_name` / `http_request_url` en `system.query_log`. [#106231](https://github.com/ClickHouse/ClickHouse/pull/106231) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió la posibilidad de acceder a tablas y bases de datos mediante rutas URL en la interfaz HTTP (p. ej., \`/database/table.format.gz?filter=a>0\`), además de nuevas configuraciones (\`http\_allow\_database\_as\_path\`, \`http\_allow\_table\_as\_file\`, \`http\_allow\_filters\_as\_path\`, \`http\_allow\_filters\_as\_unrecognized\_url\_parameters\`, \`select\`, \`order\`, \`sort\`, \`filter\`, \`page\`, \`compression\`, \`format\`, \`input\_format\`, \`output\_format\`, \`default\_format\`, \`database\`) que se pueden combinar entre sí y con el parámetro URL `query` existente. [#105249](https://github.com/ClickHouse/ClickHouse/pull/105249) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadieron formatos de framing, seleccionados mediante la nueva configuración `framing_output_format`: multiplexan distintas partes de la respuesta de la consulta en un único flujo de respuesta HTTP: fragmentos de datos, totales y valores extremos, paquetes de progreso, eventos de perfil, logs del servidor y excepciones. Formatos de framing implementados: `None` (predeterminado; todo funciona como antes), `EventStream` (eventos enviados por el servidor HTTP), `JSONEachPacketBase64` y `JSONEachPacketString` (un objeto JSON por paquete con datos codificados en Base64 o como cadena). [#110127](https://github.com/ClickHouse/ClickHouse/pull/110127) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió la configuración de servidor `default_session_user`: el usuario con el que autenticarse cuando un cliente se conecta sin especificar un nombre de usuario (anteriormente estaba codificado de forma fija como `default`; los protocolos nativo, MySQL y PostgreSQL ahora aceptan un nombre de usuario vacío en lugar de rechazarlo, y Arrow Flight respeta esta configuración en lugar de su propio valor `default` codificado de forma fija). Los endpoints de protocolo componible de la sección `protocols` pueden anularla para cada endpoint mediante una clave `default_session_user`, de modo que distintos puertos de escucha puedan atender a diferentes usuarios anónimos. Establecerla como una cadena vacía prohíbe las conexiones sin nombre de usuario. Las conexiones entre servidores nunca usan el usuario de sesión predeterminado. [#110179](https://github.com/ClickHouse/ClickHouse/pull/110179) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se admiten operadores de canalización en consultas SQL: `FROM t |> WHERE x > 1 |> AGGREGATE count() AS c GROUP BY y |> ORDER BY c DESC |> LIMIT 10`, de forma similar a la sintaxis de canalización de GoogleSQL. Cualquier consulta `SELECT` puede ir seguida de una cadena de operadores `|>`, y cada operador envuelve la consulta precedente en una subconsulta, por lo que el AST resultante es el mismo que el de la consulta equivalente con subconsultas anidadas. En una consulta que comienza con la cláusula `FROM`, la cláusula `SELECT` ahora es opcional y, de forma predeterminada, es `SELECT *`. [#111151](https://github.com/ClickHouse/ClickHouse/pull/111151) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadieron las funciones `parseQueryToJSON` y `formatQueryFromJSON` para serializar y deserializar AST como JSON, así como un dialecto experimental `clickhouse_json` habilitado mediante `enable_json_ast_dialect`. [#100412](https://github.com/ClickHouse/ClickHouse/pull/100412) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#113480](https://github.com/ClickHouse/ClickHouse/pull/113480) ([Nikita Fomichev](https://github.com/fm4v)).
* Nueva configuración `run_query_in_background`. El servidor acepta la consulta, devuelve inmediatamente un resultado vacío y la ejecuta hasta completarla, independientemente de lo que ocurra con la conexión. El resultado se descarta. Realice el seguimiento de la consulta mediante su `query_id` en `system.processes` y `system.query_log`. Está destinada a consultas largas como `INSERT ... SELECT`, `CREATE TABLE … AS SELECT` o `CREATE MATERIALIZED VIEW … POPULATE` que no deben interrumpirse al perderse la conexión. [#112816](https://github.com/ClickHouse/ClickHouse/pull/112816) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se añadió una nueva tabla del sistema, `system.user_query_log`, que muestra a cada usuario sus propios registros de consultas sin requerir acceso a la tabla de registro de consultas. La implementación original y la idea pertenecen a Yue Ni (@niyue), [#104462](https://github.com/ClickHouse/ClickHouse/issues/104462). [#110156](https://github.com/ClickHouse/ClickHouse/pull/110156) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se implementaron los elementos restantes de la unificación de URL (issue [#59617](https://github.com/ClickHouse/ClickHouse/issues/59617)). La nueva configuración `s3_base` resuelve URL relativas en la función de tabla `s3` y el motor de tabla `S3` (así como en las funciones que comparten su configuración: `s3Cluster`, `gcs`, `oss`), de forma similar a `url_base`. El nuevo motor de base de datos `URL` trata los nombres de tabla como URL, los resuelve respecto a una URL base opcional y los enruta según el esquema de URL, de modo que los archivos, la web y el almacenamiento de objetos se gestionan de forma uniforme. Reemplaza `Filesystem` en la base de datos predeterminada (`Overlay`) de `clickhouse-local` por una URL base `file://`, por lo que los nombres de archivo simples siguen funcionando y también puede escribir `SELECT * FROM 'https://example.com/data.csv'`. [#111512](https://github.com/ClickHouse/ClickHouse/pull/111512) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadieron la función de tabla `bigquery` y el motor de tabla `BigQuery` para leer y escribir en tablas de Google BigQuery, incluidos los conjuntos de datos públicos. La estructura de la tabla se infiere del esquema de la tabla de BigQuery. La autenticación admite un token de acceso OAuth, una clave de cuenta de servicio en formato `JSON` y un cliente OAuth con un token de actualización. [#110166](https://github.com/ClickHouse/ClickHouse/pull/110166) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El uso simple de `CREATE MATERIALIZED VIEW ... POPULATE` ahora es atómico localmente: la vista se suscribe a los nuevos inserts de la tabla de origen y se toma una instantánea de los datos existentes bajo un breve bloqueo exclusivo sobre el origen, por lo que las filas insertadas a través del mismo servidor de forma concurrente con la carga inicial ya no se omiten ni se duplican (nueva configuración `materialized_views_populate_atomically`, activada de forma predeterminada). La garantía solo cubre la ruta de insert local; los inserts que llegan a otra réplica o a través de una ruta de escritura distribuida quedan fuera de este alcance, y se requiere un origen que pueda proporcionar una instantánea fijada (la familia `MergeTree` y `Memory`); otros orígenes, así como `CREATE OR REPLACE` / `REPLACE` y las vistas creadas en bases de datos `Replicated`, mantienen la carga inicial no atómica heredada. Ahora también se puede usar `POPULATE` junto con `TO` para rellenar la tabla de destino. [#108715](https://github.com/ClickHouse/ClickHouse/pull/108715) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Keeper ahora puede almacenar datos en disco mediante un árbol LSM personalizado. Su rendimiento es similar al del almacenamiento anterior. Use la configuración de coordinación `use_lsmt_storage = true` para activarlo, `storage_memory_only = false` para almacenar archivos en disco y añada `data_storage_path` o `data_storage_disk` a la configuración para especificar dónde almacenar los archivos. Para escribir en S3, apunte `data_storage_disk` a un disco de tipo `s3_plain`. [#113903](https://github.com/ClickHouse/ClickHouse/pull/113903) ([Michael Kolupaev](https://github.com/al13n321)).
* El catálogo de motores de "tablas S3" para data lakes, igual que [#103220](https://github.com/ClickHouse/ClickHouse/pull/103220), pero con un `INSERT` funcional. [#113505](https://github.com/ClickHouse/ClickHouse/pull/113505) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se añadió compatibilidad con Snowflake Horizon. Ahora puede consultar tablas Iceberg a través del catálogo Horizon de Iceberg. También puede escribir en tablas Iceberg mediante el catálogo. [#114547](https://github.com/ClickHouse/ClickHouse/pull/114547) ([Melvyn Peignon](https://github.com/melvynator)).
* Se añadió compatibilidad con el formato de archivo `Puffin`. Se puede usar con las funciones de tabla `file`, `url`, `s3` y otras similares. [#103936](https://github.com/ClickHouse/ClickHouse/pull/103936) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se añadió compatibilidad con el modo de marco `GROUPS` para las funciones de ventana (SQL:2011), por ejemplo, `any(price) OVER (PARTITION BY symbol ORDER BY ts GROUPS BETWEEN CURRENT ROW AND 1 FOLLOWING)`. En un marco `GROUPS`, los límites cuentan grupos de pares completos —conjuntos de filas con el mismo valor para la clave `ORDER BY`—, por lo que `N PRECEDING`/`N FOLLOWING` significan `N` grupos de pares antes/después del grupo de pares de la fila actual, en lugar de filas físicas (`ROWS`) o distancias entre valores de `ORDER BY` (`RANGE`). [#108653](https://github.com/ClickHouse/ClickHouse/pull/108653) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se añadió la función de tabla `mergeTreeCodecBlockCounts`, que informa de cuántos bloques comprimidos usan cada códec para cada parte, columna y subflujo de una tabla `MergeTree`. [#109623](https://github.com/ClickHouse/ClickHouse/pull/109623) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se añadió el tipo de datos geográficos `MultiPoint`, almacenado como `Array(Point)`, y se incluyó en el tipo `Geometry`. [#109951](https://github.com/ClickHouse/ClickHouse/pull/109951) ([David Meng](https://github.com/davidmenggx)).
* Se añadió la columna virtual `_etag` para el almacenamiento `HDFS`. [#108255](https://github.com/ClickHouse/ClickHouse/pull/108255) ([Zhang Yifan](https://github.com/zhangyifan27)).
* El lector nativo y el formato de salida `ORC` ahora admiten `uniontype` y lo asignan al tipo `Variant` de ClickHouse. Anteriormente, la lectura de esas columnas fallaba con `Unsupported ORC type` y su escritura con `ILLEGAL_COLUMN`. [#110078](https://github.com/ClickHouse/ClickHouse/pull/110078) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#110085](https://github.com/ClickHouse/ClickHouse/pull/110085) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió un tokenizador `japanese` para los índices de texto y las funciones `tokens`, `hasAnyTokens` y `hasAllTokens`, que utiliza el analizador morfológico MeCab. El diccionario se carga en tiempo de ejecución desde una ubicación definida en la configuración del servidor y se verifica con una suma de comprobación SHA-256 antes de usarse. [#111420](https://github.com/ClickHouse/ClickHouse/pull/111420) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Se añadió un tokenizador `chinese` para la función `tokens` y los índices de texto de `MergeTree`. Segmenta texto chino en palabras mediante un diccionario y un modelo oculto de Markov (el algoritmo sigue a [jieba](https://github.com/fxsjy/jieba)), con granularidad `coarse_grained` (predeterminada) y `fine_grained`. Continúa [#80174](https://github.com/ClickHouse/ClickHouse/issues/80174). [#89945](https://github.com/ClickHouse/ClickHouse/pull/89945) ([Amos Bird](https://github.com/amosbird)).
* Se añadió un nuevo tokenizador `icu` para los índices de texto y las funciones `tokens`, `hasAnyTokens` y `hasAllTokens`, que proporciona segmentación de palabras Unicode adaptada a la configuración regional, incluida la segmentación basada en diccionario para idiomas como el chino, el japonés y el tailandés. [#109940](https://github.com/ClickHouse/ClickHouse/pull/109940) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Se añadió un tokenizador `splitByRegexp` para índices de texto y la función `tokens`. Divide la entrada en tokens mediante una expresión regular como separador; por ejemplo, `tokenizer = splitByRegexp('[^\p{L}\p{N}#+]+')`, lo que permite conservar tokens que contienen caracteres especiales, como `C++` o `C#`, que otros tokenizadores dividirían. [#110002](https://github.com/ClickHouse/ClickHouse/pull/110002) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* El panel de control HTTP de Keeper ahora incluye una pestaña Clúster que muestra la pertenencia a Raft como un gráfico de topología con colores de estado, retraso y prioridad, lo que permite ver qué nodos están en buen estado, presentan retraso o son inaccesibles, y abrir directamente el panel de control del líder. [#111655](https://github.com/ClickHouse/ClickHouse/pull/111655) ([yanglongwei](https://github.com/ylw510)).
* Una nueva sección de configuración del servidor, `create_union_system_log_tables`, solicita la creación y el mantenimiento automáticos de tablas `all_...` (por ejemplo, `system.all_query_log`) que consultan la unión de una tabla de registro del sistema, sus versiones rotadas o las mismas tablas en todas las réplicas de un clúster. Las funciones de tabla `remote`, `remoteSecure`, `cluster` y `clusterAllReplicas` ahora aceptan una cláusula `SETTINGS` final con los ajustes del almacenamiento `Distributed` que crean; por ejemplo, `clusterAllReplicas('default', system.query_log, SETTINGS skip_unavailable_shards = 1)`. [#112670](https://github.com/ClickHouse/ClickHouse/pull/112670) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió el ajuste `nats_credentials` al motor de tabla NATS, lo que permite a los usuarios especificar credenciales de NATS en línea como una cadena que coincide con el contenido de un archivo `.creds`. [#110733](https://github.com/ClickHouse/ClickHouse/pull/110733) ([addshore](https://github.com/addshore)).
* Se añadió el algoritmo `IEJoin`, basado en ordenación, para joins cuya cláusula `ON` contiene dos comparaciones de desigualdad (`<`, `<=`, `>`, `>=`) entre las tablas unidas. Se habilita añadiendo `ie_join` al ajuste `join_algorithm`. Los tipos compatibles son `ALL INNER/LEFT/RIGHT/FULL JOIN` y `SEMI`/`ANTI LEFT/RIGHT JOIN`. Anteriormente, estas consultas se ejecutaban como un `CROSS JOIN` con un filtro (solo `INNER`), lo cual resulta mucho más lento en tablas grandes. [#109920](https://github.com/ClickHouse/ClickHouse/pull/109920) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se añadió la función de agregación `gini`, que calcula el coeficiente de Gini de valores numéricos finitos y no negativos, incluidas las agregaciones agrupadas y distribuidas. [#112280](https://github.com/ClickHouse/ClickHouse/pull/112280) ([Amirreza Akhondi](https://github.com/amirreza1307)). [#114643](https://github.com/ClickHouse/ClickHouse/pull/114643) ([Groene AI](https://github.com/groeneai)).
* Se añadió el formato de salida `HiveText`, que escribe texto `LazySimpleSerDe` de Apache Hive. Los campos se separan mediante `\x01`; las filas, mediante el ajuste `format_hive_text_rows_delimiter` (predeterminado: `\n`); y los valores anidados `Array`, `Map` y `Tuple` usan la lista de separadores de Hive. La salida está destinada al `LazySimpleSerDe` predeterminado de Hive y no es simétrica con la entrada `HiveText` de ClickHouse para valores anidados ni delimitadores de filas personalizados. [#107582](https://github.com/ClickHouse/ClickHouse/pull/107582) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió compatibilidad con etiquetas constantes en el endpoint de métricas de Prometheus: una nueva sección `<labels>` dentro de `<prometheus>` añade las etiquetas configuradas a cada métrica expuesta, lo que ayuda a distinguir varios clústeres recopilados por el mismo Prometheus. Los valores de las etiquetas admiten sustituciones de configuración estándar, como `from_env`. Cierra [#85969](https://github.com/ClickHouse/ClickHouse/issues/85969). [#111672](https://github.com/ClickHouse/ClickHouse/pull/111672) ([Valery Petrov](https://github.com/valerypetrov)).
* Se añadió la configuración `always_fetch_mutated_part`. Cuando está habilitada, una réplica puede descargar partes modificadas de otra réplica en lugar de ejecutar las mutaciones localmente. [#113020](https://github.com/ClickHouse/ClickHouse/pull/113020) ([Rory Shanks](https://github.com/rorylshanks)).
* Se añadió la función de agregación `mergedJSONPatch` para agregar parches de combinación de estilo RFC 7396 sobre valores `JSON`, con compatibilidad para combinar estados y usar `AggregatingMergeTree`. Se puede agregar una columna `JSON` usando una marca de tiempo u otra columna de ordenación como clave de ordenación para calcular el estado más reciente. [#108349](https://github.com/ClickHouse/ClickHouse/pull/108349) ([larryluogit](https://github.com/larryluogit)).
* Se añadió la función `aiSimilarity`, que calcula la similitud semántica entre dos textos mediante un modelo de embedding. Devuelve un `Nullable(Float32)` en `[-1, 1]`, donde `1` significa que los textos son idénticos, o `NULL` si un operando es `NULL`/está vacío o si no se pudo generar su embedding. [#110777](https://github.com/ClickHouse/ClickHouse/pull/110777) ([David Meng](https://github.com/davidmenggx)).
* Se añadieron las configuraciones de restauración `restore_table_data`, `restore_access_entities` y `restore_functions` para controlar de forma granular qué se restaura. Estas pueden anular `structure_only` para categorías individuales; por ejemplo, `structure_only=true, restore_access_entities=true` restaura las definiciones de tablas y las entidades de acceso sin restaurar los datos de las tablas. [#102402](https://github.com/ClickHouse/ClickHouse/pull/102402) ([Nikita Fomichev](https://github.com/fm4v)).
* El operador de subíndice de arrays admite un array de enteros como índice: `arr[indexes]` devuelve los elementos de todas las posiciones indicadas, de forma equivalente a `arrayMap(i -> arr[i], indexes)`. [#108371](https://github.com/ClickHouse/ClickHouse/pull/108371) ([folly](https://github.com/ucasfl)).
* Se añadió la función `notHas`, la negación de `has` para arrays, mapas y JSON. Cuando el conjunto de búsqueda es un array constante, `notHas(constant_array, x)` se reescribe como `x NOT IN constant_array` mediante `optimize_rewrite_has_to_in` (habilitada de forma predeterminada), por lo que se ejecuta mediante una búsqueda en un conjunto y puede realizar poda mediante el índice de clave primaria, como `NOT IN`. [#109926](https://github.com/ClickHouse/ClickHouse/pull/109926) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Las funciones `arrayElement` (el operador `vec[n]`) y `arraySlice` ahora funcionan con el tipo de datos `QBit`: `qbit[n]` devuelve el elemento n-ésimo del vector con precisión completa, y `arraySlice(qbit, offset, length)` devuelve una proyección sobre un subconjunto de dimensiones. Ambas leen únicamente los planos de bits de los grupos de stride necesarios, y los segmentos alineados con los límites de los grupos de stride reutilizan los flujos almacenados sin copiar datos. Esto resuelve [#109942](https://github.com/ClickHouse/ClickHouse/issues/109942). [#109953](https://github.com/ClickHouse/ClickHouse/pull/109953) ([Utkal Singh](https://github.com/Utkal059)).
* Se admite PNG animado en el formato de salida `PNG`. Una columna `t` convierte el resultado de una consulta en una animación; la escala temporal de `t` se establece mediante `output_format_image_time_multiplier_seconds` y `output_format_image_time_divisor_seconds`, mientras que `output_format_image_streaming_animation` permite escribir los fotogramas a medida que los produce la consulta, en lugar de almacenarlos en memoria. [#112846](https://github.com/ClickHouse/ClickHouse/pull/112846) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Nueva función `aiRedact` que detecta y redacta información de identificación personal (PII) en texto mediante un proveedor de LLM. Especifique las categorías que se deben redactar (por ejemplo, `['email', 'name']`) o pase un array vacío para usar un conjunto predeterminado de categorías de PII. Los valores coincidentes se sustituyen por un token (`[REDACTED]` de forma predeterminada). [#110464](https://github.com/ClickHouse/ClickHouse/pull/110464) ([David Meng](https://github.com/davidmenggx)).
* Añade la función `aiFilter`, que evalúa una condición en lenguaje natural sobre texto mediante un LLM y devuelve `UInt8` para usarla en `WHERE`, `PREWHERE` y `JOIN ... ON`. [#110594](https://github.com/ClickHouse/ClickHouse/pull/110594) ([yanglongwei](https://github.com/ylw510)).
* Admite conexiones TLS/SSL a PostgreSQL para el motor de tabla `PostgreSQL`, la función de tabla `postgresql`, los motores de base de datos `PostgreSQL` y `MaterializedPostgreSQL`, y los diccionarios `PostgreSQL`: `sslmode`, además de certificados y clave, proporcionados como contenido literal (`sslrootcert_pem`, `sslcert_pem`, `sslkey_pem`; ocultos como contraseñas) o como rutas (`sslrootcert`, `sslcert`, `sslkey`; aceptadas únicamente desde una colección con nombre definida en el archivo de configuración del servidor). [#110615](https://github.com/ClickHouse/ClickHouse/pull/110615) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El servidor de ClickHouse ahora cuenta con un puerto de introspección. Es un receptor TCP del protocolo nativo que se inicia antes de que el servidor comience a adjuntar tablas y se detiene solo después de que finalice la desvinculación de las tablas. Durante estos intervalos, un operador puede conectarse a él con `clickhouse client` y ejecutar consultas como `SHOW PROCESSLIST`, `SELECT * FROM system.stack_trace` o `SYSTEM INSTRUMENT ADD 'QueryMetricLog::startQuery' SLEEP ENTRY 0.5`. Además, el valor predeterminado de la configuración del servidor `shutdown_wait_unfinished` aumenta de 5 a 120 segundos. El valor predeterminado anterior era menor que el intervalo de sondeo de conexiones, por lo que el servidor podía forzar su salida durante el apagado en lugar de esperar a que finalizaran las conexiones pendientes. [#110838](https://github.com/ClickHouse/ClickHouse/pull/110838) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Introduce métricas de ZooKeeper emuladas en el comando `mntr` de Keeper: `zk_leader_uptime`, `zk_sum_election_time`, `zk_cnt_election_time`, `zk_sum_leader_unavailable_time`, `zk_cnt_leader_unavailable_time`; también introduce métricas relacionadas con el líder, exclusivas de Keeper: `KeeperLastLeaderElectionTime`, `KeeperLastLeaderUnavailableTime`. [#113334](https://github.com/ClickHouse/ClickHouse/pull/113334) ([Maxim Orlovsky](https://github.com/UberDever)).
* Admite ALTER TABLE ... MODIFY PROJECTION para cambiar la configuración a nivel de proyección (p. ej., index\_granularity) de una proyección existente sin reconstruirla. La nueva configuración se aplica de forma diferida mediante fusiones. [#113343](https://github.com/ClickHouse/ClickHouse/pull/113343) ([Diego Gomes Tomé](https://github.com/diegomestre2)).
* Añade una columna `finish_time` a `system.mutations` que registra cuándo se completó una mutación. Las mutaciones sin finalizar y aquellas cuyo momento de finalización se desconoce notifican cero. [#113474](https://github.com/ClickHouse/ClickHouse/pull/113474) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Añade un nuevo nivel de funcionalidad `private preview` entre `experimental` y `beta`, de modo que los niveles de funcionalidad ahora se ordenan como `experimental < private preview < beta < production`. La configuración del servidor `allow_feature_tier` incorpora un nivel: `0` permite todos los niveles, `1` excluye experimental, `2` también excluye private preview y `3` permite únicamente configuraciones de producción. Las configuraciones que anteriormente fijaban `allow_feature_tier = 2` para permitir únicamente configuraciones de producción ahora deben usar `3`. Cierra [#113481](https://github.com/ClickHouse/ClickHouse/issues/113481). [#113581](https://github.com/ClickHouse/ClickHouse/pull/113581) ([Groene AI](https://github.com/groeneai)).
* La UI web de SQL integrada (`/play`) ahora permite ordenar un resultado por sus columnas, filtrarlo por sus valores y paginarlo sin editar la consulta. En cada encabezado de columna aparecen flechas de ordenación y un campo de filtro; al seleccionar una celda, se ofrecen las comparaciones adecuadas para su valor; y, debajo de los resultados que no caben en una sola pantalla, aparece un paginador con tamaño de página ajustable. Todo se realiza en el servidor mediante los ajustes de construcción de consultas `order`, `filter`, `limit` y `page`, por lo que se configura el resultado completo, no solo las filas que se muestran; la ordenación, los filtros y la página seleccionados se incluyen en la URL, de modo que un enlace compartido reproduce el resultado. [#115540](https://github.com/ClickHouse/ClickHouse/pull/115540) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `chdig` [v26.8.1](https://github.com/azat/chdig/releases/tag/v26.8.1): ratatui, paneles de tmux, sesiones de tmuxinator, logs compartidos con colores y [recorrido por las funcionalidades](https://github.com/azat/chdig/blob/v26.8.1/Documentation/Features.md). [#115216](https://github.com/ClickHouse/ClickHouse/pull/115216) ([Azat Khuzhin](https://github.com/azat)).

<div id="268-experimental-feature">
  #### Funcionalidad experimental
</div>

* Se añadió un optimizador de costo basado en Cascades experimental para planes de consultas distribuidas, habilitado mediante `enable_cascades_optimizer = 1` junto con `make_distributed_plan = 1`. Elige, en función del costo estimado, entre estrategias de join shuffle, broadcast, replicado y local; agregación en dos fases, shuffle y local; top-N distribuido en dos etapas; y lecturas paralelas y replicadas, e inserta operadores exchange según sea necesario. [#86353](https://github.com/ClickHouse/ClickHouse/pull/86353) ([Alexander Gololobov](https://github.com/davenger)).
* Se añadió la configuración experimental de `MergeTree` `enable_adaptive_codec_selection`. Cuando está habilitada, las fusiones y mutaciones seleccionan, para las columnas que usan el códec predeterminado, el códec que genera la menor salida por bloque. [#111834](https://github.com/ClickHouse/ClickHouse/pull/111834) ([Raufs Dunamalijevs](https://github.com/rienath)). \* La selección adaptativa de códecs ahora comprime con cada códec candidato como máximo una vez por bloque, en lugar de medir todos los candidatos y volver a comprimir con el ganador. [#113511](https://github.com/ClickHouse/ClickHouse/pull/113511) ([Raufs Dunamalijevs](https://github.com/rienath)).
* El binario `clickhouse` se compila para WebAssembly (`wasm64`, mediante Emscripten), y `clickhouse local` ejecuta consultas, incluidas las de tablas `MergeTree`, con Node.js ≥ 24 y en el navegador. Un nuevo trabajo de CI, `Build (wasm64)`, fija la compilación y la ruta de ejecución de Node.js (la ruta del navegador todavía no está cubierta por CI) y proporciona el módulo de WebAssembly como artefacto. [#113404](https://github.com/ClickHouse/ClickHouse/pull/113404) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `parallel_replicas_plan_based` ahora determina el límite local/remoto optimizando el plan de consulta, puede paralelizar consultas sobre vistas con un `UNION` sin `parallel_replicas_allow_view_over_mergetree`, recurre al plan local para consultas `IN (subquery)` en lugar de producir un error y también distribuye `JOIN`s aptos (`INNER`, `LEFT`, `RIGHT`, incluidos `SEMI`/`ANTI`). [#111063](https://github.com/ClickHouse/ClickHouse/pull/111063) ([Igor Nikonov](https://github.com/devcrafter)). [#112268](https://github.com/ClickHouse/ClickHouse/pull/112268) ([Igor Nikonov](https://github.com/devcrafter)). [#112443](https://github.com/ClickHouse/ClickHouse/pull/112443) ([Igor Nikonov](https://github.com/devcrafter)).
* Los planes de consultas distribuidas (`make_distributed_plan`) ahora también admiten consultas cuya fuente se sabe durante la planificación que no producirá filas, como lecturas de una tabla `MergeTree` vacía. [#111941](https://github.com/ClickHouse/ClickHouse/pull/111941) ([Groene AI](https://github.com/groeneai)).
* Se añadió la configuración `use_projection_index_in_read_pools`, deshabilitada de forma predeterminada. Cuando está habilitada, los rangos completamente filtrados por una proyección o un índice de salto se descartan dentro de los grupos de lectura de `MergeTree` antes de crear tareas de lectura para ellos, en lugar de omitirse gránulo a gránulo durante la lectura. Esto evita crear tareas de lectura y configurar lectores para datos que no se van a leer. [#110291](https://github.com/ClickHouse/ClickHouse/pull/110291) ([Nikolai Kochetov](https://github.com/KochetovNicolai)). [#112296](https://github.com/ClickHouse/ClickHouse/pull/112296) ([Anton Popov](https://github.com/CurtizJ)).
* PromQL: se corrigieron las operaciones con vectores instantáneos sin etiquetas, p. ej., `vector(1) + vector(2)`, `topk(1, vector(1))`, `label_replace(vector(1), ...)` y operadores binarios con `on()`, que fallaban con un error de tipo. [#111872](https://github.com/ClickHouse/ClickHouse/pull/111872) ([Valery Petrov](https://github.com/valerypetrov)).
* PromQL: se implementaron las funciones `changes` y `resets`. [#112352](https://github.com/ClickHouse/ClickHouse/pull/112352) ([Valery Petrov](https://github.com/valerypetrov)).
* Informa del error que canceló una consulta distribuida (`make_distributed_plan = 1`) en lugar de simplemente `QUERY_WAS_CANCELLED`. Anteriormente, el error real de una tarea de worker fallida solo era visible en el registro del servidor. [#112590](https://github.com/ClickHouse/ClickHouse/pull/112590) ([Alexander Gololobov](https://github.com/davenger)).
* Cuando `make_distributed_plan = 1`, ClickHouse ahora deshabilita las funcionalidades que los planes de consulta distribuida todavía no admiten, en lugar de dejar que fallen más adelante. Cierra [#109476](https://github.com/ClickHouse/ClickHouse/issues/109476). [#112463](https://github.com/ClickHouse/ClickHouse/pull/112463) ([alesapin](https://github.com/alesapin)).
* Los planes de consulta distribuida (`make_distributed_plan`) ahora usan materialización diferida para consultas `ORDER BY ... LIMIT k`. [#113111](https://github.com/ClickHouse/ClickHouse/pull/113111) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Admite funciones de ventana sin particionar (`OVER (ORDER BY ...)`) en planes de consulta distribuida (`make_distributed_plan`). Anteriormente, cualquier consulta con una función de ventana fallaba porque `WindowStep` no se podía serializar para su ejecución remota; por ahora, las ventanas con `PARTITION BY` siguen rechazándose. [#109802](https://github.com/ClickHouse/ClickHouse/pull/109802) ([Vighnesh Pathrikar](https://github.com/VighneshPath)).
* Se añadió la configuración `use_query_condition_cache_for_top_k`, que habilita el uso de la caché de condiciones de consulta para consultas `ORDER BY ... LIMIT n` (TopK). [#111492](https://github.com/ClickHouse/ClickHouse/pull/111492) ([Alexey Milovidov](https://github.com/alexey-milovidov)). La [caché de condiciones de consulta](/es/operations/query-condition-cache) ahora está habilitada de forma predeterminada para las consultas que usan la optimización `ORDER BY <column> LIMIT n` (TopK). Puede volver a deshabilitarse con la configuración `use_query_condition_cache_for_top_k`. [#114539](https://github.com/ClickHouse/ClickHouse/pull/114539) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió afinidad estática entre particiones y segmentos para `StorageKafka2` mediante las configuraciones `kafka_partition_shard_num` y `kafka_shard_count`, lo que permite que varios segmentos de ClickHouse consuman de forma determinista subconjuntos disjuntos de particiones de Kafka. [#108886](https://github.com/ClickHouse/ClickHouse/pull/108886) ([johnjing](https://github.com/JingYanchao)).
* Refuerza las funciones de IA experimentales: deniega de forma predeterminada los endpoints inseguros (`http`) hacia hosts remotos (nueva configuración `ai_function_allow_insecure_endpoint`), limita de forma predeterminada las llamadas salientes a la API por consulta (`ai_function_max_api_calls_per_query` ahora tiene un valor predeterminado de `1000`) y depura las respuestas de error del proveedor que se escriben en los registros. [#111286](https://github.com/ClickHouse/ClickHouse/pull/111286) ([George Larionov](https://github.com/george-larionov)).
* PromQL: `quantile` con un nivel de cuantíl fuera de \[0, 1] ahora devuelve -Inf/+Inf/NaN, como Prometheus, en lugar de generar un error, y `histogram_quantile` ahora ignora las series de entrada cuya etiqueta `le` falta o no se puede analizar, como Prometheus. [#111871](https://github.com/ClickHouse/ClickHouse/pull/111871) ([Valery Petrov](https://github.com/valerypetrov)).
* Permite identificadores de varios componentes en tablas TimeSeries. [#112799](https://github.com/ClickHouse/ClickHouse/pull/112799) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se añadieron las configuraciones de `TimeSeries` `samples_index_granularity` y `tags_inner_granularity` para controlar la granularidad del índice de las tablas internas. [#113075](https://github.com/ClickHouse/ClickHouse/pull/113075) ([Vitaly Baranov](https://github.com/vitlibar)).
* PromQL: se añadió la función `deriv` y se corrigió un error por el que la función de agregación en la que se basa devolvía valores 1000 veces menores con marcas de tiempo de resolución de milisegundos. [#112360](https://github.com/ClickHouse/ClickHouse/pull/112360) ([Valery Petrov](https://github.com/valerypetrov)).
* PromQL: rechazar secuencias de escape entre delimitadores no válidas en cadenas y puntos de código sustitutos de Unicode no válidos. [#113587](https://github.com/ClickHouse/ClickHouse/pull/113587) ([Minh Vu](https://github.com/fallintoplace)). [#113203](https://github.com/ClickHouse/ClickHouse/pull/113203) ([Minh Vu](https://github.com/fallintoplace)).
* PromQL: conservar los valores finitos al usar el operador módulo con un divisor infinito. [#113746](https://github.com/ClickHouse/ClickHouse/pull/113746) ([Minh Vu](https://github.com/fallintoplace)).
* PromQL: las funciones de fecha y hora `hour`, `minute`, `month`, `year`, `day_of_week`, `day_of_month`, `day_of_year` y `days_in_month` ahora se pueden llamar sin argumentos; de forma predeterminada usan `vector(time())`, como en Prometheus. [#111869](https://github.com/ClickHouse/ClickHouse/pull/111869) ([Valery Petrov](https://github.com/valerypetrov)).
* PromQL ahora admite el parámetro `lookback_delta` de la API HTTP de Prometheus para consultas instantáneas y de intervalo. [#113971](https://github.com/ClickHouse/ClickHouse/pull/113971) ([Minh Vu](https://github.com/fallintoplace)).
* Los planes de consulta distribuidos (`make_distributed_plan`) ahora admiten `IN (subquery)` sin reescribirlo como un `JOIN`: el conjunto se crea una vez en el iniciador y sus valores se envían junto con las tareas de los workers. Se elimina la sobrescritura forzada `rewrite_in_to_join`; la reescritura sigue disponible como configuración explícita. [#113826](https://github.com/ClickHouse/ClickHouse/pull/113826) ([Alexander Gololobov](https://github.com/davenger)).
* Las consultas de streaming admiten marcas de agua. [#106169](https://github.com/ClickHouse/ClickHouse/pull/106169) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se añadió una caché de sistema de archivos de lectura directa a la ruta de lectura experimental de `ReaderExecutor` (`use_reader_executor`, deshabilitada de forma predeterminada). [#110029](https://github.com/ClickHouse/ClickHouse/pull/110029) ([Sema Checherinda](https://github.com/CheSema)).
* PromQL: se implementaron las funciones `clamp`, `clamp_min`, `clamp_max` y `round`. [#111870](https://github.com/ClickHouse/ClickHouse/pull/111870) ([Valery Petrov](https://github.com/valerypetrov)).
* Recopilar correctamente las estadísticas de inserción y las consultas a través del endpoint remote-write de Prometheus. [#112825](https://github.com/ClickHouse/ClickHouse/pull/112825) ([James Cunningham](https://github.com/JTCunning)).
* Los operadores de agregación de PromQL ahora aceptan combinaciones de mayúsculas y minúsculas, como Prometheus. [#114076](https://github.com/ClickHouse/ClickHouse/pull/114076) ([Minh Vu](https://github.com/fallintoplace)).
* TimeSeries: almacenar todas las etiquetas en la columna `tags`. [#114300](https://github.com/ClickHouse/ClickHouse/pull/114300) ([Vitaly Baranov](https://github.com/vitlibar)).
* Aplicar la optimización de lectura en orden a las consultas `ORDER BY` cuando `parallel_replicas_plan_based` está habilitado: la ordenación ahora se envía a las réplicas y se combina en el iniciador, de modo que cada réplica lee según el orden de la clave de ordenación. También corrige `Unknown function __topKFilter` para `ORDER BY` en una columna que no forma parte de la clave primaria cuando esta configuración está habilitada. [#114315](https://github.com/ClickHouse/ClickHouse/pull/114315) ([Igor Nikonov](https://github.com/devcrafter)).
* Rechazar saltos de línea literales en cadenas PromQL normales entre comillas. [#114381](https://github.com/ClickHouse/ClickHouse/pull/114381) ([Minh Vu](https://github.com/fallintoplace)).
* Corregir las claves `GROUP BY` duplicadas en la estrategia de agregación parcial de `make_distributed_plan` y permitir esta estrategia para agregaciones sobre una lectura distribuida. [#114523](https://github.com/ClickHouse/ClickHouse/pull/114523) ([Alexander Gololobov](https://github.com/davenger)).
* Generar una excepción cuando se infrinja la lista de permitidos de tipos de índices hipotéticos para WHATIF. [#114646](https://github.com/ClickHouse/ClickHouse/pull/114646) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Restaura la lectura de subcolumnas cuantizadas para la búsqueda vectorial (introducida en la versión 26.7). [#114763](https://github.com/ClickHouse/ClickHouse/pull/114763) ([Shankar Iyer](https://github.com/shankar-iyer)).
* El motor de tabla experimental `TimeSeries` ya no aplica el códec `Gorilla` a las columnas `value` creadas automáticamente en la tabla interna de muestras; ahora usan `CODEC(ZSTD(1))` de forma predeterminada. Las columnas declaradas explícitamente conservan los códecs especificados por el usuario. El valor predeterminado de la columna `timestamp` no cambia (`CODEC(DoubleDelta, ZSTD(1))`). [#114790](https://github.com/ClickHouse/ClickHouse/pull/114790) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Una consulta con plan distribuido (`make_distributed_plan`) ahora detiene las etapas anteriores cuando se alcanza un `LIMIT`, en lugar de calcular y descartar el resultado completo. [#114806](https://github.com/ClickHouse/ClickHouse/pull/114806) ([Alexander Gololobov](https://github.com/davenger)).
* Se añadió un nivel de caché de páginas en espacio de usuario a la ruta de lectura del `ReaderExecutor` experimental (`use_reader_executor`, desactivado de forma predeterminada). Ante un fallo de caché, el ejecutor ahora rellena la caché de páginas en espacio de usuario y sirve desde ella las lecturas posteriores, sin copia. [#114890](https://github.com/ClickHouse/ClickHouse/pull/114890) ([Sema Checherinda](https://github.com/CheSema)).
* Admite `ROLLUP`, `CUBE`, `GROUPING SETS` y la función `grouping` en consultas ejecutadas con `make_distributed_plan = 1`. [#114950](https://github.com/ClickHouse/ClickHouse/pull/114950) ([Alexander Gololobov](https://github.com/davenger)).
* Corrige el error `Illegal type Decimal(18, 0) of argument of function toIntervalNanosecond` cuando una consulta PromQL usa `offset` dentro de un selector de rango; por ejemplo, `rate(m[2m] offset 5m)`. [#114997](https://github.com/ClickHouse/ClickHouse/pull/114997) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Un valor muy elevado de `distributed_plan_workers_num` ya no hace que el servidor se aborte con un `std::length_error` cuando están habilitados los experimentales `make_distributed_plan` y `enable_cascades_optimizer`. Este número de nodos ahora se rechaza con `INVALID_SETTING_VALUE`. [#115398](https://github.com/ClickHouse/ClickHouse/pull/115398) ([Groene AI](https://github.com/groeneai)).
* Admite la agregación `GROUPING SETS` en planes distribuidos creados por el optimizador Cascades (`make_distributed_plan = 1, enable_cascades_optimizer = 1`). [#115426](https://github.com/ClickHouse/ClickHouse/pull/115426) ([Alexander Gololobov](https://github.com/davenger)).
* Las tablas `TimeSeries` ahora pueden conservar una tabla de "muestras recientes": cuando la nueva configuración del motor `recent_samples_ttl_seconds` es distinta de cero, el motor crea una copia de la tabla de muestras con TTL (particionada por `recent_samples_partition_by`; por día de forma predeterminada) en la que se escribe con cada inserción. Las consultas PromQL cuyo intervalo de tiempo se ajusta a la ventana de TTL leen automáticamente de ella, lo que acelera varias veces las reglas de alerta/registro y los dashboards de intervalos cortos en tablas grandes. La preferencia se puede desactivar con la nueva configuración a nivel de consulta `time_series_prefer_recent_samples_table`. [#115441](https://github.com/ClickHouse/ClickHouse/pull/115441) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Implementa consultas SELECT desde TimeSeries. [#115622](https://github.com/ClickHouse/ClickHouse/pull/115622) ([Vitaly Baranov](https://github.com/vitlibar)).
* Implementa el endpoint `/api/v1/series` de la API HTTP de Prometheus para las tablas `TimeSeries`: selectores de series `match[]` (los valores repetidos se unen), un intervalo de tiempo `start`/`end` opcional y un parámetro `limit` opcional. [#115676](https://github.com/ClickHouse/ClickHouse/pull/115676) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Los planes de consultas distribuidas (`make_distributed_plan`) ahora detienen de inmediato las etapas upstream inactivas tras satisfacerse un `LIMIT`: un sink de exchange inactivo lee `NoMoreDataNeeded` en cuanto llega, y un source de exchange inactivo detecta que su salida se ha cerrado y propaga la detención upstream. Anteriormente, estas etapas seguían leyendo y procesando datos que nadie consume. [#115690](https://github.com/ClickHouse/ClickHouse/pull/115690) ([Alexander Gololobov](https://github.com/davenger)).
* Las réplicas paralelas automáticas ahora pueden recopilar estadísticas de tiempo de ejecución y habilitar réplicas paralelas para consultas compatibles cuando `parallel_replicas_plan_based` está habilitado. [#115788](https://github.com/ClickHouse/ClickHouse/pull/115788) ([Igor Nikonov](https://github.com/devcrafter)).
* Registrar una tabla externa de muestras recientes de una tabla TimeSeries como dependencia referencial. [#115944](https://github.com/ClickHouse/ClickHouse/pull/115944) ([Groene AI](https://github.com/groeneai)).

<div id="268-performance-improvement">
  #### Mejora del rendimiento
</div>

* Nuevo algoritmo adaptativo para `GROUP BY` paralelo (controlado mediante la configuración `enable_adaptive_aggregator`, habilitada de forma predeterminada): cada hilo agrega datos en su propia tabla hash hasta alcanzar `adaptive_aggregator_freeze_threshold` claves y, después, la congela. De este modo, las claves frecuentes continúan actualizando las pequeñas tablas residentes en caché sin necesidad de coordinación, mientras que las claves poco frecuentes se enrutan según su hash a acumulaciones pendientes por bucket y se agregan exactamente una vez durante la combinación paralela por bucket. [#111459](https://github.com/ClickHouse/ClickHouse/pull/111459) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se redujo el uso de memoria de las tablas `MergeTree` con muchas partes de datos al compartir entre las partes de una tabla los metadatos por parte derivados del esquema (lista de columnas, descripciones de columnas, serializaciones y subflujos de columnas), en lugar de copiarlos en cada parte. El efecto es mayor en tablas anchas con muchas partes pequeñas. [#109816](https://github.com/ClickHouse/ClickHouse/pull/109816) ([Raúl Marín](https://github.com/Algunenano)).
* Optimiza las consultas `GROUP BY ... ORDER BY ... LIMIT` y `GROUP BY ... LIMIT` al mantener un montón acotado durante la agregación para descartar grupos que no pueden aparecer en el resultado, lo que reduce significativamente el uso de memoria y el tiempo de ejecución en agrupaciones de alta cardinalidad. Controlado por la configuración `enable_group_by_top_k_optimization`. Basado en la implementación inicial de [Dmitriy Terenichev](https://github.com/Dmitry909) ([#78553](https://github.com/ClickHouse/ClickHouse/pull/78553)). [#96630](https://github.com/ClickHouse/ClickHouse/pull/96630) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Reduce el tamaño de las celdas de las tablas hash para claves de agregación formadas por un único `String`, lo que mejora las cargas de trabajo de `GROUP BY` con muchas cadenas. La nueva configuración `enable_packed_string_keys_in_aggregation` está habilitada de forma predeterminada; al deshabilitarla o establecer `compatibility` por debajo de `26.8`, se restaura el método heredado `StringHashTable`, que aún puede ser más rápido para agregaciones de muy baja cardinalidad con claves de más de 11 bytes. [#110573](https://github.com/ClickHouse/ClickHouse/pull/110573) ([Harikrishnan Prabakaran](https://github.com/harikrishnan94)). [#112089](https://github.com/ClickHouse/ClickHouse/pull/112089) ([Harikrishnan Prabakaran](https://github.com/harikrishnan94)).
* Paraleliza la combinación final de tablas hash de agregación de un solo nivel con la nueva configuración `enable_parallel_single_level_merge`, habilitada de forma predeterminada. Esto acelera las consultas `GROUP BY` cuyas tablas hash por hilo permanecen por debajo del umbral de dos niveles, pero en las que la combinación domina el tiempo de ejecución. [#110395](https://github.com/ClickHouse/ClickHouse/pull/110395) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Mejora el rendimiento de `DISTINCT` cuando el flujo de entrada está ordenado por un prefijo de las columnas de `DISTINCT`; por ejemplo, `SELECT DISTINCT a, b FROM table ORDER BY a`. Estas consultas se ejecutan hasta 2,4 veces más rápido. [#110170](https://github.com/ClickHouse/ClickHouse/pull/110170) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Acelera y reduce el uso de memoria de las consultas `DISTINCT` en tablas `MergeTree` particionadas al mantener las filas de cada partición dentro de un único flujo, de modo que el `DISTINCT` preliminar de cada flujo opera sobre un conjunto disjunto de claves, en lugar de que el mismo conjunto de claves aparezca en varios `DISTINCT` preliminares. Esto se aplica cuando la expresión de partición es una función determinista de las columnas de `DISTINCT` y está condicionado por una heurística de coste basada en el número de particiones y el sesgo (que se puede activar mediante la configuración `force_distinct_partitions_independently`, deshabilitada de forma predeterminada). La misma disjunción por partición se propaga a través de los pasos `Expression`, `Filter` y `ARRAY JOIN` hasta los consumidores finales `DISTINCT`, `LIMIT BY` y `GROUP BY`, para que también puedan omitir la combinación. Controlado por las nuevas configuraciones `allow_distinct_partitions_independently` (habilitada de forma predeterminada) y `max_number_of_partitions_for_independent_distinct`, que permite ajustar la heurística. [#108326](https://github.com/ClickHouse/ClickHouse/pull/108326) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se optimizaron las funciones `uniq`, `uniqExact` y `uniqHLL12` para la agregación sin clave. [#110150](https://github.com/ClickHouse/ClickHouse/pull/110150) ([Anton Popov](https://github.com/CurtizJ)).
* El lector V3 de `Parquet` ahora puede omitir grupos de filas completos mediante la página de diccionario, además de las estadísticas de mínimo/máximo y los filtros de Bloom, para condiciones de igualdad e `IN` cuando un fragmento de columna está totalmente codificado mediante diccionario. Se controla con el nuevo ajuste `input_format_parquet_dictionary_filter_push_down`. [#106952](https://github.com/ClickHouse/ClickHouse/pull/106952) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#110567](https://github.com/ClickHouse/ClickHouse/pull/110567) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Materialización diferida al leer archivos `Parquet` desde el almacenamiento de objetos, incluidas las tablas `Iceberg`: para consultas `ORDER BY ... LIMIT n`, las columnas que no se necesitan para ordenar ni filtrar se leen solo para las `n` filas que sobreviven al `LIMIT`. En un archivo `Parquet` de 200 MB en `S3`, `SELECT k, s ... ORDER BY k DESC LIMIT 10` lee 3.3 MB en lugar de 171 MB (51 veces menos E/S y 8 veces más rápido). Se controla con el nuevo ajuste `query_plan_optimize_lazy_materialization_for_object_storage` (habilitado de forma predeterminada y que también requiere `query_plan_optimize_lazy_materialization`). [#110970](https://github.com/ClickHouse/ClickHouse/pull/110970) ([Alexey Milovidov](https://github.com/alexey-milovidov)). \* La materialización diferida para consultas `ORDER BY ... LIMIT n` ([#110970](https://github.com/ClickHouse/ClickHouse/issues/110970)) ahora también se aplica a archivos Parquet locales leídos con la función de tabla `file` y el motor de tabla `File`: las columnas que no se necesitan para ordenar ni filtrar se leen solo para las `n` filas que sobreviven al `LIMIT`. La segunda lectura de un archivo que ha sobrevivido falla con el nuevo error `FILE_CHANGED_DURING_READ` si el archivo se modificó entre las dos pasadas. Se controla con el nuevo ajuste `query_plan_optimize_lazy_materialization_for_file` (habilitado de forma predeterminada). También corrige un fallo de la materialización diferida para el almacenamiento de objetos con `Not found column or subcolumn ... in block` cuando se aplaza una subcolumna solicitada (por ejemplo, de una columna `JSON`). [#114262](https://github.com/ClickHouse/ClickHouse/pull/114262) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las estadísticas de columna ahora se materializan en `INSERT` de forma predeterminada cuando el tamaño activo actual de la tabla más el tamaño del bloque escrito no supera el nuevo ajuste `materialize_statistics_on_insert_max_table_size` (25 GiB de forma predeterminada); la comprobación se realiza para cada bloque escrito, por lo que una primera carga masiva en una tabla vacía aún puede materializar estadísticas para cada bloque escrito. Esto proporciona al optimizador de uniones basado en costes estimaciones precisas para tablas de dimensiones recién cargadas y evita órdenes de unión patológicos (por ejemplo, TPC-H Q5 y Q8 ya no agotan el tiempo de espera con un factor de escala de 40), mientras que las tablas de hechos grandes ya establecidas siguen materializando estadísticas durante las fusiones. [#109454](https://github.com/ClickHouse/ClickHouse/pull/109454) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Acelera las funciones de ventana en tablas `MergeTree` particionadas leyendo cada partición mediante su propio flujo y evaluando las ventanas por partición, evitando la dispersión hash que normalmente redistribuye cada fila entre hilos antes de la ordenación de ventana. Esto se aplica cuando la expresión de partición de la tabla es una función determinista de las columnas `PARTITION BY` de la ventana y está sujeto a la misma heurística de costes que `GROUP BY` / `DISTINCT` por partición (suficientes particiones en relación con `max_threads` y ninguna partición dominante). Se controla con los nuevos ajustes `allow_window_partitions_independently` (habilitado de forma predeterminada), `force_window_partitions_independently` y `max_number_of_partitions_for_independent_window`. [#114783](https://github.com/ClickHouse/ClickHouse/pull/114783) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Reduce el uso de memoria al escribir partes empaquetadas transmitiendo el archivo final directamente al archivo de destino, en lugar de mantener una segunda copia completa en memoria durante la confirmación de la parte. [#111995](https://github.com/ClickHouse/ClickHouse/pull/111995) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió un nuevo valor de `join_algorithm`, `parallel_full_sorting_merge`: para joins de igualdad compatibles con hash, fragmenta un join de fusión con ordenación completa en joins de fusión independientes por segmento, según el hash de las claves de join, que se ejecutan en todos los hilos. Mantiene el bajo uso de memoria en streaming de un join de fusión mientras lo paraleliza (en una prueba comparativa, \~2,4 veces más rápido y con \~3,3 veces menos memoria que `parallel_hash`). Los joins `ASOF` recurren a un único `full_sorting_merge`; los tipos de clave incompatibles con hash (de coma flotante, `JSON`, `Object`, `Dynamic`) solo omiten la reescritura de dispersión por hash y aún pueden fragmentarse en el origen mediante rangos de clave primaria cuando `query_plan_join_shard_by_pk_ranges` está habilitado. El resultado no está ordenado. [#109005](https://github.com/ClickHouse/ClickHouse/pull/109005) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Añade poda espacial de GeoParquet a nivel de grupo de filas y de página al lector de `Parquet`. La poda de grupos de filas omite grupos completos cuyo cuadro delimitador no se superpone con la geometría de la consulta. La poda a nivel de página utiliza el índice de columna `covering.bbox` para omitir páginas irrelevantes dentro de los grupos de filas, y la inserción de predicados espaciales ahora también se aplica durante la lectura de filas de `Parquet`. [#104435](https://github.com/ClickHouse/ClickHouse/pull/104435) ([Vasily Chekalkin](https://github.com/bacek)).
* La inserción de filtros en Parquet (poda de grupos de filas e índice de columna) admite más conversiones de tipos: `DateTime64(x) <-> DateTime64(y)`, `Decimal(x) <-> Decimal(y)`, `Float32 <-> Float64`. [#110457](https://github.com/ClickHouse/ClickHouse/pull/110457) ([Michael Kolupaev](https://github.com/al13n321)).
* Reduce las solicitudes de lectura duplicadas en discos remotos cuando los rangos de marcas están fragmentados, por ejemplo, por índices primarios o índices de omisión. [#113584](https://github.com/ClickHouse/ClickHouse/pull/113584) ([Anton Popov](https://github.com/CurtizJ)).
* Acelera la ejecución de `IN` en columnas agrupadas (p. ej., ordenadas por clave primaria) reutilizando el resultado de la fila anterior para filas consecutivas iguales. [#114853](https://github.com/ClickHouse/ClickHouse/pull/114853) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Una agregación sin claves `GROUP BY` ya no distribuye su salida de una sola fila entre `max_threads` flujos, por lo que las consultas cuyo plan continúa después de dicha agregación tienen una canalización mucho más pequeña (menos procesadores que crear, programar y perfilar) sin perder paralelismo. [#115170](https://github.com/ClickHouse/ClickHouse/pull/115170) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Keeper ahora lee entradas de changelog con menos contención de bloqueos: las lecturas de puesta al día se planifican bajo un bloqueo compartido y realizan operaciones de E/S de disco sin bloqueos; además, tanto la puesta al día de los seguidores como la ruta de confirmación pueden predecodificar entradas en un thread pool en segundo plano, lo que reduce las lecturas redundantes de disco y la decodificación por CPU en el líder. [#108473](https://github.com/ClickHouse/ClickHouse/pull/108473) ([Antonio Andelic](https://github.com/antonio2368)).
* Acelera el inicio de Keeper leyendo varios archivos de changelog simultáneamente en lugar de hacerlo de forma secuencial, mediante los nuevos ajustes `log_startup_read_max_streams` y `log_startup_read_buffer_size`. [#109881](https://github.com/ClickHouse/ClickHouse/pull/109881) ([Antonio Andelic](https://github.com/antonio2368)).
* Añade un nuevo tipo de esquema `bucketed` para `system.metric_log`, que almacena todas las métricas en una única columna `Map(Enum16(...), Int64)` mediante la serialización de `Map` por cubetas con 128 cubetas, además de una columna `ALIAS` por métrica para mantener la compatibilidad: la tabla consta de unas pocas columnas en lugar de miles, los valores cero no se almacenan y la lectura de una sola métrica solo lee una de las 128 cubetas. Además, ahora se puede indexar un `Map` con claves `Enum` mediante el nombre de cadena del valor de la enumeración, p. ej., `map['name']`. [#115380](https://github.com/ClickHouse/ClickHouse/pull/115380) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió una optimización del plan de consulta que desplaza las funciones que reducen el volumen (`length`, `lengthUTF8`, `empty`, `notEmpty`) por debajo de los pasos `Sorting` y `Filter`, sustituyendo el argumento ancho `String` / `FixedString` por el resultado de tamaño fijo, de modo que no se almacena en búfer durante la ordenación ni se copia durante el filtrado. Se controla mediante la nueva configuración `query_plan_push_down_volume_reducing_functions`, habilitada de forma predeterminada. [#106199](https://github.com/ClickHouse/ClickHouse/pull/106199) ([Peng](https://github.com/fastio)).
* Se habilitó `read_in_order_use_virtual_row` de forma predeterminada. Al leer en el orden de la clave primaria (p. ej., `ORDER BY primary_key LIMIT n`) en una tabla con muchas partes, solo se leen las partes que realmente pueden contribuir al resultado, además de una ventana de lectura anticipada de como máximo `max_threads` partes que mantiene la lectura en paralelo, lo que reduce significativamente el consumo máximo de memoria. [#106215](https://github.com/ClickHouse/ClickHouse/pull/106215) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las consultas de agregación sin funciones de agregado ahora usan métodos basados en `HashSet` en lugar de `HashMap` (para los tipos de clave compatibles). Se observaron mejoras de rendimiento de hasta 1,8 veces. [#108862](https://github.com/ClickHouse/ClickHouse/pull/108862) ([Nikita Taranov](https://github.com/nickitat)).
* Se evita la sobrecarga de los filtros de tiempo de ejecución de `JOIN` cuando se estima que el lado de sondeo es pequeño. El umbral se controla mediante la nueva configuración `join_runtime_filter_min_probe_rows` (valor predeterminado: `1000`). [#104860](https://github.com/ClickHouse/ClickHouse/pull/104860) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Las consultas con predicados como `nullIf(key, sentinel) = const` ahora pueden aprovechar la poda por clave primaria, partición e índices de salto. [#107308](https://github.com/ClickHouse/ClickHouse/pull/107308) ([Aditya Kumar](https://github.com/adityaksolves)).
* Se añadió la configuración de servidor `jemalloc_merge_tree_arenas` para controlar las arenas jemalloc dedicadas a los metadatos de partes y tablas `MergeTree`. En servidores con muchos núcleos, un grupo por CPU puede reducir la contención de bloqueos del asignador entre fusiones simultáneas, y la arena dedicada ahora solo contiene metadatos de larga duración. [#109490](https://github.com/ClickHouse/ClickHouse/pull/109490) ([Raúl Marín](https://github.com/Algunenano)).
* Se aceleró la descompresión ZSTD en `x86_64` para columnas con desplazamientos de coincidencia pequeños, como las columnas de enteros de ancho fijo, mediante la vectorización de copias superpuestas con desplazamiento corto usando `pshufb` de SSSE3. Por ejemplo, la descompresión de una columna `UInt64` es hasta \~1,2 veces más rápida en AMD Zen 5. [#110909](https://github.com/ClickHouse/ClickHouse/pull/110909) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se aceleró `groupUniqArray` para tipos numéricos hasta 3 veces mediante el uso de hash CRC32, como en `uniqExact`, y la inserción en línea por fila. [#110917](https://github.com/ClickHouse/ClickHouse/pull/110917) ([Manuel](https://github.com/raimannma)).
* Se aceleró `estimateCompressionRatio` con el códec `NONE`. [#111107](https://github.com/ClickHouse/ClickHouse/pull/111107) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se redujo el valor predeterminado de `max_snapshot_commit_thread_pool_size` a `16`, igualándolo a `backup_threads`, para reducir la limitación de CFS al confirmar instantáneas de tablas con muchas partes. [#111417](https://github.com/ClickHouse/ClickHouse/pull/111417) ([Han Fei](https://github.com/hanfei1991)).
* Se redujo el uso de CPU al confirmar instantáneas de tablas con una enorme cantidad de archivos. [#112297](https://github.com/ClickHouse/ClickHouse/pull/112297) ([Han Fei](https://github.com/hanfei1991)).
* Se omite el precalentamiento de hashes de deduplicación de inserciones asíncronas cuando la deduplicación está deshabilitada. [#111549](https://github.com/ClickHouse/ClickHouse/pull/111549) ([Sema Checherinda](https://github.com/CheSema)).
* Un `JOIN` cuya condición `ON` siempre es falsa, por ejemplo, `ON 1 = 2`, `ON NULL` o `a.t = 'A' AND a.t = 'B'`, ya no lee el lado que no aporta resultados. Se controla mediante la configuración `query_plan_short_circuit_constant_false_join` (habilitada de forma predeterminada). [#110234](https://github.com/ClickHouse/ClickHouse/pull/110234) ([Groene AI](https://github.com/groeneai)).
* Acelera la lectura de tablas `Iceberg` mediante la precarga del siguiente archivo de manifiesto mientras se analiza el actual, solapando las operaciones de E/S con el trabajo de CPU. [#108543](https://github.com/ClickHouse/ClickHouse/pull/108543) ([Asya Shneerson](https://github.com/asya-ch)).
* Las consultas con `FINAL` que leen en orden de clave primaria con un `LIMIT` pequeño ya no usan `split_intersecting_parts_ranges_into_layers_final`. [#110431](https://github.com/ClickHouse/ClickHouse/pull/110431) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Mejora el rendimiento de `RIGHT` y `FULL JOIN` con el algoritmo `parallel_hash` cuando el lado derecho contiene claves de join `NULL` o filas filtradas por la expresión `ON`, evitando reconstruir el mapa de valores nulos. [#111258](https://github.com/ClickHouse/ClickHouse/pull/111258) ([Hechem Selmi](https://github.com/m-selmi)).
* Acelera `countSubstringsCaseInsensitiveUTF8` al corregir una complejidad cuadrática que podía hacer que la función tardara minutos con una cadena de búsqueda de unos pocos megabytes y muchas coincidencias. [#112003](https://github.com/ClickHouse/ClickHouse/pull/112003) ([Groene AI](https://github.com/groeneai)).
* La API de consultas de Prometheus (`/api/v1/query`, `/api/v1/query_range`) del motor experimental `TimeSeries` ahora ejecuta consultas en paralelo en lugar de usar un único hilo. [#112108](https://github.com/ClickHouse/ClickHouse/pull/112108) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Las columnas `timestamp` y `value` creadas automáticamente en la tabla interna de muestras de `TimeSeries` ahora usan de forma predeterminada `CODEC(DoubleDelta, ZSTD(1))` y `CODEC(Gorilla, ZSTD(1))`, respectivamente. [#112110](https://github.com/ClickHouse/ClickHouse/pull/112110) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Corrige una regresión de rendimiento en la ingestión de `system.query_log`. La creación de las columnas de mapa `Settings` y `asynchronous_read_counters` era aproximadamente seis veces más lenta que antes, lo que podía hacer que `SYSTEM FLUSH LOGS query_log` superara su tiempo de espera de 180 segundos en servidores que registran muchas consultas con numerosas configuraciones modificadas. Cierra [#112191](https://github.com/ClickHouse/ClickHouse/issues/112191). [#112210](https://github.com/ClickHouse/ClickHouse/pull/112210) ([Groene AI](https://github.com/groeneai)).
* Mejora el rendimiento de los hash JOIN RIGHT y FULL con múltiples disyunciones `OR` en la cláusula ON, así como de los JOIN RIGHT/FULL con condiciones residuales (de desigualdad). [#111590](https://github.com/ClickHouse/ClickHouse/pull/111590) ([Hechem Selmi](https://github.com/m-selmi)).
* Reduce el uso de memoria de `UNLOCK SNAPSHOT` al no cargar los metadatos de cada parte de datos que no utiliza la ruta de desbloqueo, evitando errores de falta de memoria en snapshots con un número muy elevado de partes. [#111849](https://github.com/ClickHouse/ClickHouse/pull/111849) ([Julia Kartseva](https://github.com/jkartseva)).
* Restaura la preasignación de memoria para las rutas dinámicas de una columna `JSON` durante los vaciados asíncronos de `INSERT`, evitando reasignaciones repetidas a medida que se añaden filas por lotes. [#112222](https://github.com/ClickHouse/ClickHouse/pull/112222) ([Groene AI](https://github.com/groeneai)).
* Vuelve a habilitar la optimización de claves consecutivas para la agregación `TTL ... GROUP BY` durante las fusiones. Se había deshabilitado accidentalmente en esa ruta, por lo que los resultados seguían siendo correctos, pero las fusiones realizaban más trabajo del necesario. [#112314](https://github.com/ClickHouse/ClickHouse/pull/112314) ([Groene AI](https://github.com/groeneai)).
* Se aceleró la lectura de columnas `Nested` de tipos codificados en binario, como `Native` y `RowBinary`, cuando `input_format_binary_decode_types_in_binary_format` está habilitado, y los nombres malformados de tipos `Tuple` anidados ahora se notifican como errores de sintaxis en lugar de invertir un tiempo exponencial en analizarlos. [#112560](https://github.com/ClickHouse/ClickHouse/pull/112560) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se mejoró el rendimiento de la compactación y combinación de columnas `Dynamic` y `Object` con muchas variantes dinámicas o rutas JSON. [#110583](https://github.com/ClickHouse/ClickHouse/pull/110583) ([Christoph Viebig](https://github.com/cv4g)).
* Se aceleraron `min` y `max` para tipos de 128 y 256 bits (`Int128`, `UInt128`, `Int256`, `UInt256`, `Decimal128`, `Decimal256`). Hasta 1,8 veces más rápido para enteros de gran tamaño y hasta 3,4 veces más rápido para decimales de gran tamaño. [#111965](https://github.com/ClickHouse/ClickHouse/pull/111965) ([Manuel](https://github.com/raimannma)).
* Se habilitaron de forma predeterminada (y se promovieron a beta) dos funcionalidades en disco: 1) `packed_skip_index_max_bytes = '1M'`: los subflujos de índices de omisión de hasta 1 MiB ahora se escriben en un único archivo `skp_idx.packed` por parte, lo que reduce el número de objetos y las solicitudes de escritura en el almacenamiento de objetos. Compatibilidad: solo se ven afectadas las partes recién escritas y siguen siendo totalmente legibles en versiones anteriores; las versiones anteriores a la 26.6 simplemente no usan los índices empaquetados para la poda (se tratan como no materializados). Establezca `packed_skip_index_max_bytes = 0` para mantener la disposición independiente por archivo. 2) `compute_exact_num_defaults_for_sparse_columns` junto con `optimize_trivial_count_with_sparsity_filter`: los contadores exactos `num_defaults` por columna se conservan y se usan para responder a `SELECT count() FROM t WHERE <pred>` sin escanear datos cuando el predicado divide las filas entre valores predeterminados y no predeterminados. Compatibilidad: las versiones anteriores ignoran la marca `exact_num_defaults` en `serialization.json`, por lo que las partes siguen siendo totalmente legibles después de una reversión de versión; la reescritura de `count` solo se aplica a las partes que contienen contadores exactos, por lo que los resultados siguen siendo correctos en tablas con partes mixtas. [#111816](https://github.com/ClickHouse/ClickHouse/pull/111816) ([Raúl Marín](https://github.com/Algunenano)).
* Se añadió almacenamiento en caché opcional para tokens ausentes en índices de texto. [#112742](https://github.com/ClickHouse/ClickHouse/pull/112742) ([Rory Shanks](https://github.com/rorylshanks)).
* Se corrigió la reasignación cuadrática al replicar un `Array` cuyos elementos contienen valores `JSON` en datos compartidos, por ejemplo, un `Array(JSON)` constante pasado a una función de agregación. Estas consultas copiaban una cantidad de bytes que crecía cuadráticamente con el número de filas. [#112897](https://github.com/ClickHouse/ClickHouse/pull/112897) ([Groene AI](https://github.com/groeneai)).
* Se usa el índice de clave primaria para `pointInPolygon` cuando el argumento del punto es una columna de clave completa de tipo `Point` (u otro `Tuple` de dos elementos numéricos), por ejemplo, `pointInPolygon(coord, [...])` para una tabla ordenada por `coord`. Anteriormente, solo se analizaba la forma `pointInPolygon((x, y), [...])` con dos columnas de clave escalares. Cierra [#54805](https://github.com/ClickHouse/ClickHouse/issues/54805). [#112956](https://github.com/ClickHouse/ClickHouse/pull/112956) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se omite por completo la lectura de datos en las combinaciones `TTLDrop` para reducir el uso de memoria, especialmente en los búferes de lectura y precarga. Cierra [#105639](https://github.com/ClickHouse/ClickHouse/issues/105639). [#105859](https://github.com/ClickHouse/ClickHouse/pull/105859) ([Pavel Kruglov](https://github.com/Avogar)).
* Se redujeron las asignaciones de memoria al leer metadatos de copias de seguridad moviendo las entradas de archivos a mapas en memoria en lugar de copiarlas. [#111718](https://github.com/ClickHouse/ClickHouse/pull/111718) ([Julia Kartseva](https://github.com/jkartseva)).
* Utiliza el índice de texto cuando su expresión contenga una comparación con una cadena vacía, como `arrayFilter(s -> s != '', ...)`, incluso cuando `optimize_empty_string_comparisons = 1` la reescriba como `notEmpty`. Cierra [#111788](https://github.com/ClickHouse/ClickHouse/issues/111788). [#112115](https://github.com/ClickHouse/ClickHouse/pull/112115) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Restaura la poda de la caché de condiciones de consulta después de una `lightweight DELETE`: las consultas selectivas repetidas sobre una tabla que hubiera sido afectada alguna vez por una `lightweight DELETE` ya no recurren a leer cada marca. [#112947](https://github.com/ClickHouse/ClickHouse/pull/112947) ([Nikita Fomichev](https://github.com/fm4v)).
* Las funciones de orden superior ya no copian físicamente las columnas capturadas para cada elemento del array cuando `enable_lazy_columns_replication` está habilitado, lo que reduce el uso de memoria y el tiempo de copia de las lambdas que capturan columnas grandes. [#111581](https://github.com/ClickHouse/ClickHouse/pull/111581) ([Diego Gomes Tomé](https://github.com/diegomestre2)).
* Corrige una regresión de rendimiento de aproximadamente 1,5 veces introducida en la versión 26.5 en `GROUP BY` sobre claves `Dynamic` y subcolumnas de rutas `JSON`. [#112316](https://github.com/ClickHouse/ClickHouse/pull/112316) ([Utkal Singh](https://github.com/Utkal059)).
* `text_index_posting_list_apply_mode` ahora tiene `lazy` como valor predeterminado, por lo que las consultas sobre índices de texto decodifican las listas de postings bajo demanda, con granularidad de bloques empaquetados y mediante un cursor, en lugar de materializarlas anticipadamente en mapas de bits para los índices de texto con `posting_list_codec` configurado. [#113521](https://github.com/ClickHouse/ClickHouse/pull/113521) ([Anton Popov](https://github.com/CurtizJ)).
* Acelera las consultas PromQL sobre tablas `TimeSeries`: `timeSeriesIdToGroup` ahora reutiliza el grupo de la fila anterior cuando filas consecutivas tienen el mismo ID de serie, evitando la serialización del ID y la búsqueda hash por fila. [#113580](https://github.com/ClickHouse/ClickHouse/pull/113580) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Los operadores de agregación PromQL `topk`, `bottomk` y `limitk` ahora utilizan un plan de ejecución paralelo y de streaming con memoria acotada, en lugar de recopilar todas las series en una sola fila. Las consultas sobre métricas de alta cardinalidad que antes fallaban con `MEMORY_LIMIT_EXCEEDED` ahora se ejecutan con memoria acotada. [#113656](https://github.com/ClickHouse/ClickHouse/pull/113656) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)). [#114409](https://github.com/ClickHouse/ClickHouse/pull/114409) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Acelera la división de enteros de 256 bits (`Int256`, `UInt256` y `Decimal256`), lo que afecta a `intDiv`, `modulo`, la aritmética de `Decimal256` y la conversión de estos tipos a texto. [#112477](https://github.com/ClickHouse/ClickHouse/pull/112477) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Mejora el rendimiento de lectura de `MergeTree` para subcolumnas `JSON` reutilizando los metadatos de las subcolumnas resueltas durante las conversiones necesarias. [#113008](https://github.com/ClickHouse/ClickHouse/pull/113008) ([Rory Shanks](https://github.com/rorylshanks)).
* Acelera la creación de índices de omisión basados en texto y filtros Bloom con el tokenizador `sparseGrams`. [#110541](https://github.com/ClickHouse/ClickHouse/pull/110541) ([UnamedRus](https://github.com/UnamedRus)).
* La creación de instantáneas ahora utiliza un grupo de hilos dedicado, por lo que un `BACKUP` simultáneo intensivo ya no la deja sin recursos. [#113509](https://github.com/ClickHouse/ClickHouse/pull/113509) ([Han Fei](https://github.com/hanfei1991)).
* Evalúa una sola vez, en lugar de dos, las subexpresiones de PromQL compartidas por varios pasos del plan (el operando de `topk`/`bottomk`/`limitk` y el lado izquierdo de `or`): el SQL generado a partir de PromQL ahora materializa las subconsultas compartidas. Esto elimina un escaneo duplicado de la tabla de muestras; `topk` sobre `rate` es \~2 veces más rápido en frío, y las consultas de reglas de kubernetes-mixin mejoran entre un 10 y un 29 %. [#113772](https://github.com/ClickHouse/ClickHouse/pull/113772) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Ahora puede habilitar, durante el análisis, el plegado anticipado de cortocircuito para las funciones integradas `and` y `or` con la configuración `enable_function_early_short_circuit`. Esto permite omitir la ejecución de subconsultas escalares `count()` de una sola fila que no se alcanzan, conservando la inferencia de tipos y la validación semántica habituales. Resuelve [#83017](https://github.com/ClickHouse/ClickHouse/issues/83017). [#83505](https://github.com/ClickHouse/ClickHouse/pull/83505) ([fhw12345](https://github.com/fhw12345)).
* Combina el coste de E/S con la selectividad al ordenar las condiciones `PREWHERE`. Esto corrige una regresión de rendimiento en la ejecución de `PREWHERE` en algunos casos, introducida después de [#101275](https://github.com/ClickHouse/ClickHouse/pull/101275). Parte de [#110462](https://github.com/ClickHouse/ClickHouse/issues/110462). [#110695](https://github.com/ClickHouse/ClickHouse/pull/110695) ([Pavel Kruglov](https://github.com/Avogar)).
* Mejora el rendimiento de `levenshteinDistance` (y `editDistance`) para cadenas de longitud media en ARM al evitar asignaciones en el montón por fila en la ruta de código Myers por bloques. [#108185](https://github.com/ClickHouse/ClickHouse/pull/108185) ([Groene AI](https://github.com/groeneai)).
* Añade la configuración de `MergeTree` `merge_use_batch_sorting_queue` para usar opcionalmente la cola de ordenación por lotes en fusiones ordinarias de `MergeTree`, lo que reduce el uso de CPU y el tiempo de reloj para cargas de trabajo de fusión en las que la fusión ordenada supone un coste significativo. [#108468](https://github.com/ClickHouse/ClickHouse/pull/108468) ([Rory Shanks](https://github.com/rorylshanks)).
* Añade la configuración `merge_tree_min_bytes_per_read_stream` para reducir el exceso de flujos de lectura y la sobrecarga de la canalización en escaneos locales, no ordenados y ordinarios de columnas estrechas de `MergeTree` en servidores con un gran número de núcleos. [#109035](https://github.com/ClickHouse/ClickHouse/pull/109035) ([Jiebin Sun](https://github.com/jiebinn)).
* Acelera la función `toStartOfInterval` (alias `time_bucket`, `date_bin`) hasta 5 veces para intervalos `SECOND`, `MINUTE` y `HOUR`. [#109729](https://github.com/ClickHouse/ClickHouse/pull/109729) ([Manuel](https://github.com/raimannma)).
* El protocolo nativo ahora envía las columnas `String` como un flujo independiente de desplazamientos acumulados en bytes (la misma disposición que `Array` usa para sus desplazamientos), seguido de los datos concatenados, en lugar de un prefijo de longitud varint por valor, cuando ambos extremos usan la revisión de protocolo 54489 o posterior. Un client puede entonces leer columnas `String` con preasignación exacta del búfer y una única copia masiva, unas 4 veces más rápido que con la disposición por valor. Los clientes y servidores antiguos no se ven afectados: la disposición se negocia mediante la revisión del protocolo. La misma disposición está disponible en los formatos `Native` y `Buffers` mediante las nuevas configuraciones `output_format_native_write_string_with_size_stream` / `input_format_native_read_string_with_size_stream` (desactivadas de forma predeterminada, por lo que los formatos siguen siendo portables). [#110320](https://github.com/ClickHouse/ClickHouse/pull/110320) ([vahid-sohrabloo](https://github.com/vahid-sohrabloo)).
* Evita la serialización anticipada a JSON de entradas de manifiesto de Iceberg cuando iceberg\_metadata\_log\_level está por debajo del umbral del sitio de llamada. [#110437](https://github.com/ClickHouse/ClickHouse/pull/110437) ([Andy Bradshaw](https://github.com/andybradshaw)).
* Mejora el rendimiento de full sorting merge join hasta 1,5-3 veces en escenarios dispersos. [#111200](https://github.com/ClickHouse/ClickHouse/pull/111200) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Mejora la eficiencia de las estadísticas minmax y las estadísticas básicas de las columnas de punto flotante. [#111221](https://github.com/ClickHouse/ClickHouse/pull/111221) ([Christoph Viebig](https://github.com/cv4g)).
* Habilita `join_runtime_filter_from_fixed_hash_table` cuando difieren los tipos de las claves de join de probe y build (por ejemplo, una clave de probe Nullable y una clave de build no Nullable). [#111244](https://github.com/ClickHouse/ClickHouse/pull/111244) ([Hechem Selmi](https://github.com/m-selmi)).
* Devuelve las consultas `COUNT()` directamente a partir de los metadatos de cardinalidad del índice de texto. [#111494](https://github.com/ClickHouse/ClickHouse/pull/111494) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Acelera el cálculo de hash por fila de los valores de columnas JSON/`Object` almacenados en datos compartidos (utilizado, por ejemplo, por `uniq`/`uniqExact` en una columna JSON y por claves con hash de `GROUP BY`/`DISTINCT`) al evitar la reconstrucción de `ColumnDynamic` para cada valor. Los valores hash no cambian. [#111501](https://github.com/ClickHouse/ClickHouse/pull/111501) ([Valery Petrov](https://github.com/valerypetrov)).
* Las funciones `mapContainsKeyLike`, `mapContainsValueLike`, `mapExtractKeyLike` y `mapExtractValueLike` con un patrón no constante consumen menos memoria y tiempo cuando enable\_lazy\_columns\_replication está habilitado. El patrón ya no se copia anticipadamente para cada entrada del map al capturarse; la copia se difiere hasta la ejecución de la lambda interna y se libera antes, por lo que hay una copia expandida menos del patrón en el pico de uso. [#111749](https://github.com/ClickHouse/ClickHouse/pull/111749) ([Diego Gomes Tomé](https://github.com/diegomestre2)).
* Acelera la ordenación y otras operaciones basadas en comparaciones en columnas `JSON` cuyas rutas se almacenan en datos compartidos. Antes, cada comparación de valores materializaba una columna `Dynamic` temporal y ejecutaba una deserialización binaria completa en ambos lados, lo que hacía que `ORDER BY` en esas columnas fuera extremadamente lento. [#111894](https://github.com/ClickHouse/ClickHouse/pull/111894) ([Groene AI](https://github.com/groeneai)).
* `clickhouse-client` ya no hace ping al servidor antes de cada consulta, lo que elimina un viaje de ida y vuelta de red por consulta. Tampoco restablece la conexión —iniciando silenciosamente una nueva sesión y, por tanto, perdiendo las tablas temporales, la base de datos actual y la configuración de sesión— solo porque el servidor tarde demasiado en responder a un ping. [#111990](https://github.com/ClickHouse/ClickHouse/pull/111990) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Utiliza la optimización de condiciones transitivas de forma más inteligente: el filtro adicional creado por transitividad ahora se usa solo para el análisis de índices cuando no se puede aplicar el filtro completo. Consulte la configuración `optimize_and_compare_chain`. [#112076](https://github.com/ClickHouse/ClickHouse/pull/112076) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Añade dos configuraciones, `shrink_over_allocated_columns_min_waste_ratio` y `shrink_over_allocated_columns_min_waste_bytes`, que hacen que los INSERT reduzcan las columnas con sobreasignación de memoria (cuya memoria reservada supera la utilizada debido al crecimiento en potencias de dos de las columnas de longitud variable) antes de la materialización y la escritura de partes, lo que reduce el uso máximo de memoria. Están deshabilitadas de forma predeterminada. [#112161](https://github.com/ClickHouse/ClickHouse/pull/112161) ([Pavel Kruglov](https://github.com/Avogar)).
* La replicación diferida de columnas para `ARRAY JOIN` ya no se pierde al serializar un plan de consulta. Con `serialize_query_plan = 1`, el nodo que ejecutaba un fragmento de plan remoto solía ignorar `enable_lazy_columns_replication` y siempre materializaba cada copia replicada, aunque esta opción está habilitada de forma predeterminada. [#112330](https://github.com/ClickHouse/ClickHouse/pull/112330) ([Groene AI](https://github.com/groeneai)).
* El formateo de valores `Decimal` como texto es mucho más rápido: hasta 190 veces más para un `Decimal256` con una escala grande y aproximadamente 1,6 veces más para un `Decimal64`. En procesadores con AVX-512 IFMA, la conversión de enteros de 64 bits a texto es aproximadamente 1,4 veces más rápida. También se corrigió el redondeo de `toDecimalString`, que perdía un acarreo de la parte fraccionaria: `toDecimalString(toDecimal64('9.995', 3), 2)` devolvía `9.00` y ahora devuelve `10.00`. [#112457](https://github.com/ClickHouse/ClickHouse/pull/112457) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Una igualdad en `WHERE` ahora se incorpora a la condición `JOIN` cuando sus operandos tienen tipos distintos pero un supertipo común, como `Int32` y `Nullable(Int32)`. Esto permite convertir un CROSS JOIN en un INNER JOIN. [#112630](https://github.com/ClickHouse/ClickHouse/pull/112630) ([Hechem Selmi](https://github.com/m-selmi)).
* Las consultas en tablas Iceberg con muchos archivos de eliminación ahora se inician más rápido. ClickHouse lee y decodifica los archivos de manifiesto de eliminación de forma concurrente, en lugar de uno por uno, por lo que las lecturas de almacenamiento se superponen. La nueva opción `iceberg_delete_manifest_decode_concurrency` (valor predeterminado: `4`) controla cuántos se decodifican simultáneamente. [#112679](https://github.com/ClickHouse/ClickHouse/pull/112679) ([Asya Shneerson](https://github.com/asya-ch)).
* El registro asíncrono ahora utiliza una cola acotada sin bloqueos: los hilos que escriben mensajes de registro nunca se bloquean en un mutex ni reactivan los hilos de registro. [#112803](https://github.com/ClickHouse/ClickHouse/pull/112803) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `randomHadamardTransform` aplicado a un vector constante ahora se evalúa una sola vez, en lugar de una vez por fila. Esto acelera las consultas de búsqueda vectorial que rotan el vector de consulta con `randomHadamardTransform` antes de compararlo con una columna `QBit`. [#112921](https://github.com/ClickHouse/ClickHouse/pull/112921) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se restaura el uso compartido de conjuntos entre las tareas de partes de una mutación que filtra con `IN (subquery)` en una columna de clave primaria. `enable_sharing_sets_for_mutations` está activado de forma predeterminada, pero el conjunto creado para el análisis de la clave primaria dejó de participar en la caché compartida, por lo que una tabla con N partes materializaba el mismo conjunto N veces. [#112941](https://github.com/ClickHouse/ClickHouse/pull/112941) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la complejidad cúbica de la planificación de consultas para un JOIN con una tabla `Merge` sobre muchas tablas con estructuras diferentes. Anteriormente, estas consultas podían dedicar minutos a la planificación sin responder a `max_execution_time` ni a `KILL QUERY`. [#113140](https://github.com/ClickHouse/ClickHouse/pull/113140) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La caché de región de bucket del cliente `S3` ahora también funciona con catálogos de lagos de datos; anteriormente, cada solicitud a estos volvía a resolver la región. [#113330](https://github.com/ClickHouse/ClickHouse/pull/113330) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se corrigió una regresión de rendimiento por la que una agregación sin claves `GROUP BY` serializaba en cada ejecución todo el subárbol del plan de entrada, incluido el contenido completo de los literales evaluados como constantes, para calcular una clave de caché del tamaño de la tabla hash que nunca podía utilizar. Una consulta como `SELECT quantileMerge(arrayJoin(arrayMap(x -> state, range(5000000))))` dedicaba aproximadamente 63 ms por ejecución a la optimización del plan de consulta y ahora dedica 0,15 ms. [#113333](https://github.com/ClickHouse/ClickHouse/pull/113333) ([Groene AI](https://github.com/groeneai)).
* Añade la serialización opcional de UInt128/UInt256/Int128/Int256 como DECIMAL en Parquet para permitir la poda de grupos de filas y páginas. [#113347](https://github.com/ClickHouse/ClickHouse/pull/113347) ([Ivan Babrou](https://github.com/bobrik)).
* Acelera la planificación de consultas cuando se utilizan estadísticas de columna `uniq_v2`. El número estimado de valores distintos ahora se almacena en caché en lugar de recalcularse en cada solicitud, algo que la planificación de consultas realiza muchas veces por consulta. (issue [#113038](https://github.com/ClickHouse/ClickHouse/issues/113038)). [#113357](https://github.com/ClickHouse/ClickHouse/pull/113357) ([Groene AI](https://github.com/groeneai)).
* No preobtiene subflujos innecesarios al leer una ruta JSON completa de datos compartidos avanzados. [#113380](https://github.com/ClickHouse/ClickHouse/pull/113380) ([Pavel Kruglov](https://github.com/Avogar)).
* La aplicación de filtros ahora funciona para subcolumnas `Tuple` en archivos Parquet y ORC. Un predicado como `WHERE tup.1 = 555555` aplicado a `file()`, `s3()` o `url()` ahora poda grupos de filas e intervalos del índice de filas usando las estadísticas del propio elemento de la tupla, en lugar de leer el archivo completo. [#113383](https://github.com/ClickHouse/ClickHouse/pull/113383) ([Groene AI](https://github.com/groeneai)).
* Sustituye el mapa hash por bucket dentro de las funciones de agregado `timeSeries*ToGrid` por una matriz plana y ordenada de muestras: la ingestión de muestras se convierte en una operación de adición O(1) para entradas en orden (el caso abrumadoramente más habitual) y elimina la copia y ordenación por bucket durante la finalización. [#113681](https://github.com/ClickHouse/ClickHouse/pull/113681) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Mejora el rendimiento de las consultas PromQL sobre el motor TimeSeries: el SQL interno del selector ahora lee directamente las columnas de clave primaria de la tabla de muestras (sin conversiones sin efecto) y comprueba el rango de marcas de tiempo antes del conjunto de ID de serie, lo que hace que las consultas en frío con muchos selectores sean entre un 30 % y un 44 % más rápidas. [#113768](https://github.com/ClickHouse/ClickHouse/pull/113768) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Usa mapas de ID tipados en el recolector de etiquetas de series temporales. [#113839](https://github.com/ClickHouse/ClickHouse/pull/113839) ([Vitaly Baranov](https://github.com/vitlibar)).
* Omite la comprobación redundante de ordenación al escribir partes de MergeTree cuyas claves de ordenación son todas constantes. [#113899](https://github.com/ClickHouse/ClickHouse/pull/113899) ([Perfloop Agent](https://github.com/perfloop-agent)).
* Los selectores PromQL que coinciden con todas las series de una métrica ahora filtran la tabla de muestras de una tabla `TimeSeries` mediante un rango continuo de clave primaria en `id` durante el análisis de índices, en lugar de usar una condición grande `id IN <set>`, cuando el diseño de ID es una tupla de dos componentes con el generador canónico de ID. Elimina el coste dominante del análisis de índices monohilo en consultas PromQL con muchos selectores: hasta un −45 % de latencia en frío para patrones de consultas de paneles y reglas, y un −11 % de media geométrica en frío en toda la suite sobre una tabla de 62 mil millones de muestras. [#114131](https://github.com/ClickHouse/ClickHouse/pull/114131) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Acelera las transformaciones vectorizadas de etiquetas de TimeSeries sustituyendo la reasignación basada en hash por indexación directa cuando los ID de grupos de etiquetas ocupan un rango compacto. [#114244](https://github.com/ClickHouse/ClickHouse/pull/114244) ([Minh Vu](https://github.com/fallintoplace)).
* Los endpoints de la API HTTP de Prometheus `/api/v1/query` y `/api/v1/query_range` ahora evalúan una subconsulta PromQL compartida por varios pasos del plan una sola vez, como ya hacían las funciones de tabla `prometheusQuery` y `prometheusQueryRange`. Anteriormente, una solicitud realizada con `enable_analyzer = 0`, o por un usuario cuyo perfil lo establece, volvía a recorrer la subconsulta compartida una vez por cada paso que la referenciaba. [#114261](https://github.com/ClickHouse/ClickHouse/pull/114261) ([Groene AI](https://github.com/groeneai)).
* Se limitó el coste de estimar la selectividad de `col IN (...)` a partir de estadísticas de columnas, lo que podía añadir cientos de milisegundos a la planificación de una sola consulta. El estimador ya no ejecuta la subconsulta de `col IN (subquery)` para rellenar un conjunto del que solo necesita un valor de selectividad; en su lugar, se omite el conjunto sin construir. Para conjuntos mayores que el nuevo ajuste `statistics_max_set_size_for_exact_selectivity_estimation` (10000 de forma predeterminada), la selectividad se deriva ahora del tamaño del conjunto y de su rango delimitador. [#114389](https://github.com/ClickHouse/ClickHouse/pull/114389) ([Nikita Taranov](https://github.com/nickitat)).
* El análisis de una solicitud HTTP que contiene muchos parámetros de consulta o encabezados con el mismo nombre (por ejemplo, miles de parámetros `role=` repetidos) ya no requiere tiempo cuadrático. [#114410](https://github.com/ClickHouse/ClickHouse/pull/114410) ([James](https://github.com/sanjams2)).
* Se corrigió una regresión en 26.7: en una tabla `MergeTree` ordenada por `toUnixTimestamp` (u otra conversión a entero) de una columna `DateTime64`, un filtro de rango simple sobre esa columna dejó de usar la clave primaria y leía todos los gránulos de las partes coincidentes. Además, un filtro como `toInt64(ts) >= c` en una tabla ordenada por la columna `DateTime64` sin transformar ahora usa la clave primaria. [#114413](https://github.com/ClickHouse/ClickHouse/pull/114413) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La costosa comprobación de consistencia de `ColumnArray` ahora solo se realiza en compilaciones de depuración. [#114469](https://github.com/ClickHouse/ClickHouse/pull/114469) ([Anton Popov](https://github.com/CurtizJ)).
* Se evita la ordenación por mezcla de una recopilación distribuida cuando su descripción de ordenación es totalmente constante. [#114626](https://github.com/ClickHouse/ClickHouse/pull/114626) ([Groene AI](https://github.com/groeneai)).
* Se acelera la creación de conjuntos para `IN (subquery)` en tablas `MergeTree` particionadas al mantener las filas de cada partición en un único flujo y eliminar los duplicados de cada flujo de forma independiente, de modo que la única transformación que rellena el conjunto —que antes aplicaba hash serialmente a cada fila— solo procesa filas únicas. Esto se aplica cuando la expresión de partición es una función determinista de las columnas de salida de la subconsulta. La optimización no se aplica cuando la partición más grande contiene más del doble de filas que la partición media; el nuevo ajuste `force_creating_set_partitions_independently` (deshabilitado de forma predeterminada) omite esta comprobación. Se controla mediante el nuevo ajuste `allow_creating_set_partitions_independently` (habilitado de forma predeterminada). [#114645](https://github.com/ClickHouse/ClickHouse/pull/114645) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se paraleliza la conversión de un nivel a dos niveles de los estados de agregación por hilo antes de fusionarlos. Esto corrige una regresión de 2-3x en consultas cortas con `GROUP BY` y estados de agregación pesados (p. ej., `COUNT(DISTINCT ...)`, ClickBench Q10/Q11) en máquinas con muchísimos núcleos, introducida en las compilaciones de desarrollo de 26.7 al hacer preciso el cálculo de memoria de la agregación. [#114691](https://github.com/ClickHouse/ClickHouse/pull/114691) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se aceleran las funciones de agregación `timeSeries*ToGrid`: los cálculos de buckets por muestra ahora evitan la división Int128, y las muestras consecutivas del mismo bucket omiten la búsqueda en el mapa hash. [#114889](https://github.com/ClickHouse/ClickHouse/pull/114889) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Al añadir elementos a una cola de registros del sistema, ya no se realiza una copia profunda de toda la cola cuando esta crece. [#115030](https://github.com/ClickHouse/ClickHouse/pull/115030) ([Groene AI](https://github.com/groeneai)).
* Se procesan las muestras de las funciones de agregación `timeSeries*ToGrid` en secuencias de muestras consecutivas que caen en un mismo bucket de la cuadrícula, lo que acelera entre 1,2 y 2 veces la etapa de ingesta de muestras de `timeSeriesRateToGrid` y funciones relacionadas en datos de series temporales ordenados. [#115041](https://github.com/ClickHouse/ClickHouse/pull/115041) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Usa máscaras de presencia compactas para los operadores de conjuntos de PromQL. [#115224](https://github.com/ClickHouse/ClickHouse/pull/115224) ([Minh Vu](https://github.com/fallintoplace)).
* Evaluación más rápida de consultas instantáneas de PromQL: las funciones de agregación `timeSeries*ToGrid` usan la ruta vectorizada de clasificación de muestras para cuadrículas de un solo punto, y `timeSeriesIdToGroup` rellena directamente su columna de resultados. [#115267](https://github.com/ClickHouse/ClickHouse/pull/115267) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Un `JOIN` cuya sección `ON` contiene varias igualdades unidas mediante `OR` ya no materializa las columnas clave del lado derecho que no selecciona la consulta. [#115465](https://github.com/ClickHouse/ClickHouse/pull/115465) ([Nikita Taranov](https://github.com/nickitat)).
* Al especificar un tipo `DateTime` o `DateTime64`, ya no se crea una tabla de búsqueda de zonas horarias UTC que no se utiliza, lo que agiliza la construcción de estos tipos y, por tanto, el inicio de `clickhouse local` y `clickhouse client`. [#115488](https://github.com/ClickHouse/ClickHouse/pull/115488) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Al adjuntar las tablas del sistema, ya no se copian dos veces los metadatos de cada tabla, incluida la descripción completa de sus columnas, solo para establecer el comentario de la tabla. [#115490](https://github.com/ClickHouse/ClickHouse/pull/115490) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* El hostname del client ahora se resuelve la primera vez que se informa, en lugar de en cada invocación de `clickhouse client` y `clickhouse local`. [#115491](https://github.com/ClickHouse/ClickHouse/pull/115491) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se corrigió la complejidad cuadrática al construir resultados sobre muchas filas con las funciones `h3kRing`, `h3ToChildren`, `h3PolygonToCells` y `h3PolygonToCellsWithContainment`. Una consulta sobre 196 000 filas dedicaba 838 segundos a copiar memoria en una ejecución de estrés de CI; ahora tarda unos 5 segundos. [#115773](https://github.com/ClickHouse/ClickHouse/pull/115773) ([Groene AI](https://github.com/groeneai)).
* Acelera las comprobaciones de series duplicadas para vectores de condición de PromQL con todos los valores en cero. [#115822](https://github.com/ClickHouse/ClickHouse/pull/115822) ([Minh Vu](https://github.com/fallintoplace)).
* Acelera `GROUP BY` sin funciones de agregación sobre claves `String`, `FixedString` y `LowCardinality`: la consulta ya no reescribe un marcador de posición no utilizado en la tabla hash para cada fila, sino solo para las filas que añaden una clave nueva. [#115834](https://github.com/ClickHouse/ClickHouse/pull/115834) ([Nikita Taranov](https://github.com/nickitat)).
* Acelera `toUTCTimestamp`/`to_utc_timestamp` y `fromUTCTimestamp`/`from_utc_timestamp` para argumentos `DateTime64`, restaurando el rendimiento que tenían antes de la corrección de overflow en [#109738](https://github.com/ClickHouse/ClickHouse/issues/109738). Los resultados no cambian. Cierra [#115802](https://github.com/ClickHouse/ClickHouse/issues/115802). [#115838](https://github.com/ClickHouse/ClickHouse/pull/115838) ([Groene AI](https://github.com/groeneai)).
* Redujo el uso de memoria y el tiempo de optimización del plan de consulta para agregaciones con clave sobre grandes literales sometidos a plegado de constantes. La clave de caché de las estadísticas de la tabla hash de agregación ahora se calcula como hash durante su serialización, en lugar de acumularse primero en memoria, por lo que un plan que contiene un literal grande ya no conserva una copia de este durante la optimización. Para un literal de 80 MB, la memoria máxima se reduce en unos 250 MB y el tiempo de optimización aproximadamente 2,5 veces. La clave calculada no cambia. [#115847](https://github.com/ClickHouse/ClickHouse/pull/115847) ([Groene AI](https://github.com/groeneai)).

<div id="268-improvement">
  #### Mejora
</div>

* Las solicitudes HTTP salientes en formato OpenAI ahora se etiquetan con el nombre SQL de la función de IA invocadora para identificar el endpoint ascendente. [#110449](https://github.com/ClickHouse/ClickHouse/pull/110449) ([George Larionov](https://github.com/george-larionov)).
* Se reduce la latencia de cancelación de las formas positivas de `LIMIT BY`: `KILL QUERY` y Ctrl+C ahora interrumpen en un único fragmento, en lugar de esperar a que finalice todo el paso. [#106070](https://github.com/ClickHouse/ClickHouse/pull/106070) ([Roman Vasin](https://github.com/rvasin)).
* Cuando un `INSERT` falla porque la tabla de destino `TO` de una vista materializada rechaza la escritura durante la creación de la canalización de inserción, el mensaje de error ahora indica la vista materializada y su tabla de destino, en lugar de informar solo del error de almacenamiento. [#107234](https://github.com/ClickHouse/ClickHouse/pull/107234) ([Groene AI](https://github.com/groeneai)).
* Con `input_format_protobuf_oneof_presence`, ClickHouse ya no requiere que la enumeración de presencia `oneof` incluya exactamente las etiquetas declaradas en el esquema Protobuf: ahora se permiten etiquetas adicionales sin columnas correspondientes en la tabla de destino, lo que facilita los cambios de esquema. [#109174](https://github.com/ClickHouse/ClickHouse/pull/109174) ([Ilya Golshtein](https://github.com/ilejn)).
* Las funciones de distancia transpuestas sobre `QBit` (`L2DistanceTransposed`, `cosineDistanceTransposed`, `dotProductTransposed` y sus variantes cuantizadas) ahora aceptan un vector de referencia más largo que el número de dimensiones buscadas e ignoran los elementos finales adicionales. Esto permite reutilizar un vector de consulta de tamaño completo para una búsqueda Matryoshka de dimensión reducida sin tener que segmentarlo primero. [#109388](https://github.com/ClickHouse/ClickHouse/pull/109388) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La subestadística `NullCount` de las estadísticas `basic` pasa a llamarse `DefaultCount` y ahora cuenta las filas iguales al valor predeterminado del tipo de columna, no solo las filas `NULL` de columnas `Nullable`. [#109977](https://github.com/ClickHouse/ClickHouse/pull/109977) ([Han Fei](https://github.com/hanfei1991)).
* Se admiten escrituras simultáneas en tablas `Iceberg` en disco local: `LocalObjectStorage` ahora implementa escrituras condicionales, por lo que el mecanismo de comparación e intercambio que publica una nueva instantánea mediante `version-hint.text` funciona también allí y los escritores simultáneos no pueden perder las actualizaciones de los demás. [#112556](https://github.com/ClickHouse/ClickHouse/pull/112556) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `ALTER TABLE ... MOVE/REPLACE PARTITION` entre dos tablas `MergeTree` con granularidad incompatible ahora genera `BAD_ARGUMENTS` en lugar de `LOGICAL_ERROR`. [#110535](https://github.com/ClickHouse/ClickHouse/pull/110535) ([Groene AI](https://github.com/groeneai)).
* El formato `Values` ya no registra falsos errores de análisis en `system.errors` y `system.error_log` cuando el análisis en streaming recurre correctamente al análisis de expresiones SQL. [#111141](https://github.com/ClickHouse/ClickHouse/pull/111141) ([Pablo Marcos](https://github.com/pamarcos)).
* Se añadió el `ProfileEvent` `DuplicationDataHashComputations`, que cuenta los cálculos de hash de datos por columna realizados al eliminar duplicados de bloques `INSERT` en tablas `*MergeTree`. [#111173](https://github.com/ClickHouse/ClickHouse/pull/111173) ([Valery Petrov](https://github.com/valerypetrov)).
* Se resaltan los comandos `./clickhouse` y `sudo ./clickhouse install` en la salida del script de instalación universal. [#111514](https://github.com/ClickHouse/ClickHouse/pull/111514) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los joins cartesianos y los joins con predicados constantes planificados por el analizador ya no fallan debido a una configuración incompatible de `join_algorithm` cuando se utiliza el analizador. [#108289](https://github.com/ClickHouse/ClickHouse/pull/108289) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* `bitmaskToArray` y `bitmaskToList` ahora admiten argumentos `Int128`, `UInt128`, `Int256` y `UInt256`. `bitPositionsToArray` también es más rápida para argumentos de enteros grandes, ya que ahora escala según el número de bits establecidos, en lugar de según la posición del bit establecido más alto. [#110743](https://github.com/ClickHouse/ClickHouse/pull/110743) ([Manuel](https://github.com/raimannma)).
* Se corrigió un bloqueo en expresiones compiladas con JIT en compilaciones nativas de macOS/aarch64 desde el código fuente, mediante el uso del triple de host de LLVM correcto para el sistema operativo anfitrión. [#111591](https://github.com/ClickHouse/ClickHouse/pull/111591) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigieron `JSON_EXISTS`, `JSON_VALUE` y `JSON_QUERY` con entradas `Dynamic` cuando los argumentos de ruta de tuplas contienen elementos `LowCardinality`, lo que evita excepciones `LOGICAL_ERROR`. Cierra [#110345](https://github.com/ClickHouse/ClickHouse/issues/110345). [#109944](https://github.com/ClickHouse/ClickHouse/pull/109944) ([Groene AI](https://github.com/groeneai)).
* Los archivos `ORC` corruptos cuyo árbol de tipos declara más columnas que el pie de página de la franja ahora hacen que la inferencia de esquema falle con `CANNOT_EXTRACT_TABLE_STRUCTURE`, en lugar de abortar en compilaciones de depuración/con sanitizador. [#110967](https://github.com/ClickHouse/ClickHouse/pull/110967) ([Groene AI](https://github.com/groeneai)).
* Las tablas de registros del sistema rotadas, como `system.metric_log`, ahora se pueden marcar como `table_readonly` incluso cuando sus metadatos superan `max_query_size`, por lo que la rotación ya no registra `QUERY_IS_TOO_LARGE` y continúa con normalidad. [#111703](https://github.com/ClickHouse/ClickHouse/pull/111703) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En Play, se añadió un botón para cerrar todas las pestañas excepto la actual. [#111835](https://github.com/ClickHouse/ClickHouse/pull/111835) ([Mikhail Artemenko](https://github.com/Michicosun)). Se corrigió el foco del teclado tras activarlo con Intro o Espacio cuando el botón se oculta. [#111899](https://github.com/ClickHouse/ClickHouse/pull/111899) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En Play, al mantener pulsado `Ctrl` (`Cmd` en Mac) mientras se pasa el cursor sobre una celda de tabla cuyo valor es una URL de imagen, ahora se muestra una vista previa de la imagen. [#109347](https://github.com/ClickHouse/ClickHouse/pull/109347) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En Linux, ClickHouse ahora añade una entrada a `system.warnings` al iniciarse cuando `rseq` no está disponible, ya que los contadores de perfil por CPU recurren entonces a la ruta `sched_getcpu`, más lenta. [#109283](https://github.com/ClickHouse/ClickHouse/pull/109283) ([Azat Khuzhin](https://github.com/azat)).
* `COUNT(*)` sobre la función de tabla `file` ya no lanza una excepción cuando la inferencia de esquema envuelve las columnas en `Nullable`. Cierra [#102044](https://github.com/ClickHouse/ClickHouse/issues/102044). [#102509](https://github.com/ClickHouse/ClickHouse/pull/102509) ([Rory Shanks](https://github.com/rorylshanks)).
* Las funciones `L1Normalize`, `L2Normalize`, `LinfNormalize` y `LpNormalize` (y sus alias) ahora funcionan con argumentos `Array`, no solo con argumentos `Tuple`, de forma coherente con `L2Norm` y las funciones de distancia. [#110052](https://github.com/ClickHouse/ClickHouse/pull/110052) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se eliminó el lector heredado de `ORC` basado en Apache Arrow. El formato de entrada `ORC` ahora siempre utiliza el decodificador nativo de ClickHouse, que ya era el predeterminado. La configuración `input_format_orc_use_fast_decoder` está obsoleta y no tiene efecto. [#110074](https://github.com/ClickHouse/ClickHouse/pull/110074) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Hizo configurables desde XML argumentos habituales de `clickhouse-client` (`<hints/>`, `<highlight/>`, `<echo/>`, `<echo_query_id/>`, `<echo_formatted/>`, `<print-profile-events/>`) y conservó los valores de configuración del cliente cuando se omiten las opciones de CLI correspondientes con valores predeterminados, para ajustes como `history_max_entries`, `suggestion_limit`, `progress`, `progress-table`, `enable_progress_table_toggle`, `print-memory-to-stderr`, `chime-threshold-seconds` y `profile-events-delay-ms`. [#110607](https://github.com/ClickHouse/ClickHouse/pull/110607) ([Larry Snizek](https://github.com/larry-cdn77)).
* Añadió el ajuste `analyzer_compatibility_apply_final_to_all_joined_tables` para restaurar el comportamiento anterior, en el que `FINAL` en la tabla más a la izquierda de un `JOIN` también se aplica a las demás tablas unidas. El ajuste se registra en el historial de cambios de ajustes, por lo que `compatibility` con versiones anteriores a la 26.6 restaura automáticamente la semántica anterior. [#111589](https://github.com/ClickHouse/ClickHouse/pull/111589) ([Nikita Fomichev](https://github.com/fm4v)).
* En Play, el botón `+` (nueva pestaña) ahora se muestra con la altura correcta en Firefox. [#109524](https://github.com/ClickHouse/ClickHouse/pull/109524) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Una subconsulta `EXISTS` correlacionada y anidada que hace referencia a una columna de un ámbito situado más allá de su consulta externa inmediata ahora falla con `NOT_IMPLEMENTED` en lugar de la excepción interna `NOT_FOUND_COLUMN_IN_BLOCK`. [#110310](https://github.com/ClickHouse/ClickHouse/pull/110310) ([Groene AI](https://github.com/groeneai)).
* El formateo de una consulta `EXECUTE AS` después de reescrituras del AST ya no genera una excepción del lado del cliente, por ejemplo, en el fuzzer de AST. [#111725](https://github.com/ClickHouse/ClickHouse/pull/111725) ([Groene AI](https://github.com/groeneai)).
* Mejora la compatibilidad de las consultas `DESCRIBE` con vistas parametrizadas y permite usar vistas parametrizadas en expresiones escalares con el nuevo analyzer. Cierra [#66307](https://github.com/ClickHouse/ClickHouse/issues/66307). Cierra [#69598](https://github.com/ClickHouse/ClickHouse/issues/69598). [#68978](https://github.com/ClickHouse/ClickHouse/pull/68978) ([Dmitry Novik](https://github.com/novikd)).
* Las expresiones `CREATE INDEX` y `CREATE HYPOTHETICAL INDEX` malformadas que no superan un ciclo de formato-análisis-formato ahora generan una excepción en lugar de provocar el error lógico `Inconsistent AST formatting` en compilaciones de depuración y con sanitizadores. [#109175](https://github.com/ClickHouse/ClickHouse/pull/109175) ([Groene AI](https://github.com/groeneai)).
* Web UI: corrige el problema por el que el campo de usuario/contraseña permanece en rojo incluso cuando las credenciales son correctas y el servidor es accesible, y vuelve a comprobar las credenciales tras editar la conexión para que un valor correcto se muestre en verde. [#109414](https://github.com/ClickHouse/ClickHouse/pull/109414) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Añadió los ajustes `text_index_max_processed_tokens_before_flush` y `text_index_max_memory_usage_before_flush` para controlar cuándo los creadores de índices de texto vacían segmentos temporales. [#111573](https://github.com/ClickHouse/ClickHouse/pull/111573) ([Rory Shanks](https://github.com/rorylshanks)).
* Añadió el ajuste `system_cache_extensions` para controlar qué extensiones de archivo se almacenan en la caché del sistema cuando `use_split_cache` está habilitado. [#111575](https://github.com/ClickHouse/ClickHouse/pull/111575) ([Kirill](https://github.com/kirillgarbar)).
* Los mensajes de error en compilaciones basadas en musl ahora muestran el texto de `strerror` legible para humanos en lugar de un valor vacío o numérico, como `strerror: 0`. [#111620](https://github.com/ClickHouse/ClickHouse/pull/111620) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* El tipo de almacenamiento efectivo de las colecciones con nombre ahora está disponible como `named_collections_storage.type` en `system.server_settings` y mediante `getServerSetting('named_collections_storage_type')`. [#111806](https://github.com/ClickHouse/ClickHouse/pull/111806) ([Pablo Marcos](https://github.com/pamarcos)).
* Flexibiliza una comprobación excesivamente estricta del tamaño de la permutación en `ColumnReplicated::permute` para que respete el contrato general de `IColumn::permute`, que permite una permutación más corta que la columna cuando se establece un límite. [#109897](https://github.com/ClickHouse/ClickHouse/pull/109897) ([Groene AI](https://github.com/groeneai)).
* Mejora la planificación de consultas de streaming al unificar el plan interno de lectura de streaming, lo que evita optimizar dos veces las lecturas directas de índices de texto. [#111821](https://github.com/ClickHouse/ClickHouse/pull/111821) ([Mikhail Artemenko](https://github.com/Michicosun)).
* UI web: el espacio entre los botones `Run one` y `Run all` ahora coincide con el margen izquierdo antes del primer botón. [#111988](https://github.com/ClickHouse/ClickHouse/pull/111988) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La planificación de reservas de memoria (experimental) ya no desaloja una asignación cuando una liberación de memoria pendiente liberaría el espacio necesario para aumentar una reserva por encima del límite: la decisión de desalojo ahora espera a que se apliquen las reducciones en curso, lo que evita cancelaciones innecesarias de consultas bajo presión de memoria. [#112299](https://github.com/ClickHouse/ClickHouse/pull/112299) ([Sergei Trifonov](https://github.com/serxa)).
* Iceberg v2 requiere `sequence_number` en los archivos de manifiesto, pero otros motores, como BigQuery, pueden escribir archivos de manifiesto sin él. ClickHouse ahora puede leer esas tablas. [#112431](https://github.com/ClickHouse/ClickHouse/pull/112431) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Muestra una advertencia cuando faltan estadísticas para la reordenación de join. [#107666](https://github.com/ClickHouse/ClickHouse/pull/107666) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se añadieron columnas de compatibilidad con MySQL a las vistas `INFORMATION_SCHEMA`: `SCHEMATA.DEFAULT_COLLATION_NAME` y `DEFAULT_ENCRYPTION`; `TABLES.ENGINE` y otras columnas relacionadas con MySQL; y `COLUMNS.COLUMN_KEY`, `PRIVILEGES`, `GENERATION_EXPRESSION`, `SRS_ID`. Esto permite que los clientes compatibles con MySQL ejecuten consultas de introspección de catálogo sin encontrar `UNKNOWN_IDENTIFIER`. [#109351](https://github.com/ClickHouse/ClickHouse/pull/109351) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Una referencia sin calificar a una clave de `INNER JOIN` igualada en la condición `ON` (por ejemplo, `SELECT id FROM a INNER JOIN b ON a.id = b.id`) ya no se informa como un identificador ambiguo, ya que se garantiza que ambos lados contienen el mismo valor. [#109366](https://github.com/ClickHouse/ClickHouse/pull/109366) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Devuelve el código HTTP `403 Forbidden` (en lugar de `500 Internal Server Error`) para excepciones `ACCESS_DENIED` a través de la interfaz HTTP. [#111043](https://github.com/ClickHouse/ClickHouse/pull/111043) ([Schum](https://github.com/Schum-io)).
* Escribe el SST del índice UNIQUE KEY directamente en el almacenamiento de la parte, en lugar de prepararlo en un archivo temporal local, lo que elimina la dependencia de un volumen temporal local y evita una copia adicional. [#111189](https://github.com/ClickHouse/ClickHouse/pull/111189) ([johnjing](https://github.com/JingYanchao)).
* `UTMToGeo` ahora acepta como cuarto argumento la letra de la banda de latitud MGRS devuelta por `geoToUTM` (además de la marca entera de hemisferio), de modo que un resultado de `geoToUTM` puede convertirse directamente de ida y vuelta mediante `UTMToGeo`. [#111521](https://github.com/ClickHouse/ClickHouse/pull/111521) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un `LOGICAL_ERROR` ("El índice min-max de nivel de parte se construyó a partir de un conjunto de columnas inesperado") que podía abortar una fusión en segundo plano en compilaciones de depuración con sanitizador después de reducir `part_minmax_index_columns` (por ejemplo, de `with_block_number_offset` a `partition_key_only`). [#111511](https://github.com/ClickHouse/ClickHouse/pull/111511) ([Groene AI](https://github.com/groeneai)).
* Corrige la subestimación en `ProfileEvents['JoinResultRowCount']` del tamaño del resultado de un `JOIN` que se desborda a disco. Las filas emitidas desde buckets retrasados solo se contabilizaban en `JoinDelayedJoinedTransformRowCount` y no se incluían en el total. Los resultados de las consultas siempre fueron correctos; solo era incorrecto el evento de perfil. [#112673](https://github.com/ClickHouse/ClickHouse/pull/112673) ([Groene AI](https://github.com/groeneai)).
* `SYSTEM DISABLE FAILPOINT` ahora rechaza los nombres de puntos de fallo inexistentes y genera `BAD_ARGUMENTS`, como ya hacía `SYSTEM ENABLE FAILPOINT`. Anteriormente, un nombre mal escrito indicaba que la operación se había realizado correctamente, pero dejaba habilitado el punto de fallo previsto, sin indicar que no se había deshabilitado nada. [#112680](https://github.com/ClickHouse/ClickHouse/pull/112680) ([Groene AI](https://github.com/groeneai)).
* Se añadió una nueva columna, `skipping_indices_types`, a la tabla `system.tables`. Contiene los tipos distintos de índices de omisión de datos definidos para cada tabla. [#106388](https://github.com/ClickHouse/ClickHouse/pull/106388) ([Anton Popov](https://github.com/CurtizJ)).
* Se añadió una comprobación de coherencia para garantizar que una consulta distribuida siempre incluya una versión de cliente conocida, generando un error lógico en lugar de reenviar silenciosamente una versión cero a los segmentos remotos. Las consultas iniciadas por el servidor (vaciados en segundo plano, consumidores de streaming, recargas de diccionarios y vaciados de inserciones asíncronas) ahora informan de la propia versión del servidor como versión del iniciador. [#109408](https://github.com/ClickHouse/ClickHouse/pull/109408) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se redujo la verbosidad de los diagnósticos de búsqueda binaria de la clave principal por parte en `MergeTree`, cambiándolos del registro de trazas al registro de pruebas. [#110324](https://github.com/ClickHouse/ClickHouse/pull/110324) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La ruta de ejemplo de particionamiento Hive para tablas de almacenamiento de objetos (p. ej., `S3`) se resuelve al usar la tabla por primera vez, en lugar de durante `CREATE`/`ATTACH`, por lo que un endpoint inaccesible ya no bloquea la creación de tablas ni el inicio del servidor. [#111842](https://github.com/ClickHouse/ClickHouse/pull/111842) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se corrigió `ReadBufferFromPocoSocketBase::setReceiveTimeout`, que aplicaba su argumento como segundos en lugar de microsegundos, así como las compilaciones configuradas con `-DENABLE_LIBFIU=OFF`, que no compilaban. En compilaciones sin libfiu, `SYSTEM ENABLE FAILPOINT` y los comandos relacionados ahora generan una excepción en lugar de no hacer nada silenciosamente. [#112767](https://github.com/ClickHouse/ClickHouse/pull/112767) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la subestimación de `rows_read` y otros contadores de progreso por parte de `clickhouse-local` en las `statistics` de la salida `JSON`/`XML` y en la barra de progreso: se descartaba un incremento de progreso que llegaba mientras se ensamblaba el paquete de progreso. [#112958](https://github.com/ClickHouse/ClickHouse/pull/112958) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió el error informado cuando un `INSERT` asíncrono en una tabla `Distributed` necesita un directorio de cola cuyo nombre supera el límite de 255 bytes del sistema de archivos (posible con `use_compact_format_in_distributed_parts_names = 0`). Era un `LOGICAL_ERROR` para un segmento con `internal_replication` y un `Code: 1001. std::exception` sin atribución en otros casos; ahora ambos informan `ARGUMENT_OUT_OF_BOUND` e indican la tabla, el clúster y el límite. [#113083](https://github.com/ClickHouse/ClickHouse/pull/113083) ([Groene AI](https://github.com/groeneai)).
* Rechaza los límites de cuota de `execution_time` fuera de rango con `BAD_ARGUMENTS`, en lugar de depender de un comportamiento indefinido al escalarlos a nanosegundos internos. [#113178](https://github.com/ClickHouse/ClickHouse/pull/113178) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las réplicas paralelas automáticas ahora admiten consultas `JOIN`. [#106073](https://github.com/ClickHouse/ClickHouse/pull/106073) ([Nikita Taranov](https://github.com/nickitat)).
* Se admite la autenticación con token de actualización para el catálogo `OneLake`. [#110413](https://github.com/ClickHouse/ClickHouse/pull/110413) ([alesapin](https://github.com/alesapin)).
* La configuración de `Keeper` `write_snapshot_version` ahora admite recarga en caliente. [#112150](https://github.com/ClickHouse/ClickHouse/pull/112150) ([alesapin](https://github.com/alesapin)).
* Paraleliza `SYSTEM DROP FILESYSTEM CACHE`. [#112532](https://github.com/ClickHouse/ClickHouse/pull/112532) ([Kseniia Sumarokova](https://github.com/kssenii)).
* El anidamiento no admitido de una vista `SQL SECURITY DEFINER` o `SQL SECURITY NONE` sobre `s3Cluster`, `urlCluster` o `fileCluster` ahora se rechaza con un error de consulta normal, en lugar de generar un `LOGICAL_ERROR` en compilaciones de depuración y con sanitizadores. [#113371](https://github.com/ClickHouse/ClickHouse/pull/113371) ([Groene AI](https://github.com/groeneai)).
* Se añadió la configuración `analyzer_compatibility_multiple_joins_qualify_column_names` (valor predeterminado: `false`). Cuando está habilitada y la cláusula `FROM` de una consulta contiene dos o más `JOIN`, los nombres de las columnas de resultado generados por el analizador imitan la reescritura de múltiples joins del analizador anterior: las columnas expandidas desde `*` se denominan `<alias-or-table>.<column>`, y una referencia a una columna sin alias en la lista `SELECT` conserva exactamente el nombre con el que se escribió. Esto permite que las consultas externas que hacen referencia a esos nombres calificados, como `SELECT ll.Date FROM (SELECT * FROM t AS ll JOIN t1 ON ... JOIN t2 ON ...)`, funcionen como lo hacían con el analizador anterior. También corrige la pérdida de nombres calificados de columnas de resultado por parte del analizador para las columnas expandidas desde `*` cuando `group_by_use_nulls` se combina con `ROLLUP`, `CUBE` o `GROUPING SETS`, lo que producía nombres de columnas de resultado duplicados e impedía referencias externas a esas columnas. [#110746](https://github.com/ClickHouse/ClickHouse/pull/110746) ([Dmitry Novik](https://github.com/novikd)).
* Se cambió el nombre de `allow_experimental_delta_kernel_rs` a `allow_delta_kernel_rs`. El nombre anterior se conserva como alias. [#113476](https://github.com/ClickHouse/ClickHouse/pull/113476) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Cuando se proporciona una colección con nombre inexistente a las funciones de tabla `remote`/`remoteSecure` o a los motores de tabla `Remote`/`RemoteSecure` junto con una anulación `key = value`, ClickHouse ahora informa de la colección con nombre inexistente en lugar de volver a analizar la llamada de forma posicional e informar de un error no relacionado. [#113510](https://github.com/ClickHouse/ClickHouse/pull/113510) ([Groene AI](https://github.com/groeneai)).
* El inicio de la shell con la autocompletación de `clickhouse-bootstrap` ya no muestra variables de entorno cuando la autocompletación se carga desde el hook de autocompletación del usuario. [#113694](https://github.com/ClickHouse/ClickHouse/pull/113694) ([Azat Khuzhin](https://github.com/azat)).
* Se añadió el valor `sainte_lague` para `shared_merge_tree_merge_coordinator_distribution_algorithm`, que ahora es el valor predeterminado en lugar de `water_filling`. [#113442](https://github.com/ClickHouse/ClickHouse/pull/113442) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se añadió la configuración `filesystem_cache_wait_for_concurrent_download_timeout_milliseconds` para limitar el tiempo que una lectura espera a que finalice la descarga, en la caché del sistema de archivos, de un único fragmento (de aproximadamente 1 MiB) por parte de otra consulta, y no de un segmento de archivo completo. [#113322](https://github.com/ClickHouse/ClickHouse/pull/113322) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se añadió la configuración de Keeper `min_time_between_fsyncs_ms` (valor predeterminado: `5` ms), que agrupa las adiciones al changelog que llegan poco después del vaciado anterior, en lugar de iniciar otro vaciado inmediatamente. [#113749](https://github.com/ClickHouse/ClickHouse/pull/113749) ([Michael Kolupaev](https://github.com/al13n321)).
* Las tablas Kafka con offsets almacenados en Keeper (`kafka_keeper_path`) ahora generan `ABORTED` en lugar de `LOGICAL_ERROR` cuando la tabla queda inactiva tras perder una sesión de Keeper, por ejemplo durante una lectura directa o la transmisión de una vista materializada. [#113913](https://github.com/ClickHouse/ClickHouse/pull/113913) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió el formato incoherente del AST de `viewIfPermitted`: la forma de función de tabla ya no formatea incorrectamente un operador como `not` en su rama `ELSE`, y la forma de expresión `viewIfPermitted(...)` ya no recibe un `ELSE` espurio. [#113652](https://github.com/ClickHouse/ClickHouse/pull/113652) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error espurio `Failed to drop temporary table after refresh. Table ... is left behind and requires manual cleanup.` que se registraba al cancelar la actualización de una vista materializada actualizable (por ejemplo, al apagar el servidor) mientras estaba habilitado `database_atomic_wait_for_drop_and_detach_synchronously`. En realidad, la tabla temporal se eliminaba, por lo que no era necesaria ninguna limpieza manual. [#113957](https://github.com/ClickHouse/ClickHouse/pull/113957) ([Groene AI](https://github.com/groeneai)).
* El servidor ahora genera `UNKNOWN_ELEMENT_IN_CONFIG` cuando encuentra opciones desconocidas en su configuración, lo que ayuda a detectar pronto errores tipográficos y opciones mal configuradas. La comprobación se puede deshabilitar con `<skip_check_for_incorrect_settings>`. [#100332](https://github.com/ClickHouse/ClickHouse/pull/100332) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En la interfaz web, el historial del navegador y la URL ya no se actualizan con cada pulsación de tecla; se guardan al ejecutar correctamente una consulta o al cambiar de pestaña. [#113596](https://github.com/ClickHouse/ClickHouse/pull/113596) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* ClickHouse ahora informa de un desbordamiento de pila en lugar de finalizar silenciosamente: los controladores de señales fatales se ejecutan en una pila de señales alternativa, por lo que `SIGSEGV`, `SIGABRT`, `SIGILL`, `SIGBUS`, `SIGSYS`, `SIGFPE` y `SIGTRAP` generan un seguimiento de pila incluso cuando el hilo que provocó el fallo ha agotado su pila. [#113927](https://github.com/ClickHouse/ClickHouse/pull/113927) ([Groene AI](https://github.com/groeneai)).
* `ALTER TABLE ... MODIFY COLUMN <col> Tuple(...)` en un `Tuple` con nombre ahora es una operación de solo metadatos cuando solo se añaden subcampos, con una velocidad equivalente a la de `ADD COLUMN` de nivel superior. Se habilita con `SET `allow\_metadata\_only\_named\_tuple\_alter` = 1`. [#107305](https://github.com/ClickHouse/ClickHouse/pull/107305) ([Amos Bird](https://github.com/amosbird)).
* Se añade la configuración `input_format_json_max_object_size` para limitar el tamaño de los objetos JSON durante el análisis. Cierra [#106704](https://github.com/ClickHouse/ClickHouse/issues/106704). [#107669](https://github.com/ClickHouse/ClickHouse/pull/107669) ([Pavel Kruglov](https://github.com/Avogar)).
* Se evita registrar `sasl.kerberos.kinit.cmd configuration parameter is ignored.` en configuraciones del motor `Kafka` que no usan autenticación Kerberos mediante keytab. [#108235](https://github.com/ClickHouse/ClickHouse/pull/108235) ([Ivan Shelestov](https://github.com/Shelestov7)).
* Se añade system.s3(azure)\_queue\_metadata. [#108522](https://github.com/ClickHouse/ClickHouse/pull/108522) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Los fallos de conexión tolerados con bases de datos MySQL/PostgreSQL remotas ahora se registran como advertencias en lugar de errores. [#109472](https://github.com/ClickHouse/ClickHouse/pull/109472) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Cuando no se especifican ni `port` ni `secure`, `clickhouse-client` prueba simultáneamente el puerto predeterminado 9000 y el puerto seguro 9440, y utiliza el que responde primero. Así, `clickhouse-client --host play.clickhouse.com --user play` se conecta mediante TLS sin `--secure`, aunque el puerto sin cifrar de ese servidor se descarta silenciosamente en lugar de rechazarse. Si el puerto que respondió resulta inutilizable —por ejemplo, un puerto seguro con un certificado no confiable—, el cliente recurre al otro, ya que el protocolo no se solicitó explícitamente. [#110130](https://github.com/ClickHouse/ClickHouse/pull/110130) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Al hacer clic en el logotipo de la nube en el Playground, ahora se abre el sitio web de ClickHouse en una pestaña nueva para que no pierdas el progreso mientras se ejecutan las consultas. [#110422](https://github.com/ClickHouse/ClickHouse/pull/110422) ([William Hatcher](https://github.com/williamhatcher)).
* Se añadió el modificador STREAM BOUNDED, que lee solo la primera instantánea de una consulta de streaming y luego finaliza, en lugar de suscribirse a actualizaciones. [#110653](https://github.com/ClickHouse/ClickHouse/pull/110653) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Se añadió información sobre el estado interno de las uniones a `EXPLAIN ANALYZE`. [#110892](https://github.com/ClickHouse/ClickHouse/pull/110892) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Cuando se activa una aserción de reentrada de `RWLockImpl::getLock()` (`RWLock is already locked in exclusive mode` / `Cannot acquire exclusive lock while RWLock is already locked`), el mensaje de error ahora indica qué otros `query_id` poseen el bloqueo y cuántos bloqueos ya mantiene el `query_id` solicitante, lo que permite diagnosticar estos errores de orden de bloqueo. [#110971](https://github.com/ClickHouse/ClickHouse/pull/110971) ([Groene AI](https://github.com/groeneai)).
* ClickHouse Keeper ahora registra el evento "Client has not sent any data" en el nivel `Information` en lugar de `Warning`, igual que el manejador TCP del servidor. Esto evita advertencias espurias de las sondas de comprobación de estado TCP (por ejemplo, las sondas de actividad `tcpSocket` de Kubernetes), que abren e inmediatamente cierran una conexión al puerto de cliente de Keeper. [#111217](https://github.com/ClickHouse/ClickHouse/pull/111217) ([Zeynel](https://github.com/ZeynelKoca)).
* `MaterializedPostgreSQL` ahora conserva los valores `TOAST` de PostgreSQL que no han cambiado durante las actualizaciones, en lugar de reemplazarlos por valores predeterminados. [#111552](https://github.com/ClickHouse/ClickHouse/pull/111552) ([OrpheusAgent](https://github.com/OrpheusAgent)).
* keeper: Se aumentó el valor predeterminado de `write_snapshot_version` a 8 y ahora se puede recargar en caliente. [#111715](https://github.com/ClickHouse/ClickHouse/pull/111715) ([Michael Kolupaev](https://github.com/al13n321)).
* Se añadió el modificador STREAM UNORDERED: omite la ordenación por orden de confirmación de cada instantánea. [#111794](https://github.com/ClickHouse/ClickHouse/pull/111794) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Se añadió una nueva configuración de MergeTree, `text_index_version`, que controla la versión del formato en disco de los índices de texto: `v0_initial`, `v1_with_codec` o `v2_with_positions`. Durante una actualización progresiva o antes de una reversión de versión, establécela en una versión anterior para que los servidores más nuevos sigan escribiendo partes de índices de texto en un formato que los servidores más antiguos aún puedan leer; la configuración de compatibilidad la ajusta automáticamente. [#111803](https://github.com/ClickHouse/ClickHouse/pull/111803) ([Anton Popov](https://github.com/CurtizJ)).
* Las funciones de texto de IA (`aiGenerate`, `aiClassify`, `aiExtract`, `aiTranslate`) ahora rechazan respuestas del proveedor truncadas o incompletas por otros motivos (por ejemplo, cuando el modelo alcanza el límite de `max_tokens`) en lugar de devolver silenciosamente resultados parciales. El comportamiento se rige por la configuración `ai_function_throw_on_error`. [#111830](https://github.com/ClickHouse/ClickHouse/pull/111830) ([George Larionov](https://github.com/george-larionov)).
* Se mejoraron `L2DistanceTransposedQuantized`, `cosineDistanceTransposedQuantized` y `dotProductTransposedQuantized` de precisión reducida al reconstruir códigos `QBit(Int8)` con `p < 8` mediante centroides de prefijo de media condicional gaussiana. La precisión completa (`p = 8`) sigue siendo exacta a nivel de bits; las distancias aproximadas de precisión reducida pueden cambiar y las mejoras en recuperación y latencia dependen de la carga de trabajo. [#111867](https://github.com/ClickHouse/ClickHouse/pull/111867) ([Sergey Kuznetsov](https://github.com/skuznetsov)).
* Se corrigió un problema por el que la *caché de condiciones de consulta* no se rellenaba para los gránulos eliminados por cualquier conjunción salvo la última de una cláusula `WHERE` con varias condiciones `AND`. [#112083](https://github.com/ClickHouse/ClickHouse/pull/112083) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Se añadió una nueva configuración, `input_format_json_max_string_column_growth_step`, que limita el crecimiento en potencias de dos de los búferes internos de String al crear una columna JSON, lo que reduce el pico de memoria al insertar documentos JSON grandes. Está desactivada de forma predeterminada. [#112159](https://github.com/ClickHouse/ClickHouse/pull/112159) ([Pavel Kruglov](https://github.com/Avogar)).
* Se redujo el pico de memoria al escribir columnas JSON con serialización de datos compartidos con buckets (`map_with_buckets` y avanzada), al dividir los datos compartidos en buckets de uno en uno durante la escritura, en lugar de materializar todos los buckets simultáneamente. Esto resulta especialmente beneficioso para las columnas Array(JSON): en el caso de JSON escalar, los datos compartidos se dividen por gránulo (limitado por index\_granularity\_bytes), por lo que el ahorro es pequeño; en cambio, un único gránulo de Array(JSON) puede contener muchas filas anidadas y, por tanto, una gran cantidad de datos compartidos, por lo que dividirlos de un bucket a la vez reduce considerablemente el pico de memoria. [#112172](https://github.com/ClickHouse/ClickHouse/pull/112172) ([Pavel Kruglov](https://github.com/Avogar)).
* La documentación de una configuración en `system.documentation` —mostrada en la página integrada `/docs` y mediante el comando `help`— ahora incluye el historial de cambios de su valor predeterminado: la versión en la que se introdujo la configuración y cada cambio posterior de su valor predeterminado, junto con el valor anterior, el nuevo valor y el motivo del cambio. [#112177](https://github.com/ClickHouse/ClickHouse/pull/112177) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `EXPLAIN ANALYZE` ahora funciona con consultas en streaming. [#112445](https://github.com/ClickHouse/ClickHouse/pull/112445) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Los modificadores de una declaración de columna —`COMMENT`, `CODEC`, `STATISTICS`, `TTL`, `COLLATE`, `PRIMARY KEY` y `SETTINGS` por columna— ahora pueden escribirse en cualquier orden en `CREATE TABLE`, y cada uno de ellos como máximo una vez. Anteriormente, solo se aceptaba un orden fijo y, por ejemplo, `x UInt64 CODEC(ZSTD) COMMENT 'text'` provocaba un error de sintaxis. En `ALTER TABLE ... ADD COLUMN` / `MODIFY COLUMN`, los modificadores compatibles —`COMMENT`, `CODEC`, `STATISTICS`, `TTL` y `SETTINGS` por columna— también pueden escribirse en cualquier orden; `SETTINGS` por columna en `ADD COLUMN` y un `STATISTICS` declarado en `ADD COLUMN` / `MODIFY COLUMN` ahora se aplican en lugar de descartarse silenciosamente, y `COLLATE` y `PRIMARY KEY` en estos comandos `ALTER` ahora generan una excepción en lugar de ignorarse silenciosamente. [#112788](https://github.com/ClickHouse/ClickHouse/pull/112788) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El método de lectura `pread_threadpool` requiere la llamada al sistema `preadv2` con el indicador `RWF_NOWAIT` para leer los datos que ya se encuentran en la caché de páginas sin delegar la lectura a un grupo de hilos. Ahora, al iniciarse, se comprueba si puede usarse esa llamada al sistema y, si no es posible —porque el kernel de Linux es anterior a 5.11 o porque un perfil `seccomp` de un entorno de ejecución de contenedores la rechaza—, el valor predeterminado de `local_filesystem_read_method` cambia a `pread` y se informa del motivo en el registro del servidor. Anteriormente, en esos sistemas cada lectura incurría en el coste de delegarla a un grupo de hilos, y un perfil `seccomp` que respondía `EPERM` hacía que las consultas fallaran con `CANNOT_READ_FROM_FILE_DESCRIPTOR`. [#112945](https://github.com/ClickHouse/ClickHouse/pull/112945) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los metadatos thrift de Parquet malformados se notifican como INCORRECT\_DATA. [#113311](https://github.com/ClickHouse/ClickHouse/pull/113311) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el manejo del códec GCD de valores de ancho fijo con signo y números negativos. Anteriormente, calculaba el divisor directamente a partir de valores con signo, lo que podía no detectar el divisor común y reducir significativamente la eficiencia de compresión de las columnas de enteros y decimales con signo. Ahora calcula el divisor a partir de las magnitudes para los tipos con signo, manteniendo el comportamiento existente para los tipos sin signo y la descompresión. [#113798](https://github.com/ClickHouse/ClickHouse/pull/113798) ([Kirill Shcherbatov](https://github.com/kshcherbatov)).
* Añade las opciones `enable_alp_codec`, `enable_sz3_codec`, `enable_zxc_codec` y `enable_quantized_codec` para habilitar cada códec de compresión experimental de forma independiente. [#113824](https://github.com/ClickHouse/ClickHouse/pull/113824) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Permite aplicar `ALTER TABLE ... MODIFY COLUMN` a una columna cuyas subcolumnas se utilizan en la clave primaria o de partición, siempre que las subcolumnas usadas en la clave conserven un tipo compatible en disco. Anteriormente, cualquier ALTER de este tipo estaba prohibido. [#113862](https://github.com/ClickHouse/ClickHouse/pull/113862) ([Pavel Kruglov](https://github.com/Avogar)).
* Añade el dashboard `Filesystem cache` a `system.dashboards`. [#113884](https://github.com/ClickHouse/ClickHouse/pull/113884) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Hace que los registros de caché de cada recarga de búfer solo se emitan con `filesystem_cache_verbose_logging`. [#113885](https://github.com/ClickHouse/ClickHouse/pull/113885) ([Groene AI](https://github.com/groeneai)).
* Cuando el tipo declarado de una columna y sus datos difieren durante una lectura de `MergeTree` (por tipos de origen mixtos, por ejemplo, después de un `ALTER TABLE ... MODIFY COLUMN` cuya mutación aún no ha finalizado), el servidor ahora informa de una excepción clara que indica la columna y ambas estructuras, en lugar de realizar una conversión no comprobada: anteriormente, las compilaciones de depuración y con sanitizador se abortaban con un simple `Bad cast from type A to B` que no indicaba ninguna columna, y las compilaciones de lanzamiento recorrían silenciosamente memoria incompatible. [#114087](https://github.com/ClickHouse/ClickHouse/pull/114087) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Una función de ventana con `PARTITION BY` ahora funciona con `make_distributed_plan`. Cuando la estructura del plan lo permite, la función de ventana se ejecuta en paralelo en buckets que reciben particiones completas. [#114111](https://github.com/ClickHouse/ClickHouse/pull/114111) ([Vighnesh Pathrikar](https://github.com/VighneshPath)).
* UI web: el indicador de carga con forma de reloj de arena del panel de bases de datos vuelve a estar animado. [#114187](https://github.com/ClickHouse/ClickHouse/pull/114187) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ahora se utiliza una función hash de 64 bits para los métodos externos de agregación anulable de ancho fijo, lo que evita problemas graves de colisiones en agregaciones de cardinalidad muy alta. [#114210](https://github.com/ClickHouse/ClickHouse/pull/114210) ([Nikita Taranov](https://github.com/nickitat)).
* Las tablas `Distributed` y `Buffer` que omiten su lista de columnas ahora siempre infieren la estructura según los derechos de acceso del usuario que las crea. [#114211](https://github.com/ClickHouse/ClickHouse/pull/114211) ([Pedro Ferreira](https://github.com/PedroTadim)).
* `x IN (subquery)` sobre una columna `LowCardinality` ahora devuelve `LowCardinality(UInt8)` — el mismo tipo que `x IN (literal list)`. Anteriormente, ambas formas devolvían tipos distintos, y los planes distribuidos con este tipo de `IN` requerían un caso especial en la comprobación de tipos del plan. [#114229](https://github.com/ClickHouse/ClickHouse/pull/114229) ([Alexander Gololobov](https://github.com/davenger)).
* Habilita `ie_join` de forma predeterminada: el valor predeterminado de `join_algorithm` ahora es `direct,parallel_hash,hash,ie_join`. Un `JOIN` cuya sección `ON` solo contiene condiciones de desigualdad (dos comparaciones `<`, `<=`, `>`, `>=` entre expresiones de las tablas unidas) ahora se ejecuta con el algoritmo IEJoin basado en ordenación, en lugar de un `CROSS JOIN` con filtro, y se admiten joins `LEFT`/`RIGHT`/`FULL`/`SEMI`/`ANTI` con dichas condiciones. Como `ie_join` es el último de la lista, solo se utiliza cuando no se aplican los demás algoritmos. [#114327](https://github.com/ClickHouse/ClickHouse/pull/114327) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigieron los gráficos de la interfaz web que, al pasar el cursor, mostraban en el globo informativo los datos de un punto reflejado para resultados ordenados por `x` de forma descendente. Ahora se pueden representar columnas `Date`, `Date32`, `DateTime` y `DateTime64`; anteriormente, solo funcionaban las marcas de tiempo Unix enteras. Las fechas de los ejes y los globos se muestran en formato ISO 8601, y las cantidades con los sufijos `K`/`M`/`G`/..., igual que en el panel avanzado. [#114349](https://github.com/ClickHouse/ClickHouse/pull/114349) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se admite el análisis de enteros que superan el rango de 64 bits en el tipo de datos `JSON`, `JSONExtract` e `isValidJSON`. Estos valores se leen como tipos enteros amplios, como `Int128`/`UInt256`, en lugar de provocar el rechazo de todo el documento. [#114379](https://github.com/ClickHouse/ClickHouse/pull/114379) ([Pavel Kruglov](https://github.com/Avogar)).
* Las tablas QueryRunner ahora inician hilos de trabajo según sea necesario y los liberan cuando quedan inactivos, en lugar de ocuparlos durante toda la vida útil de la tabla. [#114522](https://github.com/ClickHouse/ClickHouse/pull/114522) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se añadió observabilidad para las pilas de fibras, utilizadas para la comunicación asíncrona con réplicas remotas: eventos de perfil `FiberStackAllocs`, `FiberStackAllocBytes`, `FiberStackAllocNanoseconds`, `FiberStackFreeNanoseconds` y métricas `FiberStacks`, `FiberStackBytes`. [#114541](https://github.com/ClickHouse/ClickHouse/pull/114541) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* PromQL: se admiten los modificadores de marca de tiempo `@ start()` y `@ end()`. [#114558](https://github.com/ClickHouse/ClickHouse/pull/114558) ([Minh Vu](https://github.com/fallintoplace)).
* Se propaga el contexto de trazas de OpenTelemetry a las fibras utilizadas para el establecimiento asíncrono de conexiones y la ejecución de consultas remotas (solicitudes hedged, `async_socket_for_remote`, `async_query_sending_for_remote`). Los spans de consultas remotas de una consulta distribuida ahora se asignan correctamente como hijos del span `Connection::sendQuery` del iniciador, en lugar de adjuntarse directamente al contexto de trazas proporcionado por el cliente, y cada ejecución de tarea asíncrona genera su propio span. [#114813](https://github.com/ClickHouse/ClickHouse/pull/114813) ([Diego Gomes Tomé](https://github.com/diegomestre2)).
* Con este cambio, al utilizar los índices WHATIF, la línea base servida por proyección informa `not_applicable` para cada candidato en lugar de producir un error en la sentencia. [#114846](https://github.com/ClickHouse/ClickHouse/pull/114846) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* `DROP DATABASE` ahora elimina las tablas en orden topológico inverso según las dependencias de carga y referenciales (anteriormente, solo según las dependencias de carga), por lo que un fallo durante `DROP DATABASE` no puede dejar una tabla cuyas dependencias ya se hayan eliminado. [#114952](https://github.com/ClickHouse/ClickHouse/pull/114952) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En los dashboards de la interfaz web, la pantalla global de error se sustituye por una nota sobre los dashboards, de modo que un gráfico con errores ya no oculta toda la página. [#115019](https://github.com/ClickHouse/ClickHouse/pull/115019) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se externalizan las tablas de la fase de aprendizaje del agregador adaptativo cuando hay presión de memoria. [#115038](https://github.com/ClickHouse/ClickHouse/pull/115038) ([Groene AI](https://github.com/groeneai)).
* `clickhouse-local` ahora responde a las solicitudes CORS de preflight con los mismos encabezados permisivos que `clickhouse-server`, por lo que la interfaz HTTP abierta mediante `SYSTEM START LISTEN HTTP` se puede utilizar directamente desde un navegador, incluida la interfaz web abierta desde una URL `file://`. [#115045](https://github.com/ClickHouse/ClickHouse/pull/115045) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se admiten operadores de coincidencia de expresiones regulares al estilo PostgreSQL: `~` (un alias de la función `match`), `~*` (coincidencia sin distinguir entre mayúsculas y minúsculas), `!~` y `!~*` (negaciones). Los comandos `\d`, `\dt`, `\dv` de `psql` ahora funcionan al conectarse a ClickHouse mediante el protocolo de compatibilidad con PostgreSQL, y una consulta fallida ya no cierra la conexión. [#115066](https://github.com/ClickHouse/ClickHouse/pull/115066) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-client` ya no imprime dos veces el mensaje `Connecting to ...` cuando solicita una contraseña de forma interactiva. [#115081](https://github.com/ClickHouse/ClickHouse/pull/115081) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `EXPLAIN WHATIF` ahora indica por qué se omitió la estimación empírica en una nueva línea, `empirical_reason`, que se muestra cuando `empirical_status` es `unsupported`. [#115140](https://github.com/ClickHouse/ClickHouse/pull/115140) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Cuando ningún algoritmo de JOIN habilitado mediante la configuración `join_algorithm` puede ejecutar un `JOIN`, el mensaje de error ahora indica los algoritmos que se probaron, así como la estrictitud y el tipo del JOIN que falló, en lugar de limitarse a informar de que ninguno funcionó. [#115226](https://github.com/ClickHouse/ClickHouse/pull/115226) ([Alexey Elkin](https://github.com/elkinal)).
* Las consultas de búsqueda vectorial ahora pueden usar el índice de similitud vectorial cuando el vector de referencia es un literal de Array de enteros, por ejemplo, `ORDER BY L2Distance(vec, [1, 2])`. Anteriormente, estas consultas recurrían silenciosamente a un escaneo por fuerza bruta. [#115255](https://github.com/ClickHouse/ClickHouse/pull/115255) ([Robert Schulze](https://github.com/rschu1ze)).
* Los errores de red del lado del cliente de Azure (conexión restablecida o rechazada, y errores de DNS y TLS) ahora se reintentan como errores de transporte en lugar de aparecer como un `500` sintético, al igual que en el cliente S3. [#115269](https://github.com/ClickHouse/ClickHouse/pull/115269) ([Arsen Muk](https://github.com/arsenmuk)).
* La documentación de todas las sentencias SQL (por ejemplo, nombre, sintaxis, descripción y ejemplos) ahora se puede recuperar de la tabla del sistema `system.statements`. [#115341](https://github.com/ClickHouse/ClickHouse/pull/115341) ([Robert Schulze](https://github.com/rschu1ze)).
* `BACKUP` ya no deja un archivo de bloqueo en su destino cuando el intento que lo creó falla antes de escribir nada, ya sea al reservar el destino o al abrir un archivo. Ningún backup posterior podía coincidir con dicho bloqueo, por lo que todos los reintentos en el mismo destino fallaban hasta que el archivo se eliminaba manualmente. Los backups en destinos `S3` y `Azure` también crean el bloqueo de forma exclusiva, y un bloqueo perteneciente a otro backup se informa como un backup simultáneo en lugar de como el error devuelto por el almacenamiento. [#115387](https://github.com/ClickHouse/ClickHouse/pull/115387) ([Julia Kartseva](https://github.com/jkartseva)).
* Se admite la autenticación mediante token de portador en BuilderRWBufferFromHTTP (intento 2). [#115400](https://github.com/ClickHouse/ClickHouse/pull/115400) ([Sergei Trifonov](https://github.com/serxa)).
* Se añadieron algunas métricas dimensionales para S3Queue. [#115422](https://github.com/ClickHouse/ClickHouse/pull/115422) ([Bharat Nallan](https://github.com/bharatnc)).
* Se añadió `keyword` como alias del tokenizador `array` del índice de texto para mejorar la compatibilidad con OpenSearch, Elasticsearch, SolR y Lucene. [#115507](https://github.com/ClickHouse/ClickHouse/pull/115507) ([Robert Schulze](https://github.com/rschu1ze)).
* Se permite crear tablas S3 propias. [#115652](https://github.com/ClickHouse/ClickHouse/pull/115652) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* No se registra memoria sin seguimiento por hilo en errores MEMORY\_LIMIT\_EXCEEDED que no afectan a todo el servidor. [#115658](https://github.com/ClickHouse/ClickHouse/pull/115658) ([Azat Khuzhin](https://github.com/azat)).
* El protocolo remote-write de Prometheus ahora admite inserciones asíncronas: los datos de varias solicitudes remote-write concurrentes se agrupan antes de formar partes, según la configuración `async_insert` (habilitada de forma predeterminada; añada `async_insert=0` a la URL del controlador para mantener el comportamiento síncrono). Una solicitud solo se confirma después de que los datos se hayan escrito en todas las tablas internas de la tabla `TimeSeries` de destino. [#115688](https://github.com/ClickHouse/ClickHouse/pull/115688) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Todas las funciones de agregación `timeSeries*` ahora gestionan las marcas de tiempo duplicadas según una única regla (gana el valor más alto; NaN pierde frente a cualquier otro valor), lo que corrige los resultados dependientes del orden de `timeSeriesInstantRateToGrid`, `timeSeriesInstantDeltaToGrid`, `timeSeriesLastTwoSamples` y `timeSeriesResampleToGridWithStaleness` cuando algunos valores con una misma marca de tiempo son NaN. La regla ya está documentada y probada. [#115920](https://github.com/ClickHouse/ClickHouse/pull/115920) ([Vitaly Baranov](https://github.com/vitlibar)).

<div id="268-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Corrección de errores (mal funcionamiento visible para el usuario en una versión estable oficial)
</div>

* Corrige la corrupción de nombres de columnas y las excepciones `BAD_ARGUMENTS` con `inject_random_order_for_select_without_order_by`: las consultas `SELECT` de varias columnas ya no fallan y se conservan los nombres de las columnas de salida en `CREATE TABLE AS SELECT`, `CREATE VIEW AS SELECT` y formatos con nombre como `JSONEachRow`, en lugar de sustituirlos por alias internos `__subquery_column_<UUID>`. Cierra [#102812](https://github.com/ClickHouse/ClickHouse/issues/102812). Cierra [#101107](https://github.com/ClickHouse/ClickHouse/issues/101107). [#105896](https://github.com/ClickHouse/ClickHouse/pull/105896) ([Groene AI](https://github.com/groeneai)).
* Corrige `NOT_FOUND_COLUMN_IN_BLOCK` en el lector nativo `Parquet` V3 cuando un `PREWHERE` contiene conjunciones que comparten una expresión intermedia. [#107059](https://github.com/ClickHouse/ClickHouse/pull/107059) ([Groene AI](https://github.com/groeneai)).
* Corrige `NOT_FOUND_COLUMN_IN_BLOCK` en consultas que usan las columnas virtuales `_part_starting_offset` o `_part_offset` en `WHERE` junto con la materialización diferida. [#108287](https://github.com/ClickHouse/ClickHouse/pull/108287) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige `Not found column or subcolumn c.null in block` al ejecutar `WHERE col IS NULL` o `IS NOT NULL` en una columna `Iceberg` con evolución de esquema añadida después de escribir archivos de datos antiguos, con `optimize_functions_to_subcolumns = 1` (el valor predeterminado). [#109515](https://github.com/ClickHouse/ClickHouse/pull/109515) ([Groene AI](https://github.com/groeneai)).
* Corrige falsos errores `ICEBERG_SPECIFICATION_VIOLATION` al leer una tabla `Iceberg` cuyo tipo decimal u otro tipo primitivo parametrizado se serializa con distintos espacios en blanco en los archivos de metadatos, como `decimal(20,0)` en los metadatos de la tabla y `decimal(20, 0)` en el manifiesto. [#109676](https://github.com/ClickHouse/ClickHouse/pull/109676) ([Groene AI](https://github.com/groeneai)).
* Corrige `PREWHERE` diferidos con `optimize_move_to_prewhere = 1` cuando `PREWHERE` se aplica después de `FINAL`: las condiciones de `WHERE` ya no se adelantan a una política de filas diferida, lo que podía alterar los resultados de la consulta. [#109703](https://github.com/ClickHouse/ClickHouse/pull/109703) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige `BAD_GET` al comparar una columna `Array(String)` con un literal de array como `arr = ['x']` cuando la columna tiene un índice de omisión `text`, `tokenbf_v1` o `ngrambf_v1`. Estas comparaciones ahora recurren a un escaneo completo en lugar de provocar un error en la consulta. [#110057](https://github.com/ClickHouse/ClickHouse/pull/110057) ([Groene AI](https://github.com/groeneai)).
* Corrige resultados incorrectos para `has`, `mapContainsKey` y `mapContainsValue` con una búsqueda vacía cuando hay un índice de texto. [#110246](https://github.com/ClickHouse/ClickHouse/pull/110246) ([Robert Schulze](https://github.com/rschu1ze)).
* Corrige `Host is empty in S3 URI` cuando se utiliza una subconsulta escalar como argumento de URL de la función de tabla `s3`, o como argumento de cualquier otra función de tabla, en consultas `CREATE TABLE ... AS SELECT`. [#110254](https://github.com/ClickHouse/ClickHouse/pull/110254) ([Sema Checherinda](https://github.com/CheSema)).
* Corrige las comprobaciones de privilegios de `ON CLUSTER` para `SYSTEM STOP/START CLEANUP` y `SYSTEM STOP/START VIRTUAL PARTS UPDATE`: ya no requieren `SYSTEM PULLING REPLICATION LOG` y ahora usan `SYSTEM CLEANUP` o `SYSTEM VIRTUAL PARTS UPDATE`. [#110289](https://github.com/ClickHouse/ClickHouse/pull/110289) ([Groene AI](https://github.com/groeneai)).
* Corrige que una réplica de almacenamiento de objetos de solo lectura, con `read_only = true`, no detectara nuevas partes mediante `refresh_parts_interval`, y que `table_disk = true` fallara en ese disco con `table_disk is not supported for non-ObjectStorage disks`. [#110460](https://github.com/ClickHouse/ClickHouse/pull/110460) ([Julia Kartseva](https://github.com/jkartseva)).
* Corrige que las escrituras mediante funciones de tabla de lago de datos como `INSERT INTO FUNCTION icebergS3(...)` generaran archivos `Parquet` cuyas columnas de cadenas perdían la anotación de tipo `String`, lo que impedía que lectores externos como Spark pudieran leer los datos escritos. [#110465](https://github.com/ClickHouse/ClickHouse/pull/110465) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige un fallo en la inferencia de esquema con `Map cannot have a key of type LowCardinality(Nullable(String))` al leer archivos `ORC` cuyas claves de mapa están codificadas mediante diccionario, incluidos archivos escritos por Spark y por ClickHouse con `output_format_orc_dictionary_key_size_threshold` habilitado. [#110492](https://github.com/ClickHouse/ClickHouse/pull/110492) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige resultados incorrectos de `IS NULL` / `IS NOT NULL` / `count()` con `optimize_functions_to_subcolumns` en una columna convertida en `Nullable` mediante un `ALTER MODIFY COLUMN T` de solo metadatos a `Nullable(T)`. Para las partes escritas antes de la conversión, la subcolumna `.null` ahora se deriva de la columna principal presente físicamente, en lugar del valor predeterminado del tipo de almacenamiento. [#110584](https://github.com/ClickHouse/ClickHouse/pull/110584) ([Groene AI](https://github.com/groeneai)).
* Corrige resultados de consulta incorrectos de la optimización `optimize_and_compare_chain` cuando las condiciones transitivas combinan tipos con distintas semánticas de comparación, como `Enum` con `String`, `Decimal` con `Float64` o valores `FixedString` de distintos anchos. [#110621](https://github.com/ClickHouse/ClickHouse/pull/110621) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige resultados incorrectos en algunas consultas de lectura en orden cuando el optimizador amplía el prefijo de la clave de ordenación. [#110725](https://github.com/ClickHouse/ClickHouse/pull/110725) ([Groene AI](https://github.com/groeneai)).
* Corrige que las sentencias `CREATE` con una cláusula `COMMENT` generen un error de sintaxis cuando falte el literal de cadena del comentario, en lugar de aceptar silenciosamente una consulta analizada de forma incorrecta. Por ejemplo, `CREATE VIEW v COMMENT AS SELECT 1` ya no crea una vista sin comentario. [#111159](https://github.com/ClickHouse/ClickHouse/pull/111159) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige resultados incorrectos de `SummingMergeTree` y `CoalescingMergeTree` con `FINAL` cuando `optimize_move_to_prewhere_if_final = 1` y la cláusula `WHERE` es una condición booleana implícita sobre una columna de la clave de ordenación, como `WHERE k`. [#111342](https://github.com/ClickHouse/ClickHouse/pull/111342) ([Groene AI](https://github.com/groeneai)).
* Corrige excepciones espurias `Directory '...' was created concurrently with remote path '...'` en operaciones de solo metadatos sobre bases de datos y tablas respaldadas por almacenamiento de objetos, como `DROP DATABASE`. [#111353](https://github.com/ClickHouse/ClickHouse/pull/111353) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Los catálogos REST de lago de datos ahora informan de credenciales obsoletas mediante la excepción adecuada, en lugar de tratarlas silenciosamente como una tabla inexistente o devolver `UNKNOWN_TABLE`. [#111379](https://github.com/ClickHouse/ClickHouse/pull/111379) ([alesapin](https://github.com/alesapin)).
* Corrige que `SQL SECURITY DEFINER` y `SQL SECURITY NONE` no se respetaran en vistas parametrizadas cuando el analizador está deshabilitado (`enable_analyzer = 0`). Anteriormente, consultar una de estas vistas como un usuario sin privilegios sobre la tabla subyacente fallaba con `ACCESS_DENIED`, aunque la misma vista funciona con el analizador habilitado. [#111458](https://github.com/ClickHouse/ClickHouse/pull/111458) ([Groene AI](https://github.com/groeneai)).
* Rechazar una columna `Nullable(Nothing)` o cualquier otro tipo no permitido en tablas al ejecutar `CREATE TABLE` cuando el esquema se infiere a partir del almacenamiento; por ejemplo, en una tabla `remote`, `Remote` o `Distributed` sin columnas sobre una vista que ejecuta `SELECT NULL`. Así se evita persistir metadatos que no se pueden cargar tras el siguiente reinicio del servidor y que bloquean la carga de tablas no relacionadas. [#111487](https://github.com/ClickHouse/ClickHouse/pull/111487) ([Groene AI](https://github.com/groeneai)).
* Corregir `std::bad_variant_access` y la evolución incorrecta del esquema de `Iceberg` para columnas `Array(Map(...))` anidadas cuyo `Struct` interno se modifica. [#111489](https://github.com/ClickHouse/ClickHouse/pull/111489) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corregir el fallo de `ALTER MODIFY COLUMN` al convertir una columna `Nullable` a otro tipo con un `DEFAULT`, por ejemplo, de `Nullable(UInt8)` a `String`, `LowCardinality(String)` o `Array(UInt8)`. [#102156](https://github.com/ClickHouse/ClickHouse/pull/102156) ([DQ](https://github.com/il9ue)).
* Corregir `BAD_ARGUMENTS` (`Dictionary not found`) de `dictGet` después de que se rechace `DETACH DICTIONARY ... PERMANENTLY` con `HAVE_DEPENDENT_OBJECTS`; el diccionario ahora permanece disponible cuando se rechaza la desconexión. [#105259](https://github.com/ClickHouse/ClickHouse/pull/105259) ([Groene AI](https://github.com/groeneai)).
* Los archivos de datos escritos por ClickHouse para tablas `Iceberg` ahora incorporan ID de campo de `Iceberg` en `Avro` y `ORC`; las columnas `String` de `ORC` se escriben como `string` en lugar de como binarios, y los campos complejos opcionales de `ORC` (`Array`, `Map`, `Tuple`) ahora conservan los metadatos correctos de `iceberg.required`. Esto corrige resultados `NULL` silenciosos tras cambiar el nombre de columnas y restablece la compatibilidad con lectores que cumplen la especificación, como Spark e `iceberg-java`. [#109994](https://github.com/ClickHouse/ClickHouse/pull/109994) ([Groene AI](https://github.com/groeneai)). [#111775](https://github.com/ClickHouse/ClickHouse/pull/111775) ([Groene AI](https://github.com/groeneai)).
* Corregir la lectura de archivos en discos `plain_rewritable` después de reescribir una ruta existente con contenido de distinto tamaño: de lo contrario, los metadatos obsoletos en memoria podrían provocar `UNEXPECTED_END_OF_FILE`. [#110304](https://github.com/ClickHouse/ClickHouse/pull/110304) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Corregir la desviación del rastreador de memoria por usuario causada por registros de logs del sistema como `query_log` y `query_views_log`, que de otro modo podrían activar falsamente el límite `max_memory_usage_for_user` para usuarios con cargas de trabajo continuas. [#110708](https://github.com/ClickHouse/ClickHouse/pull/110708) ([Raúl Marín](https://github.com/Algunenano)).
* Corregir una condición de carrera poco frecuente en la que un `ALTER` que solo modifica un comentario o la configuración de una tabla `ReplicatedMergeTree` podía eliminar silenciosamente una columna añadida por un `ALTER ... ADD COLUMN` concurrente, dejando una réplica con metadatos de tabla obsoletos. [#111029](https://github.com/ClickHouse/ClickHouse/pull/111029) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corregir la poda incorrecta de la clave primaria en tablas con un sufijo descendente en la clave de ordenación, como `ORDER BY (g, r DESC)`, que podía descartar filas coincidentes. [#111059](https://github.com/ClickHouse/ClickHouse/pull/111059) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corregir una fuga de memoria del certificado del par en cada handshake TLS cuando la verificación de certificados está habilitada. [#111425](https://github.com/ClickHouse/ClickHouse/pull/111425) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Corregir mutaciones que usan un parámetro de consulta como partición en `ALTER TABLE ... UPDATE/DELETE ... IN PARTITION {param:Type}`: ahora el valor de partición serializado se puede volver a analizar correctamente, por lo que `ALTER` ya no escribe entradas de mutación que impiden cargar la tabla. [#111518](https://github.com/ClickHouse/ClickHouse/pull/111518) ([Michael Kolupaev](https://github.com/al13n321)).
* Corrige un fallo en macOS/aarch64 al capturar una traza de pila en una pila de corrutina o fibra, por ejemplo mediante el generador de perfiles de memoria. [#111656](https://github.com/ClickHouse/ClickHouse/pull/111656) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige un fallo del servidor al leer datos `Protobuf` con `input_format_allow_errors_num > 0` cuando un mensaje válido precede a un mensaje erróneo pero omitible en el mismo bloque. [#107739](https://github.com/ClickHouse/ClickHouse/pull/107739) ([Andrey Tsarevskiy | Андрей Царевский ](https://github.com/atsarevskiy)).
* Corrige `NOT_FOUND_COLUMN_IN_BLOCK` cuando una consulta sobre una tabla `Distributed` usa `_shard_num` o `shardNum`, que pasa a ser `Nullable`, por ejemplo con `FULL JOIN` y `join_use_nulls = 1`, junto con `ORDER BY` y el analyzer. [#109798](https://github.com/ClickHouse/ClickHouse/pull/109798) ([Groene AI](https://github.com/groeneai)).
* Corrige resultados incorrectos y excepciones `UNKNOWN_ELEMENT_OF_ENUM` en `LEFT`/`RIGHT`/`FULL`/`ASOF JOIN` con `join_algorithm = 'full_sorting_merge'`, donde las filas sin unión podían rellenarse con `0` en lugar del valor predeterminado del tipo de columna. [#111197](https://github.com/ClickHouse/ClickHouse/pull/111197) ([Groene AI](https://github.com/groeneai)).
* Corrige una excepción `LOGICAL_ERROR` cuando el cuerpo de la lambda de una función de orden superior es un `if` o `multiIf` con condición constante que combina una rama con un literal `Bool` y otra con una comparación `UInt8`, por ejemplo `arrayFilter(p -> multiIf(false, true, p = 'ALL'), ['ALL'])`. [#111245](https://github.com/ClickHouse/ClickHouse/pull/111245) ([Groene AI](https://github.com/groeneai)).
* Un marcador de posición `{_partition_id}` en la ruta de los motores `S3`, `AzureBlobStorage`, `URL` y otros similares a archivos, sin una `partition_strategy` explícita, vuelve a implicar la estrategia `wildcard`, lo que restaura la compatibilidad con DDL anteriores a la versión 26.6 que habían empezado a fallar con `BAD_ARGUMENTS`. [#111279](https://github.com/ClickHouse/ClickHouse/pull/111279) ([Nikita Fomichev](https://github.com/fm4v)).
* Corrige `NUMBER_OF_COLUMNS_DOESNT_MATCH` en consultas `GROUP BY` sobre una tabla `Merge` que envuelve una tabla `Distributed` cuando la clave de agrupación es una función de una columna y una agregación lee esa misma columna. [#111334](https://github.com/ClickHouse/ClickHouse/pull/111334) ([Groene AI](https://github.com/groeneai)).
* `GRANT role TO role` sobre el mismo rol ahora se rechaza con `BAD_ARGUMENTS` en lugar de crear silenciosamente una entrada autorreferencial en `system.role_grants`. [#103315](https://github.com/ClickHouse/ClickHouse/pull/103315) ([zxuhan7](https://github.com/zxuhan)).
* Corrige las escrituras en tablas `Iceberg` cuando el archivo de metadatos no contiene una sección `refs`. [#106896](https://github.com/ClickHouse/ClickHouse/pull/106896) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* Corrige que `system.session_log` quedara ilegible después de un inicio de sesión mediante Arrow Flight: la columna `interface` es un `Enum8`, pero el valor `ArrowFlight` faltaba en su enumeración, por lo que un inicio de sesión a través del protocolo Arrow Flight escribía el valor sin procesar `10` y cualquier `SELECT` que leyera esa fila generaba la excepción `Unexpected value 10 in enum`. [#110758](https://github.com/ClickHouse/ClickHouse/pull/110758) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un desbordamiento de enteros con signo en `toStartOfInterval` con intervalos inferiores a un segundo: para valores `DateTime64` situados a menos de un intervalo del límite inferior de `Int64`, el resultado redondeado se desbordaba silenciosamente y pasaba a ser un valor positivo inválido; ahora la función genera una excepción `DECIMAL_OVERFLOW`. [#111370](https://github.com/ClickHouse/ClickHouse/pull/111370) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige que `readWKTPoint` y `readWKT` devolvieran coordenadas sin inicializar (escalares) o de la fila anterior (vectorizadas) para puntos vacíos con etiqueta de dimensión, como `POINT M EMPTY`. Estas entradas ahora se rechazan con `CANNOT_PARSE_TEXT`, de forma coherente con `POINT EMPTY`. [#111517](https://github.com/ClickHouse/ClickHouse/pull/111517) ([Groene AI](https://github.com/groeneai)).
* Se corrigen las excepciones `Unexpected number of columns in result sample block` en `RIGHT` y `FULL JOIN` cuando el lado izquierdo contiene una columna duplicada con el mismo nombre, por ejemplo, `1 AS b, 1 AS b`, que se conserva tras un `UNION ALL`. [#111554](https://github.com/ClickHouse/ClickHouse/pull/111554) ([Groene AI](https://github.com/groeneai)).
* Se corrigen las excepciones `CANNOT_CONVERT_TYPE` y `LOGICAL_ERROR` en consultas distribuidas que usan el combinador `-Tuple` con el modificador `RESPECT NULLS` o `IGNORE NULLS` dentro de combinadores anidados, por ejemplo, `anyRespectNullsStateTuple(...) IGNORE NULLS`. [#111570](https://github.com/ClickHouse/ClickHouse/pull/111570) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige el resaltado de sintaxis SQL en Play para iPhone, donde el aumento automático del tamaño del texto de Safari en iOS podía desalinear la capa de resaltado. [#111683](https://github.com/ClickHouse/ClickHouse/pull/111683) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige `UNKNOWN_QUERY_PARAMETER` al llamar a una vista parametrizada con un argumento cuyo valor es una subconsulta y cuyo tipo es `Array`, `Tuple` o `LowCardinality`, por ejemplo, `SELECT * FROM v(param = (SELECT groupArray(x) FROM t))`. [#111790](https://github.com/ClickHouse/ClickHouse/pull/111790) ([Groene AI](https://github.com/groeneai)).
* Se corrige `TYPE_MISMATCH` (`Key type for complex key ... does not match`) cuando un `JOIN` con un diccionario usa una clave de join `Nullable`, `LowCardinality` o `LowCardinality(Nullable)`, mientras que la clave del diccionario no está envuelta. La búsqueda directa en el diccionario ahora normaliza la clave al tipo de clave declarado en el diccionario, como ya hacen `dictGet` y `dictHas`, y una clave `NULL` nunca coincide. [#111857](https://github.com/ClickHouse/ClickHouse/pull/111857) ([Groene AI](https://github.com/groeneai)).
* Con `fsync_part_directory = 1`, el cambio de nombre de un directorio de parte de su nombre temporal a su nombre final ahora se hace duradero mediante un fsync del directorio padre y, en el caso de movimientos entre directorios padre distintos, también del directorio padre de origen. Anteriormente, solo se aplicaba fsync al directorio movido, por lo que una pérdida de energía justo después de confirmar una parte podía hacer que la parte no estuviera presente en disco y se perdieran filas, pese a tener habilitada esta configuración. [#111861](https://github.com/ClickHouse/ClickHouse/pull/111861) ([Groene AI](https://github.com/groeneai)).
* Se corrigen bloqueos en `randChiSquared`, `randStudentT`, `randFisherF` y `randBinomial` con parámetros extremos. Estas consultas no podían interrumpirse mediante `max_execution_time` o `KILL QUERY`. Estos parámetros ahora se rechazan incluso cuando `max_rand_distribution_parameter` o `max_rand_distribution_trials` se establece en `0`, y `max_rand_distribution_trials` ya no puede aumentarse por encima de su valor predeterminado de `10^9` para `randBinomial`. [#111909](https://github.com/ClickHouse/ClickHouse/pull/111909) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigen resultados incorrectos cuando el analizador reescribe cadenas de comparaciones como `x = c1 OR x = c2 OR ...`, `x != c1 AND x != c2 AND ...` o `has(const_array, x)` como `IN` y `NOT IN`. También se corrigen excepciones `Illegal type ... of argument of function in` en expresiones con estructura `Dynamic`, `Array(Dynamic)` o `JSON`. [#111924](https://github.com/ClickHouse/ClickHouse/pull/111924) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron resultados incorrectos y `LOGICAL_ERROR` al seleccionar una columna `Nullable(Tuple(...))` junto con una de las subcolumnas de sus elementos que admiten valores nulos (`Variant`, `Dynamic` o `LowCardinality`) de una tabla `MergeTree`. [#111949](https://github.com/ClickHouse/ClickHouse/pull/111949) ([Groene AI](https://github.com/groeneai)).
* Se rechazan los handshakes del protocolo nativo que usan `USER_INTERSERVER_MARKER` para un clúster desconocido o configurado sin un elemento `<secret>`. Anteriormente, estos handshakes podían entrar en modo interservidor antes de la autenticación y leer información sobre las tablas locales. [#99675](https://github.com/ClickHouse/ClickHouse/pull/99675) ([Dan Anderson](https://github.com/MillaFleurs)).
* Se corrigió `JOIN` con tablas `EmbeddedRocksDB`, `Redis` y `KeeperMap` que podía devolver silenciosamente cero filas al usar `DirectKeyValueJoin` con claves `String` o `Nullable(String)`. [#105253](https://github.com/ClickHouse/ClickHouse/pull/105253) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigieron las vistas materializadas actualizables coordinadas de una base de datos `Replicated` que se bloqueaban tras volver a adjuntarse a un Keeper sin la marca de funcionalidad `MULTI_READ`; ahora la vista se detiene correctamente con el estado `Disabled`, en lugar de registrar indefinidamente `Unexpected exception in refresh scheduling`. [#108890](https://github.com/ClickHouse/ClickHouse/pull/108890) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que el cliente ZooKeeper enviara un prefijo de longitud `int32` desbordado para solicitudes de más de `INT32_MAX` bytes. Las solicitudes demasiado grandes ahora se rechazan del lado del cliente. El límite se puede configurar mediante `max_request_size` en `<zookeeper>`; de lo contrario, se obtiene de Keeper. Cierra [#109165](https://github.com/ClickHouse/ClickHouse/issues/109165). [#109190](https://github.com/ClickHouse/ClickHouse/pull/109190) ([Arsen Muk](https://github.com/arsenmuk)).
* Se corrigió el modo ordenado de `S3Queue`/`AzureQueue` con nodos de procesamiento persistentes: los bloqueos de bucket ahora se renuevan durante el streaming, por lo que la limpieza de TTL controlada por `persistent_processing_node_ttl_seconds` no elimina los bloqueos de un procesador activo. Si aun así se pierde la propiedad del bloqueo, se detecta y notifica, y el streaming se recupera con un nuevo iterador de archivos. [#110292](https://github.com/ClickHouse/ClickHouse/pull/110292) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrigieron datos incorrectos y posibles lecturas fuera de límites al leer columnas `String` con `string_serialization_version = 'with_size_stream'` después de omitir filas iniciales, así como al leer subobjetos de columnas `JSON` almacenadas con `object_shared_data_serialization_version = 'map'`. [#110471](https://github.com/ClickHouse/ClickHouse/pull/110471) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron `CREATE TABLE` y `ALTER TABLE` con el analizador, que aceptaba una expresión `DEFAULT` o `MATERIALIZED` que hacía referencia a una columna virtual como `_table` o `_database`. Estas expresiones ahora se rechazan al definirlas, en lugar de fallar posteriormente durante la inserción con `NOT_FOUND_COLUMN_IN_BLOCK`. [#111776](https://github.com/ClickHouse/ClickHouse/pull/111776) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una condición de carrera en las UDF ejecutables, el motor de tabla `executable` y los diccionarios ejecutables, por la que un `fcntl` aplicado a un descriptor de archivo ya cerrado podía corromper un descriptor no relacionado de una consulta concurrente y hacer que las consultas se bloquearan indefinidamente. [#111779](https://github.com/ClickHouse/ClickHouse/pull/111779) ([Raúl Marín](https://github.com/Algunenano)).
* La creación de estadísticas `minmax` obsoletas ahora emite una advertencia en lugar de lanzar una excepción. [#111785](https://github.com/ClickHouse/ClickHouse/pull/111785) ([Han Fei](https://github.com/hanfei1991)).
* Se corrigió que las tablas `Iceberg` escritas por ClickHouse no pudieran leerse con lectores externos como PyIceberg y Spark. Los esquemas `Avro` de la lista de manifiestos y de los manifiestos ahora incluyen las propiedades `field-id` obligatorias de `Iceberg`. [#111786](https://github.com/ClickHouse/ClickHouse/pull/111786) ([Groene AI](https://github.com/groeneai)).
* Regenera las columnas `block_number` y `block_offset` materializadas en la parte durante las operaciones de adjuntar, desadjuntar, mover o clonar partes, para que dejen de quedar obsoletas tras manipularlas. [#111801](https://github.com/ClickHouse/ClickHouse/pull/111801) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Corrige la optimización `query_plan_split_filter`, que dejaba una columna interna `__split_filter` en una rama de `INTERSECT` o `UNION`, lo que podía provocar la excepción `Block structure mismatch in IntersectOrExceptStep stream: different number of columns`. [#111930](https://github.com/ClickHouse/ClickHouse/pull/111930) ([Groene AI](https://github.com/groeneai)).
* Corrige `AMBIGUOUS_COLUMN_NAME` en consultas que repiten una condición `JOIN ON` en `WHERE` con `join_use_nulls = 1`; ahora estas consultas devuelven resultados en lugar de fallar. [#112007](https://github.com/ClickHouse/ClickHouse/pull/112007) ([Groene AI](https://github.com/groeneai)).
* Corrige la autenticación DLF en el catálogo REST de `Paimon`: las solicitudes posteriores a la primera ya no fallan con HTTP 401, y las comprobaciones de existencia de tablas ahora detectan correctamente HTTP 404. [#112015](https://github.com/ClickHouse/ClickHouse/pull/112015) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Corrige `LOGICAL_ERROR` durante la limpieza simultánea de tablas `Kafka` en Keeper; la creación o eliminación ya no falla si la ruta de Keeper de la tabla desaparece tras expirar la sesión. [#112078](https://github.com/ClickHouse/ClickHouse/pull/112078) ([Groene AI](https://github.com/groeneai)).
* Corrige las fusiones y mutaciones cuando está habilitado el índice min-max a nivel de parte para las columnas `_block_number` y `_block_offset`. [#109281](https://github.com/ClickHouse/ClickHouse/pull/109281) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Corrige los `INSERT` fallidos en tablas `DeltaLakeLocal` o `deltaLake` que dejaban un archivo de datos sin finalizar después de iniciar la escritura. [#109328](https://github.com/ClickHouse/ClickHouse/pull/109328) ([Groene AI](https://github.com/groeneai)).
* Corrige filtraciones de credenciales en `SHOW CREATE`, `system.query_log`, los registros del servidor y la salida de `EXPLAIN` para `s3`/`s3Cluster`, los motores basados en `S3`, `BACKUP ... TO S3` y los argumentos secretos de las funciones `encrypt`, `decrypt` y HMAC creadas mediante expresiones o UDF de SQL. [#109768](https://github.com/ClickHouse/ClickHouse/pull/109768) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige la lectura de archivos `Parquet` grandes desde entradas zip `STORED` sin comprimir mediante `s3` y `file`. [#110495](https://github.com/ClickHouse/ClickHouse/pull/110495) ([Eva Wuuu](https://github.com/Gudauu)).
* Corrige el bloqueo de `EXPLAIN ANALYZE` en consultas con una lectura de streaming `FROM ... STREAM` oculta en una subconsulta, CTE o vista. Estas consultas ahora se rechazan con `NOT_IMPLEMENTED`, al igual que las lecturas de streaming de nivel superior. [#110935](https://github.com/ClickHouse/ClickHouse/pull/110935) ([Groene AI](https://github.com/groeneai)).
* Rechaza vectores cuya magnitud al cuadrado se desborda a infinito al usar un índice `vector_similarity` con cuantización `i8`. Anteriormente, estos vectores producían resultados incorrectos sin aviso. [#111085](https://github.com/ClickHouse/ClickHouse/pull/111085) ([Groene AI](https://github.com/groeneai)).
* Ejecuta fsync en los archivos del índice de texto de una parte fusionada o materializada cuando se configuran `min_rows_to_fsync_after_merge`, `min_compressed_bytes_to_fsync_after_merge` o `fsync_part_directory`. Anteriormente, estos archivos eran los únicos de la parte que quedaban sin sincronizar, por lo que un corte de energía justo después de una fusión podía dejar una parte confirmada pero dañada y provocar pérdida de datos. [#111335](https://github.com/ClickHouse/ClickHouse/pull/111335) ([Groene AI](https://github.com/groeneai)).
* Corrige la validación de rutas con respecto a `user_files`. [#111442](https://github.com/ClickHouse/ClickHouse/pull/111442) ([Alexander Tokmakov](https://github.com/tavplubix)).
* Se corrige un problema por el que `SYSTEM REFRESH` en una tabla `RabbitMQ` detenida a veces no consumía el trabajo pendiente en cola. La operación de actualización ahora espera a que se inicie el bucle de entrega de AMQP antes de consumir su único ciclo de streaming fuera de orden. [#111480](https://github.com/ClickHouse/ClickHouse/pull/111480) ([Groene AI](https://github.com/groeneai)).
* Se restringe el acceso a objetos locales a la ruta `user_files`. [#111483](https://github.com/ClickHouse/ClickHouse/pull/111483) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se corrige un segfault debido a un acceso a memoria fuera de límites al deserializar un estado de función de agregación malformado que contiene un valor `String`. Estos estados ahora se validan y rechazan. [#111606](https://github.com/ClickHouse/ClickHouse/pull/111606) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrige un desbordamiento de enteros al analizar `system.zookeeper_info`. [#111629](https://github.com/ClickHouse/ClickHouse/pull/111629) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrige `NOT_FOUND_COLUMN_IN_BLOCK` cuando una consulta `FINAL` filtra por una columna de la clave de ordenación que no está en la lista `SELECT` y el filtro se mueve a `PREWHERE`; por ejemplo, `SELECT s FROM t FINAL WHERE k GROUP BY s` con `optimize_move_to_prewhere_if_final = 1`. [#111721](https://github.com/ClickHouse/ClickHouse/pull/111721) ([Groene AI](https://github.com/groeneai)).
* Se corrige un problema por el que un `INSERT` particionado en `DeltaLake` con `allow_experimental_delta_lake_writes = 1` corrompía valores de partición que contienen caracteres de ruta y rechazaba valores de partición `NULL`. Los valores de partición ahora se codifican mediante codificación porcentual en un único segmento de ruta, y los valores `NULL` o cadenas vacías se escriben como `__HIVE_DEFAULT_PARTITION__` con una entrada `partitionValues` nula. [#111793](https://github.com/ClickHouse/ClickHouse/pull/111793) ([Groene AI](https://github.com/groeneai)).
* Se corrigen una excepción y la omisión silenciosa de datos al leer una subcolumna dinámica a través de una tabla `Buffer`. [#111948](https://github.com/ClickHouse/ClickHouse/pull/111948) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un problema por el que `clickhouse-client` perdía la base de datos actual después de `USE {db:Identifier}`. Si el cliente debía reconectarse más tarde, cambiaba silenciosamente la sesión a la base de datos `default`. [#111982](https://github.com/ClickHouse/ClickHouse/pull/111982) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una excepción `LOGICAL_ERROR` (`Type mismatch when building statistics for column`) durante mutaciones de `MergeTree` después de que una operación de solo metadatos `ALTER MODIFY COLUMN` cambie el tipo de una columna que contiene estadísticas. Las columnas que la mutación reescribe ahora recalculan sus estadísticas, mientras que las columnas sin modificar conservan las existentes. [#112009](https://github.com/ClickHouse/ClickHouse/pull/112009) ([Groene AI](https://github.com/groeneai)).
* Se corrigen lecturas de tablas `Paimon` que podían fallar mientras la sugerencia mutable `snapshot/LATEST` se reemplazaba simultáneamente. Las sugerencias no válidas u obsoletas ahora se ignoran y, en su lugar, el snapshot se carga desde el catálogo. [#112010](https://github.com/ClickHouse/ClickHouse/pull/112010) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Se corrige la lectura de archivos `GeoParquet`, `Arrow` y `ArrowStream` cuya columna de geometría codificada en WKT utiliza una palabra clave de tipo en minúsculas, como `point(1 2)`, o un contenedor vacío, como `LINESTRING EMPTY` o `POLYGON()`. Esto también corrige la lectura de archivos que almacenan la salida de `wkt` para una geometría vacía. [#112020](https://github.com/ClickHouse/ClickHouse/pull/112020) ([Groene AI](https://github.com/groeneai)).
* Se corrige un problema por el que las sobrescrituras de configuración a nivel de consulta no se aplicaban a la copia nativa de Azure. [#112037](https://github.com/ClickHouse/ClickHouse/pull/112037) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Corrige que `query_masking_rules` reescribiera el tipo de una columna `EPHEMERAL`, lo que podía provocar que `CREATE TABLE` almacenara un tipo incorrecto o fallara. [#112048](https://github.com/ClickHouse/ClickHouse/pull/112048) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los parámetros de las funciones de tabla ya no aceptan estados de agregación, que anteriormente provocaban un error lógico, ya que estos parámetros no son compatibles. Cierra [#112085](https://github.com/ClickHouse/ClickHouse/issues/112085). [#112087](https://github.com/ClickHouse/ClickHouse/pull/112087) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Corrige resultados incorrectos en un `JOIN` cuya expresión `ON` contiene una conjunción constante, por ejemplo, `ON l.id = r.id AND CAST(NULL AS Nullable(UInt8))`. [#112155](https://github.com/ClickHouse/ClickHouse/pull/112155) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige resultados incorrectos en `hasAllTokens` y otras búsquedas de índices de texto con varios tokens en compilaciones que no usan `simdcomp`, como `aarch64`, cuando `text_index_posting_list_apply_mode = 'lazy'`. [#112178](https://github.com/ClickHouse/ClickHouse/pull/112178) ([Groene AI](https://github.com/groeneai)).
* Corrige resultados incorrectos cuando se llama a una vista parametrizada con un argumento que no es una asignación `parameter = value`. Estas llamadas ahora se rechazan con `UNKNOWN_QUERY_PARAMETER` en ambas rutas de ejecución. [#112194](https://github.com/ClickHouse/ClickHouse/pull/112194) ([Groene AI](https://github.com/groeneai)).
* Corrige que las vistas parametrizadas cuyo cuerpo `SELECT` usa `INTERSECT`, `EXCEPT` o una cadena de `UNION` que mezcla `UNION DISTINCT` con `UNION ALL` se clasificaran erróneamente como vistas ordinarias, lo que impedía cargar sus metadatos. [#112211](https://github.com/ClickHouse/ClickHouse/pull/112211) ([Groene AI](https://github.com/groeneai)).
* Corrige la inferencia de esquema para la familia `TSV`, que infería `String` para valores decimales escritos con un cero inicial, como `0.0` o `0.5`, y trataba esa primera fila como un encabezado. También corrige que `TSKV` infiriera un tipo numérico para un valor codificado con escapes como `x=1\x2E5`. Cierra [#112105](https://github.com/ClickHouse/ClickHouse/issues/112105). [#112226](https://github.com/ClickHouse/ClickHouse/pull/112226) ([Groene AI](https://github.com/groeneai)).
* Corrige que `system.s3_queue_settings` informara valores incorrectos para `bucketing_mode`, `partitioning_mode`, `partition_regex` y `partition_component`. [#112300](https://github.com/ClickHouse/ClickHouse/pull/112300) ([Bharat Nallan](https://github.com/bharatnc)).
* Corrige resultados incorrectos, una salida de `ORDER BY` mal ordenada y excepciones `BAD_TYPE_OF_FIELD` cuando la clave primaria es un `Array` o `Tuple` y la consulta le aplica `plus`, `minus`, `multiply`, `divide` o `intDiv`. [#112339](https://github.com/ClickHouse/ClickHouse/pull/112339) ([Groene AI](https://github.com/groeneai)).
* Corrige la ejecución remota de consultas que contienen `PASTE JOIN`, por ejemplo, mediante una tabla `Distributed` o una función de tabla `*Cluster`. ClickHouse ya no formatea la consulta con la sintaxis no válida `ALL PASTE JOIN`. [#112404](https://github.com/ClickHouse/ClickHouse/pull/112404) ([Groene AI](https://github.com/groeneai)).
* Corrige un `LOGICAL_ERROR` (`Invalid number of rows in Chunk`) en `JoiningTransform` para un `LEFT JOIN` con claves únicas en el lado derecho, una condición `ON` mixta y un valor pequeño de `max_joined_block_size_rows`. [#106928](https://github.com/ClickHouse/ClickHouse/pull/106928) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la columna virtual `_tags` del motor de tabla `S3Queue`: estaba declarada, pero nunca se poblaba, por lo que `SELECT _tags` siempre devolvía un mapa vacío. Ahora devuelve las etiquetas del objeto, al igual que el motor `S3` y la función de tabla `s3`. [#108676](https://github.com/ClickHouse/ClickHouse/pull/108676) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la pérdida de datos de una columna sin expresión predeterminada cuando una fusión se ejecutaba simultáneamente con `ALTER TABLE... RENAME COLUMN`, o cuando los únicos valores de la columna procedían de una actualización ligera `UPDATE`. La columna podía eliminarse de la parte fusionada, por lo que todos sus valores se leían como NULL. [#109356](https://github.com/ClickHouse/ClickHouse/pull/109356) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la eliminación de índices de omisión de una parte de datos (o el fallo de `CHECK TABLE` con `UNEXPECTED_FILE_IN_DATA_PART`) después de una mutación que reescribía una parte completa, como `ALTER TABLE... DROP COLUMN` de una columna `MATERIALIZED`, en una parte `Wide`. [#109616](https://github.com/ClickHouse/ClickHouse/pull/109616) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron dos errores en la ruta de `DateTime64` de `toUTCTimestamp`/`fromUTCTimestamp` (y sus alias `to_utc_timestamp`/`from_utc_timestamp`) y de `toTime64`. El primero era un desbordamiento de enteros con signo cerca del límite de `Int64` (ahora se calcula en `Int128` y se limita al rango representable). El segundo producía un resultado incorrecto para valores fraccionarios negativos cerca de un límite de desplazamiento de zona horaria: la división de los segundos se truncaba hacia cero, por lo que `timezoneOffset()` inspeccionaba el segundo siguiente y podía elegir el lado incorrecto de un cambio de horario de verano/desplazamiento. [#109738](https://github.com/ClickHouse/ClickHouse/pull/109738) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error lógico ("Cannot determine row level filter; 0 columns deleted, 0 columns added") al leer de una tabla `Merge` cuya tabla secundaria tiene una política de filas cuyo filtro es una columna existente sin modificadores (por ejemplo, `CREATE ROW POLICY... USING flag`). [#109843](https://github.com/ClickHouse/ClickHouse/pull/109843) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron dos errores que se producían cuando una consulta con `GROUP BY GROUPING SETS` (o una subconsulta escalar o de mutación que contiene uno) se ejecutaba con `force_aggregation_in_order = 1`: `Trying to get name of not a column: ExpressionList` con el analizador antiguo (`enable_analyzer = 0`), y `Memory bound merging of aggregated results is not supported for grouping sets.` en una consulta distribuida con `enable_memory_bound_merging_of_aggregation_results = 1` bajo el analizador. [#109862](https://github.com/ClickHouse/ClickHouse/pull/109862) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el análisis de los valores numéricos `1`/`0` como valores `Bool` dentro de tipos contenedor (por ejemplo, `Array(Bool)`, `Tuple(Bool,...)`). Anteriormente, `[1,0]` fallaba con `CANNOT_READ_ARRAY_FROM_TEXT`, mientras que `[true,false]` funcionaba. [#109976](https://github.com/ClickHouse/ClickHouse/pull/109976) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error espurio `ILLEGAL_COLUMN` de `ALTER TABLE... ADD COLUMN IF NOT EXISTS` cuando la columna ya existía en el momento de aplicar la operación. Esto ocurría cuando la misma columna se añadía dos veces con `IF NOT EXISTS` en una instrucción, o cuando un `ALTER` simultáneo añadía la columna entre las fases de preparación y aplicación. [#110080](https://github.com/ClickHouse/ClickHouse/pull/110080) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un resultado incorrecto por el que `length` (y la dimensión QBit) de una columna `FixedString` devolvía `0` en lugar del tamaño fijo `N` con réplicas paralelas cuando la consulta tenía un filtro selectivo. [#110427](https://github.com/ClickHouse/ClickHouse/pull/110427) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la pérdida del tipo `Geometry` en `flipCoordinates`: para un argumento `Geometry`, el resultado vuelve a tener el tipo `Geometry` en lugar del `Variant(...)` subyacente, por lo que puede pasarse directamente a funciones como `areaCartesian`. [#110694](https://github.com/ClickHouse/ClickHouse/pull/110694) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `optimize_injective_functions_in_group_by` modificara los resultados de las consultas con `GROUP BY GROUPING SETS` y `GROUP BY... WITH TOTALS`. La configuración está documentada como preservadora de resultados, pero eliminar una función inyectiva de una clave de agrupación producía un valor incorrecto (o eliminaba una fila) en las filas donde esa clave no está presente en el conjunto agregado (un conjunto que no pertenece a `GROUPING SETS`) o en la fila `WITH TOTALS`. El valor incorrecto podía coincidir con un valor de clave real, lo que hacía indistinguible una fila de superagregación de un grupo real en el mismo conjunto de resultados. [#110721](https://github.com/ClickHouse/ClickHouse/pull/110721) ([Groene AI](https://github.com/groeneai)).
* Los valores numéricos `1`/`0` al analizar JSON como `Bool` ahora respetan la configuración `allow_special_bool_values`. Anteriormente, una entrada JSON como `{"v":1}` para `Variant(Bool, UInt32)` se interpretaba como `Bool` incluso con `allow_special_bool_values_inside_variant = 0`, porque los analizadores JSON de `Bool` ignoraban la configuración y `Bool` tiene mayor prioridad de deserialización en `Variant` que los tipos enteros. [#110835](https://github.com/ClickHouse/ClickHouse/pull/110835) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error lógico `block.rows() == getRows()` (una lectura fuera de límites y una deduplicación de inserciones defectuosa en compilaciones de lanzamiento) cuando un `INSERT` pasa por una vista materializada dependiente cuyo destino es un `Alias`, cuya consulta interna cambia el número de filas y a la que se puede acceder a una tabla con deduplicación a través del alias. [#111103](https://github.com/ClickHouse/ClickHouse/pull/111103) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error lógico `Block structure mismatch` (en compilaciones de depuración y con sanitizadores) y un error `Illegal types of arguments` en operaciones de conjuntos sobre columnas compatibles con estados de agregación (p. ej., `quantileState` y `quantilesState(0.9)`) anidadas en columnas contenedoras como `Tuple`, `Array`, `Map`, `Nullable` o `Variant`. [#111191](https://github.com/ClickHouse/ClickHouse/pull/111191) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que `DISTINCT` con `LIMIT`/`OFFSET` ordenados devolviera filas incorrectas cuando la sugerencia de límite para la detención temprana de DISTINCT no podía acotar el inicio del resultado: un `LIMIT` negativo (devolvía el inicio en lugar del final), un `LIMIT`/`OFFSET` fraccionario (la fracción solo se resuelve tras una lectura completa) y un `OFFSET` sin `LIMIT` (se descartaba el final posterior al desplazamiento). Por ejemplo, `SELECT DISTINCT intDiv(x, 100) FROM t ORDER BY intDiv(x, 100) LIMIT -1` sobre una tabla con varias partes devolvía el valor distinto más pequeño en lugar del más grande. [#111326](https://github.com/ClickHouse/ClickHouse/pull/111326) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron resultados incorrectos cuando una consulta tiene un índice de omisión `set` y un predicado de la forma `(x AND <null-value>) OR y`, donde el NULL es generado por una función (p. ej., `toInt64OrNull('x')`, `nullIf(1, 1)`, `CAST(NULL AS Nullable(Int64))`). Ese valor se envolvía con `__bitWrapperFunc` y propagaba `NULL` en lugar de la máscara de "desconocido", por lo que el índice `set` podía descartar gránulos que sí coincidían y la consulta devolvía menos filas de las debidas. [#111604](https://github.com/ClickHouse/ClickHouse/pull/111604) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `DELETE`/`UPDATE` en una tabla Iceberg eliminara silenciosamente filas incorrectas (o generara `NOT_FOUND_COLUMN_IN_BLOCK`) cuando la tabla contiene archivos de datos escritos antes y después de `ALTER TABLE... ADD COLUMN` y `optimize_move_to_prewhere` está habilitado. [#111693](https://github.com/ClickHouse/ClickHouse/pull/111693) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` ("Invalid number of rows in Chunk") —y, en compilaciones reforzadas, un aborto relacionado por acceso fuera de límites— para `ORDER BY ... WITH FILL ... INTERPOLATE` sobre una tabla `Distributed` con dos o más segmentos, con `clusterAllReplicas` o con réplicas paralelas de clave personalizada, incluso para resultados vacíos. Ahora `WITH FILL` se aplica solo en el nodo que produce el resultado final, lo que también corrige la duplicación de las filas de relleno generadas entre segmentos/réplicas. [#111919](https://github.com/ClickHouse/ClickHouse/pull/111919) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Se corrigió `randBinomial` para que siga siendo utilizable con las probabilidades degeneradas `0` y `1` para cualquier número de pruebas. [#112021](https://github.com/ClickHouse/ClickHouse/pull/112021) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige resultados incorrectos causados por una consulta de búsqueda vectorial que contaminaba la caché de condiciones de consulta. Una consulta `SELECT... WHERE <condition> ORDER BY <distance function> LIMIT n` sobre una tabla con un índice `vector_similarity` podía registrar gránulos como no coincidentes con `<condition>`, por lo que una consulta ordinaria posterior `SELECT... WHERE <condition>` sobre la misma tabla devolvía silenciosamente menos filas. Las lecturas de búsqueda vectorial ya no escriben en la caché de condiciones de consulta. [#112086](https://github.com/ClickHouse/ClickHouse/pull/112086) ([Groene AI](https://github.com/groeneai)).
* Corrige un error por el que se acepta un `CREATE VIEW` o `CREATE FUNCTION` cuya definición llama a `substr`, `mid` o `byteSlice` de una forma que la gramática de `substring` no puede volver a analizar, pero los metadatos que ClickHouse escribe para ello no son SQL válido. Leer posteriormente esa definición falla con `SYNTAX_ERROR` y, al iniciar el servidor, aborta la carga de metadatos, por lo que el servidor no puede iniciarse en absoluto. Estas definiciones ahora se pueden escribir y leer correctamente, y los archivos de metadatos existentes de la forma `substring(x, a, b, c)` vuelven a poder leerse, por lo que un servidor afectado se inicia sin intervención manual. [#112195](https://github.com/ClickHouse/ClickHouse/pull/112195) ([Groene AI](https://github.com/groeneai)).
* Corrige una tabla `TimeSeries` cuyos metadatos locales divergían de Keeper, lo que hacía que la recuperación de réplicas en una base de datos `Replicated` se bloqueara indefinidamente, de modo que la réplica nunca volvía a estar disponible para la base de datos y permanecía dañada tras los reinicios. Las tablas internas de dicha tabla ahora se eliminan mientras la transacción de metadatos de recuperación sigue disponible, en lugar de aplazarse a una tarea en segundo plano que no podía ejecutar el `DROP` en absoluto. [#112218](https://github.com/ClickHouse/ClickHouse/pull/112218) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la lectura de una subcolumna de una columna `Nullable(Tuple(...))` cuyo elemento es un `LowCardinality(T)` no anulable cuando la misma consulta también lee la subcolumna padre. En una parte compacta, la subcolumna padre devolvía valores incorrectos, o la consulta fallaba con `Unexpected return type from assumeNotNull`, o el servidor era terminado por una aserción de protección de `string_view`, porque la subcolumna extraída se deserializaba en un búfer `LowCardinality(Nullable(T))` cuyos subflujos se compartían después con la lectura de la subcolumna padre. [#112232](https://github.com/ClickHouse/ClickHouse/pull/112232) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un bloqueo permanente del servidor en macOS causado por la pérdida de despertares de `pthread_rwlock` cuando el perfilador de consultas por muestreo está habilitado (error de Apple FB24027930): `pthread_rwlock` ahora se reemplaza por una implementación robusta ante señales en Darwin. [#112267](https://github.com/ClickHouse/ClickHouse/pull/112267) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige que se ignoraran `max_execution_time` y `KILL QUERY` mientras una consulta evalúa `geohashesInBox`, `arrayFold`, `sleep`, `base58Decode`, `h3PolygonToCells` o `h3PolygonToCellsWithContainment`. Tales consultas podían seguir ejecutándose durante minutos después de la cancelación. Esto ahora también cubre evaluaciones dentro de expresiones almacenadas en los metadatos de la tabla, como claves de ordenación, índices de omisión y claves `PARTITION BY`. [#112273](https://github.com/ClickHouse/ClickHouse/pull/112273) ([Groene AI](https://github.com/groeneai)). [#113456](https://github.com/ClickHouse/ClickHouse/pull/113456) ([Groene AI](https://github.com/groeneai)).
* Corrige un error lógico `Cannot add step Expression to QueryPlan because it has incompatible header with root step JoinLazyColumnsStep` en una consulta con `FINAL`, un filtro `PREWHERE`, un `LIMIT` reducido y `make_distributed_plan = 1`, cuando las columnas seleccionadas se enumeran en un orden distinto al de las columnas de la tabla. La materialización diferida reemplazaba un nodo del plan sin conservar su cabecera de salida, lo que hacía que el plan de consulta fuera incoherente. [#112303](https://github.com/ClickHouse/ClickHouse/pull/112303) ([Groene AI](https://github.com/groeneai)).
* Corrige la escritura de tablas Iceberg cuyo esquema contiene una tupla anidada dentro de otra tupla. Los metadatos publicados de la tabla reemplazaban los nombres de los campos de la tupla interna por nombres posicionales `1`, `2`,..., por lo que, con el formato `Parquet` predeterminado, el `INSERT` fallaba con `INCORRECT_DATA` y, con `Avro`, no se podía volver a leer la columna. [#112480](https://github.com/ClickHouse/ClickHouse/pull/112480) ([Groene AI](https://github.com/groeneai)).
* Corrige el error `ATTEMPT_TO_READ_AFTER_EOF` al fusionar partes con un índice de texto si una de las partes fusionadas estaba vacía, por ejemplo, después de una mutación que eliminó todas las filas de la parte. [#112490](https://github.com/ClickHouse/ClickHouse/pull/112490) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige resultados incorrectos y un error lógico cuando un argumento que debe ser constante, como la escala de `toDecimal32` o la zona horaria de `toDateTime`, procede de una subconsulta escalar y se utiliza el analizador antiguo. Dicho argumento se analizaba como si su valor fuera cero o estuviera vacío, por lo que el tipo de resultado declarado no coincidía con el valor calculado, y `CREATE VIEW` y `CREATE MATERIALIZED VIEW` persistían un tipo de columna incorrecto. [#112492](https://github.com/ClickHouse/ClickHouse/pull/112492) ([Groene AI](https://github.com/groeneai)).
* Corrige un `LOGICAL_ERROR` ("Part... contains column... that is absent in table...") cuando una réplica `ReplicatedMergeTree` muta una parte obtenida de otra réplica antes de aplicar su propio `ALTER... ADD COLUMN` pendiente. Ahora, dicha mutación se pospone hasta que se aplique el cambio de metadatos. [#112510](https://github.com/ClickHouse/ClickHouse/pull/112510) ([Groene AI](https://github.com/groeneai)).
* Corrige resultados de consulta incorrectos al usar GROUP BY con ORDER BY y `arrayJoin` en la proyección. [#101775](https://github.com/ClickHouse/ClickHouse/pull/101775) ([Yash ](https://github.com/Onyx2406)).
* Corrige un bloqueo del servidor (acceso fuera de límites) en `S3Queue`/`AzureQueue` con `enable_hash_ring_filtering = 1` cuando un lote contenía un archivo que no se podía procesar y, al mismo tiempo, fallaba la solicitud a Keeper para marcar el lote como en procesamiento. [#108977](https://github.com/ClickHouse/ClickHouse/pull/108977) ([Groene AI](https://github.com/groeneai)).
* Corrige un error lógico `Stream <col>.variant_discr... is not found` (aborto del servidor en compilaciones de depuración y con sanitizadores) cuando `ALTER TABLE... MODIFY COLUMN` cambia una columna a un tipo con subcolumnas dinámicas (por ejemplo, de `Variant` a `Dynamic`) en una tabla con partes anchas, y posteriormente se lee o fusiona la parte. [#110204](https://github.com/ClickHouse/ClickHouse/pull/110204) ([Groene AI](https://github.com/groeneai)).
* Corrige un desbordamiento de entero con signo (UBSan) al convertir un valor extremo de `DateTime64` (p. ej., `INT64_MIN`) a `Time`/`Time64` en una zona horaria con desplazamiento negativo. [#110451](https://github.com/ClickHouse/ClickHouse/pull/110451) ([Groene AI](https://github.com/groeneai)).
* Corrige un problema por el que una tabla MergeTree con una proyección `_part_offset` o de orden de commit quedaba permanentemente sin posibilidad de adjuntarse después de deshabilitar `allow_part_offset_column_in_projections` o `allow_commit_order_projection` y separar la tabla o reiniciar el servidor. Estas dos configuraciones son controles en el momento de CREATE, por lo que ya no se vuelven a comprobar en ATTACH. [#110570](https://github.com/ClickHouse/ClickHouse/pull/110570) ([Groene AI](https://github.com/groeneai)).
* Con `analyzer_compatibility_join_using_top_level_identifier = 1`, ahora un identificador en `JOIN... USING` puede resolverse a partir de un alias definido en una subexpresión dentro de la lista SELECT (por ejemplo, `SELECT uniqExact(lower(x) AS id) FROM t1 JOIN t2 USING (id)`), de acuerdo con el comportamiento del analizador anterior. Antes solo se consideraban los alias de proyección de nivel superior, y dichas consultas fallaban con una excepción `UNKNOWN_IDENTIFIER` incluso con la configuración habilitada. La sugerencia de error que recomienda habilitar esta configuración ahora también se muestra cuando el alias coincidente está anidado. [#110739](https://github.com/ClickHouse/ClickHouse/pull/110739) ([Dmitry Novik](https://github.com/novikd)).
* Corrige un problema por el que las solicitudes no autenticadas podían hacer que ClickHouse resolviera nombres de host incluidos en encabezados de direcciones de cliente reenviadas. Ahora ClickHouse solo acepta direcciones IP numéricas de estos encabezados. Los valores no válidos se ignoran para la atribución de cuotas basada en direcciones reenviadas, sin realizar resolución DNS. Cuando `auth_use_forwarded_address` está habilitado, las direcciones reenviadas no válidas se rechazan durante la autenticación. Los rechazos se registran en el nivel de depuración. [#111060](https://github.com/ClickHouse/ClickHouse/pull/111060) ([Dmitriy Borisenko](https://github.com/otselnik)).
* Corrige `NOT_FOUND_COLUMN_IN_BLOCK` cuando una política de filas y `additional_table_filters` hacen referencia a la misma columna, que no se selecciona de otro modo en la consulta. [#111099](https://github.com/ClickHouse/ClickHouse/pull/111099) ([Groene AI](https://github.com/groeneai)).
* Corrige el error `UNKNOWN_IDENTIFIER` para columnas calificadas por el nombre de una CTE (`cte_name.column`) en consultas almacenadas en vistas cuando el analizador está habilitado. [#111386](https://github.com/ClickHouse/ClickHouse/pull/111386) ([Dmitry Novik](https://github.com/novikd)).
* Corrige un `LOGICAL_ERROR` (`Got read request from replica N for unknown stream...`) que podía detener el servidor al leer con réplicas paralelas cuando la consulta se respondía por completo mediante una optimización de proyección (recuento exacto, recuento minmax o una proyección agregada/normal almacenada que no selecciona rangos) en el iniciador. [#111689](https://github.com/ClickHouse/ClickHouse/pull/111689) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un desbordamiento de enteros con signo en la sobrecarga de tres argumentos de `toStartOfInterval`: para un argumento `origin` cercano al límite inferior de `Int64`, la función devolvía un valor con desbordamiento en lugar de informar de un error. [#112045](https://github.com/ClickHouse/ClickHouse/pull/112045) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una excepción `LOGICAL_ERROR` (`Block structure mismatch in joined block stream`) en una unión de varias tablas cuyas dos subuniones no producen columnas de salida, por ejemplo `SELECT count() FROM t1, t2, t3, t4 WHERE (t1.b = t2.b) AND (t3.a = t4.a)` con `query_plan_optimize_join_order_limit` establecido en `0` o `1`. [#112205](https://github.com/ClickHouse/ClickHouse/pull/112205) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un problema por el que la función de tabla `values` representaba una constante `Bool` no literal (p. ej., `CAST(true, 'Nullable(Bool)')`) insertada en una columna `String` o textual como `1` o `0` en lugar de `true` o `false`. [#112308](https://github.com/ClickHouse/ClickHouse/pull/112308) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Corrige un `LOGICAL_ERROR` (`partitions_count > 0`) al particionar fragmentos de datos de `Iceberg` vaciados mediante eliminaciones por posición, p. ej., durante la compactación de una tabla `Iceberg` particionada con archivos de datos completamente eliminados. [#112432](https://github.com/ClickHouse/ClickHouse/pull/112432) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Se corrigió la inferencia de esquema que proponía un tipo numérico para valores de texto que el analizador de valores no puede volver a leer. La inferencia aceptaba un exponente incompleto (`1e+`), una mantisa ausente (`.`) o un signo repetido (`++inf`), que `readFloatTextPrecise` rechazaba posteriormente con `CANNOT_PARSE_NUMBER` al leer el esquema inferido; en una columna `Dynamic`, esto provocaba un error al ejecutar INSERT. Ahora, la inferencia valida el número con el analizador que utiliza realmente el lector. Esto también elimina un caso en el que el tipo inferido dependía de `max_read_buffer_size` y permite que las formas de exponente válidas con cero inicial, como `0e5`, infieran `Float64` en TSV, como ya ocurre en CSV. Sigue [#112226](https://github.com/ClickHouse/ClickHouse/issues/112226) y resuelve la parte relativa al exponente de [#112105](https://github.com/ClickHouse/ClickHouse/issues/112105). [#112453](https://github.com/ClickHouse/ClickHouse/pull/112453) ([Groene AI](https://github.com/groeneai)).
* Informa de la posición correcta de los errores en las consultas PromQL. [#112494](https://github.com/ClickHouse/ClickHouse/pull/112494) ([Minh Vu](https://github.com/fallintoplace)).
* Corrige un `LOGICAL_ERROR` (`Cannot add transform Resize to Pipes because it has no outputs`) cuando una consulta que realiza agregaciones en un clúster se ejecuta con `serialize_query_plan = 1` y réplicas paralelas basadas en el plan, debido a que el paso de combinación redimensionaba el pipeline a cero flujos. [#112506](https://github.com/ClickHouse/ClickHouse/pull/112506) ([Groene AI](https://github.com/groeneai)).
* Corrige un desbordamiento por defecto sin signo en la comprobación de la longitud del nombre de tabla que permitía crear una tabla que nunca se podía eliminar. Cuando el nombre de la base de datos escapado alcanzaba 214 bytes, el límite calculado para el nombre de archivo `metadata_dropped` se desbordaba, por lo que se aceptaba `CREATE TABLE` y el posterior `DROP TABLE` o `DROP DATABASE` fallaba con `File name too long`. Ahora ese nombre se rechaza con `ARGUMENT_OUT_OF_BOUND`, el mismo error que ya se devolvía justo por debajo de ese límite. [#112527](https://github.com/ClickHouse/ClickHouse/pull/112527) ([Groene AI](https://github.com/groeneai)).
* Corrige la excepción `Context has expired` cuando se utiliza `getClientHTTPHeader` dentro de una subconsulta. [#112533](https://github.com/ClickHouse/ClickHouse/pull/112533) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que `s3_allow_server_credentials_in_user_queries` rechazara incorrectamente unas `extra_credentials(role_arn = '...')` proporcionadas en la consulta. Ahora, la asunción de un rol de STS con un rol explícito siempre está permitida: no expone las propias credenciales del servidor a la consulta y es la forma documentada de conceder acceso a un bucket de S3 privado. [#112603](https://github.com/ClickHouse/ClickHouse/pull/112603) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige que los contadores de lectura (`read_rows`, `read_bytes`, `ProfileEvents['SelectedRows']`, `ProfileEvents['SelectedBytes']`) y las cuotas `READ_ROWS` y `READ_BYTES` se contabilizaran en exceso para las consultas cuyo `ORDER BY` se vuelca a disco. Las filas releídas de los archivos temporales de ordenación externa se contaban de nuevo como lecturas de origen, por lo que una consulta con spilling sobreestimaba lo que había leído y podía rechazarse con `QUOTA_EXCEEDED` aunque se mantuviera dentro de su cuota. [#112645](https://github.com/ClickHouse/ClickHouse/pull/112645) ([Groene AI](https://github.com/groeneai)).
* Corrige una tabla Iceberg cuyo formato de escritura es `Avro`, que serializaba como obligatorio un campo declarado `"required": false` cuyo tipo es `list`, `map` o `struct`, sin una unión `["null", T]`, de modo que el propio esquema del archivo de datos no coincidía con los metadatos de la tabla y otros lectores de Iceberg veían un campo obligatorio. Ahora, ese campo se escribe como la unión `["null", T]` que la especificación de Iceberg utiliza para un campo opcional. [#112648](https://github.com/ClickHouse/ClickHouse/pull/112648) ([Groene AI](https://github.com/groeneai)).
* Corrige que las tablas `DeltaLake` devuelvan muy pocas filas cuando el predicado `WHERE` contiene una subexpresión bajo un `NOT` que el traductor de predicados de delta-kernel no puede procesar. Ahora, dicha subexpresión se comunica a delta-kernel explícitamente como un predicado desconocido, en lugar de como el final del iterador hijo, lo que antes truncaba silenciosamente la conjunción circundante. [#112652](https://github.com/ClickHouse/ClickHouse/pull/112652) ([Groene AI](https://github.com/groeneai)).
* Corrige una corrupción del heap que podía provocar el cierre inesperado del servidor durante el apagado, causada por el método `const` `AccessRights::getFilters`, que modificaba un árbol de derechos de acceso compartido por consultas concurrentes. [#112692](https://github.com/ClickHouse/ClickHouse/pull/112692) ([Groene AI](https://github.com/groeneai)).
* Corrige un error lógico en el formateo de consultas cuando una cláusula `ARRAY JOIN` no contiene expresiones. Ahora, dicha cláusula se rechaza durante el análisis con `SYNTAX_ERROR`, de forma coherente con un `USING` vacío, en lugar de aceptarse y formatearse como texto que no puede volver a analizarse. [#112699](https://github.com/ClickHouse/ClickHouse/pull/112699) ([Groene AI](https://github.com/groeneai)).
* Corrige un bloqueo de consultas durante la ejecución local de planes de consultas distribuidas (`distributed_plan_execute_locally = 1`): el lector de intercambio en memoria podía bloquear el único hilo de la canalización antes de que se iniciaran las fuentes que producían sus datos. [#111762](https://github.com/ClickHouse/ClickHouse/pull/111762) ([Alexander Gololobov](https://github.com/davenger)).
* Corrige que los campos de `Iceberg` declarados con `"required": false` y de tipo `list`, `map` o `struct` se escribieran como `REQUIRED` en el pie de página de `Parquet`. Ahora, estos campos se escriben como `OPTIONAL`, en consonancia con el esquema publicado de `Iceberg` y con otros lectores. [#112669](https://github.com/ClickHouse/ClickHouse/pull/112669) ([Groene AI](https://github.com/groeneai)).
* Corrige un uso del heap después de su liberación en el ejecutor de la canalización que podía provocar el cierre inesperado del servidor cuando una consulta elimina procesadores en tiempo de ejecución (por ejemplo, `FINAL` con lecturas diferidas u ordenación externa), detectado por el AST fuzzer. [#111017](https://github.com/ClickHouse/ClickHouse/pull/111017) ([Groene AI](https://github.com/groeneai)).
* Corrige un uso después de liberación (fallo de segmentación) cuando una consulta con una instantánea de almacenamiento compartido (configuración `enable_shared_storage_snapshot_in_query`) elimina partes de datos de la instantánea; por ejemplo, una subconsulta de streaming que lee la misma tabla `MergeTree` que otra parte de la consulta lee simultáneamente. [#111192](https://github.com/ClickHouse/ClickHouse/pull/111192) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Rechaza usos no admitidos de columnas `AggregateFunction` en expresiones TTL al ejecutar `CREATE TABLE` (por ejemplo, `TTL toDateTime(state)`) en lugar de fallar más adelante durante la ejecución de TTL con `ILLEGAL_TYPE_OF_ARGUMENT`. Esto también incluye estados presentes en alternativas `Variant` y valores `Dynamic`. Los consumidores válidos que admiten estados, como `finalizeAggregation`, se siguen aceptando. [#107366](https://github.com/ClickHouse/ClickHouse/pull/107366) ([Ria Khatoniar](https://github.com/Ria-K912)).
* Corrige un `LOGICAL_ERROR` (`CTE '...' does not have query tree, but was not planned yet`) cuando se hace referencia a un CTE `MATERIALIZED` desde más de una posición del árbol de joins (por ejemplo, dos subconsultas unidas, o una subconsulta unida y una subconsulta escalar en `WHERE`) en una consulta sobre una tabla `Distributed`. Ahora la consulta se ejecuta en lugar de generar la excepción (que abortaba el servidor en compilaciones de depuración o con sanitizers). [#108924](https://github.com/ClickHouse/ClickHouse/pull/108924) ([Groene AI](https://github.com/groeneai)).
* Conserva el orden original de las claves en la serialización segmentada de Map para corregir operaciones de comparación que dependen de él. [#109178](https://github.com/ClickHouse/ClickHouse/pull/109178) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió un problema por el que `made_current_at` en `system.iceberg_history` pasaba a ser `1970-01-01` para una instantánea retenida tras ejecutar `ALTER TABLE... EXECUTE expire_snapshots` en una tabla Iceberg. También se corrigió el caso en que `system.iceberg_history` no devolvía filas para una tabla cuyos metadatos no contienen `snapshot-log`. [#111781](https://github.com/ClickHouse/ClickHouse/pull/111781) ([Groene AI](https://github.com/groeneai)).
* Corrige un análisis de prueba de texto `FixedString` que deja bytes añadidos parcialmente en la columna cuando falla el análisis, lo que puede provocar un error lógico `Sizes of nested column and null map of Nullable column are not equal` durante la serialización de columnas `Variant`/`Array`/`Nullable`, o desplazar silenciosamente los bytes del resultado. [#111908](https://github.com/ClickHouse/ClickHouse/pull/111908) ([Groene AI](https://github.com/groeneai)).
* Corrige que `replaceOne`, `replaceAll`, `replaceRegexpOne` y `replaceRegexpAll` ignoraran `max_execution_time` y `KILL QUERY`. Ahora, cada llamada comprueba si se ha solicitado una cancelación mientras se ejecuta, de modo que un reemplazo de larga duración sobre un valor grande o un gran número de filas se detiene en lugar de ocupar un hilo del servidor hasta finalizar. Estas llamadas no pueden devolver resultados parciales, por lo que, con `timeout_overflow_mode = 'break'`, notifican que se ha superado el plazo como un error: siempre durante el plegado de constantes y, en la canalización, cuando se alcanza este punto de comprobación antes de la comprobación entre bloques del ejecutor, que sigue deteniendo la consulta silenciosamente. [#112483](https://github.com/ClickHouse/ClickHouse/pull/112483) ([Groene AI](https://github.com/groeneai)).
* Corrige un error lógico y un registro de dependencia incorrecto cuando el cuerpo de una `VIEW` normal hace referencia a una tabla o un diccionario mediante un parámetro de consulta, como en `CREATE VIEW v AS SELECT x FROM {db:Identifier}.t`. Esta vista ya no registra una dependencia referencial de una tabla con el mismo nombre en la base de datos actual, por lo que las tablas no relacionadas pueden volver a eliminarse. [#112704](https://github.com/ClickHouse/ClickHouse/pull/112704) ([Groene AI](https://github.com/groeneai)).
* Corrige una lectura con un tipo incorrecto de una subcolumna de elemento `Nested` cuya columna se eliminó y se volvió a añadir. Al seleccionar esa subcolumna junto con su columna principal, se devolvía el elemento completo en la posición de la subcolumna, aunque el bloque seguía declarando el tipo del elemento, lo que producía valores arbitrarios en compilaciones de lanzamiento y un error lógico en compilaciones de depuración y con sanitizador. [#112769](https://github.com/ClickHouse/ClickHouse/pull/112769) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `Cannot read all data of type FixedString` al leer la subcolumna `product_quantization_codebook` de una columna con un códec `Quantized('product',...)`. El libro de códigos de cada parte se escribe después de los datos de todos los gránulos, por lo que no está delimitado por marcas, y una lectura cuyo rango de marcas terminaba antes de la marca final de la parte podía leerlo de forma incompleta. [#112818](https://github.com/ClickHouse/ClickHouse/pull/112818) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un fallo de segmentación y la corrupción silenciosa de datos cuando un `INSERT` en el motor `File` o la función de tabla `file` añade datos a un archivo no vacío en un formato que no admite la adición de datos, como `Avro`. Escribir mediante un descriptor de archivo o una ruta particionada omitía la comprobación existente, por lo que se suprimía el prefijo de formato y se escribía un segundo encabezado después de los bytes existentes, dejando el archivo ilegible. Ahora, ese `INSERT` se rechaza con `CANNOT_APPEND_TO_FILE`, como ya ocurre con una ruta simple. [#112839](https://github.com/ClickHouse/ClickHouse/pull/112839) ([Groene AI](https://github.com/groeneai)).
* Corrige que `connectionId` generara `Context has expired` cuando se utiliza dentro de una subconsulta, capturando el ID de conexión del cliente al crear la función. Cierra [#112533](https://github.com/ClickHouse/ClickHouse/issues/112533). [#112870](https://github.com/ClickHouse/ClickHouse/pull/112870) ([ClickGap AI Bot](https://github.com/clickgapai)).
* Se corrigió el análisis de enteros que no caben en el tipo de destino en `Poco::NumberParser`, utilizado para leer números JSON. Estos números se analizaban silenciosamente como valores incorrectos (por ejemplo, `18446744073709551617` se convertía en `1`) en lugar de rechazarse, y un número `UInt64` superior al máximo de `Int64` no conservaba su valor tras una conversión de ida y vuelta de AST a JSON. [#112904](https://github.com/ClickHouse/ClickHouse/pull/112904) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió `IS DISTINCT FROM` para valores `Array` y `Map` comparados con `NULL`. Cierra [#103042](https://github.com/ClickHouse/ClickHouse/issues/103042). [#103162](https://github.com/ClickHouse/ClickHouse/pull/103162) ([yanglongwei](https://github.com/ylw510)).
* Se evita que los reintentos agotados del DDL distribuido replicado ejecutado por el líder bloqueen permanentemente las consultas DDL `ON CLUSTER` posteriores. [#108505](https://github.com/ClickHouse/ClickHouse/pull/108505) ([Ahaan Limaye](https://github.com/ahaanlimaye)).
* Se corrigió un `LOGICAL_ERROR` ("Trying to extract chunk from ChunkBuffer before all inputs are finished") al combinar una operación de conjuntos (`INTERSECT` / `UNION ALL` / `EXCEPT`) ramas que usan subconsultas correlacionadas y `correlated_subqueries_default_join_kind = 'left'`. [#108554](https://github.com/ClickHouse/ClickHouse/pull/108554) ([Groene AI](https://github.com/groeneai)).
* La conversión de valores de coma flotante fuera de rango (`BFloat16`, `Float32`, `Float64`) y de valores `UInt64` superiores a `Int64::max()` a `DateTime` y `Time` ahora se satura de forma fiable en los límites del rango en todas las arquitecturas (anteriormente, el resultado de una conversión fuera de rango dependía de la arquitectura y podía desbordarse en x86-64), y los valores no finitos (`NaN`, `inf`) ahora lanzan una excepción en lugar de producir un resultado arbitrario. La misma corrección se aplica a la ruta de conversión de coma flotante a `Date` de `toDate` y a las conversiones de `UInt64` y enteros anchos (`(U)Int128`, `(U)Int256`) a `Date` y `Date32`, que podían devolver un día anterior a la época en lugar de saturarse. La conversión de un número a `Time` ahora se satura al rango del tipo para todos los tipos de origen numéricos (anteriormente, los valores procedentes de tipos sin signo estrechos o enteros anchos se almacenaban sin limitar y solo se limitaban al imprimirse), y la conversión precisa a `Time` ya no rechaza los valores negativos que admite `Time` ni satura silenciosamente los valores que no caben en él. La conversión precisa de un número a `Date32` (`accurateCast`, `accurateCastOrNull`) ya no satura silenciosamente los valores fuera de rango o no finitos, sino que lanza una excepción o devuelve `NULL`, como ya hacía para `Date` y `DateTime`; las variantes `OrDefault` devuelven el valor predeterminado de `Date32` para dichas entradas. La conversión precisa de un número de coma flotante no entero a `Date`, `Date32`, `DateTime` o `Time` ahora se rechaza en lugar de truncarse silenciosamente. También se corrigió la documentación de la función `toDateTime32`, que por error mostraba ejemplos de `toDateTime64` y describía el rango de valores de `DateTime64`. [#110459](https://github.com/ClickHouse/ClickHouse/pull/110459) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `ALTER TABLE... DETACH PARTITION/PART` ahora ejecuta fsync en el clon que crea bajo `detached/` (el subárbol de la parte y la cadena de directorios hasta la raíz del disco) cuando está habilitada la configuración `fsync_part_directory` de la tabla, tanto para el almacenamiento de partes Full (directorio) como Packed. Anteriormente, nunca se ejecutaba fsync en el clon, mientras que sí se hacía en la parte de cobertura vacía que elimina las filas del conjunto activo, por lo que una pérdida de energía justo después de la confirmación podía destruir los datos separados en btrfs (las entradas de directorio no sincronizadas del clon se revierten, dejando `detached/` vacío y sin nada que `ATTACH`). Está controlado por la configuración existente `fsync_part_directory`; el comportamiento predeterminado no cambia. [#111426](https://github.com/ClickHouse/ClickHouse/pull/111426) ([Groene AI](https://github.com/groeneai)).
* Corrige un problema por el que `CREATE OR REPLACE` dejaba el objeto reemplazado con un nombre interno cuando el autor de la llamada no tenía privilegios para eliminarlo. [#111466](https://github.com/ClickHouse/ClickHouse/pull/111466) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se corrigió un fallo al ejecutar una lectura `STREAM` (`enable_streaming_queries = 1`) sobre una tabla con más de una partición y una política de filas definida. En las builds de depuración y con sanitizers, fallaba con el error lógico `Filter column... not found in DAG outputs`; en las builds de lanzamiento podía provocar un segfault. [#111572](https://github.com/ClickHouse/ClickHouse/pull/111572) ([Groene AI](https://github.com/groeneai)).
* Corrige `count()` en tablas Iceberg cuyo resumen de snapshot es inexacto o corrupto: la optimización de recuento trivial ahora obtiene recuentos exactos de filas a partir de los archivos de manifiesto y recurre a un análisis completo cuando las eliminaciones a nivel de fila hacen que los recuentos de metadatos sean inexactos. También corrige que `OPTIMIZE TABLE` de Iceberg escriba recuentos y linaje incorrectos en la lista de manifiestos, y hace que los metadatos de `totalBytes` sean resistentes a resúmenes corruptos. [#111617](https://github.com/ClickHouse/ClickHouse/pull/111617) ([Melvyn Peignon](https://github.com/melvynator)).
* Corrige un problema por el que una columna DEFAULT ausente en una parte se rellenaba con el valor predeterminado del tipo en lugar de con la expresión DEFAULT cuando la condición PREWHERE se dividía en varios pasos de lectura. Cierra [#111757](https://github.com/ClickHouse/ClickHouse/issues/111757). [#111795](https://github.com/ClickHouse/ClickHouse/pull/111795) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigieron los errores lógicos `Expected UInt64 column for __grouping_set, got BLOB` y `ColumnBLOB should be converted to a regular column before usage` en una consulta distribuida ejecutada en un shard con `enable_parallel_blocks_marshalling` (habilitado de forma predeterminada), por ejemplo, con `GROUP BY GROUPING SETS` en un clúster con una réplica local, o al leer una tabla `Merge` que abarca una tabla local y una tabla distribuida. `BlocksMarshallingStep` ya no se añade a los planes cuyos bloques se consumen en el mismo proceso. [#111997](https://github.com/ClickHouse/ClickHouse/pull/111997) ([Groene AI](https://github.com/groeneai)).
* Las operaciones ahora fallan al cargar estadísticas MergeTree corruptas, en lugar de ignorar el error. [#112201](https://github.com/ClickHouse/ClickHouse/pull/112201) ([Sergey Kuznetsov](https://github.com/skuznetsov-clickhouse)).
* Corrige un error lógico al usar PREWHERE en una tabla Merge sobre otra tabla Merge o una vista materializada con un tipo de columna distinto. También corrige un problema por el que una política de filas se ignoraba silenciosamente en tablas que leen de servidores remotos —una tabla Distributed o una tabla que la envuelve—, lo que podía exponer filas que la política debía ocultar; ahora dichas consultas se rechazan con un error ILLEGAL\_PREWHERE. En su lugar, defina estas políticas en las tablas locales subyacentes de cada servidor remoto; tenga en cuenta que esta política sigue sin aplicarse a las lecturas enviadas con `serialize_query_plan = 1`, lo que constituye un error independiente ya existente. [#112326](https://github.com/ClickHouse/ClickHouse/pull/112326) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Corrige `connection_pool_max_wait_ms` para que su valor documentado y predeterminado, `0`, signifique un tiempo de espera infinito. Antes, una consulta que encontraba el grupo de conexiones lleno reintentaba en un bucle cerrado, consumiendo CPU y registrando `No free connections in pool. Waiting 0 ms.` en cada iteración. Ahora espera hasta que se devuelva una conexión al grupo. Cierra [#112053](https://github.com/ClickHouse/ClickHouse/issues/112053). [#112380](https://github.com/ClickHouse/ClickHouse/pull/112380) ([Groene AI](https://github.com/groeneai)).
* Corrige la pérdida silenciosa de escrituras Iceberg confirmadas en HDFS: un commit de Iceberg publica cada nuevo archivo de metadatos mediante una escritura condicional, pero `HDFSObjectStorage` descartaba la condición y realizaba una sobrescritura normal, por lo que se confirmaban todos los escritores simultáneos mientras el snapshot de uno de ellos quedaba inaccesible. Ahora HDFS rechaza las escrituras condicionales, por lo que las escrituras Iceberg en HDFS administradas por el almacenamiento —incluidas las de `CREATE TABLE... ENGINE = IcebergHDFS(...)` con una lista explícita de columnas— fallan. Las lecturas no se ven afectadas. [#112437](https://github.com/ClickHouse/ClickHouse/pull/112437) ([Groene AI](https://github.com/groeneai)).
* Corrige una lectura fuera de límites (un bloqueo en compilaciones de lanzamiento) en la deduplicación de inserciones cuando un `INSERT` pasa por una vista materializada cuya consulta interna cambia el número de filas y la tabla de destino de la deduplicación está particionada. `DeduplicationInfo::filterToPartition` asignaba cada token de deduplicación a particiones recorriendo su rango de filas de origen en un selector de particiones dimensionado según el bloque de salida —más pequeño— de la vista, lo que provocaba lecturas fuera de sus límites. Ahora conserva todos los tokens en todas las particiones para cualquier destino de vista materializada —donde, tras cambiar el número de filas, ya no existe la asignación de filas de origen a particiones— en lugar de realizar ese recorrido fuera de límites (y de generar el `NOT_IMPLEMENTED` que una comprobación posterior producía para la misma inserción). [#112649](https://github.com/ClickHouse/ClickHouse/pull/112649) ([Sema Checherinda](https://github.com/CheSema)).
* Corrige un error lógico (que provoca una abortación en compilaciones de depuración y con sanitizadores) cuando se aplica `finalizeAggregation` a una columna cuyos estados de agregación proceden de funciones distintas que comparten una representación de estado, pero se finalizan en tipos diferentes; por ejemplo, `quantileState` y `quantilesState(0.9)` combinados mediante un `UNION` o generados con `arrayReduce`. Estas consultas ahora generan un error normal en lugar de bloquearse. [#112662](https://github.com/ClickHouse/ClickHouse/pull/112662) ([Zain Ul Abidin](https://github.com/zainulabidin302)).
* Corrige que `DELETE` en tablas `KeeperMap` elimine solo las primeras `max_block_size` filas coincidentes mientras informa de que la mutación se completó correctamente. También corrige que `DELETE` con `keeper_map_strict_mode = 1` no sea atómico: podía recurrir a eliminaciones sin versión y eliminar filas actualizadas de forma concurrente, y aplicaba las filas coincidentes bloque a bloque, por lo que un conflicto podía dejar la eliminación aplicada parcialmente. [#112777](https://github.com/ClickHouse/ClickHouse/pull/112777) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige que `ALTER` en tablas `MergeTree` se aplique mientras aún está en curso una mutación `RENAME COLUMN` incompleta. Esto podía actualizar los metadatos de almacenamiento de forma incompatible y bloquear por completo las mutaciones posteriores. [#112783](https://github.com/ClickHouse/ClickHouse/pull/112783) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Corrige el fallo al iniciar el servidor y al ejecutar `ATTACH` con `WITH RECURSIVE is not supported with the old analyzer` en una vista con una CTE recursiva cuando `enable_analyzer = 0` es el valor predeterminado del servidor. [#112784](https://github.com/ClickHouse/ClickHouse/pull/112784) ([Nikolay Degterinsky](https://github.com/evillique)).
* Corrige un error lógico al utilizar un motor de tabla `Join` en el lado derecho de un JOIN cuya sección `ON` contiene una condición que hace referencia a columnas de ambas tablas, por ejemplo, `ON (t.key = j.key) AND (t.a < j.a)`. Ahora esta consulta se rechaza con una excepción clara en lugar de generar `required columns:... but not found any in left table` o `std::bad_variant_access`. [#112815](https://github.com/ClickHouse/ClickHouse/pull/112815) ([Groene AI](https://github.com/groeneai)).
* Corrige resultados incorrectos en un `JOIN` cuya cláusula `ON` contiene una condición mixta, es decir, una condición residual no equi entre ambos lados, como `ON (t1.key = t2.key) AND (t1.a * 10 < t2.a)`. Solo la familia hash evalúa estas condiciones, pero `full_sorting_merge`, `partial_merge` y la unión directa clave-valor indicaban que podían ejecutar estos JOIN y luego ignoraban silenciosamente la condición residual, devolviendo filas adicionales. Ahora no los admiten, por lo que se utiliza un algoritmo hash. [#112831](https://github.com/ClickHouse/ClickHouse/pull/112831) ([Groene AI](https://github.com/groeneai)).
* Corrige el error lógico `ReadBufferFromEncryptedFile: Wrong file position` al leer una parte `Compact` de un disco `encrypted` con E/S directa, que provocaba que las fusiones se bloquearan en `system.replication_queue`. [#112943](https://github.com/ClickHouse/ClickHouse/pull/112943) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una ralentización cuadrática al analizar una consulta PromQL con una larga secuencia final de caracteres no reconocidos (por ejemplo, un valor `FixedString` rellenado con bytes NUL): el análisis de una entrada no válida de un megabyte podía mantener un hilo ocupado durante decenas de minutos y no se podía cancelar, ya que ocurre durante el análisis de la consulta. Ahora el analizador se detiene en el primer error. [#112944](https://github.com/ClickHouse/ClickHouse/pull/112944) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se rechazan las duraciones de PromQL cuyas unidades se repiten o no están ordenadas de la mayor a la menor. [#112954](https://github.com/ClickHouse/ClickHouse/pull/112954) ([Minh Vu](https://github.com/fallintoplace)).
* Se corrige un bloqueo al escribir `Parquet` con `output_format_parquet_parallel_encoding` habilitado (el valor predeterminado) y `max_threads` mayor que 1. Si el codificador no lograba planificar un hilo adicional, su contador de hilos activos sufría un desbordamiento por defecto y la escritura podía dejar de avanzar de forma permanente, en lugar de finalizar o informar de un error. [#112959](https://github.com/ClickHouse/ClickHouse/pull/112959) ([Groene AI](https://github.com/groeneai)). [#113170](https://github.com/ClickHouse/ClickHouse/pull/113170) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que `geohashesInBox` consumiera una cantidad de tiempo ilimitada para un rectángulo de área cero, como `geohashesInBox(0., 0., 180., 0., 12)`. Esta consulta devolvía el único geohash correcto, pero ejecutaba aproximadamente 5e8 iteraciones vacías de bucle por fila e ignoraba tanto `max_execution_time` como `KILL QUERY`. [#112976](https://github.com/ClickHouse/ClickHouse/pull/112976) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un comportamiento indefinido (se pasaba un puntero nulo a `memcpy`) en `replaceRegexpOne`/`replaceRegexpAll` cuando la cadena de reemplazo sustituye un grupo de captura que no participó en la coincidencia, por ejemplo `replaceRegexpAll('abc', '(a)|(b)', '\\2')`. [#113012](https://github.com/ClickHouse/ClickHouse/pull/113012) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se rechaza un cambio de `SETTINGS` marcado como escrito sin valor cuando incluye un valor distinto de `true`, y ya no se omite el valor de dicho cambio al formatear una consulta. Anteriormente, una carga útil JSON de AST manipulada podía ejecutar una configuración `Bool` con `false`, mientras que `system.query_log` y `formatQueryFromJSON` mostraban la forma sin valor. [#113025](https://github.com/ClickHouse/ClickHouse/pull/113025) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron un comportamiento indefinido y un error silencioso de planificación cuando se programa una tarea en segundo plano con un retraso muy grande, por ejemplo, mediante una vista materializada actualizable con un período `REFRESH AFTER` enorme. Los retrasos ahora se limitan al mayor valor representable en lugar de desbordarse. [#113041](https://github.com/ClickHouse/ClickHouse/pull/113041) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una escritura fuera de límites al leer una columna `DECIMAL` de `Parquet` cuyo tipo físico es más ancho que el tipo al que corresponde su precisión declarada, por ejemplo, `DECIMAL(9, 2)` almacenado físicamente como `INT64`. Estos archivos `Parquet` son válidos y otros escritores los generan, pero el lector dimensionaba la columna de destino según la precisión declarada, mientras que el decodificador escribía el ancho físico, lo que corrompía la memoria. Ahora, al leer uno de estos archivos también se genera `DECIMAL_OVERFLOW` cuando un valor no cabe en la precisión declarada, en lugar de devolver datos corruptos, y se realiza una lectura sin pérdida si se proporciona una indicación de tipo de al menos el ancho del tipo físico. [#113046](https://github.com/ClickHouse/ClickHouse/pull/113046) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `intDiv` en una columna no constante con el divisor constante -1, que envolvía silenciosamente la división del menor número con signo (p. ej., `intDiv(-9223372036854775808, -1)`) en lugar de generar la excepción `ILLEGAL_DIVISION`, como hacen las demás rutas de ejecución. Este desbordamiento silencioso también podía producir resultados incorrectos de `ORDER BY`/`DISTINCT`, porque la optimización de lectura en orden trata correctamente `intDiv` con una constante negativa como una función monotónica, pero el valor envuelto infringía el orden resultante. [#113048](https://github.com/ClickHouse/ClickHouse/pull/113048) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una incompatibilidad que impedía cargar en versiones posteriores los índices de texto creados en ClickHouse 26.3 con el tokenizador `unicode_word`. [#113061](https://github.com/ClickHouse/ClickHouse/pull/113061) ([Robert Schulze](https://github.com/rschu1ze)).
* Se corrigió un error lógico `Pipeline stuck` en consultas que distribuyen datos por partición, como una función de ventana con `PARTITION BY` o un join con `join_algorithm = 'parallel_full_sorting_merge'`, cuando la fase posterior de un shard finalizaba mientras un bloque solo se había distribuido parcialmente. [#113190](https://github.com/ClickHouse/ClickHouse/pull/113190) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron resultados incorrectos cuando un hash join tiene una sola clave `LowCardinality` de un tipo de más de 8 bytes (`UInt128`, `Int128`, `UInt256`, `Int256` y sus variantes `Nullable`). Este join devolvía silenciosamente filas cuyos valores de clave no eran iguales. [#113230](https://github.com/ClickHouse/ClickHouse/pull/113230) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un problema por el que `ALTER TABLE ... ADD PROJECTION` sobre una columna `ALIAS` de nivel de tabla dejaba la tabla inutilizable y los `INSERT` posteriores fallaban con `UNKNOWN_IDENTIFIER` (`Missing columns`) cuando la sesión tenía `optimize_respect_aliases = 0`. [#109091](https://github.com/ClickHouse/ClickHouse/pull/109091) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron las excepciones `NOT_FOUND_COLUMN_IN_BLOCK` y `LOGICAL_ERROR` en un `JOIN` `direct` sobre una tabla derecha `MergeTree`, así como abortos relacionados en compilaciones de depuración y con sanitizador. [#109932](https://github.com/ClickHouse/ClickHouse/pull/109932) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron comparaciones que anteriormente generaban `ILLEGAL_TYPE_OF_ARGUMENT` cuando los operandos no tenían un supertipo común mínimo. Ahora se pueden comparar lexicográficamente arrays como `Array(Int64)` frente a `Array(UInt64)` y `Array(Int256)` frente a `Array(UInt256)` con `=`, `!=`, `<`, `<=`, `>`, `>=`, `IS DISTINCT FROM` e `IS NOT DISTINCT FROM`. `isDistinctFrom` e `isNotDistinctFrom` ahora también comparan por valor pares compatibles de tipos numéricos y decimales que no son arrays, en lugar de generar una excepción, y también se corrigió la comparación de igualdad para arrays anidados dentro de `Tuple(Nullable(...))`. Cierra [#33897](https://github.com/ClickHouse/ClickHouse/issues/33897). [#110245](https://github.com/ClickHouse/ClickHouse/pull/110245) ([Diego Gomes Tomé](https://github.com/diegomestre2)).
* Se corrigió un `LOGICAL_ERROR` (`Bad cast from ColumnString to ColumnLowCardinality`) durante el análisis del índice de clave primaria cuando una columna de clave `LowCardinality` está envuelta en una cadena anidada de `CAST` que reintroduce `LowCardinality`, p. ej., `WHERE CAST(CAST(s, 'LowCardinality(String)'), 'String') < '5'`. En compilaciones de depuración y con sanitizador esto abortaba el servidor; en compilaciones de lanzamiento, la consulta fallaba. [#111050](https://github.com/ClickHouse/ClickHouse/pull/111050) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron resultados incorrectos en un `FULL JOIN` sobre una tabla con motor `Join` que usa `USING` cuando la clave izquierda es `Nullable` y la clave de almacenamiento no lo es: una fila izquierda sin coincidencia con una clave `NULL` devolvía `0` en lugar de `NULL`. [#111371](https://github.com/ClickHouse/ClickHouse/pull/111371) ([Groene AI](https://github.com/groeneai)).
* Corrige la visibilidad de versiones obsoletas y eliminadas de filas al leer una base de datos `MaterializedPostgreSQL` mediante una tabla `Merge`. Estas lecturas ahora pasan por el envoltorio `MaterializedPostgreSQL`, con el mismo filtrado por `FINAL` y `_sign = 1` que las lecturas directas. [#112382](https://github.com/ClickHouse/ClickHouse/pull/112382) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige `Bad cast from ColumnNullable to ColumnString` cuando una mutación que reescribe toda la parte se ejecuta en una parte cuyo tipo de columna es anterior al indicado en los metadatos de la tabla, por ejemplo, después de `ALTER TABLE ... MODIFY COLUMN` seguido de `ALTER TABLE ... MATERIALIZE PROJECTION`. [#112501](https://github.com/ClickHouse/ClickHouse/pull/112501) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige que los formatos de entrada basados en filas ignoren `KILL QUERY` y `max_execution_time` durante varios minutos mientras analizan un bloque. Ahora comprueban si se ha solicitado la cancelación cada 8192 filas, por lo que un `INSERT` cancelado (incluida una descarga en segundo plano de inserciones asíncronas) se detiene rápidamente en lugar de ejecutarse hasta el final del bloque. [#112646](https://github.com/ClickHouse/ClickHouse/pull/112646) ([Groene AI](https://github.com/groeneai)).
* Corrige que `RENAME TABLE` compruebe la longitud máxima del nombre de la tabla con respecto a la base de datos de origen en lugar de la de destino. Renombrar una tabla a una base de datos con un nombre largo podía generar una tabla que `DROP TABLE` no podía eliminar, y renombrar una tabla desde dicha base de datos se rechazaba incorrectamente. [#113019](https://github.com/ClickHouse/ClickHouse/pull/113019) ([Groene AI](https://github.com/groeneai)).
* Corrige `UNKNOWN_IDENTIFIER` al seleccionar desde una `VIEW` cuyos tipos de columna declarados difieren de los tipos que produce su consulta interna, por ejemplo, `SELECT sum(length(arr)) FROM v`, donde `v` declara `arr Array(UInt8)` sobre una columna `String`. Con el valor predeterminado `optimize_functions_to_subcolumns = 1`, el optimizador reescribía `length(arr)` como una lectura de la subcolumna `arr.size0` y redirigía ese nombre a la consulta interna, que no tiene dicha subcolumna. [#113057](https://github.com/ClickHouse/ClickHouse/pull/113057) ([Groene AI](https://github.com/groeneai)).
* Corrige una excepción (en compilaciones de lanzamiento, un error que impide el inicio del servidor) cuando un predicado de mutación usa la función de tabla `merge` sin especificar explícitamente el nombre de la base de datos. Ahora se usa la base de datos de la tabla mutada, igual que para los nombres de tabla. [#113185](https://github.com/ClickHouse/ClickHouse/pull/113185) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige resultados incorrectos y un `LOGICAL_ERROR` al leer una subcolumna de un miembro `Nested` eliminado y vuelto a añadir junto con un miembro existente del mismo grupo, en una tabla `MergeTree` con `share_nested_offsets = 1`. Los miembros existentes devolvían valores de un bloque posterior siempre que la lectura abarcaba más de un bloque. [#113225](https://github.com/ClickHouse/ClickHouse/pull/113225) ([Groene AI](https://github.com/groeneai)).
* Corrige un bloqueo de las sentencias `ALTER`, `OPTIMIZE`, `TRUNCATE` y de manipulación de particiones con `alter_sync = 2` en `ReplicatedMergeTree` cuando la tabla empieza a apagarse mientras la sentencia espera a otra réplica, por ejemplo, debido a un `DROP DATABASE ... SYNC` simultáneo. Ahora dicha sentencia falla con `UNFINISHED` y también respeta `max_execution_time` y `KILL QUERY`. [#113228](https://github.com/ClickHouse/ClickHouse/pull/113228) ([Groene AI](https://github.com/groeneai)).
* No escribe secuencias de escape ANSI en `INTO OUTFILE` cuando `stdout` es un TTY. [#113252](https://github.com/ClickHouse/ClickHouse/pull/113252) ([Azat Khuzhin](https://github.com/azat)).
* Corrige un caso poco frecuente de uso de memoria liberada en la cola de inserciones asíncronas cuando distintas entradas tienen plazos idénticos. [#113363](https://github.com/ClickHouse/ClickHouse/pull/113363) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige tablas que quedaban silenciosamente vacías cuando se crea más de una base de datos `ENGINE = Backup` a partir de la misma copia de seguridad o cuando dicha base de datos se vuelve a crear con otro nombre. La política de almacenamiento que respalda una base de datos `Backup` ahora se identifica mediante un nombre que también incluye el nombre de la base de datos local, de modo que cada base de datos obtiene el disco creado para su propia ruta de datos. [#113378](https://github.com/ClickHouse/ClickHouse/pull/113378) ([Groene AI](https://github.com/groeneai)).
* Corrige que las filas nunca se eliminen cuando una tabla `MergeTree` tiene dos o más reglas `TTL ... DELETE WHERE` con la misma expresión de tiempo y que solo difieren en la condición `WHERE`. Tras una fusión de eliminación por TTL, el `rows_where_ttl_info` de la parte se restablecía a cero, por lo que nunca se programaba otra fusión TTL y las filas expiradas se conservaban indefinidamente sin ningún error ni mensaje de registro. Cierra [#113116](https://github.com/ClickHouse/ClickHouse/issues/113116). [#113384](https://github.com/ClickHouse/ClickHouse/pull/113384) ([Groene AI](https://github.com/groeneai)).
* Una consulta sobre una tabla `Merge` (o la función de tabla `merge`) que coincide con muchas tablas ahora responde a `KILL QUERY` y `max_execution_time` mientras se generan los planes de consulta de cada tabla, en lugar de hacerlo solo después de finalizar la planificación de todas las tablas hijas. Con `timeout_overflow_mode = 'break'`, también deja de generar planes de consulta para las tablas coincidentes restantes y devuelve el resultado parcial sin error, tal como documenta ese modo. [#113415](https://github.com/ClickHouse/ClickHouse/pull/113415) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#113642](https://github.com/ClickHouse/ClickHouse/pull/113642) ([Groene AI](https://github.com/groeneai)).
* Corrige que `clickhouse-client` salga con el código `139` en lugar de `0` después de cancelar una consulta con Ctrl+C o después de un `INSERT` que lee datos de stdin. [#113431](https://github.com/ClickHouse/ClickHouse/pull/113431) ([Groene AI](https://github.com/groeneai)).
* Permite que las expresiones de preprocesador y posprocesamiento de un índice de texto hagan referencia a columnas `ALIAS`. [#110014](https://github.com/ClickHouse/ClickHouse/pull/110014) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Se corrigieron varios casos en los que las réplicas paralelas devolvían filas duplicadas: `distributed_aggregation_memory_efficient` era ignorado por las réplicas paralelas basadas en planes, por lo que los buckets de la fusión eficiente en memoria llegaban desordenados y se fusionaban dos veces; además, se leían todas las réplicas de un fragmento aunque los datos no estuvieran divididos entre ellas, cuando las réplicas paralelas no eran aplicables a la consulta o cuando `parallel_replicas_mode` solicitaba filtrado por clave personalizada sin `parallel_replicas_custom_key`. [#112942](https://github.com/ClickHouse/ClickHouse/pull/112942) ([Nikita Taranov](https://github.com/nickitat)).
* Se corrigió que `CREATE TABLE ... AS SELECT` no pudiera finalizarse cuando fallaba el `SELECT` que lo llenaba y `database_atomic_wait_for_drop_and_detach_synchronously` estaba habilitado: el `DROP` interno de limpieza de la tabla temporal esperaba la cola de eliminación en segundo plano e ignoraba tanto `KILL QUERY` como `max_execution_time`. [#113504](https://github.com/ClickHouse/ClickHouse/pull/113504) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `ALTER TABLE ... EXECUTE remove_orphan_files` eliminara un archivo activo `metadata/version-hint.text` de una tabla `Iceberg`. Su entrada en el conjunto de archivos accesibles se creaba mediante concatenación de cadenas, suponiendo una barra diagonal final en un valor que nunca la tiene, por lo que el archivo de sugerencia real nunca se reconocía como accesible y se eliminaba al superar el umbral `older_than`. Con `iceberg_use_version_hint = 1`, la tabla dejaba de poder leerse por completo. [#113548](https://github.com/ClickHouse/ClickHouse/pull/113548) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un problema por el que una vista parametrizada perdía su base de datos cuando una consulta que hacía referencia a ella sin calificar se enviaba a un segmento, haciendo que este resolviera el nombre en su propia base de datos predeterminada. Según el contenido de esa base de datos, la consulta fallaba con `UNKNOWN_FUNCTION` o devolvía silenciosamente filas de una vista distinta. Afecta a `IN`, `JOIN` y `remote` a través de una tabla `Distributed`. [#113550](https://github.com/ClickHouse/ClickHouse/pull/113550) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` cuando una consulta filtra `system.databases` por la columna `name` mediante una subconsulta dentro de `indexHint`, por ejemplo `SELECT count() FROM system.databases WHERE indexHint(name IN (SELECT 'foo'))`. [#113556](https://github.com/ClickHouse/ClickHouse/pull/113556) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un bucle infinito en las fusiones en segundo plano y `OPTIMIZE` cuando `merge_max_block_size_bytes` se configuraba por debajo de `byteSize()` de una columna vacía. Una columna `LowCardinality` vacía conserva su diccionario, por lo que el límite de bytes podía alcanzarse antes de fusionar una sola fila; la fusión producía entonces bloques vacíos indefinidamente, consumiendo el 100 % de un núcleo de CPU y sin liberar nunca su ranura en el grupo en segundo plano. [#113585](https://github.com/ClickHouse/ClickHouse/pull/113585) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un problema por el que una consulta sobre una columna `Variant` ignoraba `max_execution_time` y `KILL QUERY`. Al llamar a una función con varios argumentos `Variant`, la función se resolvía una vez por cada alternativa de cada argumento, y ninguno de los dos bucles que realizaban ese trabajo comprobaba si se había cancelado, por lo que la consulta no podía detenerse hasta que finalizara. [#113612](https://github.com/ClickHouse/ClickHouse/pull/113612) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `Unknown compression method` para las sugerencias de compresión `auto` y `none` cuando se escribían con una combinación de mayúsculas y minúsculas distinta de todo en minúsculas, por ejemplo `file('data.csv.gz', 'CSV', 'x String', 'AUTO')`. Los nombres de códecs como `GZIP` ya se aceptaban sin distinguir entre mayúsculas y minúsculas; las dos sugerencias especiales ahora se comportan igual. [#113631](https://github.com/ClickHouse/ClickHouse/pull/113631) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el plegado de constantes con el nuevo analizador, que cambiaba el tipo de un valor constante `Geometry`. `Geometry` es un `Variant` con nombre cuyas alternativas pueden compartir la misma disposición de almacenamiento (`LineString`/`Ring`, `MultiLineString`/`Polygon` y valores vacíos), por lo que dos constantes plegadas que solo diferían en su alternativa podían colapsar en una sola; por ejemplo, `MULTIPOLYGON EMPTY` se convertía en `LINESTRING()`. [#110709](https://github.com/ClickHouse/ClickHouse/pull/110709) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una excepción (`Cannot calculate columns sizes when columns or checksums are not initialized`) durante la fusión de una tabla `MergeTree` de una sola columna, cuya única columna tiene un `TTL` que expira por completo, con `min_bytes_for_wide_part = 1`. [#111169](https://github.com/ClickHouse/ClickHouse/pull/111169) ([Groene AI](https://github.com/groeneai)).
* No poder iniciar un pool de programación en segundo plano (por ejemplo, el pool `iceberg` cuando se agota el pool global de hilos) ya no aborta el servidor: el error ahora es una excepción recuperable. Leer `system.background_schedule_pool` tampoco crea ya esos pools como efecto secundario. [#111209](https://github.com/ClickHouse/ClickHouse/pull/111209) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una lectura fuera de límites en el protocolo nativo con datos de índice corruptos. [#112331](https://github.com/ClickHouse/ClickHouse/pull/112331) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió un interbloqueo que bloqueaba permanentemente una base de datos `Filesystem` o `HDFS` cuando dos consultas resolvían el mismo nombre de tabla al mismo tiempo. Todas las consultas posteriores contra esa base de datos se bloqueaban indefinidamente y no podían interrumpirse, por lo que era necesario reiniciar el servidor para recuperarse. [#112495](https://github.com/ClickHouse/ClickHouse/pull/112495) ([Groene AI](https://github.com/groeneai)).
* Corrige que `max_execution_time` y `KILL QUERY` no surtieran efecto silenciosamente en una consulta distribuida que establece conexiones con réplicas. Ahora, la consulta se detiene en el siguiente intento de conexión, en lugar de probar cada réplica y reintento restantes. [#112689](https://github.com/ClickHouse/ClickHouse/pull/112689) ([Groene AI](https://github.com/groeneai)).
* Corrige que `DROP TABLE` y `SYSTEM STOP VIEW` se bloquearan cuando una vista materializada actualizable estaba bloqueada al planificar su consulta de actualización. [#113188](https://github.com/ClickHouse/ClickHouse/pull/113188) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se corrigió que `CREATE TABLE` con `ENGINE = Distributed(...)` o `ENGINE = Buffer(...)` y sin lista de columnas revelara la estructura de una tabla referenciada que el usuario creador no tiene permiso para ver. En un `CREATE` local, la estructura ahora se infiere en el contexto del propio usuario, por lo que se requiere `SHOW COLUMNS` en la tabla referenciada. No se aplica a un `CREATE` reproducido desde la cola DDL (`ON CLUSTER` o dentro de una base de datos `Replicated`). [#113220](https://github.com/ClickHouse/ClickHouse/pull/113220) ([Groene AI](https://github.com/groeneai)). [#113372](https://github.com/ClickHouse/ClickHouse/pull/113372) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la lectura de la base de datos interna `_temporary_and_external_tables` mediante la función de tabla `merge` y el motor de tabla `Merge`, que permitía a una sesión leer las tablas temporales de otras sesiones y usuarios. Ahora, una expresión regular para bases de datos omite esa base de datos, y se deniega especificarla explícitamente, igual que se deniega el acceso directo a ella. [#113224](https://github.com/ClickHouse/ClickHouse/pull/113224) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que `countSubstrings`, `countSubstringsCaseInsensitive`, `countSubstringsCaseInsensitiveUTF8`, `countMatches` y `countMatchesCaseInsensitive` ignoraran `KILL QUERY` y `max_execution_time`: una llamada sobre muchas filas, muchas coincidencias o un valor grande podía ejecutarse durante minutos después de cancelar la consulta. [#113369](https://github.com/ClickHouse/ClickHouse/pull/113369) ([Groene AI](https://github.com/groeneai)). [#113886](https://github.com/ClickHouse/ClickHouse/pull/113886) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que una mutación de una parte Compact produjera resultados distintos según si la información de serialización de la parte aún estaba en memoria o se había recargado desde `serialization.json`, cuando la tabla usa `serialization_info_version = 'basic'`. En `ReplicatedMergeTree`, esto hacía que dos réplicas con una parte de origen idéntica byte por byte escribieran partes mutadas diferentes y que la mutación fallara con `CHECKSUM_DOESNT_MATCH`. Cierra [#113500](https://github.com/ClickHouse/ClickHouse/issues/113500). [#113588](https://github.com/ClickHouse/ClickHouse/pull/113588) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `made_current_at` en `system.iceberg_history` informara de la primera hora en que una instantánea pasó a ser actual, en lugar de la última, cuando el mismo `snapshot-id` aparece más de una vez en el `snapshot-log` de `Iceberg` (como sucede tras una reversión). [#113598](https://github.com/ClickHouse/ClickHouse/pull/113598) ([Groene AI](https://github.com/groeneai)).
* Corrige valores incorrectos en columnas virtuales como `_table` o `_database` seleccionadas desde el lado derecho de un `JOIN` con un origen de clave-valor como `EmbeddedRocksDB`, `KeeperMap`, `Redis` o un diccionario. En su lugar, la consulta podía devolver un valor de columna de datos o fallar con `LOGICAL_ERROR`. [#113698](https://github.com/ClickHouse/ClickHouse/pull/113698) ([Groene AI](https://github.com/groeneai)).
* Corrige que `EXPLAIN ANALYZE` sobre una tabla `Merge` con varios hijos, un `PREWHERE` con una columna sin expresión y un `WHERE` independiente fallara con `Required output position N is out of range for pass-through inputs`. Cierra [#113621](https://github.com/ClickHouse/ClickHouse/issues/113621). [#113725](https://github.com/ClickHouse/ClickHouse/pull/113725) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo de `clickhouse-disks move` al mover un directorio que producía `DIRECTORY_ALREADY_EXISTS` en discos con `metadata_type = plain_rewritable` (por ejemplo, `s3_plain_rewritable`) y que además dejaba un directorio de destino vacío. [#113727](https://github.com/ClickHouse/ClickHouse/pull/113727) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo en las lecturas de tablas `Merge` con `No set is registered for key ...` cuando una tabla secundaria declara una columna `ALIAS` que contiene `IN` y las tablas secundarias difieren en el valor predeterminado de esa columna. [#113757](https://github.com/ClickHouse/ClickHouse/pull/113757) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `UNKNOWN_IDENTIFIER` con `enable_analyzer = 0` cuando un `WHERE` hace referencia a una columna producida por `untuple` dentro de una subconsulta, por ejemplo, `SELECT t.keys FROM (SELECT untuple(arrayJoin(m)) AS t FROM ...) WHERE t.values > 0`. La reescritura de `enable_optimize_predicate_expression` insertaba ese predicado en la subconsulta como un `HAVING`, donde el nombre aún no existe. [#113760](https://github.com/ClickHouse/ClickHouse/pull/113760) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo de `ALTER TABLE ... MODIFY COLUMN` con `Cannot specify codec for column type ALIAS` cuando una instrucción convierte una columna `ALIAS` en una columna física (`DEFAULT` o `MATERIALIZED`) y especifica un `CODEC`. Cierra [#113693](https://github.com/ClickHouse/ClickHouse/issues/113693). [#113853](https://github.com/ClickHouse/ClickHouse/pull/113853) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron `ORDER BY ALL` y `GROUP BY ALL` en una tabla `Merge` combinada mediante un join con el analizador anterior (`allow_experimental_analyzer = 0`). La consulta ya no falla con una excepción interna, y las compilaciones de depuración y con sanitizador ya no se interrumpen. [#109139](https://github.com/ClickHouse/ClickHouse/pull/109139) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una excepción esporádica `Cannot parse string ... as UInt64 ... While executing ValuesBlockInputFormat` que podía producirse al insertar valores cuyas expresiones contienen una conversión numérica, como `initializeAggregation('sumState', 0::UInt64)`. [#110637](https://github.com/ClickHouse/ClickHouse/pull/110637) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la comprobación periódica de discos locales que notificaba fallos en un disco en buen estado. Cuando un servidor ejecuta un Keeper integrado junto con un disco `local`, dos hilos de comprobación podían sondear el mismo archivo, registrar transitoriamente `FILE_DOESNT_EXIST`, `CANNOT_READ_ALL_DATA` o `CANNOT_UNLINK` e incluir temporalmente el disco en la métrica `BrokenDisks`. [#110773](https://github.com/ClickHouse/ClickHouse/pull/110773) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron resultados incorrectos y un error lógico `Cannot serialize FutureSetFromSubquery with no query plan` en consultas sobre tablas `Merge` y la función de tabla `merge` cuando estaban habilitadas las réplicas paralelas basadas en planes. [#112849](https://github.com/ClickHouse/ClickHouse/pull/112849) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Una tabla del motor de base de datos `URL` ya no revela a un usuario sin el privilegio de lectura de la fuente si existe un archivo local. Tanto `EXISTS TABLE`, que solo requiere el privilegio `SHOW TABLES`, como la resolución del nombre de la tabla ahora esperan a la comprobación de privilegios antes de sondear el sistema de archivos. [#113029](https://github.com/ClickHouse/ClickHouse/pull/113029) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió el caso en que una expresión TTL quedaba inutilizable cuando el plegado de constantes eliminaba las columnas a las que hace referencia; por ejemplo, `TTL d + INTERVAL 1 DAY DELETE WHERE isNull(x)` en una `x` no `Nullable`, lo que hacía que cada `INSERT` en la tabla fallara con `Missing columns`. También se corrigió el fallo al iniciar el servidor cuando una tabla tenía una expresión TTL sobre una columna `Variant` creada con `variant_throw_on_type_mismatch = 0`. [#113042](https://github.com/ClickHouse/ClickHouse/pull/113042) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la cancelación de lecturas de la función de tabla `postgresql` y del motor de tabla `PostgreSQL`. Cancelar mientras la lectura aún se estaba iniciando podía provocar una condición de carrera en el puntero de la transacción y hacer que se perdiera la cancelación, dejando la consulta en ejecución hasta que PostgreSQL la finalizara. [#113150](https://github.com/ClickHouse/ClickHouse/pull/113150) ([Groene AI](https://github.com/groeneai)).
* Ahora `UNDROP TABLE` puede interrumpirse con `KILL QUERY` mientras espera a que las consultas en ejecución liberen la tabla eliminada. [#113263](https://github.com/ClickHouse/ClickHouse/pull/113263) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una fuga de memoria de todo el analizador XML cuando un controlador XML de `Poco` lanza una excepción durante el análisis; por ejemplo, debido a un desbordamiento de `Poco::XML::NamePool` al analizar un documento con muchos nombres de elementos únicos. [#113348](https://github.com/ClickHouse/ClickHouse/pull/113348) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron las escrituras en el disco `HDFS`: ya no fallan con `Parent directory doesn't exist` cuando la clave de objeto generada contiene prefijos de directorios anidados, ya que ahora se crean los directorios principales que faltan. [#113396](https://github.com/ClickHouse/ClickHouse/pull/113396) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron resultados incorrectos y, en compilaciones con aserciones habilitadas, un fallo de aserción en un `JOIN` con un diccionario cuya cláusula `ON` incluye una condición no equitativa entre ambas tablas, como `ON (t.key = d.key) AND (t.a * 10 < d.a)`, cuando `join_use_nulls` está habilitado. [#113534](https://github.com/ClickHouse/ClickHouse/pull/113534) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió el bloqueo de una consulta durante hasta `receive_timeout` segundos cuando finalizaba muy rápidamente en el iniciador. [#113551](https://github.com/ClickHouse/ClickHouse/pull/113551) ([Nikita Taranov](https://github.com/nickitat)).
* Se corrigió que `UPDATE` y la eliminación ligera `DELETE` leyeran tablas incorrectas cuando la base de datos de la tabla actualizada difiere de la base de datos de la sesión. Los nombres de tabla no cualificados y la función de tabla `merge` ahora se resuelven en la base de datos de la tabla actualizada, por lo que la instrucción ya no actualiza ni elimina silenciosamente filas seleccionadas de otra tabla. [#113748](https://github.com/ClickHouse/ClickHouse/pull/113748) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un rechazo espurio con `TOO_MANY_PARTS` de un `INSERT` paralelo: cuando `max_insert_threads` paraleliza un `INSERT` simple, la consulta ya no cuenta las partes confirmadas por sus propios receptores hermanos. Cierra [#114015](https://github.com/ClickHouse/ClickHouse/issues/114015). [#114016](https://github.com/ClickHouse/ClickHouse/pull/114016) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron `NO_SUCH_COLUMN_IN_TABLE` cuando una consulta con réplicas paralelas selecciona una columna `ALIAS` de una tabla enviada como tabla temporal de `GLOBAL JOIN`, `MULTIPLE_EXPRESSIONS_FOR_ALIAS` cuando ambos lados de un `JOIN` distribuido declaran una columna `ALIAS` con el mismo nombre, y `UNKNOWN_IDENTIFIER` cuando una tabla `Distributed` declara una columna `ALIAS` basada en otra columna `ALIAS`, incluso como clave de `JOIN USING`. [#107700](https://github.com/ClickHouse/ClickHouse/pull/107700) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Se corrigió la lectura de un `Tuple` CSV cuyo primer elemento es `NULL`. Con `input_format_csv_deserialize_separate_columns_into_tuple` e `input_format_null_as_default` habilitados, un `\N` inicial en una fila como `\N,1` se interpretaba como si toda la columna fuera `NULL`, por lo que la fila se sustituía por un valor predeterminado y las celdas de los elementos restantes provocaban un error de análisis. Ahora, el `NULL` inicial se considera el valor del primer elemento y `input_format_null_as_default` se aplica a ese elemento. Una fila que proporciona un único campo `\N` para un `Tuple` simple completo carece ahora de los elementos restantes y se rechaza; establezca `input_format_csv_deserialize_separate_columns_into_tuple = 0` para volver a leer ese campo como la columna completa. [#109744](https://github.com/ClickHouse/ClickHouse/pull/109744) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un caso poco frecuente de `Logical error: 'No more packets are available.'` en una consulta distribuida válida con un `LIMIT`. En compilaciones de depuración y con sanitizadores, también provocaba la interrupción del servidor. [#110334](https://github.com/ClickHouse/ClickHouse/pull/110334) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error lógico (`!part.empty()`) al usar una tabla `Distributed` definida con un nombre de base de datos remota vacío en un `JOIN` con `distributed_product_mode = 'local'`. [#110677](https://github.com/ClickHouse/ClickHouse/pull/110677) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la resolución de nombres de columna completos, como `db.table.column`, en el analizador para tablas que tienen el mismo nombre que su base de datos. Cierra [#82084](https://github.com/ClickHouse/ClickHouse/issues/82084). [#110976](https://github.com/ClickHouse/ClickHouse/pull/110976) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la pérdida de optimizaciones posteriores a la construcción en las uniones hash (conversión a una tabla hash fija, filtro de tiempo de ejecución compartido y reorganización por rangos de la tabla derecha) cuando se configuraba un umbral automático de desbordamiento a disco, que es el valor predeterminado desde la versión 26.5. [#111972](https://github.com/ClickHouse/ClickHouse/pull/111972) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error por el que `ALTER TABLE ... MODIFY COLUMN`, al cambiar una sugerencia de tipo `JSON` (con `allow_experimental_json_lazy_type_hints` habilitado) en una columna cuya subcolumna se utiliza en la clave primaria o de ordenación, la clave de partición o un índice de omisión explícito, podía corromper la clave o el índice en disco. Las lecturas normales lo ocultaban mediante la estructura almacenada en caché, pero, tras volver a cargarla (por ejemplo, al reiniciar el servidor), las consultas fallaban con `CANNOT_READ_ALL_DATA` o devolvían resultados incorrectos. Estos `ALTER` se rechazan ahora siempre que cambien el tipo en disco de una subcolumna `JSON` referenciada. Los cambios de sugerencias de tipo en columnas ajenas a esas estructuras, o los cambios que no modifican el tipo en disco de las subcolumnas referenciadas (por ejemplo, añadir una ruta tipada no relacionada), siguen siendo operaciones de solo metadatos. [#112302](https://github.com/ClickHouse/ClickHouse/pull/112302) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigieron resultados incorrectos cuando `query_plan_join_swap_table` intercambia las tablas de un `ANY JOIN` mientras `join_any_take_last_row = 1`: ClickHouse ahora conserva el orden original de los lados de la unión para que `ANY JOIN` siga devolviendo la última fila coincidente. Cierra [#111645](https://github.com/ClickHouse/ClickHouse/issues/111645). [#112458](https://github.com/ClickHouse/ClickHouse/pull/112458) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigió que `listObjects` en un disco `AzureBlobStorage` con un endpoint con prefijo devolviera nombres de blob incorrectos en cada página después de la primera, porque la paginación omitía el envoltorio de cliente que elimina el prefijo del endpoint. Ahora, la paginación vuelve a pasar por el envoltorio mediante el token de continuación, de modo que los nombres de blob son correctos en todas las páginas. [#112872](https://github.com/ClickHouse/ClickHouse/pull/112872) ([Arsen Muk](https://github.com/arsenmuk)).
* Se corrigió la asignación de memoria sin límites al leer un archivo `Parquet` cuyos metadatos Thrift declaran una longitud de contenedor o cadena mayor que los propios metadatos. Ahora, dicha longitud se rechaza en lugar de asignarle memoria. [#113212](https://github.com/ClickHouse/ClickHouse/pull/113212) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `Cannot insert element into Set` (`NOT_IMPLEMENTED`) cuando `read_in_order_use_virtual_row` está habilitado y una consulta `MergeTree` de lectura ordenada combina `WITH FILL ... INTERPOLATE` con un filtro `IN` o `has`. [#113264](https://github.com/ClickHouse/ClickHouse/pull/113264) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la omisión silenciosa de `optimize_read_in_order` en algunas consultas `ORDER BY`, incluidas las que usan una fila virtual o `toString`/`CAST(..., 'Nullable(String)')` sobre una clave de ordenación `String`. También se corrigieron resultados incorrectos en filtros u `ORDER BY` aplicados a `toString` de valores `Time`, `Time64` o `DateTime` en zonas horarias con horario de verano. [#113291](https://github.com/ClickHouse/ClickHouse/pull/113291) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se rechazan expresiones `parallel_replicas_custom_key` no válidas, como `tuple()` o `(x, y)`, con `ILLEGAL_TYPE_OF_COLUMN_FOR_FILTER`, en lugar de leer más allá del final de la lista de tipos de claves personalizadas. [#113359](https://github.com/ClickHouse/ClickHouse/pull/113359) ([Nikita Taranov](https://github.com/nickitat)).
* Se corrigió un fallo al reiniciar el servidor después de que se terminara durante un `DROP TABLE` de una tabla que usa una colección con nombre: un `DROP NAMED COLLECTION` posterior podía completarse correctamente, dejando metadatos de tabla que hacían referencia a una colección con nombre inexistente y provocando que el siguiente inicio fallara con `NAMED_COLLECTION_DOESNT_EXIST`. [#113524](https://github.com/ClickHouse/ClickHouse/pull/113524) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron dos casos en los que una base de datos `DataLakeCatalog` de AWS Glue informaba de que una tabla no existía en lugar de informar de un error. `SHOW TABLES` y `system.tables` ya no fallan con `DATALAKE_DATABASE_ERROR` ("Exception calling GetTables ... not found") cuando falta una base de datos de Glue mientras se enumeran sus tablas, por ejemplo, porque se eliminó simultáneamente una base de datos no relacionada de la misma cuenta de AWS; en ese caso, la base de datos no aporta tablas en lugar de interrumpir la enumeración. `EXISTS TABLE` ya no devuelve `0` para una tabla existente cuando la llamada subyacente a `GetTable` falla por un motivo distinto de que la tabla no exista, como un fallo de autenticación, DNS o 5xx. Cualquier otro error de Glue sigue propagándose en ambas rutas. [#113591](https://github.com/ClickHouse/ClickHouse/pull/113591) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error de durabilidad de Keeper por el que un bloqueo mientras se persistía el archivo de estado de Raft (que almacena `term` y `voted_for`) podía dejar el nodo sin un estado válido ni una copia de seguridad. Al reiniciarse, el nodo podía restablecerse a `term = 0` y conceder un voto que ya había concedido en ese término, lo que podía provocar dos líderes y la pérdida de datos confirmados. El estado anterior ahora se conserva hasta que el nuevo archivo de estado se escribe y sincroniza por completo. [#113654](https://github.com/ClickHouse/ClickHouse/pull/113654) ([Alexey Bakharew](https://github.com/alexbakharew)).
* Se corrigió una carrera de dato cuando se destruye una tabla `MergeTree` mientras sus tareas en segundo plano de actualización de estadísticas, actualización de partes o carga de partes obsoletas/inesperadas aún se están ejecutando. [#113722](https://github.com/ClickHouse/ClickHouse/pull/113722) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron `ORDER BY ALL` en una `WINDOW VIEW` y los errores `UNKNOWN_IDENTIFIER` para `INTERPOLATE`, `WINDOW` y `LIMIT BY` en consultas sobre una tabla `Merge` o `Distributed` con una unión, al usar el analizador antiguo. [#113759](https://github.com/ClickHouse/ClickHouse/pull/113759) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una fuga de memoria en el códec de compresión experimental `SZ3`: cuando la compresión de datos poco comprimibles o corruptos fallaba con una excepción, los búferes temporales de trabajo permanecían asignados. [#113916](https://github.com/ClickHouse/ClickHouse/pull/113916) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la complejidad cuadrática al analizar el argumento de dirección de las funciones de tabla `remote`, `mysql` y similares: una dirección muy larga (por ejemplo, un `FixedString` de un megabyte rellenado con ceros) hacía que la consulta se bloqueara durante el análisis y no pudiera cancelarse. [#113918](https://github.com/ClickHouse/ClickHouse/pull/113918) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un fallo de `OPTIMIZE TABLE` en una tabla `Iceberg` con el error `Unsupported snapshot's operation type OVERWRITE` cuando el historial de la tabla contenía una eliminación de filas que eliminaba más de una fila por archivo de eliminación por posición. Cierra [#113745](https://github.com/ClickHouse/ClickHouse/issues/113745). [#113964](https://github.com/ClickHouse/ClickHouse/pull/113964) ([Groene AI](https://github.com/groeneai)).
* No replicar `ALTER TABLE ATTACH PARTITION FROM` en bases de datos replicadas. [#94835](https://github.com/ClickHouse/ClickHouse/pull/94835) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* Los ajustes no válidos del tamaño de carga en Azure (por ejemplo, `azure_min_upload_part_size = 0` o `azure_max_blocks_in_multipart_upload = 0`) ahora se rechazan de forma anticipada con un error claro, en lugar de provocar una excepción interna (`second_size > 0`) en una fase profunda de la ruta de escritura. Esto se aplica tanto a los ajustes de consulta como a la configuración de discos de Azure. [#103394](https://github.com/ClickHouse/ClickHouse/pull/103394) ([Statxc](https://github.com/statxc)).
* Se corrigió el escape incorrecto de literales SQL en `StorageSQLite` y en la función de tabla `sqlite()` al hacer pushdown de predicados `WHERE` a SQLite: las comillas simples y los caracteres de control (`\n`, `\r`, `\t`, `\`) se escapaban con barras invertidas, que SQLite no interpreta, lo que provocaba errores de sintaxis o resultados de consulta incorrectos. También se corrigió el escape de literales de cadena enviados mediante pushdown a PostgreSQL: las cadenas anidadas en listas `IN` conservaban el escape de ClickHouse, y los caracteres de control se enviaban como secuencias de barras invertidas que PostgreSQL interpreta como bytes diferentes. [#104217](https://github.com/ClickHouse/ClickHouse/pull/104217) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió la excepción `NOT_FOUND_COLUMN_IN_BLOCK` en consultas `INNER JOIN ... ON arrayJoin(...) = ...` cuando `query_plan_convert_join_to_in` está habilitado y el SELECT hace referencia a la columna de array de origen. [#104809](https://github.com/ClickHouse/ClickHouse/pull/104809) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigieron las expresiones IN y NOT IN con operandos no constantes en el lado derecho que hacen referencia a columnas de la fila actual, y se alineó el manejo de tuplas en el lado derecho del nuevo analizador con la semántica IN existente de ClickHouse. Con el analizador anterior, una columna de origen sin calificar en el lado derecho (`x IN (arr)`) todavía se resuelve como un nombre de tabla y queda fuera del ámbito. [#104993](https://github.com/ClickHouse/ClickHouse/pull/104993) ([Yue Ni](https://github.com/niyue)).
* Se corrigió el error `Cannot add column ...: column with this name already exists` en `INSERT SELECT` desde una función de tabla como `file`, `s3` o `input`, cuando se selecciona la misma columna de origen más de una vez. [#105982](https://github.com/ClickHouse/ClickHouse/pull/105982) ([etienne](https://github.com/crakjie)).
* Rechazar `max_replication_lag_to_enqueue = 0` en bases de datos `Replicated`. Este valor hacía que la comprobación de falta de sincronización posterior a la recuperación fuera trivialmente verdadera y abortaba el servidor con `LOGICAL_ERROR` en compilaciones de depuración y con sanitizadores. Ahora `0` se rechaza durante el análisis con `BAD_ARGUMENTS` desde cualquier origen (`CREATE DATABASE ... SETTINGS`, bloque de configuración del servidor `<database_replicated>`, reproducción de `ATTACH` y reproducción, durante una actualización, de metadatos existentes). El valor válido más pequeño es `1`. Cierra [#98823](https://github.com/ClickHouse/ClickHouse/issues/98823). [#106006](https://github.com/ClickHouse/ClickHouse/pull/106006) ([Groene AI](https://github.com/groeneai)).
* Corrige el error `Logical error: 'Pipeline stuck'` en consultas que usan `enable_sharding_aggregator = 1` junto con `UNION ALL` y un valor de `max_streams_for_union_step` inferior al ancho del pipeline. `BufferedShardByHashTransform` ahora finaliza los puertos de salida con colas vacías en cuanto se agota la entrada y sigue obteniendo datos de entrada cuando un puerto vacío solicitado no tiene nada que drenar, incluso si una cola asociada ha alcanzado el límite de contrapresión. [#106251](https://github.com/ClickHouse/ClickHouse/pull/106251) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un desbordamiento de enteros con signo cuando un ajuste de tiempo de espera, como `interactive_delay`, se establecía en un valor muy grande: la espera podía agotar el tiempo de espera inmediatamente en lugar de esperar, y el servidor podía abortar bajo el sanitizador de comportamiento indefinido. [#106961](https://github.com/ClickHouse/ClickHouse/pull/106961) ([Groene AI](https://github.com/groeneai)).
* Ahora se rechaza con un error claro la exportación al formato `Arrow` de valores `Time`/`Time64` fuera de un intervalo de hora del día válido (negativos o `>= 24h`), en lugar de escribir datos `time32`/`time64` de Arrow no válidos. [#107179](https://github.com/ClickHouse/ClickHouse/pull/107179) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige resultados incorrectos de `GROUP BY` en una tabla `Distributed` con columnas `ALIAS` duplicadas que se expanden a la misma expresión (p. ej., dos columnas definidas como `toString(x)`) con agregación distribuida de dos niveles o eficiente en memoria. Las claves duplicadas se contraían en una sola en los segmentos, pero se fusionaban usando el conjunto completo de claves en el iniciador; por ello, con la agregación de dos niveles, grupos iguales de distintos segmentos acababan en cubos diferentes y no se fusionaban, devolviendo un grupo por segmento con un `count()` dividido. [#108855](https://github.com/ClickHouse/ClickHouse/pull/108855) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error espurio de `Inconsistent AST formatting` para `ALTER TABLE ... MOVE PART ... TO SHARD '<path>'`. El formateador de consultas eliminaba la palabra clave `SHARD`, por lo que la consulta reformateada no podía volver a analizarse y generaba un `LOGICAL_ERROR` (una excepción controlada en las compilaciones de lanzamiento y un aborto en las compilaciones de depuración y con sanitizadores). [#109060](https://github.com/ClickHouse/ClickHouse/pull/109060) ([Groene AI](https://github.com/groeneai)).
* Rechaza desplazamientos no monotónicos de `Array` en todas las rutas de lectura que los decodifican como valores absolutos, en lugar de hacerlo solo en el formato `Native`. Anteriormente, un gránulo de índice de omisión `set` corrupto no se comprobaba y después se leía fuera de los límites. [#109212](https://github.com/ClickHouse/ClickHouse/pull/109212) ([Groene AI](https://github.com/groeneai)).
* `JSONExtract` ahora respeta `cast_string_to_date_time_mode` al convertir valores JSON de cadena a `DateTime`/`DateTime64`, de forma coherente con `CAST`. Cierra [#109126](https://github.com/ClickHouse/ClickHouse/issues/109126). [#109252](https://github.com/ClickHouse/ClickHouse/pull/109252) ([Utkal Singh](https://github.com/Utkal059)).
* Corrige un posible error lógico "Unexpected substream ... for column ..." al aumentar el ajuste de compatibilidad. [#109496](https://github.com/ClickHouse/ClickHouse/pull/109496) ([Pavel Kruglov](https://github.com/Avogar)).
* Establece el componente de coordinación que faltaba en el cálculo del tamaño de system.detached\_parts. [#109553](https://github.com/ClickHouse/ClickHouse/pull/109553) ([Den Kalantaevskii](https://github.com/Diskein)).
* Se corrigió un problema por el que el tiempo de espera para bloques de las inserciones en streaming (`input_format_max_block_wait_ms`) podía no expirar nunca mientras el perfilador de consultas estuviera activo: el sondeo del descriptor de archivo se reiniciaba con el tiempo de espera completo después de cada señal del perfilador, por lo que una fuente de entrada bloqueada podía retrasar indefinidamente el vaciado del bloque parcial en lugar de vaciarlo al alcanzar el límite de espera. [#109602](https://github.com/ClickHouse/ClickHouse/pull/109602) ([Shaohua Wang](https://github.com/tiandiwonder)).
* El plegado de constantes durante la planificación de consultas ya no ejecuta una función cuyo tipo de argumento difiere del tipo para el que se resolvió durante el análisis. Esta discrepancia solía generar un `LOGICAL_ERROR` al calcular la cabecera de salida, lo que provoca un fallo de aserción en compilaciones de depuración y con sanitizadores. Ahora se omite el plegado y una consulta realmente no válida sigue notificando un error recuperable `ILLEGAL_TYPE_OF_ARGUMENT` a través de la ruta de ejecución normal. [#109747](https://github.com/ClickHouse/ClickHouse/pull/109747) ([Groene AI](https://github.com/groeneai)).
* Corrige una mutación que hace referencia a la columna virtual `_sample_factor` y fallaba a mitad de ejecución con `Unexpected const virtual column: _sample_factor`, dejando la mutación bloqueada. Ahora la mutación la lee como `1`, el mismo valor que devuelve una consulta sin `SAMPLE`. [#109813](https://github.com/ClickHouse/ClickHouse/pull/109813) ([Groene AI](https://github.com/groeneai)).
* Corrige tres problemas con `use_constant_folding_in_index_analysis`: un error lógico `Invalid partition key size` que podía abortar un `SELECT` que usaba una proyección normal cuando la tabla establece `part_minmax_index_columns = '`with\_block\_number\_offset`'`; resultados incorrectos (filas descartadas silenciosamente) para un filtro sobre una clave de partición por módulo como `PARTITION BY id % 200`; y un fallo (carrera de dato) al consultar un índice `text` con un tokenizador `sparseGrams` mediante un predicado `LIKE` en muchas particiones con `max_threads > 1`. [#109896](https://github.com/ClickHouse/ClickHouse/pull/109896) ([Groene AI](https://github.com/groeneai)).
* Corrige una carrera de dato (y un fallo poco frecuente) cuando se informa de un error de análisis o de procesamiento al leer una tabla de archivo o almacenamiento de objetos. Un error de análisis generado durante la inicialización diferida de `KeyCondition` se compartía como un único objeto de excepción entre los hilos de lectura, y dos hilos podían añadir simultáneamente `(in file/uri ...)` a su mensaje, provocando una condición de carrera en la cadena del mensaje de excepción. [#109911](https://github.com/ClickHouse/ClickHouse/pull/109911) ([Groene AI](https://github.com/groeneai)).
* Corrige la propagación de ajustes de consulta en `accurateCastOrDefault` y conserva los valores `NULL` de origen codificados por `Dynamic` y `Variant`. Cierra [#109943](https://github.com/ClickHouse/ClickHouse/issues/109943). [#109946](https://github.com/ClickHouse/ClickHouse/pull/109946) ([Pavel Kruglov](https://github.com/Avogar)). [#114912](https://github.com/ClickHouse/ClickHouse/pull/114912) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron resultados incorrectos de `subBitmap`, `bitmapSubsetInRange` y `bitmapSubsetLimit` para bitmaps que aún usaban la representación pequeña, incluidos valores de elementos `UInt64` e `Int64` superiores a `2^32`, que se truncaban a 32 bits. Las comparaciones en funciones de bitmap sobre tipos de elementos con signo ahora usan de forma coherente el valor sin signo del tipo de elemento, por lo que en un bitmap `Int8` el elemento `-1` se compara como `255` en lugar de como `4294967295` con extensión de signo; esto también corrige `bitmapMin`, `bitmapMax`, `bitmapContains` y `bitmapTransform` en bitmaps que han superado la representación pequeña. Deben ajustarse las consultas que pasaban umbrales con extensión de signo: en un bitmap `Int8`, `bitmapSubsetInRange(bm, 4294967168, 4294967296)` pasa a ser `bitmapSubsetInRange(bm, 128, 256)`. También se corrigió que `groupNumericIndexedVector` devolviera resultados distintos para columnas del índice `Int8` e `Int16` que para tipos de índice más amplios, y que `numericIndexedVectorGetValue` devolviera `0` para índices negativos. Se corrigió la documentación de las funciones de bitmap, incluidas las funciones de subconjuntos, que se describían como si usaran indexación basada en 1, y la compatibilidad con `bitmapBuild` / `bitmapToArray` con signo. [#110072](https://github.com/ClickHouse/ClickHouse/pull/110072) ([Rami Darwiche](https://github.com/RamiDarwiche)).
* Se corrige que `optimize_aggregation_in_order` ignorase la cancelación de consultas. `AggregatingInOrderTransform` ahora comprueba la cancelación mientras agrega un fragmento, por lo que una consulta detenida mediante `KILL QUERY` o por `max_execution_time` (con el valor predeterminado `timeout_overflow_mode = 'throw'`) se detiene de inmediato en lugar de procesar todo el fragmento. [#110104](https://github.com/ClickHouse/ClickHouse/pull/110104) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una condición de carrera entre `KILL TRANSACTION` y `ALTER TABLE ... UPDATE/DELETE` ejecutados dentro de una transacción: una reversión producida entre el registro de la mutación en la transacción y su registro en la tabla dejaba una entrada de mutación huérfana, lo que generaba un error lógico (`Cannot find transaction ... that has started mutation ...`) en tareas en segundo plano y bloqueaba todas las mutaciones posteriores de las partes afectadas hasta reiniciar el servidor. [#110226](https://github.com/ClickHouse/ClickHouse/pull/110226) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrige un `LOGICAL_ERROR` (`Left and right columns have same names`) en el optimizador del orden de join que podía activarse mediante un join separado por comas en una vista de varias tablas cuando `query_plan_merge_expression_into_join` está habilitado. [#110227](https://github.com/ClickHouse/ClickHouse/pull/110227) ([Groene AI](https://github.com/groeneai)).
* La estimación de cardinalidad del orden de join ahora combina las estadísticas de columna de las partes que sobreviven a la poda por partición/PK, en lugar de las de todas las partes activas. Anteriormente, una consulta podada a una partición pequeña se planificaba con estadísticas de toda la tabla (se observó una sobreestimación de 2500 veces del número de filas que invertía el lado de construcción del hash join), y deshabilitar las estadísticas producía, paradójicamente, un plan mejor. También se corrigió que FINAL diferido se deshabilitara silenciosamente para relaciones MergeTree bajo un JOIN porque el resultado memorizado del análisis de índices del optimizador del orden de join se confundía con una proyección aplicada. [#110283](https://github.com/ClickHouse/ClickHouse/pull/110283) ([Sergey Kuznetsov](https://github.com/skuznetsov-clickhouse)).
* Se corrigieron resultados incorrectos de subconsultas escalares correlacionadas cuando la consulta externa tiene valores duplicados para la columna correlacionada y la subconsulta se descorrelaciona mediante la ruta CROSS JOIN. Anteriormente, agregaciones como `count()` y `sum()` se multiplicaban por el número de duplicados. Esto afecta a la funcionalidad experimental `allow_experimental_correlated_subqueries`. [#110311](https://github.com/ClickHouse/ClickHouse/pull/110311) ([Groene AI](https://github.com/groeneai)).
* Se corrige un error lógico (`Function node with name '...' is not resolved as ordinary function`) que podía producirse con `optimize_or_like_chain` habilitado cuando una función de agregación o de ventana aparecía en el lado izquierdo de un `LIKE`/`ILIKE`/`match` dentro de una cadena `OR`. [#110641](https://github.com/ClickHouse/ClickHouse/pull/110641) ([Groene AI](https://github.com/groeneai)).
* Se corrige que un `TTL ... DELETE WHERE <cond>` nunca eliminase filas que pasaban a coincidir con `<cond>` debido a un `ALTER TABLE ... UPDATE` en una columna a la que hace referencia el `WHERE`. La mutación ahora recalcula el TTL de la fila, por lo que las filas expiradas que ahora coinciden se eliminan en lugar de conservarse silenciosamente. [#110648](https://github.com/ClickHouse/ClickHouse/pull/110648) ([Groene AI](https://github.com/groeneai)).
* Se corrige una fuga en la contabilización del seguimiento de memoria: cuando una asignación era rechazada por un memory tracker principal (por ejemplo, el límite de memoria de todo el servidor), los rastreadores de nivel de hilo, consulta y usuario conservaban la cantidad rechazada. El error se acumulaba con el tiempo, inflando `MemoryTracking` y el uso de memoria por consulta y por usuario, y podía provocar errores espurios `MEMORY_LIMIT_EXCEEDED`. [#110784](https://github.com/ClickHouse/ClickHouse/pull/110784) ([Seva Potapov](https://github.com/seva-potapov)).
* Se corrigió la serialización WKB no canónica de un polígono vacío: `wkb(POLYGON EMPTY)` ahora emite `numRings = 0` en lugar de un anillo espurio de cero puntos, por lo que un recorrido de ida y vuelta en WKB de un polígono vacío estándar preserva su identidad. [#110796](https://github.com/ClickHouse/ClickHouse/pull/110796) ([Groene AI](https://github.com/groeneai)).
* Corrige un caso al usar alias de columnas de CTE con consultas `INTERSECT` o `EXCEPT`, p. ej., `WITH t (a, b) AS (SELECT 1, 2 INTERSECT SELECT 1, 2) SELECT a, b FROM t`, en el que la consulta fallaba con el error UNKNOWN\_IDENTIFIER. Cierra [#104770](https://github.com/ClickHouse/ClickHouse/issues/104770). [#110885](https://github.com/ClickHouse/ClickHouse/pull/110885) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigió un `std::length_error` (`LOGICAL_ERROR`) al leer una tabla MergeTree con un valor problemático de `max_streams_for_merge_tree_reading` (cercano al máximo de `UInt64`) junto con `allow_asynchronous_read_from_io_pool_for_merge_tree = 1`. La configuración ahora se limita al mismo máximo que `max_threads`. [#110936](https://github.com/ClickHouse/ClickHouse/pull/110936) ([Groene AI](https://github.com/groeneai)).
* Corrige un fallo (desreferenciación de puntero nulo durante el análisis de consultas) cuando se llama a `getSubcolumn` en un argumento `JSON` con un nombre interno de subcolumna de indicación de tipo, es decir, uno que comienza con un marcador de tipo de acento grave. [#110940](https://github.com/ClickHouse/ClickHouse/pull/110940) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `Nested type LineString cannot be inside Nullable type (ILLEGAL_TYPE_OF_ARGUMENT)` al leer una columna espacial nullable de MySQL (`LINESTRING`, `POLYGON`, `MULTILINESTRING`, `MULTIPOLYGON`, `MULTIPOINT` o el tipo genérico `GEOMETRY`) mediante la función de tabla `mysql` o los motores de tabla/base de datos `MySQL`. Estas columnas ahora usan `Nullable(String)`, que contiene el valor tal como lo devuelve MySQL (un prefijo SRID de 4 bytes seguido de la carga útil WKB). `POINT` mantiene la asignación a `Nullable(Point)`. [#110943](https://github.com/ClickHouse/ClickHouse/pull/110943) ([Groene AI](https://github.com/groeneai)).
* Corrige la serialización `Native` de envolturas `SimpleAggregateFunction` que contienen estados de agregación versionados para pares antiguos. [#110997](https://github.com/ClickHouse/ClickHouse/pull/110997) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR: ReadBuffer is canceled. Can't read from it.` que podía producirse en una unión `grace_hash` cuando la lectura de bloques volcados fallaba a mitad de la operación mientras varios hilos compartían el lector. [#111056](https://github.com/ClickHouse/ClickHouse/pull/111056) ([Groene AI](https://github.com/groeneai)).
* Cada clave SSH ahora cuenta individualmente para el límite `max_authentication_methods_per_user`, por lo que este se aplica de forma coherente independientemente de la sintaxis. Antes, varias claves en un único método `ssh_key` contaban como una. [#111181](https://github.com/ClickHouse/ClickHouse/pull/111181) ([Yecine Megdiche](https://github.com/TheMC47)).
* Corrige un `LOGICAL_ERROR` (`Reading from materialized CTE '...' before its materialization completed - DelayedPortsProcessor gate is missing in the query plan`) cuando se lee una CTE materializada reutilizada (`enable_materialized_cte`) en una rama cuya salida de `WITH TOTALS` o `extremes` se descarta, incluidos los casos de agregación externa, `INSERT ... SELECT`, operaciones de conjuntos y `EXPLAIN ANALYZE`. [#111194](https://github.com/ClickHouse/ClickHouse/pull/111194) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `map[key]` devolviera el valor de una clave duplicada posterior en lugar del de la primera. Cuando una columna `Map` contenía claves duplicadas, el resultado de `map[key]` podía depender de las filas anteriores del mismo bloque y de la configuración `optimize_functions_to_subcolumns`, por lo que un `SELECT` y un `WHERE` sobre la misma fila podían no coincidir. [#111246](https://github.com/ClickHouse/ClickHouse/pull/111246) ([Groene AI](https://github.com/groeneai)).
* Corrige un error lógico `!rhs_literal->getValue().isNull()` en el optimizador de expresiones lógicas cuando una cadena de condiciones `AND` compara una columna con una constante de valor NULL de tipo no `Nullable` (por ejemplo, un `Variant` de valor NULL) con `use_variant_default_implementation_for_comparisons = 0`. [#111292](https://github.com/ClickHouse/ClickHouse/pull/111292) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron errores `NOT_FOUND_COLUMN_IN_BLOCK` / `THERE_IS_NO_COLUMN` (y, en algunas versiones, resultados incorrectos sin que se notificara ningún error) en un `RIGHT JOIN` cuando se configura `parallel_replicas_min_number_of_rows_per_replica` y se proyecta una columna de la tabla izquierda. [#111332](https://github.com/ClickHouse/ClickHouse/pull/111332) ([Groene AI](https://github.com/groeneai)).
* `RESTORE` ahora ejecuta fsync en los archivos de las partes restauradas cuando la tabla de destino tiene habilitado `fsync_after_insert`, por lo que una parte restaurada es tan resistente a pérdidas de energía como una parte insertada. Anteriormente, los archivos restaurados solo se escribían y cerraban (sin ejecutar fsync), por lo que una pérdida de energía justo después de que `RESTORE` devolviera `RESTORED` podía dejar las partes dañadas y la tabla vacía. [#111378](https://github.com/ClickHouse/ClickHouse/pull/111378) ([Groene AI](https://github.com/groeneai)).
* Corrige una infrecuente ventana de pérdida de datos de Keeper en discos de snapshots locales: la ruta de escritura de snapshots ahora ejecuta fsync en el directorio de snapshots tras eliminar el marcador `tmp_`, por lo que una pérdida de energía ya no puede eliminar el marcador y conservar el contenido del snapshot. Anteriormente, un fallo de este tipo hacía que Keeper tratara un snapshot correcto y completamente sincronizado como incompleto y lo eliminara al reiniciarse, con la consiguiente pérdida de escrituras confirmadas incluso con `force_sync=true`. No se incluyen los discos de snapshots respaldados por almacenamiento de objetos. [#111397](https://github.com/ClickHouse/ClickHouse/pull/111397) ([Groene AI](https://github.com/groeneai)).
* Corrige una lectura fuera de límites (en versiones de lanzamiento) / error lógico (en depuración) en la optimización de materialización diferida, y un error lógico en `Pipe::unitePipes` para tablas `Merge`, cuando la optimización de lectura directa desde el índice de texto deja una columna virtual de índice sin usar en la cabecera de lectura de una tabla `MergeTree` con varios índices `text`. [#111467](https://github.com/ClickHouse/ClickHouse/pull/111467) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que la columna virtual `_time` de las funciones de tabla `url`/`urlCluster` fuera siempre `NULL` en compilaciones basadas en musl debido al análisis no portable de la cabecera HTTP `Last-Modified`. [#111619](https://github.com/ClickHouse/ClickHouse/pull/111619) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se corrigió un `LOGICAL_ERROR` (`Cannot create part with type Compact and storage type Full because table does not support polymorphic parts`) que se generaba cuando una tabla `MergeTree` cargaba una parte `Compact` preexistente mientras su configuración actual deshabilitaba las partes polimórficas (granularidad no adaptativa). Esto podía ocurrir, por ejemplo, cuando una tabla de solo lectura comparte una ruta en disco con otra tabla y recarga sus partes mediante `SYSTEM RESTART DISK` o al iniciar el servidor. En compilaciones de depuración y con sanitizers, la excepción aborta el servidor. [#111626](https://github.com/ClickHouse/ClickHouse/pull/111626) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `CREATE TABLE ... ENGINE = KeeperMap` fallara con `Coordination error: No node, path .../metadata/drop_lock_version` cuando otra tabla en la misma ruta de Keeper se elimina simultáneamente. La creación ahora considera el subárbol de metadatos desaparecido como una limpieza completada y vuelve a intentarlo, como ya hace en la misma situación una instrucción más adelante. [#111966](https://github.com/ClickHouse/ClickHouse/pull/111966) ([Groene AI](https://github.com/groeneai)).
* Corrige una condición de carrera entre una mutación de `ReplicatedMergeTree` y la eliminación de directorios temporales antiguos que podía publicar una parte mutada a la que le faltaban algunos archivos, lo que provocaba fallos al leer esa parte y en todas sus mutaciones posteriores. [#111992](https://github.com/ClickHouse/ClickHouse/pull/111992) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige que `quantileDeterministic`, `quantilesDeterministic` y `medianDeterministic` devolvieran resultados distintos para los mismos datos en cada ejecución cuando la consulta utiliza réplicas paralelas, una tabla distribuida o agregación externa, o cuando los estados se almacenan en una tabla (incluso dentro de un valor `Dynamic`). Los estados escritos antes de esta versión con la notación de tipo sin versión conservan el comportamiento anterior, ya que su diseño no puede cambiar. [#112052](https://github.com/ClickHouse/ClickHouse/pull/112052) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la omisión de `serialize_string_in_memory_with_zero_byte` del plan de consulta serializado. Con `serialize_query_plan = 1`, un clúster que se ejecutaba con esta configuración deshabilitada podía presentar diferencias en la representación de cadenas en memoria entre el iniciador y el nodo que ejecutaba el plan deserializado, porque la configuración se leía durante la deserialización, pero nunca se escribía durante la serialización y, por tanto, siempre tomaba su valor predeterminado en el nodo ejecutor. [#112131](https://github.com/ClickHouse/ClickHouse/pull/112131) ([Groene AI](https://github.com/groeneai)).
* Corrige que un marco de pila se mostrara como `?` en lugar del nombre de su función en mensajes de registro fatales y en la columna `trace_full` de `system.crash_log`. Afectaba a marcos de funciones normales con código atribuido a una cabecera `__functional` de libc++, algo habitual en compilaciones de lanzamiento. [#112152](https://github.com/ClickHouse/ClickHouse/pull/112152) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige casos de filas que faltaban silenciosamente cuando una consulta filtraba con `intDiv(constant, key)` o `divide(constant, key)`. El análisis de la clave primaria y de las particiones informaba una dirección de monotonicidad incorrecta para una constante dividida por una columna clave, por lo que se descartaban los gránulos coincidentes y la consulta devolvía menos filas sin errores. También corrige `intDiv` con un dividendo constante sin signo cuyo bit alto está establecido, deja de indicar monotonicidad cuando un operando `Decimal` hace que la división se calcule con el ancho nativo del decimal y evita que el análisis de claves genere `Cannot compare DB::IPv4 with long` para una consulta válida que divide una constante `IPv4`/`IPv6` por una columna clave. [#112156](https://github.com/ClickHouse/ClickHouse/pull/112156) ([Groene AI](https://github.com/groeneai)).
* Corrige que `DROP TABLE ... SYNC` se bloqueara indefinidamente cuando se había cancelado una consulta sobre `system.replicas` antes de que se procesaran sus solicitudes de estado. [#112164](https://github.com/ClickHouse/ClickHouse/pull/112164) ([Nikolay Degterinsky](https://github.com/evillique)).
* Corrige un aborto del servidor (`SIGABRT`) cuando una UDF de WebAssembly `BUFFERED_V1` devuelve un búfer de resultados vacío; ahora la consulta falla con un `WASM_ERROR` capturable y el servidor permanece activo. [#112182](https://github.com/ClickHouse/ClickHouse/pull/112182) ([Nikolai Ovchinnikov](https://github.com/kolsha)).
* Corrige un uso de memoria después de liberarla cuando un `JOIN` con `join_algorithm = 'direct'` sobre un diccionario recibía una clave de unión almacenada con serialización dispersa. `getColumnVectorData` devolvía una referencia a una columna temporal, por lo que la búsqueda en el diccionario leía memoria liberada: las compilaciones de lanzamiento podían devolver resultados incorrectos y las compilaciones de depuración o con sanitizador se abortaban. [#112327](https://github.com/ClickHouse/ClickHouse/pull/112327) ([Groene AI](https://github.com/groeneai)).
* Corrige casos en los que no se aplicaba la política de filas a las proyecciones de MergeTree durante la ejecución de consultas. [#112329](https://github.com/ClickHouse/ClickHouse/pull/112329) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigió la corrupción de datos al insertar en una tabla Iceberg a la que se accede mediante una `MATERIALIZED VIEW`. El archivo de datos se escribía conforme a los tipos de columna del destino en el momento de `CREATE`, en lugar de a su esquema Iceberg actual, por lo que un valor `DateTime` se almacenaba como un `int` Avro sin formato y se leía como microsegundos; con `DateTime64(0)` o `DateTime64(9)`, el archivo ni siquiera podía volver a leerse. Como consecuencia, `INSERT INTO <materialized view>` en un destino cuyo esquema Iceberg tiene más columnas que las declaradas en la vista ahora genera `TYPE_MISMATCH` en lugar de escribir una fila corrupta. [#112359](https://github.com/ClickHouse/ClickHouse/pull/112359) ([Groene AI](https://github.com/groeneai)).
* Keeper ya no rechaza una solicitud `Set` con datos vacíos cuando supera `max_memory_usage_soft_limit`. Dicha solicitud no puede aumentar la cantidad de datos almacenados, y rechazarla impedía que los clientes restablecieran su sesión, lo que podía mantener las tablas en modo de solo lectura durante todo un evento de memoria de Keeper. [#112386](https://github.com/ClickHouse/ClickHouse/pull/112386) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió un problema por el que un follower de Keeper podía quedar fuera del quórum durante mucho tiempo y provocar errores masivos de `Session expired` después de instalar correctamente un snapshot grande: el líder descartaba el acknowledgement del follower cuando la aplicación del snapshot tardaba más que el tiempo de espera de instalación y, a continuación, retrocedía el índice de log de ese follower una entrada por cada viaje de ida y vuelta. También se añadió la configuración de Keeper `nuraft_snapshot_sync_ctx_timeout_ms` para controlar este tiempo de espera, que antes solo podía modificarse mediante `raft_limits_response_limit` y, por tanto, no sin ralentizar también la detección de pares inactivos. [#112405](https://github.com/ClickHouse/ClickHouse/pull/112405) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigieron carreras de datos en los eventos de perfil y el rastreador de memoria. [#112466](https://github.com/ClickHouse/ClickHouse/pull/112466) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrección de un error relacionado con la seguridad. [#112479](https://github.com/ClickHouse/ClickHouse/pull/112479) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrige la lectura de un índice secundario de omisión obsoleto después de un cambio de tipo mediante `ALTER TABLE ... MODIFY COLUMN` cuya mutación nunca se ejecutó, por ejemplo, porque `KILL MUTATION` la eliminó: los gránulos en disco se escribieron con el tipo anterior, pero se decodificaron con el nuevo, lo que generaba `LOGICAL_ERROR`, solicitaba asignaciones de varios exabytes o devolvía silenciosamente resultados incorrectos. También se corrige un resultado incorrecto de un índice sobre una expresión cuyo significado cambia aunque todos los bytes almacenados permanezcan idénticos, por lo que no se crea ninguna mutación: un `MODIFY COLUMN` que cambia únicamente la zona horaria de `DateTime`, o solo un nombre de tipo personalizado, como de `UInt8` a `Bool`. Este índice ahora se omite para la parte afectada. Cierra [#112213](https://github.com/ClickHouse/ClickHouse/issues/112213). [#112484](https://github.com/ClickHouse/ClickHouse/pull/112484) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un bloqueo al leer un archivo Parquet con metadatos incoherentes de filtro bloom. Estos archivos también podían devolver silenciosamente menos filas de las debidas. [#112498](https://github.com/ClickHouse/ClickHouse/pull/112498) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrige la carrera de datos en readBigAt de AsynchronousBoundedReadBuffer. Cierra [#109678](https://github.com/ClickHouse/ClickHouse/issues/109678). [#112573](https://github.com/ClickHouse/ClickHouse/pull/112573) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrige que una lista de alias de columnas como `(SELECT 1) AS t(x)` o `WITH t(x) AS (SELECT 1)` no fuera visible dentro de la función de tabla `view`, donde una referencia a `t.x` fallaba con `UNKNOWN_IDENTIFIER` aunque la misma construcción funciona fuera de `view`. [#112690](https://github.com/ClickHouse/ClickHouse/pull/112690) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el error lógico `SortingAggregatedTransform already got bucket with number N` que podía producirse en consultas `GROUP BY` distribuidas de varias capas que utilizan agregación de dos niveles. [#112794](https://github.com/ClickHouse/ClickHouse/pull/112794) ([Nikita Taranov](https://github.com/nickitat)).
* Se corrigió el problema por el que una tabla `NATS` con `nats_stream` configurado dejaba de consumir silenciosamente tras reiniciar el servidor NATS. La suscripción `JetStream` ahora se restablece automáticamente, sin necesidad de ejecutar `DETACH TABLE` y `ATTACH TABLE`. [#112828](https://github.com/ClickHouse/ClickHouse/pull/112828) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error transitorio de Azure Blob Storage en la ruta de lectura o fusión —un `403 Forbidden` debido a la propagación de permisos RBAC, un fallo de autenticación de credenciales o un tiempo de espera de conexión que se mostraba como `408`— que se clasificaba erróneamente como no reintentable y se notificaba como `POTENTIALLY_BROKEN_DATA_PART` (código 740), lo que generaba una alerta crítica falsa para una parte en buen estado. Estos fallos transitorios ahora se consideran reintentables, y un fallo realmente persistente se muestra como un error normal de Azure en lugar de una parte de datos dañada inexistente. [#112871](https://github.com/ClickHouse/ClickHouse/pull/112871) ([Arsen Muk](https://github.com/arsenmuk)).
* Se corrigió el problema por el que la eliminación por lotes de objetos de Azure no registraba eventos Delete en `system.blob_storage_log` cuando fallaba la propia solicitud por lotes, dejando todo el lote sin registrar. Ahora se registra un evento Delete para cada objeto si se produce un fallo a nivel de lote. [#112873](https://github.com/ClickHouse/ClickHouse/pull/112873) ([Arsen Muk](https://github.com/arsenmuk)).
* Se corrigió la pérdida del índice MinMax por parte sobre `_block_number` y `_block_offset` tras recargar una tabla cuando la parte se generaba mediante una mutación que no reescribe la parte completa. [#112878](https://github.com/ClickHouse/ClickHouse/pull/112878) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron un error lógico y resultados incorrectos cuando una condición `JOIN ON` no equi que se evalúa durante el join contiene `arrayJoin`. Un join `hash`, `parallel_hash` o `grace_hash` ahora rechaza esa condición con `INVALID_JOIN_ON_EXPRESSION`. Cuando la expansión depende de un solo lado, muévala a un `ARRAY JOIN` en una subconsulta antes del join; una condición cuyo argumento de `arrayJoin` lee columnas de ambos lados debe reestructurarse. [#112889](https://github.com/ClickHouse/ClickHouse/pull/112889) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron resultados incorrectos de `ORDER BY` al leer de una tabla `Merge` sobre tablas `Distributed`: las filas podían devolverse desordenadas y podían faltar filas que debían incluirse en el resultado cuando se utilizaba `LIMIT`. [#112931](https://github.com/ClickHouse/ClickHouse/pull/112931) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió el problema por el que una constante `Bool` situada a la derecha de `IN` se convertía al tipo `String` del lado izquierdo como `'1'`/`'0'`, en lugar de los valores canónicos `'true'`/`'false'` (ahora es coherente con `CAST` y la función de tabla `values`). [#113051](https://github.com/ClickHouse/ClickHouse/pull/113051) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Se corrigió la columna `views` de `query_log` para las inserciones en una tabla `Alias` cuyo destino activa vistas materializadas, que siempre estaba vacía. [#113076](https://github.com/ClickHouse/ClickHouse/pull/113076) ([Enric Calabuig](https://github.com/eclbg)).
* Se corrigió `LOGICAL_ERROR` al leer una tabla con un índice de omisión `set` definido sobre una expresión cuando la consulta repite esa expresión con un operando `Nullable`, por ejemplo, `WHERE intDiv(id, (SELECT 1000)) = 3` sobre `INDEX b_set intDiv(id, 1000) TYPE set(100)`. Basta una subconsulta escalar para desencadenarlo, ya que se tipa como `Nullable`. [#113244](https://github.com/ClickHouse/ClickHouse/pull/113244) ([George Larionov](https://github.com/george-larionov)).
* Corrige un error lógico (excepción) `Chunk info was not set for chunk in MergingAggregatedTransform` cuando está habilitada la configuración `inject_random_order_for_select_without_order_by` y una consulta de agregación lee de una tabla `Merge` que contiene una tabla secundaria `Distributed`: el envoltorio aleatorio `ORDER BY rand()` ya no se inyecta en consultas planificadas únicamente hasta una etapa intermedia. [#113266](https://github.com/ClickHouse/ClickHouse/pull/113266) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un bloqueo durante la optimización del plan de consulta cuando una cláusula `WHERE` contiene una constante de cadena grande con muchos puntos y la tabla tiene un índice de omisión `bloom_filter`, `tokenbf_v1`, `ngrambf_v1` o `text`. Al comparar el nombre de una columna de filtro con las columnas de índice `JSONAllPaths(...)`, se enumeraban todas las divisiones del nombre por puntos, lo que hacía que la creación de condiciones para el índice de omisión tuviera una complejidad cuadrática respecto a la longitud de la constante. Cierra [#113003](https://github.com/ClickHouse/ClickHouse/issues/113003). [#113289](https://github.com/ClickHouse/ClickHouse/pull/113289) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `ATTACH` de una tabla `Kafka` cuando `kafka_num_consumers` supera el límite derivado del número de núcleos de CPU. [#113390](https://github.com/ClickHouse/ClickHouse/pull/113390) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se corrigieron un bloqueo permanente de `DROP TABLE` y una fuga de memoria después de que fallara una consulta que usaba una CTE materializada. La tabla permanecía atascada en la cola de eliminación hasta que se reiniciaba el servidor. [#113397](https://github.com/ClickHouse/ClickHouse/pull/113397) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige un error lógico `IDENTIFIER is not a table expression` cuando se usa una función de tabla de la familia remote con un argumento `view(...)` en el lado izquierdo de un `JOIN ... USING` cuya clave es un alias de la lista `SELECT`, con `analyzer_compatibility_join_using_top_level_identifier = 1`. [#113400](https://github.com/ClickHouse/ClickHouse/pull/113400) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la lectura de tablas Paimon particionadas por una columna `TIMESTAMP` con una precisión superior a milisegundos, que fallaba con `scale 6 is not supported, only support scale <= 3`. Cierra [#112768](https://github.com/ClickHouse/ClickHouse/issues/112768). [#113401](https://github.com/ClickHouse/ClickHouse/pull/113401) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Corrige un fallo de segmentación y un `LOGICAL_ERROR` (`No host found for exchange stream final_result__0_0`) cuando una subconsulta establece `distributed_plan_execute_locally` en su propia cláusula `SETTINGS` con `make_distributed_plan`. El plan distribuido y el código que lo ejecuta leían la configuración desde dos contextos diferentes y podían no coincidir, por lo que el iniciador construía una canalización contradictoria. [#113422](https://github.com/ClickHouse/ClickHouse/pull/113422) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la lectura de tablas Paimon que contienen una columna `ARRAY` o `MAP` anulable. Estas tablas no podían leerse en absoluto, porque el asignador de esquemas envolvía el tipo compuesto en `Nullable`, lo que ClickHouse prohíbe; por ello, tanto `DESC` como `SELECT` fallaban con `Nested type Array(Nullable(Int32)) cannot be inside Nullable type`. Ahora, una columna compuesta anulable se asigna a un tipo compuesto no `Nullable` y un valor `NULL` se lee como uno vacío. Cierra [#113337](https://github.com/ClickHouse/ClickHouse/issues/113337). [#113450](https://github.com/ClickHouse/ClickHouse/pull/113450) ([Groene AI](https://github.com/groeneai)).
* Corrige la poda de partes y gránulos para una condición `JOIN ON` que incluye columnas constantes del otro lado. [#113484](https://github.com/ClickHouse/ClickHouse/pull/113484) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se dejó de escribir una parte cuyo diseño `Map` contradice sus propios metadatos para un valor `Map` dentro de una columna `Dynamic`. Las tablas que solo diferían en `map_serialization_version` compartían un objeto de serialización en caché, por lo que una parte podía adoptar el diseño `Map` `basic` mientras sus metadatos declaraban `with_buckets`, y su lectura posterior fallaba con `LOGICAL_ERROR: Stream ...buckets_info ... is not found`. Las partes que una versión anterior ya escribió de esta forma siguen siendo ilegibles y deben eliminarse. [#113514](https://github.com/ClickHouse/ClickHouse/pull/113514) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que el tipo de columna inferido dependiera del orden de las consultas anteriores para una fuente cuyo esquema está en caché. Las configuraciones que modifican un tipo inferido no se incluían en la clave de caché de inferencia de esquema, por lo que el valor de la primera consulta determinaba el tipo que verían todas las consultas posteriores: `input_format_try_infer_exponent_floats`, `max_parser_depth`, `input_format_json_infer_array_of_dynamic_from_array_of_different_types` y, para `Parquet`, también `input_format_parquet_local_time_as_utc`, `input_format_parquet_allow_geoparquet_parser`, `input_format_parquet_skip_columns_with_unsupported_types_in_schema_inference` y `schema_inference_make_json_columns_nullable`. También se registra el getter de clave de caché que faltaba para `Form` y se hace que el getter de `Template` use la regla de escape de su propio formato de fila. [#113533](https://github.com/ClickHouse/ClickHouse/pull/113533) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una condición de carrera teórica en los eventos de perfil al usar la configuración `trace_profile_events_list` para escribir trazas de pila de determinados eventos de perfil en `system.trace_log`. [#113553](https://github.com/ClickHouse/ClickHouse/pull/113553) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrigió que `RENAME DATABASE` aceptara un nombre de destino lo suficientemente largo como para imposibilitar la eliminación de las tablas de la base de datos. La comprobación de longitud del nombre de tabla ahora se ejecuta independientemente de `check_table_dependencies` y también cubre las tablas desconectadas, que nunca se comprobaban y, por tanto, se veían afectadas incluso con la configuración predeterminada. Cierra [#101747](https://github.com/ClickHouse/ClickHouse/issues/101747). [#113557](https://github.com/ClickHouse/ClickHouse/pull/113557) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el error `LOGICAL_ERROR` `Reading from materialized CTE '...' before its materialization completed - DelayedPortsProcessor gate is missing in the query plan`, que se producía cuando una tabla `Merge` con más de un elemento hijo leía una CTE materializada a la que hacía referencia la consulta externa. [#113558](https://github.com/ClickHouse/ClickHouse/pull/113558) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que una política de fila que contiene una subconsulta escalar se evaluara una sola vez y luego se reutilizara indefinidamente tras leer la tabla mediante una tabla `Merge`. La condición de política analizada se almacena en caché y se comparte entre todas las consultas; al leerla mediante `Merge`, la expresión almacenada en caché se reescribía in situ, lo que también provocaba una condición de carrera entre consultas simultáneas que usaban la misma política. [#113563](https://github.com/ClickHouse/ClickHouse/pull/113563) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió `Unsupported JOIN keys of type keys256 in StorageJoin` al leer una tabla con motor `Join` cuya clave es compuesta (varias columnas) o un único valor de 16/32 bytes, como `UUID`, `Int256` o `FixedString(4)`. Era posible crear esta tabla, escribir en ella y usarla en un join, pero no volver a leerla con `SELECT`. Cierra [#74362](https://github.com/ClickHouse/ClickHouse/issues/74362) y [#77394](https://github.com/ClickHouse/ClickHouse/issues/77394). [#113578](https://github.com/ClickHouse/ClickHouse/pull/113578) ([Groene AI](https://github.com/groeneai)).
* En la UI web, abrir un enlace con `run=1` ya no provoca que las URL de otras pestañas ejecuten automáticamente sus consultas en la siguiente recarga de la página. [#113595](https://github.com/ClickHouse/ClickHouse/pull/113595) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error lógico al comparar arrays cuyo tipo de elemento es `Nothing`. [#113609](https://github.com/ClickHouse/ClickHouse/pull/113609) ([Groene AI](https://github.com/groeneai)).
* Las copias de seguridad ahora notifican el error subyacente de acceso al archivo de bloqueo, en lugar de indicar incorrectamente una copia de seguridad simultánea cuando el almacenamiento de destino no puede leer el archivo .lock. [#113637](https://github.com/ClickHouse/ClickHouse/pull/113637) ([Kirill Shokhin](https://github.com/kirillshokhin)).
* Corrige un error lógico `Sending a distributed query with unknown (zero) client version` cuando se adjunta una tabla `Distributed` sin estructura sobre un segmento remoto o se carga a partir de metadatos escritos por una versión anterior del servidor. [#113675](https://github.com/ClickHouse/ClickHouse/pull/113675) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Trata un byte NUL como un literal normal en los patrones de match(). [#113690](https://github.com/ClickHouse/ClickHouse/pull/113690) ([Vitaly Baranov](https://github.com/vitlibar)).
* Corrige que `theilsU` sobre un marco de ventana devolviera un valor arbitrario en lugar de 0 cuando el primer argumento es constante dentro del marco. [#113691](https://github.com/ClickHouse/ClickHouse/pull/113691) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige `Logical error: Duplicate announcement received for replica number N` cuando las réplicas paralelas automáticas (`automatic_parallel_replicas_mode`) adoptan un plan cuya variante de nodo único se segmentó mediante `query_plan_join_shard_by_pk_ranges`. [#113730](https://github.com/ClickHouse/ClickHouse/pull/113730) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige `CANNOT_CONVERT_TYPE` y una excepción en `GroupingAggregatedTransform` al leer una tabla `Merge` con una tabla `Distributed` como elemento secundario en réplicas paralelas con clave personalizada (`parallel_replicas_mode = '`custom\_key\_sampling`'` o `'custom_key_range'`). Cierra [#113741](https://github.com/ClickHouse/ClickHouse/issues/113741). [#113742](https://github.com/ClickHouse/ClickHouse/pull/113742) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un `LOGICAL_ERROR` cuando un `SELECT` usaba el modificador `STREAM` en una tabla con nombre junto con réplicas paralelas en modo de tareas de lectura. Con una CTE materializada utilizada como conjunto `IN` en `PREWHERE`, el servidor generaba `Reading from materialized CTE ... DelayedPortsProcessor gate is missing in the query plan` (un aborto del servidor en compilaciones de depuración y con sanitizador). Las tablas con `STREAM` ahora se rechazan cuando se solicitan réplicas paralelas: con `enable_parallel_replicas = 2`, la consulta falla con `SUPPORT_IS_DISABLED`; con `1`, se ejecuta sin ellas, exactamente como ya ocurre con `FINAL`. [#113754](https://github.com/ClickHouse/ClickHouse/pull/113754) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo del servidor al realizar un join con una expresión `ON` constante contra un lado derecho que contiene un `ARRAY JOIN`. Al leer de forma diferida una columna replicada del lado derecho se utilizaba un `ColumnReplicated` ya liberado. Cierra [#113859](https://github.com/ClickHouse/ClickHouse/issues/113859). [#113901](https://github.com/ClickHouse/ClickHouse/pull/113901) ([Groene AI](https://github.com/groeneai)).
* Corrige comportamientos indefinidos y resultados incorrectos en `avg` sobre `Date`/`DateTime`/`DateTime64`/`Time`/`Time64`: el promedio ahora se calcula con exactitud en el espacio de enteros, lo que corrige tanto el desbordamiento en el límite de `Int64` (UB y resultados incorrectos en x86) como la pérdida de precisión de `Float64` por encima de 2^53 (visible a escala de nanosegundos). [#113912](https://github.com/ClickHouse/ClickHouse/pull/113912) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige resultados incorrectos en `JOIN` con `join_algorithm = 'partial_merge'` cuando el lado derecho incluye totales: podía quedar sin combinar, por lo que los joins `LEFT` sustituían las coincidencias reales por valores predeterminados y los joins `INNER`/`RIGHT` no devolvían ninguna fila. En la ruta no unida de `RIGHT`/`FULL`, el mismo estado desreferenciaba un puntero nulo, lo que provocaba un fallo del servidor. [#113936](https://github.com/ClickHouse/ClickHouse/pull/113936) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un defecto en las integraciones de `MySQL` que permitía sobrescribir una credencial TLS de una colección con nombre con un valor vacío de `ssl_ca_pem`/`ssl_cert_pem`/`ssl_key_pem` cuando la colección almacenaba la credencial en formato de contenido, descartando silenciosamente la CA o el certificado de cliente configurado en lugar de rechazar la sobrescritura. [#113947](https://github.com/ClickHouse/ClickHouse/pull/113947) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una excepción `std::out_of_range` (`Logical error: 'std::exception. Code: 1001, type: std::out_of_range'`, que también aborta el servidor en compilaciones de depuración y con sanitizadores) en el lector de Parquet v3 cuando una columna necesaria únicamente para evaluar filtros se programaba para decodificarse después de que su ranura de salida ya se hubiera descartado. [#113956](https://github.com/ClickHouse/ClickHouse/pull/113956) ([Groene AI](https://github.com/groeneai)).
* Corrige un error lógico (`Unexpected return type`) al hacer pushdown al almacenamiento de un filtro sobre una vista cuyo tipo de columna difiere del almacenamiento subyacente (por ejemplo, `information_schema.tables`, donde `engine` es `Nullable(String)`, sobre `system.tables`, donde es `String`). [#113984](https://github.com/ClickHouse/ClickHouse/pull/113984) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige que ClickHouse Keeper se negara a iniciarse con `CORRUPTED_DATA` después de un bloqueo durante el truncamiento entre segmentos del registro de Raft (`writeAt`), lo que podía dejar una entrada de registro confirmada aislada tras segmentos obsoletos del registro de cambios. [#114003](https://github.com/ClickHouse/ClickHouse/pull/114003) ([Nishant Agarwal](https://github.com/nishant-uxs)).
* Una tabla o base de datos cuyo nombre se sustituya en una ruta de ZooKeeper de `ReplicatedMergeTree` mediante la macro `{database}` o `{table}` ahora se rechaza si el nombre no constituye un único componente de ruta seguro. Anteriormente, un nombre que contenía `/` se insertaba sin escape, por lo que la tabla registraba sus znodes dentro del subárbol de Keeper de otra tabla y dañaba permanentemente `ALTER` y `OPTIMIZE` allí. También se rechazan los componentes `.` y `..`, los caracteres de control y la sintaxis de macros. Las tablas existentes siguen cargándose y adjuntándose. [#114006](https://github.com/ClickHouse/ClickHouse/pull/114006) ([Groene AI](https://github.com/groeneai)).
* Corrige una fuga de memoria con `optimize_aggregation_in_order = 1` cuando la clave de ordenación de la tabla es un prefijo estricto de la clave de `GROUP BY` y se usa una función de agregación cuyo estado ocupa memoria del montón, como `quantileDD`. La memoria del servidor aumenta con cada una de estas consultas hasta reiniciar el servidor. [#114010](https://github.com/ClickHouse/ClickHouse/pull/114010) ([Groene AI](https://github.com/groeneai)).
* Corrige un error lógico cuando un plan de consulta distribuida contiene una función de ventana que produce un estado de función de agregación, por ejemplo, `theilsUState(a, b) OVER (ORDER BY a)` con `make_distributed_plan = 1`. Afecta a las familias `cramersV`, `cramersVBiasCorrected`, `theilsU` y `contingency`. [#114020](https://github.com/ClickHouse/ClickHouse/pull/114020) ([Groene AI](https://github.com/groeneai)).
* Corrige resultados incorrectos para `SELECT DISTINCT` con un `LIMIT` que debe leer toda su entrada: `LIMIT n WITH TIES` descartaba filas empatadas, `exact_rows_before_limit = 1` informaba un valor truncado de `rows_before_limit_at_least` y `GROUP BY ... WITH TOTALS` calculaba la fila de totales a partir de un prefijo del flujo. [#114025](https://github.com/ClickHouse/ClickHouse/pull/114025) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `isProbablePrime` en `UInt128`/`UInt256` ignorara `max_execution_time` y `KILL QUERY`. Un bloque de valores de gran tamaño se ejecutaba hasta completarse dentro de una sola llamada de función, sin ningún punto de cancelación, por lo que una consulta podía seguir ejecutándose durante minutos después de superar su plazo límite. [#114032](https://github.com/ClickHouse/ClickHouse/pull/114032) ([Groene AI](https://github.com/groeneai)).
* Corrige la ausencia de una fila en `system.query_views_log` para una vista materializada que falla mientras se recopilan sus dependencias con `materialized_views_ignore_errors` habilitado. En compilaciones de depuración y con sanitizadores, esto también provocaba que el servidor se abortara con `std::out_of_range` en lugar de registrar la vista. [#114064](https://github.com/ClickHouse/ClickHouse/pull/114064) ([Groene AI](https://github.com/groeneai)).
* Corrige el error `Code: 46. DB::Exception: Unknown function exists. (UNKNOWN_FUNCTION)` que se producía cuando una cláusula `PREWHERE` contiene un predicado `IN (subquery)` y se establece `rewrite_in_to_join = 1` (o `make_distributed_plan = 1`, que lo habilita de forma forzada). La misma consulta con `WHERE` funcionaba correctamente. [#114067](https://github.com/ClickHouse/ClickHouse/pull/114067) ([RohithPariki](https://github.com/RohithPariki)).
* Corrige que `ORDER BY ... LIMIT` devolviera menos filas de las solicitadas, posiblemente ninguna, cuando una política de filas era el único filtro de la consulta y la columna de ordenación tenía un índice de omisión `minmax`. La optimización top-K restringía la lectura antes de aplicar la política de filas. [#114073](https://github.com/ClickHouse/ClickHouse/pull/114073) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige que `hasAny`, `hasAll`, `has`, `indexOf`, `mapContainsKey`, `mapContainsValue` y `mapContains` devolvieran muy pocas filas o fallaran con `TOO_LARGE_STRING_SIZE` al consultar un índice `bloom_filter` con una constante `FixedString`. El índice calculaba el hash de la forma con relleno de la constante, mientras que la función compara la forma sin relleno, por lo que se omitía un gránulo coincidente. [#114089](https://github.com/ClickHouse/ClickHouse/pull/114089) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un `LOGICAL_ERROR` "Not-ready Set is passed as the second argument for function `globalNullIn`" y la pérdida del mensaje de error real de la consulta, que podían producirse cuando la poda de partes mediante estadísticas ejecutaba especulativamente una subconsulta `IN`/`GLOBAL IN` durante el análisis de índices y dicha subconsulta fallaba. [#114121](https://github.com/ClickHouse/ClickHouse/pull/114121) ([Groene AI](https://github.com/groeneai)).
* Respeta la configuración `allow_calculating_subcolumns_sizes_for_merge_tree_reading` en la optimización de PREWHERE. [#114146](https://github.com/ClickHouse/ClickHouse/pull/114146) ([Pavel Kruglov](https://github.com/Avogar)).
* Rechaza un diccionario corrupto o malicioso en el que `lcp` supera el token anterior o `lcp + data_size` se desborda, antes de escribir en el búfer. [#114155](https://github.com/ClickHouse/ClickHouse/pull/114155) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Corrige que `min` y `max` en columnas `DateTime64` devolvieran resultados incorrectos una vez que la agregación se compilaba con JIT y los datos contenían marcas de tiempo anteriores a 1970. `is_signed` no estaba especializado para `DateTime64` y `Time64`, que derivan de `Decimal64`, por lo que el código generado comparaba los recuentos de ticks como enteros sin signo y una marca de tiempo anterior a 1970 obtenía el máximo y no el mínimo. [#114168](https://github.com/ClickHouse/ClickHouse/pull/114168) ([Groene AI](https://github.com/groeneai)).
* Corrige una excepción al leer una tabla `MergeTree` mediante capas de rangos de clave primaria cuando una capa produce una canalización vacía. [#114177](https://github.com/ClickHouse/ClickHouse/pull/114177) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige el código de error notificado para algunas columnas serializadas como `Replicated` malformadas recibidas mediante el protocolo nativo: ahora se rechazan con `INCORRECT_DATA` en lugar de `LOGICAL_ERROR` (que abortaba el servidor en compilaciones de depuración y con sanitizadores). [#114186](https://github.com/ClickHouse/ClickHouse/pull/114186) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió un fallo en `ATTACH PARTITION FROM`, `REPLACE PARTITION`, `MOVE PARTITION TO TABLE` y al añadir una réplica `ReplicatedMergeTree`, que producía `Tables have different ...`, `METADATA_MISMATCH` o `INCOMPATIBLE_COLUMNS` en tablas cuyas definiciones se habían escrito con paréntesis redundantes, como `PARTITION BY (a)`, `ORDER BY (b)`, `INDEX ix (b * c) TYPE minmax`, `PROJECTION p (SELECT (b) ...)`, `CONSTRAINT c CHECK (a > 0)`, `TTL (d + INTERVAL 10 YEAR)` o `DEFAULT (a + 1)`. [#114188](https://github.com/ClickHouse/ClickHouse/pull/114188) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la omisión por parte de `ALP`, `FPC` y `GCD` de su parámetro derivado del tipo en el hash del códec. En una parte compacta, el escritor comparte un flujo comprimido por cada hash de códec distinto, por lo que dos columnas con distinto ancho de valores que usaban el mismo códec entraban en conflicto y compartían un objeto de códec con un ancho incorrecto. Esto rechazaba inserciones válidas con `CANNOT_COMPRESS` cuando los anchos diferían y, de lo contrario, comprimía una de las columnas peor de lo debido. [#114189](https://github.com/ClickHouse/ClickHouse/pull/114189) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `std::out_of_range: map::at: key not found` cuando una expresión de clave de `MergeTree` contiene una llamada a `mortonEncode` o `hilbertEncode` que no es en sí misma una columna de clave, por ejemplo `ORDER BY mortonEncode(hilbertEncode(x, y), x, y)` o `PARTITION BY mortonEncode(x, y) % 4`. [#114233](https://github.com/ClickHouse/ClickHouse/pull/114233) ([Groene AI](https://github.com/groeneai)).
* Se eliminó LIMIT/OFFSET sin modificadores en la consulta de origen para el relleno histórico de vistas de ventana. [#114247](https://github.com/ClickHouse/ClickHouse/pull/114247) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un `LOGICAL_ERROR` en `arrayAutocorrelation` cuando el argumento es un array no vacío cuyo tipo de elemento es `Nothing`, por ejemplo `SELECT arrayAutocorrelation([arrayMax([])])`. Este tipo de argumento ahora se rechaza con `ILLEGAL_COLUMN`. El literal de array vacío `[]` sigue devolviendo `[]`. [#114249](https://github.com/ClickHouse/ClickHouse/pull/114249) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que un servidor Keeper nunca se uniera al clúster cuando `nuraft_use_bg_thread_for_snapshot_io` está habilitado: el lote de registros enviado a un servidor que se estaba uniendo se descartaba silenciosamente, por lo que el cambio de miembros nunca se completaba. [#114275](https://github.com/ClickHouse/ClickHouse/pull/114275) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió la lectura de `XDG_CACHE_HOME` desde `XDG_STATE_HOME`. [#114278](https://github.com/ClickHouse/ClickHouse/pull/114278) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se registró el espacio de nombres de Iceberg en el catálogo antes de escribir los archivos de tabla (necesario para SeaweedFS). [#114285](https://github.com/ClickHouse/ClickHouse/pull/114285) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigieron resultados incoherentes cuando se hacía pushdown de un filtro sobre una columna que no era de clave de la tabla derecha por debajo de un ANY INNER JOIN. [#114313](https://github.com/ClickHouse/ClickHouse/pull/114313) ([Kirill Shokhin](https://github.com/kirillshokhin)).
* Se corrigió el autocompletado de bash con bash-completion 2.12+ (\_comp\_get\_words). [#114339](https://github.com/ClickHouse/ClickHouse/pull/114339) ([Azat Khuzhin](https://github.com/azat)).
* Corrige un fallo al leer una tabla de lago de datos cuyo esquema declara una columna con un nombre vacío. Los metadatos de Iceberg malformados se rechazan con `ICEBERG_SPECIFICATION_VIOLATION`; un esquema proporcionado por un catálogo, Delta Lake o Paimon se rechaza con `AMBIGUOUS_COLUMN_NAME`. La comprobación es incondicional, por lo que una tabla Iceberg que simplemente conserva un esquema histórico sin usar con un nombre de campo vacío también pasa a ser ilegible, en vez de abortar al leer ese esquema. [#114394](https://github.com/ClickHouse/ClickHouse/pull/114394) ([Groene AI](https://github.com/groeneai)).
* Corrige un error por el que un cliente que se conectaba a ClickHouse Keeper durante un cambio de líder de Raft podía permanecer bloqueado durante todo el `session_timeout_ms` (30 segundos de forma predeterminada) antes de que se rechazara la conexión, en vez de rechazarse en cuanto se descartaba la solicitud en curso. Ahora el cliente puede volver a conectarse antes a otra réplica. [#114401](https://github.com/ClickHouse/ClickHouse/pull/114401) ([Groene AI](https://github.com/groeneai)).
* `BACKUP`, `RESTORE` y `ENGINE = Backup` ahora autorizan la ubicación de la copia de seguridad conforme a los privilegios `SOURCES` del usuario, del mismo modo que `s3()`, `file()` y `azureBlobStorage()`. Anteriormente, un usuario con `BACKUP` pero sin `SOURCES` podía escribir una copia de seguridad en cualquier ubicación a la que pudiera acceder el servidor y leerla desde allí. Escribir una copia de seguridad ahora requiere el permiso `WRITE` en el origen del destino (`WRITE ON S3`, `WRITE ON AZURE`, `WRITE ON FILE`), mientras que leerla requiere `READ`; los destinos `Disk(...)` siguen restringidos únicamente por `backups.allowed_disk`. [#114405](https://github.com/ClickHouse/ClickHouse/pull/114405) ([Groene AI](https://github.com/groeneai)).
* Corrige que `CREATE OR REPLACE` dejara una tabla interna `_tmp_replace_*` sin eliminar y que `CREATE OR REPLACE VIEW` fallara con `NOT_IMPLEMENTED` cuando se establece `ignore_drop_queries_probability`. Las operaciones DROP que emite internamente forman parte de una única instrucción de usuario, por lo que la inyección de fallos de DROP ya no se les aplica. [#114420](https://github.com/ClickHouse/ClickHouse/pull/114420) ([Groene AI](https://github.com/groeneai)).
* Corrige un `LOGICAL_ERROR` (`Bad cast from type DB::ASTLiteral to DB::ASTPartition`) y SQL formateado imposible de analizar cuando un comando `ALTER TABLE ... MOVE` deserializado desde un AST JSON (`dialect = clickhouse_json`) emparejaba la forma `PART` con `TO TABLE`, o la forma `PARTITION` con `TO SHARD`. Estas cargas útiles ahora se rechazan con `BAD_ARGUMENTS`. [#114429](https://github.com/ClickHouse/ClickHouse/pull/114429) ([Groene AI](https://github.com/groeneai)).
* No elimina columnas cuando se hace referencia a ellas en las condiciones de filtro `PREWHERE` y `WHERE`, aunque se reescriban como una columna virtual de índice de texto. [#114460](https://github.com/ClickHouse/ClickHouse/pull/114460) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Corrige un error `Not-ready Set is passed as the second argument for function 'in'` cuando se cancela una mutación cuyo predicado contiene `IN (subquery)`, por ejemplo mediante `KILL MUTATION` o `DETACH DATABASE`, mientras aún se está creando el conjunto de la subconsulta. Relacionado: [#107619](https://github.com/ClickHouse/ClickHouse/issues/107619). [#114463](https://github.com/ClickHouse/ClickHouse/pull/114463) ([Groene AI](https://github.com/groeneai)).
* `ALTER TABLE ... DROP COLUMN` de una columna utilizada en la clave de ordenación, primaria o de partición ahora falla con `ALTER_OF_COLUMN_IS_FORBIDDEN` y una explicación, igual que `ALTER TABLE ... CLEAR COLUMN`. Anteriormente, fallaba con el confuso error `UNKNOWN_IDENTIFIER: Missing columns` derivado del recálculo de las expresiones clave. Lo mismo se aplica a eliminar o limpiar un grupo `Nested` completo mediante su prefijo común cuando una columna del grupo se utiliza en una clave; anteriormente, esto podía destruir silenciosamente los datos del grupo o dejar una mutación que nunca termina. Eliminar una columna utilizada únicamente en una expresión `TTL` ahora también indica qué expresión TTL se ve afectada. [#114468](https://github.com/ClickHouse/ClickHouse/pull/114468) ([Maksim Dergousov](https://github.com/m7kss1)).
* Se corrigió la lectura de una columna `Tuple` cuyo primer elemento es `NULL` en los formatos `CustomSeparated`, `Regexp` y `Template` con la regla de escape `CSV`. Un `Tuple` sin envolver ocupa aquí un campo por elemento, por lo que el campo inicial `\N` corresponde a ese elemento y no a toda la columna. Anteriormente se consumía como si fuera toda la columna, desplazando los campos de los elementos restantes a las columnas siguientes, por lo que `CustomSeparated` no podía volver a leer su propia salida. Cierra [#114402](https://github.com/ClickHouse/ClickHouse/issues/114402). [#114471](https://github.com/ClickHouse/ClickHouse/pull/114471) ([Groene AI](https://github.com/groeneai)).
* Corrige que `arrayExists(x -> x = needle, arr)` devolviera un resultado incorrecto o fallara con `TOO_LARGE_STRING_SIZE` cuando el elemento del array y la cadena buscada son de tipos de cadena distintos (por ejemplo, una cadena buscada `String` frente a un elemento `Array(FixedString(N))`). La optimización `optimize_rewrite_array_exists_to_has`, habilitada de forma predeterminada, reescribía dicha llamada como `has`, que no compara valores rellenados con ceros de la misma forma que `=`. [#114496](https://github.com/ClickHouse/ClickHouse/pull/114496) ([Groene AI](https://github.com/groeneai)).
* Leer una tabla Iceberg cuyos metadatos describen una evolución de esquema prohibida por la especificación Iceberg ya no aborta el servidor. Cuatro infracciones de la especificación en `IcebergSchemaProcessor` se notificaban como `LOGICAL_ERROR`, que se trata como una aserción fallida, o llegaban sin comprobar a una aserción fatal; ahora generan `ICEBERG_SPECIFICATION_VIOLATION`. [#114518](https://github.com/ClickHouse/ClickHouse/pull/114518) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que el formato de entrada `Regexp` descartara silenciosamente la parte sin analizar de un campo coincidente, lo que almacenaba un valor truncado o inventado en lugar de informar un error: `v=-1` en `UInt64` se leía como `0`, y `v=2020-01-01junk` en `Date` se leía como `1975-07-14` con la regla `JSON`. Los campos malformados ahora se rechazan con las reglas `Escaped`, `CSV` y `JSON`, de acuerdo con el comportamiento documentado para los formatos correspondientes. Con `Raw`, un campo coincidente que contiene una tabulación ahora se lee completo en lugar de truncarse en la tabulación. [#114520](https://github.com/ClickHouse/ClickHouse/pull/114520) ([Groene AI](https://github.com/groeneai)).
* Corrige `LOGICAL_ERROR` al filtrar una columna Iceberg que `ALTER TABLE ... MODIFY COLUMN` convirtió en `Nullable`. Cierra [#85029](https://github.com/ClickHouse/ClickHouse/issues/85029). [#114521](https://github.com/ClickHouse/ClickHouse/pull/114521) ([Groene AI](https://github.com/groeneai)).
* `CREATE TABLE` y `ALTER TABLE` ahora rechazan códecs con pérdida, como `SZ3`, en columnas utilizadas en la clave de ordenación. [#114531](https://github.com/ClickHouse/ClickHouse/pull/114531) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` al leer una tabla de Delta Lake cuyo `metaData.partitionColumns` nombra una columna que `metaData.schemaString` no declara. Esos metadatos ahora se rechazan con `BAD_ARGUMENTS` en el lector delta-kernel y con `INCORRECT_DATA` en el lector heredado siempre que la tabla o su esquema se lean desde un snapshot, no solo cuando la consulta incluye un predicado. [#114538](https://github.com/ClickHouse/ClickHouse/pull/114538) ([Groene AI](https://github.com/groeneai)).
* Rechaza un Variant cuyas ramas ORC se leen como un único tipo. [#114540](https://github.com/ClickHouse/ClickHouse/pull/114540) ([Groene AI](https://github.com/groeneai)).
* Corrige la evaluación del índice de texto del operador `LIKE/ILIKE` aplicado a contenedores Map o JSON. [#114544](https://github.com/ClickHouse/ClickHouse/pull/114544) ([Elmi Ahmadov](https://github.com/ahmadov)).
* **Compatibilidad con nombres de etiquetas entre comillas en los modificadores de agrupación de PromQL.** [#114545](https://github.com/ClickHouse/ClickHouse/pull/114545) ([Minh Vu](https://github.com/fallintoplace)).
* Corrige literales `Time64` y constantes de listas `IN` incorrectos, a menudo con el signo invertido, generados al reescalar un `Decimal64` de menor escala que desbordaba `Int64`. Esta conversión ahora informa de `DECIMAL_OVERFLOW`, igual que la rama `DateTime64` y el `CAST` explícito. [#114546](https://github.com/ClickHouse/ClickHouse/pull/114546) ([Groene AI](https://github.com/groeneai)).
* **Acepta comas finales en listas de etiquetas de agrupación de PromQL.**. [#114548](https://github.com/ClickHouse/ClickHouse/pull/114548) ([Minh Vu](https://github.com/fallintoplace)).
* Admite nombres de métricas y etiquetas entre comillas en selectores de PromQL. [#114551](https://github.com/ClickHouse/ClickHouse/pull/114551) ([Minh Vu](https://github.com/fallintoplace)).
* Una consulta podía cancelarse hasta 1 ms antes de que transcurriera su `max_execution_time` y fallar con el mensaje contradictorio `Timeout exceeded: elapsed 999.672 ms, maximum: 1000 ms`. [#114559](https://github.com/ClickHouse/ClickHouse/pull/114559) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la lectura de una tabla mientras una mutación está en curso: una columna `MATERIALIZED` podía devolver un valor obsoleto, y seleccionarla junto con una columna actualizada podía provocar un error. [#114561](https://github.com/ClickHouse/ClickHouse/pull/114561) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige que `clickhouse-local` aceptara un `CREATE TABLE` cuyo nombre era demasiado largo para la `--default_database` configurada, lo que producía una tabla que no podía eliminarse. `DatabaseOverlay` ahora comprueba la longitud del nombre de la tabla igual que la base de datos en disco en la que escribe. [#114567](https://github.com/ClickHouse/ClickHouse/pull/114567) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una omisión de RBAC en el motor de tabla `Alias` que permitía a usuarios sin privilegios sobre la tabla de destino revelar su esquema, número de filas, tamaño y existencia. [#114596](https://github.com/ClickHouse/ClickHouse/pull/114596) ([Kai Zhu](https://github.com/nauu)).
* Se corrigió que las estadísticas de tablas hash —y, con ellas, la preasignación de tablas hash para agregación— se deshabilitaran de forma silenciosa y permanente en todo el servidor cuando una consulta que usaba la optimización `FINAL` diferida (`query_plan_optimize_lazy_final`) era la primera agregación en ejecutarse tras el inicio del servidor. [#114597](https://github.com/ClickHouse/ClickHouse/pull/114597) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que una columna renombrada, eliminada y añadida de nuevo en un único `ALTER` devolviera los valores de la columna eliminada en lugar de su propio valor predeterminado mientras la mutación aún estaba pendiente. [#114601](https://github.com/ClickHouse/ClickHouse/pull/114601) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió un bucle infinito que no se podía cancelar en las funciones `hop` y `windowID` cuando la duración, en segundos, de un argumento de intervalo es múltiplo de 2^32 (por ejemplo, `toIntervalDay(2147483648)`): la resta con ajuste evitaba la comprobación de desbordamiento de tiempo y, con argumentos constantes, el bucle se ejecutaba durante el análisis, cuando ni siquiera se podía cancelar la consulta. El mismo intervalo también podía hacer que un hilo en segundo plano de una `WINDOW VIEW` se ejecutara indefinidamente; ahora dicha vista de ventana se rechaza al crearla. [#114607](https://github.com/ClickHouse/ClickHouse/pull/114607) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un error por el que una entidad de acceso con una configuración de valor `Map`, como un perfil de configuración con `http_response_headers` o `additional_table_filters`, se almacenaba en un formato que ClickHouse no podía volver a leer, dejando la entidad permanentemente imposible de cargar tras un reinicio. [#114620](https://github.com/ClickHouse/ClickHouse/pull/114620) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que una vista materializada actualizable dejara sin eliminar su tabla de destino anterior al rotarla cuando `ignore_drop_queries_probability` está habilitado. El `DROP` que emite una actualización para limpiar el destino anterior es un paso de la actualización, no un `DROP` solicitado por el usuario, por lo que la inyección de fallos ya no se le aplica. [#114622](https://github.com/ClickHouse/ClickHouse/pull/114622) ([Groene AI](https://github.com/groeneai)).
* Corrige que `has`, `indexOf`, `countEqual`, `mapContainsKey`, `mapContainsValue` y el operador de subíndice de `Map` devolvieran "not found" para un valor buscado constante de tipo `LowCardinality` igual al valor predeterminado del tipo de elemento, como un `String` vacío o el número cero. [#114624](https://github.com/ClickHouse/ClickHouse/pull/114624) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el error lógico `Multi-block postings must be compressed` en consultas sobre tablas con un índice de texto en modo de aplicación diferida de listas de postings cuando la consulta se cancelaba durante la lectura. [#114636](https://github.com/ClickHouse/ClickHouse/pull/114636) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrigió el formato de un argumento de subconsulta de las funciones de tabla `view` y `viewIfPermitted` cuando la consulta contenedora tiene una cláusula `SETTINGS` al final. Dicha consulta se formateaba como `view((SELECT ...))`, que no puede volver a analizarse, por lo que no superaba la comprobación interna de formato-análisis-formato y generaba `Inconsistent AST formatting`. [#114658](https://github.com/ClickHouse/ClickHouse/pull/114658) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la corrupción de memoria del montón al leer Parquet mediante un formato de entrada que posee su propio búfer de lectura, por ejemplo, un diccionario con `SOURCE(FILE(... format 'Parquet'))`. Las tareas de prelectura y decodificación en segundo plano aún podían leer y escribir mediante el búfer después de que la canalización lo liberara, lo que podía provocar la interrupción del servidor. [#114668](https://github.com/ClickHouse/ClickHouse/pull/114668) ([Groene AI](https://github.com/groeneai)).
* Corrige la lectura de una subcolumna (`.size0`, `.null`, un elemento de tupla, `String.size`) mediante una tabla `Merge` cuando la tabla subyacente declara la columna principal como `ALIAS`. Esta lectura devolvía el valor predeterminado del tipo y, cuando la columna principal se seleccionaba en la misma consulta, podía devolver el valor de una columna no relacionada. [#114673](https://github.com/ClickHouse/ClickHouse/pull/114673) ([Groene AI](https://github.com/groeneai)).
* Corrige que `ANY RIGHT JOIN` y `SEMI RIGHT JOIN` con varias condiciones unidas mediante `OR` en la sección `ON` devolvieran dos veces algunas filas de la tabla derecha y perdieran coincidencias de otras. Un `ANY LEFT JOIN` escrito explícitamente también se veía afectado, porque el planificador puede intercambiar las tablas y ejecutarlo como `ANY RIGHT JOIN`. [#114676](https://github.com/ClickHouse/ClickHouse/pull/114676) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigieron resultados incorrectos de la optimización trivial `GROUP BY ... LIMIT` (configuración `optimize_trivial_group_by_limit_query`) para consultas con `DISTINCT`, `QUALIFY`, funciones de ventana o `arrayJoin` en la proyección: estas operaciones consumen o filtran los grupos después de la agregación, por lo que limitar la agregación a `LIMIT + OFFSET` claves podía devolver muy pocas filas o valores incorrectos. La optimización ya no se aplica a estas consultas. [#114695](https://github.com/ClickHouse/ClickHouse/pull/114695) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron filas ausentes en el resultado de un `SELECT` filtrado por `pointInPolygon` sobre una clave principal de MergeTree cuando el argumento de polígono es un literal constante no válido y `validate_polygons = 0`. El análisis de la clave principal derivaba la poda de gránulos a partir de un polígono que nunca validó y descartaba gránulos que contenían filas coincidentes. [#114710](https://github.com/ClickHouse/ClickHouse/pull/114710) ([Groene AI](https://github.com/groeneai)).
* Corrige un bloqueo del servidor que se produce cuando los estados de agregación de los combinadores `-OrNull` o `-OrDefault` se fusionan con `group_by_overflow_mode = 'any'` y un valor de `max_rows_to_group_by` distinto de cero, por ejemplo, cuando una consulta lee mediante una proyección de agregación. [#114740](https://github.com/ClickHouse/ClickHouse/pull/114740) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` ("Unexpected number of kept output positions after removing unused columns from `ReadFromMergeTree`") generado por un `SELECT ... FINAL` cuyo `PREWHERE` usa una columna que `FINAL` necesita para la fusión (`ver`, `is_deleted`, `sign`) pero que no se selecciona. [#114746](https://github.com/ClickHouse/ClickHouse/pull/114746) ([Groene AI](https://github.com/groeneai)).
* Corrige un error lógico (`Block structure mismatch`) al leer una tabla `Merge` con `make_distributed_plan` habilitado en nodos hijo con operaciones de conjuntos internas. [#114753](https://github.com/ClickHouse/ClickHouse/pull/114753) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Rechaza un valor de `kafka_num_consumers` absurdamente grande con un mensaje de error claro, en lugar de que se produzca un error de asignación dentro del motor de tabla `Kafka`. Anteriormente, con `kafka_disable_num_consumers_limit` habilitado, dicho valor generaba una excepción `std::length_error`. [#114764](https://github.com/ClickHouse/ClickHouse/pull/114764) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una excepción `LOGICAL_ERROR: Context has expired` cuando una expresión almacenada que contiene `accurateCastOrDefault` o una función `to<Type>OrDefault` se evalúa después de que finalice la consulta que la creó, por ejemplo, en un valor predeterminado de columna `MATERIALIZED` durante un `INSERT` o en una expresión de mutación. [#114769](https://github.com/ClickHouse/ClickHouse/pull/114769) ([Groene AI](https://github.com/groeneai)).
* Corrige un `LOGICAL_ERROR` (`Cannot find input column ... on its position in inputs of expression actions DAG`) cuando una consulta tiene un `JOIN` sobre una tabla cuya columna indexada por texto se usa tanto en un predicado de búsqueda de texto `PREWHERE` como en uno `WHERE`. [#114771](https://github.com/ClickHouse/ClickHouse/pull/114771) ([Groene AI](https://github.com/groeneai)).
* Corrige la pérdida de una señal de activación del hilo de reinicio durante el arranque desde el hilo de adjunción. [#114802](https://github.com/ClickHouse/ClickHouse/pull/114802) ([Azat Khuzhin](https://github.com/azat)).
* `OPTIMIZE TABLE` en una tabla de almacenamiento de objetos cuyo motor no implementa la compactación informaba de éxito sin hacer nada. Ahora genera un error, como cualquier otro motor que no admite la instrucción. Esto afecta a `DeltaLake`, `Paimon`, `Hudi` y a los motores simples de almacenamiento de objetos (`S3`, `GCS`, `COSN`, `OSS`, `AzureBlobStorage`, `HDFS` y `URL` respaldado por almacenamiento de objetos); `Iceberg`, que sí implementa compactación, no cambia. Cierra [#114765](https://github.com/ClickHouse/ClickHouse/issues/114765). [#114805](https://github.com/ClickHouse/ClickHouse/pull/114805) ([Groene AI](https://github.com/groeneai)).
* `timeSeriesRange` y `timeSeriesFromGrid` generaban un falso `DECIMAL_OVERFLOW` para marcas de tiempo anteriores a 1970 porque las marcas de tiempo de inicio y fin se leían como valores sin signo. Además, para marcas de tiempo `DateTime`/`UInt32`, el paso se truncaba silenciosamente a sus 32 bits inferiores. Ahora todos los cálculos se realizan en `Int64`. [#114815](https://github.com/ClickHouse/ClickHouse/pull/114815) ([Vitaly Baranov](https://github.com/vitlibar)).
* Corrige un aborto del servidor (`Logical error: Part patch-... doesn't exist`) cuando un `DROP TABLE` se ejecuta simultáneamente con una actualización ligera `UPDATE` en una tabla `ReplicatedMergeTree`. La actualización ahora mantiene el bloqueo compartido de la tabla hasta que se confirma su parte de parche, por lo que `DROP` espera en lugar de eliminarla. [#114826](https://github.com/ClickHouse/ClickHouse/pull/114826) ([Groene AI](https://github.com/groeneai)).
* Corrige varios errores en las inserciones asíncronas (posible cierre inesperado si algunas consultas fallaban con `MEMORY_LIMIT_EXCEEDED` y `async_insert_queue_flush_on_shutdown`, que nunca funcionaba). [#114839](https://github.com/ClickHouse/ClickHouse/pull/114839) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigió `LOGICAL_ERROR: Unexpected return type from tuple. Expected Tuple(..., UInt8). Got Tuple(..., LowCardinality(UInt8))` al leer mediante `tuple(...)` una columna `LowCardinality` comparada con `IN (subquery)` a través del límite de una subconsulta y con `enable_analyzer = 0`. Con el analizador antiguo, `x IN (subquery)` sobre una columna `LowCardinality` ahora devuelve `LowCardinality(UInt8)`, el mismo tipo que `x IN (literal list)` y que con `enable_analyzer = 1`. [#114856](https://github.com/ClickHouse/ClickHouse/pull/114856) ([Nikita Fomichev](https://github.com/fm4v)).
* La configuración de cuota para funciones de IA (`ai_function_max_api_calls_per_query`, `ai_function_max_input_tokens_per_query`, `ai_function_max_output_tokens_per_query`) se aplicaba por bloque en lugar de por consulta, lo que permitía que una consulta superara el límite configurado en proporción al número de bloques e hilos procesados. Ahora limita la consulta completa por servidor: el límite de llamadas a la API es estricto (reserva atómica), y los límites de tokens se aplican en la medida de lo posible. Una consulta distribuida aplica los límites de forma independiente en cada servidor o fragmento participante. [#114885](https://github.com/ClickHouse/ClickHouse/pull/114885) ([George Larionov](https://github.com/george-larionov)).
* Corrige un aborto del servidor que se produce cuando el grupo global de hilos se satura momentáneamente mientras las tablas aún se están cargando. `AsyncLoader` ahora continúa ejecutándose si no puede crear un worker de carga adicional y algún worker seguirá procesando los trabajos en cola, en lugar de llamar a `std::terminate`. [#114897](https://github.com/ClickHouse/ClickHouse/pull/114897) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron comportamientos indefinidos y resultados incorrectos en los límites en `quantile` y `quantiles` para valores `DateTime64` y `Decimal` de gran tamaño. [#114919](https://github.com/ClickHouse/ClickHouse/pull/114919) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un aborto del servidor ante un pie de franja ORC dañado. [#114924](https://github.com/ClickHouse/ClickHouse/pull/114924) ([Groene AI](https://github.com/groeneai)).
* Corrige un posible fallo debido a un uso después de liberar de ThreadGroup (para INSERT asíncronos/MV/EXPLAIN ANALYZE). [#114940](https://github.com/ClickHouse/ClickHouse/pull/114940) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigió un bloqueo al eliminar una tabla `TimeSeries` cuyo nombre se ordena lexicográficamente antes que los nombres de sus tablas internas, por ejemplo, `` DROP TABLE `-ts` ``, o al eliminar una vista materializada declarada con `ENGINE = TimeSeries`. La operación de eliminación se autobloqueaba en la protección DDL y no podía cancelarse con `KILL QUERY`. [#114953](https://github.com/ClickHouse/ClickHouse/pull/114953) ([Groene AI](https://github.com/groeneai)).
* Corrige `BAD_DATA_PART_NAME` ("Trying to get part name in new format for old format version") en un `ReplicatedMergeTree` creado con la sintaxis posicional obsoleta mediante `allow_deprecated_syntax_for_merge_tree`. Una mutación podía notificarse como completada en una réplica que no la había aplicado, y la tabla podía permanecer en modo readonly tras reiniciarse. [#114980](https://github.com/ClickHouse/ClickHouse/pull/114980) ([Groene AI](https://github.com/groeneai)).
* Corrige el error lógico `Not-ready Set is passed as the second argument for function 'in'` en una consulta con una subconsulta `IN` que lee de un clúster remoto: ahora la consulta falla con el error real de la subconsulta, como un fallo de conexión. [#114983](https://github.com/ClickHouse/ClickHouse/pull/114983) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un error lógico para IN con una tupla no constante idéntica en ambos lados en el analizador antiguo. [#114988](https://github.com/ClickHouse/ClickHouse/pull/114988) ([Groene AI](https://github.com/groeneai)).
* Corrige la lectura de un elemento de una tupla mediante una sugerencia de estructura Tuple posicional. [#115000](https://github.com/ClickHouse/ClickHouse/pull/115000) ([Groene AI](https://github.com/groeneai)).
* No asigne alias a los estados de preagregación de un agregado de tamaño cero en arrayReduceInRanges. [#115008](https://github.com/ClickHouse/ClickHouse/pull/115008) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `INSERT` en una tabla `Log`, `TinyLog` o `StripeLog` que fallaba al confirmar los tamaños de archivo registrados. Dicho insert podía conservar sus filas en la tabla aunque notificara un error, o dejar inconsistentes entre sí los archivos de datos de una columna de array. Ahora, al leer una tabla `Log` o `TinyLog` cuya columna de array no contiene elementos aunque sus offsets indiquen lo contrario, se genera un error que identifica la columna, en lugar de leer más allá del final de los elementos. Ya se rechazaba una columna de elementos escrita parcialmente. [#115027](https://github.com/ClickHouse/ClickHouse/pull/115027) ([Groene AI](https://github.com/groeneai)).
* Corrige una interrupción del agregador adaptativo en columnas replicadas de forma diferida. [#115034](https://github.com/ClickHouse/ClickHouse/pull/115034) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una lectura fuera de límites en `pointInPolygon` con un polígono constante cuyo cuadro delimitador no está acotado, por ejemplo, cuando una coordenada alcanza `+-DBL_MAX`. Dicho polígono ahora se rechaza con `BAD_ARGUMENTS`, y un polígono con un anillo vacío se considera sin interior. Anteriormente, la consulta podía devolver un resultado incorrecto o interrumpir el servidor en compilaciones con hardening o sanitizers habilitados. [#115035](https://github.com/ClickHouse/ClickHouse/pull/115035) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una excepción `out_of_range` generada como error interno `Code: 1001` cuando un patrón de `sequenceMatch`, `sequenceCount` o `sequenceMatchEvents` contiene el número de evento `0`, por ejemplo, `sequenceMatch('(?0)')`. Dicho patrón ahora se rechaza con `BAD_ARGUMENTS`. Una condición temporal que contiene un signo aislado, como `sequenceMatch('(?1)(?t>+)(?2)')`, se trataba silenciosamente como `(?t>0)` y ahora se rechaza con `SYNTAX_ERROR`. [#115056](https://github.com/ClickHouse/ClickHouse/pull/115056) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `Found patch part ... that intersects mutation with version ...` (`LOGICAL_ERROR`) en tablas con actualizaciones ligeras. Una fusión de partes de parche podía producir un parche cuyo rango de versiones de datos abarcaba la versión de datos de una parte existente; ese parche no podía aplicarse ni omitirse, por lo que todas las operaciones posteriores en la partición fallaban y la cola de replicación se bloqueaba. Estas fusiones ya no se asignan. [#115064](https://github.com/ClickHouse/ClickHouse/pull/115064) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un `LOGICAL_ERROR` (`Cache file segment is in detached state`) al leer a través de la caché del sistema de archivos con la configuración experimental `use_reader_executor`. La regresión fue introducida por [#110029](https://github.com/ClickHouse/ClickHouse/issues/110029) y no está presente en ninguna versión, por lo que no requiere retroportación. [#115070](https://github.com/ClickHouse/ClickHouse/pull/115070) ([Groene AI](https://github.com/groeneai)).
* Servidor Arrow Flight: acepta credenciales de autenticación `Basic` codificadas en Base64 sin relleno, como las enviadas por clientes de Flight basados en Go, como el controlador ADBC Flight SQL, y devuelve un error de autenticación adecuado en lugar de un error genérico `Unexpected error in RPC handling` cuando el encabezado `authorization` tiene un formato incorrecto. [#115085](https://github.com/ClickHouse/ClickHouse/pull/115085) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la autocompletación (sugerencias y completado con TAB desde `system.completions`) en el client integrado utilizado por la interfaz SSH y el terminal web: las sugerencias se cargaban mediante una conexión independiente que se autenticaba como el usuario `default` con una contraseña vacía, lo que fallaba en servidores donde `default` tiene contraseña y, en caso contrario, filtraba nombres de entidades a las que el usuario que inició sesión no tiene acceso. Las sugerencias ahora se cargan mediante la propia conexión de la sesión. [#115086](https://github.com/ClickHouse/ClickHouse/pull/115086) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un problema que impedía iniciar el servidor después de crear una tabla con `CREATE TABLE ... AS url('http://host/**/', ...)` mientras `allow_experimental_url_wildcard_from_index_pages` estaba habilitado. Al cargar los metadatos de esa tabla, se volvía a evaluar la comprobación experimental y fallaba con `SUPPORT_IS_DISABLED`, lo que interrumpía el inicio. [#115095](https://github.com/ClickHouse/ClickHouse/pull/115095) ([Groene AI](https://github.com/groeneai)).
* Se reescribió bucketIndexForTimestamp usando aritmética de 64 bits. [#115097](https://github.com/ClickHouse/ClickHouse/pull/115097) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se corrigió el formato de `ALTER TABLE ... MATERIALIZE INDEX`, `MATERIALIZE STATISTICS` y `MATERIALIZE PROJECTION`, que omitía la cláusula `IF EXISTS`, por lo que la consulta formateada no coincidía con la consulta analizada. También se rechazaron cuatro cargas útiles JSON del AST de `ALTER ... STATISTICS` que el analizador de SQL no puede generar y que se formateaban como un comando distinto. [#115099](https://github.com/ClickHouse/ClickHouse/pull/115099) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una excepción (`Block structure mismatch in Expression for FilterSortedStreamByRange`) en algunas consultas `SELECT ... FINAL` con `PREWHERE` sobre una tabla cuya clave de ordenación es una expresión. [#115113](https://github.com/ClickHouse/ClickHouse/pull/115113) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigieron las sobrescrituras de CORS de la CLI de clickhouse-local. [#115129](https://github.com/ClickHouse/ClickHouse/pull/115129) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se deshabilitó el análisis distribuido de índices con proyecciones (resultados incorrectos). [#115132](https://github.com/ClickHouse/ClickHouse/pull/115132) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigieron `if` y `multiIf`, que devolvían un valor positivo grande en lugar de uno negativo cuando una rama `Time` se combina con `Time64`, `DateTime` o `DateTime64` y la expresión se compila con JIT. [#115146](https://github.com/ClickHouse/ClickHouse/pull/115146) ([Groene AI](https://github.com/groeneai)).
* Un terminal web integrado en otra página, como la consola SQL o `play.html`, recibe sus credenciales de esa página y ya no abre una conexión propia antes de recibirlas. Anteriormente, se conectaba dos veces: una con una contraseña vacía y otra con las credenciales reales, e imprimía `Connecting...` dos veces. [#115148](https://github.com/ClickHouse/ClickHouse/pull/115148) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron resultados incorrectos cuando una cláusula `WHERE` contenía una expresión `NULL` dentro de un `NOT`, por ejemplo, `SELECT count() FROM t WHERE NOT (id >= 20 AND NULL)`. El análisis de índices trataba dicha condición como demostrablemente verdadera para todo el rango, por lo que se omitía el filtro: `count()` devolvía filas que la consulta debía rechazar y `ALTER TABLE ... DELETE` con esa condición eliminaba filas que debería haber conservado. [#115152](https://github.com/ClickHouse/ClickHouse/pull/115152) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `EXPLAIN ANALYZE` perdiera las estadísticas de join de una vista declarada con `SQL SECURITY DEFINER` o `SQL SECURITY NONE` cuyo cuerpo contiene un JOIN. En compilaciones de depuración y con sanitizadores, la consulta se interrumpía con el error lógico `JoinStep analyzed without the analyze mode`. [#115156](https://github.com/ClickHouse/ClickHouse/pull/115156) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una lectura fuera de límites al deserializar listas de publicaciones corruptas de un índice de texto. [#115222](https://github.com/ClickHouse/ClickHouse/pull/115222) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrigieron resultados incorrectos para `SELECT count(arrayJoin(arr))` con el valor predeterminado `optimize_trivial_count_query = 1`. Se devolvía el recuento de filas almacenado en lugar del número de elementos del array y, en `file()` y `url()`, la consulta devolvía `0`. Cierra [#115123](https://github.com/ClickHouse/ClickHouse/issues/115123). [#115227](https://github.com/ClickHouse/ClickHouse/pull/115227) ([Groene AI](https://github.com/groeneai)).
* Corrige `NOT_FOUND_COLUMN_IN_BLOCK` en cada `INSERT` en una tabla que declara `STATISTICS(...)` en una columna `ALIAS` o `EPHEMERAL`, lo que hacía que esas tablas fueran de solo lectura. [#115231](https://github.com/ClickHouse/ClickHouse/pull/115231) ([Groene AI](https://github.com/groeneai)).
* Corrige que las estadísticas finales de una consulta completada (`N rows in result`, `Read ... rows`) se mostraran en un color invisible en la interfaz web. [#115245](https://github.com/ClickHouse/ClickHouse/pull/115245) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige resultados incorrectos silenciosos y comportamiento indefinido al leer un estado `AggregateFunction(uniq, ...)` malformado. El campo `skip_degree` del estado serializado se utilizaba como exponente de desplazamiento sin validación, por lo que un valor fuera de rango producía una cardinalidad arbitraria en lugar de un error. Estos estados ahora se rechazan con `INCORRECT_DATA`. [#115276](https://github.com/ClickHouse/ClickHouse/pull/115276) ([Groene AI](https://github.com/groeneai)).
* Corrige una omisión de políticas de fila por la que la función de tabla mergeTreeIndex exponía valores de clave primaria e índice minmax de las filas ocultas por una política de fila `SELECT` en la tabla de origen; ahora se deniega la lectura de mergeTreeIndex para tablas con una política de fila. [#115304](https://github.com/ClickHouse/ClickHouse/pull/115304) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige que `CREATE QUOTA` y `ALTER QUOTA` descartaran silenciosamente todos los bloques `FOR INTERVAL` excepto el último cuando se omitía la coma separadora entre intervalos. Dicha instrucción se ejecutaba correctamente sin aplicar ninguno de los límites anteriores. Los intervalos ahora vuelven a acumularse, como antes de 2020. Cierra [#115282](https://github.com/ClickHouse/ClickHouse/issues/115282). [#115320](https://github.com/ClickHouse/ClickHouse/pull/115320) ([Groene AI](https://github.com/groeneai)).
* Corrige resultados incorrectos de `if`, `multiIf` y `CASE` cuando una rama es `Date` o `Date32` y el tipo de resultado es `DateTime` o `DateTime64`. Con `compile_expressions = 1` (el valor predeterminado), la expresión compilada copiaba el recuento de días de la fecha en la columna de marca de tiempo sin convertir los días a segundos, por lo que `if(cond, toDate32('1900-01-01'), toDateTime64('1970-01-01', 3))` devolvía `1969-12-31 23:59:34.433`. Cierra [#115272](https://github.com/ClickHouse/ClickHouse/issues/115272). [#115325](https://github.com/ClickHouse/ClickHouse/pull/115325) ([Groene AI](https://github.com/groeneai)).
* Evita que queden metadatos que hagan referencia a una colección con nombre eliminada. [#115326](https://github.com/ClickHouse/ClickHouse/pull/115326) ([Groene AI](https://github.com/groeneai)).
* Corrige que `timezoneOffset` (alias `timeZoneOffset`) devolviera un desplazamiento incorrecto de exactamente un día para zonas horarias cuyo desplazamiento UTC difiere en un día completo del que tenían el 1970-01-01, como `Pacific/Kiritimati` y `Pacific/Apia` después de cruzar la línea internacional de cambio de fecha, así como para la mayoría de las zonas antes de 1970. También corrige `parseDateTime`, `parseDateTimeOrNull`, `parseDateTime64`, `parseDateTimeInJodaSyntax`, `EXTRACT(TIMEZONE_HOUR / TIMEZONE_MINUTE ...)`, `%z` de `formatDateTime`, `toUTCTimestamp` y `fromUTCTimestamp`, que usan ese desplazamiento. Cierra [#115281](https://github.com/ClickHouse/ClickHouse/issues/115281). [#115332](https://github.com/ClickHouse/ClickHouse/pull/115332) ([Groene AI](https://github.com/groeneai)).
* Corrige una omisión de las restricciones de configuración: `SET <name> = DEFAULT` restablecía una configuración sin comprobar las restricciones del perfil del usuario, por lo que una restricción `MIN`/`MAX`/`CONST` podía eludirse restableciendo la configuración en lugar de asignarle un valor, y una sesión podía salir del modo de solo lectura con `SET readonly = DEFAULT`. [#115334](https://github.com/ClickHouse/ClickHouse/pull/115334) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Servidor Arrow Flight: se rechazan las credenciales de autenticación básica malformadas que omiten el separador entre el nombre de usuario y la contraseña. [#115347](https://github.com/ClickHouse/ClickHouse/pull/115347) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un `LOGICAL_ERROR` (`Join is supported only for pipelines with one output port`) en un JOIN `full_sorting_merge` con `query_plan_join_shard_by_pk_ranges` habilitado cuando uno de los dos lados se descarta por completo, ya sea por la clave primaria, por las estadísticas de columna o porque la tabla está vacía. [#115352](https://github.com/ClickHouse/ClickHouse/pull/115352) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se deshabilitó la caché de condiciones de consulta para los filtros sobre \_part\_starting\_offset. [#115358](https://github.com/ClickHouse/ClickHouse/pull/115358) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigió que `randConstant` devolviera dos valores distintos en una misma consulta cuando sus llamadas tenían alias diferentes. La documentación de `randConstant` indica que mantiene un único valor durante toda la consulta, y `SELECT randConstant() = randConstant()` ya devolvía `1`, pero añadir alias como en `SELECT randConstant() AS a, randConstant() AS b` producía dos valores no relacionados. [#115384](https://github.com/ClickHouse/ClickHouse/pull/115384) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que `uniq`, `uniqExact`, `uniqHLL12` y `uniqTheta` devolvieran un resultado incorrecto para un argumento envuelto en una función inyectiva que oculta la nulabilidad, como `uniqExact(tuple(x))` sobre una columna `Nullable`. La optimización `optimize_injective_functions_inside_uniq` eliminaba la función envolvente, por lo que las filas NULL se omitían en lugar de contarse. [#115466](https://github.com/ClickHouse/ClickHouse/pull/115466) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigió que `GroupingAggregatedTransform` produjera fragmentos duplicados para el mismo bucket. [#115487](https://github.com/ClickHouse/ClickHouse/pull/115487) ([Nikita Taranov](https://github.com/nickitat)).
* Se corrigió el mensaje de error de `geoToH3`, que indicaba una posición de argumento y un tipo incorrectos cuando una coordenada no era `Float64`. Con el orden predeterminado `geotoh3_argument_order = 'lat_lon'`, el mensaje señalaba el otro argumento e imprimía su tipo. Cierra [#101813](https://github.com/ClickHouse/ClickHouse/issues/101813). [#115503](https://github.com/ClickHouse/ClickHouse/pull/115503) ([Groene AI](https://github.com/groeneai)).
* Se rechaza un retorno de carro aislado (`\r`), además de un salto de línea (`\n`), en los nombres y valores de encabezados HTTP que pasan por el filtro de encabezados HTTP. Esto corrige una vulnerabilidad de inyección de encabezados HTTP (división de solicitudes/respuestas) en funciones que admiten encabezados proporcionados por el usuario, como la función de tabla y el motor `url`, los diccionarios HTTP y los catálogos de lagos de datos. [#115510](https://github.com/ClickHouse/ClickHouse/pull/115510) ([Sergei Trifonov](https://github.com/serxa)).
* Se corrigió que las cachés configuradas con un número máximo de entradas (política `SLRU`) dejaran silenciosamente de admitir nuevas entradas una vez que se hubiera accedido al menos dos veces a esa cantidad de entradas. Las cachés afectadas incluyen las cachés de archivos de metadatos de Iceberg y Paimon, la caché de metadatos de Parquet, las cachés de índices de texto, la caché de índices de similitud vectorial, la caché de expresiones compiladas y la caché de estado de archivos de ObjectStorageQueue. [#115517](https://github.com/ClickHouse/ClickHouse/pull/115517) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un bloqueo de hasta una hora en `BACKUP`/`RESTORE ... TO S3`, discos GCS y la función de tabla `s3` cuando la colección con nombre establece `http_client = 'gcp_oauth'` y el punto de conexión de tokens OAuth2 de Google acepta la conexión, pero nunca responde. La solicitud del token Bearer ya no hereda el tiempo de espera de la solicitud de transferencia de datos del llamador; la espera de respuesta está limitada a 10 segundos, igual que el límite de las solicitudes `AssumeRole` de STS. [#115531](https://github.com/ClickHouse/ClickHouse/pull/115531) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron `dictGet` y sus variantes en consultas distribuidas: un nombre de diccionario sin calificar ahora se asocia a la base de datos actual del iniciador, en lugar de resolverse con la base de datos actual de cada shard, donde no se encontraba o se resolvía como otro diccionario con el mismo nombre. [#115541](https://github.com/ClickHouse/ClickHouse/pull/115541) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una condición de carrera que podía hacer que una consulta `STREAM BOUNDED` devolviera menos filas de las confirmadas antes de iniciarse, normalmente ninguna. [#115543](https://github.com/ClickHouse/ClickHouse/pull/115543) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la escritura de snapshots de Keeper como archivos vacíos cuando `compress_snapshots_with_zstd_format` está deshabilitado. El servidor registraba `Created persistent snapshot`, pero el archivo de snapshot tenía 0 bytes y el nodo se negaba a iniciarse con `CORRUPTED_DATA`. Cierra [#115388](https://github.com/ClickHouse/ClickHouse/issues/115388). [#115553](https://github.com/ClickHouse/ClickHouse/pull/115553) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `read_rows`, `read_bytes`, `written_rows` y `written_bytes` de `system.query_thread_log` informaran del total acumulado durante la vida de un hilo, en lugar de los valores de la consulta registrada. Se veían afectadas las filas de hilos agrupados de larga duración, en particular el hilo `HTTPHandler` que inicia la consulta. [#115596](https://github.com/ClickHouse/ClickHouse/pull/115596) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una lectura fuera de límites de los hashes de diccionario almacenados en caché al agregar o realizar un join con una clave `LowCardinality(String)` cuyo diccionario crece durante la agregación, accesible desde `TTL ... GROUP BY`. Podía generar un hash incorrecto y un heap-buffer-overflow notificado en compilaciones con sanitizador. [#115604](https://github.com/ClickHouse/ClickHouse/pull/115604) ([Groene AI](https://github.com/groeneai)).
* `CREATE TABLE` y `ALTER TABLE` ahora rechazan un códec con pérdida como `SZ3` en una columna utilizada en la clave de partición. [#115626](https://github.com/ClickHouse/ClickHouse/pull/115626) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron caracteres de escape de barra invertida no válidos en los índices text, tokenbf\_v1 y ngrambf\_v1. [#115634](https://github.com/ClickHouse/ClickHouse/pull/115634) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Se corrigió `removePartAndCoveredParts` cuando se llama para una parte presente en el conjunto de partes de datos activas. [#115640](https://github.com/ClickHouse/ClickHouse/pull/115640) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se permite que los lectores de KeeperMap acepten metadatos compartidos cuando claves primarias equivalentes solo difieren por paréntesis exteriores redundantes. [#115642](https://github.com/ClickHouse/ClickHouse/pull/115642) ([Sergey Kuznetsov](https://github.com/skuznetsov-clickhouse)).
* Se corrigió un error por el cual, al restaurar una base de datos o tabla con un nombre nuevo, se eliminaban los alias de tabla de los cuerpos de las vistas almacenadas, por lo que la lectura de una vista restaurada fallaba con `UNKNOWN_IDENTIFIER`. Cierra [#115479](https://github.com/ClickHouse/ClickHouse/issues/115479). [#115645](https://github.com/ClickHouse/ClickHouse/pull/115645) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `Code: 349. Cannot convert NULL value to non-Nullable type` cuando un predicado `has` o `notHas` contiene un elemento NULL de Array y la clave primaria es `String`, `Array(String)` o `Map(String, String)`, y se corrigieron resultados incorrectos cuando ese elemento es un `Dynamic` o `Variant` que contiene NULL. Ahora se elimina el NULL del conjunto durante el análisis de claves, como ya ocurría con otros tipos de clave. [#115647](https://github.com/ClickHouse/ClickHouse/pull/115647) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error en la función `formatRowNoNewline` que podía producir resultados incorrectos o un error lógico cuando una fila se formatea como un resultado vacío. [#115669](https://github.com/ClickHouse/ClickHouse/pull/115669) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se rechazan valores de `step` iguales a cero o negativos en consultas de rango de Prometheus de un único punto. [#115679](https://github.com/ClickHouse/ClickHouse/pull/115679) ([Minh Vu](https://github.com/fallintoplace)).
* Se rechazan timestamps y duraciones de PromQL que excedan el rango de Int64. [#115682](https://github.com/ClickHouse/ClickHouse/pull/115682) ([Minh Vu](https://github.com/fallintoplace)).
* Se corrigen bloqueos del servidor ante entradas profundamente anidadas en `readWKB`, `JSONMergePatch`, el analizador de direcciones de las funciones de tabla `url`/`remote`/`cluster`/`mysql`/`postgresql`, el analizador de la cláusula `CURSOR` y el analizador de esquemas CapnProto. Se corrige un bloqueo en el analizador de la instrucción `EXECUTE` cuando un argumento no es un literal. [#115700](https://github.com/ClickHouse/ClickHouse/pull/115700) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se evita devolver memoria sin inicializar en el resultado de un literal de cadena binaria cuya longitud no es múltiplo de ocho, así como desde el descompresor LZ4 cuando un bloque comprimido no tiene cuerpo. [#115704](https://github.com/ClickHouse/ClickHouse/pull/115704) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se limita el tamaño del mensaje de inicio del protocolo wire de PostgreSQL, que se lee antes de la autenticación. [#115708](https://github.com/ClickHouse/ClickHouse/pull/115708) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige el error `MULTIPLE_EXPRESSIONS_FOR_ALIAS` en consultas donde un alias de columna coincide con el alias de una expresión de tabla en la sección `FROM` (una regresión del analyzer en la versión 25.2). [#115714](https://github.com/ClickHouse/ClickHouse/pull/115714) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige que `clickhouse-local` terminara todo el proceso cuando un handler de conexión de un listener iniciado con `SYSTEM START LISTEN` generaba una excepción, por ejemplo, porque un cliente enviaba un paquete malformado o reiniciaba un socket keep-alive. Ahora, dicho proceso registra el error y sigue atendiendo solicitudes, como lo hace `clickhouse-server`. [#115715](https://github.com/ClickHouse/ClickHouse/pull/115715) ([Groene AI](https://github.com/groeneai)).
* Se corrige `LOGICAL_ERROR: No available columns` cuando una consulta no lee columnas de una expresión de tabla que no tiene ninguna columna; por ejemplo, `SELECT count() FROM loop(db, tbl)`, donde `tbl` es una tabla `Alias` cuyo destino se eliminó, o una vista parametrizada. Ahora, dicha consulta falla con `UNSUPPORTED_METHOD` en lugar de abortar el servidor en compilaciones de depuración y con sanitizador. [#115716](https://github.com/ClickHouse/ClickHouse/pull/115716) ([Groene AI](https://github.com/groeneai)).
* Se corrige `LOGICAL_ERROR` "Lectura desde la CTE materializada 'X' antes de que se completara su materialización: falta la compuerta DelayedPortsProcessor en el plan de consulta" cuando se lee una CTE `MATERIALIZED` dentro de una subconsulta `IN` sobre una tabla `Distributed`. Cierra [#113184](https://github.com/ClickHouse/ClickHouse/issues/113184). [#115740](https://github.com/ClickHouse/ClickHouse/pull/115740) ([Groene AI](https://github.com/groeneai)).
* Se rechazan nombres no válidos de proyecciones e índices. [#115824](https://github.com/ClickHouse/ClickHouse/pull/115824) ([Alexander Tokmakov](https://github.com/tavplubix)).
* Se rechazan modificadores de coincidencia de vectores de PromQL cuando uno de los operandos es un escalar. [#115828](https://github.com/ClickHouse/ClickHouse/pull/115828) ([Minh Vu](https://github.com/fallintoplace)).
* Se corrige que `cast_keep_nullable` no preservara la capacidad de admitir NULL cuando el tipo de destino es `LowCardinality`. La conversión de un valor que admite NULL a `LowCardinality(T)` generaba `CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN` en lugar de producir `LowCardinality(Nullable(T))`. Cierra [#103485](https://github.com/ClickHouse/ClickHouse/issues/103485). [#115851](https://github.com/ClickHouse/ClickHouse/pull/115851) ([Groene AI](https://github.com/groeneai)).
* Añade las rutas de Objects al hash de deduplicación para evitar deduplicaciones incorrectas. [#115866](https://github.com/ClickHouse/ClickHouse/pull/115866) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Corrige `TYPE_MISMATCH` ("CAST AS Array can only be performed between same-dimensional array types") en una consulta con una constante de tipo `Array(Map(...))`, como `has([map('k', 'v')], m)`, ejecutada sobre una tabla `Distributed` o con réplicas paralelas. [#115883](https://github.com/ClickHouse/ClickHouse/pull/115883) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige `Unknown identifier`, generado durante la optimización del plan de consulta con `make_distributed_plan = 1`, cuando la columna de ordenación de una consulta de ventana pasa por un paso `Expression` que no la menciona. Cierra [#115737](https://github.com/ClickHouse/ClickHouse/issues/115737). [#115890](https://github.com/ClickHouse/ClickHouse/pull/115890) ([Groene AI](https://github.com/groeneai)).
* Corrige que `h3kRing`, `h3HexRing`, `h3Line` y `h3ToChildren` ignorasen `max_execution_time` y `KILL QUERY` al expandir un bloque de filas. [#115893](https://github.com/ClickHouse/ClickHouse/pull/115893) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La lectura a través de una tabla `Merge` que coincide con una tabla `Alias` cuyo destino es una vista parametrizada ya no genera `LOGICAL_ERROR: Table has no columns.` (lo que aborta el servidor en compilaciones de depuración y con sanitizador). Esta tabla ahora informa de `STORAGE_REQUIRES_PARAMETER`, el mismo error que informa la propia vista parametrizada. Cualquier otra tabla coincidente que no pueda proporcionar columnas ahora informa de `UNSUPPORTED_METHOD` en lugar de un error interno. [#115896](https://github.com/ClickHouse/ClickHouse/pull/115896) ([Groene AI](https://github.com/groeneai)).
* Corrige la vista previa sobre la marcha de una mutación pendiente cuya expresión hace referencia a `_sample_factor`. Con `apply_mutations_on_fly = 1` y una cláusula `SAMPLE`, la expresión se evaluaba con el factor de muestreo de la consulta de lectura en lugar del valor que persiste la materialización en segundo plano, por lo que las filas previsualizadas no coincidían con el resultado materializado final, y un `ALTER TABLE t DELETE WHERE _sample_factor > 1` pendiente podía hacer que una lectura `SAMPLE` no devolviera ninguna fila. La columna `_sample_factor` propia de la consulta no cambia. [#115906](https://github.com/ClickHouse/ClickHouse/pull/115906) ([Groene AI](https://github.com/groeneai)).
* Corrige un caso en el que `ATTACH TABLE` con una definición `ENGINE = URL(...)` no comprobaba el permiso `TABLE ENGINE` del motor al que se dirige el esquema de URL. Un usuario que solo tenía `TABLE ENGINE ON URL` podía adjuntar una tabla respaldada por `File`, `S3`, `AzureBlobStorage` o `HDFS` y leer de ella, algo que `CREATE TABLE` rechaza correctamente. [#115914](https://github.com/ClickHouse/ClickHouse/pull/115914) ([Groene AI](https://github.com/groeneai)).
* Evita que un nodo de metadatos de KeeperMap que no se puede analizar impida el inicio del servidor. [#115941](https://github.com/ClickHouse/ClickHouse/pull/115941) ([Groene AI](https://github.com/groeneai)).
* Corrige un bloqueo de la función `showCertificate` en un servidor que obtiene su certificado TLS mediante ACME (Let's Encrypt). La función ahora informa del certificado que realmente se sirve, incluso después de recargarlo. [#115976](https://github.com/ClickHouse/ClickHouse/pull/115976) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un aborto del servidor en compilaciones de depuración y con sanitizador al insertar en una vista materializada cuyo destino `TO` es otra vista materializada. Esta inserción ya fallaba en las versiones publicadas con un `Code: 1001 STD_EXCEPTION` poco informativo; ahora informa de `NOT_IMPLEMENTED` e indica la vista problemática. [#115985](https://github.com/ClickHouse/ClickHouse/pull/115985) ([Groene AI](https://github.com/groeneai)).
* Los archivos de estadísticas con la versión de formato `V3` ahora se leen en lugar de rechazarse con `ILLEGAL_STATISTICS`. Estos archivos solo se generaron en builds de `master` durante un breve periodo, pero las partes que los contenían eran completamente ilegibles y, en un disco de solo lectura, `ALTER TABLE ... MATERIALIZE STATISTICS` no puede regenerarlos. [#116030](https://github.com/ClickHouse/ClickHouse/pull/116030) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió `LOGICAL_ERROR: Index with name auto_minmax_index_<column> already exists` cuando una sola instrucción `ALTER TABLE` combinaba `RENAME COLUMN` con otro comando, como `MODIFY SETTING`, en una tabla con índices minmax implícitos (`add_minmax_index_for_numeric_columns` y similares). Renombrar una columna común tampoco provoca ya que un `DROP COLUMN` posterior falle con `UNKNOWN_IDENTIFIER` ni que un `ADD COLUMN` posterior se realice sin su índice implícito. [#116063](https://github.com/ClickHouse/ClickHouse/pull/116063) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el fallo de los workers sin estado con almacenamiento de objetos. [#116067](https://github.com/ClickHouse/ClickHouse/pull/116067) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="268-build-testing-packaging-improvement">
  #### Mejora en compilación/pruebas/empaquetado
</div>

* Se proporcionan artefactos firmados para macOS. [#115169](https://github.com/ClickHouse/ClickHouse/pull/115169) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se corrigió la compilación desde el código fuente con clang 23. [#112288](https://github.com/ClickHouse/ClickHouse/pull/112288) ([Azat Khuzhin](https://github.com/azat)).
* Se redujeron las dependencias y el tamaño del código del analizador de SQL, que ahora puede compilarse de forma independiente; consulte `utils/wasm-parser` para obtener una compilación independiente en WebAssembly. Las tablas de palabras clave de SQL y tipos de acceso ahora se generan en tiempo de compilación, en lugar de en cada inicio del servidor. [#112067](https://github.com/ClickHouse/ClickHouse/pull/112067) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La compilación desde el código fuente ahora falla durante la generación de CMake, en lugar de corromper `StorageSystemLicenses.generated.cpp` cuando falla la generación de licencias. [#111222](https://github.com/ClickHouse/ClickHouse/pull/111222) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se actualizó la biblioteca Apache Thrift incluida a la versión 0.24.0. [#111278](https://github.com/ClickHouse/ClickHouse/pull/111278) ([Groene AI](https://github.com/groeneai)).
* Se añadió `libucontext` para compilaciones con musl, lo que habilita el backend `ucontext` de `boost::context` utilizado por las compilaciones con sanitizador. [#111437](https://github.com/ClickHouse/ClickHouse/pull/111437) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se corrigieron problemas de portabilidad a nivel de código fuente al compilar con musl. [#111631](https://github.com/ClickHouse/ClickHouse/pull/111631) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Editar `Core/ProtocolDefines.h` ya no provoca una recompilación casi completa al compilar desde el código fuente: se eliminó la inclusión de `BlockInfo.h` y se añadió únicamente a los archivos que usan sus constantes. [#111650](https://github.com/ClickHouse/ClickHouse/pull/111650) ([Alexander Gololobov](https://github.com/davenger)).
* Se corrigió un aborto durante el inicio en compilaciones de depuración de macOS al deshabilitar las comprobaciones de depuración del rastreador de memoria para las asignaciones realizadas por bibliotecas del sistema. [#112080](https://github.com/ClickHouse/ClickHouse/pull/112080) ([Arsen Muk](https://github.com/arsenmuk)).
* Se actualizó la biblioteca `libarchive` incluida a la versión 3.8.9. [#112434](https://github.com/ClickHouse/ClickHouse/pull/112434) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se actualizó `StringZilla` a la versión 5.0.5. [#112319](https://github.com/ClickHouse/ClickHouse/pull/112319) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se actualizó `jwt-cpp` a v0.7.2. [#112595](https://github.com/ClickHouse/ClickHouse/pull/112595) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se actualizó la amalgama de SQLite incluida de la versión 3.41.2 a la 3.53.4. [#112599](https://github.com/ClickHouse/ClickHouse/pull/112599) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se actualizó `aws-c-http` a la versión 0.11.0. [#112413](https://github.com/ClickHouse/ClickHouse/pull/112413) ([Govind R Nair](https://github.com/Revertionist)).
* Se actualizó `libcotp` a v4.2.1. [#112596](https://github.com/ClickHouse/ClickHouse/pull/112596) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* OpenSSL ahora puede compilarse a partir de sus fuentes C portables en arquitecturas sin código ensamblador escrito a mano en la descripción de compilación, en lugar de fallar durante el enlazado final con símbolos sin definir. La nueva opción de CMake `OPENSSL_NO_ASM` selecciona explícitamente la misma ruta. [#112863](https://github.com/ClickHouse/ClickHouse/pull/112863) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió una opción de CMake `ENABLE_ORC` (activada de forma predeterminada), de modo que una compilación puede incluir Parquet sin ORC ni los componentes protobuf y `protoc` que este incorpora. [#112864](https://github.com/ClickHouse/ClickHouse/pull/112864) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `Common/Exception.cpp` ya no requiere la libc++ parcheada de ClickHouse para compilar, por lo que las compilaciones que enlazan una biblioteca estándar de C++ distinta obtienen excepciones sin una traza de pila del punto donde se lanzan, en lugar de no compilar. [#112865](https://github.com/ClickHouse/ClickHouse/pull/112865) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El desenrollado de pila en compilaciones musl para aarch64 ahora continúa a través de los marcos de señales y las llamadas al sistema bloqueadas, en lugar de detenerse en el marco de libc, lo que mejora las trazas de pila del manejador de errores fatales y del perfilador de consultas por muestreo. [#112592](https://github.com/ClickHouse/ClickHouse/pull/112592) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se actualizó `libexpat` incorporado a la versión 2.8.2. [#112593](https://github.com/ClickHouse/ClickHouse/pull/112593) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se actualizó `simdjson` a la versión 4.6.5. [#112594](https://github.com/ClickHouse/ClickHouse/pull/112594) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se actualizaron Apache Arrow a la versión 25.0.0 y Apache ORC a la versión 2.3.1. [#112604](https://github.com/ClickHouse/ClickHouse/pull/112604) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Las compilaciones de cobertura (`WITH_COVERAGE`) ahora enlazan el entorno de ejecución de perfil compilado dentro del árbol a partir de las fuentes LLVM incorporadas, en lugar del archivo incluido con la cadena de herramientas clang del host. [#112607](https://github.com/ClickHouse/ClickHouse/pull/112607) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se actualizaron Protocol Buffers a la versión 35.1 y gRPC a la versión 1.83.0. [#112614](https://github.com/ClickHouse/ClickHouse/pull/112614) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se añadió un destino experimental de WebAssembly (`wasm64`, mediante Emscripten): `emcmake cmake` ahora configura el árbol y compila las capas inferiores. También se corrigió `-DENABLE_LIBFIU=OFF`, que no compilaba en ninguna plataforma. [#112911](https://github.com/ClickHouse/ClickHouse/pull/112911) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron todos los casos de `-Wunique-object-duplication`: singletons mutables definidos en encabezados que obtenían una copia por cada objeto compartido en lugar de una por proceso, principalmente moviendo la definición a un archivo `.cpp`. [#112995](https://github.com/ClickHouse/ClickHouse/pull/112995) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Al instalar un paquete `tgz` sobre un enlace simbólico colgante, ahora se conserva la cadena de enlaces simbólicos y se aplican el modo y el propietario del destino empaquetado, en lugar de un modo derivado de `umask`. [#112766](https://github.com/ClickHouse/ClickHouse/pull/112766) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En las compilaciones musl para `aarch64`, `memmove` ahora utiliza la implementación en ensamblador de rutinas optimizadas para ARM (compartida con `memcpy`) en lugar del bucle genérico de C que procesa una palabra a la vez. [#113502](https://github.com/ClickHouse/ClickHouse/pull/113502) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* En las compilaciones musl, `getaddrinfo` con `AI_ADDRCONFIG` ahora sigue la semántica de glibc, por lo que `localhost` ya no se resuelve primero como un `::1` inutilizable en entornos solo IPv4, y `sysconf` devuelve las sugerencias de tamaño de búfer de glibc para `getpwuid_r`/`getgrgid_r` en lugar de -1, lo que corrige libhdfs3. [#113485](https://github.com/ClickHouse/ClickHouse/pull/113485) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* En las compilaciones con musl, `sched_getcpu` ahora es una lectura de rseq (\~1 ns) en lugar de una syscall, igual que en glibc, lo que elimina la sobrecarga de tiempo del sistema de `percpu_arena` de jemalloc en cargas de trabajo con muchas asignaciones; musl también registra rseq de forma inmediata y exporta la ABI `__rseq_*` de glibc. [#113501](https://github.com/ClickHouse/ClickHouse/pull/113501) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se corrigieron las compilaciones locales (sin CI) que compilaban todo el código Rust de terceros incluido (el codec `PCO`, lecturas de Delta Lake mediante `delta-kernel-rs`, `prqlc`, `chdig`, `wasmtime` y la búsqueda difusa del historial del client mediante `skim`) con `opt-level = 0`. La variable de CMake `SANITIZE` se declaró con `option`, por lo que su valor predeterminado era el BOOL `OFF`, que no superaba las comprobaciones `STREQUAL ""` de «sin sanitizador», y todas las compilaciones configuradas sin un `-DSANITIZE=...` explícito seguían la ruta alternativa del sanitizador, que desactiva la optimización de Rust. [#114083](https://github.com/ClickHouse/ClickHouse/pull/114083) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Envío de capas de imágenes Docker comprimidas con zstd. [#114342](https://github.com/ClickHouse/ClickHouse/pull/114342) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Creación de paquetes Debian únicamente para las compilaciones de release. [#114739](https://github.com/ClickHouse/ClickHouse/pull/114739) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la compilación de `unit_tests_dbms` en configuraciones sin el conjunto completo de bibliotecas (`ENABLE_LIBRARIES=0` o `ENABLE_ROCKSDB=0`). [#115655](https://github.com/ClickHouse/ClickHouse/pull/115655) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267">
  ### Lanzamiento de ClickHouse 26.7, 2026-07-22. [Presentación](https://presentations.clickhouse.com/2026-release-26.7/), [Vídeo](https://www.youtube.com/watch?v=mKBNLaFOVDA)
</div>

<div id="268-backward-incompatible-change">
  #### Cambio incompatible con versiones anteriores
</div>

* El acceso a S3 originado desde SQL de usuario ya no resuelve de forma predeterminada las credenciales en la nube del propio servidor (entorno, IMDS/IRSA, perfil de instancia, archivos de configuración de AWS, STS basado en `role_arn`, metadatos OAuth de GCP); esa solicitud debe usar credenciales explícitas o `NOSIGN`. Las colecciones con nombre ahora establecen `use_environment_credentials` en `0` de forma predeterminada. El comportamiento anterior puede restaurarse por solicitud con `use_environment_credentials = 1` (o globalmente mediante la configuración `<s3>`) junto con el nuevo ajuste `s3_allow_server_credentials_in_user_queries` (deshabilitado de forma predeterminada). Las credenciales proporcionadas explícitamente y las credenciales de configuración aprovisionadas por el operador no se ven afectadas. Al iniciar el servidor o en `RESTORE`, una tabla persistente `S3`/`S3Queue`, un disco S3 dinámico o un `DataLakeCatalog` cuya definición resuelva dichas credenciales se carga de forma anónima (inaccesible hasta volver a proporcionar credenciales) en lugar de abortar el inicio, controlado por el nuevo ajuste del servidor `s3_load_table_anonymously_if_credentials_restricted` (habilitado de forma predeterminada). [#106855](https://github.com/ClickHouse/ClickHouse/pull/106855) ([Raúl Marín](https://github.com/Algunenano)).
* El glob `**/` (cualquier número de directorios) ahora también coincide con el mismo directorio. Antes, `**/` en los patrones glob no se trataba como un caso especial, por lo que `data/**/file.txt` no coincidía con `data/file.txt` (cero niveles de directorio). [#97676](https://github.com/ClickHouse/ClickHouse/pull/97676) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se rechaza el formato de archivo de copia de seguridad `zip`/`zipx` para copias de seguridad almacenadas en almacenamiento de objetos — destinos directos `S3(...)`/`AzureBlobStorage(...)` y destinos `Disk(...)` respaldados por S3 o Azure — tanto para `BACKUP` como para `RESTORE`. Zip requiere posicionamiento para leer su directorio central, lo que es muy lento sobre almacenamiento de objetos. Use en su lugar un formato basado en tar, como `tar.gz`. [#101770](https://github.com/ClickHouse/ClickHouse/pull/101770) ([Yash ](https://github.com/Onyx2406)).
* Se amplió el rango admitido de `DateTime64` de `[1900-01-01, 2299-12-31]` a `[0000-01-01, 9999-12-31]`. Los valores fuera del rango anterior ahora se calculan correctamente (mediante cctz) en lugar de saturarse en el límite. Con precisión 8 o 9, el rango sigue siendo más estrecho porque los ticks se almacenan como `Int64` (con precisión de nanosegundos, el máximo sigue siendo `2262-04-11`). Compatibilidad con versiones anteriores: si antes usaba fechas y horas fuera de rango, pero dependía de las reglas de saturación muy específicas dentro del rango antiguo, tenga en cuenta que ahora los resultados cambian para ser más correctos. [#107907](https://github.com/ClickHouse/ClickHouse/pull/107907) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `AggregatingMergeTree` ahora rechaza, en el momento de crear la tabla, esquemas en los que una columna no forma parte de la clave de ordenación ni es una medida de estado de agregación (`AggregateFunction`/`SimpleAggregateFunction`). Esas columnas se reducen silenciosamente a un valor arbitrario durante las fusiones en segundo plano, lo que produce resultados incorrectos para las consultas que usan `GROUP BY` o filtran sobre ellas. Establezca `allow_dimensions_outside_sorting_key = 1` para restaurar el comportamiento anterior. Cierra [#751](https://github.com/ClickHouse/ClickHouse/issues/751). [#108087](https://github.com/ClickHouse/ClickHouse/pull/108087) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se eliminó la configuración de planificación de cargas de trabajo basada en configuración (las secciones de configuración del servidor `resources` y `workload_classifiers`). Use en su lugar las consultas `CREATE RESOURCE` y `CREATE WORKLOAD`. Las secciones de configuración obsoletas se ignoran con una advertencia. [#108286](https://github.com/ClickHouse/ClickHouse/pull/108286) ([Sergei Trifonov](https://github.com/serxa)).
* ClickHouse ahora usa siempre el hash unificado de deduplicación de inserciones tanto para las inserciones síncronas como para las asíncronas; se han eliminado los comportamientos heredados de deduplicación por inserción. La configuración del servidor `insert_deduplication_version` se mantiene como salvaguarda de migración: el servidor se niega a iniciarse si está establecida en un valor heredado (`old_separate_hashes` o `compatible_double_hashes`). Para actualizar desde una versión que usaba un valor heredado, primero ejecute una versión que admita `compatible_double_hashes` (que escribe tanto los hashes heredados como los unificados). En el caso de las tablas replicadas, ejecútela durante al menos `replicated_deduplication_window_seconds` (una hora de forma predeterminada; las ventanas predeterminadas conservan los hashes unificados de todas las inserciones durante esa ventana, lo que se considera suficiente para un bucle de reintento de inserciones). En el caso de las tablas no replicadas con `non_replicated_deduplication_window` > 0, esa ventana se basa en el número de inserciones y no en el tiempo, así que ejecute `compatible_double_hashes` durante al menos esa cantidad de inserciones. Después, elimine la configuración (o establézcala en `new_unified_hash`) antes de actualizar a esta versión. [#108361](https://github.com/ClickHouse/ClickHouse/pull/108361) ([Sema Checherinda](https://github.com/CheSema)). Si nunca configuró `insert_deduplication_version`, puede ignorar este punto.
* Se eliminaron las funciones obsoletas desde hace tiempo `snowflakeToDateTime`, `snowflakeToDateTime64`, `dateTimeToSnowflake` y `dateTime64ToSnowflake`. Ya habían quedado obsoletas en la v24.6 en favor de `snowflakeIDToDateTime`, `snowflakeIDToDateTime64`, `dateTimeToSnowflakeID` y `dateTime64ToSnowflakeID`, que son las que deben usarse ahora. La configuración `allow_deprecated_snowflake_conversion_functions` (que antes permitía volver a habilitarlas) ahora también está obsoleta y no tiene ningún efecto. [#108711](https://github.com/ClickHouse/ClickHouse/pull/108711) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La configuración `use_legacy_to_time` ahora tiene `0` como valor predeterminado, por lo que `toTime` convierte los valores al tipo de dato `Time` en lugar de convertir una fecha con hora en una fecha fija. El comportamiento heredado sigue disponible mediante la función `toTimeWithFixedDate` o estableciendo `use_legacy_to_time = 1`. [#108729](https://github.com/ClickHouse/ClickHouse/pull/108729) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los modelos de Naive Bayes (utilizados por `naiveBayesClassifier`) ahora se configuran como un diccionario con el layout `NAIVE_BAYES`, construido en el momento de la carga a partir de una tabla de recuentos de n-gramas preagregados por clase, en lugar de la configuración anterior del lado del servidor (un archivo de configuración XML que hacía referencia a archivos de modelo `.bin` serializados), que ya no es compatible; los modelos existentes deben recrearse como diccionarios. Además de `naiveBayesClassifier`, se añaden tres funciones nuevas: `naiveBayesClassifierWithProb` devuelve la clase predicha junto con su probabilidad, `naiveBayesClassifierWithAllProbs` devuelve todas las clases con su probabilidad, y `naiveBayesNgrams` tokeniza el texto en n-gramas de la misma manera que lo hace el diccionario, para construir los datos de entrenamiento a partir de texto etiquetado sin procesar. Además, se han aplicado varias optimizaciones de rendimiento: en un modelo de lenguaje de trigramas de puntos de código de 9.7 MiB, usa \~49× menos memoria (de 1.84 GiB a 38 MiB), carga \~11× más rápido y clasifica \~11× más rápido. [#108773](https://github.com/ClickHouse/ClickHouse/pull/108773) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* La función `hasColumnInTable` ya no acepta los argumentos opcionales `hostname`, `username` y `password` para comprobar una columna en un servidor remoto arbitrario; solo se mantiene la forma `hasColumnInTable(database, table, column)`. El modo remoto eliminado suponía un problema de seguridad: permitía a cualquier usuario iniciar conexiones salientes a hosts arbitrarios y filtraba credenciales en los registros de consultas, y no estaba protegido por ningún privilegio. [#110881](https://github.com/ClickHouse/ClickHouse/pull/110881) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-new-feature">
  #### Nueva funcionalidad
</div>

* Se añadió `EXPLAIN ANALYZE` para analizar el rendimiento de las consultas: la consulta se ejecuta y las métricas reales de ejecución se muestran en el formato habitual del plan de consulta. [#106586](https://github.com/ClickHouse/ClickHouse/pull/106586) ([Kirill Kopnev](https://github.com/Fgrtue)). [#110668](https://github.com/ClickHouse/ClickHouse/pull/110668) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Se añadió compatibilidad con cláusulas `WHERE` en las definiciones de proyecciones. Las proyecciones con `WHERE` solo materializan las filas que cumplen el predicado, y el optimizador puede utilizarlas (basándose en costes) cuando el `WHERE` de la consulta implica el `WHERE` de la proyección. [#102347](https://github.com/ClickHouse/ClickHouse/pull/102347) ([S Bala Vignesh](https://github.com/SBALAVIGNESH123)).
* Se añadió la configuración `skip_unavailable_shards_mode` (también disponible como configuración del motor `Distributed`) para controlar qué excepciones de un segmento remoto se ignoran silenciosamente cuando `skip_unavailable_shards` está habilitado. [#79091](https://github.com/ClickHouse/ClickHouse/pull/79091) ([cjw](https://github.com/byte-sourcerer)).
* Se añadió la función de agregación `groupFormat`, que da formato a las filas de cada grupo usando un formato de salida especificado y devuelve el resultado como una cadena. [#93201](https://github.com/ClickHouse/ClickHouse/pull/93201) ([Yang Hu](https://github.com/wandersofb)).
* Se añadió `AWS_MSK_IAM` como valor admitido para `kafka_sasl_mechanism`, lo que permite a ClickHouse autenticarse con Amazon MSK mediante roles de IAM sin tener que gestionar credenciales SASL/SCRAM. [#96100](https://github.com/ClickHouse/ClickHouse/pull/96100) ([kalavt](https://github.com/kalavt)).
* Se añadió el combinador de funciones de agregación `-Tuple`, que aplica la función de agregación subyacente a cada elemento de una columna `Tuple` de forma independiente y devuelve un `Tuple` con los resultados, preservando los nombres de los elementos: `sumTuple(t)` para `t = (a, b)` devuelve `(sum(a), sum(b))`. Las funciones de agregación con varios argumentos toman una tupla por argumento, emparejada por posición: `corrTuple((a1, a2), (b1, b2))` devuelve `(corr(a1, b1), corr(a2, b2))`. A diferencia de `-ForEach` sobre arrays, los elementos pueden tener tipos diferentes, y se conservan los tipos y nombres de los resultados de cada elemento. [#98190](https://github.com/ClickHouse/ClickHouse/pull/98190) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Los índices de texto ahora admiten un argumento `postprocessor`: una expresión arbitraria que transforma cada token después de la tokenización (por ejemplo, `lower`). [#98939](https://github.com/ClickHouse/ClickHouse/pull/98939) ([Jimmy Aguilar Mena](https://github.com/Ergus)). [#108606](https://github.com/ClickHouse/ClickHouse/pull/108606) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Se añadió la tabla del sistema `system.stemmers`, que enumera todos los idiomas que pueden especificarse para la función `stem`. [#100611](https://github.com/ClickHouse/ClickHouse/pull/100611) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Se añadió compatibilidad con `WITH TIES` para `LIMIT` negativo. [#100930](https://github.com/ClickHouse/ClickHouse/pull/100930) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se añadió compatibilidad con los operadores postfijos `AT TIME ZONE` y `AT LOCAL` de SQL estándar como azúcar sintáctico de `toTimeZone`. La expresión `expr AT TIME ZONE zone` ahora equivale a `toTimeZone(expr, zone)`, y `expr AT LOCAL` equivale a `toTimeZone(expr, timeZone())`. [#106092](https://github.com/ClickHouse/ClickHouse/pull/106092) ([lizepeng](https://github.com/lvzhipin03)).
* El motor de tabla `URL` y la función de tabla `url` ahora redirigen al backend adecuado según el esquema de la URL: `file://` lo atiende el motor `File`, `s3://`/`gs://`/`gcs://`/`oss://` `S3`, `az://`/`azure://`/`abfss://`/`abfs://` `AzureBlobStorage`, `hdfs://` `HDFS` y `http(s)://` el motor `URL`, como antes. La configuración `url_base` se aplica antes de la redirección por esquema. Solo se redirigen los esquemas de S3 resueltos por los `url_scheme_mappers` predeterminados; otros esquemas de proveedores compatibles con S3 (`cos`, `obs`, ...) no se redirigen y requieren usar directamente el motor o la función `s3`. [#106093](https://github.com/ClickHouse/ClickHouse/pull/106093) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadieron los motores de tabla `Remote` y `RemoteSecure`, las contrapartes persistentes de las funciones de tabla `remote` y `remoteSecure`. `CREATE TABLE ... ENGINE = Remote('addresses', db, table, ...)` ahora funciona además de `CREATE TABLE ... AS remote(...)`. [#106189](https://github.com/ClickHouse/ClickHouse/pull/106189) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadieron los comandos independientes del motor `SYSTEM STOP`, `SYSTEM START`, `SYSTEM PAUSE`, `SYSTEM CANCEL` y `SYSTEM REFRESH`, junto con sus variantes para todo el servidor `... ALL BACKGROUND`, para controlar la actividad en segundo plano de las tablas `Kafka`, `RabbitMQ`, `NATS`, `S3Queue`/`AzureQueue` y de las vistas materializadas actualizables mediante una interfaz unificada. En el caso de las vistas materializadas actualizables, actúan como alias de los comandos existentes `SYSTEM ... VIEW`. Como parte del soporte de estos controles en NATS, las tablas JetStream ahora confirman los mensajes solo después de un insert correcto (al menos una vez; antes los mensajes se confirmaban automáticamente al entregarse y podían perderse si fallaba el insert). Una nueva configuración `nats_wait_for_flush_interval` (valor predeterminado `false`, para preservar el comportamiento anterior de baja latencia) permite mantener abierto un ciclo de consumo durante todo el intervalo de flush, en lugar de hacer flush en cuanto se vacía la cola. Una nueva configuración `nats_commit_on_select` hace que un `SELECT` directo sobre una tabla JetStream consuma (confirme) los mensajes que lee. [#107476](https://github.com/ClickHouse/ClickHouse/pull/107476) ([Samuel Krempaský](https://github.com/NIKTONIKTO717)).
* Se añadió soporte para que las funciones de tabla y los motores de tabla `mysql`, `postgresql` y `sqlite` acepten una consulta del usuario (en lugar de un nombre de tabla) y la pasen tal cual a la base de datos externa, ya sea escrita como una subconsulta `(SELECT ...)` o como `query('SELECT ...')`. La estructura de la tabla resultante se infiere a partir del resultado de la consulta, y dicha tabla es de solo lectura. Cierra [#46758](https://github.com/ClickHouse/ClickHouse/issues/46758). Basado en la implementación inicial de [Denis Vidiaev](https://github.com/the-devid) ([#79652](https://github.com/ClickHouse/ClickHouse/pull/79652)). [#107740](https://github.com/ClickHouse/ClickHouse/pull/107740) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadieron pestañas a la UI web de ClickHouse (Play) para trabajar con varias consultas a la vez. Las pestañas, sus títulos, parámetros, estado activo y pequeñas instantáneas de resultados se conservan entre recargas (los resultados grandes y las imágenes no se restauran), se integran con el historial del navegador y la URL, y se puede cambiar entre ellas con la rueda del ratón. [#107826](https://github.com/ClickHouse/ClickHouse/pull/107826) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se introduce el motor de tabla `QueryRunner`. Los registros insertados en una tabla `QueryRunner` representan consultas que ejecuta el motor. El motor puede usarse para la ejecución asíncrona de consultas, la ejecución por lotes de consultas generadas, el envío de consultas a clusters remotos, benchmarks, fuzzing y pruebas con tráfico en sombra. [#107888](https://github.com/ClickHouse/ClickHouse/pull/107888) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se añade el formato de salida `GeoJSON` para escribir documentos `FeatureCollection` de [GeoJSON](https://geojson.org/), generando una feature por fila. La única columna de tipo geo (`Point`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`, `Ring` o `Geometry`) pasa a ser la `geometry` de cada feature; una columna llamada `id` pasa a ser el `id` de la feature; y todas las columnas restantes pasan a ser las `properties` de la feature, donde una única columna de tipo objeto llamada `properties` (un `JSON`, `Map` o `Tuple` con nombre) se escribe directamente como el objeto `properties`. Un `Ring` se escribe como un `Polygon` de un solo anillo. El nuevo ajuste `format_geojson_validate_geometry` (habilitado de forma predeterminada) controla si las geometrías que no son formas GeoJSON válidas —como un `Polygon` con menos de cuatro puntos o un anillo de `Polygon` no cerrado— se rechazan al leer y escribir. Además, el formato de entrada `GeoJSON` ahora infiere la columna `id` como `Nullable(String)` en lugar de `String`, de modo que una feature con un miembro `"id": null` ausente o explícito se lea como `NULL` y se mantenga diferenciada de una cadena vacía `""`. Basado en la implementación inicial de [Mark Needham](https://github.com/mneedham) ([#98124](https://github.com/ClickHouse/ClickHouse/pull/98124)). [#108065](https://github.com/ClickHouse/ClickHouse/pull/108065) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se añadió la función `dotProductTransposed` (alias `scalarProductTransposed`), que calcula el producto interno aproximado entre una columna `QBit` y un vector de referencia, complementando las funciones existentes `L2DistanceTransposed` y `cosineDistanceTransposed`. [#108100](https://github.com/ClickHouse/ClickHouse/pull/108100) ([Alexey Milovidov](https://github.com/alexey-milovidov)). También se añadieron las funciones de distancia transpuesta cuantizada `cosineDistanceTransposedQuantized`, `L2DistanceTransposedQuantized` y `dotProductTransposedQuantized`, que operan sobre un `QBit(Int8)` de códigos Lloyd-Max de `quantizeBFloat16ToInt8`, descuantizando los códigos almacenados sobre la marcha. Un vector de referencia de coma flotante es la consulta de precisión completa, comparada con precisión `Float32` (una consulta `Float64` se reduce); una referencia `Array(Int8)` también se descuantiza, para una distancia simétrica entre cuantizado y cuantizado. [#109405](https://github.com/ClickHouse/ClickHouse/pull/109405) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió un parámetro `stride` opcional al tipo de dato `QBit` (`QBit(T, dimension, stride)`) que almacena grupos de dimensiones en flujos separados, de modo que una búsqueda vectorial pueda leer eficientemente solo las primeras dimensiones (por ejemplo, para Matryoshka embeddings). Las funciones de distancia transpuesta aceptan un cuarto argumento opcional, `used_dims`, para leer un número reducido de dimensiones. [#108103](https://github.com/ClickHouse/ClickHouse/pull/108103) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió soporte para el tipo de elemento `Int8` en el tipo de dato `QBit`, lo que permite el almacenamiento y la búsqueda vectorial por distancia transpuesta (`L2DistanceTransposed`, `cosineDistanceTransposed`) sobre vectores enteros cuantizados de 8 bits. [#108105](https://github.com/ClickHouse/ClickHouse/pull/108105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Nueva función `randomHadamardTransform(vector[, seed[, output_dims]])`: una transformada Hadamard aleatorizada determinista de un vector de coma flotante —una rotación ortogonal que preserva la norma, útil para el preprocesamiento de embeddings antes de la cuantización y, cuando se trunca, como proyección aleatoria de Johnson–Lindenstrauss / Hadamard aleatorizada con submuestreo. [#108227](https://github.com/ClickHouse/ClickHouse/pull/108227) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Soporte para configurar la carga diferida de diccionarios de forma individual con el ajuste `dictionary_lazy_load` en la definición del diccionario, anulando el ajuste global de servidor `dictionaries_lazy_load`, de modo que algunos diccionarios puedan cargarse de forma diferida mientras que otros se cargan inmediatamente. [#108314](https://github.com/ClickHouse/ClickHouse/pull/108314) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se añadió una página integrada de búsqueda de documentación, disponible en la ruta `/docs` de la interfaz HTTP, que ofrece búsqueda instantánea en la tabla `system.documentation` y muestra la documentación de referencia (con resaltado de sintaxis, fórmulas matemáticas y enlaces cruzados). [#108345](https://github.com/ClickHouse/ClickHouse/pull/108345) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió la función `xxHash64Spark`, que calcula valores `xxHash64` compatibles con Spark para entradas `String` y `NULL` usando la semilla `42` y devuelve `Int64`. [#108436](https://github.com/ClickHouse/ClickHouse/pull/108436) ([Lalit Yadav](https://github.com/lalitium)).
* `ALTER USER`, `ALTER ROLE` y `ALTER SETTINGS PROFILE` ahora aceptan `SET name = value` como alias de `MODIFY SETTING name = value`. Esto modifica configuraciones individuales in situ sin afectar al resto, a diferencia de la cláusula `SETTINGS` simple, que reemplaza toda la lista de configuraciones. Así es menos probable borrar accidentalmente otras configuraciones de un usuario. [#108722](https://github.com/ClickHouse/ClickHouse/pull/108722) ([Groene AI](https://github.com/groeneai)).
* Se admite `ALTER TABLE ... MODIFY CONSTRAINT [IF EXISTS] name CHECK expr` para cambiar in situ la expresión de una restricción existente. [#108768](https://github.com/ClickHouse/ClickHouse/pull/108768) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI: se añadió un selector de codificación por colores por columna (el icono 🌈 en el encabezado de una columna) para alternar entre barras, heatmap, categórico y sin visualización. Los modos seleccionados se conservan en la URL y en el historial del navegador. [#108873](https://github.com/ClickHouse/ClickHouse/pull/108873) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `Keeper` ahora maneja correctamente el opcode `CreateContainer` (19) de `ZooKeeper`, controlado mediante un nuevo indicador de feature opcional `create_container` (deshabilitado de forma predeterminada, igual que `create_ttl`). Una vez habilitado tras una upgrade completa del ensemble, los client externos de `ZooKeeper` (p. ej., Java `ZooKeeper` 3.9+) pueden crear nodos contenedor en `Keeper` en lugar de recibir `ConnectionLoss`; los nodos contenedor informan el valor centinela `ephemeralOwner` esperado, y un hilo de GC en segundo plano en el líder elimina automáticamente los contenedores sin hijos. Una solicitud `Create` normal que incluya el indicador de modo de creación `CONTAINER` sin el opcode 19 sigue siendo rechazada (`ZBADARGUMENTS`): no se conoce ningún client de `ZooKeeper` que emita esa combinación. Esto es solo compatibilidad de protocolo del lado del servidor: el propio client `ZooKeeper` de ClickHouse (`zkutil`) no cambia y no tiene API para crear nodos contenedor por sí mismo. [#108908](https://github.com/ClickHouse/ClickHouse/pull/108908) ([unintended](https://github.com/unintended)).
* Se añadieron las funciones `geoToUTM`, `UTMToGeo`, `geoToMGRS` y `MGRSToGeo` para convertir entre coordenadas geográficas WGS84 y los sistemas de coordenadas UTM y MGRS. [#108939](https://github.com/ClickHouse/ClickHouse/pull/108939) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió la función `digits(n, offset[, length])`, que devuelve los dígitos de `n` a partir del `offset` de base 1 y con una longitud de `length` dígitos, o hasta el final del número si se omite `length`. [#109012](https://github.com/ClickHouse/ClickHouse/pull/109012) ([Umang Agrawal](https://github.com/1000ms)).
* Se añadió la función aritmética `sqr` para calcular el cuadrado de un número. [#109061](https://github.com/ClickHouse/ClickHouse/pull/109061) ([Lalit Yadav](https://github.com/lalitium)).
* Se añadió una nueva función `dictGetRoot` que devuelve el ancestro más alto (la raíz) de una clave en un diccionario jerárquico. Es un equivalente práctico de `dictGetHierarchy(dict_name, key)[-1]`. [#109459](https://github.com/ClickHouse/ClickHouse/pull/109459) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añaden los comandos `SYSTEM UNLOAD DICTIONARY` y `SYSTEM UNLOAD DICTIONARIES` para liberar la memoria del diccionario sin eliminar su definición. Los diccionarios se volverán a cargar de forma diferida en el siguiente acceso. [#109639](https://github.com/ClickHouse/ClickHouse/pull/109639) ([Matheus Nerone](https://github.com/Manerone)).
* Se añaden las funciones `geometryIntersectCartesian` y `geometryIntersectSpherical`, que devuelven si dos geometrías se intersecan. A diferencia de `polygonsIntersectCartesian`/`polygonsIntersectSpherical`, aceptan cualquier tipo de datos geométrico (`Point`, `LineString`, `MultiLineString`, `Ring`, `Polygon`, `MultiPolygon`), incluido el tipo común `Geometry`, y los dos argumentos pueden ser de tipos distintos. [#110062](https://github.com/ClickHouse/ClickHouse/pull/110062) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los parámetros de consulta (sustituciones `{name:Type}`) ahora pueden usarse como valores de configuración, tanto en la cláusula `SETTINGS` de una consulta (como `SELECT` o `INSERT`) como en consultas `SET` independientes; por ejemplo, `SELECT ... SETTINGS max_threads = {threads:UInt64}` y `SET max_threads = {threads:UInt64}`. [#108760](https://github.com/ClickHouse/ClickHouse/pull/108760) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-experimental-feature">
  #### Funcionalidad experimental
</div>

* Expansión de comodines para la table function `url` y el table engine `URL`: los comodines en la ruta de la URL se expanden enumerando páginas índice HTTP (listados de directorios en HTML o plaintext) y extrayendo las URL coincidentes, con límites tanto en el tamaño de la página índice como en el número de directorios leídos. Se habilita mediante la configuración `allow_experimental_url_wildcard_from_index_pages`. [#95181](https://github.com/ClickHouse/ClickHouse/pull/95181) ([Yue Ni](https://github.com/niyue)).
* Los índices de texto ahora pueden almacenar posiciones de tokens (el argumento de índice `support_phrase_search`) para permitir la coincidencia exacta de frases con lecturas directas para la función `hasPhrase`. Requiere habilitar la configuración de `MergeTree` `allow_experimental_text_index_phrase_search`. [#103172](https://github.com/ClickHouse/ClickHouse/pull/103172) ([Elmi Ahmadov](https://github.com/ahmadov)). El argumento se introdujo inicialmente con el nombre `positions`. [#109900](https://github.com/ClickHouse/ClickHouse/pull/109900) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Se añade compatibilidad con la compactación de manifest files para tablas `Iceberg` mediante `OPTIMIZE TABLE ... MANIFEST` (protegido por la configuración `allow_experimental_iceberg_compaction`). Cierra [#95174](https://github.com/ClickHouse/ClickHouse/issues/95174). [#98178](https://github.com/ClickHouse/ClickHouse/pull/98178) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)). Se corrige `OPTIMIZE TABLE ... MANIFEST` para tablas `Iceberg` cuando las tuplas de partición del manifiesto no coinciden con su especificación de partición. [#111368](https://github.com/ClickHouse/ClickHouse/pull/111368) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Se añade una variante Real Doubles (RD) y un argumento opcional `ALP(AUTO|STD|RD)` al códec experimental `ALP`. `ALP` sin argumentos ahora selecciona automáticamente entre el esquema `STD` existente y `RD` en lugar de usar siempre `STD`. [#99654](https://github.com/ClickHouse/ClickHouse/pull/99654) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* Se añade una caché SLRU en memoria para metadata files deserializados de `Paimon` (manifest lists y manifests). Cuando se habilita mediante la configuración `use_paimon_metadata_files_cache`, las consultas repetidas sobre la misma tabla `Paimon` evitan volver a descargar y analizar los metadatos desde object storage. [#104657](https://github.com/ClickHouse/ClickHouse/pull/104657) ([XiaoBinMu](https://github.com/Binnn-MX)).
* Se añadieron "drivers" para funciones definidas por el usuario ejecutables. Un driver declarado en `<user_defined_executable_function_drivers_config>` puede usarse en `CREATE FUNCTION name ARGUMENTS (...) RETURNS T ENGINE = DriverName(...) AS '...code...'` para compilar o procesar de otro modo un fragmento de code de usuario en el momento de crear la función y producir una executable UDF utilizable. La configuración resultante se almacena en `<dynamic_user_defined_executable_functions_path>`, y la consulta original se conserva como `ATTACH FUNCTION` para que la función sobreviva a los reinicios del servidor. Un driver `c_function_body` de prueba de concepto compila y ejecuta cuerpos de funciones C dentro de contenedores Docker aislados en modo `executable_pool`. Basado en la implementación inicial de [Daniil Timižev](https://github.com/dahbka-lis) ([#77128](https://github.com/ClickHouse/ClickHouse/pull/77128)). [#105131](https://github.com/ClickHouse/ClickHouse/pull/105131) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Atiende `SELECT count(*) FROM t WHERE col <op> default(col)` a partir de estadísticas de dispersión por columna en `serialization.json`, sin escanear datos, cuando el predicado divide exactamente la columna entre valores predeterminados y no predeterminados (bajo la nueva configuración experimental `optimize_trivial_count_with_sparsity_filter`, desactivada de forma predeterminada). [#105890](https://github.com/ClickHouse/ClickHouse/pull/105890) ([Raúl Marín](https://github.com/Algunenano)).
* Las API request de Prometheus Query API a `/api/v1/query` y `/api/v1/query_range` ahora se registran en `system.query_log` con las métricas `read_rows` y `read_bytes`. [#106611](https://github.com/ClickHouse/ClickHouse/pull/106611) ([James Cunningham](https://github.com/JTCunning)).
* La ruta de lectura experimental de `ReaderExecutor` (`use_reader_executor`, desactivada de forma predeterminada) ahora puede mantener abierta una conexión remota al origen y reutilizarla en lecturas secuenciales, lo que reduce la cantidad de solicitudes al almacenamiento de objetos durante los escaneos. [#107735](https://github.com/ClickHouse/ClickHouse/pull/107735) ([Sema Checherinda](https://github.com/CheSema)). Ahora también admite la lectura de archivos cifrados, con una caché global de encabezados de cifrado configurada mediante la configuración del servidor `encryption_header_cache_size` y vaciada con `SYSTEM DROP ENCRYPTION HEADERS CACHE`. [#109702](https://github.com/ClickHouse/ClickHouse/pull/109702) ([Sema Checherinda](https://github.com/CheSema)).
* Se admiten lecturas del plan de consultas distribuidas para `SELECT ... FINAL` en tablas de la familia `MergeTree` cuando `make_distributed_plan` está habilitado. [#108148](https://github.com/ClickHouse/ClickHouse/pull/108148) ([Alexander Gololobov](https://github.com/davenger)).
* Se añade la ejecución experimental de réplicas paralelas basada en planes para consultas de `MergeTree`. [#108504](https://github.com/ClickHouse/ClickHouse/pull/108504) ([Igor Nikonov](https://github.com/devcrafter)).
* Se añadió la familia experimental de códecs vectoriales `Quantize` y una reescritura opcional de búsqueda vectorial aproximada en dos etapas sobre flujos complementarios cuantizados. [#108565](https://github.com/ClickHouse/ClickHouse/pull/108565) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Se recupera el códec de compresión con pérdidas experimental `SZ3`, con error acotado, para columnas `Float32`/`Float64` (y sus arrays), implementado originalmente por [Konstantin Vedernikov](https://github.com/scanhex12) ([#83088](https://github.com/ClickHouse/ClickHouse/pull/83088)). Requiere `allow_experimental_codecs`. [#108788](https://github.com/ClickHouse/ClickHouse/pull/108788) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Se corrigió la lectura de datos comprimidos con `SZ3('ALGO_LORENZO_REG', ...)`, que antes fallaba con `CORRUPTED_DATA`, y se evitó un comportamiento indefinido al comprimir valores de coma flotante no finitos (`NaN` e infinitos). [#110762](https://github.com/ClickHouse/ClickHouse/pull/110762) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió el códec experimental `ZXC` —un códec LZ asimétrico con compresión lenta y descompresión muy rápida, con una relación de compresión entre `LZ4` y `ZSTD`. Requiere `allow_experimental_codecs = 1`, y `system.compression_codecs` lo informa como experimental. [#110620](https://github.com/ClickHouse/ClickHouse/pull/110620) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#111007](https://github.com/ClickHouse/ClickHouse/pull/111007) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ahora puede autenticarse en OneLake usando un token Bearer obtenido previamente mediante la configuración `onelake_bearer_token`, en lugar de `onelake_client_id` y `onelake_client_secret`. Esto evita compartir un secreto de client de larga duración. El token no se renueva, por lo que la base de datos debe recrearse una vez que expire. [#109104](https://github.com/ClickHouse/ClickHouse/pull/109104) ([Asya Shneerson](https://github.com/asya-ch)).
* Las funciones de IA ya no toman la colección con nombre como primer argumento posicional. Las credenciales provienen de las configuraciones `ai_function_text_default_credentials` / `ai_function_embedding_default_credentials` o de una clave `credentials` en un argumento final opcional `Map(String, String)`, que también incluye parámetros ajustables (`model`, `max_tokens`, `temperature`, `system_prompt`, `instructions`, `dimensions`). [#109232](https://github.com/ClickHouse/ClickHouse/pull/109232) ([George Larionov](https://github.com/george-larionov)). La función `aiEmbed` ahora toma `model` como argumento posicional obligatorio (`aiEmbed(text, model[, params])`) en lugar de leerlo de la colección con nombre, lo que garantiza la reproducibilidad de los embeddings. [#110619](https://github.com/ClickHouse/ClickHouse/pull/110619) ([George Larionov](https://github.com/george-larionov)).
* Se corrigió `data_uncompressed_bytes` para los índices de omisión empaquetados en `skp_idx.packed` (mediante `packed_skip_index_max_bytes`): el tamaño sin comprimir informado era en realidad el tamaño comprimido, lo que también podía impedir la activación de `distributed_index_analysis`. [#109272](https://github.com/ClickHouse/ClickHouse/pull/109272) ([Raúl Marín](https://github.com/Algunenano)).
* Se añadió almacenamiento experimental de partes de datos empaquetadas para tablas `MergeTree`, que guarda la mayoría de los archivos de una parte en un único archivo `data.packed` en lugar de un archivo por flujo (las proyecciones y unos pocos archivos de servicio, como `txn_version.txt`, todavía se escriben por separado). Se controla mediante los ajustes `min_bytes_for_full_part_storage`, `min_rows_for_full_part_storage` y `min_level_for_full_part_storage`, y está deshabilitado de forma predeterminada. Una vez que una tabla escribe partes empaquetadas, las versiones anteriores del servidor ya no pueden leerlas, por lo que habilitar este formato impide volver a una versión anterior del servidor. [#108118](https://github.com/ClickHouse/ClickHouse/pull/108118) ([Raúl Marín](https://github.com/Algunenano)).
* Se añadió la función de tabla experimental `eval`, que evalúa una expresión constante como una cadena de consulta y ejecuta la única consulta `SELECT` resultante. La funcionalidad está deshabilitada de forma predeterminada y puede habilitarse con el ajuste `allow_experimental_eval_table_function`. Autor: [Yue Ni](https://github.com/niyue). [#110132](https://github.com/ClickHouse/ClickHouse/pull/110132) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió compatibilidad con compresión `zstd` al handler HTTP v1 experimental de remote-write de Prometheus. [#110907](https://github.com/ClickHouse/ClickHouse/pull/110907) ([James Cunningham](https://github.com/JTCunning)).
* La escritura en tablas `DeltaLake` (el ajuste `allow_experimental_delta_lake_writes`) pasó a Beta. [#107034](https://github.com/ClickHouse/ClickHouse/pull/107034) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se añadieron los `ProfileEvents` `DistributedPlanRemoteTasks`, `DistributedPlanLocalExecution` y `DistributedPlanHostsUsed` para observar la ejecución de planes de consulta distribuidos experimentales (`make_distributed_plan`). [#107985](https://github.com/ClickHouse/ClickHouse/pull/107985) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Se eliminó el almacenamiento experimental basado en RocksDB en Keeper (`experimental_use_rocksdb`). Pronto llegará un nuevo almacenamiento en disco mejorado. [#108000](https://github.com/ClickHouse/ClickHouse/pull/108000) ([Michael Kolupaev](https://github.com/al13n321)).
* El análisis de índices distribuido (una funcionalidad experimental controlada por el ajuste `distributed_index_analysis`) ahora envía listas grandes de nombres de partes de datos a servidores remotos como escalares, en lugar de incrustarlas en el texto de la consulta. Esto evita posibles fallos debidos a los límites de `max_ast_elements` / `max_query_size` y elimina la sobrecarga del análisis del AST. [#110419](https://github.com/ClickHouse/ClickHouse/pull/110419) ([Azat Khuzhin](https://github.com/azat)).
* Se optimizaron las funciones experimentales de agregación `timeSeries*ToGrid`: los buckets ahora se alinean tanto con el paso como con la ventana, y la agregación final es mucho más rápida cuando la ventana es mucho mayor que el paso. El formato de serialización del estado de agregación se cambió de forma incompatible (estas funciones son experimentales). [#106724](https://github.com/ClickHouse/ClickHouse/pull/106724) ([Vitaly Baranov](https://github.com/vitlibar)).
* Las tablas de destino externas de una tabla `TimeSeries` ahora se registran como dependencias referenciales: al igual que con las vistas materializadas, esto impide eliminar una tabla de destino externa antes de eliminar la tabla `TimeSeries` que la referencia (si `check_referential_table_dependencies` está habilitado). [#108388](https://github.com/ClickHouse/ClickHouse/pull/108388) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se añadió la función de PromQL `increase`. [#111023](https://github.com/ClickHouse/ClickHouse/pull/111023) ([Vitaly Baranov](https://github.com/vitlibar)).

<div id="268-performance-improvement">
  #### Mejora del rendimiento
</div>

* Los `JOIN` ahora pueden usar el índice de la primary key o los skip indexes de la tabla del lado izquierdo para podar gránulos. Esto se controla con la configuración `enable_join_runtime_filters_index_analysis`. [#109085](https://github.com/ClickHouse/ClickHouse/pull/109085) ([Shankar Iyer](https://github.com/shankar-iyer)).
* La serialización y deserialización de vectores de tipos trivialmente serializables ahora usan una única llamada de E/S del búfer en lugar de procesar los elementos individualmente. [#89842](https://github.com/ClickHouse/ClickHouse/pull/89842) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Optimiza las búsquedas inversas en diccionarios: un predicado de igualdad constante como `WHERE dictGet(dict, attr, key_expr) = value` ahora se pliega directamente en un filtro por clave constante (`key_expr = const`, `key_expr IN [...]` o `WHERE 0`) en lugar de reescribirse como una subconsulta `IN (SELECT ... FROM dictionary(...))`, y la ruta constante de `dictGetKeys` ahora se ejecuta en paralelo. [#91164](https://github.com/ClickHouse/ClickHouse/pull/91164) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Añade una nueva configuración `merge_tree_generic_exclusion_search_max_steps` que limita el número de pasos que el algoritmo de búsqueda de exclusión genérica dedica a analizar el índice de la primary key de cada parte de datos. El presupuesto se consume primero en los rangos de clave restantes más grandes, por lo que incluso un presupuesto pequeño poda la mayor parte de los datos; los rangos que no se hayan analizado por completo se leen enteros, por lo que los resultados de la consulta siguen siendo correctos, aunque pueden leerse más gránulos. El límite se aplica de forma flexible: puede superarse como máximo en `merge_tree_coarse_index_granularity` pasos, más un paso por cada rango en el que la parte ya esté dividida (por ejemplo, por la caché de condiciones de consulta). El valor predeterminado 0 significa pasos ilimitados. [#92779](https://github.com/ClickHouse/ClickHouse/pull/92779) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Las consultas con `ORDER BY` y `LIMIT` en vistas sobre tablas `Distributed` ahora usan la optimización de flujos ordenados por fusión: el `ORDER BY`/`LIMIT` externo se inserta en la consulta interna de una vista simple, de modo que cada shard ordena sus datos localmente y el coordinator fusiona flujos previamente ordenados en lugar de realizar una ordenación completa. [#94102](https://github.com/ClickHouse/ClickHouse/pull/94102) ([matanper](https://github.com/matanper)).
* Habilita `optimize_or_like_chain` de forma predeterminada. Cierra [#87779](https://github.com/ClickHouse/ClickHouse/issues/87779). [#94517](https://github.com/ClickHouse/ClickHouse/pull/94517) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Marca las tablas de log del sistema `MergeTree` rotadas no replicadas sin TTL como `table_readonly` para evitar operaciones en segundo plano innecesarias. La configuración `table_readonly` de `MergeTree` ahora también suprime todo el trabajo en segundo plano en una tabla `MergeTree` normal — merges normales, de TTL (`DELETE`/`MOVE`/recompresión) y de recompresión, mutations en segundo plano y movimientos de partes en segundo plano — y rechaza los comandos de partición mutantes (`ATTACH`/`MOVE`/`DROP`/`DROP DETACHED`/`FETCH`/`REPLACE PARTITION` y `MOVE PARTITION ... TO TABLE` hacia la tabla), además de los inserts, mutations y `OPTIMIZE` que ya rechazaba. Como resultado, una tabla `table_readonly` con TTL ya no elimina sus datos expirados mientras esta configuración esté habilitada. [#95079](https://github.com/ClickHouse/ClickHouse/pull/95079) ([Mathuranath Metivier](https://github.com/matt-metivier)).
* Mejora el rendimiento al recuperar un único registro de usuario de `system.users` cuando el servidor tiene muchos usuarios. [#96699](https://github.com/ClickHouse/ClickHouse/pull/96699) ([Alistair Evans](https://github.com/alistairjevans)).
* La lectura en orden con réplicas paralelas ahora usa la misma lógica que la lectura local para dividir la tabla en `max_threads` partes, con el fin de mejorar el paralelismo. [#101434](https://github.com/ClickHouse/ClickHouse/pull/101434) ([Nikita Taranov](https://github.com/nickitat)).
* Usa los límites del índice minmax de la partición para descartar más gránulos durante el análisis de la clave primaria en tablas `MergeTree`, cuando una columna de la clave primaria también es una columna de entrada de la clave de partición. Por ejemplo, en una tabla `MergeTree` con `ORDER BY (id, event_time)` y `PARTITION BY toYYYYMM(event_time)`, ClickHouse usará el índice minmax de la partición sobre `event_time` durante el análisis del índice de la clave primaria para tomar decisiones más precisas al descartar gránulos. Controlado por la nueva configuración `use_partition_minmax_for_primary_key_pruning` (habilitada de forma predeterminada). [#103480](https://github.com/ClickHouse/ClickHouse/pull/103480) ([UnamedRus](https://github.com/UnamedRus)).
* Habilita la caché de condiciones de consulta para las consultas que usan filtrado dinámico Top-K (`ORDER BY ... LIMIT n`). La entrada de caché se divide según los parámetros del plan Top-K, de modo que la misma consulta reutiliza los resultados en caché del filtro `WHERE`, mientras que un `LIMIT`, una columna de ordenación o una dirección de ordenación distintos generan una entrada nueva. [#104478](https://github.com/ClickHouse/ClickHouse/pull/104478) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió la configuración `use_constant_folding_in_index_analysis` (deshabilitada de forma predeterminada). Cuando está habilitada, el análisis de la clave primaria, `MinMax` y los índices de omisión de `MergeTree` aplica por separado a cada parte el plegado de constantes a nivel de partición en el predicado de filtro, lo que mejora el descarte en filtros cuyas ramas dependen de valores de partición; por ejemplo, `(a = 1 AND b >= 1) OR (a = 2 AND b > 10)` con `PARTITION BY a`. [#104582](https://github.com/ClickHouse/ClickHouse/pull/104582) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Inserta `LIMIT` en la agregación en orden para permitir la finalización anticipada cuando la clave de `GROUP BY` coincide con la clave de `ORDER BY` y con la clave de ordenación de la tabla, lo que reduce significativamente el número de filas leídas. [#104859](https://github.com/ClickHouse/ClickHouse/pull/104859) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Actualizar los eventos de perfil ahora es hasta 30 veces más rápido gracias al uso de operaciones atómicas por CPU para contadores globales del servidor y por usuario. Controlado por la configuración de servidor `user_profile_events_per_cpu` (usa alrededor de 640 KiB por usuario en 64 núcleos, así que con un número muy grande de usuarios puede tener sentido mantenerla deshabilitada). [#105056](https://github.com/ClickHouse/ClickHouse/pull/105056) ([Azat Khuzhin](https://github.com/azat)).
* Habilita `allow_aggregate_partitions_independently` de forma predeterminada. Cuando una clave de `GROUP BY` encaja con la clave de partición, ClickHouse puede agregar cada partición de forma independiente y omitir el paso de fusión global. Las heurísticas en tiempo de ejecución omiten automáticamente la optimización cuando la distribución de las particiones la hace desfavorable (muy pocas particiones, demasiadas particiones o tamaños de partición muy desiguales). [#105128](https://github.com/ClickHouse/ClickHouse/pull/105128) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las consultas de búsqueda vectorial con rescoring (`vector_search_with_rescoring = 1`) ahora calculan la distancia exacta solo para las filas devueltas por el índice vectorial, aplicando un filtro exacto por posición de fila en lugar de hacer rescoring por fuerza bruta de filas vecinas del mismo gránulo de `MergeTree`. [#105591](https://github.com/ClickHouse/ClickHouse/pull/105591) ([Sergey Kuznetsov](https://github.com/skuznetsov)). [#108846](https://github.com/ClickHouse/ClickHouse/pull/108846) ([Sergey Kuznetsov](https://github.com/skuznetsov)).
* Mejora el rendimiento del algoritmo de join `partial_merge` con claves `FixedString` al comparar secuencias de valores de una sola vez, en lugar de hacer una llamada de comparación por cada valor. [#105737](https://github.com/ClickHouse/ClickHouse/pull/105737) ([Artem Zuikov](https://github.com/4ertus2)).
* `SHOW TABLES` y `system.tables` en catálogos de lago de datos (Iceberg REST, Glue, Unity, Hive, Paimon) ahora trasladan al catálogo los predicados acotados por el espacio de nombres, evitando un escaneo completo del catálogo. Cierra [#105022](https://github.com/ClickHouse/ClickHouse/issues/105022). [#106029](https://github.com/ClickHouse/ClickHouse/pull/106029) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Se limitó la memoria no rastreada por CPU para evitar `overcommit` y errores por falta de memoria (los límites se configuran con la configuración del servidor `max_per_cpu_untracked_memory` y `per_cpu_untracked_memory_thread_buffer`). [#106055](https://github.com/ClickHouse/ClickHouse/pull/106055) ([Azat Khuzhin](https://github.com/azat)).
* Se aceleraron los operadores que escanean un stream ordenado en busca de secuencias de valores de clave iguales: `DISTINCT` in order, `LIMIT BY` in order, `LIMIT BY` negativo in order, y los joins `full_sorting_merge` y `partial_merge`. [#106502](https://github.com/ClickHouse/ClickHouse/pull/106502) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se implementaron un reader y un writer nativos para los formatos `Arrow` y `ArrowStream` que no usan la biblioteca Apache Arrow, lo que evita copias y conversiones de datos adicionales. Ahora es la opción predeterminada (settings `input_format_arrow_use_native_reader` y `output_format_arrow_use_native_writer`) y es más rápida tanto para lectura como para escritura. [#106522](https://github.com/ClickHouse/ClickHouse/pull/106522) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se volvió a habilitar LTO para jemalloc tras corregir una corrupción de la caché de hilos que aparecía con LTO, lo que mejora el rendimiento. [#106898](https://github.com/ClickHouse/ClickHouse/pull/106898) ([Azat Khuzhin](https://github.com/azat)).
* Se redujo el uso de memoria y se mejoró el rendimiento de los `JOIN`. El lado derecho de un hash join ahora usa una referencia compacta a filas de 8 bytes basada en índices, por lo que las entradas de la tabla hash de los joins `ALL` son tan pequeñas como las de los joins `ANY` para cualquier tipo de clave. Se hicieron benchmarks sobre consultas grandes de join `parallel_hash`: joins `INNER` y `ANY` de tablas de entre 100 y 300 millones de filas con claves `UInt64` y `String`, tanto únicas como duplicadas; la consulta mediana pasó a ser aproximadamente un 12% más rápida y usó alrededor de un 15% menos de memoria máxima, sin que ninguna consulta se volviera más lenta. Los joins `INNER` sobre claves `UInt64` obtuvieron la mayor mejora (mediana de aproximadamente un 21% más rápida con un 38% menos de memoria). [#107189](https://github.com/ClickHouse/ClickHouse/pull/107189) ([Harikrishnan Prabakaran](https://github.com/harikrishnan94)).
* Las join keys de una sola columna `LowCardinality(String)` no `Nullable` ahora son compatibles de forma nativa en el hash join. [#107264](https://github.com/ClickHouse/ClickHouse/pull/107264) ([Nikita Taranov](https://github.com/nickitat)).
* Se añadió el algoritmo `dpsub` para enumerar el orden de los joins (programación dinámica sobre subconjuntos), que proporciona planes de join óptimos con menor sobrecarga de optimización que `dpsize` y compatibilidad con joins no internos. [#107351](https://github.com/ClickHouse/ClickHouse/pull/107351) ([Fisnik Kastrati](https://github.com/fkastrati)).
* Se aceleró la carga de la filesystem cache al iniciar, codificando el tamaño de cada archivo de caché en su nombre (`<offset>_<size>`), lo que evita un `stat` por archivo. La carga de archivos de caché escritos por versiones anteriores sigue siendo compatible. [#107415](https://github.com/ClickHouse/ClickHouse/pull/107415) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se mejoró el rendimiento de `arrayElement` en `Array(LowCardinality(String))` y de las funciones `LIKE` de map en `Map` con claves o valores `LowCardinality(String)`, evitando la materialización innecesaria de cadenas. [#107450](https://github.com/ClickHouse/ClickHouse/pull/107450) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Se evita convertir una agregación de un solo nivel en una agregación de dos niveles cuando el uso de memoria es bajo, mediante el seguimiento de la memoria del propio estado de agregación en lugar de la memoria de toda la consulta. [#107490](https://github.com/ClickHouse/ClickHouse/pull/107490) ([Hechem Selmi](https://github.com/m-selmi)).
* Se aceleró el análisis de las consultas de agregación: la clave de caché para las estadísticas del tamaño de la tabla hash de agregación ahora se calcula a partir del plan de consulta en lugar de construir el AST completo de la consulta. [#107643](https://github.com/ClickHouse/ClickHouse/pull/107643) ([Dmitry Novik](https://github.com/novikd)).
* Mejora varias veces el rendimiento de `INTERSECT ALL` y `EXCEPT ALL` (el modo predeterminado de `INTERSECT` y `EXCEPT`) usando el valor de la fila como clave del multiconjunto, en lugar de aplicar SipHash a cada fila. [#107649](https://github.com/ClickHouse/ClickHouse/pull/107649) ([Raúl Marín](https://github.com/Algunenano)).
* Reconstruye los filtros de ROW POLICY sin mantener bloqueada la caché, lo que mejora la escalabilidad de las consultas durante `CREATE ROW POLICY` y `DROP ROW POLICY` concurrentes. [#107917](https://github.com/ClickHouse/ClickHouse/pull/107917) ([Azat Khuzhin](https://github.com/azat)).
* Acelera las funciones `match`, `extract`, `extractAll`, `replaceRegexpOne` y `replaceRegexpAll` para expresiones regulares simples compilándolas a código nativo con LLVM. Se controla con la nueva configuración `compile_regular_expressions` (habilitada de forma predeterminada); los patrones que quedan fuera del subconjunto admitido recurren de forma transparente al motor RE2. [#108004](https://github.com/ClickHouse/ClickHouse/pull/108004) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se aceleró la descompresión de ZSTD en AArch64 (ARM) para columnas con pequeños desplazamientos de coincidencia, como las columnas de enteros de ancho fijo, mediante la vectorización con NEON de copias solapadas con desplazamientos cortos. Por ejemplo, la descompresión de una columna `UInt64` es hasta \~2.3x más rápida en AWS Graviton 4. [#108049](https://github.com/ClickHouse/ClickHouse/pull/108049) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Usa la biblioteca `libdeflate` para la compresión y descompresión gzip/zlib/deflate, haciéndolas más rápidas (compresión \~1.15× con una mejor relación, descompresión \~1.4–1.5×) para datos `.gz`/HTTP/`url`/`s3` y el codec GZIP de Parquet. [#108074](https://github.com/ClickHouse/ClickHouse/pull/108074) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se mejoró el rendimiento de las consultas de búsqueda de texto combinadas con un filtro de clave primaria. [#108114](https://github.com/ClickHouse/ClickHouse/pull/108114) ([Anton Popov](https://github.com/CurtizJ)).
* Usa estadísticas en tiempo de ejecución recopiladas durante la primera ejecución de una consulta para optimizar las siguientes: el algoritmo de join `hash` puede cambiar automáticamente a `parallel_hash` en función de las estadísticas recopiladas. [#108125](https://github.com/ClickHouse/ClickHouse/pull/108125) ([Hechem Selmi](https://github.com/m-selmi)). El tamaño de los filtros en tiempo de ejecución de join se optimiza usando el tamaño de la tabla hash obtenido de las estadísticas en tiempo de ejecución del join, controlado por la nueva configuración `join_runtime_filter_size_from_hash_table_stats`. [#108313](https://github.com/ClickHouse/ClickHouse/pull/108313) ([Hechem Selmi](https://github.com/m-selmi)).
* Se mejoró la velocidad de descompresión de LZ4 para columnas de tamaño fijo y baja cardinalidad. [#108175](https://github.com/ClickHouse/ClickHouse/pull/108175) ([Nikita Taranov](https://github.com/nickitat)).
* Acelera las funciones `trimLeft`/`trimRight`/`trimBoth` para espacios en blanco predeterminados (y sus alias `ltrim`/`rtrim`/`trim`): las filas consecutivas que no necesitan recorte se copian en un solo lote, y el escaneo de espacios por fila solo se ejecuta en las filas que realmente tienen un espacio inicial o final. [#108177](https://github.com/ClickHouse/ClickHouse/pull/108177) ([Groene AI](https://github.com/groeneai)).
* Mejora el rendimiento de `replaceAll` y `replaceRegexpAll` cuando el patrón es un único carácter y el reemplazo es un único carácter (por ejemplo, `replaceRegexpAll(s, ' ', '_')`). Estos reemplazos ya no cambian la disposición de la cadena, por lo que ahora la columna se copia una sola vez y los bytes coincidentes se reescriben in situ, en lugar de ejecutar un bucle de búsqueda por coincidencia. [#108178](https://github.com/ClickHouse/ClickHouse/pull/108178) ([Groene AI](https://github.com/groeneai)).
* Mejora el rendimiento de la función `pointInPolygon` con un polígono constante. La caché de polígonos preprocesados ahora se indexa por los argumentos constantes en bruto, por lo que un polígono constante se analiza solo una vez (en un fallo de caché) en lugar de volver a analizarse en cada bloque de entrada. [#108184](https://github.com/ClickHouse/ClickHouse/pull/108184) ([Groene AI](https://github.com/groeneai)).
* Acelera el análisis de la representación canónica de fecha y hora `YYYY-MM-DD hh:mm:ss` en modo best-effort (`date_time_input_format = 'best_effort'`, `cast_string_to_date_time_mode = 'best_effort'`), que es el valor predeterminado. Esto corrige una regresión de rendimiento en el parsing introducida cuando esos valores predeterminados cambiaron de `basic` a `best_effort`. [#108187](https://github.com/ClickHouse/ClickHouse/pull/108187) ([Groene AI](https://github.com/groeneai)).
* Evita mantener los contadores de selectividad de `system.predicate_statistics_log` en la ruta de lectura de `MergeTree` cuando la funcionalidad está deshabilitada (`predicate_statistics_sample_rate = 0`, el valor predeterminado). Esto elimina una actualización atómica por gránulo y un popcount de filtro `O(rows)` en cada lectura, corrigiendo una regresión de rendimiento que se apreciaba sobre todo en AArch64. [#108190](https://github.com/ClickHouse/ClickHouse/pull/108190) ([Groene AI](https://github.com/groeneai)).
* Acelera el análisis de números de coma flotante a partir de texto con `precise_float_parsing = 1`, de modo que sea tan rápido como, o más rápido que, el parser predeterminado en casi todas las entradas. También actualiza la biblioteca `fast_float` incluida a la versión 8.2.10. [#108205](https://github.com/ClickHouse/ClickHouse/pull/108205) ([Raúl Marín](https://github.com/Algunenano)).
* Usa la biblioteca `simdutf` para las funciones de codificación y decodificación base64, mejorando su rendimiento. [#108333](https://github.com/ClickHouse/ClickHouse/pull/108333) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Optimiza `DISTINCT` para claves costosas de alta cardinalidad. [#108366](https://github.com/ClickHouse/ClickHouse/pull/108366) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* En compilaciones que no son de Linux (macOS y FreeBSD), jemalloc ya no purga las páginas sucias de forma agresiva (una syscall `madvise` por cada `free`); ahora usa un hilo de purga en segundo plano con un `dirty_decay_ms` finito, igual que en Linux. Esto acelera significativamente los workloads con alta rotación de asignaciones, como los CTE recursivos (\~2x en un benchmark de CTE recursivo en macOS), con un impacto despreciable en RSS. [#108430](https://github.com/ClickHouse/ClickHouse/pull/108430) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Acelera la planificación de consultas en el analyzer para expresiones que hacen referencia al mismo alias `WITH` o repiten la misma subexpresión muchas veces (por ejemplo, cadenas `if`/`multiIf` profundamente anidadas), al no reconstruir las subexpresiones compartidas al construir el DAG de acciones. [#108523](https://github.com/ClickHouse/ClickHouse/pull/108523) ([Dmitry Novik](https://github.com/novikd)).
* Los Runtime Filters ahora se construyen sobre claves de igualdad incluso cuando la cláusula `ON` también contiene predicados de no igualdad, lo que reduce el número de filas que entran en el hash join en joins que combinan condiciones de igualdad y no igualdad. `LEFT ANTI JOIN` no se ve afectado. [#108579](https://github.com/ClickHouse/ClickHouse/pull/108579) ([Antonio Álvarez Caballero](https://github.com/29antonioac)).
* Habilita `-fno-math-errno` globalmente en toda la base de código, lo que permite al compilador optimizar mejor las funciones matemáticas. [#108628](https://github.com/ClickHouse/ClickHouse/pull/108628) ([Nikita Taranov](https://github.com/nickitat)).
* Reduce el umbral de precarga por software para las tablas hash de agregación y join de `4 * L2 cache size` a `L2 cache size`, de modo que la precarga se habilite una vez que la tabla hash ya no quepa en L2. Esto corrige una regresión en `GROUP BY` y `JOIN` sobre tablas hash de tamaño mediano (\~1-8 MiB) en plataformas cuyo L2 reportado es grande (p. ej., AArch64 con un L2 de 2 MiB). [#108655](https://github.com/ClickHouse/ClickHouse/pull/108655) ([Groene AI](https://github.com/groeneai)).
* Mejora el rendimiento de las funciones de ventana. Las consultas de ventana sobre tablas anchas que incluyen `SELECT *` ahora usan mucha menos memoria y se ejecutan más rápido. Las agregaciones de ventana, incluidas `quantile*`, `uniq*` y `groupArray`, son más rápidas con `OVER ()` y `OVER (ORDER BY ... RANGE ...)`. La función `cume_dist` también es más rápida, y las ventanas que usan `PARTITION BY` u `ORDER BY` ahora rinden mejor en columnas con muchos valores repetidos. [#108688](https://github.com/ClickHouse/ClickHouse/pull/108688) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se aceleró el análisis de consultas para consultas con muchas cadenas `AND` de comparaciones, o con cadenas `AND` muy grandes: la optimización `optimize_and_compare_chain` ahora está limitada por un presupuesto de trabajo (nuevo ajuste `optimize_and_compare_chain_max_hash_work`) en lugar de aplicar hash a una gran parte del árbol de consultas, y la resolución de lambda ya no vuelve a calcular los hashes del cuerpo de la lambda para su protección contra recursión. [#108757](https://github.com/ClickHouse/ClickHouse/pull/108757) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una regresión de rendimiento al leer columnas `JSON`/`Dynamic` con varios hilos: una búsqueda por valor del ajuste `input_format_binary_max_type_complexity` provocaba contención en el recuento de referencias del contexto de consulta compartido, lo que serializaba las lecturas en paralelo; ahora el valor del ajuste se almacena en caché por hilo. [#108797](https://github.com/ClickHouse/ClickHouse/pull/108797) ([Seva Potapov](https://github.com/seva-potapov)).
* Se corrigió una regresión de rendimiento (introducida en [#71781](https://github.com/ClickHouse/ClickHouse/issues/71781)) por la que la lectura de muchos archivos pequeños desde almacenamiento de objetos mediante `s3` y otras funciones de tabla dejó de hacer prefetch y pasó a lecturas síncronas, lo que ralentizaba considerablemente las lecturas monohilo y de baja concurrencia de gran cantidad de archivos diminutos. [#108872](https://github.com/ClickHouse/ClickHouse/pull/108872) ([Nikita Fomichev](https://github.com/fm4v)). El prefetch inicial de objetos pequeños ahora también se lanza cuando las lecturas desde almacenamiento de objetos pasan por la caché del sistema de archivos (`filesystem_cache_name`), por lo que las lecturas de muchos archivos pequeños (por ejemplo, la ingestión de `S3Queue`) con la caché habilitada ya no son síncronas ni están limitadas por la latencia. [#109478](https://github.com/ClickHouse/ClickHouse/pull/109478) ([Nikita Fomichev](https://github.com/fm4v)).
* Analiza literales de arrays y tuplas profundamente anidados en tiempo lineal en lugar de cuadrático. [#108892](https://github.com/ClickHouse/ClickHouse/pull/108892) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Reduce la sobrecarga derivada de la contención de bloqueos en el algoritmo de join `parallel_hash`. [#108938](https://github.com/ClickHouse/ClickHouse/pull/108938) ([Hechem Selmi](https://github.com/m-selmi)).
* Acelera `estimateCompressionRatio` para columnas codificadas con `T64` al calcular analíticamente el tamaño comprimido en lugar de comprimir. [#109054](https://github.com/ClickHouse/ClickHouse/pull/109054) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Elimina un cuello de botella monohilo en la fase de shuffle de los planes de consultas distribuidas: ahora cada stream ascendente distribuye sus filas de forma independiente por bucket de destino, en lugar de hacer pasar todo el flujo de datos por una única transformación. [#109206](https://github.com/ClickHouse/ClickHouse/pull/109206) ([Alexander Gololobov](https://github.com/davenger)).
* Se redujo el uso de CPU en inactividad del Keeper server. [#109255](https://github.com/ClickHouse/ClickHouse/pull/109255) ([Michael Kolupaev](https://github.com/al13n321)).
* Acelera la serialización y las fusiones de columnas `JSON` cuyos datos compartidos contienen muchas rutas dispersas: al aplanar los datos compartidos en columnas por ruta, se elimina el escaneo por fila de todas las columnas de ruta acumuladas, y los huecos se rellenan en bloque en lugar de insertar valores predeterminados celda por celda. [#109341](https://github.com/ClickHouse/ClickHouse/pull/109341) ([Groene AI](https://github.com/groeneai)).
* Reduce la sobrecarga de CPU de la evaluación de expresiones en consultas con un gran número de columnas (p. ej., vector search sobre una columna `QBit` con un stride pequeño, donde cada vector se expande en cientos de sub-columnas de planos de bits que se pasan todas a una sola llamada `*DistanceTransposed`). [#109380](https://github.com/ClickHouse/ClickHouse/pull/109380) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Mejora el rendimiento de las funciones Geo de H3 (`h3ToGeoBoundary`, `h3ToGeo`, `h3CellAreaM2`/`h3CellAreaRads2`, `geoToH3`) al calcular conjuntamente pares seno/coseno y eliminar llamadas trigonométricas redundantes en las transformadas de coordenadas. Los resultados no cambian (idénticos bit a bit). [#109399](https://github.com/ClickHouse/ClickHouse/pull/109399) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Mejora el rendimiento de las comparaciones (`<`, `>`, `<=`, `>=`) de tipos enteros de gran tamaño (`Int128`, `UInt128`, `Int256`, `UInt256` y tipos basados en ellos, como `Decimal128`) hasta 7 veces, así como de la conversión de enteros con signo a `Int256` (hasta 7 veces en datos con signos mixtos), al hacer que el código de comparación y extensión de signo no use ramas. [#109474](https://github.com/ClickHouse/ClickHouse/pull/109474) ([Manuel](https://github.com/raimannma)).
* Se optimizó `uniqCombined` (incluido el caso de aggregation sin claves) y `uniqHLL12`. [#109794](https://github.com/ClickHouse/ClickHouse/pull/109794) ([Anton Popov](https://github.com/CurtizJ)). [#109831](https://github.com/ClickHouse/ClickHouse/pull/109831) ([Anton Popov](https://github.com/CurtizJ)).
* Las funciones `arraySort` y `arrayReverseSort` son varias veces más rápidas con arrays numéricos (incluidos `Decimal` y `DateTime64`) cuando se llaman sin una lambda. [#109832](https://github.com/ClickHouse/ClickHouse/pull/109832) ([Manuel](https://github.com/raimannma)).
* Acelera `addDays`, `addWeeks`, `subtractDays` y `subtractWeeks` para valores `DateTime` y `DateTime64` en zonas horarias con desplazamiento fijo (como UTC) utilizando una ruta rápida aritmética. [#109836](https://github.com/ClickHouse/ClickHouse/pull/109836) ([Manuel](https://github.com/raimannma)).
* Se optimizó el análisis del índice de texto. [#109886](https://github.com/ClickHouse/ClickHouse/pull/109886) ([Anton Popov](https://github.com/CurtizJ)).
* Paraleliza el procesamiento de filas no emparejadas en el join algorithm `parallel_hash` en dos casos más: cuando hay un filtro residual y cuando las join keys son pequeñas (mapa hash de un solo nivel). [#110008](https://github.com/ClickHouse/ClickHouse/pull/110008) ([Hechem Selmi](https://github.com/m-selmi)).
* Las respuestas de la interfaz web integrada (la UI de Play, dashboards y handlers de archivos estáticos) ahora se comprimen según el header `Accept-Encoding` del client, usando zstd, gzip, deflate, brotli, lz4, xz, snappy o bzip2. Por ejemplo, la página `/play` pasa de \~350 KB sin comprimir a menos de 120 KB con zstd, lo que reduce los tiempos de carga en connections lentas. Las respuestas ya comprimidas se dejan intactas y se emite `Vary: Accept-Encoding` para una partición correcta de la CDN y la caché. [#110108](https://github.com/ClickHouse/ClickHouse/pull/110108) ([Sayantanu Dey](https://github.com/sayantanu-dey)).
* Inserta un filtro por debajo de una función de ventana o de `LIMIT BY` cuando sea seguro: un predicado escrito por encima de ellos (un `WHERE` externo alrededor de la subconsulta, o una conjunción en `QUALIFY`) que haga referencia solo a las columnas de `PARTITION BY` de la ventana, o solo a las columnas clave de `LIMIT BY` (para `LIMIT n BY` con `n >= 1` y sin `OFFSET`), ahora llega hasta el almacenamiento y permite la poda por clave primaria y por partición, los skip indexes y las proyecciones. Por ejemplo, `SELECT ... row_number() OVER (PARTITION BY key ORDER BY ts) AS rn ... QUALIFY rn = 1 AND key = 'x'` ya no lee ni aplica funciones de ventana a toda la tabla. [#110114](https://github.com/ClickHouse/ClickHouse/pull/110114) ([Groene AI](https://github.com/groeneai)). [#110116](https://github.com/ClickHouse/ClickHouse/pull/110116) ([Groene AI](https://github.com/groeneai)).
* Con `join_use_nulls = 1`, un `WHERE` que rechaza NULL y hace referencia a columnas de ambos lados de un join externo (p. ej., `WHERE l.k = 42 AND r.k = 42`) ahora convierte el join en `INNER` (o `LEFT`/`RIGHT`) y aplica poda por clave primaria, igual que con `join_use_nulls = 0`. Anteriormente, esta conversión se omitía en este caso y ambas tablas se leían por completo. [#110121](https://github.com/ClickHouse/ClickHouse/pull/110121) ([Groene AI](https://github.com/groeneai)).
* Las funciones con un único argumento `Nullable` no constante ahora comparten el mapa de NULL del argumento con el resultado, en lugar de asignar y fusionar uno nuevo. [#110151](https://github.com/ClickHouse/ClickHouse/pull/110151) ([Manuel](https://github.com/raimannma)).
* Evita una asignación en el heap por cada comprobación de hiperrectángulo en el análisis del índice de clave primaria, lo que acelera el filtrado de marcas entre un 5 y un 26 % según la forma de la consulta. [#110153](https://github.com/ClickHouse/ClickHouse/pull/110153) ([Manuel](https://github.com/raimannma)).
* Mejora el rendimiento de las funciones `arrayMin` y `arrayMax` sobre arrays numéricos en \~1,3-1,5x mediante una reducción vectorizada en lugar de un bucle de comparación elemento por elemento. [#110163](https://github.com/ClickHouse/ClickHouse/pull/110163) ([Manuel](https://github.com/raimannma)).
* Vectoriza la descompresión del códec `Delta`. La decodificación ahora es entre 1,5 y 5 veces más rápida para tipos de datos de 8/16/32 bits, lo que hace que los escaneos de columnas comprimidas con `Delta` sean hasta un 20 % más rápidos. [#110189](https://github.com/ClickHouse/ClickHouse/pull/110189) ([Manuel](https://github.com/raimannma)).
* Acelera las funciones de búsqueda de cadenas (`like`, `position`, `match`, `countSubstrings`, `hasToken`, etc.) sobre columnas `Enum` con una aguja constante buscando solo los nombres de enum distintos y reasignando los resultados a cada fila, en lugar de buscar en todas las filas. [#110325](https://github.com/ClickHouse/ClickHouse/pull/110325) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Acelera las funciones de agregación `groupBitOr`/`groupBitAnd`/`groupBitXor` y la familia de varianza (`varPop`, `varSamp`, `stddevPop`, `stddevSamp`, `skewPop`, `skewSamp`, `kurtPop`, `kurtSamp`, `covarPop`, `covarSamp`, `corr`) con procesamiento por lotes vectorizado: hasta 4x más rápido con el combinador `-If` en condiciones impredecibles, y hasta 3x más rápido para la familia de varianza sin él. [#110461](https://github.com/ClickHouse/ClickHouse/pull/110461) ([Manuel](https://github.com/raimannma)).
* Acelera el análisis del índice de texto (la etapa que selecciona qué gránulos leer): usa búsqueda por exclusión en lugar de iterar sobre todos los gránulos y evita crear un bitmap temporal para cada comprobación de rango. [#110530](https://github.com/ClickHouse/ClickHouse/pull/110530) ([Anton Popov](https://github.com/CurtizJ)).
* Tener en cuenta el tamaño en disco de las subcolumnas de `Map` en la optimización automática de `PREWHERE`. Esto corrige una regresión de rendimiento en `PREWHERE` introducida en [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200). Parte de [#110462](https://github.com/ClickHouse/ClickHouse/issues/110462). [#110623](https://github.com/ClickHouse/ClickHouse/pull/110623) ([Pavel Kruglov](https://github.com/Avogar)).
* Acelerar el análisis de valores `UUID` a partir de texto (p. ej., `JSONExtract` a `LowCardinality(UUID)`, `toUUID`, `CAST AS UUID`) validando y convirtiendo dígitos hexadecimales en una sola pasada en lugar de dos. [#110625](https://github.com/ClickHouse/ClickHouse/pull/110625) ([Groene AI](https://github.com/groeneai)).
* Mejorar significativamente el rendimiento de las funciones de agregación `timeSeries*ToGrid` mediante implementaciones más rápidas de ordenación y tablas hash. [#110875](https://github.com/ClickHouse/ClickHouse/pull/110875) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Las consultas como `SELECT * FROM t WHERE id` ahora usan omisión de índices en la columna `id`. Cierra [#89222](https://github.com/ClickHouse/ClickHouse/issues/89222). [#89603](https://github.com/ClickHouse/ClickHouse/pull/89603) ([Aditya Chopra](https://github.com/adityachopra29)).
* Se añadió la configuración `query_plan_merge_expression_into_join` (habilitada de forma predeterminada) para permitir la fusión de pasos de expresiones en pasos de `JOIN` durante la optimización de reordenamiento de joins. Esto permite reordenar joins entre subconsultas que encapsulan joins (p. ej., cuando un `JOIN` está dentro de una subconsulta con columnas calculadas), lo que da lugar a una mejor optimización de árboles de joins complejos. [#98533](https://github.com/ClickHouse/ClickHouse/pull/98533) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Optimizar cadenas de `AND` con múltiples condiciones de comparación sobre la misma expresión: detectar contradicciones (p. ej., `a < 3 AND a > 5` → `false`) y eliminar condiciones redundantes (p. ej., `a = 3 AND a < 5` → `a = 3`). [#99736](https://github.com/ClickHouse/ClickHouse/pull/99736) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Los Materialized CTEs referenciados desde múltiples ramas de una consulta `UNION` ahora se materializan una sola vez y se comparten entre todas las ramas. Antes, cada rama recibía su propia copia del CTE, que se insertaba en línea y se evaluaba por separado. [#102107](https://github.com/ClickHouse/ClickHouse/pull/102107) ([Dmitry Novik](https://github.com/novikd)).
* Los hilos de `BackgroundSchedulePool` ahora se crean de forma diferida y bajo demanda, en lugar de todos a la vez al iniciar el servidor. Una nueva configuración del servidor, `background_schedule_pool_initial_size` (valor predeterminado: `16`), controla cuántos workers se generan previamente; el grupo crece hasta `background_schedule_pool_size` cuando es necesario. Esto reduce el número de hilos inactivos en servidores con poca carga. Cierra [#85265](https://github.com/ClickHouse/ClickHouse/issues/85265). [#105066](https://github.com/ClickHouse/ClickHouse/pull/105066) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Omitir cargas innecesarias de archivos de marcas para la serialización avanzada de datos compartidos del tipo `JSON`. [#107051](https://github.com/ClickHouse/ClickHouse/pull/107051) ([Pavel Kruglov](https://github.com/Avogar)).
* La caché de polígonos constantes preprocesados para la función `pointInPolygon` ahora se comparte entre consultas e hilos, y está limitada por la nueva configuración del servidor `point_in_polygon_cache_size` (valor predeterminado: 256 MiB; `0` desactiva la caché; puede cambiarse en tiempo de ejecución). Antes, la caché mantenía hasta `max_threads` copias de cada polígono preprocesado, crecía sin límite con polígonos distintos y no se liberaba hasta reiniciar el servidor. Puede vaciarse con `SYSTEM DROP POINT IN POLYGON CACHE`, y el uso actual se informa en `system.metrics` como `PointInPolygonCacheBytes`, `PointInPolygonCacheCells` y `PointInPolygonCacheSizeLimit`. Cierra [#106393](https://github.com/ClickHouse/ClickHouse/issues/106393). [#107247](https://github.com/ClickHouse/ClickHouse/pull/107247) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Keeper ya no mantiene el bloqueo interno de snapshots mientras serializa y escribe un snapshot en disco o mueve snapshots entre discos, por lo que las transferencias de snapshots a otros nodos y el procesamiento de Raft ya no se ven bloqueados por la creación local de snapshots. [#107595](https://github.com/ClickHouse/ClickHouse/pull/107595) ([Antonio Andelic](https://github.com/antonio2368)).
* Paraleliza la expulsión en segundo plano de la caché del sistema de archivos (controlada por la configuración `keep_free_space_ratio`). Se añadió una nueva configuración, `keep_free_space_eviction_threads`, para controlar el paralelismo, y se aumentó el valor predeterminado de `keep_free_space_remove_batch` de `100` a `250`. [#108147](https://github.com/ClickHouse/ClickHouse/pull/108147) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Limita el número de partes preparadas simultáneamente en la copia de Azure blob storage de lectura y posterior escritura (usada por las copias de seguridad cuando la copia nativa no está disponible) a `max_inflight_parts_for_one_file`, lo que evita un uso excesivo de memoria cuando se copian muchos archivos grandes en paralelo. [#108232](https://github.com/ClickHouse/ClickHouse/pull/108232) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Se habilitaron globalmente las tres cachés del índice de texto; antes, solo estaban habilitadas dentro de las consultas. Además, el tamaño de la caché de las posting lists ahora es cero, lo que en la práctica vuelve a desactivarla, porque las posting lists son grandes y almacenarlas en caché resulta demasiado costoso. [#108274](https://github.com/ClickHouse/ClickHouse/pull/108274) ([Robert Schulze](https://github.com/rschu1ze)).
* Añade compresión en memoria de marks en streaming durante la carga de marks para reducir el pico de uso de memoria. Cierra [#108285](https://github.com/ClickHouse/ClickHouse/issues/108285). [#108325](https://github.com/ClickHouse/ClickHouse/pull/108325) ([Pavel Kruglov](https://github.com/Avogar)).
* La nueva configuración de la caché del sistema de archivos `reserve_granularity` (valor predeterminado: 4 MiB) reserva espacio por adelantado en gránulos más grandes, lo que reduce la contención de bloqueos en la ruta crítica de reserva de espacio de la caché del sistema de archivos. [#108369](https://github.com/ClickHouse/ClickHouse/pull/108369) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Reduce la cantidad de memoria utilizada por los metadatos de la caché del sistema de archivos (por file segment y por clave). [#108477](https://github.com/ClickHouse/ClickHouse/pull/108477) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Las consultas a `system.iceberg_history` con filtros `WHERE` sobre las columnas `database` y `table` ahora acceden solo a las bases de datos coincidentes, lo que puede ahorrar tiempo si tienes muchas bases de datos remotas no relacionadas en el servidor. [#108492](https://github.com/ClickHouse/ClickHouse/pull/108492) ([Den Kalantaevskii](https://github.com/Diskein)).
* Se eliminó el bloqueo innecesario en la caché del sistema de archivos para reducir la contención de bloqueos. [#108932](https://github.com/ClickHouse/ClickHouse/pull/108932) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se redujo el uso de memoria en el manejo de metadatos de `BACKUP` y `RESTORE`. Al abrir una copia de seguridad (para `RESTORE` o como base de un `BACKUP` incremental), ahora se analizan los metadatos `.backup` como un flujo en lugar de cargarlos en un árbol de documentos XML en memoria, lo que en copias de seguridad grandes (especialmente incrementales) evita asignar un árbol DOM de varios gigabytes. [#109107](https://github.com/ClickHouse/ClickHouse/pull/109107) ([Julia Kartseva](https://github.com/jkartseva)). Al finalizar un `BACKUP`, ya no se copia la información de todos los archivos a un vector temporal, lo que en copias de seguridad con millones de archivos podía costar transitoriamente varios gigabytes. [#109861](https://github.com/ClickHouse/ClickHouse/pull/109861) ([Julia Kartseva](https://github.com/jkartseva)). Al escribir entrada de copia de seguridad, tampoco se vuelve a copiar la lista de metadatos de archivos del host actual. [#111162](https://github.com/ClickHouse/ClickHouse/pull/111162) ([Julia Kartseva](https://github.com/jkartseva)).
* Se redujo el consumo de memoria en el agregador. [#109224](https://github.com/ClickHouse/ClickHouse/pull/109224) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se añadió compatibilidad con la caché de condiciones de consulta para archivos `Parquet` locales leídos mediante el motor de tabla `File` (antes compatible solo con almacenamiento de objetos y lagos de datos). [#109247](https://github.com/ClickHouse/ClickHouse/pull/109247) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se redujo entre 2 y 2,5 veces el uso de memoria de la caché de cabeceras del índice de texto. En la caché caben más cabeceras de partes de datos (configuración `text_index_header_cache_size`), lo que reduce las lecturas de disco en las consultas de búsqueda de texto. [#109332](https://github.com/ClickHouse/ClickHouse/pull/109332) ([Anton Popov](https://github.com/CurtizJ)).
* Las funciones de distancia vectorial transpuestas `L2DistanceTransposed`, `cosineDistanceTransposed` y `dotProductTransposed` ahora aplican la optimización de lectura parcial por plano de bits a columnas `Nullable(QBit)`, leyendo solo los planos de bits solicitados en lugar de la columna completa. [#109358](https://github.com/ClickHouse/ClickHouse/pull/109358) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `IS NOT DISTINCT FROM` y `IS TRUE` ahora usan índices de clave primaria y MinMax para podar gránulos, igual que `=`. Antes, `k IS NOT DISTINCT FROM 42` y `(k = 42) IS TRUE` escaneaban todos los gránulos. [#110006](https://github.com/ClickHouse/ClickHouse/pull/110006) ([Groene AI](https://github.com/groeneai)).
* Las conexiones agrupadas ya no reciben ping antes de cada uso. Esto elimina un viaje de ida y vuelta `Ping`-`Pong` que se añadía a cada conexión reutilizada, lo que reduce la latencia de las consultas distribuidas y de `clickhouse-benchmark`. Una conexión agrupada obsoleta se detecta con un `poll` de tiempo de espera cero (una comprobación sin bloqueo que no añade ningún viaje de ida y vuelta) y se recupera reconectando. [#110068](https://github.com/ClickHouse/ClickHouse/pull/110068) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron reconexiones espurias de conexiones HTTP keep-alive agrupadas sobre TLS (HTTPS, S3). La comprobación de conexiones obsoletas usaba `poll` sobre el socket, lo que informaba erróneamente de que una conexión segura activa que transportaba un registro TLS posterior al handshake aún no leído (un ticket de sesión o `KeyUpdate`) estaba cerrada; ahora usa `MSG_PEEK` sin bloqueo en sockets sin TLS y `SSL_peek`/`SSL_has_pending` en sockets TLS, lo que también detecta correctamente un cierre ordenado de TLS y un registro TLS que solo ha llegado de forma parcial. [#110402](https://github.com/ClickHouse/ClickHouse/pull/110402) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las consultas aceleradas mediante filtrado dinámico TopK (`ORDER BY ... LIMIT k`) ahora aprovechan mejor la caché de condiciones de consulta: la caché se rellena incluso cuando se aplica lazy materialization a la consulta, y esas consultas pueden reutilizar entradas escritas previamente por una consulta normal que tuviera el mismo predicado `WHERE`. [#110507](https://github.com/ClickHouse/ClickHouse/pull/110507) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Un patrón `LIKE`/`NOT LIKE` sin comodines (`%`, `_`) ahora usa un rango exacto de clave primaria, por lo que lee el mismo número de gránulos que el predicado equivalente `=`/`!=` en lugar de un rango de prefijo más amplio. [#107077](https://github.com/ClickHouse/ClickHouse/pull/107077) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la contención redundante del bloqueo de file segment (una regresión de rendimiento introducida en la versión 26.1) al leer datos a través de la caché del sistema de archivos. [#109577](https://github.com/ClickHouse/ClickHouse/pull/109577) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrigió que los skip indexes definidos en subcolumnas de `Tuple` no se utilizaran cuando se accede al campo mediante `tupleElement(t, 'name')`, `tupleElement(t, N)` o `t.N`, mientras que la tupla completa también se lee en la misma consulta (p. ej., `SELECT *`). Todas estas formas ahora descartan gránulos de la misma manera que el acceso a la subcolumna con nombre `t.name`. [#110056](https://github.com/ClickHouse/ClickHouse/pull/110056) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron las consultas lentas con `ORDER BY ... LIMIT` en tablas `Distributed` cuando `prefer_localhost_replica` selecciona una réplica local: se eliminó el límite preliminar del plan de la partición local, lo que impedía la materialización diferida y el filtrado dinámico top-K. [#110136](https://github.com/ClickHouse/ClickHouse/pull/110136) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Se corrigió que el índice de texto no se usara para el operador `ILIKE` cuando el índice se define sobre una expresión en lugar de una columna simple (por ejemplo, `assumeNotNull(col)` con un preprocessor `lower(...)`): esas consultas leían todos los gránulos en lugar de usar el índice. Esto cierra [#110350](https://github.com/ClickHouse/ClickHouse/issues/110350). [#110595](https://github.com/ClickHouse/ClickHouse/pull/110595) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Se redujo la contención de bloqueos en la caché del sistema de archivos: las consultas que leen desde la caché ya no se bloquean en el bloqueo de la cola de prioridad al actualizar la prioridad LRU de una entrada. [#109065](https://github.com/ClickHouse/ClickHouse/pull/109065) ([Antonio Andelic](https://github.com/antonio2368)).
* Las consulta sobre índice de texto que usan una expresión de `postprocessor` solo para filtrado (por ejemplo, `if(..., '', token)`) ahora descartan por adelantado los tokens vacíos en lugar de materializarlos fila por fila, lo que mejora el rendimiento. [#109049](https://github.com/ClickHouse/ClickHouse/pull/109049) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Se redujo la contención de bloqueos en las colas del registro del sistema, lo que reduce la latencia de cola de las consultas en clusters con mucha carga. [#110539](https://github.com/ClickHouse/ClickHouse/pull/110539) ([Sean Haynes](https://github.com/seandhaynes)).
* Se mejoró hasta 1,5 veces el rendimiento de las funciones de búsqueda de subcadenas (`position`, `countSubstrings`, `multiSearch*`, `replaceAll`, `replaceOne` y sus variantes que no distinguen entre mayúsculas y minúsculas y UTF-8) con una aguja no constante, mediante el uso de buscadores de cadenas basados en SIMD en la ruta por fila en lugar de una implementación ingenua. [#110580](https://github.com/ClickHouse/ClickHouse/pull/110580) ([Raúl Marín](https://github.com/Algunenano)).
* La materialización diferida ahora se aplica a consultas `ReplacingMergeTree` con `FINAL`, un filtro y un `LIMIT` pequeño incluso sin `ORDER BY`. Las columnas que no son necesarias para el filtro ni para el merge `FINAL` se obtienen solo para las filas que permanecen después del límite, lo que hace que estas consultas sean mucho más rápidas cuando seleccionan columnas anchas con un filtro selectivo. Controlado por `query_plan_optimize_lazy_materialization` y `query_plan_max_limit_for_lazy_materialization`. [#110722](https://github.com/ClickHouse/ClickHouse/pull/110722) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se mejoró el rendimiento de async insert cuando la deduplicación está habilitada y un vaciado se divide entre múltiples particiones: ClickHouse ahora reutiliza los hashes de deduplicación calculados entre particiones en lugar de recalcularlos para cada una. [#111150](https://github.com/ClickHouse/ClickHouse/pull/111150) ([Valery Petrov](https://github.com/valerypetrov)).

<div id="268-improvement">
  #### Mejora
</div>

* Se añadió la configuración `input_format_csv_missing_nullable_as_empty_string` (deshabilitada de forma predeterminada). Cuando está habilitada, un valor ausente de una columna `Nullable(String)` en la entrada CSV se interpreta como un `String` vacío en lugar de `NULL`, independientemente de `input_format_csv_empty_as_default`. [#58225](https://github.com/ClickHouse/ClickHouse/pull/58225) ([kevinyhzou](https://github.com/KevinyhZou)). [#107577](https://github.com/ClickHouse/ClickHouse/pull/107577) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las funciones `toDateOrNull`, `toDateTimeOrNull` y `toDateTime64OrNull` ahora aceptan argumentos enteros de todos los tipos enteros nativos (interpretados igual que en `toDate`, `toDateTime` y `toDateTime64`, con un argumento opcional de timezone) y devuelven `NULL` para los valores que quedan fuera del rango del tipo de resultado. Por ejemplo, `toDateTimeOrNull(1583851242, 'Asia/Shanghai')` devuelve `2020-03-10 22:40:42` y `toDateTimeOrNull(4294967296)` devuelve `NULL`. [#79791](https://github.com/ClickHouse/ClickHouse/pull/79791) ([Jitendra](https://github.com/jitendra1411)).
* Se añadió una columna `is_wildcard` a la tabla `system.grants` que indica si un grant usa coincidencia de prefijo con comodín (por ejemplo, `GRANT SELECT ON db*.*`). Antes, los grants con comodín y los exactos sobre el mismo nombre no se podían distinguir en `system.grants`. Cierra [#92835](https://github.com/ClickHouse/ClickHouse/issues/92835). [#98577](https://github.com/ClickHouse/ClickHouse/pull/98577) ([DQ](https://github.com/il9ue)).
* Se permite la compresión Snappy en la interfaz HTTP (`Accept-Encoding: snappy`) y se añade la configuración `snappy_mode` para elegir entre el formato de bloques de Hadoop Snappy y el formato de framing de Snappy para I/O genérico con Snappy de `file`/`url`. [#100752](https://github.com/ClickHouse/ClickHouse/pull/100752) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se admite compatibilidad con el analyzer anterior mediante la configuración `analyzer_compatibility_allow_non_aggregate_in_having`. Si está habilitada, las conjunciones no agregadas se mueven de `HAVING` a `WHERE`. [#104232](https://github.com/ClickHouse/ClickHouse/pull/104232) ([Dmitry Novik](https://github.com/novikd)).
* Se añadió una nueva configuración del servidor `memory_worker_rss_speculative_reserve_ratio` (valor predeterminado: `1.0`) que hace que el memory tracker global reserve memoria de forma especulativa por encima del RSS observado cuando el crecimiento del RSS supera el seguimiento contable del tracker entre muestras. Con esto, las allocations reciben `MEMORY_LIMIT_EXCEEDED` antes y es menos probable que el OOM-killer del kernel se active primero. Establezca la proporción en `0` para deshabilitar esta especulación. [#104976](https://github.com/ClickHouse/ClickHouse/pull/104976) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadieron métricas de Prometheus opcionales para la actividad de eviction de la filesystem cache (`filesystem_cache_evictions_total`, `filesystem_cache_evicted_bytes_total`, `filesystem_cache_evicted_segment_hits`, `filesystem_cache_evicted_segment_size_bytes` y sus variantes por usuario etiquetadas con `user_id`), expuestas por caché a través de `system.dimensional_metrics`, `system.histogram_metrics` y el Prometheus endpoint. Están controladas por las configuraciones del cache disk `expose_prometheus_eviction_metrics` y `expose_prometheus_eviction_metrics_per_user` (ambas desactivadas de forma predeterminada), que pueden activarse o desactivarse en runtime mediante `SYSTEM RELOAD CONFIG`. [#105020](https://github.com/ClickHouse/ClickHouse/pull/105020) ([Sacheendra Talluri](https://github.com/sacheendra)).
* `EXPLAIN [PLAN] actions=1, compact=1, pretty=1` pasa a ser el valor predeterminado. [#105036](https://github.com/ClickHouse/ClickHouse/pull/105036) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Se actualizó `delta-kernel-rs` (la biblioteca detrás de la integración `DeltaLake`) a la versión 0.23.0. [#105861](https://github.com/ClickHouse/ClickHouse/pull/105861) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Añade los comandos `du` y `wc` a `clickhouse-disks`. Imprimen, respectivamente, el tamaño total en bytes de un archivo o directorio determinado, y muestran la cantidad de bytes, líneas y palabras de un archivo. [#106268](https://github.com/ClickHouse/ClickHouse/pull/106268) ([Asya Shneerson](https://github.com/asya-ch)).
* Se añadió una nueva métrica asíncrona, `UntrackedMemory` (visible en `system.asynchronous_metrics`), que informa de la memoria ya asignada por los hilos pero aún no contabilizada en el contador global de seguimiento de memoria: cada hilo acumula pequeñas asignaciones localmente y las reporta en bloque. Esto ayuda a explicar las discrepancias entre `MemoryTracking` y el uso real de memoria del proceso. Los mensajes de error `MEMORY_LIMIT_EXCEEDED` ahora también incluyen la cantidad de memoria no rastreada, lo que facilita entender por qué una consulta o el servidor alcanzó su límite de memoria. [#106386](https://github.com/ClickHouse/ClickHouse/pull/106386) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Actualiza ClickStack (la interfaz de observabilidad) a la versión 2.28.0. [#106406](https://github.com/ClickHouse/ClickHouse/pull/106406) ([Aaron Knudtson](https://github.com/knudtty)).
* Se añadió compatibilidad con `BFloat16` en `dotProduct` y se mejoró su rendimiento agrupando en lotes la ruta SIMD. [#106569](https://github.com/ClickHouse/ClickHouse/pull/106569) ([Nikita Taranov](https://github.com/nickitat)).
* Los ajustes `max_named_collection_num_to_throw`, `max_table_num_to_throw`, `max_replicated_table_num_to_throw`, `max_view_num_to_throw`, `max_dictionary_num_to_throw` y `max_database_num_to_throw` ahora pueden modificarse sin reiniciar el servidor. [#106821](https://github.com/ClickHouse/ClickHouse/pull/106821) ([Maxim Orlovsky](https://github.com/UberDever)).
* Se admiten los valores `REDUCED_REDUNDANCY`, `STANDARD_IA`, `ONEZONE_IA`, `GLACIER_IR` y `EXPRESS_ONEZONE` (además de `STANDARD` e `INTELLIGENT_TIERING`) para el ajuste `s3_storage_class_name`. [#107251](https://github.com/ClickHouse/ClickHouse/pull/107251) ([Aditya Kumar](https://github.com/adityaksolves)).
* Se añadió el ajuste de creación `materialized_postgresql_use_extended_date_and_time_types` para el database engine `MaterializedPostgreSQL`. De forma predeterminada (habilitado), las columnas `date`/`timestamp` de PostgreSQL se infieren como `Date32`/`DateTime64`; si se establece en `0` al ejecutar `CREATE DATABASE`, se infieren los tipos más restringidos `Date`/`DateTime`. El ajuste no se aplica al table engine `MaterializedPostgreSQL`. [#107428](https://github.com/ClickHouse/ClickHouse/pull/107428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El cuantificador `SOME` / `ALL` de Array (`expr OP SOME(array)` / `expr OP ALL(array)`) ahora también admite los predicates de comparación por palabra clave `IS DISTINCT FROM` y `IS NOT DISTINCT FROM`, así como los predicates de búsqueda en cadenas `LIKE`, `ILIKE`, `NOT LIKE`, `NOT ILIKE` y `REGEXP`, reescritos como `arrayExists` / `arrayAll`. [#107454](https://github.com/ClickHouse/ClickHouse/pull/107454) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una fuga de memoria que se producía cuando fallaba la apertura de una base de datos SQLite (por ejemplo, cuando se proporciona a la función de tabla `sqlite` o al database engine `SQLite` una ruta que no puede abrirse). [#107807](https://github.com/ClickHouse/ClickHouse/pull/107807) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En la interfaz web (`play.html`), la indicación del atajo de ejecución ahora muestra `Cmd+Enter` en Mac y `Ctrl+Enter` en otras plataformas, en lugar de mostrar siempre `Ctrl/Cmd+Enter`; además, la parte `, +Shift to run all` de la indicación solo se muestra cuando hay varias consultas. [#107817](https://github.com/ClickHouse/ClickHouse/pull/107817) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#108957](https://github.com/ClickHouse/ClickHouse/pull/108957) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El motor de tabla `Alias` ahora admite lecturas con réplicas paralelas cuando la tabla de destino es de la familia `MergeTree`. [#107830](https://github.com/ClickHouse/ClickHouse/pull/107830) ([Kai Zhu](https://github.com/nauu)).
* Se añadió el tipo de estadísticas de columna `uniq_v2`, una alternativa ligera a las estadísticas `uniq`, basada en el sketch `uniqCombined64`. [#107863](https://github.com/ClickHouse/ClickHouse/pull/107863) ([Han Fei](https://github.com/hanfei1991)). Además, se marcó como obsoleto el tipo de estadísticas de columna `minmax` y se cambió el valor predeterminado de `auto_statistics_types` a `basic, uniq_v2`. [#108680](https://github.com/ClickHouse/ClickHouse/pull/108680) ([Han Fei](https://github.com/hanfei1991)).
* Las funciones de IA (`aiGenerate`, `aiEmbed`, `aiClassify`, `aiExtract`, `aiTranslate`) ahora reintentan fallos transitorios de red (restablecimientos de conexión, fallos de conexión TLS, timeouts y direcciones inaccesibles) cuando se establece `ai_function_max_retries`, igualando el comportamiento de reintento de la table function `url`. Antes, solo se reintentaban las respuestas de error HTTP del lado del proveedor. [#107927](https://github.com/ClickHouse/ClickHouse/pull/107927) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `INSERT` en una tabla `MergeTree` ahora respeta la cancelación de consultas y `max_execution_time` al escribir muchas partes, en lugar de poder seguir ejecutándose durante mucho tiempo después de haber sido cancelada. [#107929](https://github.com/ClickHouse/ClickHouse/pull/107929) ([Michael Kolupaev](https://github.com/al13n321)).
* En la interfaz web (`play.html`), el icono del Terminal web ahora puede abrirse en una nueva pestaña del navegador con un clic del botón central o con Ctrl/Cmd/Shift+clic. [#108006](https://github.com/ClickHouse/ClickHouse/pull/108006) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La generación de SQL con IA en el cliente ya no envía el parámetro `temperature`, a menos que se establezca explícitamente mediante `ai.temperature` en la configuración. Esto corrige la generación de SQL con IA para modelos que rechazan el parámetro `temperature`. [#108014](https://github.com/ClickHouse/ClickHouse/pull/108014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadieron la tabla `system.masking_policies` y la introspección `SHOW MASKING POLICIES` a las compilaciones open-source. Las políticas de enmascaramiento en sí siguen siendo una funcionalidad de ClickHouse Cloud, por lo que la tabla está vacía en las compilaciones open-source, pero las consultas de introspección ya no fallan con un error. [#108030](https://github.com/ClickHouse/ClickHouse/pull/108030) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El consumer de Kafka basado en Keeper ahora aleatoriza el orden en que adquiere bloqueos temporales de partición entre réplicas, lo que mejora el reparto equitativo de las particiones y reduce la contención de bloqueos. Antes, la aleatorización prevista no tenía ningún efecto. [#108033](https://github.com/ClickHouse/ClickHouse/pull/108033) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió autocompletado a la interfaz web (`play.html`), basado en `system.completions` y en el analizador léxico SQL basado en WASM. [#108059](https://github.com/ClickHouse/ClickHouse/pull/108059) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-client` y `clickhouse-local` ahora muestran sugerencias de autocompletado a medida que escribes (texto "fantasma" en línea) con la mejor coincidencia cuando el cursor está al final de la entrada. Las sugerencias más relevantes (las usadas recientemente y los identificadores ya presentes en la consulta) aparecen primero. Navega con Arriba/Abajo (o Ctrl-Arriba/Ctrl-Abajo); acepta una sugerencia única o la seleccionada con Tab o Flecha derecha, y acepta la sugerencia seleccionada con Enter; Tab también abre la lista clásica de autocompletado. Se controla con la nueva opción `--hints` (activada de forma predeterminada; requiere `--highlight`). [#108070](https://github.com/ClickHouse/ClickHouse/pull/108070) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se admite la función `length` para el tipo de dato `QBit`: devuelve la dimensión del vector como una constante. [#108071](https://github.com/ClickHouse/ClickHouse/pull/108071) ([Alexey Milovidov](https://github.com/alexey-milovidov)). También se admite `CAST` de `QBit` a `Array`, reconstruyendo el vector original: la inversa de la conversión existente de `Array` a `QBit`. [#108072](https://github.com/ClickHouse/ClickHouse/pull/108072) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las solicitudes a catálogos REST de lago de datos (como OneLake) ahora incluyen un encabezado `User-Agent` de ClickHouse. [#108117](https://github.com/ClickHouse/ClickHouse/pull/108117) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* `arrayFold` ahora respeta la cancelación de consultas y `max_execution_time`. Antes, un fold sobre un array muy largo se ejecutaba por completo dentro de una sola llamada a función y no podía interrumpirse, por lo que `KILL QUERY` y los límites de tiempo se ignoraban hasta que terminaba. [#108192](https://github.com/ClickHouse/ClickHouse/pull/108192) ([Groene AI](https://github.com/groeneai)).
* `MVTEncodeGeom` ahora ajusta la geometría a la cuadrícula de píxeles enteros antes de recortarla y recorta polígonos con la biblioteca `wagyu`, de modo que la salida recortada sea válida (se reparan los anillos autointersecados) y quede alineada con los bordes, igual que en PostGIS `ST_AsMVTGeom`. [#108248](https://github.com/ClickHouse/ClickHouse/pull/108248) ([Saarthak Gupta](https://github.com/saarthak2002)).
* Se añadieron `ProfileEvents` de preejecución de consultas por fase: `QueryParseMicroseconds`, `QueryAnalysisMicroseconds`, `QueryPlanBuildMicroseconds` y `QueryPipelineBuildMicroseconds`. Muestran dónde se invierte el tiempo antes de la ejecución de la consulta (análisis sintáctico, análisis, creación del plan de consulta y creación del pipeline) y están disponibles en `system.query_log` y `system.events`. [#108282](https://github.com/ClickHouse/ClickHouse/pull/108282) ([Jordi Villar](https://github.com/jrdi)).
* Las operaciones `ALTER TABLE` que producirían metadatos de tabla que superaran `max_query_size` ahora se rechazan de antemano, lo que evita que las tablas queden imposibles de cargar para componentes como la distribución DDL y la recuperación de réplicas. [#108283](https://github.com/ClickHouse/ClickHouse/pull/108283) ([Andrew Kravchuk](https://github.com/lockie)).
* Se añadieron las columnas `settings` y `engine_settings` a `system.backups` y `system.backup_log`. `settings` expone los ajustes específicos de backup/restore solicitados para una operación (p. ej., `allow_s3_native_copy`, `deduplicate_files`, `structure_only`), y `engine_settings` expone los ajustes efectivamente usados por el lector y el escritor del engine de backup (p. ej., los ajustes de solicitudes a S3, como `allow_native_copy`, que pueden diferir de lo solicitado tras fusionar la configuración del endpoint). Esto permite ver con qué ajustes se ejecutó realmente una operación `BACKUP`/`RESTORE`. [#108334](https://github.com/ClickHouse/ClickHouse/pull/108334) ([Julia Kartseva](https://github.com/jkartseva)).
* Se añadió una columna `source` a `system.documentation` que contiene la ruta del archivo fuente en el que se define la documentación de cada entidad. La tabla ahora también documenta códecs de compresión, eventos de perfil, métricas actuales, métricas asíncronas y las propias tablas del sistema (con sus columnas), y la documentación de los ajustes ahora incluye su tipo y valor predeterminado. [#108346](https://github.com/ClickHouse/ClickHouse/pull/108346) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Un valor predeterminado vacío para un ajuste ahora se representa como *cadena vacía* en lugar de backticks vacíos. [#108708](https://github.com/ClickHouse/ClickHouse/pull/108708) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadieron lecturas asíncronas desde réplicas remotas (`async_socket_for_remote`) en macOS mediante la implementación, sobre `kqueue`, de primitivas de sondeo basadas en epoll. Esto permite que las consultas distribuidas lean shards en paralelo en macOS en lugar de hacerlo en serie. [#108403](https://github.com/ClickHouse/ClickHouse/pull/108403) ([Raúl Marín](https://github.com/Algunenano)).
* Se añadió compatibilidad con `BFloat16` en funciones matemáticas binarias. [#108442](https://github.com/ClickHouse/ClickHouse/pull/108442) ([Zhang Yifan](https://github.com/zhangyifan27)).
* `MergeTree` ahora puede leer un flujo comprimido cuyos bloques usan distintos códecs. Este es el requisito previo del lado de la lectura para la selección adaptativa de códecs ([#105404](https://github.com/ClickHouse/ClickHouse/issues/105404)). [#108592](https://github.com/ClickHouse/ClickHouse/pull/108592) ([Raufs Dunamalijevs](https://github.com/rienath)).
* El valor automático de `max_threads` y ajustes similares ahora se muestra en `system.settings` como `auto(8)` en lugar de `'auto(8)'`; las comillas simples que lo rodeaban eran un artefacto heredado incrustado en el valor. Se conserva la compatibilidad entre versiones: la forma heredada entrecomillada sigue aceptándose al interpretar ajustes recibidos de servidores más antiguos. [#108657](https://github.com/ClickHouse/ClickHouse/pull/108657) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Varias mejoras de usabilidad para la interfaz web de `/schema`: cargar el esquema al pulsar Enter, barras de desplazamiento adaptadas al tema, nombres de tabla legibles, agrupación coherente por base de datos de tablas independientes, sin selección de texto al arrastrar y un formulario de autenticación estilo `play` (Credential Management API, credenciales proporcionadas por URL con eliminación de contraseñas y validación de credenciales en tiempo real). [#108724](https://github.com/ClickHouse/ClickHouse/pull/108724) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El modo diferido de aplicación de posting lists del índice de texto ya no es experimental y puede seleccionarse con `text_index_posting_list_apply_mode = 'lazy'` sin `allow_experimental_text_index_lazy_apply`. El ajuste de umbral de densidad pasó a llamarse de `text_index_density_threshold` a `text_index_lazy_intersection_density_threshold`. [#108814](https://github.com/ClickHouse/ClickHouse/pull/108814) ([Anton Popov](https://github.com/CurtizJ)).
* Se añadió un nuevo tipo de catálogo `delta_sharing` a `DataLakeCatalog` para el endpoint REST de Iceberg de Databricks Delta Sharing, cuyos espacios de nombres son planos y que ignora el filtro de listado `parent`. Úselo en lugar de `catalog_type = 'rest'` para esos endpoints, donde de otro modo `SHOW TABLES` se quedaría bloqueado. [#108865](https://github.com/ClickHouse/ClickHouse/pull/108865) ([Seva Potapov](https://github.com/seva-potapov)).
* Se añadió una nueva opción de `clickhouse-client`/`clickhouse-local`, `--echo-query-separator`, que imprime un separador personalizado antes de la consulta reformateada que se muestra como eco, lo que facilita distinguir la consulta escrita de su eco reformateado. Deshabilitada de forma predeterminada. [#108888](https://github.com/ClickHouse/ClickHouse/pull/108888) ([David Meng](https://github.com/davidmenggx)).
* Mejoras en el panel de bases de datos de la Web UI: el número de tablas se muestra entre paréntesis junto al nombre de la base de datos cuando está expandida. [#108891](https://github.com/ClickHouse/ClickHouse/pull/108891) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Un botón de actualización junto a una base de datos expandida recarga su lista de tablas. [#108958](https://github.com/ClickHouse/ClickHouse/pull/108958) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Al volver a abrir el panel, se restauran las bases de datos que estaban expandidas anteriormente. [#108964](https://github.com/ClickHouse/ClickHouse/pull/108964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Permite calcular el beneficio combinado de los skip indexes en `EXPLAIN WHATIF`: muestra la proporción de datos correspondiente a la intersección de todos los índices hipotéticos adecuados existentes. [#108934](https://github.com/ClickHouse/ClickHouse/pull/108934) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigió el restablecimiento de la posición de desplazamiento horizontal de la tabla de resultados en la Web UI al hacer clic en un enlace dentro de una celda y volver a la página. [#108941](https://github.com/ClickHouse/ClickHouse/pull/108941) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El database engine, el table engine y la table function de `MySQL` ahora asignan los tipos de columna espaciales de MySQL (`LINESTRING`, `POLYGON`, `MULTILINESTRING`, `MULTIPOLYGON` y el tipo genérico `GEOMETRY`) a los tipos geométricos correspondientes de ClickHouse en lugar de `String`. Esto se controla mediante la nueva opción `geometry` de la configuración `mysql_datatypes_support_level`, habilitada de forma predeterminada. `POINT` se sigue convirtiendo siempre a `Point`. La columna genérica `GEOMETRY` se asigna al tipo genérico `Geometry`; leer un valor cuyo subtipo no tiene equivalente en ClickHouse (`MULTIPOINT`, `GEOMETRYCOLLECTION`) lanza una excepción en tiempo de lectura. [#108944](https://github.com/ClickHouse/ClickHouse/pull/108944) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI (`play.html`): navegación completa por teclado — navegación con las teclas de flecha en el panel de bases de datos y la tabla de resultados, acceso por teclado a los botones de la barra de herramientas, al selector de tema y al menú de descarga, y contornos de enfoque visibles. [#108972](https://github.com/ClickHouse/ClickHouse/pull/108972) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* HTTP interface: cuando se proporcionan credenciales tanto mediante URL parameters (`user`/`password`) como mediante una cabecera `Authorization`, los URL parameters ahora tienen prioridad en lugar de que se rechace la solicitud. Esto corrige el fallo al descargar resultados desde la Web UI (`play.html`) con `AUTHENTICATION_FAILED` (error 516) cuando el navegador ha recordado credenciales Basic. [#108980](https://github.com/ClickHouse/ClickHouse/pull/108980) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se restaura `show_data_lake_catalogs_in_system_tables` como la configuración que controla únicamente la visibilidad de `DataLakeCatalog` en `system.tables`, `system.columns` y `system.completions`. Se añadió `show_remote_databases_in_system_tables`, habilitada de forma predeterminada, para permitir a los usuarios ocultar por separado las bases de datos `MySQL` y `PostgreSQL` de esas system tables. [#109082](https://github.com/ClickHouse/ClickHouse/pull/109082) ([Pablo Marcos](https://github.com/pamarcos)).
* Se usa de forma predeterminada el algoritmo preciso de parsing de Float (el valor representable más cercano) y se aplica la configuración `precise_float_parsing` a los input formats (`CSV`, `TSV`, `JSON`, `VALUES`, ...) y a los literals numéricos, no solo a `toFloat*`/`CAST`. Establezca `precise_float_parsing = 0` para recuperar el comportamiento anterior, más rápido en algunos casos pero menos preciso. Cierra [#60146](https://github.com/ClickHouse/ClickHouse/issues/60146). Cierra [#74647](https://github.com/ClickHouse/ClickHouse/issues/74647). Cierra [#68914](https://github.com/ClickHouse/ClickHouse/issues/68914). [#109086](https://github.com/ClickHouse/ClickHouse/pull/109086) ([Raúl Marín](https://github.com/Algunenano)).
* Una consulta con un solo CTE ahora se formatea con el mismo salto de línea y la misma sangría que una consulta con varios CTE. Antes, `WITH a AS (...)` mantenía el CTE en la misma línea que `WITH`, mientras que con dos o más CTE, `WITH` iba en su propia línea y cada CTE aparecía con sangría. [#109092](https://github.com/ClickHouse/ClickHouse/pull/109092) ([Groene AI](https://github.com/groeneai)).
* Web UI: cuando la finalización resaltada coincide con la palabra ya escrita, o con la misma palabra pero con distinto uso de mayúsculas/minúsculas (p. ej., `HASH` sugerido para un `hash` ya escrito), al pulsar Right/Tab/Enter la palabra ya no se reescribe ni la autocompletación intercepta la tecla; la tecla mueve el cursor o inserta un salto de línea, como se espera. [#109106](https://github.com/ClickHouse/ClickHouse/pull/109106) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#109384](https://github.com/ClickHouse/ClickHouse/pull/109384) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió a la Web UI (`play.html`) el resaltado arcoíris de paréntesis, el resaltado de corchetes coincidentes, el resaltado de identificadores coincidentes y el resaltado de grupos de dígitos, en consonancia con `clickhouse-client`. [#109108](https://github.com/ClickHouse/ClickHouse/pull/109108) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En la Web UI, `Tab` y `Shift+Tab` ahora aplican y quitan una sangría de 4 espacios a las líneas seleccionadas. [#109110](https://github.com/ClickHouse/ClickHouse/pull/109110) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI: resalta la posición de un error de sintaxis en el editor de consultas con un fondo rojo. El resaltado se borra en cuanto el usuario vuelve a poner el foco en el editor. [#109112](https://github.com/ClickHouse/ClickHouse/pull/109112) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-compressor --stat` y la detección del códec predeterminado para partes antiguas ahora informan los encabezados de bloque corruptos como corrupción, en lugar de como un engañoso error de fin de archivo. [#109157](https://github.com/ClickHouse/ClickHouse/pull/109157) ([Raufs Dunamalijevs](https://github.com/rienath)).
* ClickHouse Keeper ahora respeta la configuración `os_collect_psi_metrics` y omite la recopilación de métricas PSI cuando está deshabilitada. [#109179](https://github.com/ClickHouse/ClickHouse/pull/109179) ([Maxim Orlovsky](https://github.com/UberDever)).
* En la Web UI, cuando se muestran pestañas de consultas, los parámetros de conexión (host, user, password) se ocultan tras un icono de llave en la esquina superior derecha y se muestran en un menú desplegable a demanda. [#109243](https://github.com/ClickHouse/ClickHouse/pull/109243) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI: muestra un resultado de un solo valor (una fila, una columna, p. ej., `SHOW CREATE TABLE`) con altura completa en lugar de limitarlo a tres líneas. [#109245](https://github.com/ClickHouse/ClickHouse/pull/109245) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En la Web UI, al hacer clic en una tabla del panel de bases de datos con el botón central del ratón, con Shift o con el modificador de nueva pestaña de la plataforma (Cmd en macOS, Ctrl en otros sistemas), ahora se abre su consulta en una nueva pestaña de la Web UI. [#109246](https://github.com/ClickHouse/ClickHouse/pull/109246) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La caché de condiciones de consulta para archivos `Parquet` remotos (almacenamiento de objetos) ahora usa también el ETag, además de la ruta, como clave, para que sobrescribir un objeto en el mismo lugar ya no sirva resultados obsoletos en caché. [#109310](https://github.com/ClickHouse/ClickHouse/pull/109310) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En la Web UI, las cadenas vacías y los NULL ya no se colorean en el modo de coloreado categórico. [#109342](https://github.com/ClickHouse/ClickHouse/pull/109342) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI: al hacer clic en el icono de una tabla en el panel de la base de datos, ahora se muestra la lista de sus columnas, con iconos de tipo, una barra de tamaño proporcional al tamaño comprimido y un tooltip con el tamaño comprimido/sin comprimir y la relación de compresión. [#109346](https://github.com/ClickHouse/ClickHouse/pull/109346) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI: mostrar el título completo de la pestaña en un tooltip al pasar el cursor cuando esté truncado. [#109354](https://github.com/ClickHouse/ClickHouse/pull/109354) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En la Web UI, al hacer clic con el botón central en el título de una pestaña (o Ctrl/Shift/Cmd+clic sobre él), ahora se duplica la pestaña. [#109357](https://github.com/ClickHouse/ClickHouse/pull/109357) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI: redimensionar uniformemente las áreas de progreso final y estadísticas de la consulta para que no se partan de forma extraña cuando la ventana del navegador sea estrecha. [#109363](https://github.com/ClickHouse/ClickHouse/pull/109363) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI: al seleccionar una base de datos en el panel de bases de datos, ahora se usa como base de datos predeterminada para las consultas ejecutadas desde el editor. [#109372](https://github.com/ClickHouse/ClickHouse/pull/109372) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Compatibilidad con `reinterpret` de un `Array` de elementos de tamaño fijo como un `String`, el inverso del `reinterpret` existente de un `String`/`FixedString` como un `Array`. [#109383](https://github.com/ClickHouse/ClickHouse/pull/109383) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En la Web UI, no mostrar los controles de alternancia de codificación por colores por columna cuando el resultado no tenga más de una sola fila. [#109385](https://github.com/ClickHouse/ClickHouse/pull/109385) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Permitir `CAST` entre tipos `QBit` que difieran en el tipo de elemento y/o el stride, siempre que la dimensión siga siendo la misma (por ejemplo, `CAST(x AS QBit(Float64, N))` desde un `QBit(Float32, N)`). Los cambios solo de stride no tienen pérdida; los cambios de tipo de elemento siguen la semántica de conversión correspondiente de `Array` (por ejemplo, de `Float32` a `BFloat16` puede haber pérdida de precisión, y `accurateCast` / `accurateCastOrNull` rechazan las filas que no pueden representarse exactamente). [#109387](https://github.com/ClickHouse/ClickHouse/pull/109387) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las funciones `quantizeBFloat16ToInt8` y `dequantizeInt8ToBFloat16` ahora también aceptan argumentos `Array` y `QBit`, aplicando el codec Lloyd-Max a todo el vector (devolviendo `Array`/`QBit` del tipo de elemento correspondiente), además de las sobrecargas escalares existentes. [#109398](https://github.com/ClickHouse/ClickHouse/pull/109398) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI: el enlace a la documentación ahora incluye el nombre del usuario actual en la URL. [#109419](https://github.com/ClickHouse/ClickHouse/pull/109419) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Compatibilidad con `arraySum`, `arrayAvg` y `arrayProduct` para arrays de `BFloat16`. [#109420](https://github.com/ClickHouse/ClickHouse/pull/109420) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El especificador de formato de estilo MySQL `%f` en `parseDateTime` / `parseDateTime64` (y sus variantes `OrZero` / `OrNull`) ahora acepta entre 1 y 6 dígitos fraccionarios, interpretados como microsegundos alineados a la izquierda, como en `STR_TO_DATE` de MySQL, en lugar de exigir exactamente 6. También se corrigieron tablas `PrettyCompact` desalineadas en los ejemplos de la documentación de funciones integradas. [#109421](https://github.com/ClickHouse/ClickHouse/pull/109421) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI: las pestañas de consulta ahora son persistentes — cada pestaña conserva su resultado renderizado (incluidas imágenes y gráficos) y su consulta en ejecución cuando cambias a otra y vuelves, y las consultas largas siguen ejecutándose en segundo plano. Los títulos de las pestañas muestran un spinner, una barra de progreso y una marca de verificación de finalización para su consulta. [#109425](https://github.com/ClickHouse/ClickHouse/pull/109425) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI: ahora se muestra correctamente un error cuando una consulta falla después de que parte de su resultado ya se haya transmitido, en lugar de mostrar un `SyntaxError: Unexpected end of JSON input` del lado del client (o, con `http_write_exception_in_output_format`, marcar la consulta fallida como exitosa). [#109430](https://github.com/ClickHouse/ClickHouse/pull/109430) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadieron columnas fijadas a la Web UI: una columna puede fijarse desde su encabezado para que permanezca visible (pegada al borde) mientras la tabla de resultados se desplaza horizontalmente. [#109439](https://github.com/ClickHouse/ClickHouse/pull/109439) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En el Advanced dashboard (`/dashboard`), ahora se pueden añadir directamente charts para métricas específicas por el metric name tal como aparece en el Source Code o en la documentación, lo que facilita añadir varias métricas durante las sesiones de debugging. [#109449](https://github.com/ClickHouse/ClickHouse/pull/109449) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Web UI: se corrigió el cierre del menú desplegable de configuración de la connection al seleccionar texto con el ratón y arrastrar más allá de su borde. [#109451](https://github.com/ClickHouse/ClickHouse/pull/109451) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI: al pasar el cursor sobre el encabezado de una columna de la tabla de resultados, ahora se muestra el column name completo y el Type en una información sobre herramientas, para que los encabezados truncados puedan leerse completos. [#109463](https://github.com/ClickHouse/ClickHouse/pull/109463) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Se corrigió que los títulos de los encabezados de columna se recortaran con puntos suspensivos incluso cuando la columna era lo bastante ancha para mostrar el título completo. [#110397](https://github.com/ClickHouse/ClickHouse/pull/110397) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Compatibilidad con diccionarios SSD cache (layout `SSD_CACHE`) y el table engine `FileLog` en builds de MacOS. [#109493](https://github.com/ClickHouse/ClickHouse/pull/109493) ([Raúl Marín](https://github.com/Algunenano)).
* Web UI: no restaurar pestañas con consultas vacías al abrir la página. [#109529](https://github.com/ClickHouse/ClickHouse/pull/109529) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron las sugerencias de autocompletado ilegibles mientras se escribe y los colores brillantes en el client interactivo en terminales cuyo `TERM` no contiene `256` (p. ej., Ghostty, kitty, Alacritty, foot): ahora los colores brillantes se emiten incondicionalmente como códigos de color brillante aixterm en lugar de recurrir a negrita + color oscuro, que los terminales modernos renderizan como un color oscuro y difícil de leer sobre fondos oscuros. [#109622](https://github.com/ClickHouse/ClickHouse/pull/109622) ([Alasdair Brown](https://github.com/sdairs)).
* Se habilitan las arenas por CPU de jemalloc y el perfilado de asignaciones en builds de MacOS. [#109684](https://github.com/ClickHouse/ClickHouse/pull/109684) ([Raúl Marín](https://github.com/Algunenano)).
* Permitir modificar algunos ajustes de authentication de una database de Data Lake Catalog `OneLake` con `ALTER DATABASE ... MODIFY SETTING`. [#110019](https://github.com/ClickHouse/ClickHouse/pull/110019) ([alesapin](https://github.com/alesapin)).
* El engine `Hive` ahora lee los metadata de archivos `ORC` (índices mín./máx., recuentos de filas) con el lector `ORC` nativo de ClickHouse en lugar del adapter `ORC` de Apache Arrow. [#110086](https://github.com/ClickHouse/ClickHouse/pull/110086) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se redujo el tamaño del binario en \~10.5 MB al ejecutar operaciones aritméticas y de comparación sobre pares de tipos mixtos poco usados (`Decimal` frente a enteros de distinto ancho, y pares que involucran `Int128`/`UInt128`/`Int256`/`UInt256`) mediante la conversión a un tipo común, en lugar de usar un kernel compilado dedicado para cada combinación de tipos. Los pares del mismo tipo, los pares de uso habitual y las operaciones `plus`/`minus`/`multiply` limitadas por memoria conservan sus kernels dedicados; los resultados, los tipos de resultado y los casos excepcionales no cambian. [#110131](https://github.com/ClickHouse/ClickHouse/pull/110131) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Una subquery en el lado derecho de `IN` cuya única columna es un array con una dimensión más que el argumento de la izquierda ahora se interpreta como el conjunto de elementos del array (como un literal de array o una función que devuelve un array), en lugar de fallar con un confuso error de incompatibilidad de tipos. Por ejemplo, `x IN (SELECT groupArray(x) FROM ...)` ahora funciona. [#110169](https://github.com/ClickHouse/ClickHouse/pull/110169) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La lectura desde un table engine `SQLite` o una table function `sqlite` ya no consume activamente un CPU core completo cuando la base de datos SQLite está bloqueada por otra conexión. Ahora la lectura queda inactiva mientras espera el bloqueo y sigue pudiéndose cancelar. [#110248](https://github.com/ClickHouse/ClickHouse/pull/110248) ([Groene AI](https://github.com/groeneai)).
* Redondea a tres dígitos los valores de tiempo transcurrido, tasa y ratio en los mensajes de log y excepción, para que números como `1.345844286 sec.` ya no se impriman con toda su precisión. [#110277](https://github.com/ClickHouse/ClickHouse/pull/110277) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En la web UI (Play), `BFloat16` ahora se reconoce como un número de coma flotante y sus columnas se alinean a la derecha y se colorean en consecuencia. [#110433](https://github.com/ClickHouse/ClickHouse/pull/110433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se admite la cláusula `SETTINGS` para el table engine `PostgreSQL` y la table function `postgresql` (por ejemplo, `SETTINGS postgresql_connection_pool_size = 50`), lo que aporta paridad funcional con el engine `MySQL`. [#110614](https://github.com/ClickHouse/ClickHouse/pull/110614) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `SHOW CREATE TABLE` (y `SHOW CREATE VIEW` / `SHOW CREATE DICTIONARY`) ahora sugiere en el mensaje de error una tabla con un nombre parecido cuando la tabla solicitada no existe, igual que hacen las consultas `SELECT`. [#110633](https://github.com/ClickHouse/ClickHouse/pull/110633) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se habilita de forma predeterminada la setting `merge_selector_enable_heuristic_to_lower_max_parts_to_merge_at_once`: el merge selector ahora reduce automáticamente el número máximo de partes que se pueden fusionar a la vez según lo llena que esté la partición. Consulte [#91163](https://github.com/ClickHouse/ClickHouse/pull/91163). [#110726](https://github.com/ClickHouse/ClickHouse/pull/110726) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se aceptan los comandos de limpieza de PostgreSQL `RESET`, `UNLISTEN` y `DISCARD` como operaciones sin efecto en el PostgreSQL wire protocol, en lugar de hacer que fallen con un error de sintaxis. Esto mejora la compatibilidad con drivers como Skunk, que envían `RESET ALL` y `UNLISTEN *` durante la configuración y la limpieza de la conexión. [#110780](https://github.com/ClickHouse/ClickHouse/pull/110780) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Cambia el valor predeterminado de la setting `auto_statistics_types` de `basic, uniq` a `basic, uniq_v2`. [#110878](https://github.com/ClickHouse/ClickHouse/pull/110878) ([Han Fei](https://github.com/hanfei1991)).
* `randomHadamardTransform` ahora calcula una transformada exacta que preserva la longitud para cualquier longitud de vector cuyo mayor factor impar sea como máximo 64 (por ejemplo, `3584 = 512 * 7`, habitual en modelos de embedding), ampliando las familias anteriores `2^N`, `2^k * {12, 20}` y `2^k * 9`. Una transformada completa de una longitud que no puede representarse exactamente ahora genera una excepción en lugar de rellenar silenciosamente con ceros hasta un vector más largo; pase `output_dims` para calcular una proyección truncada de longitud arbitraria. [#111006](https://github.com/ClickHouse/ClickHouse/pull/111006) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una excepción `LOGICAL_ERROR` durante la copia de seguridad de una base de datos `Replicated` que se está eliminando y recreando de forma concurrente; esas copias de seguridad ahora fallan limpiamente con `CANNOT_GET_REPLICATED_DATABASE_SNAPSHOT`. [#100651](https://github.com/ClickHouse/ClickHouse/pull/100651) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ahora se muestra el error subyacente real cuando un archivo ZIP no puede descomprimirse (por ejemplo, cuando el archivo se lee desde S3 y el búfer de lectura rechaza un seek). Antes, el error real quedaba oculto tras el mensaje genérico `Couldn't unpack zip archive: Code = -100` / `Couldn't open zip archive`. [#105103](https://github.com/ClickHouse/ClickHouse/pull/105103) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la confusa sugerencia "Maybe you meant X?" después de reiniciar el servidor (o tras `DETACH DATABASE`/`ATTACH DATABASE`): al eliminar una tabla ya eliminada, podía sugerirse como alternativa el nombre recién eliminado. [#106238](https://github.com/ClickHouse/ClickHouse/pull/106238) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error lógico (`Logical error: 'removed'`, que abortaba el servidor en compilaciones de depuración) en la cola en segundo plano de eliminación de tablas, que se activaba cuando el mismo UUID explícito se reutilizaba en varias consultas `CREATE OR REPLACE TABLE`, lo que encolaba más de una tabla eliminada con ese UUID compartido. [#107031](https://github.com/ClickHouse/ClickHouse/pull/107031) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error lógico `Inconsistent AST formatting` que podía abortar el servidor en compilaciones de depuración y con sanitizador cuando se usaba una lambda con alias como operando de un operador de acceso (elemento de tupla `.N` o elemento de array `[]`) en una posición que no fuera la primera dentro de una lista de expresiones; por ejemplo, `SELECT 1, ((p0, p1) -> p0 AS a7).4[3] FROM t`. [#107092](https://github.com/ClickHouse/ClickHouse/pull/107092) ([Groene AI](https://github.com/groeneai)).
* Una table function de clúster (`urlCluster`, `fileCluster`, `s3Cluster`, ...) anidada dentro de otra consulta distribuida, como `clusterAllReplicas(..., urlCluster(...))`, ahora se rechaza con un error `BAD_ARGUMENTS` en lugar de fallar con un error lógico (`Distributed task iterator is not initialized`). [#107107](https://github.com/ClickHouse/ClickHouse/pull/107107) ([Groene AI](https://github.com/groeneai)).
* `OPTIMIZE ... DRY RUN` interrumpido por un timeout de consulta (`max_execution_time` con `timeout_overflow_mode = 'break'`) ahora devuelve `TIMEOUT_EXCEEDED` en lugar de un error lógico relacionado con `rows_sources` (que abortaba el servidor en compilaciones de depuración/con sanitizador). [#107114](https://github.com/ClickHouse/ClickHouse/pull/107114) ([Groene AI](https://github.com/groeneai)).
* Se dejó de registrar el error benigno `Net Exception: Socket is not connected` durante la finalización de la sesión de `ZooKeeper` en macOS. `clickhouse keeper-client` ya no imprime este error espurio en stderr al salir. [#107438](https://github.com/ClickHouse/ClickHouse/pull/107438) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un overflow de enteros con signo cuando una vista materializada actualizable reintenta una actualización fallida con `refresh_retries` configurado con un valor muy grande (cerca del máximo de `Int64`). El overflow podía abortar el servidor en compilaciones con el sanitizador de comportamiento indefinido. [#108005](https://github.com/ClickHouse/ClickHouse/pull/108005) ([Groene AI](https://github.com/groeneai)).
* Corrige un `LOGICAL_ERROR` (aborto del servidor en compilaciones de depuración/sanitizador) cuando un `JOIN` usa el operador de comparación null-safe (`<=>` / `IS NOT DISTINCT FROM`) y una de las claves es una subconsulta escalar, p. ej. `... JOIN t2 ON (SELECT x FROM t1) <=> t2.k`, con el analizador antiguo (`enable_analyzer = 0`). Ahora, esa consulta devuelve un error `NOT_FOUND_COLUMN_IN_BLOCK` normal en lugar de un error lógico. [#108123](https://github.com/ClickHouse/ClickHouse/pull/108123) ([Groene AI](https://github.com/groeneai)).
* Las consultas de búsqueda vectorial que seleccionan la columna `_distance` ahora devuelven un error adecuado en lugar de fallar con un error lógico. [#108423](https://github.com/ClickHouse/ClickHouse/pull/108423) ([Robert Schulze](https://github.com/rschu1ze)).
* Corrige un `std::future_error` (`The associated promise has been destructed prior to the associated state becoming ready`) que podía aparecer y abortar el servidor en compilaciones de depuración y sanitizador cuando fallaba la planificación de la tarea asíncrona final que completa la carga multiparte en S3/Azure (por ejemplo, por agotamiento del pool de hilos). Ahora, en su lugar, se informa del error real de planificación. [#108730](https://github.com/ClickHouse/ClickHouse/pull/108730) ([Groene AI](https://github.com/groeneai)).
* Evita una salida excesiva del log del servidor y un mensaje de error desmesurado al compilar una expresión regular muy grande (por ejemplo, un patrón `LIKE` o `match` con cientos de miles de comodines); ahora esos patrones fallan con un error `CANNOT_COMPILE_REGEXP` claro. [#108821](https://github.com/ClickHouse/ClickHouse/pull/108821) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige un comportamiento indefinido al convertir en cadena un tipo de paquete de protocolo fuera de rango (p. ej., en los mensajes de error `Unexpected packet from server` / `Received ... packet`) en una conexión desincronizada o sometida a fuzzing. [#108885](https://github.com/ClickHouse/ClickHouse/pull/108885) ([Groene AI](https://github.com/groeneai)).
* Corrige un error interno confuso (`Method getResultType is not supported for TABLE query tree node`) cuando se usaba una expresión de tabla como argumento izquierdo del operador `IN`; ahora esas consultas producen un mensaje de error claro. [#109412](https://github.com/ClickHouse/ClickHouse/pull/109412) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la lectura de una tabla Iceberg con un archivo de metadatos cuyo número de versión contiene solo dígitos, pero excede el rango de enteros de 32 bits (por ejemplo, `v99999999999999999999.metadata.json`). Antes, ese nombre producía un `std::out_of_range` opaco (`STD_EXCEPTION`) en lugar de un error `BAD_ARGUMENTS` claro. [#109619](https://github.com/ClickHouse/ClickHouse/pull/109619) ([Groene AI](https://github.com/groeneai)).
* Corrige un posible `Logical error: 'ReadBuffer is canceled. Can't read from it.'` cuando un formato de entrada basado en filas (p. ej. `TSV`/`CSV`) no podía analizar la entrada y la lectura subyacente ya había sido cancelada (por ejemplo, un fragmento HTTP malformado o un cuerpo truncado). La generación de diagnósticos detallados del análisis ya no lee desde un búfer cancelado. [#109708](https://github.com/ClickHouse/ClickHouse/pull/109708) ([Groene AI](https://github.com/groeneai)).
* Las expresiones de filtro de las políticas de fila que usan `arrayJoin` (o su alias `unnest`) ahora se rechazan con un error claro; antes, esas políticas provocaban un error lógico `column->size() == num_rows` en tiempo de consulta. [#109753](https://github.com/ClickHouse/ClickHouse/pull/109753) ([Raúl Marín](https://github.com/Algunenano)). [#109973](https://github.com/ClickHouse/ClickHouse/pull/109973) ([Raúl Marín](https://github.com/Algunenano)).
* La lectura de una tabla Paimon cuyo esquema contiene un tipo anidado no compatible (por ejemplo, un campo `ROW`) ahora informa de un error `BAD_ARGUMENTS` claro que indica el tipo no compatible, en lugar de un simple `DB::Exception. (OK)` con código de error 0 y sin mensaje. [#109762](https://github.com/ClickHouse/ClickHouse/pull/109762) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` (`std::length_error`) cuando una consulta con la configuración experimental `make_distributed_plan = 1` usaba un valor muy grande para `distributed_plan_default_reader_bucket_count` o `distributed_plan_default_shuffle_join_bucket_count`. Estos valores ahora se rechazan con `INVALID_SETTING_VALUE`. [#109770](https://github.com/ClickHouse/ClickHouse/pull/109770) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` (`query tree node does not have valid source node`) cuando un CTE recursivo resolvía un identificador de un ámbito externo como una columna correlacionada (con `allow_experimental_correlated_subqueries = 1`). Estas consultas ahora devuelven un error `UNSUPPORTED_METHOD` claro. [#109863](https://github.com/ClickHouse/ClickHouse/pull/109863) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un desbordamiento de enteros con signo cuando `ORDER BY ... WITH FILL` omite un hueco muy grande en una columna `Int64`/`UInt64` (por ejemplo, un paso de 2 sobre un hueco cercano a 2^63). El desbordamiento era un comportamiento indefinido en compilaciones con sanitizadores y se ajustaba silenciosamente por desbordamiento en compilaciones de lanzamiento. [#109937](https://github.com/ClickHouse/ClickHouse/pull/109937) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error lógico `Bad cast from type DB::FunctionNode to DB::ConstantNode` (aborto del servidor en compilaciones de depuración/con sanitizador) al ejecutar `SELECT ... ORDER BY ... WITH FILL` sobre una tabla `Distributed` con un valor bajo de `optimize_const_name_size`. [#109938](https://github.com/ClickHouse/ClickHouse/pull/109938) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error lógico `Invalid number of rows in Chunk` cuando un destino `INTERPOLATE` es un alias de una columna `WITH FILL` con el analyzer antiguo (`enable_analyzer = 0`). Estas consultas ahora se rechazan con un error `INVALID_WITH_FILL_EXPRESSION` claro. [#110103](https://github.com/ClickHouse/ClickHouse/pull/110103) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error lógico (aborto del servidor en compilaciones de depuración/con sanitizador) cuando las funciones `indexHint`/`ignore`/`isZeroOrNull` reciben un argumento cuyo tipo se resuelve como `Nothing`, por ejemplo, dentro de expresiones como `indexHint(assumeNotNull(materialize(NULL)))`. [#110192](https://github.com/ClickHouse/ClickHouse/pull/110192) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error lógico `Too large size (...) passed to allocator` que podía producirse cuando se establecía un valor fuera de rango para una configuración de tamaño del búfer de lectura, como `max_read_buffer_size` o `max_read_buffer_size_local_fs`. Estos valores ahora se limitan a 256 MiB mediante la comprobación de coherencia de la configuración y, además, en el punto de consumo para `INSERT ... FROM INFILE`, que lee archivos dentro de `clickhouse-client`, donde esa comprobación no se aplica. [#110207](https://github.com/ClickHouse/ClickHouse/pull/110207) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `CHECK TABLE` ahora informa de la corrupción real de una projection part que no pudo cargar sus metadatos, en lugar del engañoso error `Columns doesn't match ... Expected: 0 columns`. [#110262](https://github.com/ClickHouse/ClickHouse/pull/110262) ([Raúl Marín](https://github.com/Algunenano)).
* Una incompatibilidad de tipos cuando un valor leído de una fuente PostgreSQL (por ejemplo, la table function `postgresql` o el table engine `PostgreSQL`) no puede convertirse al tipo de columna declarado (por ejemplo, una columna `text` declarada como `Int32`) ahora se informa como un error de consulta adecuado; anteriormente provocaba el aborto del servidor en compilaciones de depuración y con sanitizador. [#110264](https://github.com/ClickHouse/ClickHouse/pull/110264) ([Groene AI](https://github.com/groeneai)).
* Se añade compatibilidad en macOS para el query profiler, los profilers de memoria y de trace, y la simbolización de `system.trace_log`. [#109825](https://github.com/ClickHouse/ClickHouse/pull/109825) ([Raúl Marín](https://github.com/Algunenano)).
* Actualiza `chdig` a [v26.7.1](https://github.com/azat/chdig/releases/tag/v26.7.1): trazas de pila comprimidas para compartir, patrones de consulta, compatibilidad con memoria de arena separada, mejoras en Perfetto y correcciones de compatibilidad. [#110938](https://github.com/ClickHouse/ClickHouse/pull/110938) ([Azat Khuzhin](https://github.com/azat)).
* Corrige una inferencia incorrecta de monotonicidad para `intDiv` en una clave sin signo dividida por una constante con signo, lo que podía desactivar la poda del índice de clave primaria para predicados `IN`/`NOT IN` que cruzan el límite de signo del tipo de resultado; los builds de depuración también provocaban un `LOGICAL_ERROR` `Invalid binary search result in MergeTreeSetIndex`. [#107586](https://github.com/ClickHouse/ClickHouse/pull/107586) ([Groene AI](https://github.com/groeneai)).
* Se añadió la configuración `allow_lossy_numeric_supertype` (deshabilitada de forma predeterminada). Cuando se habilita, `if`, `multiIf`, `coalesce`, `ifNull`, `array` y `map` sobre argumentos numéricos que no tienen un tipo común sin pérdida (por ejemplo, `Decimal` y `Float64`, o `Int64` y `Float64`) se resuelven como `Float64` en lugar de `Variant`, de modo que el resultado pueda usarse con funciones de agregación como `sum`, `avg`, `min` y `max`. Los mensajes de error relevantes de las funciones de agregación ahora mencionan la configuración por su nombre. Cierra [#106707](https://github.com/ClickHouse/ClickHouse/issues/106707). [#107236](https://github.com/ClickHouse/ClickHouse/pull/107236) ([Groene AI](https://github.com/groeneai)).
* Inicia el endpoint de Prometheus (para configuraciones solo de métricas) y la recopilación asíncrona de métricas antes de que se carguen las tablas, para que las métricas estén visibles durante la fase de carga de metadatos, que puede ser larga. [#108402](https://github.com/ClickHouse/ClickHouse/pull/108402) ([Christoph Wurm](https://github.com/cwurm)).

<div id="268-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Corrección de errores (mal funcionamiento visible para el usuario en una versión estable oficial)
</div>

* Corrige el fallo de `TRUNCATE TABLE` y `DROP PARTITION` en tablas con muchos bloques de deduplicación, donde eliminarlos en una sola solicitud a ZooKeeper podía superar el límite predeterminado de 1 MB de `jute.maxbuffer`. [#105991](https://github.com/ClickHouse/ClickHouse/pull/105991) ([Clayton McClure](https://github.com/cmcclure-twilio)). Esto solo le afecta si usa Apache ZooKeeper (no recomendado) en lugar de ClickHouse Keeper.
* Corrige el uso de nombres de columna completos (`database.table.column`) en la cláusula `WHERE` de las mutaciones, como `DELETE FROM` y `ALTER TABLE ... UPDATE/DELETE`, en tablas de la familia `MergeTree`; anteriormente, estas consultas fallaban con un error de columnas ausentes. Cierra [#71760](https://github.com/ClickHouse/ClickHouse/issues/71760). [#109491](https://github.com/ClickHouse/ClickHouse/pull/109491) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Corrige la caché de resultados de consultas para consultas PromQL. El dialecto `promql` omitía la comprobación de funciones no deterministas y podía servir resultados obsoletos anclados en `now()`; la API HTTP de Prometheus (`/api/v1/query`, `/api/v1/query_range`) nunca almacenaba entradas de caché. [#110887](https://github.com/ClickHouse/ClickHouse/pull/110887) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Corrige el fallo del servidor al arrancar cuando la variable de entorno `TZ` está vacía. Cierra [#68920](https://github.com/ClickHouse/ClickHouse/issues/68920). [#68921](https://github.com/ClickHouse/ClickHouse/pull/68921) ([Ardenwick](https://github.com/ardenwick)).
* Se corrigió el fallo del servidor al arrancar cuando un motor de base de datos `Backup` hace referencia a una copia de seguridad que ha dejado de estar disponible (por ejemplo, cuando se eliminaron sus archivos o el almacenamiento subyacente no es accesible). La base de datos ahora se carga sin tablas en lugar de impedir el arranque de todo el servidor. [#83188](https://github.com/ClickHouse/ClickHouse/pull/83188) ([Vitaly Orlov](https://github.com/orloffv)).
* Al usar inserciones en segundo plano en tablas con el motor `Distributed`, los retrasos provocados por errores repetidos al enviar datos a shards remotos ahora disminuyen una vez resueltos esos errores. Anteriormente, el retraso solo aumentaba y nunca se restablecía. [#87378](https://github.com/ClickHouse/ClickHouse/pull/87378) ([Andrei Kochemirovskii](https://github.com/Blackmorse)).
* Corrige que `broken_data_files` en `system.distribution_queue` y la métrica `BrokenDistributedFilesToInsert` siempre informaran `0` para los archivos dañados detectados al escanear la cola de inserción asíncrona de `Distributed` durante el arranque. [#92124](https://github.com/ClickHouse/ClickHouse/pull/92124) ([KG.Xu](https://github.com/squalfof)).
* Corrige la recuperación del logging tras un error por disco lleno. Anteriormente, cuando el disco del log se llenaba, ClickHouse entraba en un estado fallido y saturaba syslog de forma continua con mensajes de error (potencialmente escribiendo más de 100 GB/hora), sin recuperarse nunca incluso después de liberar espacio en disco. Ahora el sistema de logging se recupera automáticamente en cuanto vuelve a haber espacio en disco disponible, sin necesidad de reiniciar el servidor. [#93127](https://github.com/ClickHouse/ClickHouse/pull/93127) ([jaehanbyun](https://github.com/jaehanbyun)).
* Reenvía las credenciales estáticas de S3 a las lecturas de tablas `DataLakeCatalog` de Unity cuando `vended_credentials` está deshabilitado, evitando fallos de acceso anónimo al almacenamiento de objetos. [#96910](https://github.com/ClickHouse/ClickHouse/pull/96910) ([kgeg401](https://github.com/kgeg401)).
* Corrige un fallo en el código de análisis de esquemas del motor de tablas `DeltaLake`. [#97112](https://github.com/ClickHouse/ClickHouse/pull/97112) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige un problema de seguridad por el que un cliente TCP no autenticado podía comprobar la existencia de tablas y el estado de la replicación a través del puerto interserver. [#99854](https://github.com/ClickHouse/ClickHouse/pull/99854) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió un error de sintaxis cuando un alias sigue a una subconsulta en `DESCRIBE TABLE`. Soluciona [#100031](https://github.com/ClickHouse/ClickHouse/issues/100031). [#100205](https://github.com/ClickHouse/ClickHouse/pull/100205) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigió una excepción en subconsultas correlacionadas cuando las columnas externas pasan a ser `Nullable` con `group_by_use_nulls` y `ROLLUP`/`CUBE`. [#100365](https://github.com/ClickHouse/ClickHouse/pull/100365) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una terminación abrupta del servidor (en compilaciones con sanitizador) y una pérdida silenciosa de datos durante el arranque de la tabla cuando una parte `MergeTree` transaccional revertida se intersecta con una parte confirmada. [#100992](https://github.com/ClickHouse/ClickHouse/pull/100992) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Se corrigió que `indexOfAssumeSorted` devolviera resultados incorrectos para columnas `Array(LowCardinality(String))` en tablas `MergeTree`. [#101771](https://github.com/ClickHouse/ClickHouse/pull/101771) ([Yash ](https://github.com/Onyx2406)).
* Se corrigió una poda incorrecta de la clave primaria cuando la sorting key de una tabla envuelve una columna `Date` en `toDateTime` (por ejemplo, `ORDER BY toDateTime(date_column)`) y una consulta filtra por la columna original con una comparación como `WHERE date_column >= '...'`. `toDateTime(Date)` produce overflow para valores `Date` fuera del rango de `DateTime` (después de `2106-02-07`), por lo que la clave almacenada no es monotónica; ClickHouse ya no usa la poda de clave primaria para esta combinación de clave/predicado porque hacerlo podría descartar gránulos que contienen filas coincidentes. Cierra [#101744](https://github.com/ClickHouse/ClickHouse/issues/101744). [#101814](https://github.com/ClickHouse/ClickHouse/pull/101814) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigió que `intDivOrNull`, `moduloOrNull` y `positiveModuloOrNull` devolvieran `0` en lugar de `NULL`, y que `intDivOrNull` e `intDivOrZero` lanzaran una excepción en lugar de devolver `NULL` / `0`, cuando la división provoca una excepción de coma flotante (división por cero o `INT_MIN / -1`), incluso con argumentos mixtos con y sin signo. [#101976](https://github.com/ClickHouse/ClickHouse/pull/101976) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigieron excepciones `LOGICAL_ERROR` al leer tablas `Iceberg` o `DeltaLake` en casos límite, como actualizaciones concurrentes de metadata de `Iceberg` o lecturas mediante la table function `merge` sobre tablas `DeltaLake`. [#102033](https://github.com/ClickHouse/ClickHouse/pull/102033) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron fallos en requests HTTP salientes (p. ej., la función `aiGenerate`, la table function `url`, S3) con `No route to host` en hosts que anuncian direcciones IPv4 e IPv6 cuando solo una familia de direcciones es enrutable. El HTTP connection pool ahora recurre a la siguiente dirección resuelta cuando la primera falla con un error de red, en lugar de propagar el error en la primera request. [#103786](https://github.com/ClickHouse/ClickHouse/pull/103786) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una terminación abrupta del servidor durante `RESTORE` de copias de seguridad que contienen tablas con dependencias cíclicas. [#103824](https://github.com/ClickHouse/ClickHouse/pull/103824) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* La inferencia de esquema para columnas Arrow `time32`/`time64` (p. ej., `SELECT * FROM file(..., 'Arrow')`) ahora infiere `Time64` en lugar de `DateTime64`; cualquier elemento posterior que dependa del tipo inferido anterior observará el nuevo tipo tras una actualización. Además, los valores `Time`/`Time64` ahora pueden exportarse a Arrow con el tipo temporal de Apache Arrow adecuado, seleccionado según la precisión. Soluciona [#104038](https://github.com/ClickHouse/ClickHouse/issues/104038). [#104316](https://github.com/ClickHouse/ClickHouse/pull/104316) ([/bin/cat](https://github.com/Maoyao233)).
* Se corrigió una condición de carrera entre `ALTER TABLE ... RENAME COLUMN` y un `OPTIMIZE TABLE ... FINAL` concurrente (o cualquier merge en segundo plano) en `MergeTree` que podía reemplazar silenciosamente los datos de la columna renombrada por valores predeterminados. [#104822](https://github.com/ClickHouse/ClickHouse/pull/104822) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error lógico `Block structure mismatch` durante un `INSERT` concurrente mientras un `ALTER TABLE ... RENAME COLUMN` estaba en curso, en una base de datos `Atomic` con `lazy_load_tables = 1` después de `DETACH DATABASE`/`ATTACH DATABASE`. [#104852](https://github.com/ClickHouse/ClickHouse/pull/104852) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `groupConcat` cuando se mezclan las formas paramétrica y de dos argumentos, por ejemplo `groupConcat(',', 2)(x, '/')`: el parámetro de límite de filas se ignoraba silenciosamente, por lo que se devolvían todas las filas en lugar del número solicitado; el delimitador del segundo argumento ahora prevalece correctamente sobre el parámetro. [#104882](https://github.com/ClickHouse/ClickHouse/pull/104882) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigió un `LOGICAL_ERROR` (`Expected one block from input stream`) lanzado por `KILL QUERY`/`KILL MUTATION`/`KILL PART_MOVE_TO_SHARD`/`KILL TRANSACTION` cuando su cláusula `WHERE` contiene una subconsulta por fila, o cuando `max_block_size` es lo bastante pequeño como para que el `SELECT` interno sobre la tabla `system.*` correspondiente emita más de un bloque. [#104927](https://github.com/ClickHouse/ClickHouse/pull/104927) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `CAST` de unidades de interval más pequeñas a unidades más grandes que devolvía resultados incorrectos (por ejemplo, `CAST(toIntervalSecond(60) AS IntervalMinute)` devolvía `0` en lugar de `1`). Cierra [#104986](https://github.com/ClickHouse/ClickHouse/issues/104986). [#105058](https://github.com/ClickHouse/ClickHouse/pull/105058) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigió un error lógico (`Assertion 'row < chunk.getNumRows()' failed`) en consultas `LIMIT ... WITH TIES` ejecutadas con la canalización de lectura en orden (`optimize_read_in_order = 1` y `read_in_order_use_virtual_row_per_block = 1`). [#105102](https://github.com/ClickHouse/ClickHouse/pull/105102) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una fuga en las vistas materializadas actualizables (`MATERIALIZED VIEW ... REFRESH ...`): la tabla interna temporal que una actualización intercambiaba mediante `EXCHANGE TABLES` no podía eliminarse si era mayor que `max_table_size_to_drop`, por lo que cada actualización posterior creaba otra tabla interna temporal más, haciendo crecer el directorio de datos de la vista hasta agotar el disco. La operación interna de eliminación de la tarea de actualización ahora omite `max_table_size_to_drop` y `max_partition_size_to_drop`; estas salvaguardas siguen aplicándose al `DROP TABLE` de la propia vista emitido por el usuario. Cierra [#104900](https://github.com/ClickHouse/ClickHouse/issues/104900). [#105106](https://github.com/ClickHouse/ClickHouse/pull/105106) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error inesperado `DATA_TYPE_CANNOT_BE_USED_IN_KEY` en consultas `ALTER` que no cambian la clave de ordenación (cambiar settings, comments, codecs, añadir una columna que no forma parte de la clave, etc.) en tablas `MergeTree` que tienen una `SimpleAggregateFunction` (u otro tipo permitido solo con `allow_suspicious_primary_key = 1`) en la clave de ordenación. [#105111](https://github.com/ClickHouse/ClickHouse/pull/105111) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error de uso de memoria después de su liberación al consultar las columnas de estado de las réplicas de `system.clusters` (como `is_active`, `unsynced_after_recovery`, `recovery_time`) mientras se elimina o se desacopla una base de datos `Replicated`. Además, las excepciones benignas de Keeper que se ignoraban en esta ruta de código (la base de datos afectada se trata como temporalmente no disponible y se omite) ahora se registran en el nivel `Information` en lugar de `Error`, por lo que ya no llegan a los clientes con el valor predeterminado `send_logs_level = 'warning'`. [#105149](https://github.com/ClickHouse/ClickHouse/pull/105149) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un problema por el que, al ejecutar varias sentencias en `clickhouse-local --ignore-error`, se mostraban todas las sentencias posteriores dentro del mensaje de error para cada error léxico o de paréntesis no emparejados. [#105480](https://github.com/ClickHouse/ClickHouse/pull/105480) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo poco frecuente del servidor cuando las vistas materializadas actualizables se eliminan o sustituyen al mismo tiempo que se planifica su actualización. [#105588](https://github.com/ClickHouse/ClickHouse/pull/105588) ([Groene AI](https://github.com/groeneai)).
* Ahora se rechazan `ALTER TABLE ... DELETE` y `ALTER TABLE ... UPDATE` en tablas `Iceberg` cuyo formato de archivo de datos no sea `Parquet`, con un error `NOT_IMPLEMENTED` claro, en lugar de provocar un fallo del servidor o corromper silenciosamente la tabla. [#105893](https://github.com/ClickHouse/ClickHouse/pull/105893) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron resultados incorrectos en una vista definida con `EXCEPT` o `INTERSECT` cuyo operando es una cadena `UNION`, después de `DETACH`/`ATTACH` o de reiniciar el servidor. Al formateador le faltaban paréntesis alrededor de los elementos `UNION` hijos de `INTERSECT`/`EXCEPT`, por lo que el SQL almacenado se volvía a analizar con la precedencia invertida. [#105935](https://github.com/ClickHouse/ClickHouse/pull/105935) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la detección errónea de datos `JSON` como `TSKV` durante la autodetección de formato. Cierra [#100797](https://github.com/ClickHouse/ClickHouse/issues/100797). [#106009](https://github.com/ClickHouse/ClickHouse/pull/106009) ([Pavel Kruglov](https://github.com/Avogar)).
* Ahora se prohíbe crear un índice de omisión `minmax` directamente sobre columnas `JSON`: más adelante podía hacer fallar las inserciones con una excepción `NO_COMMON_TYPE` cuando se insertaban matrices de tipos mixtos. En su lugar, cree el índice sobre subcolumnas tipadas (por ejemplo, `INDEX idx json.field TYPE minmax`). [#106094](https://github.com/ClickHouse/ClickHouse/pull/106094) ([linhaojie](https://github.com/linhaojie)).
* Se corrigió un error lógico (`Parsed partition value ... doesn't match partition value for an existing part with the same partition ID`) producido por `OPTIMIZE TABLE ... PARTITION ...` y otras consultas que resuelven un valor de partición, en tablas con una clave de partición de tipo `Time`. [#106202](https://github.com/ClickHouse/ClickHouse/pull/106202) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un caso en el que una data part se marcaba incorrectamente como si tuviera una proyección dañada después de que una eliminación ligera no dejara ninguna projection part: ya fuera porque la proyección se reconstruía con cero filas de salida o porque se eliminaba (`lightweight_mutation_projection_mode = 'rebuild'`/`'drop'`). Antes, este estado deshabilitaba la optimización de proyecciones para las consultas sobre esa parte. [#106273](https://github.com/ClickHouse/ClickHouse/pull/106273) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió que `removeDirectory` en discos `plain` de object storage (como `s3_plain`) eliminara todos los archivos dentro de un directorio no vacío como si la eliminación fuera recursiva; ahora, eliminar un directorio no vacío falla con `CANNOT_RMDIR`, y la eliminación recursiva gestiona el contenido explícitamente. [#106281](https://github.com/ClickHouse/ClickHouse/pull/106281) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Se corrigió un error lógico (`Part ... doesn't exist`) que podía abortar el servidor durante la recuperación de un `INSERT` con quorum tras un error de hardware de Keeper cuando el quorum se marcaba simultáneamente como fallido. [#106424](https://github.com/ClickHouse/ClickHouse/pull/106424) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una excepción `LOGICAL_ERROR` por nombres de columna duplicados al aplicar políticas de fila. [#106438](https://github.com/ClickHouse/ClickHouse/pull/106438) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Corrige que `CREATE OR REPLACE TABLE` y `REPLACE TABLE` dejaran una tabla `_tmp_replace_*` huérfana en disco y sustituyeran la tabla original por una vacía cuando el destino existente superaba `max_table_size_to_drop`. La comprobación de tamaño ahora se realiza antes del intercambio, de modo que la infracción se aborta limpiamente con el nombre de la tabla visible para el usuario en el error. [#106782](https://github.com/ClickHouse/ClickHouse/pull/106782) ([Groene AI](https://github.com/groeneai)).
* Corrige que `JSON_QUERY`/`JSON_VALUE`/`JSON_EXISTS` devolvieran `Dynamic` en lugar de `String`/`UInt8` con argumentos `Dynamic`. Cierra [#106461](https://github.com/ClickHouse/ClickHouse/issues/106461). [#106877](https://github.com/ClickHouse/ClickHouse/pull/106877) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige resultados incorrectos al consultar una tabla `ReplacingMergeTree` con `FINAL` y un filtro sobre un text index cuando `query_plan_optimize_lazy_final` estaba habilitado. La optimización de `FINAL` diferido construía pasos de lectura que no reproducían la lectura directa desde el text index, por lo que el filtro descartaba todas las filas coincidentes. [#106894](https://github.com/ClickHouse/ClickHouse/pull/106894) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Aplica `query_masking_rules` a los mensajes añadidos a las excepciones, para que las credenciales codificadas en URL en los sufijos `(in file/uri ...)` de los errores de las table functions `jdbc`/`odbc` no se filtren cuando haya masking rules configuradas. [#106916](https://github.com/ClickHouse/ClickHouse/pull/106916) ([Gaurav Dubey](https://github.com/gaurav0107)).
* Corrige que las partes se marcaran como dañadas y se desacoplaran en cualquier recarga de parte (reinicio del server, `DETACH`/`ATTACH`) en tablas con una columna `LowCardinality(Nullable(...))` en la partition key. Desde la versión 26.5, el archivo de índice minmax por parte no se escribía cuando el valor mínimo y máximo de esa columna eran `NULL`, mientras que la comprobación de consistencia de la parte seguía exigiendo ese archivo. Las partes escritas por las versiones afectadas no tienen el archivo de índice minmax y aún deben volver a adjuntarse manualmente. Cierra [#106837](https://github.com/ClickHouse/ClickHouse/issues/106837). [#106945](https://github.com/ClickHouse/ClickHouse/pull/106945) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Corrige un `LOGICAL_ERROR` (`Unexpected expression in JOIN ON section. Expected boolean (UInt8), got 'Nothing'`) cuando un predicado no equi de `JOIN ... ON` hace referencia a una columna de tipo `Nothing`, como una generada por `ARRAY JOIN []`. [#106981](https://github.com/ClickHouse/ClickHouse/pull/106981) ([Groene AI](https://github.com/groeneai)).
* Corrige un `LOGICAL_ERROR` poco frecuente (`Attempt to release query context that does not exist`) y el cierre inesperado del server asociado al leer tablas `MergeTree` a través de un cache disk del filesystem creado con `enable_filesystem_query_cache_limit = 1`. [#107028](https://github.com/ClickHouse/ClickHouse/pull/107028) ([Groene AI](https://github.com/groeneai)).
* Corrige un cierre inesperado del server al mover una parte vacía a un disco `plain_rewritable` (por ejemplo, con `ALTER TABLE ... MOVE PARTITION ... TO DISK` para una parte vacía conservada por `remove_empty_parts = 0`). [#107040](https://github.com/ClickHouse/ClickHouse/pull/107040) ([Groene AI](https://github.com/groeneai)).
* Corrige el orden incorrecto de las filas en consultas `ORDER BY` sobre `UNION ALL` con `optimize_read_in_order` y `read_in_order_use_virtual_row` habilitados. Cierra [#106879](https://github.com/ClickHouse/ClickHouse/issues/106879). [#107053](https://github.com/ClickHouse/ClickHouse/pull/107053) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigió un `LOGICAL_ERROR` (`Unsupported argument types`) en la función `geohashesInBox` cuando sus argumentos de coordenadas mezclaban valores constantes y no constantes, o cuando una coordenada era `BFloat16`. Los argumentos `Float32` mixtos const/no-const ahora funcionan, y los argumentos `BFloat16` se rechazan con un error claro. [#107063](https://github.com/ClickHouse/ClickHouse/pull/107063) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron resultados incorrectos (filas duplicadas) para `SELECT DISTINCT` sobre un `GROUP BY` con `WITH CUBE`, `WITH ROLLUP` o `GROUPING SETS` en las mismas claves. La optimización `query_plan_remove_redundant_distinct` ya no elimina `DISTINCT` en estos casos, porque los modificadores de agrupación generan filas adicionales con las columnas clave en sus valores predeterminados, que pueden colisionar con valores reales de grupo. [#107072](https://github.com/ClickHouse/ClickHouse/pull/107072) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un resultado incorrecto en un `OUTER JOIN` cuando el filtro `WHERE` es una conjunción que contiene un término constante (por ejemplo, `p AND 1`, o `WHERE p QUALIFY NULL`, donde `QUALIFY NULL` se fusiona en `WHERE`). El término constante de la conjunción podía propagarse al lado no conservado del join y eliminarse del filtro posterior al join, de modo que el join producía filas sin coincidencia con las columnas de ese lado en sus valores predeterminados, y esas filas pasaban incorrectamente el filtro. [#107084](https://github.com/ClickHouse/ClickHouse/pull/107084) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que las user-defined functions `executable_pool` configuradas con `<lifetime>` no detectaran cambios en el script subyacente. Anteriormente, solo `SYSTEM RELOAD FUNCTIONS` volvía a leer un script editado; las recargas periódicas de `<lifetime>` seguían ejecutando la versión anterior. [#107087](https://github.com/ClickHouse/ClickHouse/pull/107087) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una excepción `LOGICAL_ERROR` (`Cannot find input column ... on its position in inputs of expression actions DAG`) en una scalar subquery correlacionada sobre un origen que proyecta dos veces el mismo identificador de columna (p. ej., `SELECT number, *`) cuando `correlated_subqueries_default_join_kind = 'left'`. [#107112](https://github.com/ClickHouse/ClickHouse/pull/107112) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una condición de carrera en el recopilador global de trazas del server entre el inicio del perfilador de un worker thread y el apagado del server. [#107307](https://github.com/ClickHouse/ClickHouse/pull/107307) ([Groene AI](https://github.com/groeneai)).
* Los incremental backups ya no almacenan credenciales de `S3` en el localizador `<base_backup>` del archivo de metadata `.backup`. Los backups creados con `use_same_s3_credentials_for_base_backup = 1`, o con credenciales explícitas del backup base que coinciden con este localizador de backup, almacenan un marcador no secreto y se restauran sin settings adicionales en el momento de la restauración; en el caso de backups creados con credenciales explícitas distintas para el backup base o con argumentos adicionales de authentication base, páselos a `RESTORE` con el setting `base_backup`. Los backups creados por versiones anteriores con embedded credentials siguen siendo restaurables. [#107357](https://github.com/ClickHouse/ClickHouse/pull/107357) ([Pablo Marcos](https://github.com/pamarcos)).
* Se corrigió que el encabezado de `CSVWithNames` y `CSVWithNamesAndTypes` tuviera menos columnas que los datos cuando `output_format_csv_serialize_tuple_into_separate_columns` está habilitado (valor predeterminado). El encabezado (y la fila de tipos) ahora aplana las columnas `Tuple` en sus fields hoja con nombres separados por puntos (p. ej., `t.a`, `t.b`), de modo que el número de columnas del encabezado coincida con los datos. Un nuevo setting `output_format_csv_header_serialize_tuple_into_separate_columns` (predeterminado `1`) controla este comportamiento y puede establecerse en `0` para restaurar el encabezado anterior de nombre único. [#107371](https://github.com/ClickHouse/ClickHouse/pull/107371) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la lectura de tablas `Iceberg` v3 cuyos data files `Parquet` contienen columnas reservadas de linaje de filas (como `_row_id`); el lector nativo de `Parquet` ya no genera `ICEBERG_SPECIFICATION_VIOLATION` para ID de field reservados que no forman parte del table schema. [#107377](https://github.com/ClickHouse/ClickHouse/pull/107377) ([Greg Maher](https://github.com/gregakinman)).
* Se corrigió un raro cierre inesperado del servidor durante el apagado (`std::future_error`: `The associated promise has been destructed prior to the associated state becoming ready`) causado porque una tarea programada se eliminaba de la cola del thread pool antes de ejecutarse. [#107383](https://github.com/ClickHouse/ClickHouse/pull/107383) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron los motores de tabla y base de datos `MaterializedPostgreSQL` para que una sola tabla o base de datos pueda replicarse desde un esquema no predeterminado de PostgreSQL (`materialized_postgresql_schema`), incluido el caso en que existan tablas con el mismo nombre en varios esquemas de la misma base de datos (antes compartían una publication y un replication slot, y se interferían entre sí). [#107425](https://github.com/ClickHouse/ClickHouse/pull/107425) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que `MaterializedPostgreSQL` dejara de replicar una base de datos completa (con `LOGICAL_ERROR: Columns number mismatch`) cuando cambiaba la estructura de una sola tabla replicada mientras el servidor estaba caído. Ahora solo se omite la tabla afectada y puede recuperarse con `DETACH`/`ATTACH`. [#107427](https://github.com/ClickHouse/ClickHouse/pull/107427) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `BACKUP` de una base de datos `MaterializedPostgreSQL` ya no se queda bloqueado indefinidamente con `Table ... were created or changed its definition during scanning`, y ahora sí respalda los datos de la tabla (delegado al `ReplacingMergeTree` subyacente), que puede restaurarse como un `ReplacingMergeTree` standalone. [#107433](https://github.com/ClickHouse/ClickHouse/pull/107433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una regresión por la que establecer `compatibility = '26.6'` (que habilita implícitamente la estrategia de partición `hive`) aceptaba silenciosamente `{_partition_id}` en rutas de tablas S3/object storage en lugar de generar `BAD_ARGUMENTS`. [#107437](https://github.com/ClickHouse/ClickHouse/pull/107437) ([Lefteris](https://github.com/LefterisXefteris)).
* Se corrigió una fuga de memoria en el `mongo-c-driver` incluido que podía producirse al leer desde MongoDB (por ejemplo, mediante un Diccionario de MongoDB o la table function `mongodb`) si un error de lectura retryable iba seguido de un fallo en la selección del servidor durante el reintento. [#107448](https://github.com/ClickHouse/ClickHouse/pull/107448) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una excepción al insertar en una tabla `Iceberg` cuyos metadatos fueron creados por un external engine y omiten los arrays opcionales `snapshots`, `metadata-log` o `snapshot-log`. Estas inserciones ahora se completan correctamente en lugar de fallar. [#107473](https://github.com/ClickHouse/ClickHouse/pull/107473) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió que `DELETE FROM` (eliminación ligera) requiriera el privilege `ALTER UPDATE` además de `ALTER DELETE`. Un usuario al que solo se le concedió `ALTER DELETE` ahora puede ejecutar `DELETE FROM`, como se documenta. [#107491](https://github.com/ClickHouse/ClickHouse/pull/107491) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió `NOT_FOUND_COLUMN_IN_BLOCK` al leer archivos particionados por Hive con `use_hive_partitioning = 1` y una cláusula `WHERE`/`PREWHERE` que filtra una columna real (no virtual) mientras también se selecciona una columna de partición de Hive. [#107505](https://github.com/ClickHouse/ClickHouse/pull/107505) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` (`Different order of columns in UNION subquery`) cuando el analyzer antiguo (`enable_analyzer = 0`) lee un subconjunto de columnas de una subquery cuyos hijos de `UNION` son operaciones de conjuntos `INTERSECT`/`EXCEPT`. [#107511](https://github.com/ClickHouse/ClickHouse/pull/107511) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que los valores `NULL` se convirtieran silenciosamente en cadenas vacías al insertar datos `Arrow`/`ORC` en una columna `LowCardinality(Nullable(...))`. Fue una regresión introducida en la versión 26.5. [#107532](https://github.com/ClickHouse/ClickHouse/pull/107532) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Se corrigió un error lógico (`Stream ... variant_discr ... is not found`) que podía producirse al fusionar o leer una parte de `MergeTree` generada por una mutación de una tabla con una columna `Dynamic`. [#107562](https://github.com/ClickHouse/ClickHouse/pull/107562) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error lógico (`WhichDataType(const_type).isArray()`) durante el análisis de la clave primaria cuando se llama a `pointInPolygon` con un argumento de polígono constante de un tipo contenedor, como `Variant` o `Dynamic` (por ejemplo, `pointInPolygon((x, y), if(c, [(0, 0), ...], NULL))`). [#107589](https://github.com/ClickHouse/ClickHouse/pull/107589) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error lógico (`Last stored last_written_position in meta file ... is bigger than current last_written_pos`) en el motor `FileLog` que podía producirse cuando se eliminaba un archivo supervisado y se volvía a crear reutilizando el mismo inode. [#107617](https://github.com/ClickHouse/ClickHouse/pull/107617) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una rara interrupción del servidor (`std::future_error`: `The associated promise has been destructed prior to the associated state becoming ready`) durante el procesamiento de solicitudes del cliente ZooKeeper, cuando una solicitud asíncrona a Keeper se descartaba mientras se enviaba, por ejemplo, bajo presión de memoria. [#107647](https://github.com/ClickHouse/ClickHouse/pull/107647) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `RESTORE` para las tablas `ReplicatedMergeTree`, de modo que las partes con contenido duplicado de una copia de seguridad se conserven en lugar de deduplicarse silenciosamente. [#107652](https://github.com/ClickHouse/ClickHouse/pull/107652) ([Pablo Marcos](https://github.com/pamarcos)).
* Se corrigió el filtro de join en tiempo de ejecución que producía resultados incorrectos para columnas `JSON`. Cierra [#107646](https://github.com/ClickHouse/ClickHouse/issues/107646). [#107663](https://github.com/ClickHouse/ClickHouse/pull/107663) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigieron resultados incorrectos en consultas distribuidas que seleccionaban columnas `ALIAS` que comparten una subexpresión común: las columnas podían desalinearse y devolver valores bajo la columna equivocada. [#107675](https://github.com/ClickHouse/ClickHouse/pull/107675) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Las cuotas indexadas por `normalized_query_hash` ahora contabilizan todos los recursos (`read_rows`, `read_bytes`, `result_rows`, `result_bytes`, `execution_time`, `written_bytes`, `errors`) por patrón de consulta, igual que los contadores de número de consultas, en lugar de contabilizarlos en un único bucket compartido por usuario. [#107681](https://github.com/ClickHouse/ClickHouse/pull/107681) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error lógico `Block structure mismatch in UnionStep stream` (interrupción del servidor en compilaciones de debug/sanitizador, `Code: 49` en compilaciones de lanzamiento) que se producía cuando ramas hermanas de un `UNION`/`INTERSECT`/`EXCEPT` diferían solo en su predicado `WHERE` y el predicado de una de las ramas se plegaba como constante a una columna `Const`. [#107719](https://github.com/ClickHouse/ClickHouse/pull/107719) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron errores lógicos (`Bad cast`) causados por la eliminación inconsistente de `LowCardinality` anidado dentro de columnas `Variant` y `Dynamic`, por ejemplo, en `concat`, `format` y el análisis de la clave primaria. Cierra [#107598](https://github.com/ClickHouse/ClickHouse/issues/107598). [#107773](https://github.com/ClickHouse/ClickHouse/pull/107773) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió un grave desequilibrio en la distribución del trabajo con réplicas paralelas cuando el clúster contiene réplicas inactivas (por ejemplo, entradas obsoletas dejadas tras el escalado automático). El coordinador de lectura ya no cuenta esas réplicas, por lo que el trabajo se equilibra entre las réplicas en línea en lugar de acumularse en una sola. [#107805](https://github.com/ClickHouse/ClickHouse/pull/107805) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción `Not-ready Set is passed as the second argument`, que podía producirse cuando la construcción de un conjunto para una subconsulta `IN` durante el análisis de la clave primaria fallaba silenciosamente (por ejemplo, por un timeout de subconsulta con `overflow_mode = 'break'`), dejando el conjunto permanentemente sin construir en la canalización de consultas. [#107924](https://github.com/ClickHouse/ClickHouse/pull/107924) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un fallo del servidor en el pushdown de predicados (`enable_optimize_predicate_expression`, analyzer heredado) cuando una subconsulta `UNION` aparece dentro de una condición `JOIN ... ON`. [#107930](https://github.com/ClickHouse/ClickHouse/pull/107930) ([Groene AI](https://github.com/groeneai)).
* Se corrigen errores espurios de `CHECKSUM_DOESNT_MATCH` y de lectura de `Parquet` (y, en algunos formatos, resultados silenciosamente incorrectos) cuando un objeto de S3 o compatible con S3 (p. ej., GCS) se sobrescribe en el mismo lugar mientras se está leyendo. Ahora estas lecturas fallan con un error claro y reintentable, en lugar de devolver datos ensamblados a partir de dos versiones del objeto; esto se controla mediante el nuevo ajuste `s3_validate_etag_on_read` (activado de forma predeterminada). [#107934](https://github.com/ClickHouse/ClickHouse/pull/107934) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrige un `SELECT` que fallaba con `NOT_FOUND_COLUMN_IN_BLOCK` en una tabla que tiene un índice de omisión de datos `set` cuando una política de filas la filtra usando una condición siempre verdadera combinada con una comprobación sobre una columna no indexada. [#107971](https://github.com/ClickHouse/ClickHouse/pull/107971) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrige el análisis de los parámetros de comando de las funciones definidas por el usuario ejecutables para que no se acepten como parámetros placeholders con nombres vacíos o no válidos. [#107983](https://github.com/ClickHouse/ClickHouse/pull/107983) ([Goutam Adwant](https://github.com/goutamadwant)).
* Se corrige una regresión de rendimiento en las subcolumnas de `Map` con `PREWHERE`. Cierra [#107912](https://github.com/ClickHouse/ClickHouse/issues/107912). Provocada por [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200). [#107988](https://github.com/ClickHouse/ClickHouse/pull/107988) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige una escritura fuera de los límites al leer una columna `Variant` desde un bloque `Native` mal formado cuyos discriminadores hacen referencia a un índice de variante que no existe. [#107991](https://github.com/ClickHouse/ClickHouse/pull/107991) ([uwezkhan](https://github.com/uwezkhan)).
* Se corrigen resultados de consulta incorrectos debidos a una poda incorrecta de la clave primaria y de particiones cuando `toStartOfDay`, `toStartOfISOYear`, `toDaysSinceYearZero`, `toRelativeSecondNum`, `toRelativeMinuteNum`, `toRelativeHourNum`, `toRelativeWeekNum`, `toRelativeDayNum`, `toMonthNumSinceEpoch` o `toYearNumSinceEpoch` se aplican a una columna clave `Date32` que contiene fechas fuera del rango que la función puede representar (en particular, fechas anteriores a `1970-01-01`). Estas funciones se presentaban como monotónicas para el índice primario, pero antes hacían wraparound con esos argumentos, por lo que el índice podía podar gránulos que en realidad contenían filas coincidentes; ahora se saturan en los límites de su tipo de resultado y siguen siendo monotónicas en todo el rango de `Date32`. [#108018](https://github.com/ClickHouse/ClickHouse/pull/108018) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrige `accurateCastOrNull` de un `Tuple` cuyo elemento es `Dynamic`/`Variant`: un `NULL` genuino del origen se trataba como un fallo de conversión. Para un elemento de destino `Nullable`, un `NULL` del origen ahora sigue siendo un elemento `NULL` (como ocurre con un origen `Tuple(Nullable(...))` simple); para un elemento de destino no `Nullable`, un `NULL` del origen ahora hace que toda la tupla sea `NULL` en lugar de producir el valor predeterminado del elemento; los fallos de análisis o desbordamiento siguen haciendo que toda la tupla sea `NULL`. [#108023](https://github.com/ClickHouse/ClickHouse/pull/108023) ([Groene AI](https://github.com/groeneai)). También se corrige un error lógico al convertir una columna `Dynamic` o `Variant` anidada dentro de un `Tuple` a un tipo de elemento no `Nullable` con `accurateCastOrNull` o `accurateCastOrDefault`. [#108061](https://github.com/ClickHouse/ClickHouse/pull/108061) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que `numericIndexedVectorPointwiseMultiply` devolviera un resultado vacío al multiplicar por un vector de solo unos con una configuración BSI (bit-sliced index) diferente. [#108027](https://github.com/ClickHouse/ClickHouse/pull/108027) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que `toTime64` y `CAST(... AS Time64)` no limitaran los valores fuera de rango al intervalo de `Time64` en los modos de desbordamiento `saturate` e `ignore`, lo que podía producir valores que se muestran de forma idéntica pero se comparan como distintos. [#108028](https://github.com/ClickHouse/ClickHouse/pull/108028) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `getClientHTTPHeader` ahora se trata correctamente como no determinista, por lo que su resultado ya no se reutiliza incorrectamente en la caché de resultados de consultas. [#108029](https://github.com/ClickHouse/ClickHouse/pull/108029) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-client --port 9440` vuelve a habilitar automáticamente una conexión segura (TLS); esto se había roto por una refactorización que dejó de pasar el puerto a la comprobación de conexión segura. [#108032](https://github.com/ClickHouse/ClickHouse/pull/108032) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Un error transitorio al actualizar data parts de una tabla de solo lectura ya no detiene permanentemente la tarea de actualización en segundo plano. [#108034](https://github.com/ClickHouse/ClickHouse/pull/108034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que las advertencias de sobrecarga de memoria/CPU/mutation en `system.warnings` fueran con un ciclo de métricas asíncronas de retraso (y que estuvieran ausentes en el primer ciclo). [#108035](https://github.com/ClickHouse/ClickHouse/pull/108035) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La función de tabla `mongodb` ahora acepta `oid_columns` pasado como argumento con nombre (por ejemplo, `oid_columns='_id'`), en lugar de rechazarlo con `BAD_ARGUMENTS`. [#108039](https://github.com/ClickHouse/ClickHouse/pull/108039) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una excepción `Bad cast from type DB::ColumnNullable to DB::ColumnVector<...>` (error lógico) cuando un asterisco calificado (`t.*`) selecciona una clave `JOIN USING` y ese join está anidado debajo de un join `PASTE`/`CROSS`/por coma o de un join `ON` externo, con `join_use_nulls = 0`. [#108043](https://github.com/ClickHouse/ClickHouse/pull/108043) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el manejo incorrecto de las aserciones de anchura cero (`\b`, `^`, `$`) en las funciones regexp de "match all" `extractAll`, `extractAllGroupsVertical`, `extractAllGroupsHorizontal`, `countMatches` y `splitByRegexp`. Por ejemplo, `extractAll('new york is the greatest', '\b(\w)')` ahora devuelve correctamente la primera letra de cada palabra en lugar de cada letra. [#108047](https://github.com/ClickHouse/ClickHouse/pull/108047) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió `CREATE TABLE ... AS SELECT` en bases de datos `Atomic`, que dejaba una tabla vacía cuando fallaba la consulta; por ejemplo, cuando el usuario no tiene acceso a una tabla referenciada desde una subconsulta. Antes, al reintentar se informaba de que la tabla ya existía en lugar de mostrar el error original. Ahora la tabla se crea mediante una tabla temporal y solo pasa a ser visible una vez que se ha poblado por completo. [#108048](https://github.com/ClickHouse/ClickHouse/pull/108048) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ahora se permite consultar un diccionario `range_hashed` o `complex_key_range_hashed` que use un rango `DateTime64`, `Decimal` o de coma flotante con un argumento correspondiente para `dictGet`/`dictHas`. Antes, esas consultas fallaban con `must be convertible to Int64`, y los intervalos abiertos de rangos `Decimal`/`DateTime64` devolvían incorrectamente el valor predeterminado. [#108052](https://github.com/ClickHouse/ClickHouse/pull/108052) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una excepción (`CANNOT_PARSE_TEXT`) al cargar un diccionario con una clave compuesta cuyas columnas clave no eran las primeras de la definición del diccionario, con una fuente local de `ClickHouse` que usaba una consulta explícita. Ahora las columnas de origen se hacen coincidir con la estructura del diccionario por nombre en lugar de por posición. [#108053](https://github.com/ClickHouse/ClickHouse/pull/108053) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un fallo de la función de tabla `values` con `ARGUMENT_OUT_OF_BOUND` cuando se usa un literal decimal que no puede representarse exactamente en una columna estrecha de coma flotante (como `0.1` para una columna `Float32`); por ejemplo, `SELECT * FROM values('x Float32', 0.1)`. Ahora esos valores se aceptan y se convierten al valor representable más cercano, de forma coherente con `CAST` e `INSERT ... VALUES`. [#108055](https://github.com/ClickHouse/ClickHouse/pull/108055) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un `LOGICAL_ERROR` (`No available columns`) al ejecutar `SELECT count()` (u otras consultas triviales) sobre una tabla en la que al usuario solo se le había concedido acceso `SELECT` a una columna `ALIAS`. [#108056](https://github.com/ClickHouse/ClickHouse/pull/108056) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que `mapFilter`, `mapSort` (y sus variantes) y `mapConcat` eliminaran `LowCardinality` de los tipos de clave y valor de un `Map`. Antes, `mapFilter` sobre una columna `Map(LowCardinality(String), String)` devolvía `Map(String, String)`, lo que podía corromper los metadatos de una tabla creada mediante `CREATE TABLE ... AS SELECT` y hacer que `CHECK TABLE` fallara. [#108057](https://github.com/ClickHouse/ClickHouse/pull/108057) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron resultados incorrectos al usar `hasToken` en índices de texto con un tokenizador distinto de `splitByNonAlpha`. [#108066](https://github.com/ClickHouse/ClickHouse/pull/108066) ([Robert Schulze](https://github.com/rschu1ze)).
* Se corrigió un bloqueo de `SYSTEM RELOAD DICTIONARIES` (y `RELOAD DICTIONARY`) cuando muchos diccionarios MySQL definidos en XML compartían un único grupo de conexiones mediante `share_connection`. Ahora esos grupos respetan los valores de `connection_pool_size` y `connection_wait_timeout` (5 segundos de forma predeterminada) de la configuración, igual que los diccionarios definidos mediante colecciones con nombre. [#108083](https://github.com/ClickHouse/ClickHouse/pull/108083) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ahora se permite `EXISTS <dictionary>` para un usuario que solo tiene el privilegio `SHOW DICTIONARIES` sobre el diccionario (antes requería `SHOW TABLES`). [#108084](https://github.com/ClickHouse/ClickHouse/pull/108084) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que `CREATE TABLE dst AS src SETTINGS ...` (y variantes similares con `ORDER BY`/`PARTITION BY`, pero sin un `ENGINE` explícito) descartara silenciosamente el engine de la tabla de origen, las cláusulas de almacenamiento (como el `TTL` de la tabla y las claves) y la configuración. Ahora, el engine y las cláusulas de almacenamiento no sobrescritas se heredan de la tabla de origen, y la configuración especificada se aplica sobre la configuración de la tabla de origen. [#108085](https://github.com/ClickHouse/ClickHouse/pull/108085) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que `INSERT` en tablas `MergeTree` fallara con `filesystem error: in rename: Permission denied` en sistemas de archivos basados en Windows (WSL, CIFS/SMB, montajes bind de Docker Desktop), debido a que el escritor de partes dejaba descriptores de archivo abiertos durante el cambio de nombre del directorio de la parte. [#108089](https://github.com/ClickHouse/ClickHouse/pull/108089) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un fallo (desreferenciación de puntero nulo) al consultar una tabla `Hive` sin una cláusula `WHERE`, por ejemplo, `SELECT * FROM hive_table`. [#108094](https://github.com/ClickHouse/ClickHouse/pull/108094) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un `LOGICAL_ERROR` ("Unexpected return type from if") al leer una columna con `apply_mutations_on_fly = 1` después de un `ALTER UPDATE col = ... WHERE <cond>` con una condición no constante o falsa, seguido de `ALTER MODIFY COLUMN col <new type>`. [#108128](https://github.com/ClickHouse/ClickHouse/pull/108128) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `toStartOfInterval` y `dateTrunc` devolvieran un valor redondeado en lugar del inicio del intervalo correspondiente cuando la entrada tiene una precisión más fina que la unidad del intervalo; por ejemplo, `toStartOfInterval(toDateTime64('2023-10-09 10:11:12.000999', 6), INTERVAL 1 millisecond)` devolvía `10:11:12.001` en lugar de `10:11:12.000`. La sobrecarga con un origen explícito también se veía afectada. Cierra [#103535](https://github.com/ClickHouse/ClickHouse/issues/103535). [#108186](https://github.com/ClickHouse/ClickHouse/pull/108186) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se oculta la información sensible en la columna `view_query` de `system.query_views_log`. [#108214](https://github.com/ClickHouse/ClickHouse/pull/108214) ([Valerii Mordovskii](https://github.com/Fidelaggio)).
* Se corrigió un bloqueo en una tabla `MergeTree` adjunta con un skip index heredado `hypothesis` (un tipo de índice eliminado que se conserva solo por compatibilidad con `ATTACH`). Antes, una eliminación ligera `DELETE`, `OPTIMIZE`, un `INSERT` simple o un `SELECT` filtrado sobre una tabla de este tipo fallaban con `ILLEGAL_INDEX` ("Index of type 'hypothesis' is no longer supported"), y la mutación `DELETE` se reintentaba indefinidamente. Ahora, el índice obsoleto se trata como inerte: se conserva intacto durante merge/mutation, se omite en insert y en la planificación de consultas, y aún puede eliminarse con `ALTER TABLE ... DROP INDEX`. [#108217](https://github.com/ClickHouse/ClickHouse/pull/108217) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que la configuración `type_json_allow_duplicated_key_with_literal_and_nested_object` no funcionara con rutas tipadas en `JSON`. [#108218](https://github.com/ClickHouse/ClickHouse/pull/108218) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió un `LOGICAL_ERROR` (`Different list of shards in child plans`) al ejecutar una consulta con `make_distributed_plan = 1` sobre una tabla `MergeTree` que tiene una proyección normal/de agregación. [#108256](https://github.com/ClickHouse/ClickHouse/pull/108256) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `replaceRegexpOne` y `replaceRegexpAll` para que `.` coincida con caracteres de nueva línea de forma predeterminada, de manera coherente con otras funciones de expresiones regulares. [#108265](https://github.com/ClickHouse/ClickHouse/pull/108265) ([linjiayu1025-collab](https://github.com/linjiayu1025-collab)).
* Corrige un error lógico al convertir un `Array(Dynamic)` o `Array(Variant)` a `QBit` con `accurateCastOrNull`, p. ej. `accurateCastOrNull(CAST(range(114), 'Array(Dynamic)'), 'QBit(Float32, 114)')`. [#108288](https://github.com/ClickHouse/ClickHouse/pull/108288) ([Groene AI](https://github.com/groeneai)).
* `index_granularity_bytes` ahora se respeta para las columnas de estado de `AggregateFunction`. Anteriormente, el límite de bytes del gránulo se ignoraba para esas columnas (por ejemplo, estados `uniqExact` en tablas `AggregatingMergeTree` y proyecciones de agregación), lo que producía gránulos mucho más grandes que el límite configurado y aumentaba la amplificación de lectura y la memoria en tiempo de consulta. [#108297](https://github.com/ClickHouse/ClickHouse/pull/108297) ([Groene AI](https://github.com/groeneai)).
* Corrige que las condiciones de `UPDATE`/`DELETE` ligeros se evaluaran dos veces, lo que podía provocar un comportamiento incorrecto en condiciones no deterministas y trabajo adicional en las deterministas. Cierra [#86032](https://github.com/ClickHouse/ClickHouse/issues/86032). [#108323](https://github.com/ClickHouse/ClickHouse/pull/108323) ([ofeliacode](https://github.com/ofeliacode)).
* Corrige una excepción en un controlador HTTP predefinido cuando falta en la solicitud un header cuya expresión regular `headers_regexp` permite un valor vacío. [#108324](https://github.com/ClickHouse/ClickHouse/pull/108324) ([Vitaly Baranov](https://github.com/vitlibar)).
* Corrige `arrayPartialSort` con un argumento de límite no constante. [#108327](https://github.com/ClickHouse/ClickHouse/pull/108327) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se corrigió que un `INSERT` cancelado o terminado con `KILL` siguiera ejecutándose durante mucho tiempo mientras construía un skip index (por ejemplo, un índice `set(0)` sin límite en una columna de alta cardinalidad). La construcción del índice ahora se detiene rápidamente cuando se cancela la consulta. [#108351](https://github.com/ClickHouse/ClickHouse/pull/108351) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió que un `SELECT` desde la función de tabla `primes` no respondiera a la cancelación: con un `step` (o `limit`) grande, la consulta podía seguir ejecutándose durante mucho tiempo después de `KILL QUERY` o de un tiempo de espera. Ahora se detiene rápidamente. [#108353](https://github.com/ClickHouse/ClickHouse/pull/108353) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió el análisis de nombres de tipos de datos cuyo nombre contiene la subcadena `INT` (por ejemplo, un nombre similar a una función como `quantileInterpolatedWeighted` usado en una posición de tipo de dato). Esos nombres se confundían con tipos enteros de MySQL y su primer grupo de argumentos `(...)` se consumía silenciosamente como modificador de ancho de visualización, lo que podía romper el round-trip del formato de la consulta. [#108354](https://github.com/ClickHouse/ClickHouse/pull/108354) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una inconsistencia por la que un `ARRAY JOIN` mal formado seguido de una coma y una lista de tablas entre paréntesis se interpretaba incorrectamente como un cross join en lugar de ser rechazado. [#108365](https://github.com/ClickHouse/ClickHouse/pull/108365) ([Raúl Marín](https://github.com/Algunenano)).
* Oculta los argumentos secretos de funciones como `encrypt`, `decrypt` y `HMAC` en la salida de `EXPLAIN actions`, `EXPLAIN header` y `EXPLAIN PIPELINE` cuando `format_display_secrets_in_show_and_select` está deshabilitado (valor predeterminado). [#108386](https://github.com/ClickHouse/ClickHouse/pull/108386) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige `CREATE OR REPLACE` de una vista materializada actualizable con un destino `TO`: se rechazaba incorrectamente porque la tabla de destino ya pertenece a la vista que se está reemplazando. [#108392](https://github.com/ClickHouse/ClickHouse/pull/108392) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se corrigió un fallo del servidor (`Received signal 4`, illegal instruction) que podía desencadenarse por un flujo malformado o desincronizado del protocolo TCP nativo. Ahora se valida que la dirección inicial proporcionada por el cliente sea un `host:port` numérico antes de analizarla, en lugar de permitir que un puerto no numérico llegue a la función de libc `getservbyname`, que provocaba la trampa. [#108410](https://github.com/ClickHouse/ClickHouse/pull/108410) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo del servidor durante el apagado cuando al cerrar una base de datos se produce una excepción (por ejemplo, cuando el `flush` de una tabla agota el tiempo de espera de ZooKeeper). El resto de la secuencia de apagado ya no se omite, por lo que los registros del sistema se vacían y se espera a que finalicen sus hilos antes de que el servidor se cierre. [#108417](https://github.com/ClickHouse/ClickHouse/pull/108417) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que las funciones de expresiones regulares (`match`, `extract`, `extractAll`, `replaceRegexpOne`, `replaceRegexpAll`, etc.) devolvieran silenciosamente resultados incorrectos cuando el patrón contenía un byte NUL (`\0`). Ahora el NUL se trata como un byte literal normal, en consonancia con RE2. [#108427](https://github.com/ClickHouse/ClickHouse/pull/108427) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que `clickhouse-local` devolviera una respuesta vacía a las solicitudes HTTP `OPTIONS` cuando no hay ningún `http_options_response` configurado, lo que hacía que la interfaz web (`/play`) mostrara la conexión como interrumpida aunque las consultas funcionaran. [#108428](https://github.com/ClickHouse/ClickHouse/pull/108428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una excepción `LOGICAL_ERROR` ("Invalid action query tree node ...") cuando una consulta distribuida desduplicaba columnas `ALIAS` duplicadas y estructuralmente idénticas, y además hacía referencia a una table function con un argumento de colección con nombre `key = value` (por ejemplo, `oss(s3_conn, filename = '...')`). [#108435](https://github.com/ClickHouse/ClickHouse/pull/108435) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo del servidor (`LOGICAL_ERROR: 'Unexpected exception in refresh scheduling'`) que podía ocurrir durante el arranque cuando se adjuntaba una vista materializada actualizable coordinada en una base de datos `Replicated` a un Keeper que no admite la marca de funcionalidad `MULTI_READ` (por ejemplo, tras una degradación de Keeper). Ahora la vista se detiene correctamente en lugar de abortar el servidor. [#108441](https://github.com/ClickHouse/ClickHouse/pull/108441) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el error `NOT_FOUND_COLUMN_IN_BLOCK` (p. ej., `Column _part not found`) al seleccionar columnas virtuales de una tabla `MergeTree` con réplicas paralelas, incluso mediante `SELECT *` con `asterisk_include_virtual_columns = 1`. [#108451](https://github.com/ClickHouse/ClickHouse/pull/108451) ([Groene AI](https://github.com/groeneai)).
* `SYSTEM RESET DDL WORKER` ahora requiere el nuevo privilegio `SYSTEM RESET DDL WORKER`. Antes, cualquier usuario autenticado (incluidos los `readonly`) podía ejecutarlo y restablecer repetidamente el estado del worker de DDL, bloqueando el DDL `ON CLUSTER`. [#108460](https://github.com/ClickHouse/ClickHouse/pull/108460) ([Groene AI](https://github.com/groeneai)).
* Se restringió la ruta del modelo de `catboostEvaluate` al directorio `user_files`, igual que la table function `file` y las fuentes de diccionario. Antes, la función aceptaba una ruta arbitraria del sistema de archivos sin ninguna comprobación de contención, lo que permitía comprobar la existencia de archivos fuera de `user_files` y activar lecturas de ellos. Ahora los modelos deben estar ubicados dentro de `user_files`. [#108463](https://github.com/ClickHouse/ClickHouse/pull/108463) ([Groene AI](https://github.com/groeneai)).
* La función `hasColumnInTable` ahora requiere el privilegio `SHOW COLUMNS` sobre la tabla de destino, el mismo permiso que exigen `DESCRIBE` y `SHOW CREATE TABLE`. Antes, cualquier usuario podía llamar a `hasColumnInTable` para comprobar nombres de columnas y verificar la existencia de tablas y bases de datos sin ninguna comprobación de acceso. [#108464](https://github.com/ClickHouse/ClickHouse/pull/108464) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la asignación excesiva de memoria al deserializar estados manipulados de funciones de agregación para `mannWhitneyUTest`, `rankCorr`, `largestTriangleThreeBuckets`, `quantileGK`, `sequenceMatch`/`sequenceCount` y `groupArrayIntersect`. Un estado malformado podía declarar un número enorme de elementos y hacer que el servidor intentara reservar decenas de gigabytes a partir de unos pocos bytes de entrada; ahora esos estados se rechazan con `TOO_LARGE_ARRAY_SIZE`. [#108465](https://github.com/ClickHouse/ClickHouse/pull/108465) ([Groene AI](https://github.com/groeneai)).
* Se valida el destino de redirección de una respuesta `301 Moved Permanently` de S3 frente a `remote_url_allow_hosts` (`RemoteHostFilter`). Anteriormente, el manejo de 301 del SDK de AWS seguía el endpoint proporcionado por el atacante en la respuesta (cabecera `Location` o elemento `<Endpoint>`) sin comprobar el host, por lo que un servidor S3-compatible malicioso o comprometido podía redirigir ClickHouse a un host arbitrario (SSRF). La ruta de redirección 307 ya realizaba esta comprobación; ahora ambas rutas son coherentes. [#108466](https://github.com/ClickHouse/ClickHouse/pull/108466) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una filtración de credenciales por la que los ajustes heredados `storage_aws_access_key_id`, `storage_aws_secret_access_key`, `storage_catalog_credential` y `storage_auth_header` del motor de base de datos `DataLakeCatalog` se mostraban en texto plano en `system.databases.engine_full` y `SHOW CREATE DATABASE`. Ahora se ocultan como `[HIDDEN]`. [#108470](https://github.com/ClickHouse/ClickHouse/pull/108470) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la identificación de usuarios mediante `ssl_certificate` para que un comodín `*` coincida exactamente con un solo componente del nombre (RFC 6125 6.4.3). Anteriormente, un comodín en un sujeto SAN `CN` o `DNS:` (por ejemplo, `*.corp.example.com`) también coincidía con nombres de varias etiquetas como `evil.deep.corp.example.com`, lo que permitía que el titular de un certificado para un subdominio más profundo se autenticara como el usuario comodín. La coincidencia de SAN `URI:` no cambia. [#108472](https://github.com/ClickHouse/ClickHouse/pull/108472) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una inyección SQL en el protocolo MySQL wire protocol: el argumento de `SHOW TABLE STATUS LIKE` y el valor de `SET <mysql_setting>` enviado a través de la MySQL interface (puerto 9004) ahora se analizan y se vuelven a entrecomillar en lugar de concatenarse literalmente en la consulta reescrita. También se corrigió que `KILL QUERY <id>` a través de la MySQL interface ignorara silenciosamente los ID de conexión de varios dígitos. [#108474](https://github.com/ClickHouse/ClickHouse/pull/108474) ([Groene AI](https://github.com/groeneai)).
* Los valores sensibles pasados como parámetros de cadena de consulta HTTP (por ejemplo, el enlace de parámetros de consulta `param_*`, como `param_secret_key`/`param_aws_secret_access_key`, el parámetro `password` o parámetros `signature` al estilo de S3) ya no se escriben literalmente en `system.text_log` ni en spans de OpenTelemetry. La línea de Log `Request URI` ahora oculta los valores de los parámetros cuyos nombres parecen sensibles, sustituyéndolos por `[HIDDEN]`. [#108475](https://github.com/ClickHouse/ClickHouse/pull/108475) ([Groene AI](https://github.com/groeneai)).
* Se aplica la configuración `http_forbid_headers` durante la inferencia de esquema para la table function `url` y el motor de almacenamiento `URL`. Anteriormente, una cabecera prohibida seguía enviándose por la red durante la inferencia del esquema (por ejemplo, con el formato `Regexp` o `DESCRIBE`), y su response body podía reflejarse en un error de análisis, filtrando secretos. Ahora el filtro de cabeceras se comprueba antes de cualquier acceso a la red en la ruta de inferencia, en consonancia con el comportamiento existente de `urlCluster`. [#108476](https://github.com/ClickHouse/ClickHouse/pull/108476) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron resultados incorrectos al usar `SELECT ... SAMPLE ...` junto con la query condition cache (ajuste `use_query_condition_cache`, habilitado de forma predeterminada). [#108488](https://github.com/ClickHouse/ClickHouse/pull/108488) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo del servidor (stack overflow) provocado por expresiones profundamente anidadas como `[[[ ... ]]]` o `array(array( ... ))` cuando `max_parser_depth` se establece en un valor alto. [#108493](https://github.com/ClickHouse/ClickHouse/pull/108493) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió un problema por el que el engine de tabla `RabbitMQ` podía quedar bloqueado indefinidamente en `DROP TABLE` o durante el apagado del servidor cuando el broker cerraba la conexión AMQP debido a heartbeats perdidos sin enviar un TCP RST. Todas las llamadas bloqueantes del bucle de eventos ahora tienen un tiempo de espera de 30 segundos, por lo que el apagado siempre se completa. [#108497](https://github.com/ClickHouse/ClickHouse/pull/108497) ([Aly Ayman](https://github.com/alyelmorsy-dataengineer)).
* Las consultas secundarias ejecutadas como parte de consultas internas ahora se registrarán como consultas internas. [#108506](https://github.com/ClickHouse/ClickHouse/pull/108506) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* El engine de tabla `ArrowFlight` y la función de tabla `arrowFlight` ahora respetan la lista de permitidos de `<remote_url_allow_hosts>`. Antes, no se validaban el host ni el puerto de la conexión, por lo que una consulta podía llegar a hosts no incluidos en la lista de permitidos. [#108507](https://github.com/ClickHouse/ClickHouse/pull/108507) ([Groene AI](https://github.com/groeneai)).
* Los comandos del protocolo MySQL `COM_FIELD_LIST` (`mysql_list_fields`) y `COM_INIT_DB` (`USE database`) ahora aplican el mismo control de acceso que sus equivalentes en SQL (`SHOW COLUMNS`/`DESCRIBE` y `USE`). Antes, podían revelar nombres de columna de tablas sobre las que el usuario solo tenía permisos parciales a nivel de columna, y cambiar la base de datos actual sin el privilegio `SHOW DATABASES`. [#108508](https://github.com/ClickHouse/ClickHouse/pull/108508) ([Groene AI](https://github.com/groeneai)).
* `http_forbid_headers` ahora distingue mayúsculas y minúsculas de forma insensible. Los nombres de los encabezados HTTP no distinguen entre mayúsculas y minúsculas, por lo que prohibir `Authorization` ahora también bloquea `authorization`, `AUTHORIZATION` y otras variantes. Los patrones `header_regexp` configurados ahora también se comparan sin distinguir entre mayúsculas y minúsculas, sin necesidad de indicar explícitamente la marca `(?i)`. [#108509](https://github.com/ClickHouse/ClickHouse/pull/108509) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo del servidor (segmentation fault) que podía producirse cuando una consulta distribuida hacía referencia a un CTE `MATERIALIZED` aún no materializado como tabla externa y el origen remoto se creaba de forma diferida. [#108547](https://github.com/ClickHouse/ClickHouse/pull/108547) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron resultados incorrectos cuando la caché de condiciones de consulta (`use_query_condition_cache = 1`) reutilizaba una exclusión de marcas derivada de un skip index para una consulta que ejecutaba un conjunto distinto de skip indexes, por ejemplo con `use_skip_indexes = 0`, `ignore_data_skipping_indices` o un modo diferente de `use_skip_indexes_for_disjunctions`. Las entradas de caché derivadas de skip indexes ahora se indexan según el conjunto efectivo de skip indexes que se ejecutó. [#108548](https://github.com/ClickHouse/ClickHouse/pull/108548) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron varios errores en `changeYear`, `changeMonth`, `changeDay`, `changeHour`, `changeMinute` y `changeSecond` con argumentos `DateTime64`: la columna de resultado se creaba con la escala predeterminada 3 codificada de forma fija en lugar de la escala del argumento, lo que provocaba un `LOGICAL_ERROR` (`writeSlice expects same column types`) cuando el resultado se pasaba a `arrayPushBack`/`arrayPushFront`/`arrayConcat`; las entradas con precisión de nanosegundos (escala 9) generaban `DECIMAL_OVERFLOW`; y las entradas con fracciones de segundo anteriores al epoch devolvían un segundo de calendario incorrecto. También se corrigió que `timeSlots` sobre `DateTime64` ignorara la escala del argumento opcional `Size` en su tipo de retorno declarado y devolviera timestamps incorrectos para la escala más alta en `Size`. [#108551](https://github.com/ClickHouse/ClickHouse/pull/108551) ([Groene AI](https://github.com/groeneai)). [#108681](https://github.com/ClickHouse/ClickHouse/pull/108681) ([Takumi Hara](https://github.com/takumihara)). [#108994](https://github.com/ClickHouse/ClickHouse/pull/108994) ([Groene AI](https://github.com/groeneai)).
* Corrige el error `NOT_FOUND_COLUMN_IN_BLOCK` cuando se asigna un alias a un predicado compuesto en `GROUP BY` y luego se vuelve a hacer referencia a él, con `enable_identifier_resolve_cache` habilitado (valor predeterminado). [#108553](https://github.com/ClickHouse/ClickHouse/pull/108553) ([Groene AI](https://github.com/groeneai)).
* Corrige un error lógico (`Equal values are not contiguous within the range assumed to be sorted`) al ejecutar `DISTINCT` sobre una lectura `STREAM` (`SELECT DISTINCT ... FROM table STREAM`). Las optimizaciones de lectura en orden ya no se aplican a las lecturas `STREAM`, que producen filas en orden de commit en lugar de en el orden de la clave de ordenación. [#108568](https://github.com/ClickHouse/ClickHouse/pull/108568) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron las proyecciones que devolvían el valor predeterminado del tipo de una columna (por ejemplo, `0`) en lugar de su valor `DEFAULT` declarado (por ejemplo, `-1`) en dos casos: al leer una columna añadida con `ALTER TABLE ... ADD COLUMN ... DEFAULT` después de crear la proyección (las lecturas desde la tabla base ya eran correctas), y después de que expirara el `TTL` de la columna en una wide part. [#108569](https://github.com/ClickHouse/ClickHouse/pull/108569) ([Shaohua Wang](https://github.com/tiandiwonder)). [#109013](https://github.com/ClickHouse/ClickHouse/pull/109013) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió un error `ReadBuffer is canceled. Can't read from it.` que podía producirse al reintentar una carga a S3 (por ejemplo, una copia de seguridad) después de un error transitorio de lectura. [#108573](https://github.com/ClickHouse/ClickHouse/pull/108573) ([Groene AI](https://github.com/groeneai)).
* Corrige que `ATTACH PARTITION ... FROM` rechazara tablas cuyas claves primarias son equivalentes pero están declaradas de forma distinta (una con `PRIMARY KEY` explícita y la otra implícita a partir de `ORDER BY`). [#108590](https://github.com/ClickHouse/ClickHouse/pull/108590) ([Jordi Orihuela](https://github.com/jordiori)).
* Se corrigió el fallo de direct read desde el text index cuando varios text indexes están materializados parcialmente. Corrige [#108530](https://github.com/ClickHouse/ClickHouse/issues/108530). [#108607](https://github.com/ClickHouse/ClickHouse/pull/108607) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige una divulgación de metadata por la que `DESCRIBE loop('db', 'table')` y `DESCRIBE loop(<inner table function>)` omitían la comprobación de acceso a `SHOW COLUMNS` o al origen, lo que permitía a un usuario sin privilegios leer el esquema de columnas de una tabla. [#108624](https://github.com/ClickHouse/ClickHouse/pull/108624) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la columna virtual `_etag` para los table engines `S3Queue` y `AzureQueue`: estaba declarada, pero nunca se poblaba, por lo que `SELECT _etag` siempre devolvía una cadena vacía. Ahora devuelve el ETag del objeto, igual que el engine `S3` y la table function `s3`. [#108625](https://github.com/ClickHouse/ClickHouse/pull/108625) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la lectura de archivos `Arrow`, `ArrowStream` y `ORC` basados en Arrow cuya columna timestamp tiene un desplazamiento UTC numérico fijo (por ejemplo, `+05:30`, `-08:00`, `00:00`) o el marcador no IANA `fixed` como timezone, lo que antes fallaba con `Cannot load time zone ...` (`BAD_ARGUMENTS`). [#108633](https://github.com/ClickHouse/ClickHouse/pull/108633) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una excepción (`LOGICAL_ERROR: Join is supported only for pipelines with one output port` o `NOT_IMPLEMENTED: MergeJoinAlgorithm is not implemented for strictness Semi`) cuando se usaba `join_algorithm = 'full_sorting_merge'` para un join `SEMI`/`ANTI`, incluidos los joins generados al descorrelacionar una subquery correlacionada `EXISTS`. `full_sorting_merge` ahora descarta las combinaciones de strictness/tipo que no puede ejecutar, de modo que el planificador recurre a otro algoritmo habilitado o informa de que el join no puede ejecutarse. [#108658](https://github.com/ClickHouse/ClickHouse/pull/108658) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un desbordamiento de búfer en el montón al construir un text index con `positions = 1` sobre muchos tokens cortos distintos. [#108659](https://github.com/ClickHouse/ClickHouse/pull/108659) ([Groene AI](https://github.com/groeneai)).
* Una consulta que lee de S3 o escribe en S3 y se cancela (p. ej., con `KILL QUERY`) mientras hay una s3 request en curso ahora se informa como cancelada, en lugar de mostrar un error de red/S3 engañoso. En particular, un backup o restore cancelado en S3 ahora informa `BACKUP_CANCELLED`/`RESTORE_CANCELLED` en `system.backups`. [#108673](https://github.com/ClickHouse/ClickHouse/pull/108673) ([Julia Kartseva](https://github.com/jkartseva)).
* Se corrigió un fallo de inicio en el que una database `DataLakeCatalog` creada por una versión anterior (25.12 o anterior) con un `auth_header` malformado no podía adjuntarse después de actualizar a la versión 26.2 o posterior, lo que impedía que el server arrancara. Ahora, `auth_header` se valida solo en `CREATE`, y en `ATTACH` el catalog se construye de forma diferida en el primer uso en lugar de durante el arranque, de modo que una sola database de catálogo mal configurada o inaccesible ya no bloquea el inicio del server. [#108674](https://github.com/ClickHouse/ClickHouse/pull/108674) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un logical error (`Sort order of blocks violated`) durante una fusión, así como lecturas incorrectas, cuando un elemento `LowCardinality` no anulable de una columna `Nullable(Tuple(...))` se usa como subcolumn (por ejemplo, como clave de ordenación). [#108679](https://github.com/ClickHouse/ClickHouse/pull/108679) ([Groene AI](https://github.com/groeneai)).
* Se corrige un posible crash (use-after-free) cuando `SYSTEM FLUSH DISTRIBUTED` se ejecuta de forma concurrente con `DROP TABLE` de la misma tabla `Distributed`. [#108684](https://github.com/ClickHouse/ClickHouse/pull/108684) ([Groene AI](https://github.com/groeneai)).
* Se corrige un crash en la decodificación Base64 de la key de la cuenta de Azure, alcanzable mediante `azureBlobStorage` (y las table functions y storages relacionadas de Azure) cuando la key no es un Base64 válido: un byte `>= 0x80` provocaba una lectura fuera de límites, y cualquier byte no válido provocaba comportamiento undefined. Las keys no válidas ahora se rechazan correctamente. [#108716](https://github.com/ClickHouse/ClickHouse/pull/108716) ([Groene AI](https://github.com/groeneai)).
* Se corrige el error `NUMBER_OF_COLUMNS_DOESNT_MATCH` cuando una subquery sobre una tabla `Distributed` lee dos o más columnas `ALIAS` que se expanden a la misma expression (por ejemplo, `a1 String ALIAS toString(x), a2 String ALIAS toString(x)`) y la subquery alimenta una consulta externa, p. ej. `SELECT count() FROM (SELECT a1, a2 FROM dist GROUP BY a1, a2)`. [#108725](https://github.com/ClickHouse/ClickHouse/pull/108725) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `CREATE OR REPLACE MATERIALIZED VIEW ... POPULATE` dejara la nueva vista materializada sin suscribirse a su source table, lo que descartaba silenciosamente cada fila insertada después del reemplazo. [#108728](https://github.com/ClickHouse/ClickHouse/pull/108728) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una excepción (`Cannot find sharding key column`, y en builds de depuración y con sanitizador un aborto del server) cuando la sharding key de una tabla `Distributed` es una expression que el analyzer pliega como constante, por ejemplo `if(1, toInt32(id), toInt32(id) + 1)`, con `optimize_skip_unused_shards = 1`. [#108737](https://github.com/ClickHouse/ClickHouse/pull/108737) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un logical error (`Bad cast from type DB::ColumnNullable to DB::ColumnString`) y posibles resultados incorrectos al usar `group_by_use_nulls` con una grouping key constante `LowCardinality` en `GROUPING SETS`/`ROLLUP`/`CUBE`. [#108771](https://github.com/ClickHouse/ClickHouse/pull/108771) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que la poda de particiones y de la clave primaria se desactivara silenciosamente cuando una columna clave `LowCardinality(FixedString)` (o `LowCardinality(Nullable(FixedString))`) se envolvía en una función dentro de la clave, por ejemplo `PARTITION BY sipHash64(k) % N` con `WHERE k = 'literal'`. Estas consultas escaneaban todas las particiones en lugar de descartarlas mediante poda. [#108777](https://github.com/ClickHouse/ClickHouse/pull/108777) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error lógico (una terminación del servidor en compilaciones de debug y con sanitizador) cuando un `INSERT ... SELECT` a través de una tabla `Alias`, o en una tabla `TimeSeries`, se cancela sin una excepción, por ejemplo con `timeout_overflow_mode = 'break'`. [#108783](https://github.com/ClickHouse/ClickHouse/pull/108783) ([Groene AI](https://github.com/groeneai)). [#108796](https://github.com/ClickHouse/ClickHouse/pull/108796) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió el error lógico `Bad cast from type DB::ColumnSparse to DB::ColumnString` (una terminación del servidor en compilaciones de debug y con sanitizador) cuando `groupConcat` se aplica a una `Tuple` cuyo elemento `String` se almacena de forma dispersa. [#108790](https://github.com/ClickHouse/ClickHouse/pull/108790) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `TYPE_MISMATCH` en `mapFilter`, `mapSort`, `mapReverseSort`, `mapPartialSort` y `mapConcat` cuando un valor `Map` contiene un `Map` anidado con `LowCardinality`, p. ej., `mapFilter((k, v) -> 1, map('a'::LowCardinality(String), map('x'::LowCardinality(String), 'y')))`. [#108798](https://github.com/ClickHouse/ClickHouse/pull/108798) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `insert_quorum = 'auto'` no rechazara las inserciones de inmediato cuando había menos de la mayoría de las réplicas activas. Ahora esas inserciones fallan inmediatamente con `TOO_FEW_LIVE_REPLICAS` en lugar de escribir una parte local y más tarde agotar el tiempo de espera con `UNKNOWN_STATUS_OF_INSERT`. [#108800](https://github.com/ClickHouse/ClickHouse/pull/108800) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
* Se corrigió un bug por el que la fila `WITH TOTALS` de un `JOIN` podía contener valores predeterminados (como `0`) en lugar de los valores constantes procedentes de una subconsulta constante en uno de los lados del join. El resultado incorrecto aparecía solo con determinados órdenes de join o con la configuración `query_plan_join_swap_table`. [#108807](https://github.com/ClickHouse/ClickHouse/pull/108807) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigió un fallo de segmentación (desreferenciación de puntero nulo) que podía producirse cuando el apagado del servidor coincidía con el apagado de una tabla `S3Queue`/`AzureQueue`. [#108810](https://github.com/ClickHouse/ClickHouse/pull/108810) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrigió una interrupción durante el arranque (`Cannot allocate ThreadStack`, `EINVAL`) en compilaciones con glibc que se ejecutaban en CPU con un tamaño grande de pila de señales (por ejemplo, Intel Sapphire Rapids / Granite Rapids con un kernel compatible con AMX), donde el tamaño de la pila alternativa de señales no se redondeaba a un múltiplo del tamaño de página. [#108813](https://github.com/ClickHouse/ClickHouse/pull/108813) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que las consultas distribuidas fallaran ocasionalmente con `UNEXPECTED_PACKET_FROM_SERVER` (`expected TablesStatusResponse, got ProfileInfo`) cuando se reutilizaba del pool una conexión que una consulta cancelada anterior había dejado desincronizada. [#108854](https://github.com/ClickHouse/ClickHouse/pull/108854) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error lógico (una excepción en builds de release y un aborto del server en builds de debug y con sanitizador) que podía producirse en una llamada a función con más de un argumento `LowCardinality` sobre una tabla distribuida; por ejemplo, `concatAssumeInjective((SELECT toLowCardinality('p')), s)` usada como clave de `GROUP BY` con la table function `remote`. Los mensajes eran `Default functions implementation for LowCardinality is supported only with a single LowCardinality argument` o `Expected the argument ... to have N rows, but it has M`. [#108871](https://github.com/ClickHouse/ClickHouse/pull/108871) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `reinterpret(x, 'Decimal128(scale)')` (y los destinos `Decimal32`/`Decimal64`/`Decimal256`/`DateTime64`), que producía una columna de resultado cuya scale interna era la scale de origen en lugar de la scale de destino solicitada cuando el origen y el destino tenían el mismo tipo físico. Los valores eran correctos, pero el objeto columna era estructuralmente inconsistente con su tipo declarado. [#108878](https://github.com/ClickHouse/ClickHouse/pull/108878) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` (`New empty part is about to materialize but the directory already exist`) que podía abortar el server en builds de debug y con sanitizador cuando una operación `DROP`/`DETACH`/`MOVE`/`REPLACE PARTITION` sobre una tabla `MergeTree` se ejecutaba después de que una operación previa de ese tipo se interrumpiera (por ejemplo, por una transaction revertida o un fallo) y dejara un directory `tmp_empty_<part>` obsoleto. Ahora ese directory obsoleto se recupera en lugar de provocar un fallo. [#108879](https://github.com/ClickHouse/ClickHouse/pull/108879) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que ClickHouse Keeper devolviera un `dataLength = 0` incorrecto en el `Stat` de las respuestas `Create2`, y que el cliente ZooKeeper de ClickHouse no deserializara el `Stat` de las respuestas `Create2`. [#108909](https://github.com/ClickHouse/ClickHouse/pull/108909) ([unintended](https://github.com/unintended)).
* Se corrigió que `clickhouse-local` rechazara un valor de opción vacío escrito junto a `=` (por ejemplo, `--format_csv_null_representation=''`); ahora se comporta igual que `--format_csv_null_representation ""` y `SET format_csv_null_representation = ''`. [#108910](https://github.com/ClickHouse/ClickHouse/pull/108910) ([Vismay](https://github.com/vismaytiwari)).
* Se corrigió un `LOGICAL_ERROR` (`Inconsistent AST formatting`) que abortaba el server en builds de debug y con sanitizador al dar formato a un tipo de dato `Tuple` que mezcla elementos con nombre y sin nombre (por ejemplo, `Tuple(a UInt8, UInt16)`). [#108915](https://github.com/ClickHouse/ClickHouse/pull/108915) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una falla de segmentación al fusionar estados de agregación de `uniqExact` con `GROUPING SETS`, `ROLLUP` o `CUBE` y `max_threads > 1`. [#108928](https://github.com/ClickHouse/ClickHouse/pull/108928) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigieron posibles resultados incorrectos o lecturas fuera de límites cuando se revierte un `INSERT` tras un error a mitad del lote (por ejemplo, en tablas `Buffer`, inserciones asíncronas o los engines `Kafka`/`RabbitMQ`/`FileLog`) mientras está habilitada la replicación diferida de columnas (`enable_lazy_columns_replication`). [#108935](https://github.com/ClickHouse/ClickHouse/pull/108935) ([Groene AI](https://github.com/groeneai)).
* Ahora `join_any_take_last_row` se respeta en todas las rutas compatibles de join basadas en hash, incluidas las joins que usan spilling to disk automático. [#108936](https://github.com/ClickHouse/ClickHouse/pull/108936) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Se corrigió un bug en el analyzer por el que `FINAL` en una tabla de un `JOIN` (p. ej., `FROM t1 FINAL JOIN t2`) también se aplicaba incorrectamente a las demás tablas unidas, lo que podía ralentizar esas consultas. [#108979](https://github.com/ClickHouse/ClickHouse/pull/108979) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige un `LOGICAL_ERROR` ("Cannot find `__grouping_set` column in header of MergingAggregatedTransform with grouping sets", o "Chunk info was not set for chunk in MergingAggregatedTransform") que podía producirse, con el analizador deshabilitado, en un `UNION ALL`/`INTERSECT`/`EXCEPT` donde una rama usa `GROUP BY GROUPING SETS` con réplicas en paralelo y otra rama usa `FINAL`. [#109003](https://github.com/ClickHouse/ClickHouse/pull/109003) ([Groene AI](https://github.com/groeneai)).
* Corrige un `LOGICAL_ERROR` en el planificador automático de réplicas en paralelo que podía producirse cuando `automatic_parallel_replicas_mode` está habilitado junto con `parallel_replicas_min_number_of_rows_per_replica` mayor que 0. [#109011](https://github.com/ClickHouse/ClickHouse/pull/109011) ([Groene AI](https://github.com/groeneai)).
* Corrige una asignación excesiva de memoria durante la inferencia de esquemas del formato `MsgPack`: una entrada corrupta cuyo encabezado de array/map/string/binary declara un número enorme de elementos ya no provoca una única asignación de varios gigabytes y se rechaza como entrada malformada. Esto corrige una condición de falta de memoria en compilaciones de lanzamiento (y un aborto `allocation-size-too-big` con sanitizadores). [#109019](https://github.com/ClickHouse/ClickHouse/pull/109019) ([Groene AI](https://github.com/groeneai)).
* Corrige que `use_client_time_zone` se ignorara para literales de cadena `DateTime`/`DateTime64` interpretados en el servidor (`INSERT` asíncrono, literales `SELECT`). El client ahora propaga su zona horaria local como `session_timezone` cuando `use_client_time_zone` está habilitado, de modo que el análisis del lado del servidor coincida con la ruta de `INSERT` síncrona. [#109051](https://github.com/ClickHouse/ClickHouse/pull/109051) ([Groene AI](https://github.com/groeneai)).
* Corrige el error `NOT_FOUND_COLUMN_IN_BLOCK` cuando `query_plan_optimize_lazy_final` está habilitado junto con un filtro `WHERE` transferido parcialmente a `PREWHERE` (mediante `optimize_move_to_prewhere_if_final`). [#109073](https://github.com/ClickHouse/ClickHouse/pull/109073) ([Groene AI](https://github.com/groeneai)).
* Corrige un error al usar un asterisco calificado como `b.*` en una consulta donde `b` es un alias de tabla (o subconsulta/CTE) que comparte nombre con una columna no compuesta de otra tabla. Estas consultas ya no fallan y seleccionan correctamente todas las columnas de `b`. [#109078](https://github.com/ClickHouse/ClickHouse/pull/109078) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige un error lógico `Block structure mismatch in JoinStep` (un aborto del servidor en compilaciones de depuración y con sanitizadores) cuando una subconsulta correlacionada se decorrelaciona en un join y la relación de origen lleva el mismo nombre de columna más de una vez, por ejemplo `WITH t AS (SELECT number, * FROM numbers(3)) SELECT *, (SELECT t.number WHERE t.number >= 0) FROM t` con `correlated_subqueries_default_join_kind = 'right'`. [#109114](https://github.com/ClickHouse/ClickHouse/pull/109114) ([Groene AI](https://github.com/groeneai)).
* Corrige un bloqueo por el que una consulta que leía a través de la filesystem cache podía seguir esperando una descarga en curso después de cancelarse con `KILL QUERY`, y por el que eliminar o aplicar `SYSTEM STOP VIEW` a una vista materializada actualizable cuya actualización se hubiera quedado atascada en esa espera podía bloquearse. [#109116](https://github.com/ClickHouse/ClickHouse/pull/109116) ([Murphy](https://github.com/murphy-4o)).
* Corrige que la configuración `parallel_view_processing` se ignorara al insertar en una tabla con vistas materializadas: desde la versión 25.10, las vistas siempre se ejecutaban en paralelo independientemente de esta configuración. [#109170](https://github.com/ClickHouse/ClickHouse/pull/109170) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige una inconsistencia del analizador por la que una lista de columnas de `INSERT` aceptaba un selector de columnas calificado escrito como `t.* LIKE '<pattern>'` / `t.* ILIKE '<pattern>'`, pero rechazaba su forma canónica `t.COLUMNS('<regexp>')`, rompiendo el recorrido de ida y vuelta del formato de consulta (y provocando el aborto del servidor en compilaciones de depuración y con sanitizadores). [#109176](https://github.com/ClickHouse/ClickHouse/pull/109176) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron los incrementos no monotónicos de `ProfileEvents`: los contadores `NetworkReceiveBytes` y `AIOWriteBytes` podían incrementarse en una cantidad negativa (desbordándose hasta un valor enorme) en caso de timeout de socket o fallo de AIO, y `MemoryOvercommitWaitTimeMicroseconds` se medía con un reloj no monotónico. [#109180](https://github.com/ClickHouse/ClickHouse/pull/109180) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigió la inferencia de esquema para los formatos `Arrow`, `ArrowStream`, `Avro` y los lectores heredados de `ORC` y `Parquet`, que devolvían `Nullable(Tuple)` para columnas struct anulables cuando el tipo `Nullable(Tuple)` no está permitido (`allow_experimental_nullable_tuple_type` está deshabilitado). `DESCRIBE` devolvía un tipo que `CREATE TABLE` rechaza, por lo que al crear una tabla o insertar datos usando el esquema inferido se producía el error `Nullable Tuple type is not allowed`. [#109185](https://github.com/ClickHouse/ClickHouse/pull/109185) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigió un resultado incorrecto de `EXISTS` correlacionado y de subconsultas escalares cuando la correlación aparece solo en la proyección de la subconsulta junto con una cláusula `WHERE` no correlacionada (la subconsulta podía evaluarse como false / `NULL` para cada fila). Corrige [#105760](https://github.com/ClickHouse/ClickHouse/issues/105760). [#109186](https://github.com/ClickHouse/ClickHouse/pull/109186) ([Dmitry Novik](https://github.com/novikd)).
* Se corrigió que `CREATE USER ... HOST LIKE 'a', 'b'` (y el `ALTER USER` equivalente) conservara silenciosamente solo el primer patrón. Ahora todos los patrones `HOST LIKE` especificados se almacenan en la lista de hosts permitidos del usuario. [#109187](https://github.com/ClickHouse/ClickHouse/pull/109187) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que un índice de texto definido sobre `mapValues(map)` o `mapKeys(map)` no se utilizara silenciosamente cuando se consultaba una tabla a través de una tabla con motor `Distributed` usando el analizador. El índice se usaba para la tabla local y mediante las table functions `cluster`/`remote`, pero una consulta a través de una tabla con motor `Distributed` lo omitía (y fallaba con `INDEX_NOT_USED` bajo `force_data_skipping_indices`). [#109188](https://github.com/ClickHouse/ClickHouse/pull/109188) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` falso (`There was an error on <host>: Cannot obtain error message (probably it's a bug)`) que podía abortar el servidor en compilaciones de depuración y con sanitizador al ejecutar una consulta DDL sobre una base de datos `Replicated` cuando su nodo de estado `finished` por host en Keeper ya se había limpiado. [#109192](https://github.com/ClickHouse/ClickHouse/pull/109192) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que las proporciones de `SAMPLE` con un exponente cuya magnitud desborda `Int32` (por ejemplo, `SAMPLE 1e-3000000000`) se trataran silenciosamente como `SAMPLE 1`. [#109197](https://github.com/ClickHouse/ClickHouse/pull/109197) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió la comprobación de acceso para `SYSTEM PREWARM PRIMARY INDEX CACHE ... ON CLUSTER`, que incorrectamente requería el privilegio `SYSTEM PREWARM MARK CACHE` en lugar de `SYSTEM PREWARM PRIMARY INDEX CACHE`. [#109198](https://github.com/ClickHouse/ClickHouse/pull/109198) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió que las consultas `ALTER` fallaran para tablas `MergeTree` creadas con una configuración personalizada de `disk` (`SETTINGS disk = disk(...)`). Corrige [#63019](https://github.com/ClickHouse/ClickHouse/issues/63019). [#109199](https://github.com/ClickHouse/ClickHouse/pull/109199) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se corrigió un fallo del servidor al combinar estados de las funciones de agregación `cramersV`, `cramersVBiasCorrected`, `contingency` o `theilsU` procedentes de un contexto de ventana (`OVER ()`) y de una agregación simple mediante operaciones de conjuntos encadenadas (`EXCEPT`, `INTERSECT`) o `UNION ALL` anidados, y leerlos después, por ejemplo, mediante el combinador `-Merge`. [#109200](https://github.com/ClickHouse/ClickHouse/pull/109200) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un resultado incorrecto en `ANY JOIN` con una condición `ON` constante (p. ej., `t1 ANY INNER JOIN t2 ON 1`): la consulta devolvía el producto cartesiano completo en lugar del resultado de `ANY JOIN`. [#109207](https://github.com/ClickHouse/ClickHouse/pull/109207) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigió un fallo del servidor en inserciones asíncronas con deduplicación cuando `optimize_on_insert` deja vacío el bloque insertado (por ejemplo, filas cuya suma es cero en `SummingMergeTree`). [#109229](https://github.com/ClickHouse/ClickHouse/pull/109229) ([Den Kalantaevskii](https://github.com/Diskein)).
* Se corrigió `SYSTEM DROP REPLICA` y `SYSTEM DROP DATABASE REPLICA ... FROM ZKPATH` para que rechacen rutas de ZooKeeper vacías o que solo contengan la raíz en tiempo de análisis con `BAD_ARGUMENTS`, enruten las rutas auxiliares de Keeper al Keeper especificado y normalicen las rutas de Keeper para que las comprobaciones locales de autoprotección no apunten a la réplica equivocada ni eludan la réplica prevista. [#109230](https://github.com/ClickHouse/ClickHouse/pull/109230) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la prioridad de la configuración de S3 para que un bloque de endpoint `<s3>` con ámbito de URL tenga prioridad sobre los valores predeterminados de `<s3>` de nivel superior. [#109251](https://github.com/ClickHouse/ClickHouse/pull/109251) ([Bharat Nallan](https://github.com/bharatnc)).
* Se corrigió un error por el que los valores `DEFAULT` de una columna no se aplicaban en `INSERT INTO TABLE FUNCTION` (por ejemplo, `remote` o `file`) con datos `VALUES` inline cuando el servidor analiza por sí mismo esos datos inline (`send_table_structure_on_insert_with_inline_data = 0`). Un `NULL` explícito insertado en una columna no `Nullable` con `DEFAULT` pasaba a ser `0` en lugar del valor predeterminado declarado. Ahora se comporta igual que un `INSERT` en una tabla normal y que el protocolo HTTP. [#109258](https://github.com/ClickHouse/ClickHouse/pull/109258) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el fallo de `CREATE TABLE ... AS SELECT` desde `s3Cluster` (y otras cluster table functions como `fileCluster`/`urlCluster`) con error `NOT_FOUND_COLUMN_IN_BLOCK` dentro de una base de datos `Replicated`. [#109266](https://github.com/ClickHouse/ClickHouse/pull/109266) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `SHOW TABLES` y `SELECT ... FROM system.tables` devolvieran resultados distintos en bases de datos de Data Lake Catalog: las tablas que ClickHouse no puede leer ahora se ocultan de forma coherente en ambos casos. [#109273](https://github.com/ClickHouse/ClickHouse/pull/109273) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Se corrigió un error por el que, al fusionar una tabla `MergeTree` con proyecciones mientras está habilitada la configuración `enable_block_number_column` o `enable_block_offset_column`, se generaban projection parts que contenían una columna `_block_number`/`_block_offset` espuria. La projection part fusionada dejaba entonces de coincidir con la definición de la proyección y con las projection parts generadas por insert, por lo que `CHECK TABLE` y `OPTIMIZE ... DRY RUN` la marcaban como corrupta (`CORRUPTED_DATA`). [#109284](https://github.com/ClickHouse/ClickHouse/pull/109284) ([Groene AI](https://github.com/groeneai)).
* Ahora se permite leer un `array` de Avro de registros `{key, value}` de dos campos en una columna `Map` de ClickHouse. Esta es la codificación que Iceberg y Spark generan para un `MAP<K, V>` con una clave que no es de tipo string (los maps nativos de Avro solo admiten claves string). Antes, ese archivo podía leerse como `Array(Tuple(key, value))`, pero no como `Map(K, V)`, y fallaba con `Type Map(...) is not compatible with Avro array`. [#109289](https://github.com/ClickHouse/ClickHouse/pull/109289) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo del servidor en `CREATE HYPOTHETICAL INDEX ... TYPE set` (y `ngrambf_v1`/`tokenbf_v1`) cuando se omite el argumento de índice requerido. Estas sentencias ahora se rechazan con un error claro. [#109294](https://github.com/ClickHouse/ClickHouse/pull/109294) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` (`Current component is empty`) que podían provocar operaciones de mutation como `KILL MUTATION` en una tabla `MergeTree` que almacena sus metadatos en Keeper, cuando la configuración del servidor `enforce_keeper_component_tracking` está habilitada. [#109297](https://github.com/ClickHouse/ClickHouse/pull/109297) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la lectura de timestamps `ORC` posteriores aproximadamente al año 2262 en una columna `DateTime64` con una scale inferior a 9. El lector nativo de `ORC` solía convertir cada timestamp mediante un valor intermedio fijo `DateTime64(9)`, lo que provoca un overflow de `Int64` a escala de nanosegundos y rechazaba esos valores con `VALUE_IS_OUT_OF_RANGE_OF_DATA_TYPE`, incluso cuando la scale `DateTime64` solicitada (por ejemplo, `DateTime64(6)`, como produce Iceberg) puede representar el valor. Ahora los timestamps se leen directamente con la scale solicitada, y `date_time_overflow_behavior` se respeta incluso cuando ni siquiera la scale de destino puede contener el valor. [#109302](https://github.com/ClickHouse/ClickHouse/pull/109302) ([Groene AI](https://github.com/groeneai)).
* `clickhouse-local`, al actuar como servidor (después de `SYSTEM START LISTEN HTTP`), ahora sirve conexiones HTTP usando el formato de salida predeterminado `TabSeparated`, igual que `clickhouse-server`, en lugar del predeterminado interactivo `PrettyCompact`. Esto corrige la conexión a `clickhouse-local` mediante HTTP con drivers como `clickhouse-connect`. La sesión interactiva de terminal sigue mostrando los resultados como `PrettyCompact`. [#109362](https://github.com/ClickHouse/ClickHouse/pull/109362) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un fallo transitorio `Code: 499 ... InvalidPart` (`S3_ERROR`) en cargas multiparte de S3. MinIO puede informar brevemente de que una part recién subida no está presente en `CompleteMultipartUpload`; ahora este error se reintenta igual que el `NoSuchKey` ya manejado, dentro del límite de `s3_max_unexpected_write_error_retries`. [#109364](https://github.com/ClickHouse/ClickHouse/pull/109364) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el error `UNKNOWN_IDENTIFIER` en `ALTER TABLE ... DROP COLUMN` cuando otra columna tiene una expresión `DEFAULT` o `MATERIALIZED` que define y hace referencia a un alias en línea. [#109374](https://github.com/ClickHouse/ClickHouse/pull/109374) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una carrera de dato (y el consiguiente fallo poco frecuente) en la merge paralela de estados de agregación `uniqExact` con sets de dos niveles, que podía ocurrir con `GROUPING SETS`, `ROLLUP` y `CUBE`. [#109389](https://github.com/ClickHouse/ClickHouse/pull/109389) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error (`NOT_FOUND_COLUMN_IN_BLOCK`, o `std::bad_function_call` en versiones anteriores) al ejecutar `CREATE TABLE ... ON CLUSTER ... AS SELECT` leyendo una tabla `Distributed` en un cluster con dos o más shards. [#109407](https://github.com/ClickHouse/ClickHouse/pull/109407) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron las merges para tablas con `TTL ... GROUP BY` (rollup): las parts que ya estaban completamente agregadas podían volver a programarse para fusionarse una y otra vez indefinidamente, y las tablas con columnas `MATERIALIZED` o con columnas virtuales persistentes habilitadas se manejaban incorrectamente; ahora esas columnas se agregan con `any`. Cierra [#105647](https://github.com/ClickHouse/ClickHouse/issues/105647). [#109410](https://github.com/ClickHouse/ClickHouse/pull/109410) ([Mikhail Artemenko](https://github.com/Michicosun)). [#109532](https://github.com/ClickHouse/ClickHouse/pull/109532) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se corrigió el caso de `IN` con una array column simple en el argumento derecho, que devolvía silenciosamente un resultado incorrecto (siempre falso) o lanzaba una excepción, de modo que `x IN arr` ahora se comporta como `has(arr, x)`. [#109416](https://github.com/ClickHouse/ClickHouse/pull/109416) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron errores `UNKNOWN_IDENTIFIER` en operaciones `ALTER TABLE` (`RENAME`/`ADD`/`MODIFY COLUMN` y `MATERIALIZE INDEX` en una tabla con partes recién insertadas) en tablas `MergeTree` con un índice min-max implícito sobre las columnas virtuales persistentes `_block_number`/`_block_offset` (habilitado por `add_minmax_index_for_block_number_column`/`add_minmax_index_for_block_offset_column`). [#109428](https://github.com/ClickHouse/ClickHouse/pull/109428) ([Groene AI](https://github.com/groeneai)). [#110236](https://github.com/ClickHouse/ClickHouse/pull/110236) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` en `arrayFold` sobre un argumento `Array(LowCardinality(T))` no constante (por ejemplo, `arrayFold((acc, x) -> acc + x, materialize([1, 2, 3]::Array(LowCardinality(Int64))), toInt64(0))`), que fallaba con `Arguments of 'plus' have incorrect data types` (provocando un aborto del server en compilaciones de depuración y con sanitizadores). [#109462](https://github.com/ClickHouse/ClickHouse/pull/109462) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `CHECK TABLE` en una tabla `ReplicatedMergeTree`, que informaba una parte en buen estado como dañada cuando se producía un error transitorio y reintentable de ZooKeeper (por ejemplo, pérdida de conexión) durante la comprobación; ahora esos errores aparecen como un error de consulta reintentable. [#109465](https://github.com/ClickHouse/ClickHouse/pull/109465) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron fallos de segmentación en `groupArrayLastMerge` y en la función de agregación `largestTriangleThreeBuckets`: ahora se valida la deserialización de estados de funciones de agregación, para que un estado dañado no provoque un acceso a memoria fuera de los límites. [#109485](https://github.com/ClickHouse/ClickHouse/pull/109485) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)). [#109492](https://github.com/ClickHouse/ClickHouse/pull/109492) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrigió que no se aplicara el límite global `max_rows_in_join` / `max_bytes_in_join` al join algorithm `parallel_hash`, donde una consulta con `join_overflow_mode = 'throw'` podía completarse silenciosamente en lugar de generar `SET_SIZE_LIMIT_EXCEEDED`. [#109488](https://github.com/ClickHouse/ClickHouse/pull/109488) ([Hechem Selmi](https://github.com/m-selmi)).
* Se corrigió la lectura de tablas Paimon particionadas por una columna `BIGINT` cuyo valor no cabe en `Int32`. Esos valores de partición se truncaban (por ejemplo, `9223372036854775807` pasaba a `-1`), lo que producía una ruta de partición incorrecta y provocaba un error del sistema de archivos. [#109510](https://github.com/ClickHouse/ClickHouse/pull/109510) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un crash al leer tablas Iceberg con archivos de eliminación por igualdad. Si una columna era Nullable en el archivo de eliminación por igualdad pero no anulable en el esquema de la tabla (o viceversa), los valores leídos del archivo de eliminación se insertaban en una columna de otro tipo mediante un cast no verificado (una confusión de tipos de columna), lo que corrompía la columna y hacía fallar el server. [#109551](https://github.com/ClickHouse/ClickHouse/pull/109551) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrigió que `connect_timeout` y los timeouts de lectura y escritura de MySQL no surtieran efecto: un intento de conexión a un MySQL server que no respondía podía quedarse bloqueado durante más de dos minutos incluso con `connect_timeout = 1`, porque las señales periódicas del sampling query profiler seguían restableciendo el plazo interno de sondeo del cliente MySQL. [#109592](https://github.com/ClickHouse/ClickHouse/pull/109592) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió un `LOGICAL_ERROR` (`creation_csn is not set while removal_csn is set to 1`) que podía producirse cuando un `TRUNCATE` no transaccional se ejecutaba de forma concurrente con una transacción no confirmada que había insertado en la misma tabla. Ese `TRUNCATE` ya no elimina partes creadas por transacciones que aún no se han confirmado. [#109598](https://github.com/ClickHouse/ClickHouse/pull/109598) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Se corrigieron errores `TYPE_MISMATCH` al leer columnas `struct` de `Parquet` cuya nulabilidad física difiere del tipo de ClickHouse solicitado: ahora un grupo `Parquet` no nullable puede leerse como `Nullable(Tuple(...))`, y el lector nativo de `Parquet` puede leer un struct físicamente nullable (un grupo `OPTIONAL` de `Parquet`) como `Nullable(Tuple(...))`. [#109615](https://github.com/ClickHouse/ClickHouse/pull/109615) ([Groene AI](https://github.com/groeneai)). [#109898](https://github.com/ClickHouse/ClickHouse/pull/109898) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una pérdida silenciosa de datos cuando un `INSERT ... VALUES` en un flujo de múltiples consultas va seguido de un comentario SQL al final (por ejemplo, `VALUES (1) -- comment`) en la ruta de análisis del insert inline en el servidor (`send_table_structure_on_insert_with_inline_data = 0`). El comentario final se analizaba como datos de fila más allá del `;` de terminación, lo que hacía que las consultas siguientes del flujo se omitieran silenciosamente. [#109643](https://github.com/ClickHouse/ClickHouse/pull/109643) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un segfault cuando una consulta llega en una ventana estrecha durante el apagado del servidor tras un error en el arranque. [#109675](https://github.com/ClickHouse/ClickHouse/pull/109675) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrigieron índices de omisión obsoletos (`text`, `bloom_filter`, etc.) y proyecciones tras materializar actualizaciones ligeras con `ALTER TABLE ... APPLY PATCHES`. Antes, los archivos de índice y proyección que dependen de una columna actualizada mediante patch quedaban sin cambios, por lo que las consultas que los usaban podían devolver resultados incorrectos (por ejemplo, `hasToken` omitiendo una fila actualizada, o una proyección devolviendo agregados obsoletos una vez eliminada la patch part ya consumida). [#109709](https://github.com/ClickHouse/ClickHouse/pull/109709) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `system.tables` omitiera silenciosamente bases de datos para usuarios con permisos por base de datos cuando la consulta leía solo las columnas `name`/`database`. Introducido en 26.2. [#109723](https://github.com/ClickHouse/ClickHouse/pull/109723) ([Samay Sharma](https://github.com/samay-sharma)).
* Se corrigió un `LOGICAL_ERROR` al escribir una columna `LowCardinality(Time)` en el formato `Arrow` con `output_format_arrow_low_cardinality_as_dictionary = 1`. [#109730](https://github.com/ClickHouse/ClickHouse/pull/109730) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `ObjectStorageQueue`/`AzureQueue` (y la función de tabla `azureBlobStorage`) omitieran silenciosamente objetos cuando el almacenamiento de objetos devuelve una página de listado vacía junto con un token de continuación. Azure Blob Storage hace esto (por ejemplo, cuando un listado cruza un límite interno de partición), y el iterador asíncrono de listados trataba la página vacía como el final del listado y descartaba el token. Ahora sigue el token de continuación. [#109761](https://github.com/ClickHouse/ClickHouse/pull/109761) ([Gal Ben Moshe](https://github.com/GalBenMoshe)).
* Se corrigió que la poda de particiones no devolviera ninguna fila para tablas Iceberg particionadas por una columna de marca temporal (`DateTime64`). [#109764](https://github.com/ClickHouse/ClickHouse/pull/109764) ([Den Kalantaevskii](https://github.com/Diskein)).
* Se corrigió una excepción `ILLEGAL_COLUMN` en la función `conv` para argumentos `FixedString`; ahora se convierten correctamente a `String`. Cierra [#109670](https://github.com/ClickHouse/ClickHouse/issues/109670). [#109771](https://github.com/ClickHouse/ClickHouse/pull/109771) ([hp](https://github.com/hp77-creator)).
* La función `getClientHTTPHeader` ahora trata los nombres de los encabezados sin distinguir entre mayúsculas y minúsculas, de acuerdo con [RFC 9110](https://www.rfc-editor.org/info/rfc9110/#section-5.1); en particular, el encabezado `authorization` ahora se filtra independientemente de cómo se escriba. Cierra [#103957](https://github.com/ClickHouse/ClickHouse/issues/103957). [#109791](https://github.com/ClickHouse/ClickHouse/pull/109791) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Se corrige un problema por el que `max_execution_time` (con `timeout_overflow_mode = 'throw'`) a veces no cancelaba nunca una consulta: cuando el supervisor interno de timeout ya estaba esperando una consulta con una deadline posterior, una consulta con una deadline anterior registrada después podía pasar completamente desapercibida, lo que le permitía seguir ejecutándose mucho más allá de su límite de tiempo. [#109792](https://github.com/ClickHouse/ClickHouse/pull/109792) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió el nombre de archivo de los archivos de metadatos de Iceberg comprimidos con gzip. ClickHouse los escribía como `v{N}.gzip.metadata.json` (el token HTTP `Content-Encoding`), mientras que la especificación de Iceberg espera la extensión `gz`, es decir, `v{N}.gz.metadata.json`. Como resultado, Spark y otros lectores de catálogos de Hadoop no podían encontrar los metadatos escritos por ClickHouse. ClickHouse ahora escribe `v{N}.gz.metadata.json` y sigue leyendo el nombre heredado `gzip` por compatibilidad con versiones anteriores. [#109812](https://github.com/ClickHouse/ClickHouse/pull/109812) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el error `NOT_IMPLEMENTED` ("Method getDataAt is not supported for Nullable(String)") que podía producirse en un join con `enable_join_runtime_filters = 1` (activado por defecto desde la versión 26.2) cuando la clave de join del lado de construcción era `LowCardinality(Nullable(...))` con valores `NULL` y el runtime filter recurría a su bloom filter. [#109824](https://github.com/ClickHouse/ClickHouse/pull/109824) ([Groene AI](https://github.com/groeneai)).
* Los engine de base de datos externos (por ejemplo, `PostgreSQL`) ya no aplican pushdown de comparaciones de rango (`>=`, `>`, `<=`, `<`) sobre columnas `UUID`. ClickHouse y las bases de datos externas ordenan los UUID de forma distinta, por lo que aplicar este pushdown descartaba filas del resultado de forma silenciosa; ahora ClickHouse evalúa esos predicados en su lugar. [#109833](https://github.com/ClickHouse/ClickHouse/pull/109833) ([Vismay](https://github.com/vismaytiwari)).
* Se corrigió un fallo del servidor cuando se pasaba una expresión lambda donde una higher-order function espera un valor concreto (por ejemplo, el acumulador de `arrayFold`, como en `arrayFold(lambda, arr, another_lambda)`). Estas consultas ahora se rechazan con `ILLEGAL_TYPE_OF_ARGUMENT` en lugar de provocar un fallo cuando `enable_analyzer = 0`. [#109840](https://github.com/ClickHouse/ClickHouse/pull/109840) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que la table function `icebergLocal` y el engine `IcebergLocal` declararan `azure` en lugar de `local` como su tipo de object storage, lo que hacía que no superaran la comprobación del tipo de disco (`Disk type doesn't match`) cuando se usaban con un disco local mediante `SETTINGS disk = '...'`. [#109872](https://github.com/ClickHouse/ClickHouse/pull/109872) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Se corrige la lectura de tablas Iceberg particionadas por la misma columna de origen más de una vez (por ejemplo, `PARTITIONED BY (hours(ts), ts)`). Anteriormente, estas tablas fallaban con `Cannot add column ...: column with this name already exists (ILLEGAL_COLUMN)`. [#109895](https://github.com/ClickHouse/ClickHouse/pull/109895) ([Groene AI](https://github.com/groeneai)).
* Se corrigen resultados de consulta incorrectos causados por que el índice de clave primaria descartaba incorrectamente gránulos en tablas con una columna clave invertida (`DESC`) cuando las partes no tienen marca final (granularidad no adaptativa, `index_granularity_bytes = 0`). [#109901](https://github.com/ClickHouse/ClickHouse/pull/109901) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigió un caso en el que `generateRandomStructure` producía ocasionalmente una cadena de estructura no válida con dos tipos de datos concatenados (por ejemplo, `Decimal32(7)IPv4`) cuando el anidamiento de tipos superaba el límite interno de profundidad, lo que hacía que el resultado no se pudiera interpretar. [#109928](https://github.com/ClickHouse/ClickHouse/pull/109928) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el error `NOT_IMPLEMENTED` (`Method getDataAt is not supported for Nullable(String) in case if value is NULL`) al construir un índice `text` sobre `Array(LowCardinality(Nullable(String)))` (incluidos los campos `Nested` almacenados de esa forma) cuando un array indexado contiene un elemento `NULL`. Ahora, los elementos `NULL` del array se omiten durante la construcción del índice, en consonancia con `Array(Nullable(String))`. [#110055](https://github.com/ClickHouse/ClickHouse/pull/110055) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron resultados incorrectos al construir un skip index `minmax` sobre una columna `LowCardinality(Nullable(...))`: antes, los predicados `WHERE`/`PREWHERE`/`HAVING ... IS NULL` enviados al almacenamiento descartaban todos los gránulos y devolvían 0 filas aunque la columna contenía valores `NULL`. [#110061](https://github.com/ClickHouse/ClickHouse/pull/110061) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `distinct_overflow_mode = 'break'`: `DISTINCT` ahora devuelve el resultado parcial acumulado hasta el límite y deja de leer el origen, tal como se documenta. Antes, el fragmento que superaba `max_rows_in_distinct` / `max_bytes_in_distinct` se descartaba (produciendo resultados truncados o vacíos) y la consulta seguía leyendo e insertando en el conjunto hash hasta el final de la entrada, lo que podía acabar en `MEMORY_LIMIT_EXCEEDED`. [#110075](https://github.com/ClickHouse/ClickHouse/pull/110075) ([Sergey Kuznetsov](https://github.com/skuznetsov-clickhouse)).
* Se corrigió un error lógico `ChunkInfoRowNumbers does not exist` en `OPTIMIZE TABLE` de una tabla Iceberg que contenía un archivo de datos en un formato distinto de `Parquet` (por ejemplo, `ORC`) más reciente que todos los archivos de borrado por posición. [#110107](https://github.com/ClickHouse/ClickHouse/pull/110107) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron `max_bytes_in_distinct` y `max_bytes_in_set`: las claves de cadena se almacenan en un arena que no se contabilizaba en las comprobaciones de límites, por lo que `DISTINCT` / `IN` sobre claves de cadena podían retener más memoria que el límite de bytes por el tamaño completo del payload de la clave (sin límite en la longitud de la clave). Ahora los límites tienen en cuenta el arena, en consonancia con la documentación; las consultas con claves de cadena cercanas a un límite de bytes pueden alcanzarlo antes (correctamente). [#110120](https://github.com/ClickHouse/ClickHouse/pull/110120) ([Sergey Kuznetsov](https://github.com/skuznetsov-clickhouse)).
* Se corrigió un `LOGICAL_ERROR` (`Bad cast from type ColumnLowCardinality to ColumnString`) cuando `identity` (o el resultado de una subconsulta escalar) envuelve un valor que contiene un `LowCardinality` anidado y la consulta usa `WITH TOTALS`/`WITH ROLLUP`. [#110138](https://github.com/ClickHouse/ClickHouse/pull/110138) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la lectura de archivos `Npy` con dimensiones internas de tamaño cero: ahora coinciden el número de filas materializadas y los resultados de `count` optimizados y no optimizados. [#110146](https://github.com/ClickHouse/ClickHouse/pull/110146) ([Yanjun Qiu](https://github.com/qiuyanjun888)).
* Se corrigió un aumento de tiempo cuadrático (y la falta de respuesta a `max_execution_time`) en aggregation in order al agrupar por varias claves cuyo orden de clasificación es solo un prefijo de la clave de agrupación. [#110159](https://github.com/ClickHouse/ClickHouse/pull/110159) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error lógico (`Unexpected number of columns in result sample block`) cuando un filtro que contiene una subconsulta correlacionada (por ejemplo, `exists((SELECT ...))`) se optimiza con `convert_query_to_cnf` o `optimize_and_compare_chain`. [#110187](https://github.com/ClickHouse/ClickHouse/pull/110187) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una excepción (`UNION mode UNION_DEFAULT must be normalized`) cuando una mutación `DELETE` o `ALTER UPDATE` usaba una operación de conjuntos (`UNION`/`UNION ALL`/`UNION DISTINCT`/`EXCEPT`/`INTERSECT`) dentro de una subconsulta en la condición `WHERE` o en una asignación de `UPDATE`. [#110196](https://github.com/ClickHouse/ClickHouse/pull/110196) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un logical error `ReadBuffer is canceled. Can't read from it.` (aborto del servidor en builds de depuración/sanitizador) que podía producirse al leer un archivo zip (por ejemplo, durante `RESTORE` desde una copia de seguridad en zip) después de que una lectura previa del mismo archivo fallara a mitad del flujo. [#110197](https://github.com/ClickHouse/ClickHouse/pull/110197) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron el apagado lento del servidor y la falta de respuesta de `KILL MUTATION` cuando una mutación con `x IN (subquery)` estaba construyendo el conjunto de la subconsulta durante el análisis de la clave primaria; ahora la construcción del conjunto se cancela de inmediato. [#110198](https://github.com/ClickHouse/ClickHouse/pull/110198) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Keeper ahora rechaza que los ajustes de coordination `max_requests_batch_size` y `max_requests_append_size` se establezcan en `0`, en lugar de quedarse atascado en un bucle infinito de append-entries en una configuración multinodo. [#110200](https://github.com/ClickHouse/ClickHouse/pull/110200) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error `NOT_FOUND_COLUMN_IN_BLOCK` al usar `GROUP BY ALL` sobre una expresión de tupla junto con `ORDER BY`. [#110206](https://github.com/ClickHouse/ClickHouse/pull/110206) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error `NOT_FOUND_COLUMN_IN_BLOCK` en `INSERT` sobre una tabla que tiene una restricción `CHECK` que hace referencia a una subcolumna (como `x.null` de una columna `Nullable` o `arr.size0` de un `Array`). [#110208](https://github.com/ClickHouse/ClickHouse/pull/110208) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la lectura de tablas Iceberg cuyo orden de clasificación predeterminado hace referencia a una columna que requiere comillas (por ejemplo, `@timestamp`). Esas tablas no se podían leer porque el `ORDER BY` de almacenamiento sintetizado se construía a partir del nombre de la columna sin comillas y fallaba al analizarse con `SYNTAX_ERROR`. [#110233](https://github.com/ClickHouse/ClickHouse/pull/110233) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `system.tables` para una base de datos `DataLakeCatalog` (Iceberg/Glue) abortara toda la consulta o descartara tablas silenciosamente cuando no se podían resolver los metadatos de una sola tabla. Esa tabla ahora sigue apareciendo por nombre con valores predeterminados/NULL para las columnas que necesitan el objeto de almacenamiento abierto (`engine`, `total_rows`, etc.), independientemente de `database_datalake_require_metadata_access`. El acceso directo a la tabla dañada sigue informando el error. [#110242](https://github.com/ClickHouse/ClickHouse/pull/110242) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un posible fallo (heap-buffer-overflow) cuando una columna de estado de función de agregación de la familia `quantileTDigest` se usaba como clave de `GROUP BY` y era serializada de forma concurrente por varios hilos. [#110263](https://github.com/ClickHouse/ClickHouse/pull/110263) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `INSERT` en una tabla `DataLakeCatalog` de Microsoft Fabric / OneLake fallara con `IncorrectEndpointError` (HTTP 400) al dirigir las escrituras de ADLS Gen2 (DFS) al host del endpoint `.dfs` en lugar del host `.blob`. Nota: con `remote_url_allow_hosts`, ambos hosts de Fabric, `.blob` (lectura) y `.dfs` (escritura), deben incluirse en la lista de permitidos para `INSERT`. [#110290](https://github.com/ClickHouse/ClickHouse/pull/110290) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* Se corrigió un cierre abrupto del server al analizar ciertas consultas PRQL (`SET dialect = 'prql'`). Un panic dentro del compilador `prqlc` hacía que el proceso abortara en lugar de notificarse como un error de consulta. [#110316](https://github.com/ClickHouse/ClickHouse/pull/110316) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron resultados de consulta incorrectos que se producían silenciosamente cuando una projection part escrita antes de que cambiara el conjunto de columnas de la projection (por ejemplo, tras actualizar entre versiones que materializan de forma distinta el origen de una columna `ALIAS`, o después de que `ALTER TABLE ... MODIFY COLUMN` reasigne una columna `ALIAS` usada por una projection) se leía a través de la projection o se fusionaba: la columna faltante se rellenaba con valores predeterminados en lugar de con los datos reales. Ahora esas parts se leen desde la base table, y las fusiones reconstruyen la projection a partir de los datos base. [#110328](https://github.com/ClickHouse/ClickHouse/pull/110328) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió que `ORDER BY ... WITH FILL` no respetara `max_execution_time` y tardara en cancelarse al generar un rango de relleno grande (especialmente con `INTERPOLATE`). [#110332](https://github.com/ClickHouse/ClickHouse/pull/110332) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un logical error (un cierre abrupto del server en builds de depuración/sanitizador) cuando se ejecutaba un `ALTER` con varios comandos, como `UPDATE ..., DELETE ...`, sobre una tabla Iceberg. Ahora esas mutations se rechazan con un error `NOT_IMPLEMENTED` claro. [#110347](https://github.com/ClickHouse/ClickHouse/pull/110347) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un bug del parser por el que `COMMENT` se interpretaba incorrectamente como un alias implícito cuando una consulta `SELECT` terminaba justo después de un identificador de tabla simple (p. ej., `... FROM t COMMENT 'x'`), lo que provocaba un error de sintaxis engañoso en lugar de aplicar el comentario a la vista/tabla. [#110372](https://github.com/ClickHouse/ClickHouse/pull/110372) ([Aditya Kumar](https://github.com/adityaksolves)).
* Se corrigió un fallo del server (desbordamiento nativo de pila) al copiar o destruir un literal `Array`/`Tuple`/`Map`/`Object` profundamente anidado, por ejemplo, una consulta con un literal muy profundamente anidado con un `max_parser_depth` elevado. [#110393](https://github.com/ClickHouse/ClickHouse/pull/110393) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigieron dos casos en los que vector search podía devolver menos filas de las esperadas: los valores de `vector_search_index_fetch_multiplier` inferiores a 1.0 podían truncar a cero el recuento de fetch calculado y producir un resultado vacío (ahora esos valores se rechazan), y ahora la optimization de vector search se omite para consultas `LIMIT ... WITH TIES`, porque la optimization limitaba la búsqueda a exactamente N candidatos y descartaba filas empatadas con la N.ª fila. [#110452](https://github.com/ClickHouse/ClickHouse/pull/110452) ([Tamish Mhatre](https://github.com/tamish560)). [#110453](https://github.com/ClickHouse/ClickHouse/pull/110453) ([Tamish Mhatre](https://github.com/tamish560)).
* Se corrigieron el logical error `Expected CommonSubplanReferenceStep to reference CommonSubplanStep`, el error `Subplan cannot be used to build pipeline` y el logical error `Trying to extract chunk from ChunkBuffer before all inputs are finished` para `IN (subquery)` cuando la subquery contiene una subquery correlacionada y el set se construye durante el análisis de índices. [#110491](https://github.com/ClickHouse/ClickHouse/pull/110491) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la sustitución de query parameters dentro de las definiciones de una cláusula `WINDOW` con nombre. Anteriormente, los parameters allí permanecían sin sustituirse de forma silenciosa, y un parámetro `Identifier` no establecido podía provocar la excepción `Logical error: '!part.empty()'` durante `EXPLAIN SYNTAX`. [#110506](https://github.com/ClickHouse/ClickHouse/pull/110506) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un fallo al iniciar el server para tablas `MergeTree` en object storage disks cuando un archivo residual `txn_version.txt.tmp` deja corruptos los metadata a nivel de disco. [#110519](https://github.com/ClickHouse/ClickHouse/pull/110519) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un error lógico en la filesystem cache (`Expected file ... not to exist`) que podía producirse cuando una descarga de caché en segundo plano fallaba con un error no relacionado con el sistema de archivos (por ejemplo, al ejecutar `OPTIMIZE` en una tabla Iceberg), y dejaba un archivo de caché huérfano y vacío. [#110549](https://github.com/ClickHouse/ClickHouse/pull/110549) ([Groene AI](https://github.com/groeneai)).
* Se corrige la lectura de un stream en formato `Native` corrupto cuyo recuento de tipos `Dynamic` o de rutas `JSON`/`Object` se acerca a `SIZE_MAX`: ahora esa entrada malformada se rechaza con un error `INCORRECT_DATA` claro en lugar de un `std::length_error` no controlado. [#110590](https://github.com/ClickHouse/ClickHouse/pull/110590) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un fallo del servidor en el database engine `MaterializedPostgreSQL` que podía producirse cuando una tabla se detached (o cambiaba su estructura) mientras todavía estaba en cola para sincronizarse. [#110596](https://github.com/ClickHouse/ClickHouse/pull/110596) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige el comportamiento incorrecto de `SET param_<name>` en el cliente (y de las opciones `--param_<name>`) cuando el nombre del parámetro coincide con el setting name de una configuración integrada, como `limit`, `offset`, `max_threads` o `log_comment`. Según el ajuste en conflicto, la consulta fallaba con `CANNOT_PARSE_QUOTED_STRING`, el valor se normalizaba silenciosamente (p. ej., `max_threads=0` pasaba a `auto(N)`), o se perdía un nombre de alias del ajuste. Ese parámetro también rompía todos los `SET param_*` posteriores en la misma sesión. [#110597](https://github.com/ClickHouse/ClickHouse/pull/110597) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige la lectura de subcolumns de una columna que tiene una expresión `DEFAULT` y no está materializada en una part (p. ej., después de `ALTER TABLE ADD COLUMN` o durante `ALTER TABLE MATERIALIZE COLUMN`): la subcolumna se rellenaba con los valores predeterminados del tipo en lugar de con la expresión `DEFAULT` evaluada, y las funciones transpuestas de distancia vectorial (`cosineDistanceTransposed` y otras) sobre esas columnas `QBit` fallaban con el error `SIZES_OF_ARRAYS_DONT_MATCH`. Esto cierra [#110634](https://github.com/ClickHouse/ClickHouse/issues/110634). [#110636](https://github.com/ClickHouse/ClickHouse/pull/110636) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un `LOGICAL_ERROR` `Invalid partition key size: 0` que podía hacer fallar un `INSERT` en una tabla `MergeTree` particionada con `non_replicated_deduplication_window` habilitado, cuando un lote de async insert solo se deduplicaba parcialmente (algunos valores de `insert_deduplication_token` eran duplicados y otros eran nuevos). [#110651](https://github.com/ClickHouse/ClickHouse/pull/110651) ([Groene AI](https://github.com/groeneai)).
* Un flush en segundo plano de una inserción asíncrona ahora se detiene rápidamente cuando se cancela con `KILL QUERY`; antes, el vaciado de una carga grande almacenada en búfer seguía analizándose hasta el final e ignoraba la cancelación. [#110652](https://github.com/ClickHouse/ClickHouse/pull/110652) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigen resultados incorrectos de `GROUP BY` con `optimize_aggregation_in_order` y de `DISTINCT` con `optimize_distinct_in_order` aplicados sobre un JOIN `partial_merge`. La optimización de lectura en orden se propagaba a través del join partial-merge, que vuelve a ordenar su entrada izquierda por la clave de join y, por tanto, no conserva el orden original del stream izquierdo, por lo que las filas se agrupaban de forma incorrecta. [#110671](https://github.com/ClickHouse/ClickHouse/pull/110671) ([Groene AI](https://github.com/groeneai)).
* Se corrige un overflow de entero con signo en `toStartOfInterval` con un recuento extremo de intervalos `MONTH`, `WEEK` o `DAY` sobre valores `Date`/`Date32`/`DateTime64`. [#110688](https://github.com/ClickHouse/ClickHouse/pull/110688) ([Groene AI](https://github.com/groeneai)).
* Se corrige el error `NOT_FOUND_COLUMN_IN_BLOCK` en consultas con una subconsulta en `FROM` cuando las réplicas paralelas se ejecutan en modo `custom_key_sampling` / `custom_key_range`. Estas consultas (p. ej., `SELECT * FROM (SELECT id, k, v FROM t WHERE id < 20) ORDER BY k`) antes fallaban con `Not found column __table2.id in block ...`. [#110690](https://github.com/ClickHouse/ClickHouse/pull/110690) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `readWKT` rechazara cadenas WKT con espacios iniciales (p. ej., `readWKT(' POINT(1 2)')`), que sí aceptan los lectores tipados `readWKTPoint`/`readWKTPolygon`/... y la gramática WKT. [#110706](https://github.com/ClickHouse/ClickHouse/pull/110706) ([Groene AI](https://github.com/groeneai)).
* Se corrige un error lógico (`Column ... already added for reading`, una interrupción del servidor en compilaciones de debug/sanitizador) cuando el mismo predicado de índice de texto se usa tanto en `PREWHERE` como en `WHERE` de una consulta sobre una tabla `Merge` encima de una tabla `Distributed`. [#110710](https://github.com/ClickHouse/ClickHouse/pull/110710) ([Groene AI](https://github.com/groeneai)).
* Se corrige el error `NOT_FOUND_COLUMN_IN_BLOCK` en las funciones de distancia transpuestas sobre columnas `QBit` (como `cosineDistanceTransposed`) llamadas con una subconsulta escalar o un vector de referencia constante cuando las réplicas paralelas están habilitadas. Esto cierra [#110719](https://github.com/ClickHouse/ClickHouse/issues/110719). [#110729](https://github.com/ClickHouse/ClickHouse/pull/110729) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un raro `LOGICAL_ERROR` (`Unexpected number of parts to remove from parts_queue`; una interrupción del servidor en compilaciones de debug/sanitizador) en `ReplicatedMergeTree` cuando dos operaciones de partición (por ejemplo, dos consultas `MOVE PARTITION`/`REPLACE PARTITION`, o una en carrera con un `DROP_RANGE` en segundo plano) cancelaban al mismo tiempo la comprobación en segundo plano de partes sobre rangos superpuestos. [#110738](https://github.com/ClickHouse/ClickHouse/pull/110738) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error lógico `Hash is not set for serialization` que podía producirse cuando una columna con un códec `Quantized(...)` estaba envuelta dentro de otra serialización, por ejemplo en una tabla `Merge` sobre fuentes cuya columna del mismo nombre tiene tipos distintos (fusionados en un `Variant`). [#110776](https://github.com/ClickHouse/ClickHouse/pull/110776) ([Groene AI](https://github.com/groeneai)).
* Se corrige un bloqueo del servidor al multiplicar un estado de función de agregación `median`/`quantile` por una constante entera enorme (p. ej., `medianState(x) * 18446744073709551615`). La consulta dejaba de responder a la cancelación y podía ejecutarse indefinidamente. [#110779](https://github.com/ClickHouse/ClickHouse/pull/110779) ([Groene AI](https://github.com/groeneai)).
* Se corrige una caída del servidor (división entera por cero) cuando se consumía una cuota con un intervalo de longitud cero (por ejemplo, `CREATE QUOTA q FOR INTERVAL 0 SECOND MAX queries = 1000`). Ahora se rechaza al crearla cualquier duración de intervalo de cuota no positiva. [#110846](https://github.com/ClickHouse/ClickHouse/pull/110846) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Se corrigió que `throwIf(notLike(col, pattern))` (y otros `throwIf` aplicados sobre una función) lanzara una excepción incondicionalmente cuando `col` es `LowCardinality`. La implementación predeterminada de `LowCardinality` ejecutaba `throwIf` sobre todo el diccionario, que siempre contiene el valor predeterminado reservado incluso cuando ninguna fila lo referencia, por lo que un valor distinto de cero en esa posición no utilizada hacía que `throwIf` lanzara una excepción para datos que no cumplen la condición. [#110864](https://github.com/ClickHouse/ClickHouse/pull/110864) ([Groene AI](https://github.com/groeneai)).
* Propaga los roles activos de una consulta (`SET ROLE` o el parámetro `role`) a los nodos remotos en lecturas con réplica paralela y `Distributed` sobre un clúster protegido con un secreto interserver; anteriormente, los nodos remotos recurrían a los roles predeterminados del usuario y evaluaban las políticas de fila de forma distinta al iniciador. [#110867](https://github.com/ClickHouse/ClickHouse/pull/110867) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se corrigió que las tablas Iceberg produjeran ID de campo duplicados después de `ALTER TABLE ... ADD COLUMN` cuando el esquema inicial contiene campos anidados (`Tuple`/`Array`/`Map`). `last-column-id` ahora registra el ID de campo máximo asignado, incluidos los hijos anidados, por lo que una columna añadida posteriormente ya no reutiliza un ID de campo anidado y las lecturas ya no fallan con `ICEBERG_SPECIFICATION_VIOLATION` (`Duplicate field id`). [#110884](https://github.com/ClickHouse/ClickHouse/pull/110884) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo en compilaciones FIPS al usar una clave SSH Ed25519 (`CREATE USER ... IDENTIFIED WITH ssh_key ... TYPE 'ssh-ed25519'`, o una clave de ese tipo en `users.xml`). Ed25519 no está aprobado por FIPS; esas claves ahora se rechazan con un error `LIBSSH_ERROR` claro. [#110891](https://github.com/ClickHouse/ClickHouse/pull/110891) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se corrigieron los resultados de precisión reducida de las funciones de distancia transpuestas sobre columnas `QBit` (`cosineDistanceTransposed`, `L2DistanceTransposed`, `dotProductTransposed`). Los valores truncados a `precision` planos de bits se reconstruían rellenando con ceros los bits descartados, lo que sesgaba todos los valores reconstruidos hacia cero y producía un caso degenerado con baja precisión: para `QBit(BFloat16)` con precisión 1, solo sobrevive el bit de signo, por lo que todos los valores se reconstruían como `±0.0` y la distancia era la misma constante para cada fila, sin aportar información de ranking. Los valores truncados ahora se reconstruyen al punto medio acotado de la celda de precisión restante (los códigos `Int8` sin procesar a su centro de celda; se conservan los ceros exactos y los infinitos), de modo que una `precision` menor intercambia exactitud por velocidad sin producir resultados excesivamente sesgados. Los resultados de precisión completa no cambian. Esto cierra [#110898](https://github.com/ClickHouse/ClickHouse/issues/110898). [#110911](https://github.com/ClickHouse/ClickHouse/pull/110911) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un fallo del servidor (use-after-free) durante un apagado ordenado después de consultar tablas Iceberg desde sesiones que también usaban tablas temporales. [#110914](https://github.com/ClickHouse/ClickHouse/pull/110914) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrigió un `LOGICAL_ERROR: Cannot sum Bools` (un abort del servidor en compilaciones de depuración/sanitizador) al fusionar estados de agregación `sumMap`/`sumMapWithOverflow`/`sumMapFiltered` con valores `Bool` que se habían serializado en el formato de estado antiguo (versión 0). La misma corrección también arregla dos casos silenciosos de resultados incorrectos con estados `Bool` de versión 0: las claves de mapa de tipo `Bool` no se deduplicaban entre estados, y la compactación de valores cero eliminaba las entradas incorrectas. [#110922](https://github.com/ClickHouse/ClickHouse/pull/110922) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo cuando una función de agregación con el combinador `-Tuple` se usaba con `RESPECT NULLS` y producía un estado intermedio (`-State`, agregación distribuida, `WITH ROLLUP`/`WITH CUBE`). La función combinada tomaba el nombre de la variante de estado incorrecta, por lo que su tipo `AggregateFunction` serializado volvía a resolverse a una disposición en memoria incompatible al hacer un round-trip. [#110930](https://github.com/ClickHouse/ClickHouse/pull/110930) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `PREWHERE` (y las policies a nivel de fila) sobre una columna Iceberg renombrada por schema evolution devolviera silenciosamente `0` filas para data files antiguos. Esas consultas ahora devuelven las filas correctas, igual que `WHERE`. [#110941](https://github.com/ClickHouse/ClickHouse/pull/110941) ([Groene AI](https://github.com/groeneai)).
* Corrige un `LOGICAL_ERROR` (`LazyMaterializingTransform: Number of rows in lazy chunk N does not match number of offsets M`) que podía producirse en consultas de vector search con `vector_search_with_rescoring = 1` combinadas con materialización diferida cuando varias distancias empataban. [#111003](https://github.com/ClickHouse/ClickHouse/pull/111003) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la lectura de datos `Arrow`/`ArrowStream` con columnas anidadas `Array`/`Map` vacías generadas por Apache Arrow Java \< 19.0.0 (incluido con Apache Spark), que antes se rechazaban con un error `INCORRECT_DATA` porque el búfer de desplazamiento era demasiado pequeño. [#111101](https://github.com/ClickHouse/ClickHouse/pull/111101) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige lecturas obsoletas en discos `plain_rewritable` con la page cache habilitada. [#111105](https://github.com/ClickHouse/ClickHouse/pull/111105) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Corrige el error `CANNOT_CONVERT_TYPE` para constantes de tipo `Variant` (incluido `Geometry`) en consultas distribuidas y consultas con réplicas paralelas. [#111136](https://github.com/ClickHouse/ClickHouse/pull/111136) ([Nikita Fomichev](https://github.com/fm4v)).
* Corrige un error por el que la lectura de archivos grandes desde HDFS podía fallar o devolver datos incorrectos cuando una única solicitud de lectura superaba el límite de tamaño de 32 bits de `hdfsPread` (`INT_MAX`). [#98470](https://github.com/ClickHouse/ClickHouse/pull/98470) ([Arup Chauhan](https://github.com/arup-chauhan)).
* Corrige el uso incorrecto del text index en comparaciones de igualdad con una cadena de búsqueda vacía. [#108340](https://github.com/ClickHouse/ClickHouse/pull/108340) ([Robert Schulze](https://github.com/rschu1ze)).
* Se corrigió un bloqueo en `SYSTEM SYNC MERGES` con el merge selector `Manual` cuando no se podía colocar una merge programada en un background pool lleno. [#108770](https://github.com/ClickHouse/ClickHouse/pull/108770) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige que `ATTACH TABLE ... AS REPLICATED` descartara datos committed y resucitara filas anteriores a la mutation cuando quedaba un archivo `txn_version.txt.tmp` obsoleto en una data part. [#108772](https://github.com/ClickHouse/ClickHouse/pull/108772) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una posible race condition en `ALTER TABLE ... MOVE PARTITION TO TABLE` con tablas `MergeTree` no replicadas que podía producir data parts intersectadas, porque el commit de las partes movidas y la asignación del número de bloque no estaban bajo el mismo lock. [#108922](https://github.com/ClickHouse/ClickHouse/pull/108922) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Corrige la lectura de tablas `Iceberg` escritas por Databricks UniForm, que escribe un esquema placeholder degenerado (con una lista de campos vacía) en los manifest files. [#108945](https://github.com/ClickHouse/ClickHouse/pull/108945) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige un use-after-free al leer una tabla `Hive` sin partición con varios hilos. [#109164](https://github.com/ClickHouse/ClickHouse/pull/109164) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige que el log level de la consola no volviera a su valor original tras el inicio del server cuando se establece `logger.startup_console_log_level`: el nivel se tomaba de la clave de configuration incorrecta, por lo que la consola permanecía en el Startup level elevado durante toda la lifetime del server. Cierra [#103472](https://github.com/ClickHouse/ClickHouse/issues/103472). [#109858](https://github.com/ClickHouse/ClickHouse/pull/109858) ([Garrett Thomas](https://github.com/garrettthomaskth)).
* Corrige anomalías de aislamiento de snapshot en transacciones de metadata del disco `plain_rewritable`. Corrige [#92055](https://github.com/ClickHouse/ClickHouse/issues/92055). [#110948](https://github.com/ClickHouse/ClickHouse/pull/110948) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Corrige un abort (`front() called on an empty vector`) en `clickhouse-client --login` cuando el host no se pasaba como argumento `--host` explícito, por ejemplo, cuando provenía de `--connection`, del archivo de configuración o de la variable de entorno `CLICKHOUSE_HOST`. Cierra [#103603](https://github.com/ClickHouse/ClickHouse/issues/103603). [#110279](https://github.com/ClickHouse/ClickHouse/pull/110279) ([Christoph Wurm](https://github.com/cwurm)).
* Corrige un error lógico (`!part.empty()`) cuando un argumento lambda es un identificador entre acentos graves cuyo nombre contiene un punto (por ejemplo, `__table1.`). Antes, esa consulta producía una excepción controlada en compilaciones release y abortaba el servidor en compilaciones de depuración y con sanitizador al formatear un mensaje de error. [#108735](https://github.com/ClickHouse/ClickHouse/pull/108735) ([Groene AI](https://github.com/groeneai)).
* Corrige un `LOGICAL_ERROR` (`No set is registered for key`) en mutaciones `ALTER TABLE ... DROP COLUMN`, `ALTER TABLE ... DELETE`/`UPDATE` y `DELETE FROM` lightweight, en tablas que tienen una columna `ALIAS` cuya expresión usa un operador `IN` (incluso a través de otra columna `ALIAS`). [#111039](https://github.com/ClickHouse/ClickHouse/pull/111039) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Corrige una pérdida silenciosa de datos con async inserts y deduplicación (`async_insert=1`, `async_insert_deduplicate=1`). Cuando varias entradas de inserción asíncrona con valores `insert_deduplication_token` distintos se consolidaban en un único flush que escribía en particiones disjuntas, cada token se registraba en el log de deduplicación de cada partición afectada por el flush, y no solo en la partición en la que acababan sus propias filas. Después, una inserción posterior que reutilizaba uno de esos tokens en una partición en la que nunca había escrito se deduplicaba silenciosamente. Ahora los tokens se registran solo en la partición en la que realmente acaban sus filas. Cierra [#111031](https://github.com/ClickHouse/ClickHouse/issues/111031). [#111049](https://github.com/ClickHouse/ClickHouse/pull/111049) ([Groene AI](https://github.com/groeneai)).
* Corrige una excepción `LOGICAL_ERROR` (`ScatterExchangeStep should have one source shard, got 8`) y filas duplicadas al consultar una tabla `Merge` sobre tablas o vistas `Distributed` con la configuración experimental `make_distributed_plan = 1`. Cierra [#107946](https://github.com/ClickHouse/ClickHouse/issues/107946). [#108401](https://github.com/ClickHouse/ClickHouse/pull/108401) ([Groene AI](https://github.com/groeneai)).
* Serializa una columna `Nullable(Tuple(...))` como un único campo `CSV` en lugar de aplanarla en columnas separadas. Antes, un valor no nulo se escribía como varios campos `CSV`, mientras que `NULL` era un único `\N`, lo que daba un recuento de columnas dependiente de la fila y rompía los encabezados `CSVWithNames`/`CSVWithNamesAndTypes` y las operaciones de ida y vuelta. [#108959](https://github.com/ClickHouse/ClickHouse/pull/108959) ([Groene AI](https://github.com/groeneai)).
* Corrige un error lógico (`KeyCondition uses PREWHERE output`) en el lector `Parquet` v3 cuando una condición de clave a nivel de formato hace referencia a una columna que no se lee del archivo `Parquet`. [#109267](https://github.com/ClickHouse/ClickHouse/pull/109267) ([Groene AI](https://github.com/groeneai)).
* Corrige resultados incorrectos en lecturas de funciones de tabla con `FINAL` o `SAMPLE` bajo `serialize_query_plan = 1`. También corrige la clave de caché de las estadísticas de la tabla hash de agregación para funciones de tabla, de modo que distintas funciones de tabla ya no compartan la misma entrada de preasignación. [#109847](https://github.com/ClickHouse/ClickHouse/pull/109847) ([Azat Khuzhin](https://github.com/azat)).
* Corrige la limpieza de un `BACKUP ... TO Memory(...)` que falla antes de finalizar: la copia de seguridad fallida quedaba registrada, por lo que su nombre no podía reutilizarse. [#109947](https://github.com/ClickHouse/ClickHouse/pull/109947) ([Julia Kartseva](https://github.com/jkartseva)).
* Se corrige la aritmética de intervalos extrema para `WITH FILL STEP` y las funciones de intervalo de fecha/hora `add*` / `subtract*`: los deltas fuera de rango ya no dependen del desbordamiento con signo, y `WITH FILL` con un paso `YEAR` enorme ya no se queda bloqueado al hacer retroceder el calendario. [#110158](https://github.com/ClickHouse/ClickHouse/pull/110158) ([Groene AI](https://github.com/groeneai)).
* Se corrigen los errores `411 Length Required` de los servicios de Azure: el transporte HTTP de Azure basado en Poco ahora establece `Content-Length` a partir del cuerpo de la solicitud para los SDK client que no lo establecen por sí mismos, como Azure Key Vault. [#110299](https://github.com/ClickHouse/ClickHouse/pull/110299) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* La optimización diferida de `FINAL` (`query_plan_optimize_lazy_final`, deshabilitada de forma predeterminada) ya no se aplica cuando la consulta lee en el orden de la clave de ordenación, porque su plan de reemplazo no preserva ese orden y podía devolver resultados en un orden incorrecto. Tampoco se aplica ya cuando un `LIMIT` menor que el número de filas que se van a leer se aplica directamente al paso de lectura, donde la pasada obligatoria de construcción del conjunto impide la finalización anticipada. [#110576](https://github.com/ClickHouse/ClickHouse/pull/110576) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se corrigió que `readWKT` y `readWKTPoint` devolvieran coordenadas sin inicializar (escalares) o heredadas de la fila anterior (vectorizadas) para `POINT EMPTY`. `POINT EMPTY` ahora se rechaza con `CANNOT_PARSE_TEXT`, ya que `Point` de ClickHouse es una `Tuple(Float64, Float64)` fija sin representación vacía. [#110692](https://github.com/ClickHouse/ClickHouse/pull/110692) ([Groene AI](https://github.com/groeneai)).
* Se corrige el manejo incorrecto de la zona horaria al materializar columnas del lado derecho en hash joins. Cierra [#111033](https://github.com/ClickHouse/ClickHouse/issues/111033). [#111074](https://github.com/ClickHouse/ClickHouse/pull/111074) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigieron resultados incorrectos de `count()` y la omisión de filas cuando una clave `String` (o una `FixedString` más estrecha) o un skip index minmax se filtra mediante una comparación con una constante `FixedString` más ancha, por ejemplo `toFixedString('abc', 257) = string_col`. La poda por clave primaria y minmax construía el rango a partir de la constante rellenada con NUL y omitía incorrectamente los gránulos coincidentes. [#111106](https://github.com/ClickHouse/ClickHouse/pull/111106) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron las inserciones asíncronas en formato `Native` para que una entrada en búfer que se vuelva incompatible después de `ALTER ... MODIFY COLUMN` ya no haga fallar todo el lote. Cierra [#111064](https://github.com/ClickHouse/ClickHouse/issues/111064). [#111108](https://github.com/ClickHouse/ClickHouse/pull/111108) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Se corrige `CREATE OR REPLACE` de un Diccionario con un objeto de otro tipo: fallaba con `CANNOT_DETACH_DICTIONARY_AS_TABLE` después de que el reemplazo ya se hubiera confirmado, dejando una tabla huérfana `_tmp_replace_*`. [#111142](https://github.com/ClickHouse/ClickHouse/pull/111142) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se corrigió `INCOMPATIBLE_TYPE_OF_JOIN` para un join `ANY` en una tabla del engine `Join` cuando un filtro `WHERE` sobre una columna del lado derecho permitía al planner de consultas reescribir el join a `SEMI` o `ANTI`. Una tabla del engine `Join` tiene una strictness declarada fija que no puede cambiarse, por lo que ahora se rechaza esa conversión para dichas tablas. [#111362](https://github.com/ClickHouse/ClickHouse/pull/111362) ([Groene AI](https://github.com/groeneai)).
* Se corrige que la table function `format` no devolviera columnas cuando los datos de entrada se interpretan como cero filas (por ejemplo, un documento JSON vacío o una `FeatureCollection` de GeoJSON sin features). Ahora devuelve un resultado vacío con las columnas correctas en lugar de lanzar `NOT_FOUND_COLUMN_IN_BLOCK`. Cierra [#111390](https://github.com/ClickHouse/ClickHouse/issues/111390). [#111428](https://github.com/ClickHouse/ClickHouse/pull/111428) ([Groene AI](https://github.com/groeneai)).

<div id="268-build-testing-packaging-improvement">
  #### Mejora en compilación/pruebas/empaquetado
</div>

* Las compilaciones con sanitizador ahora capturan el informe del sanitizador en el búfer global `sanitizer_report`, para que el analyzer de core dumps pueda leerlo desde el core dump. [#109333](https://github.com/ClickHouse/ClickHouse/pull/109333) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Compilar `musl` desde el código fuente en lugar de usar binarios integrados. [#97452](https://github.com/ClickHouse/ClickHouse/pull/97452) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Usar implementaciones SIMD de `memcmp`/`memcpy`/`memmove`/`memset`/`bcmp`/`memmem` de LLVM-libc. [#107566](https://github.com/ClickHouse/ClickHouse/pull/107566) ([Konstantin Bogdanov](https://github.com/thevar1able)). Se corrige una corrupción silenciosa de `memmove` en compilaciones de Debug con `-O0` (`-DDEBUG_O_LEVEL=0`) en máquinas con AVX-512. [#110904](https://github.com/ClickHouse/ClickHouse/pull/110904) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Eliminar los usos de la biblioteca `curl` en toda la base de código y en las bibliotecas de terceros incluidas. [#108296](https://github.com/ClickHouse/ClickHouse/pull/108296) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se actualizó `mariadb-connector-c` a 3.4.9. [#108328](https://github.com/ClickHouse/ClickHouse/pull/108328) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Actualizar `libssh` a 0.12.0. [#108329](https://github.com/ClickHouse/ClickHouse/pull/108329) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se corrige un bloqueo durante el `COMMIT` de una transacción en macOS. [#108375](https://github.com/ClickHouse/ClickHouse/pull/108375) ([Raúl Marín](https://github.com/Algunenano)).
* Se añadió una opción de CMake `COMPRESS_DEBUG_SECTIONS` que comprime las secciones de depuración DWARF en archivos objeto (`-gz`), habilitada automáticamente cuando el compilador lo admite, para reducir el tamaño de los directorios de compilación de Debug; los binarios finales se dejan sin comprimir, por lo que la simbolización de stack traces en runtime no se ve afectada. [#109306](https://github.com/ClickHouse/ClickHouse/pull/109306) ([Murphy](https://github.com/murphy-4o)). La toolchain de LLVM incluida ahora se compila con zlib, por lo que su clang admite `-gz=zlib`, y se añadió el enlace simbólico `clang++-21` que faltaba. [#109596](https://github.com/ClickHouse/ClickHouse/pull/109596) ([Murphy](https://github.com/murphy-4o)).
* Las compilaciones de Debug ahora compilan los crates de Rust integrados con información de depuración reducida (`debug = 1`, nivel `limited` de cargo) y sin caché incremental (`REDUCE_RUST_DEBUG_INFO`, activado de forma predeterminada), lo que reduce el tamaño de los artifacts de compilación de Rust (\~12 → \~7 GB desde cero) y evita el crecimiento ilimitado de la caché de cargo entre recompilaciones. Establezca `-DREDUCE_RUST_DEBUG_INFO=OFF` para restaurar DWARF completo y la compilación incremental. [#109471](https://github.com/ClickHouse/ClickHouse/pull/109471) ([Murphy](https://github.com/murphy-4o)).
* Se admite el exchange de consultas distribuidas en streaming y las lecturas `STREAM` en macOS. [#109769](https://github.com/ClickHouse/ClickHouse/pull/109769) ([Raúl Marín](https://github.com/Algunenano)).
* Actualizar `libarchive` de 3.8.7 a 3.8.8. [#109874](https://github.com/ClickHouse/ClickHouse/pull/109874) ([Robert Schulze](https://github.com/rschu1ze)).
* Actualizar `c-ares` de 1.34.6 a 1.34.8. [#109905](https://github.com/ClickHouse/ClickHouse/pull/109905) ([Robert Schulze](https://github.com/rschu1ze)).
* Actualizar `krb5` para corregir CVE-2026-40355 y CVE-2026-40356. [#109910](https://github.com/ClickHouse/ClickHouse/pull/109910) ([Robert Schulze](https://github.com/rschu1ze)).
* Se eliminó la dependencia de terceros `libpng`. `FORMAT PNG` ahora usa en su lugar un pequeño codificador PNG integrado (basado en la zlib incluida). [#110051](https://github.com/ClickHouse/ClickHouse/pull/110051) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se registran en el memory tracker de macOS las asignaciones sin procesar de C (que no pasan por `operator new`) al envolver la zona malloc de jemalloc, de modo que se les apliquen los límites de memoria. [#110370](https://github.com/ClickHouse/ClickHouse/pull/110370) ([Raúl Marín](https://github.com/Algunenano)).
* Las imágenes de Docker `-distroless` para `clickhouse-server` y `clickhouse-keeper` ahora se construyen a partir de la etapa de producción sin shell; antes se construían a partir de la etapa de depuración e incluían `/busybox/sh`. Cierra [#105677](https://github.com/ClickHouse/ClickHouse/issues/105677). [#105678](https://github.com/ClickHouse/ClickHouse/pull/105678) ([ashishch432](https://github.com/ashishch432)).
* Se actualizó `abseil-cpp` a la versión LTS `20260526.0`. [#108991](https://github.com/ClickHouse/ClickHouse/pull/108991) ([Konstantin Bogdanov](https://github.com/thevar1able)).

<div id="266">
  ### Lanzamiento de ClickHouse 26.6, 2026-06-25. [Presentación](https://presentations.clickhouse.com/2026-release-26.6/), [Video](https://www.youtube.com/watch?v=-NmqMH9y4EY)
</div>

<div id="268-backward-incompatible-change">
  #### Cambio incompatible con versiones anteriores
</div>

* Este cambio elimina la funcionalidad `allow_experimental_query_deduplication`. Esta funcionalidad llevaba mucho tiempo en estado experimental, no tiene pruebas y no se va a seguir soportando (las pruebas iniciales eran inestables y se eliminaron en [#49579](https://github.com/ClickHouse/ClickHouse/pull/49579)). [#99398](https://github.com/ClickHouse/ClickHouse/pull/99398) ([Igor Nikonov](https://github.com/devcrafter)).
* La funcionalidad `SYSTEM INSTRUMENT` basada en XRay ahora usa `arguments` en lugar de `parameters`: la columna `system.instrumentation.parameters` se renombró a `arguments`, y la sintaxis `SYSTEM INSTRUMENT ADD ... HANDLER PARAMETERS ...` se cambió por `SYSTEM INSTRUMENT ADD ... HANDLER ARGUMENTS ...`. Las consultas o automatizaciones que usen la columna o la sintaxis antiguas deben actualizarse para usar los nombres nuevos; los nombres antiguos ya no son compatibles. [#103854](https://github.com/ClickHouse/ClickHouse/pull/103854) ([Pablo Marcos](https://github.com/pamarcos)).
* La configuración `show_data_lake_catalogs_in_system_tables` se renombró a `show_remote_databases_in_system_tables` y se amplió: cuando su valor es 0 (el valor predeterminado), las bases de datos `MySQL` y `PostgreSQL` también se ocultan de `system.tables`, `system.columns` y `system.completions`, además de los catálogos del lago de datos. El nombre antiguo de la configuración se mantiene como alias. [#104416](https://github.com/ClickHouse/ClickHouse/pull/104416) ([Pablo Marcos](https://github.com/pamarcos)).
* La build x86 predeterminada ahora apunta a x86-64-v3 (AVX2) en lugar de x86-64-v2 (SSE4.2). Esto requiere una CPU con soporte para AVX2 (Intel Haswell o posterior, AMD Excavator o posterior). Si tu CPU no admite AVX2, usa la build `amd64compat`, que apunta a x86-64 básico. [#105019](https://github.com/ClickHouse/ClickHouse/pull/105019) ([Raúl Marín](https://github.com/Algunenano)).
* Se rechazan `Dynamic`/`Variant` anidados en agregaciones `min`/`max` e índices `minmax`. Antes solo se comprobaban los `Dynamic`/`Variant` de nivel superior. Cierra [#104747](https://github.com/ClickHouse/ClickHouse/issues/104747). [#105468](https://github.com/ClickHouse/ClickHouse/pull/105468) ([Pavel Kruglov](https://github.com/Avogar)).
* `icebergHash` y `icebergBucket` ahora rechazan argumentos `Int128`, `UInt128`, `Int256`, `UInt256` y `Decimal256` con un error explícito. Antes truncaban silenciosamente los valores más grandes y producían hash con colisiones. La spec de Iceberg solo define el hashing para enteros de 32/64 bits y decimales con una precisión de hasta 38; convierte a `Int64` o `Decimal128` para mantener el comportamiento anterior en los valores que quepan. [#105866](https://github.com/ClickHouse/ClickHouse/pull/105866) ([Raúl Marín](https://github.com/Algunenano)).
* Se añadió control granular sobre el eco de consultas en la CLI. La opción `--echo` ahora acepta un valor booleano opcional y funciona tanto en modo interactivo como en batch mode. Las nuevas opciones `--echo-formatted` y `--echo-query-id` controlan, respectivamente, si las consultas reproducidas con eco se formatean y si se imprime `query_id`. La opción `--hilite`/`--highlight` ahora también controla el resaltado de las consultas reproducidas con eco. Como efecto secundario, `--echo` ahora es una opción con valor booleano, por lo que una consulta posicional colocada justo después de un `--echo` sin valor se interpreta como su valor; usa `--echo --query "..."` o `--echo=false` en su lugar. [#106191](https://github.com/ClickHouse/ClickHouse/pull/106191) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se eliminaron las funciones experimentales de KQL (Kusto) `array_sort_asc` y `array_sort_desc`, junto con sus backends SQL `kql_array_sort_asc` y `kql_array_sort_desc`. Estas funciones eran experimentales, estaban implementadas con baja calidad y eran el origen de errores de corrección y del parser. Las consultas que usan estos nombres ahora devuelven `UNKNOWN_FUNCTION`. [#108101](https://github.com/ClickHouse/ClickHouse/pull/108101) ([Groene AI](https://github.com/groeneai)).
* `ALTER TABLE ... REPLACE PARTITION ... FROM ...` ya no elimina silenciosamente los datos de la partición de destino cuando la tabla de origen no tiene partes en la partición solicitada. Antes, una solicitud de este tipo eliminaba la partición de destino y no escribía nada en su lugar: una trampa que podía provocar pérdida de datos. Ahora, de forma predeterminada, se rechaza con `BAD_ARGUMENTS`. Para restaurar el comportamiento anterior de vaciado silencioso, establezca la nueva configuración `allow_replace_partition_from_empty_source = 1`, o bien establezca `compatibility` en `26.5` o una versión anterior; para eliminar explícitamente los datos de destino, use `ALTER TABLE ... DROP PARTITION`. [#104939](https://github.com/ClickHouse/ClickHouse/pull/104939) ([Groene AI](https://github.com/groeneai)).
* El valor predeterminado de la configuración del servidor `insert_deduplication_version` cambia de `compatible_double_hashes` a `new_unified_hash`. La deduplicación de inserciones ahora funciona sobre todo el bloque insertado (por inserción) en lugar de hacerlo por parte/partición: un reintento de la misma inserción sigue deduplicándose, pero dos inserciones distintas que producen una parte idéntica ya no se deduplican entre sí, y las inserciones de las mismas filas en distinto orden ya no se deduplican. Establezca `insert_deduplication_version = compatible_double_hashes` para restaurar el comportamiento anterior. Las instancias que se actualicen directamente desde una release cuyo valor predeterminado era `old_separate_hashes` primero deben ejecutarse con `compatible_double_hashes` hasta que haya transcurrido la ventana de deduplicación relevante más larga antes de pasar a depender de `new_unified_hash`. [#107886](https://github.com/ClickHouse/ClickHouse/pull/107886) ([Sema Checherinda](https://github.com/CheSema)).

<div id="268-new-feature">
  #### Nueva funcionalidad
</div>

* Se agregó compatibilidad con consultas continuas sobre tablas `MergeTree`, implementadas mediante una serie de lecturas de instantáneas. Este es un primer paso hacia la compatibilidad general con consultas en streaming. [#105114](https://github.com/ClickHouse/ClickHouse/pull/105114) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se agregaron índices de omisión hipotéticos (what-if). Use `CREATE HYPOTHETICAL INDEX ... ON t (expr) TYPE ...` para definir un índice de omisión virtual con alcance de sesión y luego `EXPLAIN WHATIF SELECT ...` para estimar su tasa de omisión y su costo sin materializarlo. Los índices definidos son visibles en la nueva tabla `system.hypothetical_indexes`. [#104608](https://github.com/ClickHouse/ClickHouse/pull/104608) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se agregó una interfaz web integrada en `/schema` a `clickhouse-server` que visualiza el grafo de dependencias entre tablas, vistas materializadas, vistas materializadas actualizables, diccionarios, tablas distribuidas y vistas. [#105276](https://github.com/ClickHouse/ClickHouse/pull/105276) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Se agregó compatibilidad con el formato de salida `PNG`, lo que permite renderizar directamente los resultados de las consultas como imágenes PNG. [#74691](https://github.com/ClickHouse/ClickHouse/pull/74691) ([Maksim Dergousov](https://github.com/m7kss1)).
* Se agregó la detección del agente de codificación con IA (Claude Code, Cursor, Codex, Gemini CLI, Goose, etc.) que invocó `clickhouse-client` o `clickhouse-local`, en función de las variables de entorno. El agente detectado se informa en la nueva columna `client_agent` de `system.query_log`, `system.query_thread_log` y `system.processes`. [#106619](https://github.com/ClickHouse/ClickHouse/pull/106619) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se agregó una nueva tabla del sistema, `system.documentation`, que recopila en una sola tabla la documentación de referencia integrada de los componentes uniformes del sistema (funciones, motores de tabla, tipos de datos, ajustes, formatos y otros), con la documentación renderizada en Markdown. [#107463](https://github.com/ClickHouse/ClickHouse/pull/107463) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se agregó el formato de entrada `GeoJSON` para leer documentos `FeatureCollection` de [GeoJSON](https://geojson.org/), produciendo una fila por feature con columnas `id` (`String`), `geometry` (`Geometry`) y `properties` (`Nullable(JSON)`). Las geometrías `Point`, `LineString`, `MultiLineString`, `Polygon` y `MultiPolygon` se leen en el tipo nativo `Geometry` de ClickHouse. `GeometryCollection` y `MultiPoint`, que el tipo `Geometry` no puede representar, generan una excepción de forma predeterminada, o pueden almacenarse como `NULL` mediante el ajuste `input_format_geojson_unsupported_geometry_handling`. Contribuye a [#91533](https://github.com/ClickHouse/ClickHouse/issues/91533). [#98124](https://github.com/ClickHouse/ClickHouse/pull/98124) ([Mark Needham](https://github.com/mneedham)).
* Se agregaron funciones para servir Mapbox Vector Tiles directamente desde SQL: `MVTEncodeGeom` proyecta una geometría en el espacio de píxeles de un tile slippy-map y la recorta, `MVTEncode` agrega las geometrías proyectadas de un grupo en los bytes binarios de un tile de una sola capa, y `MVTBoundingBox` / `MVTBoundingBoxMercator` devuelven el cuadro delimitador de un tile para restringir las filas a él. Se admite geometría de punto, línea y polígono. También están disponibles con los alias de PostGIS `ST_AsMVTGeom` y `ST_AsMVT`. [#106107](https://github.com/ClickHouse/ClickHouse/pull/106107) ([Saarthak Gupta](https://github.com/saarthak2002)).
* `clickhouse-local` ahora admite las consultas `SYSTEM START LISTEN` y `SYSTEM STOP LISTEN`, lo que permite transformarlo en un servidor que acepta conexiones TCP y HTTP. [#101143](https://github.com/ClickHouse/ClickHouse/pull/101143) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió un comando interactivo `help` a `clickhouse-client` y `clickhouse-local`. Al escribir `help <name>` (también `/help`, `man` o `/man`) se muestra la documentación de una función, table engine, tipo de dato, formato, setting u otro componente, renderizada a partir de Markdown en la terminal con resaltado de sintaxis SQL. Cuando la palabra es ambigua, se muestran todas las coincidencias; si no se encuentra, se sugieren nombres similares. [#108042](https://github.com/ClickHouse/ClickHouse/pull/108042) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se admite la escritura en Azure Data Lake Storage Gen2. [#105406](https://github.com/ClickHouse/ClickHouse/pull/105406) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se añade el formato `RowBinaryWithNamesAndTypesAndDefaults` para ofrecer mejor compatibilidad con schema evolution. [#105736](https://github.com/ClickHouse/ClickHouse/pull/105736) ([Mark Zitnik](https://github.com/mzitnik)).
* Se implementa `ADD ENUM VALUES` en consultas `ALTER TABLE` para simplificar la adición de nuevos valores a un tipo `Enum` existente sin tener que volver a especificar todos los valores actuales de `Enum`. [#93830](https://github.com/ClickHouse/ClickHouse/pull/93830) ([Ilya Golshtein](https://github.com/ilejn)).
* La vista materializada actualizable ahora admite `REFRESH DEPENDS ON` para desencadenar actualizaciones en función de las actualizaciones de otra RMV, en lugar de hacerlo según una programación basada en tiempo. (`REFRESH EVERY ... DEPENDS ON` ya existía, pero no podía usarse de forma fiable para este caso de uso). Consulte la documentación de `CREATE MATERIALIZED VIEW`. [#104440](https://github.com/ClickHouse/ClickHouse/pull/104440) ([Michael Kolupaev](https://github.com/al13n321)).
* Se añade soporte para seleccionar columnas por patrón de nombre con `* LIKE '<pattern>'` y `* ILIKE '<pattern>'`, incluidas formas calificadas como `table.* LIKE '<pattern>'` y `table.* ILIKE '<pattern>'`. `LIKE` hace coincidir los nombres de columna de forma sensible a mayúsculas y minúsculas, mientras que `ILIKE` lo hace de forma no sensible a mayúsculas y minúsculas. [#104569](https://github.com/ClickHouse/ClickHouse/pull/104569) ([Yue Ni](https://github.com/niyue)).
* Se añadió la sintaxis `ESCAPE`, que define un carácter de escape personalizado en un patrón `LIKE`, lo que permite tratar `%` y `_` como caracteres literales en lugar de wildcards. [#99774](https://github.com/ClickHouse/ClickHouse/pull/99774) ([Ilya Yatsishin](https://github.com/qoega)).
* Se añaden los table settings de `MergeTree` `materialize_projections_on_insert` y `materialize_projections_on_merge`. Cuando `materialize_projections_on_insert = 0`, las operaciones `INSERT` omiten la creación de projection parts, lo que mejora el throughput de inserción en tablas con muchas projections. Cuando `materialize_projections_on_merge = 1`, una merge vuelve a crear una projection que falta en todas sus partes de origen, de modo que las projections pueden generarse durante las merges en lugar de on insert. Las merges siguen combinando solo partes que comparten el mismo conjunto de projections. [#100993](https://github.com/ClickHouse/ClickHouse/pull/100993) ([Christoph Wurm](https://github.com/cwurm)).
* Se añade un nuevo setting inmutable de `MergeTree`, `allow_tuple_element_aggregation`, desactivado de forma predeterminada. Cuando está habilitado, `SummingMergeTree`, `AggregatingMergeTree` y `CoalescingMergeTree` aplanan recursivamente las columnas `Tuple` y realizan la agregación de cada elemento hoja de forma independiente durante las merges, exactamente igual que si fuera una columna de nivel superior: `SummingMergeTree` lo suma, `AggregatingMergeTree` fusiona su estado de función de agregación y `CoalescingMergeTree` conserva su último valor no NULL. El setting debe especificarse al crear la tabla y los engines que no lo admiten lo ignoran silenciosamente. [#98039](https://github.com/ClickHouse/ClickHouse/pull/98039) ([johnjing](https://github.com/JingYanchao)).
* Nuevas funciones `quantizeBFloat16ToInt8` y `dequantizeInt8ToBFloat16`: un códec escalar que comprime componentes de embeddings a 8 bits mediante un cuantizador gaussiano Lloyd-Max de 256 niveles, del que pueden extraerse códigos Int4/Int2/binarios mediante truncamiento de bits. [#108102](https://github.com/ClickHouse/ClickHouse/pull/108102) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se agregan las funciones `arrayTopK` y `arrayBottomK`: - `arrayTopK(k, array)` devuelve los K elementos más grandes en orden descendente - `arrayBottomK(k, array)` devuelve los K elementos más pequeños en orden ascendente. [#104563](https://github.com/ClickHouse/ClickHouse/pull/104563) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se agregó una nueva tabla del sistema `system.iceberg_files` que expone metadatos por archivo para las tablas `Iceberg`, con una fila por cada archivo de datos o de eliminación en la instantánea actual de cada tabla. Esto cierra [#98777](https://github.com/ClickHouse/ClickHouse/issues/98777). [#104415](https://github.com/ClickHouse/ClickHouse/pull/104415) ([Asya Shneerson](https://github.com/asya-ch)).
* Se agregó la tabla `system.constraints`, que proporciona información sobre todas las restricciones `CHECK` y `ASSUME` de todas las tablas, incluido el nombre de la restricción, el tipo y la expresión. [#105337](https://github.com/ClickHouse/ClickHouse/pull/105337) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Se agregó una nueva tabla `system.dictionary_layouts` que enumera las estructuras de diccionario disponibles junto con documentación integrada (`description`, `syntax`, `examples`, `introduced_in`, `related`). [#106182](https://github.com/ClickHouse/ClickHouse/pull/106182) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se agregó una nueva tabla `system.dictionary_sources` que enumera los orígenes de diccionario disponibles junto con documentación integrada (`description`, `syntax`, `examples`, `introduced_in`, `related`). [#106184](https://github.com/ClickHouse/ClickHouse/pull/106184) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se agregó una nueva tabla `system.data_skipping_index_types` que enumera los tipos de índices de omisión de datos disponibles junto con documentación integrada (`description`, `syntax`, `examples`, `introduced_in`, `related`). [#106186](https://github.com/ClickHouse/ClickHouse/pull/106186) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se agregó una nueva tabla `system.disk_types` que enumera los tipos de disco disponibles junto con documentación integrada (`description`, `syntax`, `examples`, `introduced_in`, `related`). [#106187](https://github.com/ClickHouse/ClickHouse/pull/106187) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se implementó `SYSTEM RESTART DISK <name>`: ahora vuelve a cargar los metadatos en memoria de un disco y vuelve a escanear las partes de datos de las tablas con réplica de solo lectura ubicadas en él. Esto permite que una réplica de solo lectura de una tabla en almacenamiento compartido `plain_rewritable` vea bajo demanda los datos escritos por otro servidor, sin esperar a `refresh_parts_interval` ni reiniciar el servidor. [#106645](https://github.com/ClickHouse/ClickHouse/pull/106645) ([Jordi Villar](https://github.com/jrdi)).
* Ahora se admite la sintaxis de estilo PostgreSQL `expr OP SOME(array)` / `expr OP ALL(array)` (con un lado derecho que no es una subconsulta), y se reescribe como `has` / `NOT has` para `=`/`<>`, o como lambdas `arrayExists` / `arrayAll` para otros operadores de comparación. No se acepta `ANY` para la forma de array porque `any` también es una función de agregación; use `SOME` en su lugar. La forma con subconsulta de `ANY`/`SOME`/`ALL` se sigue reduciendo a `IN` / `NOT IN`. [#105129](https://github.com/ClickHouse/ClickHouse/pull/105129) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se agregaron dos nuevas estrategias de `load_balancing`, `hostname_longest_common_prefix` y `hostname_longest_common_suffix`, que prefieren la réplica cuyo hostname comparte el prefijo común más largo (respectivamente, sufijo) con el hostname del iniciador. Son útiles cuando el centro de datos está codificado como prefijo o sufijo de hostnames cuyos segmentos numéricos tienen longitud variable, donde las estrategias existentes `nearest_hostname` y `hostname_levenshtein_distance` eligen la réplica incorrecta. [#107360](https://github.com/ClickHouse/ClickHouse/pull/107360) ([Denny \[DBA at Innervate\]](https://github.com/den-crane)).
* Se agregó información del certificado de cliente TLS (subjects, número de serie, emisor y período de validez) a la tabla `system.session_log` para mejorar la observabilidad de la autenticación basada en certificados. [#107679](https://github.com/ClickHouse/ClickHouse/pull/107679) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se agregó una credencial opcional `external_id` para el acceso a `S3` basado en roles. [#106941](https://github.com/ClickHouse/ClickHouse/pull/106941) ([Elian Gidoni](https://github.com/eliangidoni)).
* Se agregó una nueva configuración de `S3Queue`, `after_processing_move_preserve_path`. Cuando se habilita junto con `after_processing='move'` y `after_processing_move_prefix`, los objetos procesados se mueven conservando su ruta de origen completa bajo el prefijo de destino, en lugar de aplanarse y dejar solo el nombre del archivo. [#105354](https://github.com/ClickHouse/ClickHouse/pull/105354) ([Asya Shneerson](https://github.com/asya-ch)).
* Se agregó la configuración del servidor `message_queue_disable_insertion` para deshabilitar la inserción desde motores de cola de mensajes (`Kafka`, `RabbitMQ`, `NATS`) en vistas materializadas adjuntas. Es útil para escenarios de réplicas de solo lectura. [#104911](https://github.com/ClickHouse/ClickHouse/pull/104911) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Se agregaron `LOCALTIME` y `LOCALTIMESTAMP` (sintaxis estándar de SQL / PostgreSQL). `LOCALTIMESTAMP` es un alias de `now()` (devuelve `DateTime`); `LOCALTIME` devuelve la hora actual del día como un valor `Time`. [#106139](https://github.com/ClickHouse/ClickHouse/pull/106139) ([Thomas Cabral](https://github.com/thomas-cabral)).
* Se agregó `date_part('unit', expr)` como azúcar sintáctico para `EXTRACT(unit FROM expr)`. Se admiten todos los tipos de interval estándar y los extras de PostgreSQL (`epoch`, `dow`, `doy`, `isodow`, `isoyear`, `century`, `decade`, `millennium`). [#105127](https://github.com/ClickHouse/ClickHouse/pull/105127) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `EXTRACT(TIMEZONE_HOUR FROM dt)` y `EXTRACT(TIMEZONE_MINUTE FROM dt)` compatibles con PostgreSQL para las partes de hora y minuto de un desfase de zona horaria, y `EXTRACT(<unit> FROM INTERVAL n <unit>)` / `date_part('<unit>', INTERVAL n <unit>)` para extraer el valor de un intervalo. [#106227](https://github.com/ClickHouse/ClickHouse/pull/106227) ([Vinayak Joshi](https://github.com/vinayakj592)).
* Se agregaron alias de agregación `min_by` y `max_by` para `argMin` y `argMax`. [#105712](https://github.com/ClickHouse/ClickHouse/pull/105712) ([Joey Yu](https://github.com/itsjoeoui)). Estos alias son estúpidos; los ingenieros de verdad usan los nombres originales de ClickHouse.
* Se agregó `REGEXP_SUBSTR` como alias que no distingue entre mayúsculas y minúsculas de `regexpExtract` para compatibilidad con Oracle/MySQL/Snowflake. [#105122](https://github.com/ClickHouse/ClickHouse/pull/105122) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se agregó `SESSION_USER` como alias que no distingue entre mayúsculas y minúsculas de `currentUser()` para compatibilidad con PostgreSQL / SQL estándar. [#106081](https://github.com/ClickHouse/ClickHouse/pull/106081) ([Takumi Hara](https://github.com/takumihara)).
* Ahora se admite un modificador final `NULL` / `NOT NULL` en `ALTER TABLE ... ADD/MODIFY COLUMN`, en consonancia con `CREATE TABLE`. [#106150](https://github.com/ClickHouse/ClickHouse/pull/106150) ([Takumi Hara](https://github.com/takumihara)).
* Ahora puede usar la función `h3PolygonToCellsWithContainment` de h3 para aprovechar su nuevo algoritmo, que admite modos de contención basados en centro, totalmente contenidos y superpuestos. [#104455](https://github.com/ClickHouse/ClickHouse/pull/104455) ([Youssef Kadry](https://github.com/yousefQadry)).
* Añade los indicadores `IPV4_PREFIX_BITS and IPV6_PREFIX_BITS` cuando la generación de claves se realiza mediante `IP_ADDRESS` o `FORWARDED_IP_ADDRESS`. [#89270](https://github.com/ClickHouse/ClickHouse/pull/89270) ([Aditya Chopra](https://github.com/adityachopra29)).
* `formatReadableTimeDelta` ahora acepta como entrada una expresión `INTERVAL` de un tipo distinto de `Month` y `Year`. [#64315](https://github.com/ClickHouse/ClickHouse/pull/64315) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
* El usuario ahora puede especificar un argumento de precisión opcional para las funciones `formatReadableSize`, `formatReadableDecimalSize` y `formatReadableQuantity`, que controla la cantidad de dígitos después del punto decimal. El valor predeterminado es 2, lo que conserva el comportamiento anterior. [#104648](https://github.com/ClickHouse/ClickHouse/pull/104648) ([Antonio Filipovic](https://github.com/antoniofilipovic)).
* Añade la configuración `output_format_float_precision` para controlar la cantidad de dígitos decimales en la salida de texto de números de coma flotante. [#99721](https://github.com/ClickHouse/ClickHouse/pull/99721) ([phulv94](https://github.com/phulv94)).
* Se añadió la configuración `output_format_always_write_decimal_point_in_float_and_decimal` para imprimir siempre un punto decimal en números de coma flotante y `Decimal` en formatos de texto, incluso cuando el valor es un número entero. Por ejemplo, genera `1.` en lugar de `1`. Está desactivada de forma predeterminada. [#62614](https://github.com/ClickHouse/ClickHouse/pull/62614) ([Ilya Yatsishin](https://github.com/qoega)).
* Añade compatibilidad con los nuevos elementos de configuración de handler HTTP `<url_prefix>` y `<full_url_prefix>` (coinciden con todas las rutas bajo una ruta base; son útiles, por ejemplo, para handlers de Prometheus), así como con `<url_regexp>`, `<full_url_regexp>` y `<headers_regexp>`. La forma antigua `<url>regex:...</url>` ahora está obsoleta. [#107492](https://github.com/ClickHouse/ClickHouse/pull/107492) ([Vitaly Baranov](https://github.com/vitlibar)).
* Añade compatibilidad con las estadísticas `basic`, una estadística compacta por columna que almacena mínimos y máximos numéricos, la longitud media de las cadenas y el recuento de NULL cuando corresponde. [#106048](https://github.com/ClickHouse/ClickHouse/pull/106048) ([Han Fei](https://github.com/hanfei1991)).
* Añade compatibilidad con nodos TTL en ClickHouse Keeper, con activación explícita mediante el indicador de feature `create_ttl`. [#100397](https://github.com/ClickHouse/ClickHouse/pull/100397) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Introduce una función de reserva de memoria para cargas de trabajo. Consulte la documentación sobre [planificación de cargas de trabajo](https://clickhouse.com/docs/operations/workload-scheduling). [#82414](https://github.com/ClickHouse/ClickHouse/pull/82414) ([Sergei Trifonov](https://github.com/serxa)).

<div id="268-experimental-feature">
  #### Funcionalidad experimental
</div>

* Ejecución distribuida de consultas en varias etapas: el planificador divide el plan de consulta en etapas conectadas mediante intercambios scatter / broadcast / gather / shuffle y distribuye los fragmentos del plan entre los nodos worker. Los datos entre etapas se transmiten por TCP o se pasan mediante archivos temporales en object storage compartido; esta ruta admite shuffle distribuido y broadcast hash joins, agregación por shuffle y ordenación distribuida. La funcionalidad es experimental y está deshabilitada de forma predeterminada. [#106020](https://github.com/ClickHouse/ClickHouse/pull/106020) ([Alexander Gololobov](https://github.com/davenger)). El motor experimental de planes de consulta distribuidos (`make_distributed_plan`) ahora puede usar, para cada worker, un puerto distinto para el envío de tareas y otro para el intercambio de streaming, configurados por réplica en `<remote_servers>` con `stateless_worker_port` y `streaming_exchange_port`. Si no se establecen, se usan los puertos anteriores a nivel de server (`stateless_worker_client.port` y `distributed_query.streaming_exchange_port`). Esto permite ejecutar varios workers en un mismo host. [#107885](https://github.com/ClickHouse/ClickHouse/pull/107885) ([Alexander Gololobov](https://github.com/davenger)).
* Se añadió el algoritmo experimental de reordenación de join `dphyp` para inner joins como opción de la configuración `query_plan_optimize_join_order_algorithm`, así como la configuración `query_plan_optimize_join_order_max_searched_plans`, que limita la búsqueda del orden de join y recurre al siguiente algoritmo de la cadena cuando se supera ese límite; establézcala en `0` para mantener el comportamiento anterior de búsqueda sin límite. [#98798](https://github.com/ClickHouse/ClickHouse/pull/98798) ([Alexander Gololobov](https://github.com/davenger)).
* Se añadió la función `aiEmbed` para usar API de LLM y generar embeddings desde ClickHouse. [#102922](https://github.com/ClickHouse/ClickHouse/pull/102922) ([George Larionov](https://github.com/george-larionov)).
* Se añadió un canario experimental de Linux OOM: un proceso hijo de sacrificio al que el Linux OOM killer apunta antes que al proceso principal del server. Cuando se habilita con `oom_canary_enable`, alivia la presión de memoria purgando las cachés del asignador, cancelando consultas, cancelando merges y registrando un evento en `system.crash_log`. La respuesta al OOM requiere evidencia de OOM-kill en `memory.events` de cgroup v2. [#101942](https://github.com/ClickHouse/ClickHouse/pull/101942) ([Peng](https://github.com/fastio)).
* La interfaz de terminal web en `/webterminal` ahora es una funcionalidad lista para producción y está habilitada de forma predeterminada. Está controlada por la nueva configuración de server `enable_webterminal`; la antigua configuración `allow_experimental_webterminal` está obsoleta, pero sigue respetándose por compatibilidad con versiones anteriores. Para deshabilitar el endpoint, establezca `enable_webterminal` en `false`. [#106255](https://github.com/ClickHouse/ClickHouse/pull/106255) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los endpoints HTTP de PromQL ahora permiten especificar la base de datos y la tabla mediante query parameters de la URL (`database=`, `table=`, o `table=db.table`). Se eliminó el fallback implícito anterior a la tabla `default.prometheus`: si ni la configuración del handler ni la URL especifican una tabla, el handler ahora devuelve `The time series table name is not set`. Para mantener el comportamiento anterior, configure `<table>default.prometheus</table>` o pase `table=...` en la URL. [#107553](https://github.com/ClickHouse/ClickHouse/pull/107553) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se añadió soporte para la función `histogram_quantile` de PromQL en las Table functions `prometheusQuery` y `prometheusQueryRange`. Esto permite calcular cuantiles sobre buckets de histogramas clásicos de Prometheus identificados por la etiqueta `le`. [#103477](https://github.com/ClickHouse/ClickHouse/pull/103477) ([Joe Smith](https://github.com/Yasumoto)).
* Se añadió el modo diferido de aplicación de posting list para el índice de texto. Cuando se habilita mediante `SET allow_experimental_text_index_lazy_apply = 1` y `SET text_index_posting_list_apply_mode = 'lazy'`, las posting lists se decodifican bajo demanda con granularidad de bloque empaquetado mediante un enfoque basado en cursores, en lugar de materializarse por completo en Roaring Bitmaps, lo que reduce el uso de memoria y el tiempo de CPU en las consultas sobre índice de texto selectivas. [#100035](https://github.com/ClickHouse/ClickHouse/pull/100035) ([Peng](https://github.com/fastio)).
* Se agregó compatibilidad con la ABI de [AssemblyScript](https://www.assemblyscript.org) para UDFs de WebAssembly. Puede probar la ABI de AssemblyScript sin instalar la cadena de herramientas localmente usando el [playground](https://pastila.nl/?0009878e/b9768c4e2144d0c2f3dd512e7a1aaf69.html) en el navegador, que compila código de AssemblyScript y carga el módulo de WebAssembly resultante en ClickHouse local. [#104606](https://github.com/ClickHouse/ClickHouse/pull/104606) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Ahora se pueden adjuntar handler de Prometheus en el puerto HTTP principal con un prefijo opcional. [#104975](https://github.com/ClickHouse/ClickHouse/pull/104975) ([James Cunningham](https://github.com/JTCunning)).
* Se agregó una configuración experimental de `MergeTree`, `packed_skip_index_max_bytes`, que agrupa substreams pequeños de índices de omisión en un único archivo `skp_idx.packed` por parte, lo que reduce la presión sobre los inodos cuando se definen muchos índices de omisión en una tabla. La decisión se toma por substream en el momento de la escritura: los substreams cuyo tamaño serializado se mantiene por debajo del umbral se incluyen en el archivo; los de mayor tamaño conservan el layout independiente `skp_idx_<name>.idx2` / `.mrk2`. Una misma parte puede mezclar layouts. Los índices de texto completo no son compatibles y siempre se almacenan por archivo. El valor predeterminado es 0 (empaquetado deshabilitado). [#105321](https://github.com/ClickHouse/ClickHouse/pull/105321) ([Raúl Marín](https://github.com/Algunenano)).
* Se admite la serialización `Buffers` para UDFs de WebAssembly con `ABI BUFFERED_V1`, y se agrega `webassembly_udf_enable_fuel` como una configuración persistente para funciones UDF de WASM. [#105574](https://github.com/ClickHouse/ClickHouse/pull/105574) ([Antonio Andelic](https://github.com/antonio2368)).
* Se agrega una configuración experimental `use_reader_executor` (desactivada de forma predeterminada) que dirige las lecturas a un nuevo `ReaderExecutor` basado en pipeline en lugar de la cadena heredada de read buffers. [#106570](https://github.com/ClickHouse/ClickHouse/pull/106570) ([Sema Checherinda](https://github.com/CheSema)). Se agregaron métricas de observabilidad para la ruta de lectura experimental `use_reader_executor`, incluido un KPI modelado de costo de lectura (`ReaderExecutorModeledCostMsPerRequestedMiB`). [#106968](https://github.com/ClickHouse/ClickHouse/pull/106968) ([Sema Checherinda](https://github.com/CheSema)). Se introdujo el búfer `ChainedBuffers` detrás de la ruta de lectura experimental `use_reader_executor`, con la métrica `ReaderExecutorChainedBufferBytes`. [#107210](https://github.com/ClickHouse/ClickHouse/pull/107210) ([Sema Checherinda](https://github.com/CheSema)).
* El orden descendente en las sorting keys de `MergeTree` (por ejemplo, `ORDER BY (time DESC, key)`) ahora siempre es compatible y ya no requiere la configuración experimental `allow_experimental_reverse_key`, que quedó obsoleta. [#106440](https://github.com/ClickHouse/ClickHouse/pull/106440) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `Nullable(Tuple(...))` ahora es Beta. Está deshabilitado de forma predeterminada; establezca `enable_nullable_tuple_type = 1` para usarlo. [#107754](https://github.com/ClickHouse/ClickHouse/pull/107754) ([Nihal Z. Miaji](https://github.com/nihalzp)).

<div id="268-performance-improvement">
  #### Mejora del rendimiento
</div>

* Varios cambios en Keeper lo hacen, en conjunto, aproximadamente 2 veces más rápido (mejor procesamiento por lotes, canalización de mensajes al líder y canalización de escrituras en el log). [#101757](https://github.com/ClickHouse/ClickHouse/pull/101757) ([Michael Kolupaev](https://github.com/al13n321)).
* Reduce la sobrecarga por consulta en consultas `SELECT` simples (análisis sintáctico, análisis y planificación). Por ejemplo, `SELECT count() FROM hits` desde una sola conexión es aproximadamente un 50 % más rápido. [#104513](https://github.com/ClickHouse/ClickHouse/pull/104513) ([Raúl Marín](https://github.com/Algunenano)).
* Optimiza el análisis del índice de clave primaria para claves primarias largas y de alta cardinalidad. En una clave primaria larga, el tiempo de ejecución del análisis del índice ahora depende principalmente de la complejidad del filtro de la consulta (las columnas clave que realmente utiliza), no de la longitud de la clave primaria; por tanto, ampliar la clave de ordenación añade una sobrecarga prácticamente insignificante al análisis del índice en consultas que filtran solo por unas pocas de sus columnas. En una clave primaria de alta cardinalidad, donde ClickHouse mantiene en memoria solo un prefijo selectivo de las columnas clave y no carga las columnas finales, el análisis del índice ahora trabaja únicamente con ese prefijo en memoria en lugar de con la clave completa. La optimización está habilitada de forma predeterminada y puede desactivarse con la nueva configuración `use_lightweight_primary_key_index_analysis`. Cierra [#65103](https://github.com/ClickHouse/ClickHouse/issues/65103). [#91836](https://github.com/ClickHouse/ClickHouse/pull/91836) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* La build x86 predeterminada ahora tiene como objetivo x86-64-v3 (AVX2) en lugar de x86-64-v2 (SSE4.2). Esto requiere una CPU compatible con AVX2 (Intel Haswell o posterior, AMD Excavator o posterior). Si tu CPU no es compatible con AVX2, usa la build `amd64compat`, que apunta a x86-64 básico. [#105019](https://github.com/ClickHouse/ClickHouse/pull/105019) ([Raúl Marín](https://github.com/Algunenano)).
* Usa `ipnsort` y `driftsort` (ordenación estable), versiones portadas a C++ de las implementaciones de ordenación de la biblioteca estándar de Rust, para las ordenaciones de propósito general basadas en comparación. Acelera `ORDER BY` en columnas no numéricas y las ordenaciones estables, y elimina un caso desfavorable con entradas ordenadas en orden inverso. [#106650](https://github.com/ClickHouse/ClickHouse/pull/106650) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Nueva optimización de `GROUP BY` para claves de alta cardinalidad distribuidas uniformemente, que reparte las filas entre hilos aplicando hash a la clave de agrupación, de modo que cada hilo agrega un subconjunto disjunto de claves sin fase de merge. Establece `enable_sharding_aggregator = 1` para habilitarla. [#104233](https://github.com/ClickHouse/ClickHouse/pull/104233) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Habilita el prefetching de tablas hash para consultas `GROUP BY` con claves de tipo cadena, lo que mejora en \~8 % el rendimiento de la agregación de cadenas de alta cardinalidad. [#101007](https://github.com/ClickHouse/ClickHouse/pull/101007) ([Le Zhang](https://github.com/damahua)).
* Se redujo el uso máximo de memoria al fusionar resultados parciales de agregación de dos niveles con estados de agregación grandes (por ejemplo, `groupArray`), liberando de forma incremental los estados de origen de cada bucket durante el merge en lugar de mantenerlos todos activos hasta completarlo. [#102330](https://github.com/ClickHouse/ClickHouse/pull/102330) ([Yuri Fedoseev](https://github.com/yurifedoseev)).
* Se optimizó la representación en memoria de `Enum` `DataType`. La huella de memoria de las tablas que incluyen el tipo `Enum` puede mejorar hasta 10 veces para el componente `Enum`. El tiempo necesario para recuperar el nombre a partir del valor (número) es similar o menor. La búsqueda por nombre es ligeramente más lenta, pero este patrón de acceso es menos habitual. [#95668](https://github.com/ClickHouse/ClickHouse/pull/95668) ([Ilya Yatsishin](https://github.com/qoega)).
* Agrega almacenamiento en caché para la resolución de identificadores, evitando resoluciones duplicadas durante el análisis de consultas. [#88043](https://github.com/ClickHouse/ClickHouse/pull/88043) ([Max Justus Spransy](https://github.com/maxjustus)).
* Mejora el rendimiento del análisis de consultas sobre tablas con muchas columnas: evita calcular los hashes de los nodos de columna (que incluyen toda la expresión de la tabla de origen) cuando no es necesario. El análisis de subconsultas `SELECT *` anidadas sobre una tabla con \~1200 columnas ahora es unas 50 veces más rápido. [#106957](https://github.com/ClickHouse/ClickHouse/pull/106957) ([Dmitry Novik](https://github.com/novikd)).
* Se aceleró el análisis de consultas con muchas llamadas a funciones o con llamadas a funciones profundamente anidadas al eliminar un hash redundante del árbol de consultas de la caché de resolución de funciones. [#107516](https://github.com/ClickHouse/ClickHouse/pull/107516) ([Dmitry Novik](https://github.com/novikd)).
* Se corrigieron las largas pausas al iniciar sesión y al arrancar consultas con almacenamiento de acceso replicado cuando muchas entidades de acceso (políticas de fila, roles, cuotas y perfiles de configuración) cambian a la vez. Ahora, cada caché por entidad se vuelve a calcular una vez por batch de notificaciones en lugar de una vez por cada entidad modificada, lo que elimina el trabajo cuadrático que podía mantener bloqueado el acceso durante minutos. [#107672](https://github.com/ClickHouse/ClickHouse/pull/107672) ([Azat Khuzhin](https://github.com/azat)).
* Comparte el `FixedHashMap` del hash join como filtro en tiempo de ejecución de JOIN en el lado de sondeo. Cuando la tabla hash del lado de construcción es (o puede convertirse en) un `FixedHashMap`, se publica como filtro en tiempo de ejecución y sustituye al `Set`/`BloomFilter` que `BuildRuntimeFilterStep` instalaría de otro modo. Se controla con el nuevo setting `join_runtime_filter_from_fixed_hash_table` (valor predeterminado: `true`). [#105640](https://github.com/ClickHouse/ClickHouse/pull/105640) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Aplicación diferida de los índices de selector y replicación en caso de `JOIN` seguido de un `LIMIT` selectivo, `TopN` u otro `JOIN`. Para controlar el número de columnas de carga útil necesario para habilitar los índices de selector diferidos, use el setting `query_plan_min_columns_for_join_lazy_indexing` (0 significa que la optimización está deshabilitada). Para controlar el `LIMIT` a partir del cual se aplica la optimización, use el setting `query_plan_max_limit_for_join_lazy_indexing`. [#106566](https://github.com/ClickHouse/ClickHouse/pull/106566) ([Hechem Selmi](https://github.com/m-selmi)).
* La reordenación de JOIN mediante DP (programación dinámica) ahora está permitida con réplicas paralelas. [#105889](https://github.com/ClickHouse/ClickHouse/pull/105889) ([Nikita Taranov](https://github.com/nickitat)).
* Se mejoró el plan de consulta cuando JOIN usa Runtime Filters (`enable_join_runtime_filters`, activado de forma predeterminada): el modelo de costes de reordenación de join ahora atraviesa `WindowTransform` (y otros pasos del plan que preservan filas) en el subárbol derecho y usa el recuento de filas subyacente y el NDV por columna en lugar de asumir que no hay estadísticas. [#107229](https://github.com/ClickHouse/ClickHouse/pull/107229) ([UnamedRus](https://github.com/UnamedRus)).
* Desvirtualiza la emisión de filas no emparejadas en RIGHT y FULL join agrupándolas en batch. [#105679](https://github.com/ClickHouse/ClickHouse/pull/105679) ([Hechem Selmi](https://github.com/m-selmi)).
* Admite métodos `keys32` y `keys64` packed en `HashJoin`. [#107202](https://github.com/ClickHouse/ClickHouse/pull/107202) ([Nikita Taranov](https://github.com/nickitat)).
* Admite métodos `keys32` y `keys64` packed en `Set`. [#107564](https://github.com/ClickHouse/ClickHouse/pull/107564) ([Nikita Taranov](https://github.com/nickitat)).
* Manejo más eficiente de columnas Nullable en aggregation. [#106015](https://github.com/ClickHouse/ClickHouse/pull/106015) ([Nikita Taranov](https://github.com/nickitat)).
* Mejora el rendimiento de las consultas `LIMIT BY`. [#103349](https://github.com/ClickHouse/ClickHouse/pull/103349) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Acelera las consultas `ORDER BY ... LIMIT BY` ejecutando `LIMIT BY` dentro de cada flujo ordenado en paralelo durante `Sort` cuando las columnas de `LIMIT BY` son un prefijo de `ORDER BY`. Esto reduce el número de filas que pasan por la fusión de ordenación final y por cualquier etapa posterior del pipeline. Esta optimización está controlada por la nueva configuración `query_plan_push_limit_by_into_sort` (habilitada de forma predeterminada). [#104000](https://github.com/ClickHouse/ClickHouse/pull/104000) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Acelera las consultas `SELECT ... LIMIT N BY <cols>` cuando `<cols>` son un prefijo de la clave de ordenación de la tabla, o pasan a serlo después de que `WHERE col = const` fije las columnas iniciales. Con esta opción habilitada, `MergeTree` lee los datos en orden de clave primaria y `LIMIT BY` primero filtra en modo streaming con memoria O(1) por flujo ordenado, lo que descarta la mayor parte de los datos; después, ejecuta `LIMIT BY` normal sobre los datos reducidos para obtener el resultado final. Está controlado por la nueva configuración `optimize_limit_by_in_order` (habilitada de forma predeterminada). [#105135](https://github.com/ClickHouse/ClickHouse/pull/105135) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Acelera las consultas `LIMIT BY` en tablas `MergeTree` particionadas ejecutando `LIMIT BY` dentro del flujo de cada partición en paralelo, en lugar de fusionar todos los flujos en uno antes de aplicar el límite. Esto se aplica cuando la expresión de partición es una función determinista de las columnas de `LIMIT BY`, de modo que ningún grupo de `LIMIT BY` pueda abarcar dos particiones. Está controlado por la nueva configuración `allow_limit_by_partitions_independently` (habilitada de forma predeterminada). [#105126](https://github.com/ClickHouse/ClickHouse/pull/105126) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Acelera las consultas `LIMIT BY` eliminando expresiones de clave redundantes: se descarta una clave que sea una función determinista de las demás claves (p. ej., `LIMIT 5 BY x, f(x)` pasa a ser `LIMIT 5 BY x`) y una función inyectiva de una clave se sustituye por su argumento (p. ej., `LIMIT 5 BY toString(x)` pasa a ser `LIMIT 5 BY x`). Esto hace que se evalúen menos expresiones, y más baratas, por fila. Está controlado por las nuevas configuraciones `optimize_limit_by_function_keys` y `optimize_injective_functions_in_limit_by`, ambas habilitadas de forma predeterminada. [#106818](https://github.com/ClickHouse/ClickHouse/pull/106818) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Acelera la agregación por segmentos, la distribución en buckets de joins `grace_hash` y la partición de ventanas en paralelo reemplazando el hash por columna y por fragmento con un kernel que usa CRC32C por hardware. [#106538](https://github.com/ClickHouse/ClickHouse/pull/106538) ([Harikrishnan Prabakaran](https://github.com/harikrishnan94)).
* Optimiza `L1Distance`, `L2Distance`, `L2SquaredDistance`, `LinfDistance` y `cosineDistance` para argumentos de tipo Array con vectorización automática multidestino en x86-64-v4/v3. Para argumentos Array no constantes, ahora todos ellos excepto `LpDistance`, que usa `std::pow` con un exponente en tiempo de ejecución, pueden usar kernels vectorizados por el compilador. Se conservan las rutas rápidas existentes para argumentos constantes con AVX-512 y `BFloat16` de Sapphire Rapids en `L2Distance` y `cosineDistance`. [#101310](https://github.com/ClickHouse/ClickHouse/pull/101310) ([Peng](https://github.com/fastio)).
* Se mejoró el rendimiento de las funciones `{Norm}Distance` y `dotProduct`. [#106007](https://github.com/ClickHouse/ClickHouse/pull/106007) ([Nikita Taranov](https://github.com/nickitat)).
* Se mejoró el rendimiento de la función `arrayNorm`. [#106211](https://github.com/ClickHouse/ClickHouse/pull/106211) ([Nikita Taranov](https://github.com/nickitat)).
* El rendimiento de `dotProduct` mejoró en algunos casos. [#106210](https://github.com/ClickHouse/ClickHouse/pull/106210) ([Nikita Taranov](https://github.com/nickitat)).
* Se mejoró el rendimiento de las rutas const-left de AVX-512 para `L2Distance` y `cosineDistance` en `Array(Float32)`, `Array(Float64)` y `Array(BFloat16)` cuando la longitud del array es divisible exactamente por el ancho del procesamiento vectorizado. [#104625](https://github.com/ClickHouse/ClickHouse/pull/104625) ([Sergey Kuznetsov](https://github.com/skuznetsov)).
* Se habilitó la generación de código AVX-512 para AMD y se mejoró la generación de código para `arrayDistance`. [#106505](https://github.com/ClickHouse/ClickHouse/pull/106505) ([Nikita Taranov](https://github.com/nickitat)).
* Se mejoró el rendimiento de las funciones `L2DistanceTransposed` y `cosineDistanceTransposed` para el tipo de dato `QBit`. [#106701](https://github.com/ClickHouse/ClickHouse/pull/106701) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se mejoró el rendimiento de las funciones `encrypt`, `decrypt`, `tryDecrypt`, `aes_encrypt_mysql` y `aes_decrypt_mysql` hasta en un orden de magnitud, recuperando el rendimiento perdido en la migración de BoringSSL a OpenSSL 3.x (24.4). [#107339](https://github.com/ClickHouse/ClickHouse/pull/107339) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se mejoró el rendimiento de las funciones `encrypt`, `decrypt` y `halfMD5` al evitar búsquedas implícitas del proveedor de OpenSSL por fila en OpenSSL 3.x. [#99105](https://github.com/ClickHouse/ClickHouse/pull/99105) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se añadió una implementación SIMD de `SHA1` que calcula el hash de múltiples entradas en paralelo con AVX-512, lo que mejora el rendimiento. [#105459](https://github.com/ClickHouse/ClickHouse/pull/105459) ([Joanna Hulboj](https://github.com/jh0x)).
* Se añadió un backend AArch64 ASIMD/NEON para la implementación de `MD5` con múltiples búferes. [#105563](https://github.com/ClickHouse/ClickHouse/pull/105563) ([Venkata  Vineel ](https://github.com/vyalamar)).
* Se compactan los bloques de origen antes de calcular la proyección durante `MATERIALIZE PROJECTION` para reducir el número de partes de proyección temporales y la sobrecarga de las fusiones. \~3,4x más rápido en una tabla de 50 millones de filas. [#100047](https://github.com/ClickHouse/ClickHouse/pull/100047) ([Amos Bird](https://github.com/amosbird)).
* Se redujo la latencia de `INSERT` para las tablas `MergeTree` con índices de omisión en columnas `ORDER BY` al evitar permutaciones redundantes de columnas durante la escritura de partes (\~17 % en cargas de trabajo de tipo trazas). [#101101](https://github.com/ClickHouse/ClickHouse/pull/101101) ([Amos Bird](https://github.com/amosbird)).
* Se habilitaron las rutas de código SIMD de Arrow's (NEON en ARM, SSE4.2/AVX2/AVX512 en x86) y se utilizaron para acelerar la decodificación de columnas Parquet `FLOAT`/`DOUBLE` codificadas con `BYTE_STREAM_SPLIT`. [#106376](https://github.com/ClickHouse/ClickHouse/pull/106376) ([Raúl Marín](https://github.com/Algunenano)).
* Se mejoró el rendimiento de inserción para columnas `LowCardinality` con índices `bloom_filter`. [#106410](https://github.com/ClickHouse/ClickHouse/pull/106410) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Se paralelizaron las copias de blobs en `DiskObjectStorageTransaction::copyFile` mediante un pool de hilos por disco. [#105089](https://github.com/ClickHouse/ClickHouse/pull/105089) ([Asya Shneerson](https://github.com/asya-ch)).
* Se evitó leer el contenido de los archivos al usar el formato de entrada `One` con funciones de tabla de tipo archivo como `file` y `s3`. [#105157](https://github.com/ClickHouse/ClickHouse/pull/105157) ([Yue Ni](https://github.com/niyue)).
* Se aceleró el arranque de `clickhouse` en macOS aproximadamente 3x al no exportar símbolos dinámicos, que de otro modo el enlazador dinámico procesaría en cada inicio. [#107768](https://github.com/ClickHouse/ClickHouse/pull/107768) ([Raúl Marín](https://github.com/Algunenano)).
* Se acelera la carga de la filesystem cache al iniciar al evitar una apertura redundante del directorio por cada clave de caché. [#107414](https://github.com/ClickHouse/ClickHouse/pull/107414) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se acelera la carga de la filesystem cache al iniciar permitiendo que los hilos que listan directorios ayuden a cargar los metadatos de la caché una vez finalizado el listado, en lugar de dejar inactiva a la mitad de los hilos. [#107416](https://github.com/ClickHouse/ClickHouse/pull/107416) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se redujo la sobrecarga de inicio del proceso `clickhouse` al actualizar la library WasmEdge incluida, que ya no genera un hash secreto aleatorio en un inicializador global en cada arranque. [#107869](https://github.com/ClickHouse/ClickHouse/pull/107869) ([Raúl Marín](https://github.com/Algunenano)).
* La primary key de `MergeTree` y los skip indexes ahora pueden descartar granules para filters en los que `ifNull` o `coalesce` envuelven una condición, como `ifNull(key = 0, 0)` o `coalesce(key = 0, 0)`. Estos predicates —a menudo generados por generadores de consultas para convertir una comparación posiblemente `NULL` en un valor booleano definido— antes eran opacos para el análisis de índices y no podían omitir granules. Esto amplía la configuración existente `allow_key_condition_coalesce_rewrite` (habilitada de forma predeterminada). Cierra [#106264](https://github.com/ClickHouse/ClickHouse/issues/106264). [#106272](https://github.com/ClickHouse/ClickHouse/pull/106272) ([Andy Zhao](https://github.com/andyzzhao)).
* La evaluación de skip index sobre tipos `DateTime64` debería consumir menos CPU en la versión 26.6. [#107707](https://github.com/ClickHouse/ClickHouse/pull/107707) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Se mejoró el rendimiento del análisis de text index en búsquedas de varios tokens optimizando el manejo de tokens poco frecuentes. [#98226](https://github.com/ClickHouse/ClickHouse/pull/98226) ([Anton Popov](https://github.com/CurtizJ)).
* Se usa una caché para los segments comprimidos de las listas de postings del text index. [#106299](https://github.com/ClickHouse/ClickHouse/pull/106299) ([Anton Popov](https://github.com/CurtizJ)).
* Se mejoró el rendimiento de la búsqueda de exclusión genérica para consultas que seleccionan grandes rangos consecutivos de la tabla. [#93813](https://github.com/ClickHouse/ClickHouse/pull/93813) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Los client `S3` con el mismo endpoint y bucket comparten una caché, lo que evita el descubrimiento duplicado de regiones. Cierra [#92482](https://github.com/ClickHouse/ClickHouse/issues/92482). [#96802](https://github.com/ClickHouse/ClickHouse/pull/96802) ([Andrey Zvonov](https://github.com/zvonand)).
* Si una consulta contiene `has(<constant array>, <expr>)`, el analyzer transformará el nodo para usar una implementación de `in` más rápida si es viable hacerlo. [#97341](https://github.com/ClickHouse/ClickHouse/pull/97341) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Cuando se programa un nuevo job en `ThreadPool`, se activa el worker thread inactivo más reciente (LIFO) en lugar de uno arbitrario. Esto reduce la fragmentación de memoria causada por las cachés de allocator por hilo. El orden en que se procesan los jobs no cambia. [#100177](https://github.com/ClickHouse/ClickHouse/pull/100177) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se mejoró el rendimiento de los Runtime Filters aproximados y de los Bloom filter indexes. [#100201](https://github.com/ClickHouse/ClickHouse/pull/100201) ([Christoph Viebig](https://github.com/cv4g)).
* Se permite que `ASOF JOIN` use el join algorithm `parallel_hash`, paralelizando la construcción entre distintos valores de clave de igualdad. Antes, `ASOF` quedaba excluido incondicionalmente de `parallel_hash`. [#105375](https://github.com/ClickHouse/ClickHouse/pull/105375) ([Greg Maher](https://github.com/gregakinman)).
* Se evita leer entradas no acotadas para consultas `INTERSECT` y `EXCEPT` cuando una entrada vacía permite saber de antemano que el resultado estará vacío. [#105393](https://github.com/ClickHouse/ClickHouse/pull/105393) ([Yue Ni](https://github.com/niyue)).
* Se añadió `constinit` para varios bloqueadores de `MemoryTracker`. [#105490](https://github.com/ClickHouse/ClickHouse/pull/105490) ([Azat Khuzhin](https://github.com/azat)).
* Se mejoró el rendimiento de `bitmapContains` para estados `groupBitmap` que no son `UInt64`, evitando llamadas repetidas a `rb_max` durante las comprobaciones de rango. [#105960](https://github.com/ClickHouse/ClickHouse/pull/105960) ([Yue Ni](https://github.com/niyue)).
* Consultas discontinuas más rápidas para columnas `LowCardinality` respaldadas por un único diccionario. [#103662](https://github.com/ClickHouse/ClickHouse/pull/103662) ([Ivan Babrou](https://github.com/bobrik)).
* Se añadió una ruta rápida para la fase de probe de `HashJoin` cuando el bloque tiene una sola fila. [#106008](https://github.com/ClickHouse/ClickHouse/pull/106008) ([Nikita Taranov](https://github.com/nickitat)).
* Los predicados de consultas como `SELECT ... FROM view(SELECT ... FROM remote(...)) WHERE ... ` ahora se insertan en la consulta enviada al shard remoto. A la optimización `allow_push_predicate_ast_for_distributed_subqueries` le faltaba un caso para las funciones de tabla. [#105986](https://github.com/ClickHouse/ClickHouse/pull/105986) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `enable_join_transitive_predicates` ahora está activado de forma predeterminada. [#103724](https://github.com/ClickHouse/ClickHouse/pull/103724) ([Alexander Gololobov](https://github.com/davenger)).
* Se añadió compatibilidad con las funciones `multiSearchAny`, `multiSearchAnyUTF8` y `multiMatchAny` en índices de texto. También se mejoró el análisis de índices de texto para la función `match`: ahora los patrones con grupos alternativos pueden omitir más gránulos. [#106279](https://github.com/ClickHouse/ClickHouse/pull/106279) ([Anton Popov](https://github.com/CurtizJ)).
* Se permite que los filtros introducidos después de la selección PREWHERE inicial (predicate pushdown, runtime filters o un PREWHERE explícito más un WHERE establecido por el planificador) se fusionen con el PREWHERE existente en una segunda pasada del optimizador, en lugar de permanecer como un paso Filter independiente sobre la lectura de `MergeTree`. [#105445](https://github.com/ClickHouse/ClickHouse/pull/105445) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* `QueryConditionCache` ahora registra individualmente los gránulos descartados por filtrado, incluso dentro de lotes de lectura que solo pasan PREWHERE de forma parcial, lo que reduce el número de marcas releídas por consultas posteriores con la misma condición. [#105335](https://github.com/ClickHouse/ClickHouse/pull/105335) ([Han Fei](https://github.com/hanfei1991)).
* Se añadió la configuración de Keeper `nuraft_use_bg_thread_for_snapshot_io`, activada de forma predeterminada, para que `NuRaft` lea objetos de snapshot desde un hilo en segundo plano en lugar de desde los hilos de trabajo de Raft. [#106285](https://github.com/ClickHouse/ClickHouse/pull/106285) ([Antonio Andelic](https://github.com/antonio2368)).
* Se reduce el uso máximo de memoria al aplicar snapshots recibidos en ClickHouse Keeper con `KeeperMemoryStorage`. [#105851](https://github.com/ClickHouse/ClickHouse/pull/105851) ([Antonio Andelic](https://github.com/antonio2368)).
* Las allocations de LLVM/JIT ahora se enrutan a una arena dedicada de jemalloc. Esto reduce la fragmentación de RSS causada por intercalar la contabilidad de JIT de larga duración con allocations de consultas de corta duración. Añade nuevas métricas asíncronas `jemalloc.jit_arena.active_bytes`, `jemalloc.jit_arena.dirty_bytes`, `CompiledExpressionCacheBytesMax` y `CompiledExpressionCacheCountMax` para la observabilidad. `SYSTEM DROP COMPILED EXPRESSION CACHE` ahora también elimina las instancias subyacentes de CHJIT y purga la arena de JIT. [#104113](https://github.com/ClickHouse/ClickHouse/pull/104113) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige la reserva excesiva de memoria al leer columnas `Nullable(String)` dispersas y codificadas con diccionario desde `Parquet` con el lector nativo V3. [#102805](https://github.com/ClickHouse/ClickHouse/pull/102805) ([Francisco](https://github.com/Milias)).
* Se corrigió que `CREATE TABLE ... CLONE AS (and REPLACE / ATTACH PARTITION ... FROM)` en discos cifrados copiara los datos en lugar de crear hardlinks. [#106731](https://github.com/ClickHouse/ClickHouse/pull/106731) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Se mejoró la estimación de cardinalidad en el optimizador del plan de consulta: una columna producida por una función determinista de un solo argumento (p. ej., `toYear(date)`) ahora hereda, como límite superior, el número de valores distintos de su argumento en lugar de quedar sin estadísticas, lo que permite una reordenación de `join` más precisa. [#107757](https://github.com/ClickHouse/ClickHouse/pull/107757) ([Alexander Gololobov](https://github.com/davenger)).
* Se redujo la sobrecarga de CPU del registro asíncrono con altas tasas de logs al notificar al consumidor de logs solo en la transición de cola vacía a cola no vacía, en lugar de hacerlo en cada mensaje. [#107352](https://github.com/ClickHouse/ClickHouse/pull/107352) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Se eliminaron cálculos duplicados durante la ejecución de consultas en más casos. [#106113](https://github.com/ClickHouse/ClickHouse/pull/106113) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se paralelizó el procesamiento del resultado de una CTE recursiva: una operación `GROUP BY` u otra operación sobre un resultado grande de `WITH RECURSIVE` ya no está limitada a un solo hilo. [#107694](https://github.com/ClickHouse/ClickHouse/pull/107694) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se mejoró el rendimiento de la búsqueda de subcadenas sin distinguir entre mayúsculas y minúsculas (`positionCaseInsensitiveUTF8`, `ILIKE`, `multiSearchAnyCaseInsensitiveUTF8` y funciones relacionadas) al añadir una ruta SIMD NEON en ARM y un kernel AVX2 más amplio en x86. [#107882](https://github.com/ClickHouse/ClickHouse/pull/107882) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió una regresión de \~16 % en el rendimiento del códec `FPC` de coma flotante en ARM que se introdujo cuando sus tablas predictoras empezaron a usar `VectorWithMemoryTracking`. [#108182](https://github.com/ClickHouse/ClickHouse/pull/108182) ([Groene AI](https://github.com/groeneai)).

<div id="268-improvement">
  #### Mejora
</div>

* El `MemoryWorker` en segundo plano ahora actualiza periódicamente el límite estricto de memoria del server en función del uso actual de memoria y de la cantidad de memoria que el kernel informa como disponible, para que ClickHouse deje margen para otros procesos que se ejecutan en el mismo host. La fórmula es `(resident memory + system MemAvailable) * max_server_memory_usage_to_ram_ratio`. El mismo server setting `max_server_memory_usage_to_ram_ratio` controla tanto el límite al inicio como el ajuste dinámico; establézcalo en `0` para desactivar ambos. Para mantener solo el límite estático al inicio/recarga (el comportamiento de las versiones anteriores), establezca el nuevo server setting `memory_worker_dynamic_hard_limit` en `0`. [#104964](https://github.com/ClickHouse/ClickHouse/pull/104964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Compatibilidad con PostgreSQL client para C# en el protocolo `PostgreSQL`. Esto cierra [#18611](https://github.com/ClickHouse/ClickHouse/issues/18611). [#80785](https://github.com/ClickHouse/ClickHouse/pull/80785) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Las mutations ahora usan el analyzer. [#98884](https://github.com/ClickHouse/ClickHouse/pull/98884) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se añadió un control granular sobre la repetición de consultas en la CLI. La opción `--echo` ahora acepta un valor booleano opcional y funciona tanto en modo interactivo como en batch mode. Las nuevas opciones `--echo-formatted` y `--echo-query-id` controlan si las consultas repetidas se formatean y si se imprime `query_id`, respectivamente. La opción `--hilite`/`--highlight` ahora también controla el resaltado de las consultas repetidas. Como efecto secundario, `--echo` ahora es una opción con valor booleano, por lo que una consulta posicional situada justo después de un `--echo` sin valor se interpreta como su valor; use `--echo --query "..."` o `--echo=false` en su lugar. [#106191](https://github.com/ClickHouse/ClickHouse/pull/106191) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Compatibilidad con schema evolution junto con comprobaciones de consistencia concurrentes para catálogos de lago de datos. [#106102](https://github.com/ClickHouse/ClickHouse/pull/106102) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se permite cache disk para los table engines de datalake. [#102017](https://github.com/ClickHouse/ClickHouse/pull/102017) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Se corrigió la lectura de datos de table en databases de `DataLakeCatalog` con `catalog_type = 'onelake'` usando de forma predeterminada el endpoint Blob de OneLake (`.blob.fabric.microsoft.com`). Establezca `onelake_use_blob_endpoint = false` para mantener el comportamiento anterior del endpoint DFS (`.dfs.fabric.microsoft.com`). [#106843](https://github.com/ClickHouse/ClickHouse/pull/106843) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se actualizó el valor predeterminado del setting `persistent_processing_node_ttl_seconds` de `S3(Azure)Queue` de `1 hour` a `6 hours` (que representa el tiempo de limpieza debido a reinicios no limpios del service, etc.). El valor predeterminado anterior era adecuado para el ttl de los processing nodes, pero también se usa para el ttl del bloqueo del bucket, que puede mantenerse durante más tiempo; por lo tanto, 1 hora no era suficiente. [#106838](https://github.com/ClickHouse/ClickHouse/pull/106838) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se redujo el tamaño predeterminado de la metadata cache de `Iceberg` de 1 GB a 128 MB. [#106492](https://github.com/ClickHouse/ClickHouse/pull/106492) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se propaga el `query_id` de la tarea de streaming de `S3Queue` a los inserts de table dependientes. [#106494](https://github.com/ClickHouse/ClickHouse/pull/106494) ([Christoph Wurm](https://github.com/cwurm)).
* Se puebla `used_storages` en `system.query_log` con el nombre del storage engine al consultar tables mediante `DataLakeCatalog`. [#100706](https://github.com/ClickHouse/ClickHouse/pull/100706) ([Melvyn Peignon](https://github.com/melvynator)).
* Puede comprobar qué 'operation' y qué 'summary' tienen los snapshots de Iceberg. Es útil para pruebas y depuración. [#106246](https://github.com/ClickHouse/ClickHouse/pull/106246) ([Den Kalantaevskii](https://github.com/Diskein)).
* Completa de forma asíncrona la solicitud final de multipart upload de `S3` mediante el rastreador de tareas, para que pueda solaparse con la carga de la última parte en lugar de ejecutarse en serie durante la finalización. [#105487](https://github.com/ClickHouse/ClickHouse/pull/105487) ([Asya Shneerson](https://github.com/asya-ch)).
* Se añadieron cuatro nuevas configuraciones de tabla de `MergeTree` para controlar los parámetros predeterminados de los índices de texto: `text_index_dictionary_block_size`, `text_index_dictionary_block_frontcoding_compression`, `text_index_posting_list_block_size` y `text_index_posting_list_codec`. Estas configuraciones permiten ajustar el comportamiento de los índices de texto a nivel de tabla sin tener que especificar parámetros en cada definición de índice. Los argumentos explícitos por índice siguen teniendo prioridad. [#100626](https://github.com/ClickHouse/ClickHouse/pull/100626) ([Anton Popov](https://github.com/CurtizJ)).
* Permite que las projections sobrescriban configuraciones adicionales de `MergeTree` (compresión, formato de part, serialización), además de `index_granularity`, con una lista de configuraciones permitidas y su correspondiente validación. [#101170](https://github.com/ClickHouse/ClickHouse/pull/101170) ([Amos Bird](https://github.com/amosbird)).
* Añade las columnas `current_projection`, `current_projection_progress`, `projections_completed` y `projections_remaining` a `system.merges` para exponer el progreso de merge de las projections. [#102611](https://github.com/ClickHouse/ClickHouse/pull/102611) ([Amos Bird](https://github.com/amosbird)).
* Se corrigió `PREWHERE` con una subconsulta `IN` sobre columnas de la primary key que no usaba el primary key index para la poda de gránulos, lo que provocaba full table scans en lugar de leer solo los gránulos relevantes. [#102570](https://github.com/ClickHouse/ClickHouse/pull/102570) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* La función `h3PolygonToCells` ahora aplica el tamaño máximo de array a todos los polígonos de un `MultiPolygon`, valida los códigos de retorno de la biblioteca H3 subyacente y rechaza argumentos `MultiLineString` en lugar de devolver silenciosamente un resultado vacío. [#106399](https://github.com/ClickHouse/ClickHouse/pull/106399) ([Raúl Marín](https://github.com/Algunenano)).
* Añade una nueva tabla `system.keeper_snapshots`, solo para keeper, con información sobre snapshots locales de ClickHouse Keeper. [#105571](https://github.com/ClickHouse/ClickHouse/pull/105571) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Añade una nueva tabla `system.keeper_changelogs`, solo para keeper, con información sobre archivos changelog locales de ClickHouse Keeper (log de Raft). [#105617](https://github.com/ClickHouse/ClickHouse/pull/105617) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Añade una tabla `system.keeper_cluster`, solo para keeper. Contiene una fila por cada miembro del cluster de Raft, tal como lo ve el Keeper actual. [#105646](https://github.com/ClickHouse/ClickHouse/pull/105646) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Añade más eventos de perfil de Keeper (server-side + client-side) para watches. Cierra [#97703](https://github.com/ClickHouse/ClickHouse/issues/97703). [#105336](https://github.com/ClickHouse/ClickHouse/pull/105336) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se añadieron `coordination_settings` de Keeper para limitar la admisión de log entries no confirmadas de `NuRaft` y para el throttling del sondeo hacia atrás de append-entries. [#106108](https://github.com/ClickHouse/ClickHouse/pull/106108) ([Antonio Andelic](https://github.com/antonio2368)).
* Añade la configuración `enable_compression` para la table function `mysql`, el table engine `MySQL`, el database engine `MySQL`, el Diccionario `SOURCE(MYSQL)` y las named collections. Cuando está habilitada, ClickHouse negocia la compresión a nivel del protocolo MySQL para todos los datos transferidos a través de la conexión. [#103229](https://github.com/ClickHouse/ClickHouse/pull/103229) ([Bernard Lim](https://github.com/bernardlim)).
* Se redujo la latencia de cancelación de las consultas que se ejecutan a través del PostgreSQL wire protocol: `KILL QUERY` ahora interrumpe la serialización de salida dentro de un solo fragmento en lugar de esperar a que se envíe el fragmento completo al client. [#106535](https://github.com/ClickHouse/ClickHouse/pull/106535) ([Roman Vasin](https://github.com/rvasin)).
* Se redujo la latencia de cancelación de las consultas que se ejecutan a través del MySQL wire protocol: `KILL QUERY` ahora interrumpe la serialización de salida dentro de un solo fragmento en lugar de esperar a que se envíe el fragmento completo al client. [#107228](https://github.com/ClickHouse/ClickHouse/pull/107228) ([Roman Vasin](https://github.com/rvasin)).
* Se corrigió la lectura de la longitud de `auth_response` en el handshake de MySQL, donde un byte de longitud `>= 128` se interpretaba como un valor de varios gigabytes porque se leía como un `char` con signo. [#107384](https://github.com/ClickHouse/ClickHouse/pull/107384) ([uwezkhan](https://github.com/uwezkhan)).
* `MaterializedPostgreSQL` ahora asigna las columnas PostgreSQL `numeric(p, 0)` con precisión superior a 76 (p. ej., `numeric(78, 0)` usado para enteros de 256 bits) a `Int256` de ClickHouse en lugar de fallar con "Precision too big". Los valores que no caben en `Int256` se rechazan con un error claro. [#107431](https://github.com/ClickHouse/ClickHouse/pull/107431) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Envía una excepción al client cuando falla el establecimiento de la TCP connection. [#107317](https://github.com/ClickHouse/ClickHouse/pull/107317) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Los usuarios ahora pueden insertar campos `Fixed` de `Avro` para variantes de enteros de 8, 16, 32 y 64 bits. [#98139](https://github.com/ClickHouse/ClickHouse/pull/98139) ([Patrick Pichler](https://github.com/patrickpichler)).
* El format `AvroConfluent` ahora reintenta el Confluent Schema Registry HTTP client ante fallos transitorios (timeouts de transporte, conexión rechazada, errores de DNS, HTTP `5xx`/`408`/`429`) con backoff exponencial, en lugar de abortar el INSERT ante el primer fallo de red. Los nuevos Settings `format_avro_schema_registry_max_retries` (valor predeterminado `5`) y `format_avro_schema_registry_retry_initial_backoff_ms` (valor predeterminado `100`) controlan esta política. Los errores de validación del schema (HTTP `409`, JSON de Avro malformado) siguen siendo fatales. [#106661](https://github.com/ClickHouse/ClickHouse/pull/106661) ([Groene AI](https://github.com/groeneai)).
* Registra los privileges en `system.query_log.used_privileges` para todas las comprobaciones de acceso concedidas, incluidas las que pasan por la ruta `isGranted` que no lanza excepciones (`checkAccessWithFilter`). Antes, solo se registraban los privileges comprobados mediante entry points que sí lanzan excepciones (`checkAccess` / `checkGrantOption`), lo que hacía que `READ ON FILE` / `READ ON S3` / `READ ON AZURE` / `READ ON URL` fueran invisibles en el registro de auditoría para `DESCRIBE`, `CREATE TABLE AS` y consultas similares que usan table functions `file` / `s3` / `azure` / `url`. La aplicación del control de acceso no cambia. [#104693](https://github.com/ClickHouse/ClickHouse/pull/104693) ([Alexey Bakharew](https://github.com/alexbakharew)).
* Se añadieron las métricas asíncronas `TotalUncompressedBytesOfMergeTreeTables` y `TotalUncompressedBytesOfMergeTreeTablesSystem`, que informan del tamaño total sin comprimir de los datos almacenados en tablas de la familia MergeTree. [#106364](https://github.com/ClickHouse/ClickHouse/pull/106364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Añade el evento de perfil `GlobalMemoryLimitExceeded` para que los operadores puedan supervisar cuándo se alcanza el límite de memoria global del servidor. [#106466](https://github.com/ClickHouse/ClickHouse/pull/106466) ([Sacheendra Talluri](https://github.com/sacheendra)).
* Se rellenan los contadores `ExecutableUserDefinedFunction*` de `ProfileEvents` para las UDF `executable_pool`. El número de invocaciones por llamada, el tiempo total y el tiempo de espera en el grupo, la CPU y la memoria pico de los procesos hijo, y los bytes de stdin/stdout ahora son visibles en `system.query_log.ProfileEvents`. [#105010](https://github.com/ClickHouse/ClickHouse/pull/105010) ([Xu Jia](https://github.com/XuJia0210)) [#105618](https://github.com/ClickHouse/ClickHouse/pull/105618) ([Ilya Andreev](https://github.com/andreev-io)).
* Se añadieron las métricas asíncronas `ExecutableUserDefinedFunctionMemoryResidentBytes` y `ExecutableUserDefinedFunctionProcesses`, que informan de la memoria residente (`VmRSS`) y del número de procesos activos de las user-defined functions `executable` y `executable_pool`, incluidos los procesos descendientes y los workers inactivos del grupo. [#107300](https://github.com/ClickHouse/ClickHouse/pull/107300) ([Hanzi Jiang](https://github.com/HanziJiang)).
* Se añadieron tres métricas async solo para Linux — `MemoryThreadStacksCount`, `MemoryThreadStacksVirtual` y `MemoryThreadStacksResident` — que informan por separado de la memoria de pila de pthread con respecto al resto de la memoria anónima. Se habilitan mediante `asynchronous_metrics_enable_heavy_metrics`. Requiere Linux 5.17+ (`prctl(PR_SET_VMA_ANON_NAME)`) y que `/proc/self/smaps` sea legible; de lo contrario, las métricas no estarán disponibles y la limitación se notificará en `system.warnings`. [#106230](https://github.com/ClickHouse/ClickHouse/pull/106230) ([Raúl Marín](https://github.com/Algunenano)).
* Se exponen en macOS las métricas asíncronas `MemoryThreadStacks*` (tamaño residente/virtual y número de pilas de threads). [#107752](https://github.com/ClickHouse/ClickHouse/pull/107752) ([Raúl Marín](https://github.com/Algunenano)).
* Los motores de tabla ahora incluyen documentación integrada, que se puede inspeccionar mediante las nuevas columnas `description`, `syntax`, `examples`, `introduced_in` y `related` de la tabla `system.table_engines`. [#106177](https://github.com/ClickHouse/ClickHouse/pull/106177) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los motores de base de datos ahora incluyen documentación integrada, que se puede inspeccionar mediante las nuevas columnas `description`, `syntax`, `examples`, `introduced_in` y `related` de la tabla `system.database_engines`. [#106178](https://github.com/ClickHouse/ClickHouse/pull/106178) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los tipos de datos ahora incluyen documentación integrada, que se puede inspeccionar mediante las nuevas columnas `description`, `syntax`, `examples`, `introduced_in` y `related` de la tabla `system.data_type_families`. [#106180](https://github.com/ClickHouse/ClickHouse/pull/106180) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los formatos de entrada/salida ahora incluyen documentación integrada, que se puede inspeccionar mediante las nuevas columnas `description`, `examples`, `introduced_in` y `related` de la tabla `system.formats`. [#106181](https://github.com/ClickHouse/ClickHouse/pull/106181) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los combinadores de funciones de agregación ahora incluyen documentación integrada, que se puede inspeccionar mediante las nuevas columnas `description`, `syntax`, `examples`, `introduced_in` y `related` de la tabla `system.aggregate_function_combinators`. [#106185](https://github.com/ClickHouse/ClickHouse/pull/106185) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió la opción de línea de comandos `--chime` a `clickhouse-client`, `clickhouse-local` y al client integrado. Cuando una consulta finaliza (con éxito o con error) tras ejecutarse durante al menos N segundos, el client escribe el carácter de control ASCII `BEL` (`\x07`) en stderr. Los terminales deciden si emiten un sonido o un destello visual según las preferencias del usuario. Está habilitada de forma predeterminada con un umbral de 5 segundos; pase `--chime N` para usar un umbral personalizado o `--chime 0` para deshabilitarla. Cierra [#92718](https://github.com/ClickHouse/ClickHouse/issues/92718). [#104545](https://github.com/ClickHouse/ClickHouse/pull/104545) ([Groene AI](https://github.com/groeneai)).
* En `clickhouse-client`, cuando el terminal no admite el pegado entre corchetes, los saltos de línea incrustados de una consulta multilínea pegada ahora se integran en el mismo búfer de edición en lugar de pasar al prompt de continuación en cada línea. La consulta pegada permanece bajo un único prompt y las teclas de flecha permiten desplazarse entre sus líneas. Se trata de una mejora aplicada en la medida de lo posible, que depende del comportamiento típico del pegado con búfer TTY. [#104299](https://github.com/ClickHouse/ClickHouse/pull/104299) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Ahora también funciona con el resaltado de sintaxis desactivado (`--highlight 0`). [#106665](https://github.com/ClickHouse/ClickHouse/pull/106665) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añade control del paginador en runtime al estilo de MySQL para `clickhouse-client`/`clickhouse-local`. [#105706](https://github.com/ClickHouse/ClickHouse/pull/105706) ([Azat Khuzhin](https://github.com/azat)).
* `clickhouse-client` ahora respeta los terminales no UTF-8: cuando la codificación de caracteres del terminal no es UTF-8 (por ejemplo, con `LANG=C`), los formatos `Pretty` usan bordes de cuadrícula ASCII en lugar de imprimir caracteres Unicode de dibujo de cuadros que corromperían el terminal. [#106213](https://github.com/ClickHouse/ClickHouse/pull/106213) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se sanean las cadenas de visualización proporcionadas por el server en el manejo del paquete `Hello` de `clickhouse-client` (nombre del server, zona horaria, nombre para mostrar, patterns y mensajes de las reglas de contraseña) para que un server malicioso no pueda inyectar bytes que el client renderice literalmente, y se limita su tamaño para evitar una allocation sin límites. [#105243](https://github.com/ClickHouse/ClickHouse/pull/105243) ([Raúl Marín](https://github.com/Algunenano)).
* La web UI ahora muestra el resultado como una image cuando una consulta usa un output format de image como `FORMAT PNG`, en lugar de mostrar los bytes sin procesar como una table. [#107638](https://github.com/ClickHouse/ClickHouse/pull/107638) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añade la configuración `output_format_pretty_use_nbsp_for_padding` para renderizar el padding del diseño de tabla en los formatos `Pretty` de estilo tabla como `U+00A0` NO-BREAK SPACE cuando `output_format_pretty_grid_charset` es `UTF-8`. Esto ayuda a que la Output de `Pretty` copiada conserve la alineación de la table en herramientas que contraen los espacios normales. La configuración está desactivada de forma predeterminada, y la Output con juego de caracteres `ASCII` conserva los espacios normales. [#103559](https://github.com/ClickHouse/ClickHouse/pull/103559) ([Ashrith Bandla](https://github.com/ashrithb)).
* El script de instalación universal ahora también instala `clickhousectl` en `~/.local/bin` en Linux y macOS, con un enlace simbólico `chctl`. Establezca `CLICKHOUSE_ONLY=1` para omitirlo. [#105399](https://github.com/ClickHouse/ClickHouse/pull/105399) ([Alasdair Brown](https://github.com/sdairs)).
* Se corrigió un `Syntax error: Unterminated quoted string` espurio que podía producirse de forma intermitente al instalar ClickHouse mediante `curl https://clickhouse.com/ | sh` cuando ya existía un binario `clickhouse` en el directorio actual. [#106417](https://github.com/ClickHouse/ClickHouse/pull/106417) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la altura del panel izquierdo en la página `play.html` cuando el terminal web está abierto, para que el botón de alternancia del terminal en la parte inferior siga siendo visible. [#105087](https://github.com/ClickHouse/ClickHouse/pull/105087) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se evita seleccionar la única consulta en la web UI después de ejecutarla. [#105711](https://github.com/ClickHouse/ClickHouse/pull/105711) ([Joey Yu](https://github.com/itsjoeoui)).
* La web SQL UI ahora expande el editor de consultas cuando una consulta tiene como máximo un 30 % más de altura que la altura actual del editor. [#105713](https://github.com/ClickHouse/ClickHouse/pull/105713) ([Joey Yu](https://github.com/itsjoeoui)).
* En la interfaz web, dispone los iconos del menú inferior (Terminal web y GitHub) horizontalmente cuando el panel izquierdo está expandido, dando más espacio vertical a la lista de bases de datos y tablas. [#106427](https://github.com/ClickHouse/ClickHouse/pull/106427) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En la interfaz web (`play.html`), al pulsar `Escape` ahora se desactiva la celda seleccionada de la tabla de resultados. [#107777](https://github.com/ClickHouse/ClickHouse/pull/107777) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Mejoras en el panel de bases de datos de la interfaz web SQL (Play): un tooltip en el icono de la base de datos, un botón para ocultar el panel, nombres de bases de datos y tablas clicables en todo el ancho, y una corrección del cambio de ancho del panel cuando aparece la barra de desplazamiento. [#108013](https://github.com/ClickHouse/ClickHouse/pull/108013) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Añade una configuración del servidor (`min_allocation_size_to_throw_on_memory_limit`) para permitir que cualquier asignación lance `MEMORY_LIMIT_EXCEEDED`; esto debería ayudar a evitar OOM. [#105265](https://github.com/ClickHouse/ClickHouse/pull/105265) ([Azat Khuzhin](https://github.com/azat)).
* Permite la autenticación `NONE` para SSH (evita pedir contraseña a los usuarios `no_password`). [#105476](https://github.com/ClickHouse/ClickHouse/pull/105476) ([Azat Khuzhin](https://github.com/azat)).
* Restablece la lista de grupos suplementarios en `clickhouse su` antes de descartar privilegios, igualando el comportamiento de `/bin/su` y `sudo`. Antes, el proceso con privilegios descartados heredaba los grupos suplementarios del invocador. [#105247](https://github.com/ClickHouse/ClickHouse/pull/105247) ([Raúl Marín](https://github.com/Algunenano)).
* Añade compatibilidad con `BFloat16` para las funciones de predicado numérico (`isFinite`, `isNaN`). [#105391](https://github.com/ClickHouse/ClickHouse/pull/105391) ([Mohamed Hussain S](https://github.com/mohhddhassan)).
* Reduce el uso de memoria de los diccionarios de polígonos (`polygon_index_cell`, `polygon_index_each`) y hace que `system.dictionaries.bytes_allocated` refleje correctamente el índice de búsqueda que construyen. [#105431](https://github.com/ClickHouse/ClickHouse/pull/105431) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige los consumers del motor de tabla Kafka que seguían usando un intervalo de sondeo corto después de la asignación de particiones, para que vuelvan al `kafka_poll_timeout_ms` configurado y eviten sondeos vacíos excesivos, partes insertadas más pequeñas y sobrecarga adicional de merge tras los reequilibrios. [#100431](https://github.com/ClickHouse/ClickHouse/pull/100431) ([sugaf1204](https://github.com/sugaf1204)).
* Identifica las columnas por posición (en lugar de por nombre) al eliminar columnas no utilizadas en el query plan. Esto permite eliminar columnas no utilizadas cuando hay nombres de columna duplicados. [#100586](https://github.com/ClickHouse/ClickHouse/pull/100586) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* ClickHouse lanza una excepción adecuada cuando se intenta usar `table_readonly` con motores replicados, con un mejor manejo de excepciones para las consultas DDL (y `DatabaseReplicated`) relacionadas con esta configuración. [#100950](https://github.com/ClickHouse/ClickHouse/pull/100950) ([alesapin](https://github.com/alesapin)). `OPTIMIZE TABLE ... ON CLUSTER` y otras DDL ya no se bloquean cuando la tabla de destino tiene `table_readonly = 1`. La configuración ahora lanza un nuevo código de error específico, `TABLE_IS_PERMANENTLY_READ_ONLY`, que `DDLWorker` trata como no reintentable (distinto de `TABLE_IS_READ_ONLY`, transitorio, que surge durante desconexiones temporales de ZooKeeper en `ReplicatedMergeTree`). La configuración `table_readonly` ahora también se rechaza explícitamente para `ReplicatedMergeTree`, tanto durante la creación como mediante `ALTER MODIFY SETTING`. Seguimiento de [#97652](https://github.com/ClickHouse/ClickHouse/issues/97652). [#105109](https://github.com/ClickHouse/ClickHouse/pull/105109) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron las actualizaciones de la vista materializada actualizable que podían fallar con `UNKNOWN_TABLE` después de reemplazar la tabla de destino (por ejemplo, mediante `EXCHANGE TABLES` o eliminándola y volviéndola a crear): ahora la actualización resuelve la tabla de destino por nombre en lugar de depender de un UUID obsoleto. [#102724](https://github.com/ClickHouse/ClickHouse/pull/102724) ([Seva Potapov](https://github.com/seva-potapov)).
* Se añadió una configuración `wait_for_part_commit_in_dependent_materialized_views` (valor predeterminado: `false`). Cuando el `SELECT` de una vista materializada vuelve a leer de su propia tabla de origen (por ejemplo, mediante un `INNER JOIN` con el origen), la cascada podía omitir la fila que se estaba insertando en ese momento, porque la parte insertada solo se confirma después de que se ejecutan las vistas dependientes. Al habilitar esta configuración, la parte se confirma antes de que se activen las vistas dependientes, para que puedan ver la fila en tránsito, a costa de un menor paralelismo de inserción. [#105943](https://github.com/ClickHouse/ClickHouse/pull/105943) ([Elmi Ahmadov](https://github.com/ahmadov)).
* No ocultar errores fatales (p. ej., `MEMORY_LIMIT_EXCEEDED`) en `tryDeserialize`. [#106808](https://github.com/ClickHouse/ClickHouse/pull/106808) ([Azat Khuzhin](https://github.com/azat)).
* Comprobar de forma diferida el permiso `CREATE TEMPORARY TABLE` en `InverseDictionaryLookupPass`. [#107098](https://github.com/ClickHouse/ClickHouse/pull/107098) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige un error `ILLEGAL_TYPE_OF_ARGUMENT` en consultas distribuidas con `serialize_query_plan = 1` que contienen una lambda con un argumento constante (p. ej., `arrayMap(t -> t.2, ...)`). Las columnas constantes de los nodos `INPUT` de `ActionsDAG` ahora se conservan durante la serialización del plan de consulta. [#107124](https://github.com/ClickHouse/ClickHouse/pull/107124) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La deserialización de los estados de las funciones de agregación `contingency`, `cramersV`, `cramersVBiasCorrected` y `theilsU` ahora valida que los recuentos almacenados formen una tabla de contingencia coherente y, de lo contrario, lanza una excepción `CORRUPTED_DATA`. Cierra [#106899](https://github.com/ClickHouse/ClickHouse/issues/106899). [#107185](https://github.com/ClickHouse/ClickHouse/pull/107185) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se conservan los códigos de error originales de las excepciones encapsuladas en `arrow::Status`. [#107267](https://github.com/ClickHouse/ClickHouse/pull/107267) ([Azat Khuzhin](https://github.com/azat)).
* Se admite `keyed_by_normalized_query_hash` para las cuotas definidas en la configuración estática del servidor (`users.xml`), en consonancia con la sintaxis DDL existente `CREATE QUOTA ... KEYED BY normalized_query_hash`. [#107654](https://github.com/ClickHouse/ClickHouse/pull/107654) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La configuración de compatibilidad ya no aplica configuraciones obsoletas, por lo que no las marca como modificadas ni genera advertencias de configuración obsoleta. [#107737](https://github.com/ClickHouse/ClickHouse/pull/107737) ([Maxim Orlovsky](https://github.com/UberDever)).
* Las inserciones asíncronas ya no registran la lista completa de `query_id` en el nivel `trace`/`debug`, lo que desde la versión 26.2 podía hacer que `text_log` creciera en exceso en servicios con mucho tráfico de inserciones asíncronas. Las líneas detalladas ahora están en el nivel `test`. [#107852](https://github.com/ClickHouse/ClickHouse/pull/107852) ([Sema Checherinda](https://github.com/CheSema)).
* Mejora de la caché del sistema de archivos: se evita que las entradas de prioridad invalidadas mantengan fijado `KeyMetadata`. Seguimiento de [#106387](https://github.com/ClickHouse/ClickHouse/pull/106387). [#107903](https://github.com/ClickHouse/ClickHouse/pull/107903) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Mejora de las métricas de `FileCache`. [#106116](https://github.com/ClickHouse/ClickHouse/pull/106116) ([Kseniia Sumarokova](https://github.com/kssenii)).
* No se imprime el preámbulo "Seguimiento de pila (al copiar este mensaje, incluya siempre las líneas siguientes):" en los mensajes de excepción cuando el seguimiento de pila está realmente vacío. [#106524](https://github.com/ClickHouse/ClickHouse/pull/106524) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un posible desbordamiento en `roundUpToMultiple` al calcular la alineación de límites de la filesystem cache para desplazamientos muy grandes. [#92579](https://github.com/ClickHouse/ClickHouse/pull/92579) ([Bharat Nallan](https://github.com/bharatnc)).
* `EXPLAIN SYNTAX` ahora formatea los operadores como llamadas a función de forma coherente en la salida de explicación (por ejemplo, `plus(1, 2)` en lugar de `1 + 2`). [#94681](https://github.com/ClickHouse/ClickHouse/pull/94681) ([Mohamed Abdelhalim ](https://github.com/1abdelhalim)).
* Se mejoraron las sugerencias de nombres de tablas en los mensajes de error: ya no se sugiere exactamente el mismo nombre y ahora se incluye el nombre de la base de datos en la sugerencia (p. ej., "¿Quizá quiso decir `other_db.my_table`?"). [#95116](https://github.com/ClickHouse/ClickHouse/pull/95116) ([Mathuranath Metivier](https://github.com/matt-metivier)).
* Se mejoró el mensaje de error para identificadores no resueltos en consultas sin cláusula `FROM`, sugiriendo añadir una. [#101769](https://github.com/ClickHouse/ClickHouse/pull/101769) ([Yash ](https://github.com/Onyx2406)).
* Añade la opción `EXPLAIN PIPELINE` para compactar chains de processors repetidas. [#104662](https://github.com/ClickHouse/ClickHouse/pull/104662) ([Yue Ni](https://github.com/niyue)).
* Corrige una lectura con desbordamiento de búfer en el heap al construir el mensaje de error de sintaxis (`UTF8::computeWidthImpl` a través de `parseQuery.cpp`), que se producía cuando el parser había retrocedido más allá del primer token de punto y coma / fin de flujo; las builds release insertaban bytes de memoria vecina del heap en el error mostrado, mientras que las builds con ASan abortaban. [#105086](https://github.com/ClickHouse/ClickHouse/pull/105086) ([Groene AI](https://github.com/groeneai)).
* Hace que la estrategia de partición de Hive sea la predeterminada en la compatibility setting `file_like_engine_default_partition_strategy`. [#86746](https://github.com/ClickHouse/ClickHouse/pull/86746) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Usa una pila de thread más grande (8 MiB) en macOS para igualar el valor predeterminado de Linux, corrigiendo bloqueos poco frecuentes del server por desbordamiento de pila durante la compilación JIT. [#107033](https://github.com/ClickHouse/ClickHouse/pull/107033) ([Raúl Marín](https://github.com/Algunenano)).
* El límite de tamaño del almacenamiento temporal de `clickhouse-local` ya no está fijado de forma rígida en 1 GiB. El valor predeterminado aumenta a 1 TiB y puede configurarse con la server setting `max_temporary_data_on_disk_size`. [#106689](https://github.com/ClickHouse/ClickHouse/pull/106689) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Añade el comando `read-checksums` a `clickhouse-disks`. Lee el archivo `checksums.txt` de un `MergeTreeDataPart` y lo imprime como una tabla legible para humanos, separada por tabulaciones. [#106901](https://github.com/ClickHouse/ClickHouse/pull/106901) ([Asya Shneerson](https://github.com/asya-ch)).
* Se añadió un comando `read-bitmap` a `clickhouse-disks`. [#107834](https://github.com/ClickHouse/ClickHouse/pull/107834) ([murphy-4o](https://github.com/murphy-4o)).
* Chdig: habilita TLS para secure connections (antes esto provocaba "unknown setting `skip_verify`" o "connection reset by peer"). [#105864](https://github.com/ClickHouse/ClickHouse/pull/105864) ([Azat Khuzhin](https://github.com/azat)).
* [`chdig` v26.5.1](https://github.com/azat/chdig/releases/tag/v26.5.1). [#105918](https://github.com/ClickHouse/ClickHouse/pull/105918) ([Azat Khuzhin](https://github.com/azat)).
* [`chdig` v26.6.1](https://github.com/azat/chdig/releases/v26.6.1) - `{asynchronous_,}metric_log`, patrones de consulta, mapas de calor, logs/trazas almacenados en disco (anteriormente podía usar >40GiB para 1 hora de trazas). [#107678](https://github.com/ClickHouse/ClickHouse/pull/107678) ([Azat Khuzhin](https://github.com/azat)).
* La configuración del servidor (`programs/server/config.xml`) ahora establece `keep_alive_timeout` en 30 (antes 10), en consonancia con el valor predeterminado real documentado e implementado. [#107779](https://github.com/ClickHouse/ClickHouse/pull/107779) ([Dan Checkoway](https://github.com/dcheckoway)).
* El valor predeterminado de la configuración del servidor `disk_connections_rcvbuf` cambió de `0` (autotuning TCP del kernel) a `204800` (200 KB), lo que limita el búfer de recepción TCP por socket para las conexiones a discos de almacenamiento de objetos (`S3`/`Azure`/`GCS`). [#107859](https://github.com/ClickHouse/ClickHouse/pull/107859) ([Sema Checherinda](https://github.com/CheSema)).
* El optimizador `PREWHERE` ahora agrupa los conjuncts que hacen referencia al mismo conjunto de columnas antes de estimar la selectividad, de modo que condiciones como `a > 2500 AND a < 2502` se evalúan juntas como un rango combinado en lugar de como dos predicados independientes, lo que produce una estimación de selectividad más precisa. [#106337](https://github.com/ClickHouse/ClickHouse/pull/106337) ([Han Fei](https://github.com/hanfei1991)).
* Se añadieron implementaciones de sockets seguras y sin cifrar compatibles con silk fiber. [#107680](https://github.com/ClickHouse/ClickHouse/pull/107680) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrigieron un mensaje de error confuso (argumentos intercambiados) y un error tipográfico en la función `nested`. [#108031](https://github.com/ClickHouse/ClickHouse/pull/108031) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió un comando `sed` a `clickhouse-disks` que aplica una expresión de sed directamente sobre una ruta dada. [#107131](https://github.com/ClickHouse/ClickHouse/pull/107131) ([Asya Shneerson](https://github.com/asya-ch)).
* Se añadió la configuración `materialized_postgresql_use_extended_date_and_time_types` para el motor de base de datos `MaterializedPostgreSQL`, que se aplica en el momento de la creación. De forma predeterminada (habilitada), las columnas `date`/`timestamp` de PostgreSQL se infieren como `Date32`/`DateTime64`; si se establece en `0` al ejecutar `CREATE DATABASE`, se infieren los tipos más estrechos `Date`/`DateTime`. [#107428](https://github.com/ClickHouse/ClickHouse/pull/107428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Corrección de errores (mal funcionamiento visible para el usuario en una versión estable oficial)
</div>

* Hacer posible eliminar detached parts con el sufijo `tryN`. [#58957](https://github.com/ClickHouse/ClickHouse/pull/58957) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Corregir una excepción `MULTIPLE_EXPRESSIONS_FOR_ALIAS` en consultas con alias de proyección duplicados (por ejemplo, `SELECT *, day + 365 AS day`) dentro de subconsultas anidadas al ejecutarse con réplicas paralelas. [#80310](https://github.com/ClickHouse/ClickHouse/pull/80310) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corregir un error por el que `splitMultipartQuery` lanzaba un error "Empty query" en consultas que terminan con un comentario después del punto y coma. [#85491](https://github.com/ClickHouse/ClickHouse/pull/85491) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corregir una excepción con `ARRAY JOIN`: `Function writeSlice expects same column types for GenericArraySlice and GenericArraySink`, que se produce cuando se usan tipos numéricos `LowCardinality` (issue [#57243](https://github.com/ClickHouse/ClickHouse/issues/57243)). [#91784](https://github.com/ClickHouse/ClickHouse/pull/91784) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Corregir la excepción `NOT_FOUND_COLUMN_IN_BLOCK` al usar `LIMIT BY` con columnas constantes junto con `DISTINCT` y `ORDER BY` con el nuevo analizador. [#93195](https://github.com/ClickHouse/ClickHouse/pull/93195) ([Ashrith Bandla](https://github.com/ashrithb)).
* Corregir que las columnas `NOT NULL` se creen silenciosamente como `Nullable` cuando `data_type_default_nullable = 1` y la tabla se crea en una base de datos `Replicated` o mediante `ON CLUSTER`. [#97572](https://github.com/ClickHouse/ClickHouse/pull/97572) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* Se corrigió la estabilidad de la conexión de HiveCatalog añadiendo un mecanismo de reintento automático y lógica de reconexión para manejar errores TTransportException al comunicarse con Hive Metastore. [#98471](https://github.com/ClickHouse/ClickHouse/pull/98471) ([Dmitriy Borisenko](https://github.com/otselnik)).
* Se corrigió que la función `nested` (usada internamente por `ARRAY JOIN`) eliminara `LowCardinality` de los tipos de columna, haciendo que `Array(LowCardinality(String))` pasara a ser `Array(String)` en la salida. Cierra [#95582](https://github.com/ClickHouse/ClickHouse/issues/95582). [#98974](https://github.com/ClickHouse/ClickHouse/pull/98974) ([Yash ](https://github.com/Onyx2406)).
* Corregir la excepción "Distributed task iterator is not initialized" al usar `url`, `s3` u otras funciones de tabla similares en consultas con réplicas paralelas habilitadas. [#100146](https://github.com/ClickHouse/ClickHouse/pull/100146) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corregir una excepción de error lógico al leer tablas Iceberg cuya versión de formato fue actualizada por una herramienta externa (p. ej., Spark). [#100407](https://github.com/ClickHouse/ClickHouse/pull/100407) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las funciones `like`, `ilike`, `notLike`, `notILike` y `match` ahora admiten una cadena de búsqueda constante con un patrón no constante (p. ej., `'foo' LIKE pattern_column`), lo que antes lanzaba `ILLEGAL_COLUMN`. [#100479](https://github.com/ClickHouse/ClickHouse/pull/100479) ([Yash ](https://github.com/Onyx2406)).
* Se corrigió el recuento incorrecto de filas devuelto por una consulta `MaterializedView` con `query_plan_enable_optimizations = 0` cuando la vista asigna una columna entera a una columna `Bool`. [#100692](https://github.com/ClickHouse/ClickHouse/pull/100692) ([Maksim Moisiuk](https://github.com/Maximus5)).
* Corregir una excepción (`LOGICAL_ERROR: 'PREWHERE passed to format that doesn't support it'`) al leer tablas Iceberg que contienen archivos de datos ORC con la optimización de PREWHERE habilitada. [#101206](https://github.com/ClickHouse/ClickHouse/pull/101206) ([Groene AI](https://github.com/groeneai)).
* Corrige una condición de carrera en RestCatalog. [#101216](https://github.com/ClickHouse/ClickHouse/pull/101216) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Corrige el error `NOT_FOUND_COLUMN_IN_BLOCK` al seleccionar desde una VIEW sobre una tabla con una proyección normal. [#101218](https://github.com/ClickHouse/ClickHouse/pull/101218) ([Amos Bird](https://github.com/amosbird)).
* Corrige metadatos obsoletos en FileLog cuando se elimina y se vuelve a crear un archivo. [#101408](https://github.com/ClickHouse/ClickHouse/pull/101408) ([Azat Khuzhin](https://github.com/azat)).
* Corrige una reordenación de join que descartaba silenciosamente filas no emparejadas de un `RIGHT`/`LEFT JOIN` cuando se combinaba mediante comas (cross) con otra tabla, p. ej., `t1 RIGHT JOIN t2 ON t1.c = t2.c, t3`. Antes, la consulta devolvía el resultado de un inner join en lugar del de un outer join. [#101684](https://github.com/ClickHouse/ClickHouse/pull/101684) ([Groene AI](https://github.com/groeneai)).
* Corrige que la cláusula `FORMAT` fuera consumida por `INSERT` en lugar de aplicarse a la salida de `EXPLAIN` en `EXPLAIN INSERT INTO ... SELECT ... FORMAT ...`. [#101772](https://github.com/ClickHouse/ClickHouse/pull/101772) ([Yash ](https://github.com/Onyx2406)).
* Corrige la selección incorrecta del códec de compresión para las partes de `MergeTree` cuando la configuración `default_compression_codec` a nivel de tabla se establecía explícitamente. Las partes escritas on insert, durante merges y para proyecciones usaban el códec predeterminado global del servidor en lugar de la configuración de la tabla (ahora también se cubre la parte vacía producida por una mutation que elimina todo el contenido). [#101784](https://github.com/ClickHouse/ClickHouse/pull/101784) ([Yash ](https://github.com/Onyx2406)).
* Rechaza valores negativos de `Float64` (p. ej., `-100.5`) en workload settings como `max_bytes_per_second`, `max_cpus`, etc. Antes solo se validaban enteros negativos, lo que permitía que valores float negativos crearan silenciosamente nodos defectuosos en el scheduler. Cierra [#101825](https://github.com/ClickHouse/ClickHouse/issues/101825). [#101842](https://github.com/ClickHouse/ClickHouse/pull/101842) ([Groene AI](https://github.com/groeneai)).
* Corrige un `LOGICAL_ERROR` ("Port is not connected", código 49) que podía producirse al ejecutar consultas que involucraban una VIEW con aggregation dentro de un JOIN. [#102574](https://github.com/ClickHouse/ClickHouse/pull/102574) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Corrige metadatos inconsistentes de partes tras mutations de columnas con serializaciones no predeterminadas. [#102817](https://github.com/ClickHouse/ClickHouse/pull/102817) ([Eduard Karacharov](https://github.com/korowa)).
* Corrige que actualizar los metadatos antes de ejecutar la mutation resuelve [#96806](https://github.com/ClickHouse/ClickHouse/issues/96806). [#102882](https://github.com/ClickHouse/ClickHouse/pull/102882) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Corrige que las consultas SELECT fueran significativamente más lentas cuando se ejecutaban `INSERT` concurrentes. Antes, un pipeline de `INSERT` reservaba CPU slots hasta `max_threads` al inicio de la consulta, incluso cuando la mayoría de los slots nunca llegaban a usarse, dejando sin recursos a los SELECT concurrentes. La asignación de CPU slots ahora se hace según la demanda: el pipeline solo solicita slots a medida que realmente envía trabajo paralelizable. Esto se aplica tanto al control de concurrencia como al scheduler preventivo de CPU para workloads. La nueva server setting `concurrent_threads_lazy_allocation` (predeterminada `true`) actúa como mecanismo de rollback. [#102928](https://github.com/ClickHouse/ClickHouse/pull/102928) ([Seva Potapov](https://github.com/seva-potapov)).
* Corrige la propagación de `NULL` al leer subcolumnas extraídas de columnas `Nullable(Tuple(...))`. Por ejemplo, para `tup Nullable(Tuple(s Nullable(String)))`, `SELECT tup.s` ahora devuelve correctamente `NULL` en las filas en las que la tupla externa es `NULL`, en lugar de valores basura. Esto cubre todos los tipos de elemento que pueden representar `NULL`: `Nullable`, `Dynamic`, `Variant` y `LowCardinality(Nullable(...))`. Cierra [#105356](https://github.com/ClickHouse/ClickHouse/issues/105356). [#102942](https://github.com/ClickHouse/ClickHouse/pull/102942) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Lanza `INCORRECT_DATA` en lugar de `LOGICAL_ERROR` cuando los datos proporcionados por el client en Native format están truncados o malformados. [#102975](https://github.com/ClickHouse/ClickHouse/pull/102975) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Se agregó una comprobación de cancelación a la operación de lectura de ObjectStorage. Cierra [#98165](https://github.com/ClickHouse/ClickHouse/issues/98165). [#103016](https://github.com/ClickHouse/ClickHouse/pull/103016) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Respeta `input_format_binary_max_type_complexity` al decodificar parámetros de funciones de agregación. Cierra [#102903](https://github.com/ClickHouse/ClickHouse/issues/102903). [#103026](https://github.com/ClickHouse/ClickHouse/pull/103026) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige la inferencia de nulabilidad de las columnas Geo en el lector de Parquet basado en Arrow. Cierra [#101845](https://github.com/ClickHouse/ClickHouse/issues/101845). [#103032](https://github.com/ClickHouse/ClickHouse/pull/103032) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió que `recursiveRemoveLowCardinality` eliminara nombres personalizados de tipos de geometría (p. ej., `LineString` frente a `Ring`, `MultiLineString` frente a `Polygon`), lo que provocaba una interpretación errónea del tipo de geometría. Cierra [#103207](https://github.com/ClickHouse/ClickHouse/issues/103207). [#103041](https://github.com/ClickHouse/ClickHouse/pull/103041) ([Joanna Hulboj](https://github.com/jh0x)).
* Se corrigió que `input_format_max_block_size_bytes` se ignorara silenciosamente durante el análisis de `INSERT` cuando `max_insert_block_size_bytes` es `0` (el valor predeterminado). La configuración ahora limita correctamente el tamaño de los bloques producidos por los formatos de entrada basados en filas. [#103068](https://github.com/ClickHouse/ClickHouse/pull/103068) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Se corrigió que ClickHouse produjera ocasionalmente tokens GSSAPI no válidos debido a una eliminación incorrecta de bytes nulos finales. [#103114](https://github.com/ClickHouse/ClickHouse/pull/103114) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Corrige el plegado de constantes en tiempo de analyzer para funciones de short-circuit (`if`, `multiIf`, `and`, `or`, etc.), de modo que las ramas estáticamente inalcanzables ya no generen excepciones en tiempo de análisis. Por ejemplo, `WITH 0 AS n SELECT multiIf(n = 0, 0, intDiv(100, n))` ahora devuelve correctamente `0` en lugar de fallar con un error de división por cero. [#103157](https://github.com/ClickHouse/ClickHouse/pull/103157) ([Peng](https://github.com/fastio)).
* `EXPLAIN SYNTAX` expande vistas parametrizadas. [#103263](https://github.com/ClickHouse/ClickHouse/pull/103263) ([Jordi Villar](https://github.com/jrdi)).
* Corrige la corrupción de datos al escribir archivos Parquet (y otros formatos con tráiler, como ORC y Arrow) en HDFS mediante `INSERT INTO FUNCTION hdfs(...)`. Desde la versión 26.1, `WriteBufferFromHDFS` no vaciaba su búfer de trabajo en `finalize()`, por lo que se perdían silenciosamente los últimos hasta `DBMS_DEFAULT_BUFFER_SIZE` bytes de cada archivo, incluido el footer `PAR1` de Parquet. Al leer esos archivos, se devolvía `Not a Parquet file (wrong magic bytes at the end of file)`. [#103268](https://github.com/ClickHouse/ClickHouse/pull/103268) ([Groene AI](https://github.com/groeneai)).
* Corrige resultados incorrectos y un posible error lógico en subconsultas correlacionadas cuando se establece un límite de tamaño de join (`max_rows_in_join` / `max_bytes_in_join`) junto con `join_overflow_mode = 'break'`. El join creado internamente para evaluar una subconsulta correlacionada ahora ignora esos límites del usuario, por lo que ya no puede detenerse antes de tiempo ni descartar filas. [#103322](https://github.com/ClickHouse/ClickHouse/pull/103322) ([Groene AI](https://github.com/groeneai)).
* Corrige un bug por el que `ALTER TABLE ... MODIFY SETTING` en una tabla `EmbeddedRocksDB` podía conservar un valor de configuración no válido en el archivo de metadatos de la tabla incluso cuando el servidor rechazaba la consulta. En el siguiente reinicio del servidor, la tabla no podría adjuntarse con `CANNOT_PARSE_BOOL` (o un error de parsing similar), y en bases de datos donde los fallos de carga son fatales, el servidor se negaría a iniciarse. Los valores de configuración no válidos ahora se rechazan antes de que se escriba cualquier metadato. [#103417](https://github.com/ClickHouse/ClickHouse/pull/103417) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una interrupción del servidor al crear una tabla con un motor de almacenamiento de objetos (`AzureBlobStorage`, `DeltaLakeAzure`, `S3`, `HDFS`) usando un número no compatible de argumentos. El servidor ahora devuelve un error `NUMBER_OF_ARGUMENTS_DOESNT_MATCH` claro en lugar de abortar en compilaciones de depuración/sanitizador. [#103544](https://github.com/ClickHouse/ClickHouse/pull/103544) ([Groene AI](https://github.com/groeneai)).
* Corrige un fallo del servidor en el parsing de parámetros de los tipos de datos `JSON` y `Dynamic` cuando el árbol de sintaxis abstracta (AST) estaba malformado estructuralmente (por ejemplo, generado por el AST fuzzer): la expresión de parámetro `equals(name, value)` podía quedarse con menos de dos hijos, que `DataTypeObject` y `DataTypeDynamic` luego desreferenciaban sin comprobación de límites. [#103545](https://github.com/ClickHouse/ClickHouse/pull/103545) ([Groene AI](https://github.com/groeneai)).
* Corrige errores lógicos en el analyzer con colisión de nombres de columna en una lambda usada en prewhere. Cierra [#103584](https://github.com/ClickHouse/ClickHouse/issues/103584). [#103627](https://github.com/ClickHouse/ClickHouse/pull/103627) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige errores esporádicos `Logical error: 'Database <name> not found'` de `DataLakeConfiguration::getCatalog` cuando una tabla del engine `Iceberg` se carga dentro de una base de datos normal durante la carga asíncrona de metadatos. [#103775](https://github.com/ClickHouse/ClickHouse/pull/103775) ([Groene AI](https://github.com/groeneai)).
* Corrige errores `MULTIPLE_EXPRESSIONS_FOR_ALIAS` lanzados por réplicas remotas al ejecutar consultas que hacen referencia a alias de proyección dentro de `PREWHERE` / `WHERE` / `HAVING` / `QUALIFY` (p. ej., `SELECT x AS a, y AS b, (a AND b) AS c FROM t PREWHERE c`) o `SELECT *` sobre autouniones con nombres de columna superpuestos, con réplicas paralelas y `parallel_replicas_local_plan = 0`. Cierra [#74324](https://github.com/ClickHouse/ClickHouse/issues/74324). [#103806](https://github.com/ClickHouse/ClickHouse/pull/103806) ([Groene AI](https://github.com/groeneai)).
* Corrige la interrupción del servidor cuando una consulta usa comparaciones anidadas `coalesce`/`ifNull` (p. ej., `WHERE coalesce(a, b, coalesce(c, d), e) = const`) en una tabla `MergeTree` con múltiples índices de salto `minmax` y `use_skip_indexes_for_disjunctions = 1`. La reescritura del índice de salto de `<op>(coalesce(...), const)` ahora se aplica recursivamente a los argumentos internos de coalesce, de modo que la RPN de `KeyCondition` por índice coincida con la RPN de la plantilla, como ya asume el código de seguimiento de disyunciones. [#103929](https://github.com/ClickHouse/ClickHouse/pull/103929) ([Groene AI](https://github.com/groeneai)).
* Se corrige que `max_rows_to_transfer` y `max_bytes_to_transfer` se ignoraran silenciosamente en las consultas `GLOBAL IN` y `GLOBAL JOIN` con el nuevo analizador. Ahora estos ajustes generan `SET_SIZE_LIMIT_EXCEEDED` (o interrumpen la ejecución, según `transfer_overflow_mode`) cuando la tabla externa materializada supera el límite configurado, igualando el comportamiento del analizador anterior. Cierra [#103333](https://github.com/ClickHouse/ClickHouse/issues/103333). [#104119](https://github.com/ClickHouse/ClickHouse/pull/104119) ([Groene AI](https://github.com/groeneai)).
* Se corrige la lectura excesiva de metadatos del catálogo/S3 cuando una sentencia `INSERT` o una sentencia DDL hace referencia a una tabla inexistente en una base de datos de catálogo DataLake con `show_data_lake_catalogs_in_system_tables` habilitado. La ruta de sugerencia para corregir errores tipográficos cargaba los metadatos completos de Iceberg de cada tabla para todo el catálogo, lo que podía agotar la memoria en catálogos grandes. [#104124](https://github.com/ClickHouse/ClickHouse/pull/104124) ([DQ](https://github.com/il9ue)).
* Se corrige un fallo (`LOGICAL_ERROR` "Columns are assumed to be of identical types, but they are different in Nullable" en compilaciones de depuración, un SIGSEGV por puntero nulo en `ColumnString::compareAt` en compilaciones release) y un resultado incorrecto que podía producirse en consultas que usan `direct` `join_algorithm` con una tabla `MergeTree` en el lado derecho cuando el plan de consulta reordenaba columnas durante la optimización. Las columnas del lado derecho podían acabar en posiciones con nombres incorrectos, por lo que un filtro o una comparación sobre la clave de join veía una columna del tipo incorrecto. Detectado por AST fuzzer como STID 2139-5111 y reportado en [#107272](https://github.com/ClickHouse/ClickHouse/issues/107272). [#104174](https://github.com/ClickHouse/ClickHouse/pull/104174) ([Groene AI](https://github.com/groeneai)).
* Se rechaza un ID de partición entero fuera de rango para `Date` en lugar de producir un overflow silencioso o un `LOGICAL_ERROR` en `ALTER`. [#104250](https://github.com/ClickHouse/ClickHouse/pull/104250) ([Azat Khuzhin](https://github.com/azat)).
* Se deshabilita `additional_table_filters` con réplicas paralelas y el analizador sin serialización del plan de consulta. Antes, esto podía dar lugar a resultados incorrectos. [#104296](https://github.com/ClickHouse/ClickHouse/pull/104296) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige que `dictGetOrNull` sobrescribiera silenciosamente otras columnas de la proyección `SELECT` con `NULL` cuando se llamaba con una columna clave `Nullable` cuyos valores faltaban en el diccionario. La función estaba mutando in situ un mapa de nulos con alias de entrada; ahora clona en profundidad la columna de resultado antes de la mutación. Cierra [#73633](https://github.com/ClickHouse/ClickHouse/issues/73633). [#104327](https://github.com/ClickHouse/ClickHouse/pull/104327) ([Groene AI](https://github.com/groeneai)).
* Se corrige una patch part dañada después de `ALTER TABLE ... DROP PARTITION ID 'patch-...'` seguido de `DETACH`/`ATTACH TABLE`. Antes, la parte de cobertura vacía se escribía sin `partition.dat` ni `source_parts.dat`, lo que provocaba una entrada `broken-on-start_patch-...` en `system.detached_parts` tras el siguiente attach o reinicio del servidor. Cierra [#93132](https://github.com/ClickHouse/ClickHouse/issues/93132). Cierra [#102103](https://github.com/ClickHouse/ClickHouse/issues/102103). [#104353](https://github.com/ClickHouse/ClickHouse/pull/104353) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el `INSERT` en streaming con `input_format_max_block_wait_ms` para la interfaz `HTTP` y para `INSERT SELECT FROM input`, de modo que los bloques de entrada parciales se vacíen antes de que finalice la solicitud. [#104534](https://github.com/ClickHouse/ClickHouse/pull/104534) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error por el que las consultas que combinaban `arrayJoin` con `ORDER BY ... LIMIT` después de un `JOIN` podían devolver cero filas sin advertencia. La optimización del plan de consulta que eleva la evaluación de funciones por encima de `SortingStep` ya no se aplica cuando la expresión elevada contiene `arrayJoin`, ya que `arrayJoin` puede cambiar el número de filas. Cierra [#82279](https://github.com/ClickHouse/ClickHouse/issues/82279). [#104558](https://github.com/ClickHouse/ClickHouse/pull/104558) ([Groene AI](https://github.com/groeneai)).
* Se corrige una abortación poco frecuente del servidor durante la destrucción de tablas de la familia `MergeTree`. La abortación podía producirse cuando `shutdown` lanzaba una excepción antes de que el scheduler de trabajos en segundo plano se detuviera por completo: si una background task se activaba en esa breve ventana, despachaba una llamada virtual a través de un objeto de almacenamiento parcialmente destruido y alcanzaba `__cxa_pure_virtual`. [#104561](https://github.com/ClickHouse/ClickHouse/pull/104561) ([Groene AI](https://github.com/groeneai)).
* Se corrige un resultado inconsistente en una subcolumna combinada `JSON` con una indicación de tipo que contiene un valor NULL. [#104584](https://github.com/ClickHouse/ClickHouse/pull/104584) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigen resultados incorrectos o una proyección omitida cuando una proyección de agregación contiene varias agregaciones `sumIf` con distintas condiciones `IN (...)`. [#104765](https://github.com/ClickHouse/ClickHouse/pull/104765) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Se corrige un recuento incorrecto de filas de `arrayJoin()` usado dentro de `JOIN ON`: el resultado se multiplicaba una vez más por la longitud del array. [#104785](https://github.com/ClickHouse/ClickHouse/pull/104785) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrige que `deltaSumTimestamp` devolviera resultados incorrectos para tipos enteros con signo al cruzar cero. Resuelve [#104750](https://github.com/ClickHouse/ClickHouse/issues/104750). [#104830](https://github.com/ClickHouse/ClickHouse/pull/104830) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se corrige una discrepancia en la estructura de bloques en UnionStep tras el pushdown de filtros con constantes NULL. Cierra [#104821](https://github.com/ClickHouse/ClickHouse/issues/104821). [#104853](https://github.com/ClickHouse/ClickHouse/pull/104853) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige `Logical error: 'Metadata is not initialized'` generado por `DELETE FROM` en una tabla `Iceberg`, `DeltaLake` o `Hudi` recién adjunta cuyo archivo de metadata está corrupto o no se puede cargar. En su lugar, ahora se informa una excepción normal de cara al usuario, y el servidor sigue en ejecución. Cierra [#104891](https://github.com/ClickHouse/ClickHouse/issues/104891). [#104917](https://github.com/ClickHouse/ClickHouse/pull/104917) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `max_memory_usage_soft_limit` no se actualizara sobre la marcha cuando cambiaba la configuración. El soft memory limit se calculaba una sola vez al inicio y se almacenaba en caché, por lo que las recargas posteriores de la configuración no tenían efecto. Tras esta corrección, el límite se recalcula y se aplica de inmediato en cada recarga de configuración, sin necesidad de reiniciar Keeper. [#104940](https://github.com/ClickHouse/ClickHouse/pull/104940) ([Kai Zhu](https://github.com/nauu)).
* Se corrige la resolución de símbolos JIT en macOS para que la compilación JIT de sort, expression y agregación ya no falle con `CANNOT_COMPILE_CODE: Could not find symbol _<name>`. [#104946](https://github.com/ClickHouse/ClickHouse/pull/104946) ([Alexei Fedotov](https://github.com/leshikus)).
* Se corrige una excepción (`Received signal 6 (abort)` en el endurecimiento de vectores, observable como `Tuple::back()` en un vector vacío) al ejecutar una consulta de la forma `SELECT ... FROM <Distributed table> WHERE/HAVING/GROUP BY ... (sharding_key_column IN tuple())` con `optimize_skip_unused_shards_rewrite_in` habilitado en el nuevo analyzer. [#104966](https://github.com/ClickHouse/ClickHouse/pull/104966) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un aborto del servidor por `Logical error: 'Inconsistent AST formatting'` (STID 1941-1bfa) en consultas como `CREATE TABLE t (c0 Int CODEC(not((not(materialize(1), materialize(2)))), ZSTD)) ENGINE = Memory` en compilaciones de depuración / con sanitizers. El formateador ya no emite paréntesis externos redundantes alrededor de una llamada a la función `tuple(...)` con varios argumentos que aparece dentro de listas de argumentos de `CODEC` / `STATISTICS` / `BACKUP_NAME` (donde la forma de operador `(a, b)` está deshabilitada), lo que mantiene estable el round-trip de formatear-analizar-formatear. [#104991](https://github.com/ClickHouse/ClickHouse/pull/104991) ([Groene AI](https://github.com/groeneai)).
* Se corrige `NOT_FOUND_COLUMN_IN_BLOCK` lanzado por `ALTER TABLE ... MATERIALIZE INDEX` en parts creados en 25.8 que contienen un skip index sobre una columna añadida mediante un `ALTER TABLE ... ADD COLUMN` independiente. La mutation ahora lee correctamente cada columna requerida por cada skip index y projection preexistentes en el part durante el recálculo forzado. Cierra [#104872](https://github.com/ClickHouse/ClickHouse/issues/104872). [#105039](https://github.com/ClickHouse/ClickHouse/pull/105039) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron dos casos de `LOGICAL_ERROR: Reading from materialized CTE 'X' before it has been materialized` lanzados por consultas con `enable_materialized_cte`: (1) una materialized CTE reutilizada filtrada por `IN (subquery)` sobre otra materialized CTE, y (2) una materialized CTE referenciada tanto directamente como dentro de un filtro `WHERE ... IN (...)` que alcanza una clave primaria de MergeTree mediante una subquery `IN` anidada. `EXPLAIN` sobre esas mismas consultas también se veía afectado porque los errores se activaban durante la optimización del plan. Cierra [#101940](https://github.com/ClickHouse/ClickHouse/issues/101940), cierra [#102320](https://github.com/ClickHouse/ClickHouse/issues/102320). [#105041](https://github.com/ClickHouse/ClickHouse/pull/105041) ([Dmitry Novik](https://github.com/novikd)).
* Se corrige la estimación de selectividad de `PREWHERE` para estadísticas `countmin` en columnas `Float32`. Dos errores hacían que las estadísticas `countmin` produjeran silenciosamente estimaciones incorrectas para columnas `Float32`: `ConditionSelectivityEstimator` omitía por completo las estadísticas cuando el tipo de la columna (`Float32`) era más estrecho que el tipo del literal (`Float64`), recurriendo a la selectividad predeterminada e ignorando el sketch; y `StatisticsCountMinSketch::estimateEqual` calculaba el hash de los primeros N bytes de un objeto `Field`, pero `Field` almacena `Float32` como `Float64` (`NearestFieldType<Float32>` = `Float64`), por lo que el patrón de bytes usado en tiempo de consulta difería de los bytes reales de `Float32` almacenados durante la build. [#105047](https://github.com/ClickHouse/ClickHouse/pull/105047) ([Han Fei](https://github.com/hanfei1991)).
* Las consultas `ATTACH TABLE name <clauses>;` que proporcionan cláusulas de almacenamiento (`ORDER BY`, `PARTITION BY`, `PRIMARY KEY`, `SAMPLE BY`, `TTL`, `UNIQUE KEY` o `SETTINGS` del engine) sin un `ENGINE` ahora lanzan `BAD_ARGUMENTS` en lugar de volver a adjuntar silenciosamente la tabla con su definición almacenada y descartar las cláusulas proporcionadas por el usuario. Los `SETTINGS` de sesión a nivel de consulta (como `log_comment`) se siguen aplicando. Use `ATTACH TABLE t;` para volver a adjuntarla con los metadatos almacenados, o `ALTER TABLE t MODIFY SETTING ...` después de `ATTACH` para cambiar la configuración. [#105068](https://github.com/ClickHouse/ClickHouse/pull/105068) ([Groene AI](https://github.com/groeneai)).
* Se corrige un use-after-free en `runningAccumulate` cuando se llama sobre una columna cuya función de agregación devuelve su propio state (por ejemplo, `uniqStateOrDefaultState`, `sumStateOrDefaultState`, `uniqStateForEachState`). [#105085](https://github.com/ClickHouse/ClickHouse/pull/105085) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Se corrigió un error en la UI web (`play.html`): al ejecutar una consulta mientras el cursor estaba después del único `;` final, se mostraba "empty query" en lugar de ejecutar la consulta. [#105107](https://github.com/ClickHouse/ClickHouse/pull/105107) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige `LOGICAL_ERROR: 'No user in current context, it's a bug'` cuando un `CREATE TABLE ... AS SELECT` dentro de una base de datos `Replicated` lee de `system.current_roles` o `system.enabled_roles`. La consulta ahora se ejecuta correctamente y devuelve un conjunto de resultados vacío en este contexto interno del worker de DDL. [#105150](https://github.com/ClickHouse/ClickHouse/pull/105150) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `ILLEGAL_TYPE_OF_ARGUMENT` al fusionar estados de agregación de `quantileExactWeightedInterpolated`, `quantileDD` o `quantilePrometheusHistogram` con sus equivalentes plurales `quantilesXxxMerge` (y viceversa). Las variantes singulares y plurales de estas tres familias de quantile comparten el mismo estado de agregación interno, pero no estaban incluidas en la tabla interna de asignación de nombres, por lo que se rechazaban tanto la fusión de estados entre funciones como la optimización de fusión de funciones para estas familias. [#105189](https://github.com/ClickHouse/ClickHouse/pull/105189) ([Groene AI](https://github.com/groeneai)).
* Se corrigen los resultados incorrectos de `toStartOfWeek`, `toLastDayOfWeek`, `toMonday`, `toStartOfMonth`, `toLastDayOfMonth`, `toStartOfQuarter` y `toStartOfYear` para argumentos `Date32` y `DateTime64` cuyo resultado queda fuera del rango de `Date`: en lugar de desbordarse a fechas arbitrarias, los resultados anteriores a `1970-01-01` ahora se limitan a `1970-01-01` y los posteriores a `2149-06-06` se limitan a `2149-06-06`. Esto también corrige resultados de consulta erróneos (partes y gránulos podados incorrectamente) cuando estas funciones se usaban en `WHERE` sobre una clave `Date32` o `DateTime64` que contenía valores fuera de rango. [#105244](https://github.com/ClickHouse/ClickHouse/pull/105244) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrige un error lógico en `arrayRemove` cuando el primer argumento es un Array de `Variant` cuyas alternativas son todas incompatibles con el tipo del segundo argumento y `variant_throw_on_type_mismatch` está deshabilitado. La función ahora trata la comparación como "nunca igual" y devuelve el Array sin cambios, en lugar de provocar un fallo de `assertTypeEquality` del lado del servidor. [#105248](https://github.com/ClickHouse/ClickHouse/pull/105248) ([Groene AI](https://github.com/groeneai)).
* La consulta puede ejecutarse correctamente incluso si `FileCache` no logra crear algún directorio en disco para el almacenamiento en caché. [#105250](https://github.com/ClickHouse/ClickHouse/pull/105250) ([Den Kalantaevskii](https://github.com/Diskein)).
* Se corrige el cierre abrupto del servidor con `Assertion 'px != 0' failed` en `ExtremesTransform` cuando una consulta con `extremes = 1` encuentra una excepción (por ejemplo, `MEMORY_LIMIT_EXCEEDED`) mientras la transformada construye sus columnas de extremos a partir del primer chunk. El cliente ahora recibe la excepción original en lugar de que se cierre el servidor. [#105264](https://github.com/ClickHouse/ClickHouse/pull/105264) ([Groene AI](https://github.com/groeneai)).
* `LEFT ANTI JOIN` ahora devuelve correctamente la columna de clave de join del lado derecho con valores predeterminados para las filas sin coincidencia, en lugar de duplicar el valor de la clave izquierda. Antes, `SELECT a.x AS l, b.x AS r FROM a LEFT ANTI JOIN b ON a.x = b.x` podía devolver `r = a.x` para las filas sin coincidencia cuando debería devolver el valor predeterminado (`0` para `Int32`, `''` para `String`, `NULL` para `Nullable`). Solo se veía afectada la columna de clave de join; las columnas derechas que no eran clave ya recibían correctamente sus valores predeterminados. El mismo bug aparecía en `RIGHT ANTI JOIN` siempre que el optimizador intercambiaba los lados. Cierra [#99959](https://github.com/ClickHouse/ClickHouse/issues/99959). [#105278](https://github.com/ClickHouse/ClickHouse/pull/105278) ([Groene AI](https://github.com/groeneai)).
* Se corrige la pérdida de datos en `clickhouse-local` cuando se inicia repetidamente con un `--default_database` distinto de `default` (por ejemplo, `clickhouse-local --path X -- --default_database=mydb`): la búsqueda del UUID de la base de datos persistida estaba fijada en `metadata/default`, por lo que cada reinicio generaba un UUID nuevo y las tablas de la ejecución anterior quedaban invisibles. Cierra [#101831](https://github.com/ClickHouse/ClickHouse/issues/101831). [#105284](https://github.com/ClickHouse/ClickHouse/pull/105284) ([Groene AI](https://github.com/groeneai)).
* Se corrige un logical error `Mutation of `Memory` table produced incomplete output` que se producía al ejecutar `ALTER TABLE <memory_table> APPLY PATCHES` o `ALTER TABLE <memory_table> APPLY DELETED MASK`. Las tablas `Memory` no tienen patch parts ni máscaras de eliminación, por lo que ahora ambos comandos se tratan correctamente como operaciones sin efecto. [#105286](https://github.com/ClickHouse/ClickHouse/pull/105286) ([Groene AI](https://github.com/groeneai)).
* Se corrigen las consultas de larga duración con Unity Catalog pasando un parámetro `table_id` en la solicitud de la consulta. [#105303](https://github.com/ClickHouse/ClickHouse/pull/105303) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se corrige `CANNOT_CONVERT_TYPE` para `Merge` sobre `Merge` sobre `Distributed` con `distributed_group_by_no_merge=1`. [#105330](https://github.com/ClickHouse/ClickHouse/pull/105330) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige que `clickhouse local` y `clickhouse client` ignoraran silenciosamente `--query`/`-q` cuando también se proporcionaba un argumento posicional de archivo. Ahora ambas variantes producen `BAD_ARGUMENTS` de forma consistente. [#105334](https://github.com/ClickHouse/ClickHouse/pull/105334) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige que `REPLACE TEMPORARY TABLE` creara silenciosamente una tabla nueva cuando el destino no existía. Ahora lanza `UNKNOWN_TABLE`, en consonancia con la semántica de `REPLACE TABLE`. Use `CREATE OR REPLACE TEMPORARY TABLE` para mantener el comportamiento de crear o reemplazar. [#105373](https://github.com/ClickHouse/ClickHouse/pull/105373) ([Groene AI](https://github.com/groeneai)).
* Se corrige que las lecturas de larga duración (p. ej., `INSERT ... SELECT`) desde una base de datos `DataLakeCatalog` con `catalog_type = 'glue'` fallaran con un error `ExpiredToken` una vez que las credenciales de sesión de STS capturadas en el momento de cargar los metadatos de la tabla superaban su vencimiento. Ahora las credenciales de AWS STS se actualizan durante la consulta, por lo que estas lecturas continúan después del vencimiento del token. [#105381](https://github.com/ClickHouse/ClickHouse/pull/105381) ([Pratima Patel](https://github.com/pratimapatel2008)).
* Se corrige un logical error en `LIMIT BY` negativo en algunos casos cuando se usa con `ARRAY JOIN`. [#105403](https://github.com/ClickHouse/ClickHouse/pull/105403) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrige la inflación de `read_bytes` (y de los bytes/s derivados que se muestran en `system.query_log`, la barra de progreso, etc.) al leer archivos Parquet. La implementación anterior informaba el compressed size total del row group en cada fragmento, por lo que leer K de N columnas sobrecontaba en `N / K`. Ahora solo se suma en las columnas seleccionadas. También corrige el seguimiento del progreso a nivel de archivo para las tablas Iceberg, que antes nunca informaban el tamaño del archivo de datos. [#105413](https://github.com/ClickHouse/ClickHouse/pull/105413) ([Groene AI](https://github.com/groeneai)).
* Se corrige un posible segfault del servidor en las cluster table functions (`s3Cluster`, `urlCluster`, `fileCluster`, ...) cuando el planificador produce un `SELECT` con la marca `recursive_with` activada pero sin una expresión `WITH`. Cierra [#105370](https://github.com/ClickHouse/ClickHouse/issues/105370). [#105433](https://github.com/ClickHouse/ClickHouse/pull/105433) ([Groene AI](https://github.com/groeneai)).
* Se corrige un resultado incorrecto de `countDistinct` / `uniqExact` en columnas `Nullable` cuando `count_distinct_optimization = 1` (el grupo `NULL` se contaba incorrectamente). [#105439](https://github.com/ClickHouse/ClickHouse/pull/105439) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió un heap-buffer-overflow al leer archivos Arrow o ArrowStream con desplazamientos intermedios corruptos en una columna binaria o de cadena, así como una desreferenciación de puntero nulo al leer columnas Arrow con etiquetas geográficas. [#105449](https://github.com/ClickHouse/ClickHouse/pull/105449) ([Raúl Marín](https://github.com/Algunenano)).
* Se validaron los tipos `Dynamic`/`Variant` en la cláusula de ventana `PARTITION BY`; antes no se comprobaban cuando `allow_suspicious_types_in_group_by` está deshabilitado. Cierra [#105028](https://github.com/ClickHouse/ClickHouse/issues/105028). [#105450](https://github.com/ClickHouse/ClickHouse/pull/105450) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió que `input_format_json_empty_as_default` no funcionara en los formatos JSONStrings\*. Cierra [#104913](https://github.com/ClickHouse/ClickHouse/issues/104913). [#105453](https://github.com/ClickHouse/ClickHouse/pull/105453) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió la inserción de `NULL` en una columna `Variant` mediante el formato `VALUES` durante el análisis de expresiones. Cierra [#104909](https://github.com/ClickHouse/ClickHouse/issues/104909). [#105455](https://github.com/ClickHouse/ClickHouse/pull/105455) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió que `dictGetOrDefault` lanzara `CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN` cuando el argumento predeterminado es una expresión `Nullable` y `short_circuit_function_evaluation` está habilitado con una mezcla de claves de diccionario encontradas y no encontradas. [#105461](https://github.com/ClickHouse/ClickHouse/pull/105461) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió el truncamiento silencioso de valores en columnas `Dynamic` cuando el lector de texto `Quoted` (Values) recurría a `String` para tipos inferidos incompletos como `Map(Array(Nothing), ...)`. Antes, el mecanismo alternativo envolvía el campo sin procesar con una concatenación ingenua de `'...'`, por lo que una comilla simple interna (siempre presente en estos casos) cerraba prematuramente la cadena entrecomillada y se perdía el resto del valor. [#105463](https://github.com/ClickHouse/ClickHouse/pull/105463) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un SIGSEGV al leer subcolumnas `Dynamic` de una tabla `Memory` comprimida después de `ALTER`. Cierra [#104901](https://github.com/ClickHouse/ClickHouse/issues/104901). [#105464](https://github.com/ClickHouse/ClickHouse/pull/105464) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió que `toFloat64`/`toUInt32`/`toString`/etc. en `Dynamic` ignorara `cast_keep_nullable`. Cierra [#104789](https://github.com/ClickHouse/ClickHouse/issues/104789). [#105467](https://github.com/ClickHouse/ClickHouse/pull/105467) ([Pavel Kruglov](https://github.com/Avogar)).
* Se incluyó `skip_first_lines` en la clave de caché del esquema para los formatos `WithNames`. Cierra [#104527](https://github.com/ClickHouse/ClickHouse/issues/104527). [#105469](https://github.com/ClickHouse/ClickHouse/pull/105469) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió un fallo de segmentación del servidor en `uniqStateOrNull` / `uniqStateOrDefault` / `uniqOrNullState` (y cadenas de combinadores similares sobre `uniq`) cuando se usan con `GROUP BY ... WITH ROLLUP`, `WITH CUBE` o `WITH TOTALS` y un argumento Nullable. [#105470](https://github.com/ClickHouse/ClickHouse/pull/105470) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la excepción `NOT_FOUND_COLUMN_IN_BLOCK` al combinar `ORDER BY ... WITH FILL INTERPOLATE` y `LIMIT N BY` con el analizador habilitado. Cierra [#103474](https://github.com/ClickHouse/ClickHouse/issues/103474). [#105481](https://github.com/ClickHouse/ClickHouse/pull/105481) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Se corrigió `toStartOfMillisecond` y `toStartOfMicrosecond`, que devolvían un resultado desfasado por casi un segundo para valores `DateTime64` negativos (anteriores al epoch), y se corrigió el signed-integer-overflow de `UndefinedBehaviorSanitizer` en `toStartOfSecond`, `toStartOfMillisecond` y `toStartOfMicrosecond` para entradas `DateTime64` cercanas a `INT64_MIN`. [#105482](https://github.com/ClickHouse/ClickHouse/pull/105482) ([Groene AI](https://github.com/groeneai)).
* Se añadió una nueva compatibility setting `analyzer_compatibility_prefer_alias_over_subcolumn` (deshabilitada de forma predeterminada). Cuando está habilitada, el nuevo analizador prioriza la interpretación con prefijo de alias frente a las coincidencias con subcolumnas de `Tuple` o columnas con puntos en identificadores de varias partes, restaurando el comportamiento del intérprete anterior. Esto evita errores `AMBIGUOUS_IDENTIFIER` (y relacionados) cuando una consulta hace join con una tabla cuyo nombre coincide con una tabla interna de una CTE/subquery que usa `SELECT *` sobre un join, donde las columnas renombradas por asterisco (por ejemplo, `b.id`) podrían, de otro modo, filtrar los identificadores de la tabla interna al ámbito externo. [#105491](https://github.com/ClickHouse/ClickHouse/pull/105491) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Una consulta de vector search ejecutada con la optimization de *solo índice* ahora devuelve el valor correcto de `L2Distance()` si aparece en la lista `SELECT`. La función devolvía incorrectamente el valor de la distancia *L2 al cuadrado*. Tenga en cuenta que la consulta de vector search devolvía los resultados correctamente ordenados; solo las aplicaciones que **recuperaban e interpretaban explícitamente** el valor de `L2Distance()` habrían visto el valor al cuadrado. [#105495](https://github.com/ClickHouse/ClickHouse/pull/105495) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Se corrigió un problema poco frecuente en el nuevo Kafka table engine por el que los mensajes podían procesarse incorrectamente durante la reasignación de particiones de topic, lo que podía provocar que se omitieran mensajes tras un rollback de offset. [#105500](https://github.com/ClickHouse/ClickHouse/pull/105500) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Se corrigió una excepción (`Trying to execute PLACEHOLDER action` logical error) cuando una CTE `MATERIALIZED` cuyo cuerpo es una subquery correlacionada se usa como lado derecho de `IN`. Ahora esa CTE se rechaza en tiempo de análisis, en consonancia con cómo ese mismo patrón ya se rechaza cuando se hace referencia directamente a la CTE en `FROM`. [#105518](https://github.com/ClickHouse/ClickHouse/pull/105518) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que la compresión de stdout/stdin no se aplicara cuando el format se especificaba explícitamente. Cierra [#104441](https://github.com/ClickHouse/ClickHouse/issues/104441). [#105528](https://github.com/ClickHouse/ClickHouse/pull/105528) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió un SEGFAULT en la deserialization de `singleValueOrNull` para el tipo `JSON`. Cierra [#103630](https://github.com/ClickHouse/ClickHouse/issues/103630). [#105535](https://github.com/ClickHouse/ClickHouse/pull/105535) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió que `clickhouse-format --backslash` descartara silenciosamente los datos de `INSERT` `VALUES`. Cierra [#103533](https://github.com/ClickHouse/ClickHouse/issues/103533). [#105536](https://github.com/ClickHouse/ClickHouse/pull/105536) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió que `variant_throw_on_type_mismatch/dynamic_throw_on_type_mismatch=false` no capturara excepciones durante la ejecución de funciones. Cierra [#103484](https://github.com/ClickHouse/ClickHouse/issues/103484). [#105543](https://github.com/ClickHouse/ClickHouse/pull/105543) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió que se ignorara `input_format_try_infer_datetimes` durante la inserción en shared data en `JSON`. Cierra [#103221](https://github.com/ClickHouse/ClickHouse/issues/103221). [#105544](https://github.com/ClickHouse/ClickHouse/pull/105544) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige `histogram`, que producía resultados incorrectos con entradas pequeñas sin ordenar. Cierra [#103109](https://github.com/ClickHouse/ClickHouse/issues/103109). [#105548](https://github.com/ClickHouse/ClickHouse/pull/105548) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige el desbordamiento circular de `DateTime` con valores fuera de rango en `JSONExtract` y en deserializaciones de texto. Cierra [#103094](https://github.com/ClickHouse/ClickHouse/issues/103094). [#105551](https://github.com/ClickHouse/ClickHouse/pull/105551) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige el uso de la insertion table en las table functions cuando `optimize_trivial_insert_select` está habilitado. Cierra [#103083](https://github.com/ClickHouse/ClickHouse/issues/103083). [#105555](https://github.com/ClickHouse/ClickHouse/pull/105555) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige que la expression `CASE` devolviera la rama `ELSE` en lugar de la rama `THEN` correspondiente cuando tanto la expresión como un valor `WHEN` eran `NULL`. [#105556](https://github.com/ClickHouse/ClickHouse/pull/105556) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige un fallo en `replxx` causado por alcanzar la limitación `FD_SETSIZE` de `select` (ahora sustituido por `poll`). Anteriormente, con SSH o el terminal web habilitados, esto podía hacer fallar el server. [#105559](https://github.com/ClickHouse/ClickHouse/pull/105559) ([Azat Khuzhin](https://github.com/azat)).
* Materializa las subcolumns en `executePartitionByExpression` antes de ejecutar la expresión. Cierra [#103057](https://github.com/ClickHouse/ClickHouse/issues/103057). [#105573](https://github.com/ClickHouse/ClickHouse/pull/105573) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige la excepción `NOT_FOUND_COLUMN_IN_BLOCK` cuando la expresión `TTL` hace referencia a una subcolumn. [#105578](https://github.com/ClickHouse/ClickHouse/pull/105578) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige un fallo del server (SIGSEGV) al que podía llegar cualquier usuario con permisos de `CREATE TABLE` al enviar `CREATE TABLE ... TO INNER UUID '...'` sin una clause `ENGINE` por HTTP o el native protocol. El mismo error también hacía fallar al client. Ahora el parser informa correctamente de un error `BAD_ARGUMENTS` en lugar de desreferenciar un puntero nulo. [#105579](https://github.com/ClickHouse/ClickHouse/pull/105579) ([Groene AI](https://github.com/groeneai)).
* Corrige que la window function `estimateCompressionRatio` perdiera los datos acumulados entre filas. Cierra [#101738](https://github.com/ClickHouse/ClickHouse/issues/101738). [#105581](https://github.com/ClickHouse/ClickHouse/pull/105581) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige un fallo al insertar tuples de distintos tamaños en la misma cláusula VALUES en una columna `String`. Cierra [#101727](https://github.com/ClickHouse/ClickHouse/issues/101727). [#105582](https://github.com/ClickHouse/ClickHouse/pull/105582) ([Pavel Kruglov](https://github.com/Avogar)).
* La extracción del valor de partición de Hive ahora respeta la configuración `cast_string_to_date_time_mode` y acepta de forma predeterminada timestamps ISO 8601 con suffixes de zona horaria (p. ej., `+0000`, `+00:00`, `Z`) en las claves de partición. [#105584](https://github.com/ClickHouse/ClickHouse/pull/105584) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige el error `NOT_IMPLEMENTED` en `toString` desde `DateTime` con Timezone que contiene un valor `NULL`. Cierra [#103712](https://github.com/ClickHouse/ClickHouse/issues/103712). [#105587](https://github.com/ClickHouse/ClickHouse/pull/105587) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige una lectura OOB en la deserialización Native de la columna `Dynamic` aplanada. [#105666](https://github.com/ClickHouse/ClickHouse/pull/105666) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige un `LOGICAL_ERROR` (`Unexpected return type from if`) que se producía durante la planificación de consultas para expresiones `if` cuyo tipo de resultado es `Variant` y cuya segunda o tercera rama es un `if` de condición constante sobre un literal `UInt64` que cabe en `Int64`. Cierra [#105649](https://github.com/ClickHouse/ClickHouse/issues/105649). [#105680](https://github.com/ClickHouse/ClickHouse/pull/105680) ([Groene AI](https://github.com/groeneai)).
* Corrige resultados incorrectos al leer una tabla Iceberg con `iceberg_use_version_hint = 1` después de que otro writer (como la table function `icebergLocal`/`icebergS3`), sin este ajuste, haga avanzar la tabla. `version-hint.text` ahora se mantiene sincronizado por cada writer una vez que el archivo existe, de modo que los lectores posteriores que usan la pista vean el snapshot más reciente. [#105682](https://github.com/ClickHouse/ClickHouse/pull/105682) ([Groene AI](https://github.com/groeneai)).
* Corrige un recuento inferior al real que se producía silenciosamente en consultas `SELECT` cuando `use_query_condition_cache = 1` (valor predeterminado). Una consulta con la forma `PREWHERE pk_prefix = X WHERE non_pk IN (...)` sobre una columna con un skip index de filtro Bloom contaminaba la `QueryConditionCache` para el predicado `pk_prefix = X`, por lo que un `SELECT count() ... WHERE pk_prefix = X` benigno posterior devolvía un resultado incorrecto, por debajo del real. Afectaba a todas las releases 26.x. [#104781](https://github.com/ClickHouse/ClickHouse/issues/104781). [#105686](https://github.com/ClickHouse/ClickHouse/pull/105686) ([Groene AI](https://github.com/groeneai)).
* Corrige que `singleValueOrNullMerge` devolviera un valor concreto en lugar de `NULL` al fusionar un estado que ya había observado varios valores distintos. [#105734](https://github.com/ClickHouse/ClickHouse/pull/105734) ([Minh Vu](https://github.com/fallintoplace)).
* Corrige la recuperación ante errores del input format `Template` después de filas malformadas. [#105735](https://github.com/ClickHouse/ClickHouse/pull/105735) ([Yue Ni](https://github.com/niyue)).
* Corrige un fallo en la table function `mongodb`, el almacenamiento de MongoDB y el origen de diccionario de MongoDB cuando el nombre de la collection está vacío o contiene bytes NUL. [#105776](https://github.com/ClickHouse/ClickHouse/pull/105776) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige la limpieza de snapshots de `Keeper` tras writes fallidos para que los snapshots parciales se eliminen de forma segura y los writes fallidos puedan reintentarse sin avanzar `latest_snapshot_meta`. [#105779](https://github.com/ClickHouse/ClickHouse/pull/105779) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige que `ALTER TABLE ... CLEAR COLUMN` se rechazara para columnas `columns_to_sum` explícitas de `SummingMergeTree` y `CoalescingMergeTree`. [#105785](https://github.com/ClickHouse/ClickHouse/pull/105785) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige una aserción en `DatabaseCatalog::tryGetDatabase` (y el error `UNKNOWN_DATABASE` resultante en compilaciones de release) al crear una parameterized view cuyo nombre de base de datos se proporciona mediante un query parameter, por ejemplo `CREATE VIEW {db:Identifier}.v AS SELECT {p:UInt64}`. Los parámetros en las partes DDL de la sentencia `CREATE` ahora se sustituyen en el momento de la creación, mientras que los parámetros del cuerpo de `SELECT` siguen disponibles para su sustitución al invocar la vista. [#105799](https://github.com/ClickHouse/ClickHouse/pull/105799) ([Groene AI](https://github.com/groeneai)).
* Corrige `Bad get: has Decimal32, requested Decimal128` en `sumMap` y `sumMapWithOverflow` sobre una columna `Nested(... Nullable(Decimal(P, S)))` cuando el estado de agregación se serializa (p. ej., parallel replicas, `sumMapState` mediante un formatter de estado binario, agregación externa). [#105816](https://github.com/ClickHouse/ClickHouse/pull/105816) ([Groene AI](https://github.com/groeneai)).
* Se corrigen los errores `Expected ColumnLowCardinality, got String` / `Bad cast from type DB::ColumnString to DB::ColumnLowCardinality` cuando se usa `apply_mutations_on_fly = 1` en una tabla con mutaciones `UPDATE`/`DELETE` pendientes aplicadas sobre la marcha y en cola antes de una mutación `ALTER MODIFY COLUMN ... LowCardinality(...)`. [#105847](https://github.com/ClickHouse/ClickHouse/pull/105847) ([Raúl Marín](https://github.com/Algunenano)).
* Las escrituras de Iceberg ahora conservan los valores NULL en las columnas de partición `Nullable(T)`. Antes, un NULL escrito por ClickHouse aparecía como el valor predeterminado del tipo interno (`0` para `int`) al volver a leerse con Spark u otros lectores de Iceberg. Cierra [#105852](https://github.com/ClickHouse/ClickHouse/issues/105852). [#105862](https://github.com/ClickHouse/ClickHouse/pull/105862) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el pushdown de filtros de `Parquet` y `ORC` para predicados `IN (subquery)`, lo que permite que la poda de grupos de filas/páginas/filtros bloom funcione en lecturas de `file`, `url`, `s3` y almacenamiento de objetos. [#105863](https://github.com/ClickHouse/ClickHouse/pull/105863) ([Arsen Muk](https://github.com/arsenmuk)).
* Se corrige la lectura en orden para tablas `Merge` (con un nuevo analizador). [#105867](https://github.com/ClickHouse/ClickHouse/pull/105867) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se corrigió que las eliminaciones posicionales merge-on-read de Iceberg v2 devolvieran filas incorrectas cuando un único archivo de eliminación hace referencia a varios archivos de datos y varios de esos archivos de eliminación se aplican al mismo archivo de datos. El lector de streaming (`use_roaring_bitmap_iceberg_positional_deletes = 0`) ahora filtra las filas del archivo de eliminación por `file_path` en C++ en lugar de depender de la poda de grupos de filas de Parquet, restaurando el invariante de posiciones ascendentes. [#105888](https://github.com/ClickHouse/ClickHouse/pull/105888) ([Groene AI](https://github.com/groeneai)).
* Se corrige el error `Cannot find column` en consultas distribuidas con filtro `IN Array(...)` para el nuevo analizador. [#105894](https://github.com/ClickHouse/ClickHouse/pull/105894) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se corrige un SIGSEGV en `ALTER TABLE ... MODIFY COLUMN ... Nullable(...)` en tablas `MergeTree` cuando otra instrucción `ALTER` elimina concurrentemente una columna con `STATISTICS`. Cierra [#105912](https://github.com/ClickHouse/ClickHouse/issues/105912). [#105917](https://github.com/ClickHouse/ClickHouse/pull/105917) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo del servidor que podía producirse cuando se cancelaba una consulta que leía desde PostgreSQL —mediante la table function postgresql, el PostgreSQL table engine o un diccionario con un origen PostgreSQL— (por ejemplo, con KILL QUERY) y fallaba la cancelación de la consulta remota en PostgreSQL. [#105949](https://github.com/ClickHouse/ClickHouse/pull/105949) ([Rory Shanks](https://github.com/rorylshanks)).
* Se corrige el formatting de `SYSTEM INSTRUMENT ADD` para que los argumentos del controlador estén separados por un solo espacio, y se rechazan listas no válidas de argumentos de instrumentación `SLEEP` con más de dos valores o con un rango en el que el mínimo es mayor que el máximo. [#105984](https://github.com/ClickHouse/ClickHouse/pull/105984) ([Pablo Marcos](https://github.com/pamarcos)).
* Se corrigen posibles resultados incorrectos en consultas que combinan un outer join con un inner join posterior que hace referencia al lado del outer join que aporta los valores nulos. La reordenación de joins podía elegir un plan que llevaba las condiciones del inner join a la cláusula ON del outer join. [#105992](https://github.com/ClickHouse/ClickHouse/pull/105992) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigió un posible fallo debido a un literal de cadena demasiado grande enviado dentro de la consulta. [#105996](https://github.com/ClickHouse/ClickHouse/pull/105996) ([Nikita Taranov](https://github.com/nickitat)).
* Se corrige la excepción `INVALID_WITH_FILL_EXPRESSION` al usar `INTERPOLATE ()` (vacío) con un prefijo de ordenación en `ORDER BY` y `use_with_fill_by_sorting_prefix` habilitado. Las columnas del prefijo de ordenación ahora se excluyen correctamente del conjunto de interpolación implícita, en línea con el comportamiento de `INTERPOLATE (col)` cuando se nombra explícitamente. [#106001](https://github.com/ClickHouse/ClickHouse/pull/106001) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Se corrigen las operaciones de partición de `ALTER TABLE` que fallaban silenciosamente con claves de partición `Bool`. Cierra [#101722](https://github.com/ClickHouse/ClickHouse/issues/101722). [#106004](https://github.com/ClickHouse/ClickHouse/pull/106004) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigen `JSONExtractRaw` y `JSONHas` para rutas `JSON` tipadas con valores predeterminados. Cierra [#101721](https://github.com/ClickHouse/ClickHouse/issues/101721). [#106005](https://github.com/ClickHouse/ClickHouse/pull/106005) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige la adición incorrecta del prefijo '/' en rutas base vacías en configuraciones de lago de datos. Cierra [#105989](https://github.com/ClickHouse/ClickHouse/issues/105989). [#106013](https://github.com/ClickHouse/ClickHouse/pull/106013) ([thewisenerd](https://github.com/thewisenerd)).
* Se corrige que el motor de tabla `IcebergLocal` pasara a modo de solo lectura después de un ciclo `DETACH` + `ATTACH` o de reiniciar el servidor, lo que hacía que cualquier `INSERT` posterior fallara con `Local object storage Local is readonly. (READONLY)`. [#106016](https://github.com/ClickHouse/ClickHouse/pull/106016) ([Groene AI](https://github.com/groeneai)).
* Se corrigen fallos de `Keeper` durante la sincronización del follower cuando la nueva cola de respuestas del despachador de solicitudes podía llenarse antes de que se iniciara el hilo de respuestas. [#106049](https://github.com/ClickHouse/ClickHouse/pull/106049) ([Antonio Andelic](https://github.com/antonio2368)).
* Mejor compatibilidad con el analyzer antiguo. Si la tabla tiene columnas como `x.a Array, x.b Array, x String`, se da prioridad a los arrays para `ARRAY JOIN x`. [#106069](https://github.com/ClickHouse/ClickHouse/pull/106069) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se corrige que la caché del sistema de archivos se deshabilitara silenciosamente para Azure Blob Storage (por ejemplo, tablas de Delta Lake sobre Azure) porque los metadatos del objeto no incluían el ETag del blob. [#106091](https://github.com/ClickHouse/ClickHouse/pull/106091) ([thewisenerd](https://github.com/thewisenerd)).
* Se corrige que `system.dictionaries` devolviera 0 filas con una revocación parcial de `SHOW DICTIONARIES`. [#106105](https://github.com/ClickHouse/ClickHouse/pull/106105) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige un fallo del servidor al consultar tablas de DeltaLake con `allow_experimental_delta_kernel_rs` habilitado y una credencial u opción que contenía bytes no válidos (la FFI de Rust entraba en pánico al cruzar el límite `extern "C"`). [#106109](https://github.com/ClickHouse/ClickHouse/pull/106109) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigen resultados incorrectos en consultas contra tablas cuyo `ORDER BY` contiene una función monótonamente decreciente, como `(c0 / -42)` o `intDiv(c0, -42)`. Los predicados sobre la columna subyacente (por ejemplo, `c0 < 0`) podían podar erróneamente gránulos que contenían filas coincidentes, lo que provocaba resultados ausentes. Cierra [#106084](https://github.com/ClickHouse/ClickHouse/issues/106084). Cierra [#106124](https://github.com/ClickHouse/ClickHouse/issues/106124). Cierra [#106080](https://github.com/ClickHouse/ClickHouse/issues/106080). [#106136](https://github.com/ClickHouse/ClickHouse/pull/106136) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrige el soporte para usar UDF SQL de `WASM` en definiciones de `MATERIALIZED VIEW`. [#106161](https://github.com/ClickHouse/ClickHouse/pull/106161) ([Yue Ni](https://github.com/niyue)).
* La poda de particiones de Iceberg ahora maneja correctamente los filtros `WHERE partition_col = (SELECT ... FROM ...)` en los que el analyzer envuelve el resultado de la subquery escalar en un `_CAST(Const, 'TargetType')` interno con tipos de origen y destino coincidentes. Antes, estos filtros desactivaban la poda de particiones y provocaban un escaneo completo de la tabla. [#106204](https://github.com/ClickHouse/ClickHouse/pull/106204) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el parámetro `--query_id` de clickhouse local para que permita especificar un Query id personalizado. [#106205](https://github.com/ClickHouse/ClickHouse/pull/106205) ([Yue Ni](https://github.com/niyue)).
* Se corrigió que la clase de almacenamiento S3 (`s3_storage_class` / `s3_storage_class_name`) se ignorara en los objetos escritos mediante multipart upload en discos `S3` y object storage, lo que hacía que los objetos grandes se crearan con la clase `STANDARD` predeterminada. El nombre de la opción ahora se acepta tanto como `s3_storage_class` como `s3_storage_class_name` para discos, object storage y backups. [#106214](https://github.com/ClickHouse/ClickHouse/pull/106214) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un problema por el que Keeper a veces se quedaba bloqueado al iniciar cuando la configuración `nuraft_max_log_gap_in_stream` se establecía en un valor no predeterminado (el valor predeterminado es 0; es decir, desactiva el pipelining de las requests `append_entries`). [#106220](https://github.com/ClickHouse/ClickHouse/pull/106220) ([Michael Kolupaev](https://github.com/al13n321)).
* Ahora se valida en la inserción el estado corrupto de la función de agregación `DDSketch` (claves de bin) en lugar de aceptar datos malformados. [#106236](https://github.com/ClickHouse/ClickHouse/pull/106236) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigió un desajuste en el modo coordinator cuando las subqueries aplican una sobrescritura de la configuración de orden. [#106243](https://github.com/ClickHouse/ClickHouse/pull/106243) ([Nikita Taranov](https://github.com/nickitat)).
* Se corrigió un problema por el que `optimize_skip_unused_shards` no se aplicaba (y `force_optimize_skip_unused_shards` fallaba erróneamente) cuando se consultaba una tabla `Distributed` a través de una tabla `Merge` o de la table function `merge`, con el predicado aplicado por encima. [#106250](https://github.com/ClickHouse/ClickHouse/pull/106250) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se corrigió que `INTERPOLATE ()` arrojara `INVALID_WITH_FILL_EXPRESSION` cuando se asignaban alias a columnas `ORDER BY` en la lista `SELECT` con el analyzer antiguo. Cierra [#106248](https://github.com/ClickHouse/ClickHouse/issues/106248). [#106252](https://github.com/ClickHouse/ClickHouse/pull/106252) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Se corrigió un abort al deserializar un estado malformado de `AggregateFunction(uniqTheta, ...)` desde una entrada `RowBinary` o un query parameter. La entrada no válida ahora se rechaza con `CORRUPTED_DATA` en lugar de escapar como una `std::exception` y abortar el proceso mediante `abortOnFailedAssertion`. [#106260](https://github.com/ClickHouse/ClickHouse/pull/106260) ([Groene AI](https://github.com/groeneai)).
* Ahora se rechazan los bytes `IntervalKind` fuera de rango durante la decodificación de tipos de `RowBinaryWithNamesAndTypes` (`input_format_binary_decode_types_in_binary_format = 1`) con un error `INCORRECT_DATA` claro, en lugar de construir un `DataTypeInterval` con un tipo no válido que posteriormente podría desencadenar un comportamiento indefinido en rutas hash. [#106261](https://github.com/ClickHouse/ClickHouse/pull/106261) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un issue de rollback por fallo de downgrade de `SLRU` en `26.1+`. Se corrigió la prioridad de la división de caché `System`/`Data` con la feature `keep_free_space_ratio`. [#106286](https://github.com/ClickHouse/ClickHouse/pull/106286) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrigió la lectura de la subcolumna `null` como una ruta `JSON` en `Nullable(JSON)` en lugar de hacerlo como mapa de nulos. Cierra [#106085](https://github.com/ClickHouse/ClickHouse/issues/106085). [#106295](https://github.com/ClickHouse/ClickHouse/pull/106295) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió que `RestCatalog::empty` devolviera un resultado incorrecto cuando un catálogo REST de Iceberg contiene tablas. [#106301](https://github.com/ClickHouse/ClickHouse/pull/106301) ([Lefteris](https://github.com/LefterisXefteris)).
* Se corrigió una excepción en consultas `INNER JOIN` con una tabla `MergeTree` izquierda vacía cuando `enable_parallel_replicas`, `query_plan_use_new_logical_join_step` y `query_plan_optimize_join_order_algorithm = 'greedy'` están habilitados. [#106338](https://github.com/ClickHouse/ClickHouse/pull/106338) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se corrigió una conversión incorrecta de valores subnormales `Float16` a `Float32` (por ejemplo, al leerlos desde archivos `.npy` de Numpy), causada por un desplazamiento de la mantisa desfasado en una unidad. [#106343](https://github.com/ClickHouse/ClickHouse/pull/106343) ([Joanna Hulboj](https://github.com/jh0x)).
* Se corrigió un fallo y un posible error `NOT_FOUND_COLUMN_IN_BLOCK` cuando la optimización basada en restricciones (`optimize_using_constraints`) se usa con subconsultas correlacionadas. [#106349](https://github.com/ClickHouse/ClickHouse/pull/106349) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió una lectura fuera de los límites en `sipHash64Keyed`, `sipHash128Keyed` y `sipHash128ReferenceKeyed` al calcular el hash de una columna cuyas matrices están todas vacías y cuya clave no es constante. [#106355](https://github.com/ClickHouse/ClickHouse/pull/106355) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió que `SYSTEM RELOAD CONFIG` descartara la configuración de Azure Blob Storage por endpoint (como `use_native_copy`), lo que provocaba que la configuración del disco se ignorara para `BACKUP`/`RESTORE` hasta que se reiniciara el servidor. [#106357](https://github.com/ClickHouse/ClickHouse/pull/106357) ([Julia Kartseva](https://github.com/jkartseva)).
* Se corrigió `regexpExtract(haystack, pattern)` para que los patrones sin grupo de captura devuelvan la coincidencia completa en lugar de lanzar `INDEX_OF_POSITIONAL_ARGUMENT_IS_OUT_OF_RANGE`. [#106374](https://github.com/ClickHouse/ClickHouse/pull/106374) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la excepción `LOGICAL_ERROR` durante la predescarga de caché cuando un objeto remoto de S3 se sobrescribe con contenido más corto entre el listado y la lectura. [#106375](https://github.com/ClickHouse/ClickHouse/pull/106375) ([Nikita Fomichev](https://github.com/fm4v)).
* Se corrigió el aumento del uso de memoria en la caché del sistema de archivos. [#106387](https://github.com/ClickHouse/ClickHouse/pull/106387) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrigieron múltiples lecturas fuera de los límites del montón en el lector del formato Arrow IPC (`ArrowColumnToCHColumn`). Un archivo Arrow malformado podía declarar más filas de las que contienen sus búferes, declarar longitudes de elementos hijo de list/struct/map incompatibles con su elemento padre, proporcionar desplazamientos de lista no monótonos o truncar un bitmap de validez hijo, lo que causaba lecturas más allá del final de las asignaciones del montón. Esto puede ser explotado por cualquier usuario con privilegio `SELECT` mediante `file()`, `format()`, funciones de tabla o entradas ArrowFlight. Ahora se validan todos los búferes de datos, desplazamientos, view-struct y bitmap de validez antes de cualquier acceso a punteros sin procesar, y se comprueba la consistencia de las formas y los desplazamientos de list/struct/map. [#106395](https://github.com/ClickHouse/ClickHouse/pull/106395) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió que las copias de seguridad fallaran con `FILE_DOESNT_EXIST` cuando el destino REPLACE de una vista materializada actualizable se recopila en una base de datos Replicated o Shared cuya vista materializada aún no está instanciada en la réplica que inicia la copia de seguridad. [#106411](https://github.com/ClickHouse/ClickHouse/pull/106411) ([Julia Kartseva](https://github.com/jkartseva)).
* Corrige un error lógico `Column identifier ... is already registered` cuando un predicado de mutation (`DELETE`/`UPDATE`) contiene una subconsulta `IN`/`EXISTS` que lee de una expresión de tabla predeterminada anidada dentro de otra subconsulta. [#106414](https://github.com/ClickHouse/ClickHouse/pull/106414) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un error lógico (`Left and right columns have same names`) en el optimizador del orden de join que podía producirse en joins ejecutados con réplicas paralelas cuando dos relaciones del grafo de join comparten nombres de columna. [#106418](https://github.com/ClickHouse/ClickHouse/pull/106418) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un error lógico al construir un diccionario de polígonos a partir de datos de origen que contienen coordenadas de punto `NaN` o infinitas. Ahora, esas coordenadas se rechazan con un mensaje de error claro. [#106423](https://github.com/ClickHouse/ClickHouse/pull/106423) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error por el que las columnas `used_privileges` y `missing_privileges` de `system.query_log` podían contener cadenas de privilegios filtradas de consultas anteriores no relacionadas, de otro usuario, base de datos o sesión. [#106425](https://github.com/ClickHouse/ClickHouse/pull/106425) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las funciones `base58Encode`, `base58Decode` y `tryBase58Decode` ahora respetan `max_execution_time` y la cancelación de consultas con entradas grandes, y rechazan entradas de más de 10 KB en lugar de ejecutarse durante demasiado tiempo. El límite se puede configurar mediante el nuevo ajuste `function_base58_max_input_size` (`0` lo desactiva). [#106428](https://github.com/ClickHouse/ClickHouse/pull/106428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige resultados incorrectos esporádicos en consultas `ORDER BY ... DESC` al leer wide parts en orden inverso con `read_in_order_use_virtual_row_per_block = 1` y un `max_block_size` pequeño. [#106429](https://github.com/ClickHouse/ClickHouse/pull/106429) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigió una excepción `NOT_FOUND_COLUMN_IN_BLOCK` al consultar una tabla Iceberg o una tabla S3 con un `WHERE` compuesto que contiene `IS NOT NULL` sobre una columna que no está en la lista `SELECT`, usando el Native reader de Parquet V3. [#106443](https://github.com/ClickHouse/ClickHouse/pull/106443) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Permite al usuario especificar encabezados para `HTTPDictionary` mediante named collections. [#106459](https://github.com/ClickHouse/ClickHouse/pull/106459) ([Jan Rada](https://github.com/ZelvaMan)).
* Corrige un caso en el que un worker thread podía quedar asociado a un grupo de hilos obsoleto después de que `CurrentThread::attachToGroup` fallara a mitad del proceso, provocando que tareas posteriores en el mismo hilo fallaran con `Thread is already attached to a group`. [#106462](https://github.com/ClickHouse/ClickHouse/pull/106462) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Se corrigió una excepción cuando una consulta de vector search usa un vector index y también otro skip index como `minmax`, con `use_skip_indexes_on_data_read = 1`. [#106473](https://github.com/ClickHouse/ClickHouse/pull/106473) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Los valores de enum `Avro` mal formados ahora se validan y se rechazan con un error, en lugar de provocar una lectura fuera de límites y un aborto al deserializar datos `Avro` corruptos. [#106476](https://github.com/ClickHouse/ClickHouse/pull/106476) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige informes de progreso inflados al leer tablas Iceberg con filtros `_file` o `_path`. Antes, el progreso de `total_bytes_to_read` incluía todos los archivos del manifest independientemente del filtrado. [#106491](https://github.com/ClickHouse/ClickHouse/pull/106491) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Se corrigió una `Bad cast exception` en diccionarios de Redis que usan `STORAGE_TYPE 'simple'` con layout `cache`/`direct` y una única clave de cadena (compleja); ahora estos diccionarios funcionan, y las claves compuestas sobre almacenamiento `simple` muestran un error claro. [#106501](https://github.com/ClickHouse/ClickHouse/pull/106501) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigió un error de resultados incorrectos por el que `WHERE c0 = const` no devolvía filas en tablas con `ORDER BY f(c0)` cuando `f(const)` se evalúa como NaN; por ejemplo, `ORDER BY sqrt(c0)` con una constante negativa. El análisis de la clave primaria descartaba incorrectamente todos los gránulos y contaminaba la caché de condiciones de consulta para consultas posteriores. [#106507](https://github.com/ClickHouse/ClickHouse/pull/106507) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `LIMIT WITH TIES` y `LIMIT WITH TIES` fraccional no respetaran la colación de `ORDER BY ... COLLATE` al determinar los empates. Las filas que eran iguales según la colación (por ejemplo, `'1'` y `'01'` con colación numérica) se comparaban byte a byte, por lo que algunas filas empatadas se omitían incorrectamente del resultado. [#106539](https://github.com/ClickHouse/ClickHouse/pull/106539) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigieron las optimizaciones `DISTINCT` in order y `LIMIT BY` in order (incluido `LIMIT BY` negativo), que devolvían resultados incorrectos cuando la entrada estaba ordenada con una colación (`ORDER BY ... COLLATE`). Las filas que son iguales según la colación (por ejemplo, `'a'` y `'A'` con una colación insensible a mayúsculas y minúsculas) se ordenan por clave de colación y no quedan adyacentes por valor, por lo que ahora la optimización in order se omite cuando se usa un comparador de colación. [#106564](https://github.com/ClickHouse/ClickHouse/pull/106564) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigieron resultados incorrectos para `SELECT c, count() FROM t WHERE c GROUP BY c` en tablas con `_minmax_count_projection` implícita, una proyección de agregación explícita o una proyección normal: antes, todos los grupos colapsaban en una sola fila con una clave constante y el recuento total de filas. [#106590](https://github.com/ClickHouse/ClickHouse/pull/106590) ([Groene AI](https://github.com/groeneai)).
* Se corrige un error por el que los usuarios no podían usar subconsultas escalares en el primer argumento de `IN` cuando el segundo argumento es una tupla no constante. [#106610](https://github.com/ClickHouse/ClickHouse/pull/106610) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigió la excepción `Mutation of `Memory` table produced incomplete output` que se producía al ejecutar comandos `ALTER TABLE <memory_table>` sin efecto por fila sobre datos en un motor `Memory`, concretamente `APPLY PATCHES`, `APPLY DELETED MASK`, `MATERIALIZE STATISTICS`, `MATERIALIZE INDEX`, `MATERIALIZE PROJECTION` y `REWRITE PARTS`. Las tablas `Memory` no poseen esas estructuras, por lo que esos comandos ahora se tratan como no-ops. [#106621](https://github.com/ClickHouse/ClickHouse/pull/106621) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `session_timezone` se ignorara al serializar columnas `LowCardinality(DateTime)` a formatos de texto (CSV, TSV, JSONEachRow, etc.). Antes, tras la primera escritura de una columna `LowCardinality(DateTime)` en un servidor, cualquier consulta posterior que escribiera una columna de ese tipo mostraba la cadena de hora local en la primera zona horaria observada, independientemente de `session_timezone`. [#106634](https://github.com/ClickHouse/ClickHouse/pull/106634) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` "Trying to get name of not a column: `ExpressionList`" generado por consultas que pasan un asterisco dentro de `multiIf` a un argumento de función de tabla; por ejemplo, `numbers(multiIf(*, ...), 2)`. La consulta ahora rechaza el matcher no resoluble con `UNSUPPORTED_METHOD`. [#106647](https://github.com/ClickHouse/ClickHouse/pull/106647) ([Groene AI](https://github.com/groeneai)).
* Se corrige el fallo del servidor al iniciar con `Too many marks in file ...skp_idx_idx.cmrk4, marks expected 0 (bytes size 0)` cuando una tabla `MergeTree` tiene una parte de índice de omisión con cero granules y un archivo de marks no vacío en disco. [#106675](https://github.com/ClickHouse/ClickHouse/pull/106675) ([Groene AI](https://github.com/groeneai)).
* Se rechazan los glob patterns patológicos de `file` que provocarían una recursión no acotada en el listado de directorios. Ahora se aplica una profundidad máxima de recursión de 1000; las consultas que la superen generan `TOO_DEEP_RECURSION` en lugar de hacer que el servidor falle por stack overflow. [#106676](https://github.com/ClickHouse/ClickHouse/pull/106676) ([Groene AI](https://github.com/groeneai)).
* Se corrige el aborto del servidor `Bad cast from type DB::ColumnNothing to DB::ColumnVector<char8_t>` en `FunctionIf::executeForConstAndNullableCondition` cuando la condición `if`/`multiIf` se pliega como constante a `Const(Nullable(Nothing))` (por ejemplo, un subíndice fuera de rango sobre un array vacío, como `arraySort(x -> x, [])[toNullable(1)]`). [#106678](https://github.com/ClickHouse/ClickHouse/pull/106678) ([Groene AI](https://github.com/groeneai)).
* Se corrige la Exception `'Trying to read from input() twice.'` que se producía cuando la función de tabla `input` estaba envuelta en una CTE no MATERIALIZED a la que se hacía referencia desde más de un lugar de la consulta. Ahora la consulta se rechaza con un error claro `INVALID_USAGE_OF_INPUT` en tiempo de planificación. `input` es un flujo de client de un solo uso y solo puede ser consumido por un único origen en el plan de consulta. [#106682](https://github.com/ClickHouse/ClickHouse/pull/106682) ([Groene AI](https://github.com/groeneai)).
* Hace que `FORMAT` se aplique también a la salida de `EXPLAIN` de `EXPLAIN ... INSERT ... SELECT ... FORMAT ...` cuando `SETTINGS` precede a `FORMAT` o cuando el output format es `Values`. Seguimiento de [#101772](https://github.com/ClickHouse/ClickHouse/issues/101772). [#106686](https://github.com/ClickHouse/ClickHouse/pull/106686) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error `RESOURCE_ACCESS_DENIED` espurio y poco frecuente ("Scheduler queue with resource request is about to be destructed") para una consulta a la que en realidad se le había concedido acceso a un recurso de carga de trabajo, causado por la reutilización de un objeto request local al hilo que retenía el fallo de una request anterior. [#106690](https://github.com/ClickHouse/ClickHouse/pull/106690) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una condición de carrera entre la destrucción de objetos `INATSConsumer` y las llamadas a `INATSConsumer::onMsg` sobre ellos mediante callbacks en la biblioteca NATS. [#106692](https://github.com/ClickHouse/ClickHouse/pull/106692) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrigió que `match`, `extract`, `extractAll` y `countMatches` devolvieran resultados incorrectos para expresiones regulares que contienen secuencias de escape hexadecimales u octales. [#106709](https://github.com/ClickHouse/ClickHouse/pull/106709) ([ofeliacode](https://github.com/ofeliacode)).
* El TLS interno de Raft de Keeper ahora respeta la configuración `openSSL.client.verificationMode`. Antes, la verificación de certificados de los pares siempre estaba habilitada para la comunicación Raft entre nodos de Keeper, independientemente de esta configuración, por lo que `none` se ignoraba silenciosamente. Ahora `none` deshabilita explícitamente la verificación de certificados de pares de Raft, mientras que la ausencia de esta configuración mantiene el comportamiento anterior, seguro por defecto. Las configuraciones que establezcan explícitamente `none` dejarán de verificar los certificados de pares de Raft después de la actualización, en consonancia con la intención configurada. [#106726](https://github.com/ClickHouse/ClickHouse/pull/106726) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrige un error lógico en los scripts de inicio en `SYSTEM RELOAD CONFIG`. Además, se cargan los scripts de inicio en `SYSTEM RELOAD CONFIG` (funcionalidad actualmente disponible solo de forma privada). [#106727](https://github.com/ClickHouse/ClickHouse/pull/106727) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Revierte un cambio que hacía que `sumMap` / el combinador `-Map` rechazaran tipos numéricos de valor con nombres personalizados (como `SimpleAggregateFunction(sum, T)` y `Bool`) con `ILLEGAL_TYPE_OF_ARGUMENT: Values for -Map cannot be summed`, lo que rompía agregaciones que antes funcionaban. [#106729](https://github.com/ClickHouse/ClickHouse/pull/106729) ([Nikita Fomichev](https://github.com/fm4v)).
* Se corrigieron varios problemas de seguridad de memoria y agotamiento de recursos en lectores de formato accesibles desde entradas no confiables: una lectura fuera de los límites del montón en el manejo de la longitud de los niveles de definición/repetición de `DataPageV2` del lector nativo de Parquet, un desbordamiento de pila en archivos Parquet con esquemas profundamente anidados y asignaciones de memoria que ignoraban `max_memory_usage` al analizar geometrías WKB/WKT de GeoParquet y cadenas/bytes de Avro. [#106739](https://github.com/ClickHouse/ClickHouse/pull/106739) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió un heap buffer overflow (fallo del servidor) en `decodeHTMLComponent` al decodificar cadenas que contienen las entidades HTML expansivas `&nGt;` o `&nLt;`, explotable por cualquier usuario con un solo `SELECT`. [#106741](https://github.com/ClickHouse/ClickHouse/pull/106741) ([Raúl Marín](https://github.com/Algunenano)).
* Rechaza `CREATE TABLE`, `ALTER TABLE ADD INDEX` y `CREATE INDEX` con `GRANULARITY 0` para skipping indexes con un error `BAD_ARGUMENTS` claro. Antes, esto provocaba una excepción `Inconsistent AST formatting` en compilaciones de depuración. [#106783](https://github.com/ClickHouse/ClickHouse/pull/106783) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que Azure BACKUP/RESTORE ignorara la configuración del endpoint para discos `azure_blob_storage` con formato heredado. [#106784](https://github.com/ClickHouse/ClickHouse/pull/106784) ([Julia Kartseva](https://github.com/jkartseva)).
* Se corrigió una excepción `Bad cast` al podar partes mediante estadísticas `MinMax` cuando una columna clave es `LowCardinality` y la constante del predicado es `LowCardinality(Nullable(...))`. [#106793](https://github.com/ClickHouse/ClickHouse/pull/106793) ([Groene AI](https://github.com/groeneai)).
* Corrige columnas incoherentes (que más tarde provocan `LOGICAL_ERROR`) en caso de excepción (es decir, `MEMORY_LIMIT_EXCEEDED`) durante el análisis sintáctico. [#106802](https://github.com/ClickHouse/ClickHouse/pull/106802) ([Azat Khuzhin](https://github.com/azat)).
* Corrige que, después de configurar `keeper_server.http_control.secure_port`, el servidor devolviera una respuesta HTTP al realizar solicitudes desde clientes HTTPS. [#106822](https://github.com/ClickHouse/ClickHouse/pull/106822) ([linjiayu1025-collab](https://github.com/linjiayu1025-collab)).
* Corrige un error lógico en `parseDateTime` con bytes de entrada no ASCII. [#106856](https://github.com/ClickHouse/ClickHouse/pull/106856) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige que `SHOW CREATE ROW POLICY` emitiera `restrictive`/`permissive` en minúsculas en lugar de mayúsculas, de forma inconsistente con otras palabras clave. [#106865](https://github.com/ClickHouse/ClickHouse/pull/106865) ([Valery Petrov](https://github.com/valerypetrov)).
* Corrige el caso en que parallel replicas no se aplicaba a una vista con `UNION` debido a una tabla vacía en el `UNION`. [#106900](https://github.com/ClickHouse/ClickHouse/pull/106900) ([Igor Nikonov](https://github.com/devcrafter)).
* Corrige un fallo del servidor (SIGSEGV) al leer datos `Protobuf` truncados con `input_format_allow_errors_num > 0`. [#106905](https://github.com/ClickHouse/ClickHouse/pull/106905) ([Andrey Tsarevskiy | Андрей Царевский ](https://github.com/atsarevskiy)).
* Corrige la excepción `THERE_IS_NO_COLUMN` en consultas distribuidas que involucran la optimización `optimize_rewrite_aggregate_function_with_if` cuando el argumento de la función de agregación requiere un cast al tipo `Nullable`. [#106908](https://github.com/ClickHouse/ClickHouse/pull/106908) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Corrige una excepción (`LOGICAL_ERROR`) en el filtro en tiempo de ejecución de JOIN cuando la clave de join contiene un tipo `Variant` o `Dynamic` anidado dentro de un `Tuple`, `Array` o `Map`, y el lado derecho del join tiene un único valor distinto. [#106931](https://github.com/ClickHouse/ClickHouse/pull/106931) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un desbordamiento de enteros con signo (comportamiento indefinido) en `arrayLevenshteinDistanceWeighted` y `arraySimilarity` cuando los arrays de pesos contienen valores enteros grandes. La distancia ponderada ahora se acumula en un entero de mayor tamaño para pesos integrales, por lo que los pesos enteros grandes ya no se desbordan y siguen siendo exactos. [#106934](https://github.com/ClickHouse/ClickHouse/pull/106934) ([Groene AI](https://github.com/groeneai)).
* Corrige un fallo del servidor (desreferenciación de puntero nulo) al ejecutar `TRUNCATE` o `DROP` en una tabla `EmbeddedRocksDB` cuyo identificador de RocksDB se había liberado; por ejemplo, una tabla `read_only` cuyo directorio de datos había sido vaciado por un `TRUNCATE` anterior. [#106940](https://github.com/ClickHouse/ClickHouse/pull/106940) ([Groene AI](https://github.com/groeneai)).
* Corrige una excepción (`std::length_error` reportada como `LOGICAL_ERROR`) al leer desde una table function `*Cluster` como `urlCluster` con una configuración `max_streams_for_files_processing_in_cluster_functions` muy alta. El número de streams ahora se limita a un valor razonable. [#106946](https://github.com/ClickHouse/ClickHouse/pull/106946) ([Groene AI](https://github.com/groeneai)).
* Corrige un fallo del servidor (desreferenciación de puntero nulo de `DB::IConnections`) en `RemoteQueryExecutor` cuando una consulta distribuida se cancela justo antes de enviarse a un shard. [#106950](https://github.com/ClickHouse/ClickHouse/pull/106950) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `elapsed_us` fuera siempre cero y que `read_rows`/`read_bytes` se contabilizaran por debajo de su valor real en `system.processors_profile_log` y `system.query_log` para consultas de flush de inserción asíncrona (`AsyncInsertFlush`). [#106982](https://github.com/ClickHouse/ClickHouse/pull/106982) ([Christoph Wurm](https://github.com/cwurm)).
* Corrige un fallo (`Source column is not Map` / `SIGSEGV`) al fusionar bloques ordenados que contienen una columna `Variant` con una variante `Map` cuyo orden de almacenamiento local difiere de su orden global. [#107011](https://github.com/ClickHouse/ClickHouse/pull/107011) ([Groene AI](https://github.com/groeneai)).
* Corrige un error lógico `conflicted_part_name.has_value()` generado durante una inserción síncrona en una tabla `ReplicatedMergeTree` cuando el bloque insertado se deduplicó por completo y el nodo de deduplicación de la parte en conflicto ya había sido eliminado (por ejemplo, mediante un `DROP PARTITION` concurrente). [#107026](https://github.com/ClickHouse/ClickHouse/pull/107026) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una excepción (error lógico `this->visited_views == right->visited_views`) en `INSERT` cuando dos vistas materializadas sobre la misma source table escriben en la misma target table y una vista dependiente lee esa target table, con `materialized_views_squash_parallel_inserts` habilitado. [#107027](https://github.com/ClickHouse/ClickHouse/pull/107027) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error lógico `Block structure mismatch in UnionStep stream` (aborto del servidor en builds de depuración/sanitizer, `Code: 49` en builds de release) que se producía cuando una rama de un `UNION`/`INTERSECT`/`EXCEPT` leía una columna serializada como `Sparse` mientras que la rama hermana leía esa misma columna como `Full` (por ejemplo, al enviarla a una vista materializada). [#107041](https://github.com/ClickHouse/ClickHouse/pull/107041) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una excepción `LOGICAL_ERROR` al insertar en una tabla DeltaLake con columnas que no coinciden con su esquema de escritura (por ejemplo, una columna `Nested` que se descompone en subcolumns, o una table function con un subconjunto explícito de columnas). Ahora, esas inserciones fallan con un error `INCOMPATIBLE_COLUMNS` visible para el usuario. Cierra [#87402](https://github.com/ClickHouse/ClickHouse/issues/87402). [#107058](https://github.com/ClickHouse/ClickHouse/pull/107058) ([Groene AI](https://github.com/groeneai)).
* Se corrige el error `TYPE_MISMATCH` ("No se puede convertir la cadena ... al tipo ...") en consultas `ORDER BY <numeric column> ... LIMIT n` cuando la materialización diferida colocaba otra columna antes de la columna de ordenación. Ahora, el umbral top-K se lee de la columna de ordenación correcta. [#107060](https://github.com/ClickHouse/ClickHouse/pull/107060) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error de sintaxis cuando una cláusula `FORMAT`, `SETTINGS` o `INTO OUTFILE` sigue a `SHOW ROW POLICIES` o `SHOW MASKING POLICIES` (p. ej., `SHOW ROW POLICIES FORMAT TabSeparated`). [#107061](https://github.com/ClickHouse/ClickHouse/pull/107061) ([Groene AI](https://github.com/groeneai)).
* Se corrige un `ALTER TABLE ... RENAME COLUMN a TO b, RENAME COLUMN c TO a` compuesto que reutiliza un nombre de columna liberado (un "intercambio") entre columnas de distintos tipos. La part materializada registraba el tipo de columna incorrecto, por lo que un `SELECT` posterior fallaba con `Conversion between numeric types and IPv6 is not supported` (o se abortaba al cargar la part en builds de depuración). [#107064](https://github.com/ClickHouse/ClickHouse/pull/107064) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron los resultados no deterministas de la función `roundDown` cuando el array de boundaries contiene `NaN`. El mismo valor de entrada podía devolver un boundary finito o `NaN` según las filas circundantes del lote. Ahora, los boundaries `NaN` se ignoran, por lo que el resultado depende solo de los boundaries finitos. [#107065](https://github.com/ClickHouse/ClickHouse/pull/107065) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `quantileTDigest` y `quantileTDigestWeighted` lanzaran `DECIMAL_OVERFLOW` para argumentos `Date` y `DateTime` cuando el quantile interpolado es fraccionario pero está dentro del rango (por ejemplo, `quantileTDigestWeighted(date, weight)` sobre valores que todos caben en el tipo). Ahora, el resultado fraccionario se trunca al tipo de resultado, en consonancia con `quantilesTDigestWeighted`; los valores realmente fuera de rango siguen generando un error. Cierra: [#106722](https://github.com/ClickHouse/ClickHouse/issues/106722). [#107066](https://github.com/ClickHouse/ClickHouse/pull/107066) ([Groene AI](https://github.com/groeneai)).
* Se corrige que `trimLeft`, `trimRight` y `trimBoth` (y los aliases `ltrim`, `rtrim`, `trim`) lanzaran `TOO_LARGE_STRING_SIZE` cuando el character set de recorte personalizado tiene más de 16 caracteres. Los conjuntos de recorte de cualquier longitud vuelven a estar admitidos. [#107071](https://github.com/ClickHouse/ClickHouse/pull/107071) ([Nikita Fomichev](https://github.com/fm4v)).
* Se corrigió el truncamiento silencioso de valores enteros fuera de rango en definiciones de tipo `Enum8`/`Enum16`. Ahora, `Enum8('a' = 200)` lanza `ARGUMENT_OUT_OF_BOUND` en lugar de crear silenciosamente `Enum8('a' = -56)`. [#107081](https://github.com/ClickHouse/ClickHouse/pull/107081) ([Groene AI](https://github.com/groeneai)).
* Se corrige el orden incorrecto de las filas (y un `LOGICAL_ERROR` "Rows are not sorted with permutation" en builds de depuración) en consultas `ORDER BY ... LIMIT` de varias columnas que ordenan por columnas `Nullable` cuando varias filas empatan en las columnas principales. [#107094](https://github.com/ClickHouse/ClickHouse/pull/107094) ([Groene AI](https://github.com/groeneai)).
* Se corrige un `LOGICAL_ERROR` (`Expected the argument N to have X rows, but it has Y`) al ejecutar una función sobre una columna `Dynamic` generada por un JOIN sobre `Dynamic` (por ejemplo, las filas no emparejadas de un `RIGHT`/`FULL JOIN`, o una subconsulta `EXISTS` correlacionada y descorelacionada en un JOIN). [#107095](https://github.com/ClickHouse/ClickHouse/pull/107095) ([Groene AI](https://github.com/groeneai)).
* Se corrige la recreación espuria de la sesión de ZooKeeper al recargar la configuración. [#107096](https://github.com/ClickHouse/ClickHouse/pull/107096) ([Azat Khuzhin](https://github.com/azat)).
* Se evita mantener el mutex durante las lecturas de ZooKeeper al actualizar las entidades de acceso. [#107097](https://github.com/ClickHouse/ClickHouse/pull/107097) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige una excepción `Logical error: Too large size passed to allocator` al hacer `INSERT` en una tabla `MergeTree` cuando `adaptive_write_buffer_initial_size` se establece en un valor extremadamente grande. El tamaño inicial del búfer de escritura adaptativo ahora se limita al máximo del búfer. [#107104](https://github.com/ClickHouse/ClickHouse/pull/107104) ([Groene AI](https://github.com/groeneai)).
* Se corrige `LOGICAL ERROR` (`Bad cast from type DB::ColumnString to DB::ColumnLowCardinality`) cuando se compara una constante `Variant` que contiene un miembro `LowCardinality` con una columna clave cuya expresión clave es una función determinista no monótona (por ejemplo, un skip index `minmax` sobre `sipHash64(col)`). [#107111](https://github.com/ClickHouse/ClickHouse/pull/107111) ([Groene AI](https://github.com/groeneai)).
* Se corrige un error lógico `Bad cast from type DB::IColumn const* to DB::ColumnNullable const*` cuando se pasa un asterisco calificado (`t.*`) sobre una clave `JOIN ... USING` a una función de agregación y el otro lado de un OUTER JOIN tiene una clave `Nullable` (con `join_use_nulls = 0`). [#107129](https://github.com/ClickHouse/ClickHouse/pull/107129) ([Groene AI](https://github.com/groeneai)).
* Se corrigen lotes de `ALTER TABLE ... ON CLUSTER` que mezclan `MODIFY SETTING`/`RESET SETTING` con un cambio de comentario (por ejemplo, `MODIFY COMMENT 'x', MODIFY SETTING old_parts_lifetime = 123`) y que se aplicaban solo en la réplica líder, dejando desincronizadas las demás réplicas. También se corrige que un `MODIFY COLUMN ... COMMENT` posicional o con `SETTINGS` por columna se clasificara erróneamente como un cambio local de metadatos solo de comentario, lo que dejaba el reordenamiento de columnas fuera de los metadatos replicados y podía causar `INCOMPATIBLE_COLUMNS` al reiniciar la réplica. [#107142](https://github.com/ClickHouse/ClickHouse/pull/107142) ([Groene AI](https://github.com/groeneai)).
* Se corrige un `LOGICAL_ERROR` ("Table expression ... data must be initialized") que se producía cuando un selector de asterisco calificado (por ejemplo, `x.*`) hacía referencia por nombre a una CTE recursiva dentro de su propio término recursivo. Estos selectores ahora expanden las columnas de la tabla recursiva, igual que ya lo hacen en esa posición una columna calificada (`x.a`) o un selector no calificado (`*`). [#107144](https://github.com/ClickHouse/ClickHouse/pull/107144) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron resultados de consulta incorrectos causados por la caché de condiciones de consulta cuando las mutations sobre la marcha (`apply_mutations_on_fly`) o las patch parts filtraban filas antes de `PREWHERE`. Una consulta leída con `apply_mutations_on_fly = 1` podía contaminar la caché, de modo que una consulta posterior con `apply_mutations_on_fly = 0` y el mismo predicado omitiera marcas que debería haber leído y devolviera muy pocas filas. La misma corrección también cubre las políticas de seguridad a nivel de fila, que se anteponen como un filtro antes de `PREWHERE`: una consulta ejecutada bajo una política de fila restrictiva podía contaminar la caché para una consulta posterior que usa el mismo predicado sin esa política. [#107145](https://github.com/ClickHouse/ClickHouse/pull/107145) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `BACKUP` en `AzureBlobStorage`: al copiar un archivo de datos dentro de una copia de seguridad, el objeto de destino se escribía fuera del directorio de la copia. Las comprobaciones de existencia de objetos de Backup en destinos `S3` ahora usan solicitudes `HeadObject` exactas en lugar de listar por prefijo, lo que evita coincidencias falsas con claves de prefijos similares. [#107153](https://github.com/ClickHouse/ClickHouse/pull/107153) ([Pablo Marcos](https://github.com/pamarcos)).
* Se corrigió un desbordamiento de enteros con signo en `quantileExactExclusive`, `quantilesExactExclusive`, `quantileExactInclusive` y `quantilesExactInclusive` que podía producir resultados incorrectos para entradas `Int64` que abarcan un rango amplio. [#107154](https://github.com/ClickHouse/ClickHouse/pull/107154) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` ("Unexpected exception in refresh scheduling") que podía hacer que el servidor entrara en un bucle de fallos al reiniciarse cuando una vista materializada actualizable tiene una dependencia `REFRESH ... DEPENDS ON <name>` cuyo nombre no calificado coincide con una tabla temporal o con el nombre de una CTE. [#107156](https://github.com/ClickHouse/ClickHouse/pull/107156) ([Groene AI](https://github.com/groeneai)).
* Se asegura que no se ejecuten scripts de inicio al recargar la configuración, ya que eso es semánticamente incorrecto, inesperado para los usuarios y, además, propenso a errores. [#107187](https://github.com/ClickHouse/ClickHouse/pull/107187) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se limita el valor máximo de `queue_size` para la prerreserva. [#107205](https://github.com/ClickHouse/ClickHouse/pull/107205) ([Elian Gidoni](https://github.com/eliangidoni)).
* Se corrige el error `Argument ... of GROUPING function is not a part of GROUP BY clause` en consultas que usan la función `grouping` con la configuración `group_by_use_nulls` habilitada. [#107206](https://github.com/ClickHouse/ClickHouse/pull/107206) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se corrige el orden incorrecto de los resultados para `ORDER BY` sobre `UNION ALL` con `optimize_read_in_order` habilitado cuando la canalización de `UNION` se estrechaba debido a la configuración `max_streams_for_union_step`; ahora ese estrechamiento se omite cuando el plan depende de streams de salida de `UNION` ordenados. Cierra [#106880](https://github.com/ClickHouse/ClickHouse/issues/106880). [#107208](https://github.com/ClickHouse/ClickHouse/pull/107208) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigió una posible desreferenciación de puntero nulo al resolver la configuración del proxy durante la fase final del apagado del servidor. [#107231](https://github.com/ClickHouse/ClickHouse/pull/107231) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Se corrigen las consultas de actualización ligera `UPDATE` con réplicas paralelas heredadas habilitadas para tablas `MergeTree` no replicadas. [#107246](https://github.com/ClickHouse/ClickHouse/pull/107246) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una abortación del servidor (error lógico `std::out_of_range`) al insertar en una tabla `Iceberg` cuyos nombres de columna del bloque de escritura no coinciden con los ID de campo del esquema más reciente (por ejemplo, después de que un escritor concurrente cambie el nombre de una columna dentro de la ventana `iceberg_metadata_staleness_ms`). Ahora la inserción falla con un error de consulta claro en lugar de provocar el cierre del servidor. [#107279](https://github.com/ClickHouse/ClickHouse/pull/107279) ([Groene AI](https://github.com/groeneai)).
* Se corrige el bloqueo durante el apagado en server y local debido a que los pool de hilos estáticos mantenían hilos inactivos indefinidamente si `max_*_thread_pool_free_size > 0`. [#107291](https://github.com/ClickHouse/ClickHouse/pull/107291) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrige que la función de tabla `s3` ignorara silenciosamente un `partition_strategy` posicional en minúsculas (por ejemplo, `hive`). [#107297](https://github.com/ClickHouse/ClickHouse/pull/107297) ([Julia Kartseva](https://github.com/jkartseva)).
* Se corrige el manejo de `low_cardinality_allow_in_native_format=0` en la serialización de bloques en paralelo. [#107319](https://github.com/ClickHouse/ClickHouse/pull/107319) ([Azat Khuzhin](https://github.com/azat)).
* Corrige resultados incorrectos (a menudo vacíos) de `ORDER BY <col> LIMIT n` cuando la optimización `use_skip_indexes_for_top_k` está activa y una parte con un índice de omisión `minmax` en la columna de ordenación tiene filas eliminadas mediante una eliminación ligera `DELETE`. La optimización ya no prioriza el `minmax` obsoleto de las partes afectadas por una eliminación ligera frente a las partes que contienen las filas superiores activas. [#107320](https://github.com/ClickHouse/ClickHouse/pull/107320) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error en ClickHouse Keeper por el que los metadatos de la instantánea informados mediante `last_snapshot` (y `zk_latest_snapshot_size` en `mntr`) podían retroceder tras instalar una instantánea obsoleta o duplicada. Esto también podía permitir que una instantánea local con el mismo índice sobrescribiera en su lugar un archivo de instantánea registrado mientras todavía se estaba transmitiendo a un par o subiendo a S3. [#107321](https://github.com/ClickHouse/ClickHouse/pull/107321) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrigió un posible desbordamiento de pila del servidor (crash) al leer un esquema o valor profundamente anidado en los formatos `MsgPack`, `BSON`, `ORC`, `Parquet`, `JSON`, `DeltaLake`, `Iceberg` y `Paimon`. Este tipo de entrada profundamente anidada ahora se rechaza con una excepción. [#107341](https://github.com/ClickHouse/ClickHouse/pull/107341) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige un posible logical error en `SYSTEM SYNC DATABASE REPLICA ... STRICT` y hace que el modificador `STRICT` surta efecto realmente en las réplicas de base de datos. [#107344](https://github.com/ClickHouse/ClickHouse/pull/107344) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Corrige una finalización abrupta del servidor en builds de depuración/sanitizador al leer una tabla `DeltaLake` cuyo esquema de ClickHouse nombra una columna que no está presente en el mapeo de columnas de Delta, por ejemplo, después de que una columna se haya renombrado o eliminado en el log de Delta. Ahora la consulta falla con un error `INCORRECT_DATA` capturable. [#107347](https://github.com/ClickHouse/ClickHouse/pull/107347) ([Groene AI](https://github.com/groeneai)).
* Corrige que `ORDER BY ... WITH FILL` produjera filas adicionales cuando una columna de `ORDER BY` anterior a la columna de relleno usa una intercalación `COLLATE`. Ahora las filas se agrupan por el prefijo de ordenación usando esa intercalación, en consonancia con el orden de clasificación. [#107365](https://github.com/ClickHouse/ClickHouse/pull/107365) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un crash (`LOGICAL_ERROR` en builds de depuración) y un error silencioso de resultados incorrectos (en builds de lanzamiento) al leer una tabla Iceberg cuyos metadatos vuelven a asociar un `schema-id` existente con un esquema distinto entre versiones de metadatos. Esos metadatos ahora se rechazan con `ICEBERG_SPECIFICATION_VIOLATION`. [#107370](https://github.com/ClickHouse/ClickHouse/pull/107370) ([Groene AI](https://github.com/groeneai)).
* Corrige un `LOGICAL_ERROR` (`Variant N (T) has size X, but expected Y`) cuando una función como `toString` o `concat` se aplica a una columna `Variant` o `Dynamic` que contiene una única variante no vacía junto con valores NULL, y la función devuelve su columna de entrada sin cambios. [#107374](https://github.com/ClickHouse/ClickHouse/pull/107374) ([Groene AI](https://github.com/groeneai)).
* Corrige `Logical error: 'Duplicate announcement received for replica number N'`, que podía producirse con réplicas paralelas cuando una subconsulta escalar contenía subconsultas anidadas que leían la misma tabla. [#107381](https://github.com/ClickHouse/ClickHouse/pull/107381) ([Groene AI](https://github.com/groeneai)).
* Corrige `getServerSetting` para que devuelva el valor efectivo en uso de los ajustes del servidor que pueden cambiarse en tiempo de ejecución (como `max_server_memory_usage`, `mark_cache_size`, `max_concurrent_queries`, los tamaños de los thread pool, etc.), en línea con lo que informa `system.server_settings`. [#107388](https://github.com/ClickHouse/ClickHouse/pull/107388) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige `arrayResize` con un argumento de tamaño `Decimal`: ahora el tamaño se interpreta según su valor real (p. ej., `arrayResize([1, 2, 3], 1.5::Decimal(2, 1))` devuelve un elemento) en lugar de según la representación bruta sin escala. [#107389](https://github.com/ClickHouse/ClickHouse/pull/107389) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un `LOGICAL_ERROR` (`block.rows() == getRows()`) que se producía en un `INSERT` asíncrono en una tabla `Alias` cuando `use_strict_insert_block_limits` estaba habilitado. [#107400](https://github.com/ClickHouse/ClickHouse/pull/107400) ([Groene AI](https://github.com/groeneai)).
* Se corrige un error lógico (`Unexpected return type from equals. Expected Nullable(UInt8). Got UInt8`) cuando la optimización de push-down de disyunciones (predicado parcial) empuja una condición sobre una clave `USING` cuyo tipo el JOIN amplía. También se corrige un cierre inesperado del servidor (fallo de segmentación) en el analizador al resolver identificadores en consultas `JOIN ... USING` que contienen ramas `if`/`multiIf` reducibles a constantes que hacen referencia a identificadores desconocidos. [#107407](https://github.com/ClickHouse/ClickHouse/pull/107407) ([Groene AI](https://github.com/groeneai)).
* Se corrige un heap buffer overflow (cierre inesperado del servidor) en `windowFunnel` al finalizar un estado de función de agregación manipulado con un tipo de evento fuera de rango, explotable por cualquier usuario con una sola `SELECT`. [#107412](https://github.com/ClickHouse/ClickHouse/pull/107412) ([uwezkhan](https://github.com/uwezkhan)).
* Se corrige el comportamiento indefinido cuando se pasa un valor de coma flotante no finito (como `nan` o `inf`) como argumento de timestamp/duración de las Table functions `prometheusQuery` / `prometheusQueryRange`. Ese argumento ahora genera `BAD_ARGUMENTS` en lugar de producir un timestamp inválido. [#107417](https://github.com/ClickHouse/ClickHouse/pull/107417) ([Groene AI](https://github.com/groeneai)).
* Se corrige que `MaterializedPostgreSQL` dejara de replicar cambios silenciosamente cuando el nombre de la base de datos o de la tabla de PostgreSQL contenía letras mayúsculas (el consumidor `pgoutput` solicitaba un nombre de publication sin comillas y en minúsculas que no coincidía con la publication que preservaba mayúsculas y minúsculas). [#107423](https://github.com/ClickHouse/ClickHouse/pull/107423) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una excepción (`Logical error: Not-ready Set is passed as the second argument for function 'in'`) cuando una key expression (`ORDER BY`, `PRIMARY KEY`, `PARTITION BY` o un `INDEX` de omisión) contenía un operador `IN` con una tabla en el lado derecho; por ejemplo, `ORDER BY (x IN some_table)`. Estas key expressions ahora se rechazan al crear la tabla. [#107424](https://github.com/ClickHouse/ClickHouse/pull/107424) ([Groene AI](https://github.com/groeneai)).
* Se corrigen resultados incorrectos de la optimización `optimize_rewrite_aggregate_function_with_if` para aggregate functions que preservan valores de carga útil `NULL` (la familia `*_respect_nulls`: `anyRespectNulls`, `first_value_respect_nulls`, `anyLast_respect_nulls`, `last_value_respect_nulls`). La optimización ya no reescribe `f(if(cond, x, NULL))` a la forma `-If` para esas funciones. [#107430](https://github.com/ClickHouse/ClickHouse/pull/107430) ([Groene AI](https://github.com/groeneai)).
* Se corrige una excepción espuria `filesystem error: in last_write_time: No such file or directory` al listar un directorio de object storage en disco local (por ejemplo, una tabla Iceberg en un disco `local`) mientras los archivos se reemplazan de forma concurrente. Una entrada eliminada de forma concurrente ahora se omite de la lista en lugar de abortarla. [#107432](https://github.com/ClickHouse/ClickHouse/pull/107432) ([Groene AI](https://github.com/groeneai)).
* Se corrige el error `THERE_IS_NO_COLUMN` cuando `optimize_if_transform_strings_to_enum = 1` y la expresión optimizada `if`/`transform` sobre literales de cadena es una clave `GROUP BY` u `ORDER BY` sobre una tabla Distributed o réplicas paralelas. [#107455](https://github.com/ClickHouse/ClickHouse/pull/107455) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo raro del servidor en el procesamiento de `DISTINCT` que podía producirse cuando fallaba una asignación de memoria (por ejemplo, al alcanzar un límite de memoria) mientras se inicializaba el conjunto de claves distintas. [#107467](https://github.com/ClickHouse/ClickHouse/pull/107467) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `LOGICAL_ERROR: Unexpected return type from materialize` (y errores similares de incompatibilidad de tipos) cuando `apply_mutations_on_fly = 1` se usa en una tabla con un `UPDATE` on-fly pendiente cuya columna de destino también se lee como entrada de una función mediante un `UPDATE` on-fly anterior, antes de una mutación `ALTER MODIFY COLUMN ... LowCardinality(...)`. [#107475](https://github.com/ClickHouse/ClickHouse/pull/107475) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron credenciales obsoletas de AWS STS al leer tablas `DeltaLake` sobre `S3`: el motor ahora conserva el cliente `S3` con credenciales actualizadas al refrescar su instantánea, por lo que las lecturas de larga duración ya no fallan después de que expire el TTL del token de STS. El proveedor de credenciales STS assume-role ahora también respeta la actualización de credenciales para cualquier acceso a `S3` que use STS. [#107480](https://github.com/ClickHouse/ClickHouse/pull/107480) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Se corrigió que `SELECT ... FINAL` y `OPTIMIZE TABLE ... FINAL` devolvieran filas duplicadas después de que `CREATE TABLE ... CLONE AS`, `ATTACH PARTITION ... FROM` o `MOVE PARTITION ... TO TABLE` adoptaran partes de un `MergeTree` simple en un `ReplacingMergeTree`, `SummingMergeTree` o `AggregatingMergeTree`. El nivel de fusión de la parte adoptada ahora se restablece a 0 cuando los motores de origen y destino difieren, para que el destino la deduplique en la siguiente fusión. [#107481](https://github.com/ClickHouse/ClickHouse/pull/107481) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un underflow de enteros en el parser del PostgreSQL wire protocol, donde un mensaje con un campo de longitud menor que 4 provocaba un wraparound en `size - 4` y un `resize`/`ignore` sobredimensionado. [#107485](https://github.com/ClickHouse/ClickHouse/pull/107485) ([uwezkhan](https://github.com/uwezkhan)).
* La cancelación de consultas ahora se rastrea mejor mientras se espera el quórum en ReplicatedMergeTree. [#107513](https://github.com/ClickHouse/ClickHouse/pull/107513) ([Nikita Taranov](https://github.com/nickitat)).
* Se corrigió `Not-ready Set is passed as the second argument for function 'in'` (`LOGICAL_ERROR`) al consultar una tabla con una clave `PARTITION BY` y una subconsulta `IN`/`NOT IN` envuelta dentro de una expresión más grande, por ejemplo `WHERE (c0 IN (SELECT ...)) != 0`. [#107515](https://github.com/ClickHouse/ClickHouse/pull/107515) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `currentUser()`, `user()`, `SESSION_USER` y `authenticatedUser()` se evaluaran como una cadena vacía en la ruta de vaciado de inserción asíncrona (con `async_insert = 1`). Esto afectaba a las expresiones de columna `DEFAULT`/`MATERIALIZED` y a las vistas materializadas que hacen referencia a estas funciones, que almacenaban silenciosamente una cadena vacía en lugar del usuario que realizaba la inserción. [#107541](https://github.com/ClickHouse/ClickHouse/pull/107541) ([Groene AI](https://github.com/groeneai)).
* Con `enable_analyzer = 1` (el valor predeterminado), al consultar una tabla por su nombre simple cuando solo existe en otra base de datos, ahora se sugiere la tabla correcta; por ejemplo, `SELECT * FROM functions` informa `Maybe you meant system.functions?`. Antes, el nuevo analizador devolvía un error `Unknown table expression identifier` sin sugerencias, mientras que el analizador antiguo ya ofrecía esa sugerencia útil. [#107550](https://github.com/ClickHouse/ClickHouse/pull/107550) ([Groene AI](https://github.com/groeneai)).
* La memoria utilizada por la biblioteca rapidjson (en `prettyPrintJSON`, `JSONMergePatch` y el parser JSON de rapidjson) ahora se contabiliza en el memory tracker, para que las entradas patológicas se rechacen con `MEMORY_LIMIT_EXCEEDED` en lugar de asignar memoria sin límite. [#107555](https://github.com/ClickHouse/ClickHouse/pull/107555) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige un `LOGICAL_ERROR` (`updateFormatPrewhereInfo called more than once`) que podía producirse al ejecutar una consulta sobre una fuente `file()`, `url()` o de almacenamiento de objetos con un `PREWHERE` explícito y un `WHERE` cuando `optimize_prewhere_after_pushdown` estaba habilitado. [#107568](https://github.com/ClickHouse/ClickHouse/pull/107568) ([Groene AI](https://github.com/groeneai)).
* Corrige un fallo (desreferenciación de puntero nulo) que podía producirse cuando un plan de consulta distribuida se ejecutaba localmente (`make_distributed_plan` + `distributed_plan_execute_locally`) con `log_formatted_queries = 1`. [#107570](https://github.com/ClickHouse/ClickHouse/pull/107570) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un abortado del servidor (`std::terminate`, señal 6) durante el desmontaje de una consulta con plan distribuido (`make_distributed_plan = 1`) cuando una comprobación de estado del worker no lograba reprogramar la siguiente comprobación (por ejemplo, `CANNOT_SCHEDULE_TASK` durante el apagado o `MEMORY_LIMIT_EXCEEDED`). Ahora la consulta falla limpiamente y el servidor sigue en ejecución. [#107575](https://github.com/ClickHouse/ClickHouse/pull/107575) ([Groene AI](https://github.com/groeneai)).
* Se añadieron las comprobaciones de límites que faltaban en el análisis de Elf y DWARF. [#107579](https://github.com/ClickHouse/ClickHouse/pull/107579) ([Michael Kolupaev](https://github.com/al13n321)).
* Se añadieron las comprobaciones de límites que faltaban en el lector ORC. [#107580](https://github.com/ClickHouse/ClickHouse/pull/107580) ([Michael Kolupaev](https://github.com/al13n321)).
* Se corrigió una excepción (error lógico `Digest does not match`) que podía producirse en `RENAME TABLE`, `RENAME DATABASE` o `CREATE OR REPLACE TABLE` al trabajar con una tabla `TimeSeries` dentro de una base de datos `Replicated`. Ahora ya se admite cambiar el nombre de una tabla `TimeSeries`. [#107583](https://github.com/ClickHouse/ClickHouse/pull/107583) ([Groene AI](https://github.com/groeneai)).
* Corrige una denegación de servicio no autenticada por agotamiento de memoria en el puerto del protocolo MySQL. [#107599](https://github.com/ClickHouse/ClickHouse/pull/107599) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige `DROP TABLE` de una tabla `TimeSeries` en una base de datos `Replicated`, que antes dejaba huérfanas las tablas internas y hacía que la tarea de eliminación en segundo plano reintentara indefinidamente (`DROP TABLE ... SYNC` se quedaba bloqueado). [#107604](https://github.com/ClickHouse/ClickHouse/pull/107604) ([Groene AI](https://github.com/groeneai)).
* Se corrigieron dos problemas de path traversal en el protocolo de obtención de partes replicadas que podían permitir que una réplica maliciosa escribiera archivos fuera del directorio de la parte. [#107606](https://github.com/ClickHouse/ClickHouse/pull/107606) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrigió el error 'Account must be specified error' al leer una tabla de Delta Lake a través de Azure. [#107620](https://github.com/ClickHouse/ClickHouse/pull/107620) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Se corrigió que `ALTER TABLE ... REPLACE PARTITION` en una tabla `MergeTree` simple resucitara las partes sustituidas tras reiniciar el servidor, lo que hacía que la tabla devolviera tanto las filas de reemplazo como las filas sustituidas obsoletas. [#107623](https://github.com/ClickHouse/ClickHouse/pull/107623) ([Groene AI](https://github.com/groeneai)).
* Corrige un fallo del servidor al leer una vista materializada cuyo destino es una tabla `Distributed` mientras la consulta se ejecuta con `enable_analyzer = 0`. [#107653](https://github.com/ClickHouse/ClickHouse/pull/107653) ([Groene AI](https://github.com/groeneai)).
* Cuando se asignan varias cuotas al mismo usuario o rol, ahora se aplican todas conjuntamente (una consulta se rechaza si se supera cualquiera de ellas), en lugar de aplicarse solo una cuota elegida de forma no determinista. `SHOW QUOTA` y `system.quota_usage` ahora muestran todas las cuotas aplicadas al usuario actual. [#107664](https://github.com/ClickHouse/ClickHouse/pull/107664) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió que `s3` y otras table functions de object storage lanzaran `LOGICAL_ERROR` en lugar de `BAD_ARGUMENTS` cuando se duplica un argumento de tipo key-value, por ejemplo `s3('http://...', format = 'CSV', format = 'TSV')`. [#107670](https://github.com/ClickHouse/ClickHouse/pull/107670) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que la interfaz MySQL fuera incompatible con `MySQL Connector/J` 8.2.0 y versiones posteriores (incluida la rama 9.x). El campo `info` del paquete `OK` ahora usa codificación con longitud, igual que en el servidor MySQL, para que el JDBC driver pueda conectarse. [#107693](https://github.com/ClickHouse/ClickHouse/pull/107693) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un `LOGICAL_ERROR` ("Input nodes size mismatch in dag") cuando una consulta con `make_distributed_plan = 1` hace un join sobre una clave envuelta en una función cuyos dos lados no tienen ningún tipo en común (por ejemplo, `ON intDiv(-1, t1.key) = t2.key` con una clave derecha `UInt64`). [#107701](https://github.com/ClickHouse/ClickHouse/pull/107701) ([Groene AI](https://github.com/groeneai)).
* Leer datos Arrow/ArrowStream con columnas `String`/`Binary` vacías generadas por Apache Arrow Java \< 19.0.0 (incluido Apache Spark) ya no lanza `INCORRECT_DATA`. [#107764](https://github.com/ClickHouse/ClickHouse/pull/107764) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió una excepción `BAD_GET` ("Bad get: has String, requested UInt64") en la estimación de column statistics `countmin` cuando una consulta compara una columna con un literal de otro tipo que no se convierte previamente, como `numeric_col IN (SELECT '5')` o `string_col IN (SELECT 5)`. [#107793](https://github.com/ClickHouse/ClickHouse/pull/107793) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que las table functions `odbc` y `jdbc` se quedaran bloqueadas durante minutos e ignoraran la cancelación de consultas (`KILL QUERY`, `max_execution_time`) cuando el bridge deja de responder mientras infiere la estructura de la tabla remota. [#107809](https://github.com/ClickHouse/ClickHouse/pull/107809) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una excepción (`Logical error: 'index >= result.start'`) al dar formato a una consulta malformada que mezcla las formas posicional y con nombre del argumento `secret` de las table functions `s3`/`gcs`, por ejemplo `s3('url', 'a', 'b', secret_access_key = 'c')`. [#107818](https://github.com/ClickHouse/ClickHouse/pull/107818) ([Groene AI](https://github.com/groeneai)).
* Se corrige que el skip index de tipo `Set` no haga pruning de granules en columnas `LowCardinality`. [#107868](https://github.com/ClickHouse/ClickHouse/pull/107868) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se corrigió que la insert deduplication calculara hashes incorrectos para columnas `String` y `Array` con la server setting `insert_deduplication_version = new_unified_hash`: inserts idénticos podían no deduplicarse porque el hash de deduplicación dependía de la posición de la fila dentro del inserted block. [#107915](https://github.com/ClickHouse/ClickHouse/pull/107915) ([Sema Checherinda](https://github.com/CheSema)).
* Se corrigen resultados incorrectos de `ORDER BY` en columnas `Nullable` con varias claves de ordenación en macOS (Apple Silicon), causados por la falta de extensión de signo en el comparador de ordenación JIT-compiled. [#107973](https://github.com/ClickHouse/ClickHouse/pull/107973) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige una regresión de rendimiento al leer columnas `Dynamic` con varios threads. Causada por [#100730](https://github.com/ClickHouse/ClickHouse/pull/100730). Cierra [#107942](https://github.com/ClickHouse/ClickHouse/issues/107942). [#107997](https://github.com/ClickHouse/ClickHouse/pull/107997) ([Pavel Kruglov](https://github.com/Avogar)).
* La configuración obsoleta del lago de datos `storage_catalog_url` ahora es rechazada correctamente por el mecanismo de protección del catálogo (antes solo se comprobaban `storage_catalog_type` y `storage_aws_access_key_id`), y el mensaje de error enumera todas las configuraciones obsoletas. [#108040](https://github.com/ClickHouse/ClickHouse/pull/108040) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error lógico `Bad cast from type DB::ColumnSparse to DB::ColumnVector<char8_t>` cuando una consulta `LIKE` lee desde un índice `text` a través de la ruta de fallback de lectura directa sobre una columna almacenada de forma dispersa. [#108068](https://github.com/ClickHouse/ClickHouse/pull/108068) ([Groene AI](https://github.com/groeneai)).
* Ahora siempre se ejecutan los handler de finalización de lote de la caché de acceso, incluso cuando el lote está vacío. [#108124](https://github.com/ClickHouse/ClickHouse/pull/108124) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigió un `LOGICAL_ERROR` (`Column identifier is already registered`) en algunas consultas con `UNION ALL`. [#100770](https://github.com/ClickHouse/ClickHouse/pull/100770) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió un uso después de liberar el mutex del almacenamiento de workload durante el apagado del servidor. [#101447](https://github.com/ClickHouse/ClickHouse/pull/101447) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Se corrigió un interbloqueo en `ALTER DATABASE MODIFY COMMENT` con el catálogo `Shared`. [#103683](https://github.com/ClickHouse/ClickHouse/pull/103683) ([Nikolay Degterinsky](https://github.com/evillique)).
* Un identificador Unicode entrecomillado vacío ahora genera `SYNTAX_ERROR` en lugar de `CANNOT_PARSE_QUOTED_STRING`. [#104173](https://github.com/ClickHouse/ClickHouse/pull/104173) ([leonard9893](https://github.com/leonard9893)).
* Se preservan los tipos de parámetro originales de las funciones de agregación `timeSeries*` para que los tipos `AggregateFunction` hagan correctamente el round-trip al volver a adjuntar tablas y con réplicas paralelas. [#104812](https://github.com/ClickHouse/ClickHouse/pull/104812) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se corrigió un `LOGICAL_ERROR` para un CTE materializado con `serialize_query_plan` y réplicas paralelas. [#104896](https://github.com/ClickHouse/ClickHouse/pull/104896) ([Igor Nikonov](https://github.com/devcrafter)).
* Se corrigió un desbordamiento de enteros con signo en las funciones `timeSeries*ToGrid` cuando el parámetro de staleness (window) está cerca de `INT64_MAX`. [#105319](https://github.com/ClickHouse/ClickHouse/pull/105319) ([Groene AI](https://github.com/groeneai)).
* Un valor de la configuración `compatibility` ya no revierte `apply_row_policy_after_final` a `false`, por lo que las políticas de fila siempre se aplican correctamente con `FINAL`. [#105637](https://github.com/ClickHouse/ClickHouse/pull/105637) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigió `clickhouse chdig client` respetando `SETPGROUP`/`RESETIDS`/`SETSIGDEF` en el stub de `posix_spawn`. [#105858](https://github.com/ClickHouse/ClickHouse/pull/105858) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigió una excepción durante las comprobaciones de integridad de merge-tree en projections cuando el executor de merge/mutate no estaba inicializado. [#105919](https://github.com/ClickHouse/ClickHouse/pull/105919) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Durante el análisis de índices en projections, el índice `minmax` ahora se carga desde la propia projection en lugar de desde la parte padre, lo que produce resultados correctos. [#105940](https://github.com/ClickHouse/ClickHouse/pull/105940) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se corrigió una excepción en `addMonotonicChain` para `materialize(monotonic_chain(...))`. [#106050](https://github.com/ClickHouse/ClickHouse/pull/106050) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se corrigió el fallo de `RESTORE` en backups que incluyen objetos dependientes de `MASKING POLICY`. [#106086](https://github.com/ClickHouse/ClickHouse/pull/106086) ([Julia Kartseva](https://github.com/jkartseva)).
* Se corrigió una posible corrupción de memoria al expandir funciones SQL definidas por el usuario con `prefer_column_name_to_alias` habilitado. [#106121](https://github.com/ClickHouse/ClickHouse/pull/106121) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Un Diccionario que usa la conexión del bridge ahora se recarga después de reiniciar el servidor, restableciendo la conexión. Cierra [#106151](https://github.com/ClickHouse/ClickHouse/issues/106151). [#106152](https://github.com/ClickHouse/ClickHouse/pull/106152) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Se corrigió la caché del sistema de archivos para `LocalObjectStorage`. [#106239](https://github.com/ClickHouse/ClickHouse/pull/106239) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrigió el source remoto diferido para funciones de tabla con `use_delayed_remote_source`. [#106470](https://github.com/ClickHouse/ClickHouse/pull/106470) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se corrigió `timeSeriesLastToGrid` para timestamps anteriores al inicio de la cuadrícula y timestamps fuera de la ventana. [#106504](https://github.com/ClickHouse/ClickHouse/pull/106504) ([Vitaly Baranov](https://github.com/vitlibar)). [#106577](https://github.com/ClickHouse/ClickHouse/pull/106577) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se corrigió un `LOGICAL_ERROR` (`Inconsistent AST formatting`) en un nombre de función que contenía parámetros de consulta. [#106635](https://github.com/ClickHouse/ClickHouse/pull/106635) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se corrigió un error lógico cuando una tabla se elimina antes de la deserialización de tareas del plan distribuido. [#106944](https://github.com/ClickHouse/ClickHouse/pull/106944) ([Alexander Gololobov](https://github.com/davenger)).
* Se usa una comparación exacta para las claves `Nullable` de `GROUP BY`. [#107050](https://github.com/ClickHouse/ClickHouse/pull/107050) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se corrigió un `LOGICAL_ERROR` (`Trying to get name of not a column`) que se producía cuando un argumento de función de una función de tabla no era una expresión de columna (por ejemplo, un matcher `*` sin resolver de `multiIf`/`CASE`). [#107411](https://github.com/ClickHouse/ClickHouse/pull/107411) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió el crecimiento sin límites de la caché de zona horaria (`DateLUT`) cuando se procesan muchos nombres de zona horaria no válidos distintos. [#107464](https://github.com/ClickHouse/ClickHouse/pull/107464) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ahora se escribe la entrada de `part_log` antes de informar que una mutation simple de `MergeTree` ha finalizado. [#107741](https://github.com/ClickHouse/ClickHouse/pull/107741) ([Azat Khuzhin](https://github.com/azat)).
* `arrayFold` ahora valida su argumento de array frente a entradas malformadas. [#107932](https://github.com/ClickHouse/ClickHouse/pull/107932) ([Michael Kolupaev](https://github.com/al13n321)).
* Se corrigió una rara carrera de dato y un posible uso de memoria ya liberada en el lector en caché del archivo de índices de omisión de una part de `MergeTree`, que podía ocurrir cuando una consulta leía índices de omisión mientras la part se movía o se renombraba. [#107995](https://github.com/ClickHouse/ClickHouse/pull/107995) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió la regresión de rendimiento de las subcolumnas de `Map` con `PREWHERE`. [#107988](https://github.com/ClickHouse/ClickHouse/pull/107988) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige `parseDateTimeBestEffort` con una zona horaria que lanzaba `CANNOT_PARSE_DATETIME` en filas NULL de `toString(Nullable(DateTime64))`. [#108310](https://github.com/ClickHouse/ClickHouse/pull/108310) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigieron la función de tabla y el engine `ArrowFlight`, que rechazaban una colección con nombre que omitía la clave opcional `dataset` con el error `No such key 'dataset'`. [#108041](https://github.com/ClickHouse/ClickHouse/pull/108041) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error lógico `Inconsistent AST formatting` en una función de ventana sin argumentos dentro de una declaración `CODEC` o de engine (por ejemplo, `CODEC(cume_dist() OVER (...))`); esa función ahora conserva sus paréntesis para que la consulta supere correctamente un ciclo de formato y análisis. [#107806](https://github.com/ClickHouse/ClickHouse/pull/107806) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige `hasToken` con una needle que contiene separadores y que devolvía resultados silenciosamente mediante un text index en lugar de generar `BAD_ARGUMENTS`. [#108189](https://github.com/ClickHouse/ClickHouse/pull/108189) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* La configuración `use_skip_indexes_on_data_read` ahora puede revertirse a su valor predeterminado anterior a la 26.1 (`false`) mediante la configuración `compatibility`, lo que proporciona una vía de escape para una regresión de rendimiento en la que la ruta de lectura sobre datos impide la poda de rangos de marcas de índices de omisión `minmax`/`set`/`bloom_filter`. [#108330](https://github.com/ClickHouse/ClickHouse/pull/108330) ([egor romanov](https://github.com/egor-click)).
* Se corrigió un posible fallo (desreferencia de puntero nulo) cuando la sobrescritura `database`/`db` de una colección con nombre pasada a `remote`/`remoteSecure` no es un nombre de base de datos constante, por ejemplo `remote(nc, database = (SELECT 1))`. La consulta ahora falla con un error claro en lugar de provocar un fallo. [#108271](https://github.com/ClickHouse/ClickHouse/pull/108271) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que una vista materializada actualizable se quedara bloqueada si la conexión con ZooKeeper se perdía en un mal momento. [#108234](https://github.com/ClickHouse/ClickHouse/pull/108234) ([Michael Kolupaev](https://github.com/al13n321)).
* Se corrige `Bad cast from type DB::ColumnVector<...> to DB::ColumnTuple` al leer una columna `Array(Tuple(...))` cuyo valor se rellena con valores predeterminados, por ejemplo después de `ALTER TABLE ... ADD COLUMN` o tras una mutación `ALTER TABLE ... CLEAR COLUMN` sin finalizar aplicada sobre la marcha. [#107232](https://github.com/ClickHouse/ClickHouse/pull/107232) ([Groene AI](https://github.com/groeneai)).
* Se corrige un error lógico `Bad cast from type DB::ColumnDynamic to DB::ColumnNullable` cuando una referencia explícita a una clave `JOIN ... USING` cuyo common supertype es `Dynamic` se pasa a una función de agregado, por ejemplo `count(t.key) IGNORE NULLS`. [#107289](https://github.com/ClickHouse/ClickHouse/pull/107289) ([Groene AI](https://github.com/groeneai)).
* Se corrige la pérdida silenciosa de datos en `MergeTree` simple (no replicado) cuando `REPLACE PARTITION`, `MOVE PARTITION`, `DETACH PARTITION` o `DETACH PART` se ejecuta sobre una partición que todavía tiene parches de actualización ligera sin aplicar. Estas operaciones ahora rechazan el comando, tal como ya hace `ReplicatedMergeTree`. [#107386](https://github.com/ClickHouse/ClickHouse/pull/107386) ([Groene AI](https://github.com/groeneai)).
* Se corrige un fallo (SIGSEGV en compilaciones release, aserción de incompatibilidad de tipos en compilaciones debug) en `has` sobre un `Map` con una clave `Dynamic` cuando el argumento de búsqueda es `LowCardinality`, por ejemplo `has(map('a'::Dynamic, ...), toLowCardinality('b'))`. [#107956](https://github.com/ClickHouse/ClickHouse/pull/107956) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` ("Block structure mismatch ... between `ConvertingTransform` and `RemovingReplicatedColumnsTransform`") al insertar en una vista materializada cuya tabla de destino `TO` declara una columna con un `Enum` más amplio que el que produce el `SELECT` de la vista. Ahora se aplica correctamente la ampliación válida de `Enum`. [#107648](https://github.com/ClickHouse/ClickHouse/pull/107648) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el error `NUMBER_OF_COLUMNS_DOESNT_MATCH` al consultar una tabla `Distributed` (o al usar réplicas paralelas) que tiene varias columnas `ALIAS` que se expanden a la misma expresión y que se referencian junto con `ORDER BY`/`GROUP BY`/`HAVING`. [#107913](https://github.com/ClickHouse/ClickHouse/pull/107913) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Se corrigió un comportamiento no definido (se pasó un puntero nulo a `memcpy`) en las funciones `detectCharset` y `detectLanguageUnknown` cuando la cadena de entrada supera los 32768 bytes y no se puede detectar ningún conjunto de caracteres. [#108250](https://github.com/ClickHouse/ClickHouse/pull/108250) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `signed integer overflow` (comportamiento no definido) en `dateDiff` con las unidades `hour` y `minute` en valores extremos de `DateTime64`, cercanos a los límites del rango de `Int64`. [#108229](https://github.com/ClickHouse/ClickHouse/pull/108229) ([Groene AI](https://github.com/groeneai)).
* Se corrigió `Too many marks` en un índice de texto sobre una parte fusionada vacía. [#106867](https://github.com/ClickHouse/ClickHouse/pull/106867) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigió un `LOGICAL_ERROR` ("Unexpected return type from if") al leer una columna con `apply_mutations_on_fly = 1` después de un `ALTER UPDATE col = ... WHERE <cond>` con una condición no constante o falsa, seguido de `ALTER MODIFY COLUMN col <new type>`. [#108128](https://github.com/ClickHouse/ClickHouse/pull/108128) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una interrupción del server (`Logical error` en `IColumn::insertFrom`) al convertir un `Array(Dynamic)` o `Array(Variant)` a `QBit` con `accurateCastOrNull`, por ejemplo `accurateCastOrNull(CAST(range(114), 'Array(Dynamic)'), 'QBit(Float32, 114)')`. [#108288](https://github.com/ClickHouse/ClickHouse/pull/108288) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un error de sintaxis cuando un alias sigue a una subconsulta en `DESCRIBE TABLE (...) AS ...`. [#100205](https://github.com/ClickHouse/ClickHouse/pull/100205) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* `getClientHTTPHeader` ahora se trata correctamente como no determinista, por lo que su resultado ya no se reutiliza incorrectamente en la caché de resultados de consultas. [#108029](https://github.com/ClickHouse/ClickHouse/pull/108029) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-build-testing-packaging-improvement">
  #### Mejora en compilación/pruebas/empaquetado
</div>

* Compilar `delta-kernel-rs` con la feature `default-engine-native-tls` para que su propio HTTP client (`reqwest`) pueda reutilizar el OpenSSL que ClickHouse ya tiene enlazado. Esta es solo una habilitación parcial de `native-tls`: `object_store` sigue forzando `reqwest/rustls-tls-native-roots`, por lo que `reqwest` acaba con los backends `native-tls` y `rustls`. Por ahora, `delta-kernel-rs` sigue deshabilitado en MSan porque `ring` todavía se compila a través de `object_store` (tanto de forma transitiva mediante `rustls` como directamente para la firma HMAC de solicitudes de AWS), y su ensamblador escrito a mano no genera los símbolos que requiere MSan (registrado en el proyecto upstream en [arrow-rs-object-store#585](https://github.com/apache/arrow-rs-object-store/pull/585)). [#96856](https://github.com/ClickHouse/ClickHouse/pull/96856) ([Austin Bonander](https://github.com/abonander)).
* Añadir optimización posenlazado con PGO (Profile-Guided Optimization) y BOLT (Binary Optimization and Layout Tool) para el binario `clickhouse`. Los profiles se recopilan a partir de workloads de CI y se aplican como una medida de mejor esfuerzo durante los builds de release; ambas etapas recurren a una salida no optimizada si un profile está desactualizado o es incompatible. A día de hoy, PGO no aporta beneficios. [#100938](https://github.com/ClickHouse/ClickHouse/pull/100938) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Añadir el modo `--storage` a `clickhouse keeper-bench` para ejecutar benchmarks de `KeeperStorage` en el mismo proceso (sin red, sin raft, sin máquina de estados), usando las mismas secciones de configuración `setup`/`generator` que el modo de red. [#103081](https://github.com/ClickHouse/ClickHouse/pull/103081) ([Michael Kolupaev](https://github.com/al13n321)).
* Corregir la compilación con `ENABLE_AWS_S3=OFF`. [#105390](https://github.com/ClickHouse/ClickHouse/pull/105390) ([Yue Ni](https://github.com/niyue)).
* Actualizar `mongo-cxx-driver` a r4.3.0. [#105522](https://github.com/ClickHouse/ClickHouse/pull/105522) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Corregir la compilación con RapidJSON. [#105674](https://github.com/ClickHouse/ClickHouse/pull/105674) ([Ilya Golshtein](https://github.com/ilejn)).
* Acelerar la compilación eliminando includes transitivos de las cabeceras `base/` de uso extendido y quitando código no utilizado de `Poco/Logger.h`, incluido como dependencia vendorizada. [#105702](https://github.com/ClickHouse/ClickHouse/pull/105702) ([Raúl Marín](https://github.com/Algunenano)).
* Actualizar `libxml2` de 2.15.1 a 2.15.3. [#105985](https://github.com/ClickHouse/ClickHouse/pull/105985) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Usar `expat` 2.8.1 dentro de Poco. [#105988](https://github.com/ClickHouse/ClickHouse/pull/105988) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Actualizar `thrift` a `v0.23.0`. [#105993](https://github.com/ClickHouse/ClickHouse/pull/105993) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Usar la etiqueta `REL_18_4` de `postgres`. [#105994](https://github.com/ClickHouse/ClickHouse/pull/105994) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Actualizar `krb5` a 1.22.2. [#106076](https://github.com/ClickHouse/ClickHouse/pull/106076) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Actualizar `curl` integrado a 8.20.0. [#106077](https://github.com/ClickHouse/ClickHouse/pull/106077) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se actualizó `mariadb-connector-c` a la versión 3.1.29. Se conservaron todos los parches relevantes para ClickHouse. [#106287](https://github.com/ClickHouse/ClickHouse/pull/106287) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Se actualizaron los digests de la base image distroless para corregir CVE en libssl3t64. [#106360](https://github.com/ClickHouse/ClickHouse/pull/106360) ([Rahul Nair](https://github.com/motsc)).
* Se utiliza `wasmtime` v45.0.1. [#106836](https://github.com/ClickHouse/ClickHouse/pull/106836) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se actualizó `openssl` a la versión 3.5.7. [#106844](https://github.com/ClickHouse/ClickHouse/pull/106844) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* La build distroless de Docker ahora también actualiza las tags flotantes `:X.Y-distroless` y `:X.Y.Z-distroless`, no solo la tag de la versión completa. [#106932](https://github.com/ClickHouse/ClickHouse/pull/106932) ([Rahul Nair](https://github.com/motsc)).
* Se deshabilitaron features de `curl` que no se usan, como la autenticación NTLM, cookies, alt-svc, HSTS, DNS-over-HTTPS, netrc, MIME y AWS SigV4. [#107226](https://github.com/ClickHouse/ClickHouse/pull/107226) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se actualizó `NuRaft` con una corrección para un livelock durante la instalación de snapshots que se producía cuando el snapshot IO se ejecutaba en un background thread. La configuración de Keeper `nuraft_use_bg_thread_for_snapshot_io` sigue deshabilitada de forma predeterminada; ahora CI la aleatoriza para cubrir ambos modos. [#107338](https://github.com/ClickHouse/ClickHouse/pull/107338) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrigió la compilación de `abseil` cuando la ruta de checkout de ClickHouse contiene una substring que coincide con una extension de header. [#107349](https://github.com/ClickHouse/ClickHouse/pull/107349) ([zhiqiang](https://github.com/zhiqiang-hhhh)).
* El cache size de L2 ahora se determina a partir de `CPUID` en x86\_64 en lugar de `sysconf(_SC_LEVEL2_CACHE_SIZE)`, específico de glibc, que no está disponible en musl libc. [#107469](https://github.com/ClickHouse/ClickHouse/pull/107469) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se aumentó el stack size de las builds con musl a 8 MiB para admitir queries con anidamiento profundo. [#107470](https://github.com/ClickHouse/ClickHouse/pull/107470) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* El conjunto de símbolos de la biblioteca C localizados en bibliotecas estáticas de Rust ahora se deriva de las bibliotecas de referencia reales en lugar de una allowlist mantenida manualmente, para cubrir todos los builtins de compiler-rt y las funciones de libm de la plataforma. [#107571](https://github.com/ClickHouse/ClickHouse/pull/107571) ([Raúl Marín](https://github.com/Algunenano)).
* Se cambiaron las image distroless de server y Keeper a `gcr.io/distroless/base-nossl-debian13` para que solo incluyan las bibliotecas con las que ClickHouse realmente enlaza y dejen de incorporar las que ya enlazamos estáticamente. [#107837](https://github.com/ClickHouse/ClickHouse/pull/107837) ([Rahul Nair](https://github.com/motsc)).
* Se reactivaron 50 stateless tests en macOS (`arm_darwin`) que se omitían por estar stale, y se usa `fsync` en lugar de `F_FULLFSYNC` para la sincronización de directory en macOS. [#107887](https://github.com/ClickHouse/ClickHouse/pull/107887) ([Raúl Marín](https://github.com/Algunenano)).

<div id="265">
  ### Lanzamiento de ClickHouse 26.5, 2026-05-21. [Presentación](https://presentations.clickhouse.com/2026-release-26.5/), [Vídeo](https://www.youtube.com/watch?v=P1IDAvsi7p8)
</div>

<div id="268-backward-incompatible-change">
  #### Cambio incompatible con versiones anteriores
</div>

* Se cambiaron los valores predeterminados de `date_time_input_format` y `cast_string_to_date_time_mode` de `basic` a `best_effort`. Las consultas que antes no podían interpretar cadenas de fecha y hora no básicas (por ejemplo, `2024 April 4`, `Apr 15, 2020 10:30:00`) ahora pueden ejecutarse correctamente de forma predeterminada. Para mantener el comportamiento estricto anterior de análisis, configure estos ajustes en `basic` (o use `compatibility`). [#89334](https://github.com/ClickHouse/ClickHouse/pull/89334) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El nombre de elemento de Tuple `null` ahora está prohibido porque entra en conflicto con el nombre de subcolumna usado para los mapas nulos de Nullable, lo que provoca una resolución ambigua de subcolumnas. [#98377](https://github.com/ClickHouse/ClickHouse/pull/98377) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadieron los ajustes `dynamic_disk_allow_from_env`, `dynamic_disk_allow_from_zk`, `dynamic_disk_allow_include` para impedir el uso de `from_env`, `from_zk` e `include` en discos dinámicos. Es un cambio incompatible con versiones anteriores porque prohíbe de forma predeterminada un comportamiento que antes estaba permitido de forma predeterminada. [#99138](https://github.com/ClickHouse/ClickHouse/pull/99138) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Ya no se puede usar el lector y escritor de Parquet obsoleto basado en Arrow. En su lugar, se usará la implementación nativa. [#100949](https://github.com/ClickHouse/ClickHouse/pull/100949) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `SHOW CREATE TABLE t` ahora da preferencia a la tabla temporal cuando existen tanto una tabla permanente como una tabla temporal llamadas `t` y no se especifica ninguna base de datos, en consonancia con el comportamiento existente de `DESCRIBE TABLE`. Además, ahora se admite la sintaxis `DESCRIBE TEMPORARY TABLE`. [#100966](https://github.com/ClickHouse/ClickHouse/pull/100966) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se redujo el valor predeterminado de `http_max_fields` de 1,000,000 a 1,000 y el de `http_max_field_name_size` de 128 KB a 4 KB para limitar el uso de memoria antes de la autenticación por parte de las conexiones HTTP. Se añadieron los ajustes `http_max_request_header_size` y `http_headers_read_timeout`. Los usuarios que dependan de los límites superiores anteriores pueden restaurarlos mediante ajustes. [#103285](https://github.com/ClickHouse/ClickHouse/pull/103285) ([Sema Checherinda](https://github.com/CheSema)).
* Se añadió una columna anidada `histograms` a `system.metric_log` que toma una instantánea de cada métrica de histograma registrada por fila, con un nuevo ajuste `system_metric_log_show_zero_values_in_histograms` para controlar la emisión de valores cero. Deja obsoleta la tabla `system.histogram_metric_log`. [#103770](https://github.com/ClickHouse/ClickHouse/pull/103770) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* `CAST` a `DateTime` o `DateTime64` sin una zona horaria explícita ahora conserva la zona horaria de su argumento de origen (cuando el origen es un `DateTime`/`DateTime64` con una zona horaria explícita), en consonancia con el comportamiento de las funciones `toDateTime`/`toDateTime64`. Cierra [#55072](https://github.com/ClickHouse/ClickHouse/issues/55072). [#104433](https://github.com/ClickHouse/ClickHouse/pull/104433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se eliminó la table function `kql`. Use `SET dialect = 'kusto'` para ejecutar consultas en el dialecto KQL. [#105101](https://github.com/ClickHouse/ClickHouse/pull/105101) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las window functions `RANK` y `DENSE_RANK` ahora rechazan argumentos y lanzan `NUMBER_OF_ARGUMENTS_DOESNT_MATCH`, en línea con el estándar SQL. Antes, consultas como `RANK(x) OVER (ORDER BY id)` se aceptaban silenciosamente, ignorando el argumento. Para restaurar el comportamiento permisivo anterior, configure `allow_rank_dense_rank_arguments = 1`. Cierra [#49526](https://github.com/ClickHouse/ClickHouse/issues/49526). [#104324](https://github.com/ClickHouse/ClickHouse/pull/104324) ([Groene AI](https://github.com/groeneai)).

<div id="268-new-feature">
  #### Nueva funcionalidad
</div>

* Se agregó una nueva configuración `max_bytes_ratio_before_external_join`, que refleja `max_bytes_ratio_before_external_group_by` y `max_bytes_ratio_before_external_sort`. Expresa el umbral de spill a disco para hash joins como una fracción de la memoria disponible; combinada con el valor absoluto `max_bytes_before_external_join`, se aplica el umbral resultante más bajo. [#103862](https://github.com/ClickHouse/ClickHouse/pull/103862) ([Alexey Milovidov](https://github.com/alexey-milovidov)). La nueva configuración `max_bytes_ratio_before_external_join` ahora está habilitada de forma predeterminada con un valor de 0.5, reflejando `max_bytes_ratio_before_external_group_by` y `max_bytes_ratio_before_external_sort`. Los hash joins pasan automáticamente a grace hash join una vez que los datos del lado derecho superan la mitad de la memoria disponible del sistema (cuando hay límites de memoria configurados). [#104285](https://github.com/ClickHouse/ClickHouse/pull/104285) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se agregó la table function `filesystem`. Permite representar la estructura de directorios como una tabla y consultar con SQL los metadatos y el contenido de los archivos. Originalmente [#42039](https://github.com/ClickHouse/ClickHouse/pull/42039) por @perst20. Consulte [#42039](https://github.com/ClickHouse/ClickHouse/issues/42039). Consulte [#50208](https://github.com/ClickHouse/ClickHouse/issues/50208). [#53610](https://github.com/ClickHouse/ClickHouse/pull/53610) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Permite pasar nombres de funciones sin envoltura a funciones de orden superior como `arrayMap`, `arrayFilter`, etc. Por ejemplo, `arrayMap(negate, [1, 2, 3])` ahora es equivalente a `arrayMap(x -> negate(x), [1, 2, 3])`. [#101033](https://github.com/ClickHouse/ClickHouse/pull/101033) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se agregan la configuración `send_table_structure_on_insert_with_inline_data` y la opción `--inline-insert-data` del client para permitir que el server analice por sí mismo los datos de INSERT en línea a través del native protocol, evitando el viaje de ida y vuelta para recibir la estructura de la tabla y mejorando el rendimiento en muchas inserciones pequeñas. [#101034](https://github.com/ClickHouse/ClickHouse/pull/101034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se agregan las funciones `tokenizeQuery` y `highlightQuery` para la tokenización de consultas SQL y el resaltado de sintaxis. `tokenizeQuery` devuelve tokens del lexer con desplazamientos de bytes y tipos de token; `highlightQuery` devuelve rangos de resaltado de sintaxis basados en el parser con categorías de resaltado (keyword, identificador, función, número, cadena, etc.). [#101054](https://github.com/ClickHouse/ClickHouse/pull/101054) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se agrega la configuración `url_base` para resolver URL relativas en la table function `url` y el table engine `URL`, siguiendo la semántica de RFC 3986. [#101113](https://github.com/ClickHouse/ClickHouse/pull/101113) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se admiten valores negativos en la cláusula `LIMIT BY` para seleccionar filas desde el *final* de cada grupo en lugar del inicio. Por ejemplo, `LIMIT -2 BY id` devuelve las dos últimas filas por `id`. También se admiten desplazamientos negativos (`LIMIT -1 OFFSET -1 BY id`) y signos mixtos (`LIMIT -2 OFFSET 1 BY id`). [#103222](https://github.com/ClickHouse/ClickHouse/pull/103222) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se admite la función `json_value` para generar salida con `tuple` y `array`, lo que mejora el rendimiento de múltiples consultas JSON. [#78362](https://github.com/ClickHouse/ClickHouse/pull/78362) ([kevinyhzou](https://github.com/KevinyhZou)). Se admite el argumento JSONPath de múltiples rutas `Tuple`/`Array` en `JSON_VALUE`, `JSON_EXISTS` y `JSON_QUERY`, por @KevinyhZou. [#101102](https://github.com/ClickHouse/ClickHouse/pull/101102) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se introduce un nuevo parámetro `kafka_autodetect_client_rack`. Si se configura, detecta la zona de disponibilidad mediante las capacidades de la nube y la propaga como parámetro `client.rack` de `librdkafka` para evitar comunicaciones entre zonas. [#81323](https://github.com/ClickHouse/ClickHouse/pull/81323) ([Ilya Golshtein](https://github.com/ilejn)).
* Se añade el tipo de evento `Read` a `system.blob_storage_log` para hacer seguimiento de las operaciones de lectura en el almacenamiento de objetos, controlado por la nueva configuración `enable_blob_storage_log_for_read_operations`. [#96867](https://github.com/ClickHouse/ClickHouse/pull/96867) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los usuarios ahora pueden ver los watches de ZooKeeper emitidos por `clickhouse-server` mediante la nueva tabla `system.zookeeper_watches`. [#99277](https://github.com/ClickHouse/ClickHouse/pull/99277) ([Den Kalantaevskii](https://github.com/Diskein)).
* Se añadió el evento de perfil `Shards`, que cuenta el número de segmentos implicados en las consultas distribuidas, sumado en todas las tablas. [#99470](https://github.com/ClickHouse/ClickHouse/pull/99470) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las UDF de `WASM` pueden declararse como `DETERMINISTIC` y pasar a estar sujetas al plegado de constantes. [#100005](https://github.com/ClickHouse/ClickHouse/pull/100005) ([Vasily Chekalkin](https://github.com/bacek)).
* Se añade la configuración `parallel_replicas_prefer_local_replica`: cuando está deshabilitada, las réplicas paralelas se seleccionan únicamente mediante el algoritmo de equilibrio de carga, lo que permite que incluso las consultas con `max_parallel_replicas = 1` se dirijan a otro host. [#100139](https://github.com/ClickHouse/ClickHouse/pull/100139) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añaden las configuraciones de servidor `{disk,storage,http}_connections_rcvbuf` y `{disk,storage,http}_connections_sndbuf` para controlar el tamaño de los búferes de socket TCP en las conexiones HTTP salientes, lo que permite a los operadores anular el autotuning del kernel y limitar el uso de memoria por conexión. [#100478](https://github.com/ClickHouse/ClickHouse/pull/100478) ([Sema Checherinda](https://github.com/CheSema)).
* Se admite `CREATE OR REPLACE MATERIALIZED VIEW` con la misma semántica de intercambio atómico que `CREATE OR REPLACE TABLE`. Funciona con tablas internas, tablas `TO`, `POPULATE`, `REFRESH` y `ON CLUSTER`. [#100539](https://github.com/ClickHouse/ClickHouse/pull/100539) ([DQ](https://github.com/il9ue)).
* Se añaden las métricas de histograma `s3_read_request_duration_microseconds` y `s3_read_request_bytes` para observar la duración de la conexión de las solicitudes GET a S3 y los bytes consumidos, visibles en `system.histogram_metrics` y en el endpoint de Prometheus. [#102058](https://github.com/ClickHouse/ClickHouse/pull/102058) ([Sema Checherinda](https://github.com/CheSema)).
* Se añaden los motores de tabla `Paimon`, `PaimonS3`, `PaimonAzure`, `PaimonHDFS` y `PaimonLocal`, con compatibilidad con lectura incremental respaldada por el seguimiento del progreso de snapshots de Keeper. El modo incremental devuelve solo las filas nuevas desde el último snapshot confirmado. Las lecturas delta de snapshots específicos están disponibles mediante `paimon_target_snapshot_id`, y los límites de snapshots por consulta, mediante `max_consume_snapshots`. La actualización de metadatos en segundo plano se puede configurar con `paimon_metadata_refresh_interval_sec`. Controlado por `allow_experimental_paimon_storage_engine`. [#102343](https://github.com/ClickHouse/ClickHouse/pull/102343) ([XiaoBinMu](https://github.com/Binnn-MX)).
* Se añadió una nueva configuración de tabla de Kafka, `kafka_map_virtual_columns_on_write`. Cuando está habilitada, las columnas llamadas `_key`, `_timestamp`, `_headers.name` y `_headers.value` en el esquema de la tabla de Kafka se emiten como la clave, la marca temporal y los encabezados correspondientes del mensaje de Kafka en `INSERT`, y se excluyen de la carga útil del mensaje. [#103243](https://github.com/ClickHouse/ClickHouse/pull/103243) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadieron las consultas `SYSTEM PAUSE VIEW [db.]name` y `SYSTEM PAUSE VIEWS` para vistas materializadas actualizables. A diferencia de `SYSTEM STOP VIEW`, `SYSTEM PAUSE VIEW` no interrumpe la actualización que se esté ejecutando en ese momento: deja que la actualización en curso termine y solo impide las actualizaciones posteriores. Esto se deshace con `SYSTEM START VIEW` o `SYSTEM START VIEWS`, que ahora eliminan de forma uniforme tanto el estado detenido como el pausado. [#103252](https://github.com/ClickHouse/ClickHouse/pull/103252) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Se añadió la función `regexpPosition` (con los alias compatibles con PostgreSQL `regexpInstr` y `regexp_instr`) que devuelve la posición en bytes de la coincidencia número N de una expresión regular en una cadena. Admite desplazamiento inicial, modo de devolución tras la coincidencia, indicadores de regex y selección de grupo de captura. [#104172](https://github.com/ClickHouse/ClickHouse/pull/104172) ([Abhinav Agarwal](https://github.com/aagarwal-gtr)).
* Nuevas funciones `isPrime` e `isProbablePrime` para comprobaciones de primalidad. `isPrime` devuelve un resultado exacto para enteros sin signo de hasta `UInt64`. `isProbablePrime` también admite `UInt128` y `UInt256`; para esos tipos más amplios, `0` significa definitivamente compuesto y `1` significa probablemente primo. El segundo argumento opcional de `isProbablePrime`, `rounds`, controla la confianza (con un máximo de `256`); el valor predeterminado de `25` rondas limita la tasa de falsos positivos para un compuesto aleatorio a menos de `10^-15`, y `isProbablePrime` puede cancelarse. [#104234](https://github.com/ClickHouse/ClickHouse/pull/104234) ([Nihal Z. Miaji](https://github.com/nihalzp)). [#104639](https://github.com/ClickHouse/ClickHouse/pull/104639) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#104806](https://github.com/ClickHouse/ClickHouse/pull/104806) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* `clear` y `/clear` ahora limpian la terminal en las herramientas de línea de comandos de ClickHouse en lugar de ejecutarse como una consulta por error. [#104318](https://github.com/ClickHouse/ClickHouse/pull/104318) ([Tyler Hannan](https://github.com/tylerhannan)).
* Se permite que la table function `file` acepte un `Array(String)` de paths en consultas `SELECT`. [#104442](https://github.com/ClickHouse/ClickHouse/pull/104442) ([Yue](https://github.com/niyue)).
* Se añaden las columnas `deterministic` y `higher_order` a la tabla `system.functions`. [#104479](https://github.com/ClickHouse/ClickHouse/pull/104479) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Se añade un parámetro opcional de variante de codificación a `bech32Encode` (`bech32` / `bech32m`) y un modo de decodificación en bruto a `bech32Decode` para la codificación de direcciones no SegWit (p. ej., Cosmos SDK, Injective, Osmosis). [#98986](https://github.com/ClickHouse/ClickHouse/pull/98986) ([Yash ](https://github.com/Onyx2406)).
* Ahora puede write data en formato `AvroConfluent`, que antes era solo de entrada. Esto permite generar mensajes Avro con el framing de Confluent Schema Registry directamente desde ClickHouse, por ejemplo, al escribir en Kafka. El schema se registra automáticamente en el registry. Use la nueva configuración `output_format_avro_confluent_subject` para especificar el nombre del subject. [#101935](https://github.com/ClickHouse/ClickHouse/pull/101935) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Se añadió la función `prettyPrintJSON` para dar formato a una cadena JSON de forma legible para humanos. Resulta útil para dashboards o informes en los que antes embellecerlo requería un paso adicional del lado del client. Cierra [#62523](https://github.com/ClickHouse/ClickHouse/issues/62523). [#102594](https://github.com/ClickHouse/ClickHouse/pull/102594) ([Dmitry Prokofyev](https://github.com/prokofyevDmitry)).
* Se añadió `STRING_AGG` como alias que no distingue entre mayúsculas y minúsculas de `groupConcat` para ofrecer compatibilidad con PostgreSQL y el estándar SQL. [#105125](https://github.com/ClickHouse/ClickHouse/pull/105125) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los resultados de subconsultas individuales ahora pueden almacenarse en caché de forma independiente mediante `SETTINGS use_query_cache = true` en subconsultas específicas, sin almacenar en caché toda la consulta externa. Un nuevo ajuste, `query_cache_for_subqueries = true`, permite propagar `use_query_cache` de forma masiva a todas las subconsultas. Nota: `use_query_cache` en la consulta externa ya no se propaga automáticamente a las subconsultas. [#99804](https://github.com/ClickHouse/ClickHouse/pull/99804) ([Vincent Voyer](https://github.com/vvo)).
* Se añadió resaltado de sintaxis basado en lexer al editor de consultas de la Web UI (`play.html`), siguiendo los colores de `clickhouse-client`. [#105105](https://github.com/ClickHouse/ClickHouse/pull/105105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-experimental-feature">
  #### Funcionalidad experimental
</div>

* Se añadió una interfaz experimental de terminal web en `/webterminal` que ofrece una sesión interactiva de `clickhouse-client` en el navegador a través de WebSocket. Está deshabilitada de forma predeterminada; actívela con la configuración del servidor `allow_experimental_webterminal`. Véala [aquí](https://play.clickhouse.com/webterminal?user=play). [#100277](https://github.com/ClickHouse/ClickHouse/pull/100277) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#105191](https://github.com/ClickHouse/ClickHouse/pull/105191) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#105059](https://github.com/ClickHouse/ClickHouse/pull/105059) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El motor `Kafka2` (experimental, con almacenamiento de offset basado en Keeper) ahora admite consultas `SELECT` directas y la configuración `kafka_commit_on_select`. [#100276](https://github.com/ClickHouse/ClickHouse/pull/100276) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las UDFs de `WASM` ahora pueden convertir más tipos numéricos: enteros más pequeños a enteros más amplios (p. ej., de `Int8` a `UInt64`) y cualquier entero a punto flotante (p. ej., de `Int32` a `Float32`). [#100435](https://github.com/ClickHouse/ClickHouse/pull/100435) ([Vasily Chekalkin](https://github.com/bacek)).
* Se admite la función `LIKE` en la consulta `DELETE FROM system.webassembly_modules`. [#104397](https://github.com/ClickHouse/ClickHouse/pull/104397) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Compatibilidad con tipos geo para `Iceberg`. [#103113](https://github.com/ClickHouse/ClickHouse/pull/103113) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se añadió la funcionalidad de sentencias preparadas al servidor ArrowFlight SQL. [#103047](https://github.com/ClickHouse/ClickHouse/pull/103047) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Se mejoró la robustez del parser de KQL (para la compatibilidad con el lenguaje Kusto) al preservar la profundidad del parser y los contadores de retroceso entre las distintas etapas del parser de KQL, de modo que los límites del parser se apliquen de forma coherente en consultas KQL complejas. [#103528](https://github.com/ClickHouse/ClickHouse/pull/103528) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).

<div id="268-performance-improvement">
  #### Mejora del rendimiento
</div>

* Reutiliza la caché de metadatos del pie de página de Parquet al leer archivos Parquet locales mediante la table function `file` o el table engine `File`. Anteriormente, la caché solo se consultaba para backends de almacenamiento de objetos. [#104260](https://github.com/ClickHouse/ClickHouse/pull/104260) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Propaga `ORDER BY ... LIMIT n` a través de joins `LEFT`/`RIGHT` cuando la clave de ordenación solo hace referencia a columnas del lado conservado por el join, lo que restringe cuántas filas debe producir la entrada de ese lado antes de realizar el join. Esto se controla con la nueva configuración `query_plan_top_k_through_join` (habilitada de forma predeterminada). [#104268](https://github.com/ClickHouse/ClickHouse/pull/104268) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Habilita de forma predeterminada las configuraciones `use_top_k_dynamic_filtering` y `use_skip_indexes_for_top_k` para mejorar el rendimiento de las consultas `ORDER BY ... LIMIT N`. [#99537](https://github.com/ClickHouse/ClickHouse/pull/99537) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Restringe `use_top_k_dynamic_filtering` de forma predeterminada a columnas de ordenación de longitud fija, evitando regresiones en consultas `ORDER BY <var-length-column> LIMIT N` en las que el coste de comparar el umbral por fila supera el ahorro de E/S. El comportamiento anterior sigue disponible mediante la nueva configuración `use_top_k_dynamic_filtering_for_variable_length_types`. [#104216](https://github.com/ClickHouse/ClickHouse/pull/104216) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Usa la funcionalidad de arena sobredimensionada de `jemalloc` para reducir los fallos de página. [#103958](https://github.com/ClickHouse/ClickHouse/pull/103958) ([Nikita Taranov](https://github.com/nickitat)).
* Limita los streams activos simultáneamente en `UNION ALL` para reducir el uso máximo de memoria. [#100176](https://github.com/ClickHouse/ClickHouse/pull/100176) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Optimiza ligeramente la caché de páginas en espacio de usuario. [#100300](https://github.com/ClickHouse/ClickHouse/pull/100300) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Ahora la caché de páginas en espacio de usuario siempre es mejor que la caché de páginas del SO.
* Las lecturas en frío de almacenamiento de objetos a través de la caché de páginas en espacio de usuario (`use_page_cache_for_object_storage = 1`) ahora son significativamente más rápidas, porque los fallos consecutivos de caché se consolidan en una sola solicitud HTTP en lugar de una solicitud por bloque `page_cache_block_size`. [#104230](https://github.com/ClickHouse/ClickHouse/pull/104230) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Acelera el análisis de índices que implica conversión de tipos y aplicación de funciones. Cierra [#55653](https://github.com/ClickHouse/ClickHouse/issues/55653). [#100366](https://github.com/ClickHouse/ClickHouse/pull/100366) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Acelera las consultas muy grandes en tablas `Merge` sobre un gran número de tablas subyacentes. Cierra [#32465](https://github.com/ClickHouse/ClickHouse/issues/32465). [#100369](https://github.com/ClickHouse/ClickHouse/pull/100369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Elimina la vtable de los tipos de campo de configuración, reduciendo el tamaño de copia de `Settings` en \~28x y mejorando la localidad de caché mediante una disposición en arrays tipados para todos los tipos de configuración. [#102269](https://github.com/ClickHouse/ClickHouse/pull/102269) ([Raúl Marín](https://github.com/Algunenano)).
* Añade las configuraciones `max_threads_min_free_memory_per_thread` y `max_insert_threads_min_free_memory_per_thread` para reducir automáticamente el paralelismo de las consultas cuando el servidor tiene poca memoria libre. [#100383](https://github.com/ClickHouse/ClickHouse/pull/100383) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Reduce el uso de memoria en sistemas con poca memoria (\< 4 GiB). [#100389](https://github.com/ClickHouse/ClickHouse/pull/100389) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió `OptimizeTrivialGroupByLimitPass`. Para consultas triviales `SELECT ... FROM t GROUP BY k LIMIT n` (sin `HAVING`, `ORDER BY` ni funciones de ventana), el analizador ahora establece `max_rows_to_group_by = n + offset` con `group_by_overflow_mode = 'any'`, de modo que la agregación se detiene en cuanto se han generado `n` claves distintas, en lugar de agrupar todo el conjunto de entrada. Controlado por la nueva opción `optimize_trivial_group_by_limit_query` (habilitada de forma predeterminada). [#104473](https://github.com/ClickHouse/ClickHouse/pull/104473) ([Amos Bird](https://github.com/amosbird)) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Índice min-max implícito a nivel de gránulo para las columnas virtuales `_part_offset` y `_block_number`, también para proyecciones. Permite una poda rápida de gránulos basada en predicados sobre columnas virtuales. [#103952](https://github.com/ClickHouse/ClickHouse/pull/103952) ([Mikhail Artemenko](https://github.com/Michicosun)). [#104746](https://github.com/ClickHouse/ClickHouse/pull/104746) ([Mikhail Artemenko](https://github.com/Michicosun)). [#105137](https://github.com/ClickHouse/ClickHouse/pull/105137) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Para la familia de métodos de agregación `prealloc_serialized`, se precalculan los hash por fila durante la pasada de serialización por lotes y se usan para (a) evitar volver a calcular el hash en `emplaceKey`/`findKey` y (b) realizar prefetch por software del bucket de la siguiente fila. Esto acelera la agregación serializada o de cadenas con múltiples claves al ocultar la latencia de los fallos de caché de la tabla hash. [#104475](https://github.com/ClickHouse/ClickHouse/pull/104475) ([Amos Bird](https://github.com/amosbird)) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Caché de condiciones de consulta para tablas `Iceberg`. [#102115](https://github.com/ClickHouse/ClickHouse/pull/102115) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se optimizaron `cramersV`, `cramersVBiasCorrected`, `theilsU` y `contingency` cuando se usan con funciones de ventana. Cierra [#83521](https://github.com/ClickHouse/ClickHouse/issues/83521). [#93384](https://github.com/ClickHouse/ClickHouse/pull/93384) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se añadió una optimización de consultas que reescribe `tupleElement(dictGet('dict', ('a', 'b', 'c'), key), N)` como `dictGet('dict', 'a', key)`, evitando recuperar atributos de diccionario innecesarios. Controlado por la opción `optimize_dictget_tuple_element` (habilitada de forma predeterminada). [#100186](https://github.com/ClickHouse/ClickHouse/pull/100186) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se habilitó el almacenamiento en búfer para los pasos de ordenación en el iniciador de consultas distribuidas con ordenación. [#100661](https://github.com/ClickHouse/ClickHouse/pull/100661) ([Nikita Taranov](https://github.com/nickitat)).
* Mejora del rendimiento de `partial_merge` JOIN. [#100945](https://github.com/ClickHouse/ClickHouse/pull/100945) ([Artem Zuikov](https://github.com/4ertus2)).
* Se redujo ligeramente la sobreasignación de memoria en `partial_merge` JOIN. [#100963](https://github.com/ClickHouse/ClickHouse/pull/100963) ([Artem Zuikov](https://github.com/4ertus2)).
* Se optimizaron las asignaciones/liberaciones de memoria almacenando en caché la configuración de muestreo en lugar de recorrer toda la jerarquía del rastreador de memoria. [#101267](https://github.com/ClickHouse/ClickHouse/pull/101267) ([Azat Khuzhin](https://github.com/azat)).
* Se redujo la sobrecarga de asignación de memoria durante las cargas multiparte a S3 preasignando contenedores internos de seguimiento. [#101799](https://github.com/ClickHouse/ClickHouse/pull/101799) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
* Se añadió prefetch por software en la fase de sondeo de hash join para reducir la latencia de acceso a memoria en tablas hash grandes, controlado por la opción `enable_software_prefetch_in_join`. [#102444](https://github.com/ClickHouse/ClickHouse/pull/102444) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Optimiza la estructura de `MemoryTracker`, mejorando su rendimiento en \~25%. [#103464](https://github.com/ClickHouse/ClickHouse/pull/103464) ([Azat Khuzhin](https://github.com/azat)).
* Reescribe los predicados `coalesce(a, b, ...) <op> const` y `ifNull(a, b) <op> const` antes del análisis de índices para que la primary key por columna y los skip indexes de cada argumento puedan descartar gránulos. Se controla con la nueva configuración `allow_key_condition_coalesce_rewrite` (activada de forma predeterminada). [#103468](https://github.com/ClickHouse/ClickHouse/pull/103468) ([Manuel](https://github.com/raimannma)).
* Se mejoró significativamente el rendimiento de las consultas al leer catálogos Iceberg con archivos JSON de metadatos grandes al optimizar el procesamiento de barras escapadas. [#103998](https://github.com/ClickHouse/ClickHouse/pull/103998) ([Mohaidoss](https://github.com/mohaidoss)).
* Evita la sobrecarga de la caché sin comprimir de índices cuando la caché está deshabilitada (configuración del servidor `index_uncompressed_cache_size = 0`, que es el valor predeterminado). [#104063](https://github.com/ClickHouse/ClickHouse/pull/104063) ([Michael Kolupaev](https://github.com/al13n321)).
* Corrige consultas `ORDER BY ... LIMIT` con límites pequeños que leían demasiados gránulos al combinarse con un filtro `WHERE` no selectivo. Antes, cualquier filtro por encima de una lectura en orden deshabilitaba la división de tareas por rango de marcas, por lo que el pipeline no podía cancelarse entre gránulos y leía toda la parte para cada flujo. [#104112](https://github.com/ClickHouse/ClickHouse/pull/104112) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigió la falta de reutilización de la caché de tamaños de hash table tras reordenar los lados del JOIN. [#104131](https://github.com/ClickHouse/ClickHouse/pull/104131) ([Nikita Taranov](https://github.com/nickitat)).
* Cuando `fsync_after_insert` está habilitada, ahora el fsync de los archivos de la parte se realiza en paralelo usando el IO thread pool, lo que acelera la finalización de inserciones en wide tables. La carga completa de ClickBench `hits` es aproximadamente un 22% más rápida. [#104137](https://github.com/ClickHouse/ClickHouse/pull/104137) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Vectoriza `find_first_symbols`, `find_first_not_symbols`, `find_last_symbols_or_null`, `find_last_not_symbols_or_null` y `splitInto` en AArch64 usando NEON. Antes, estas funciones auxiliares solo tenían una ruta SIMD en x86 (SSE2 / SSE4.2) y en ARM recurrían a un bucle escalar. Acelera el parsing de TSV en \~2x, las funciones de URL y `splitByChar` en \~1.3x en el dataset `hits` de ClickBench; el parsing de JSON muy denso (cadencia de campos de menos de 16 bytes) empeora ligeramente, en línea con la compensación ya existente en SSE2. [#104228](https://github.com/ClickHouse/ClickHouse/pull/104228) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La lectura de datos a través de una columna `ALIAS` trivial (p. ej., `some_alias['key']` donde `some_alias ALIAS m`) ahora sigue la misma ruta de lectura por subcolumna que al referenciar directamente la columna subyacente, restaurando un importante ahorro de E/S para columnas con alias `Map`, `Array`, `Tuple` y `Nullable`. [#104245](https://github.com/ClickHouse/ClickHouse/pull/104245) ([Raúl Marín](https://github.com/Algunenano)).
* Reduce la contención de bloqueos en la ruta de lectura asíncrona de sistemas de archivos remotos al hacer que `AsyncReadCounters` por consulta no use bloqueos. [#104374](https://github.com/ClickHouse/ClickHouse/pull/104374) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Plan de consulta ligeramente mejor para el escaneo en orden de projections. [#103723](https://github.com/ClickHouse/ClickHouse/pull/103723) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Amplía `optimizeUseNormalProjections` para que también maneje un caso específico en el que no se filtró nada, pero la sorting key de la projection puede eliminar el paso de ordenación del plan de consulta. [#104680](https://github.com/ClickHouse/ClickHouse/pull/104680) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Permitir que el azúcar sintáctico `json.path[]` y las indicaciones de tipo explícitas funcionen correctamente en rutas `JSON` tipadas. [#99179](https://github.com/ClickHouse/ClickHouse/pull/99179) ([Pavel Kruglov](https://github.com/Avogar)).
* Optimizar `json.path[N].nested.path` (que se expande a `tupleElement(tupleElement(json.path[N], 'nested'), 'path')`) a `json.path[].nested.path[N]`, que lee muchos menos datos. [#99802](https://github.com/ClickHouse/ClickHouse/pull/99802) ([Pavel Kruglov](https://github.com/Avogar)).
* Optimizar las comprobaciones de acceso de `SHOW TABLES` en `system.parts` sacando del bucle por tabla las comprobaciones de permisos a nivel de base de datos. [#100860](https://github.com/ClickHouse/ClickHouse/pull/100860) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Eliminar una comprobación redundante de acceso por tabla para `SHOW TABLES` en la ruta rápida de `SELECT name` / `SELECT database, name` de `system.tables`. [#100881](https://github.com/ClickHouse/ClickHouse/pull/100881) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Habilitar la compilación JIT en macOS. [#100947](https://github.com/ClickHouse/ClickHouse/pull/100947) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Omitir el aplazamiento de la política de filas después de `FINAL` cuando depende solo de las columnas de la clave de ordenación y es determinista, y omitir el aplazamiento correspondiente de `PREWHERE` que la política de filas estaba forzando en ese caso. [#102884](https://github.com/ClickHouse/ClickHouse/pull/102884) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se añadió soporte para `hasAny` y `hasAll` como predicados de filtro en índices de texto. [#103266](https://github.com/ClickHouse/ClickHouse/pull/103266) ([Anton Popov](https://github.com/CurtizJ)).
* Dirigir el estado de heap persistente de MergeTree (metadatos por parte y por tabla) a una arena dedicada de jemalloc, expuesta mediante las métricas asíncronas `jemalloc.mergetree_arena.*`. Reduce la fragmentación de la arena predeterminada en estado estable y evita que los supervivientes por parte retengan páginas que, de otro modo, podrían liberarse por decaimiento. [#104136](https://github.com/ClickHouse/ClickHouse/pull/104136) ([Raúl Marín](https://github.com/Algunenano)).
* Mejorar el manejo del tiempo de espera del client de ZooKeeper bajo carga elevada cuando muchas solicitudes se canalizan por una sola sesión. El client de ZooKeeper ahora usa un tiempo de espera basado en el progreso: mientras se reciba cualquier dato del servidor dentro de `session_timeout_ms`, la espera se amplía. Un límite estricto de `3 * session_timeout_ms` por solicitud sigue acotando la latencia del llamador. Cierra [#100466](https://github.com/ClickHouse/ClickHouse/issues/100466). [#104351](https://github.com/ClickHouse/ClickHouse/pull/104351) ([Antonio Andelic](https://github.com/antonio2368)).
* Mover los indicadores de trace por evento a un array separado y asignarlos de forma diferida, reduciendo la sobrecarga del tracing de `ProfileEvents`. [#105030](https://github.com/ClickHouse/ClickHouse/pull/105030) ([Azat Khuzhin](https://github.com/azat)).
* Añadir `compareTrackAt` para `ColumnDecimal`, mejorando el rendimiento de las comparaciones en columnas `Decimal`. [#105110](https://github.com/ClickHouse/ClickHouse/pull/105110) ([Artem Zuikov](https://github.com/4ertus2)).
* Se añadió una implementación SIMD de `MD5` (`AVX2` / `AVX512`) que calcula hashes de múltiples entradas en paralelo, mejorando el rendimiento. [#105161](https://github.com/ClickHouse/ClickHouse/pull/105161) ([Joanna Hulboj](https://github.com/jh0x)).

<div id="268-improvement">
  #### Mejora
</div>

* Mejora la salida de ayuda de todas las aplicaciones de ClickHouse: `--help` ahora devuelve siempre el código de salida `0`, escribe en `stdout` y `clickhouse --help` en el nivel superior muestra todos los subcomandos. Añade una opción `--no-sudo` para `clickhouse start` / `restart` (útil en Docker) y un subcomando `clickhouse help`. Continuación de [#58244](https://github.com/ClickHouse/ClickHouse/issues/58244) de @qoega. [#98148](https://github.com/ClickHouse/ClickHouse/pull/98148) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El valor predeterminado de `input_format_column_name_matching_mode` cambia de `match_case` a `auto`. Los formatos de entrada que comparan los nombres de las columnas de entrada con el esquema de la tabla (`JSONEachRow`, `CSVWithNames`, `JSONColumns`, `BSONEachRow`, `RowBinaryWithNames`, etc.) ahora primero intentan una coincidencia sensible a mayúsculas y minúsculas y, si falla, recurren a una coincidencia no sensible a mayúsculas y minúsculas. El comportamiento estricto anterior se conserva con `compatibility`. [#104320](https://github.com/ClickHouse/ClickHouse/pull/104320) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió `STDDEV` como alias no sensible a mayúsculas y minúsculas de `stddevSamp` para compatibilidad con PostgreSQL/el estándar SQL. [#105120](https://github.com/ClickHouse/ClickHouse/pull/105120) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió `array_to_string` como alias no sensible a mayúsculas y minúsculas de `arrayStringConcat` para compatibilidad con PostgreSQL. [#105121](https://github.com/ClickHouse/ClickHouse/pull/105121) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió `unnest` como alias no sensible a mayúsculas y minúsculas de `arrayJoin` para compatibilidad con PostgreSQL (en forma de llamada de función). [#105124](https://github.com/ClickHouse/ClickHouse/pull/105124) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La barra de progreso de `clickhouse-client` ahora muestra el uso de disco de los datos temporales (p. ej., para ordenación externa, aggregation o JOIN) junto a la RAM, incluido un desglose por host para las consultas distribuidas. [#105190](https://github.com/ClickHouse/ClickHouse/pull/105190) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió `system.predicate_statistics_log`, un nuevo log muestreado de la selectividad de los filtros de predicado y de la poda de gránulos de índice de MergeTree por consulta. Está deshabilitado de forma predeterminada; actívelo mediante la configuración del servidor `predicate_statistics_sample_rate`. Es necesario para las recomendaciones automáticas de índices y proyecciones. [#98727](https://github.com/ClickHouse/ClickHouse/pull/98727) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Permite omitir el segmento local con una tabla ausente cuando `skip_unavailable_shards` está habilitado. [#100141](https://github.com/ClickHouse/ClickHouse/pull/100141) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Añade advertencias al iniciar (visibles en `system.warnings`) cuando se está resincronizando un arreglo mdraid de Linux o este se encuentra en estado degradado, ya que ambas situaciones pueden afectar al rendimiento de E/S del disco o indicar fallos de disco. [#100941](https://github.com/ClickHouse/ClickHouse/pull/100941) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las UDFs de WASM ahora aparecen en `system.functions` con las columnas `origin` (`WasmUserDefined`), `syntax`, `arguments` y `returned_value` correctas, rellenadas a partir de sus metadatos de tipos de ClickHouse. Antes faltaban o aparecían duplicadas con un origen incorrecto. [#101053](https://github.com/ClickHouse/ClickHouse/pull/101053) ([Vasily Chekalkin](https://github.com/bacek)).
* La table function `generate_series` ahora admite valores negativos de step para generar secuencias descendentes; por ejemplo, `SELECT * FROM generate_series(99, 0, -1)`. [#101056](https://github.com/ClickHouse/ClickHouse/pull/101056) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige las excepciones `Context has expired` que generaban algunas funciones (`dotProduct`, `formatRow`, `structureToCapnProtoSchema`/`structureToProtobufSchema`, funciones definidas por el usuario) al usarse en rutas de ejecución diferida, como expresiones `DEFAULT`/`MATERIALIZED` y configuraciones del motor de tabla, asegurando que esas funciones conserven una referencia fuerte al contexto cuando sea necesario. [#101109](https://github.com/ClickHouse/ClickHouse/pull/101109) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige errores lógicos espurios `Cache limits violated` en prioridades creadas con límites cero (como la prioridad de filesystem cache por consulta que se usa cuando `enable_filesystem_query_cache_limit` está activado). [#101428](https://github.com/ClickHouse/ClickHouse/pull/101428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Detecta automáticamente la región de los endpoints `s3express`. [#101520](https://github.com/ClickHouse/ClickHouse/pull/101520) ([Pradeep Chhetri](https://github.com/chhetripradeep)).
* Añade soporte para IDs de campo en archivos de datos al escribir en `Iceberg`. Cierra [#102322](https://github.com/ClickHouse/ClickHouse/issues/102322). [#102362](https://github.com/ClickHouse/ClickHouse/pull/102362) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* El panel izquierdo de la interfaz web (`play.html`) ahora se desplaza de forma independiente, permanece visible al desplazarse por la página y, al hacer clic en una tabla, lleva al área de consulta. [#102498](https://github.com/ClickHouse/ClickHouse/pull/102498) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Permite abrir la interfaz de Play en una pestaña nueva mediante Ctrl/Cmd/Shift+clic o clic central sobre el logotipo de ClickHouse en el panel izquierdo. [#102501](https://github.com/ClickHouse/ClickHouse/pull/102501) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Nuevas métricas para rastrear la memoria utilizada por las claves primarias de las proyecciones y la granularidad del índice de las proyecciones en todas las tablas. [#102587](https://github.com/ClickHouse/ClickHouse/pull/102587) ([Narasimha Pakeer](https://github.com/npakeer)).
* Aplica `max_network_bandwidth_for_user` y `max_network_bandwidth_for_all_users` a las lecturas y escrituras en sistemas de archivos remotos. [#103080](https://github.com/ClickHouse/ClickHouse/pull/103080) ([Azat Khuzhin](https://github.com/azat)).
* Mejora la resiliencia de las copias de seguridad cuando las vistas materializadas actualizables se refrescan constantemente, tomando decisiones basadas en el estado de las tablas de la instantánea en lugar de en un estado global. [#103384](https://github.com/ClickHouse/ClickHouse/pull/103384) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `SELECT * FROM system.databases` ahora siempre muestra las bases de datos de los catálogos de lago de datos, independientemente de la configuración `show_data_lake_catalogs_in_system_tables`. Antes estaban ocultas de forma predeterminada, lo que no era coherente con `SHOW DATABASES`, que siempre las mostraba. [#103444](https://github.com/ClickHouse/ClickHouse/pull/103444) ([Alsu Giliazova](https://github.com/alsugiliazova)).
* Alinea en el código el valor predeterminado de la configuración del servidor `concurrent_threads_soft_limit_ratio_to_cores` con el valor incluido en `config.xml` (`2`), para que el scheduler predeterminado de hilos concurrentes `max_min_fair` limite los hilos de procesamiento de consultas a 2x núcleos desde el inicio, incluso cuando no se use el `config.xml` distribuido. [#103446](https://github.com/ClickHouse/ClickHouse/pull/103446) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Mejora la robustez del sanitizador en casos límite del parser y de funciones de cadenas: maneja entradas vacías en `getURLScheme`, evita la aritmética con punteros nulos en las comprobaciones de `max_query_size` de `Lexer::nextToken` y corta la evaluación de subsecuencias UTF-8 en haystacks vacíos antes de decodificar. [#103489](https://github.com/ClickHouse/ClickHouse/pull/103489) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Se mejoró la corrección de la inferencia de monotonicidad para `divide(0, x)` e `intDiv(0, x)`: antes, las funciones se marcaban incondicionalmente como monotónicas, pero `0 / x` no es monotónica en ningún rango que incluya 0 porque `0 / 0` no está definido (`NaN`/`Inf` para `divide`, excepción de división por cero para `intDiv`). Esta suposición incorrecta hacía que `KeyCondition::applyMonotonicFunctionsChainToRange` produjera rangos con `left > right`, lo que provocaba un `LOGICAL_ERROR` `Invalid binary search result in MergeTreeSetIndex` en compilaciones de depuración cuando una expresión `IN` / `NOT IN` sobre la primary key envolvía la clave en `divide(0, key)` o `intDiv(0, key)`. Las compilaciones de release no se vieron afectadas: la aserción está condicionada por `#ifndef NDEBUG`. [#103621](https://github.com/ClickHouse/ClickHouse/pull/103621) ([Groene AI](https://github.com/groeneai)).
* Se reemplazaron las métricas asíncronas `HTTPConnectionPool*TCP{Rcv,Snd}BufBytes_{p50,p75,p90,p95}` por un histograma basado en buckets `http_pool_tcp_buf_bytes` (labels `group`, `direction`) en `system.histogram_metrics`. Se conservan las métricas asíncronas totales por grupo. [#103704](https://github.com/ClickHouse/ClickHouse/pull/103704) ([Sema Checherinda](https://github.com/CheSema)).
* Los server settings `{disk,storage,http}_connections_{rcvbuf,sndbuf}` ahora se muestran como modificables sin reinicio en `system.server_settings`. Sus values pueden actualizarse mediante `SYSTEM RELOAD CONFIG`; la ruta de aplicación en runtime ya existía desde [#100478](https://github.com/ClickHouse/ClickHouse/issues/100478). [#103772](https://github.com/ClickHouse/ClickHouse/pull/103772) ([Sema Checherinda](https://github.com/CheSema)).
* Se añadió soporte para símbolos resueltos (`Array(String)`) en `flameGraph`. [#103816](https://github.com/ClickHouse/ClickHouse/pull/103816) ([Azat Khuzhin](https://github.com/azat)).
* El client de la CLI ahora puede especificar `<rainbow_parentheses>false</rainbow_parentheses>` en su configuración en entornos donde los colores del terminal interfieren con los paréntesis (de forma similar, `clickhouse format` ahora tiene `--no_rainbow_parentheses`). [#103851](https://github.com/ClickHouse/ClickHouse/pull/103851) ([Larry Snizek](https://github.com/larry-cdn77)).
* Se corrigió la búsqueda UTF-8 sin distinción entre mayúsculas y minúsculas de `MultiVolnitsky` revirtiendo inserciones parciales de `putNGram` en caso de fallo y cambiando los needles fallidos a buscadores de fallback, para evitar estados inconsistentes. [#103864](https://github.com/ClickHouse/ClickHouse/pull/103864) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Se implementó `sched_getcpu` mediante `rseq` TLS en musl con compatibilidad con glibc. [#104016](https://github.com/ClickHouse/ClickHouse/pull/104016) ([Azat Khuzhin](https://github.com/azat)).
* Una vista materializada actualizable replicada en modo APPEND ya no se actualizará dos veces si la connection con ZooKeeper se pierde brevemente durante la actualización. [#104051](https://github.com/ClickHouse/ClickHouse/pull/104051) ([Michael Kolupaev](https://github.com/al13n321)).
* Se permite que las tablas Distributed sin una lista explícita de columnas validen las claves de sharding con respecto a la structure inferida de la tabla remota. [#104111](https://github.com/ClickHouse/ClickHouse/pull/104111) ([Yue](https://github.com/niyue)).
* Se corrigió REST catalog con la path `Azure` `abfss`. [#104120](https://github.com/ClickHouse/ClickHouse/pull/104120) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se respetan los ajustes de authentication `role_arn` y `role_session_name` en el client de snapshots S3 de Keeper, lo que permite que las cargas de snapshots usen autenticación basada en STS `AssumeRole`. [#104140](https://github.com/ClickHouse/ClickHouse/pull/104140) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una fuga de memoria al ejecutar consultas con CTE `MATERIALIZED`. [#104153](https://github.com/ClickHouse/ClickHouse/pull/104153) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la excepción de `lowerUTF8` / `upperUTF8` al procesar grandes conjuntos de datos no ASCII (p. ej., durante la creación de índices de texto) en los que el búfer de salida acumulado superaría los 2 GiB; rechaza las filas individuales excesivamente largas con un error claro. [#104229](https://github.com/ClickHouse/ClickHouse/pull/104229) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Refuerza la carga de estadísticas de columnas de MergeTree frente a fallos transitorios de E/S para evitar que se desactiven permanentemente las optimizaciones basadas en estadísticas para las partes afectadas. [#104372](https://github.com/ClickHouse/ClickHouse/pull/104372) ([zoomxi](https://github.com/zoomxi)).
* `INSERT INTO ... SELECT FROM input(...)` ya no requiere el privilegio `CREATE TEMPORARY TABLE`. [#104470](https://github.com/ClickHouse/ClickHouse/pull/104470) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió una nueva configuración de MergeTree, `concurrent_part_removal_threshold_for_remote_disk` (valor predeterminado: `16`), que se usa en lugar de `concurrent_part_removal_threshold` cuando al menos una de las partes que se va a eliminar está almacenada en un disco remoto. El umbral anterior de `100` podía hacer que `DROP TABLE` y otras operaciones de eliminación de partes en backends de object storage se quedaran bloqueadas durante decenas de segundos porque las eliminaciones se realizaban en serie, aunque cada una implicaba una ida y vuelta de red independiente. La nueva configuración hace que la ruta de eliminación en paralelo se active mucho antes en el almacenamiento remoto, sin cambiar el comportamiento en disco local. [#104676](https://github.com/ClickHouse/ClickHouse/pull/104676) ([Groene AI](https://github.com/groeneai)).
* La nueva configuración `defer_partition_pruning_after_final` (valor predeterminado: `1`) hace que el comportamiento introducido en la versión 26.3 de omitir la partition pruning bajo `FINAL` pase a ser opcional. Establécela en `0` para restaurar la partition pruning anterior a la 26.3, sustancialmente más rápida en cargas de trabajo de registros de eventos donde las filas con la misma PK no pueden abarcar particiones. `compatibility = '26.2'` la cambia a `0` automáticamente. [#104705](https://github.com/ClickHouse/ClickHouse/pull/104705) ([Nikita Fomichev](https://github.com/fm4v)).
* Corrige que `intExp2` devolviera resultados incorrectos para entradas fuera de rango (desplazamientos `>= 64` bajo JIT, y enteros con magnitud superior a `INT_MAX` en ambas rutas de código). [#105054](https://github.com/ClickHouse/ClickHouse/pull/105054) ([Raúl Marín](https://github.com/Algunenano)).
* Pone entre comillas los argumentos del shell construidos a partir de opciones de CLI y de la entrada analizada en `clickhouse install` y `clickhouse git-import` para que las rutas, los nombres de usuario/grupo y los hash de commit que contienen espacios en blanco o metacaracteres del shell se manejen correctamente. [#105232](https://github.com/ClickHouse/ClickHouse/pull/105232) ([Raúl Marín](https://github.com/Algunenano)).
* El table engine `Alias` ya no es experimental y está disponible sin la configuración `allow_experimental_alias_table_engine`. [#103488](https://github.com/ClickHouse/ClickHouse/pull/103488) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió la opción `--queries-format` a `clickhouse-benchmark` para elegir entre el formato de entrada predeterminado, con una consulta por línea y tabulaciones escapadas (`tsv`), y el análisis de la entrada estándar como un script con varias consultas separadas por `;` (`script`). [#99972](https://github.com/ClickHouse/ClickHouse/pull/99972) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* Los operadores de tuplas por elemento `tuplePlus`, `tupleMinus`, `tupleMultiply`, `tupleDivide`, `tupleModulo`, `tupleIntDiv` y `tupleIntDivOrZero` ahora son variádicos y aceptan dos o más tuplas del mismo tamaño, aplicándose elemento por elemento como un left fold. Antes aceptaban exactamente dos argumentos. [#104659](https://github.com/ClickHouse/ClickHouse/pull/104659) ([Aruj Bansal](https://github.com/arujbansal)).
* Se añadió una nueva interfaz web integrada en `/processors-profile` que visualiza el pipeline de cualquier consulta `SELECT` anterior como un mapa de calor, a partir de `system.query_log` y `system.processors_profile_log`. Cada procesador se colorea según su `elapsed_us` y muestra estadísticas por procesador (filas, bytes, tiempos de espera) al pasar el cursor. [#104614](https://github.com/ClickHouse/ClickHouse/pull/104614) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* La configuración `query_plan_use_logical_join_step` (y su alias `query_plan_use_new_logical_join_step`) ahora está obsoleta y no tiene ningún efecto; el paso lógico de JOIN se usa siempre. [#104017](https://github.com/ClickHouse/ClickHouse/pull/104017) ([Vladimir Cherkasov](https://github.com/vdimir)).
* El campo `user` en `play.html` y en las demás páginas web integradas (`dashboard.html`, `jemalloc.html`, `merges.html`, `binary.html`, `webterminal.html`) ya no se rellena previamente con el texto literal `default`. Ahora muestra una sugerencia de marcador de posición `user` y está vacío de forma predeterminada. Cuando se deja vacío, la página no envía un parámetro de URL `user=` (y el JSON de autenticación de WebTerminal omite el campo `user`), por lo que el servidor aplica su comportamiento habitual y recurre al usuario `default`; además, las credenciales HTTP proporcionadas a través de otros canales (`X-ClickHouse-User`, HTTP Basic, configuración `<handler><user>` por handler) ya no se sobrescriben. [#105254](https://github.com/ClickHouse/ClickHouse/pull/105254) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Lector `ORC`: se desacopla la lectura basada en offsets (`readBigAt`) de `use_prefetch`, para que los datos codificados con EC en `HDFS` puedan leerse correctamente incluso cuando `use_prefetch = false` (por ejemplo, con Gluten). [#103348](https://github.com/ClickHouse/ClickHouse/pull/103348) ([zhanglistar](https://github.com/zhanglistar)).
* Los archivos descargados desde `play.html` con el formato `CSVWithNames` ahora usan la extensión de archivo `.csv`. [#103737](https://github.com/ClickHouse/ClickHouse/pull/103737) ([JackFielding](https://github.com/JackFielding)).
* Se añadió más validación de entrada para el catálogo BigLake. [#105117](https://github.com/ClickHouse/ClickHouse/pull/105117) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="268-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Corrección de errores (mal funcionamiento visible para el usuario en una versión estable oficial)
</div>

* Corrige el formato inconsistente al recordar si una expresión estaba entre paréntesis. [#92340](https://github.com/ClickHouse/ClickHouse/pull/92340) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la comparación correcta entre los tipos Decimal y Float. [#94293](https://github.com/ClickHouse/ClickHouse/pull/94293) ([zoomxi](https://github.com/zoomxi)).
* Permite argumentos posicionales en consultas distribuidas. [#94359](https://github.com/ClickHouse/ClickHouse/pull/94359) ([simonmichal](https://github.com/simonmichal)).
* Corrige un fallo de aserción en `DatabaseCatalog::updateDependencies` al eliminar y volver a crear una vista materializada con el mismo nombre; también corrige la pérdida silenciosa de dependencias de vistas durante `RENAME TABLE` o `EXCHANGE TABLES` cuando las dependencias referenciales estaban vacías. [#98779](https://github.com/ClickHouse/ClickHouse/pull/98779) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una interrupción del servidor (fallo de aserción en `DatabaseCatalog::getTableImpl`) que se producía al crear una tabla mediante `ON CLUSTER` con un UUID idéntico al de una base de datos existente. [#98861](https://github.com/ClickHouse/ClickHouse/pull/98861) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* Se corrigió el uso de índices de omisión en lecturas de datos (con la configuración `use_skip_indexes_on_data_read` habilitada) y en patch parts existentes creados por actualizaciones ligeras. [#99543](https://github.com/ClickHouse/ClickHouse/pull/99543) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la excepción "Not-ready Set" cuando un filtro con `IN (subquery)` es movido a PREWHERE por el optimizador de consultas. [#100375](https://github.com/ClickHouse/ClickHouse/pull/100375) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige el error "Cannot find column" al combinar `ADD COLUMN` con `RENAME COLUMN` en una sola instrucción `ALTER TABLE`. [#100387](https://github.com/ClickHouse/ClickHouse/pull/100387) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige las vistas con operadores `UNION` y `INTERSECT`/`EXCEPT` mixtos que devolvían resultados incorrectos después de `DETACH`/`ATTACH` o de reiniciar el servidor. [#100390](https://github.com/ClickHouse/ClickHouse/pull/100390) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la excepción "Trying to execute PLACEHOLDER action" que podía producirse durante pruebas de estrés con el AST fuzzer cuando aparecía una subconsulta correlacionada en una cláusula IN. [#100398](https://github.com/ClickHouse/ClickHouse/pull/100398) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una excepción de error lógico al insertar en una tabla Iceberg con una columna `Date` particionada por transformaciones `year`, `month` o `day`. [#100404](https://github.com/ClickHouse/ClickHouse/pull/100404) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige el uso de un índice de omisión con datos incompatibles después de que `ALTER TABLE MODIFY COLUMN` cambie el tipo de la columna, lo que podía provocar fallos del servidor en compilaciones con sanitizador o resultados de consulta incorrectos. [#100526](https://github.com/ClickHouse/ClickHouse/pull/100526) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la filtración de credenciales en `query_log` para las funciones de tabla `paimonCluster`, `paimonS3Cluster`, `paimonAzureCluster` y `deltaLakeS3`. [#100529](https://github.com/ClickHouse/ClickHouse/pull/100529) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Corrige que `DROP TABLE` en tablas con motor Kafka pudiera quedar bloqueado indefinidamente debido a un interbloqueo en `rd_kafka_consumer_close`. [#100604](https://github.com/ClickHouse/ClickHouse/pull/100604) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Sustituye la lista `source_table_engines` codificada de forma fija por una búsqueda en tiempo de ejecución mediante `StorageFactory` y `DatabaseFactory`. Añade `source_access_type` a `DatabaseFactory::EngineFeatures` para que `CREATE DATABASE` con motores de origen (PostgreSQL, MySQL, S3, etc.) requiera los mismos permisos de origen que `CREATE TABLE`. Corrige el fallo de `GRANT TABLE ENGINE ON *` con `table_engines_require_grant=false`. Cierra [#71544](https://github.com/ClickHouse/ClickHouse/issues/71544). [#100746](https://github.com/ClickHouse/ClickHouse/pull/100746) ([pufit](https://github.com/pufit)).
* Corrige un fallo del servidor al leer desde una tabla cuya columna `ALIAS` contenía una subconsulta correlacionada anidada dentro de una llamada a función (p. ej., `ALIAS toString(intDivOrZero(x, (SELECT ...)))`). `CREATE TABLE` y `ALTER TABLE` ahora rechazan cualquier subconsulta, a cualquier profundidad, en expresiones de columna `DEFAULT` / `ALIAS` / `MATERIALIZED` con `THERE_IS_NO_DEFAULT_VALUE`. Antes, la validación superficial aceptaba subconsultas anidadas, por lo que el caso correlacionado provocaba un fallo en tiempo de lectura y el caso anidado no correlacionado parecía funcionar, pero podía dar lugar a comportamientos inesperados; ahora ambos se rechazan en tiempo de DDL. [#100753](https://github.com/ClickHouse/ClickHouse/pull/100753) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo del servidor (`Logical error: Bad cast from type DB::FunctionNode to DB::ColumnNode`) que podía producirse al usar consultas con subconsultas correlacionadas en tablas que tienen definiciones `CONSTRAINT ... ASSUME`, cuando están habilitadas las settings `optimize_substitute_columns` y `convert_query_to_cnf`. [#100756](https://github.com/ClickHouse/ClickHouse/pull/100756) ([Groene AI](https://github.com/groeneai)).
* Corrige una excepción que podía producirse al insertar una fila en una columna JSON cuando la fila introducía un nuevo campo dinámico junto con un campo tipado con un valor incompatible, y la columna se usaba posteriormente como clave de GROUP BY. [#100758](https://github.com/ClickHouse/ClickHouse/pull/100758) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Corrige que la planificación de IO de la carga de trabajo se omitiera silenciosamente para escrituras en S3 o almacenamiento de objetos que pasan por la ruta `DiskObjectStorageTransaction` (usada por los discos `s3_with_keeper` y explícitamente cuando `use_fake_transaction=false`). Antes, las escrituras de INSERT en tablas MergeTree sobre esos discos ignoraban la limitación de `CREATE RESOURCE` / `CREATE WORKLOAD` porque el enlace del recurso nunca se inyectaba en `WriteSettings` para la ruta de escritura transaccional. [#100777](https://github.com/ClickHouse/ClickHouse/pull/100777) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Corrige una colisión de caché de esquema compartida entre `Protobuf` y `ProtobufList`: leer primero un mensaje como `FORMAT Protobuf` y luego como `FORMAT ProtobufList` podía fallar porque `ProtobufList` forzaba el esquema en caché a su forma de sobre. `ProtobufList` ahora recurre al tipo de mensaje almacenado en caché cuando no hay ningún esquema de sobre disponible. [#100849](https://github.com/ClickHouse/ClickHouse/pull/100849) ([Callum Cooper](https://github.com/callumc34)).
* Corrige un desbordamiento de búfer en el montón en el puente Rust CXX debido a una incompatibilidad de ABI de `std::exception`. [#100931](https://github.com/ClickHouse/ClickHouse/pull/100931) ([Azat Khuzhin](https://github.com/azat)).
* `FunctionVariantAdaptor` ahora lanza `ILLEGAL_TYPE_OF_ARGUMENT` cuando todas las alternativas de `Variant` son incompatibles con una función, en lugar de devolver silenciosamente `Nullable(Nothing)`. Antes, un predicado `WHERE function(variant_col)` en el que ningún tipo alternativo era compatible devolvía 0 filas sin error, mientras que el contexto equivalente de `SELECT` ya lanzaba correctamente la excepción. [#100939](https://github.com/ClickHouse/ClickHouse/pull/100939) ([Vasily Chekalkin](https://github.com/bacek)).
* `TRUNCATE ALL TABLES` ya no falla cuando la base de datos contiene vistas. [#100943](https://github.com/ClickHouse/ClickHouse/pull/100943) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la optimización `optimize_rewrite_array_exists_to_has` para que maneje correctamente los casos con tipos incompatibles (p. ej., Date frente a String) y se volvió a habilitar de forma predeterminada. [#100944](https://github.com/ClickHouse/ClickHouse/pull/100944) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la prioridad de la configuración de S3 para que la configuración de disco de `storage_configuration` prevalezca sobre la sección global `<s3>`, y la configuración a nivel de usuario/perfil/consulta prevalezca sobre ambas. [#100975](https://github.com/ClickHouse/ClickHouse/pull/100975) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la serialización dispersa, que perdía el signo del cero negativo (-0.0) en columnas BFloat16, Float32 y Float64. [#100983](https://github.com/ClickHouse/ClickHouse/pull/100983) ([Takumi Hara](https://github.com/takumihara)).
* Se corrigieron dos errores en el parser de geometría WKT usado al leer archivos GeoParquet y Arrow codificados en WKT: las geometrías `MULTILINESTRING` se analizaban incorrectamente como `Polygon` (lo que provocaba una excepción en las columnas tipadas y corrupción silenciosa de datos en columnas `Geometry` mixtas), y una cadena WKT malformada sin palabra clave de tipo desencadenaba un comportamiento indefinido en lugar de un error claro. [#100997](https://github.com/ClickHouse/ClickHouse/pull/100997) ([Vasily Chekalkin](https://github.com/bacek)).
* Se corrigieron las consultas `grouping`/`GROUPING SETS` en tablas distribuidas con un solo segmento que fallaban con "Method executeImpl is not supported for 'grouping' function". [#101030](https://github.com/ClickHouse/ClickHouse/pull/101030) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió `LOGICAL_ERROR` "Column identifier is already registered" en el planificador, que podía producirse cuando la misma expresión de tabla se procesaba varias veces. [#101048](https://github.com/ClickHouse/ClickHouse/pull/101048) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la excepción LOGICAL\_ERROR "Column identifier is already registered" cuando se usa la configuración `additional_result_filter` con consultas UNION o EXCEPT. [#101051](https://github.com/ClickHouse/ClickHouse/pull/101051) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un fallo del servidor (Logical error: Bad cast from ColumnVector to ColumnNullable) al usar `* APPLY` con funciones de agregación y `group_by_use_nulls=1` con GROUPING SETS, ROLLUP o CUBE. [#101062](https://github.com/ClickHouse/ClickHouse/pull/101062) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un bucle infinito cuando `input_format_csv_skip_first_lines` o `input_format_tsv_skip_first_lines` supera el número de líneas del archivo. [#101111](https://github.com/ClickHouse/ClickHouse/pull/101111) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un acceso fuera de límites en la optimización de materialización diferida que podía provocar una excepción en builds de depuración. [#101144](https://github.com/ClickHouse/ClickHouse/pull/101144) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la inferencia de tipos en CTE recursivas: los tipos de columna ahora se amplían iterativamente mediante `getLeastSupertype` entre las partes no recursiva y recursiva del `UNION ALL` hasta converger, lo que evita el desbordamiento de enteros en expresiones como `x + 1`. [#101155](https://github.com/ClickHouse/ClickHouse/pull/101155) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se limitó la configuración del tamaño de bloque de compresión de MergeTree (max\_compress\_block\_size, min\_compress\_block\_size, marks\_compress\_block\_size, primary\_key\_compress\_block\_size) a 256 MiB para evitar fallos del servidor cuando se establecen valores extremos mediante CREATE TABLE SETTINGS. [#101159](https://github.com/ClickHouse/ClickHouse/pull/101159) ([Groene AI](https://github.com/groeneai)).
* Corrige un fallo LOGICAL\_ERROR en `QueryAnalyzer::resolve()` cuando una ROW POLICY usa una subconsulta escalar en su cláusula `USING` (p. ej., `USING (SELECT 1)`). Cierra [#100695](https://github.com/ClickHouse/ClickHouse/issues/100695). [#101263](https://github.com/ClickHouse/ClickHouse/pull/101263) ([Groene AI](https://github.com/groeneai)).
* Corrige un comportamiento indefinido en `MergeTreeDataPartWriterCompact::cancel` cuando falla la asignación de un stream. [#101292](https://github.com/ClickHouse/ClickHouse/pull/101292) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un caso en el que no se incluía la timezone durante la asignación en la sentencia ALTER. Cierra [#101328](https://github.com/ClickHouse/ClickHouse/issues/101328). Relacionado: [https://github.com/ClickHouse/ClickHouse/pull/100647](https://github.com/ClickHouse/ClickHouse/pull/100647). [#101403](https://github.com/ClickHouse/ClickHouse/pull/101403) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige un fallo del server (LOGICAL\_ERROR) en consultas INSERT SELECT con ORDER BY ALL cuando el pipeline de SELECT produce múltiples streams. [#101443](https://github.com/ClickHouse/ClickHouse/pull/101443) ([Groene AI](https://github.com/groeneai)).
* Corrige resultados incorrectos de consultas causados por el reordenamiento de join al mover un filtro de INNER JOIN (que solo hace referencia al lado preservado de un outer join) a la cláusula ON del outer join. [#101504](https://github.com/ClickHouse/ClickHouse/pull/101504) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Omite aplicar materialización diferida a planes con arrayJoin, ya que esto podía hacer que no se respetara el límite. Cierra [#101608](https://github.com/ClickHouse/ClickHouse/issues/101608). [#101644](https://github.com/ClickHouse/ClickHouse/pull/101644) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige resultados incorrectos en consultas JOIN cuando la optimización `mergeFilterIntoJoinCondition` descartaba silenciosamente una condición de igualdad en WHERE con tipos incompatibles. [#101652](https://github.com/ClickHouse/ClickHouse/pull/101652) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Corrige que la pista de prueba `error` no funcionara para errores de sintaxis/análisis: antes, `-- { error SYNTAX_ERROR }` en una consulta malformada fallaba con "Expected server error" en lugar de coincidir con el error de análisis del lado del client. [#101675](https://github.com/ClickHouse/ClickHouse/pull/101675) ([Groene AI](https://github.com/groeneai)).
* Corrige que `INTO OUTFILE ... TRUNCATE` no usara realmente el renombrado atómico: la escritura se hacía directamente en el archivo original en lugar de en un archivo temporal, por lo que, si la consulta fallaba, se destruía el contenido original. Ahora los datos se escriben en un archivo temporal y solo se renombran si la operación finaliza correctamente. [#101884](https://github.com/ClickHouse/ClickHouse/pull/101884) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige una excepción `Unsupported DeltaLake type: varchar(n)` al leer tablas Delta Lake cuyo schema contiene tipos de columna varchar(n) o char(n). Estos tipos ahora se asignan a String, en consonancia con cómo el protocolo Delta Lake los almacena como matrices de bytes simples en Parquet. [#101973](https://github.com/ClickHouse/ClickHouse/pull/101973) ([Flavio Malavazi](https://github.com/flaviomalavazi)).
* Corrige una pérdida silenciosa de datos al leer archivos tar desde S3 con `schema_inference_mode=union` y schemas de Parquet heterogéneos: la caché de metadatos de Parquet reutilizaba incorrectamente los metadatos del primer archivo para todos los archivos posteriores del archivo tar. [#101990](https://github.com/ClickHouse/ClickHouse/pull/101990) ([Ahaan Limaye](https://github.com/ahaanlimaye)).
* Corrige un fallo del server (LOGICAL\_ERROR) al ejecutar ALTER TABLE UPDATE/DELETE en tablas Iceberg cuando no se había hecho ningún SELECT o INSERT previo en la tabla durante el mismo lifetime del server. [#102113](https://github.com/ClickHouse/ClickHouse/pull/102113) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un posible crash cuando se ejecuta una consulta ALTER en tablas de una base de datos en memoria (p. ej., tablas temporales). [#102360](https://github.com/ClickHouse/ClickHouse/pull/102360) ([Den Kalantaevskii](https://github.com/Diskein)).
* Se corrigió que `formatQuery` produjera grants duplicados como `GRANT FILE ON *.*, FILE ON *.* TO x` en lugar de `GRANT FILE ON *.* TO x` al dar formato a grants READ/WRITE retrocompatibles sobre la misma source. [#102411](https://github.com/ClickHouse/ClickHouse/pull/102411) ([Groene AI](https://github.com/groeneai)).
* Se corrige la pérdida de paralelismo en la agregación después de consultas read-in-order cuando `max_streams_to_max_threads_ratio` es mayor que 1. [#102467](https://github.com/ClickHouse/ClickHouse/pull/102467) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un crash (`LOGICAL_ERROR: Unknown virtual column`) al seleccionar subcolumns (como `.null` para Nullable, `.size0` para Array, elementos de Tuple o keys/values de Map) desde una tabla con el engine Buffer. [#102470](https://github.com/ClickHouse/ClickHouse/pull/102470) ([Groene AI](https://github.com/groeneai)).
* Se corrige la excepción "Cannot fold actions for projection" en la optimización de reordenación de join cuando un LEFT/RIGHT JOIN con `join_use_nulls` se combina con otros joins que involucran más de dos tablas. [#102516](https://github.com/ClickHouse/ClickHouse/pull/102516) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un overflow silencioso en operaciones escalares pointwise sobre numericIndexedVector (p. ej., `numericIndexedVectorPointwiseAdd`) cuando el escalar está fuera de rango. Estas entradas ahora generan `INCORRECT_DATA` en lugar de devolver valores corruptos. [#102546](https://github.com/ClickHouse/ClickHouse/pull/102546) ([FriendLey](https://github.com/FriendLey)).
* Se corrige el formato inconsistente del AST para INSERT con SAMPLE y OFFSET a nivel de consulta. Cierra [#102523](https://github.com/ClickHouse/ClickHouse/issues/102523). [#102547](https://github.com/ClickHouse/ClickHouse/pull/102547) ([zoomxi](https://github.com/zoomxi)).
* Se corrige la excepción `LOGICAL_ERROR` en `groupConcat` al deserializar un estado malformado de aggregate function. [#102558](https://github.com/ClickHouse/ClickHouse/pull/102558) ([Christoph Wurm](https://github.com/cwurm)).
* Ya no se acepta contenido no válido al final de los valores CSV de Time64 con `input_format_csv_use_default_on_bad_values=0`. Cierra [#102490](https://github.com/ClickHouse/ClickHouse/issues/102490). [#102596](https://github.com/ClickHouse/ClickHouse/pull/102596) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrige la excepción UNKNOWN\_ELEMENT\_OF\_ENUM al insertar el valor predeterminado en una JSON column con paths tipados como Enum. Cierra [#102359](https://github.com/ClickHouse/ClickHouse/issues/102359). [#102687](https://github.com/ClickHouse/ClickHouse/pull/102687) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige la corrupción de columns\_substreams.txt al renombrar columnas en algunos casos. Cierra [#102259](https://github.com/ClickHouse/ClickHouse/issues/102259). [#102689](https://github.com/ClickHouse/ClickHouse/pull/102689) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige la inserción en el tipo de dato Time durante el parsing de JSON. Cierra [#102016](https://github.com/ClickHouse/ClickHouse/issues/102016). [#102690](https://github.com/ClickHouse/ClickHouse/pull/102690) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige la codificación hexadecimal de la muestra de contenido en nombres de archivo de schema en caché. Cierra [#101904](https://github.com/ClickHouse/ClickHouse/issues/101904). [#102703](https://github.com/ClickHouse/ClickHouse/pull/102703) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió una infracción del orden de clasificación (`crash` en debug, corrupción silenciosa de datos en release) durante la operación de `merge` de `SummingMergeTree` cuando la clave `ORDER BY` es una expresión `hash` sobre una columna `Float32` que contiene valores NaN de señalización. [#102791](https://github.com/ClickHouse/ClickHouse/pull/102791) ([Groene AI](https://github.com/groeneai)).
* Se hicieron cancelables mediante `KILL QUERY` `DETACH DATABASE ... SYNC` y otras operaciones que llaman a `waitDetachedTableNotInUse`, y se hizo que respondieran al apagado del server, evitando bloqueos indefinidos cuando una consulta concurrente mantiene una referencia a una tabla. [#102804](https://github.com/ClickHouse/ClickHouse/pull/102804) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrigió un posible resultado incorrecto de `ANY RIGHT JOIN`. [#102893](https://github.com/ClickHouse/ClickHouse/pull/102893) ([Nikita Taranov](https://github.com/nickitat)).
* Se corrigió un problema por el que las solicitudes a S3 fallaban con `ios_base::clear: unspecified iostream_category error` en lugar de reintentarse, debido a que `BufferedStreamBuf::flushBuffer` de Poco no manejaba escrituras cortas desde la capa de socket. [#102894](https://github.com/ClickHouse/ClickHouse/pull/102894) ([Sema Checherinda](https://github.com/CheSema)).
* Se corrigió el fallo de la función de tabla `input('auto')` a través de la interfaz HTTP en consultas INSERT SELECT. [#102902](https://github.com/ClickHouse/ClickHouse/pull/102902) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se deshabilitó la optimización trivial de LIMIT con row policies/additional\_table\_filters (para permitir el análisis paralelo de índices). [#102921](https://github.com/ClickHouse/ClickHouse/pull/102921) ([Azat Khuzhin](https://github.com/azat)).
* Se ocultó la clave secreta en la función SQL `HMAC`. Corrige [#102927](https://github.com/ClickHouse/ClickHouse/issues/102927). [#102997](https://github.com/ClickHouse/ClickHouse/pull/102997) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Se corrigió la excepción `MULTIPLE_EXPRESSIONS_FOR_ALIAS` generada en consultas distribuidas que hacen referencia varias veces a la misma llamada a `quantile` (por ejemplo, en `SELECT`, `HAVING` y `ORDER BY`) con `optimize_syntax_fuse_functions` habilitado. [#103014](https://github.com/ClickHouse/ClickHouse/pull/103014) ([tanner-bruce](https://github.com/tanner-bruce)).
* Se corrige un caso detectado por CI en el que se pasaba un set no preparado cuando el filtro depende de la columna del lado izquierdo. Cierra [#102966](https://github.com/ClickHouse/ClickHouse/issues/102966). [#103029](https://github.com/ClickHouse/ClickHouse/pull/103029) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrige `castOrNull` a JSON en algunos casos. Cierra [#101818](https://github.com/ClickHouse/ClickHouse/issues/101818). [#103036](https://github.com/ClickHouse/ClickHouse/pull/103036) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió un problema por el que `SELECT DISTINCT` devolvía silenciosamente resultados incompletos cuando una proyección de agregación coincidía con la consulta y algunas partes de la tabla no tenían datos de proyección (por ejemplo, la proyección se añadió a una tabla que ya contenía datos y no se ejecutó `MATERIALIZE PROJECTION`). Cierra [#102951](https://github.com/ClickHouse/ClickHouse/issues/102951). [#103052](https://github.com/ClickHouse/ClickHouse/pull/103052) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigió la excepción `TOO_FEW_ARGUMENTS_FOR_FUNCTION` cuando un predicado `WHERE` como `AND(OR(A, A), A)` se reduce a un único argumento de nivel superior durante la extracción de expresiones comunes en el analizador. [#103072](https://github.com/ClickHouse/ClickHouse/pull/103072) ([Peng](https://github.com/fastio)).
* Corrige un error lógico `Function writeSlice expects same column types for GenericArraySlice and GenericArraySink` que se producía al evaluar `if`/`ifNull` sobre tuplas, mapas o arrays que contenían un elemento `QBit`. `ColumnQBit::structureEquals` comparaba incorrectamente la tupla interna de una columna `QBit` con el envoltorio externo de la otra, por lo que columnas `QBit` estructuralmente idénticas se reportaban como diferentes. [#103084](https://github.com/ClickHouse/ClickHouse/pull/103084) ([Groene AI](https://github.com/groeneai)).
* Hace que `DETACH DATABASE` con `database_atomic_wait_for_drop_and_detach_synchronously` respete `KILL QUERY` en lugar de quedar bloqueado indefinidamente cuando se mantiene una referencia a una tabla. [#103095](https://github.com/ClickHouse/ClickHouse/pull/103095) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un segfault al eliminar un módulo WASM usando un predicado que no es un identificador (por ejemplo, `WHERE 1=1`). [#103101](https://github.com/ClickHouse/ClickHouse/pull/103101) ([Joe Redfern](https://github.com/JosephRedfern)).
* Corrige una ruptura de compatibilidad con versiones anteriores por la que clientes antiguos fallaban con `UNEXPECTED_PACKET_FROM_SERVER` al insertar en un servidor más reciente mediante `remote()` o tablas distribuidas, causada por una llamada incondicional a `sendProgress` al final de `processInsertQuery`. [#103148](https://github.com/ClickHouse/ClickHouse/pull/103148) ([Sema Checherinda](https://github.com/CheSema)).
* IN con un segundo argumento de tipo tuple no constante no debe aplicar CAST a los elementos de la tuple reduciéndolos al tipo del lado izquierdo, ya que esto puede provocar overflow. Cierra [#103055](https://github.com/ClickHouse/ClickHouse/issues/103055). [#103169](https://github.com/ClickHouse/ClickHouse/pull/103169) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige el uso de un valor no inicializado en una función del protocolo. [#103187](https://github.com/ClickHouse/ClickHouse/pull/103187) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige `LOGICAL_ERROR` (`Bad cast … to ColumnLowCardinality`) durante el análisis de índices de MergeTree cuando una cláusula `WHERE` compara una columna clave `LowCardinality` con una constante convertida a un tipo que contiene `LowCardinality` anidado (por ejemplo, `Variant(LowCardinality(Date), String)`). [#103211](https://github.com/ClickHouse/ClickHouse/pull/103211) ([Groene AI](https://github.com/groeneai)).
* Corrige `Logical error: 'index < bucket_count'` en la familia de funciones de agregación `timeSeries*ToGrid` (por ejemplo, `timeSeriesResampleToGridWithStaleness`, `timeSeriesChangesToGrid`, `timeSeriesResetsToGrid`, `timeSeriesRateToGrid`) cuando se llamaba con parámetros de timestamp extremos que provocarían overflow en la aritmética con signo de 64 bits durante el cálculo del número de buckets. También limita el número total de buckets de la cuadrícula a 16 millones para evitar asignaciones accidentales de grandes cantidades de memoria a partir de entradas maliciosas. [#103223](https://github.com/ClickHouse/ClickHouse/pull/103223) ([Groene AI](https://github.com/groeneai)).
* Corrige la excepción `Logical error: 'Port is already connected'` durante la expansión de la pipeline en la ruta `FINAL` diferida para `ReplacingMergeTree`. El error afectaba a las consultas con `query_plan_optimize_lazy_final = 1` cuando `ReadFromMergeTree::initializePipeline` insertaba transformaciones internas (por ejemplo, un `Resize`) que conectaban entre sí los procesadores de la sub-pipeline, lo que hacía que `LazyUnorderedReadFromMergeTreeSource::expandPipeline` intentara conectar puertos de salida que ya estaban conectados. [#103230](https://github.com/ClickHouse/ClickHouse/pull/103230) ([Groene AI](https://github.com/groeneai)).
* Corrige resultados incorrectos de `LIMIT BY` y `DISTINCT` cuando la entrada es un `UNION ALL` de subconsultas ordenadas. El optimizador del plan de consulta trataba incorrectamente esa unión como si estuviera ordenada globalmente, lo que provocaba que se devolvieran filas adicionales. [#103231](https://github.com/ClickHouse/ClickHouse/pull/103231) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige un posible fallo durante el cálculo de estadísticas en el tipo Map con replicación diferida. Cierra [#102390](https://github.com/ClickHouse/ClickHouse/issues/102390). [#103273](https://github.com/ClickHouse/ClickHouse/pull/103273) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige una carrera de dato en las fuentes de diccionario de ClickHouse, MySQL, PostgreSQL y XDBC, donde `clone() const` lee de la misma cadena `invalidate_query_response` en la que `isModified() const` escribe. [#103277](https://github.com/ClickHouse/ClickHouse/pull/103277) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige la detección incorrecta de monotonicidad para `Date32`. Cierra [#101265](https://github.com/ClickHouse/ClickHouse/issues/101265). [#103283](https://github.com/ClickHouse/ClickHouse/pull/103283) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Limita a 64 KB las cadenas del paquete TCP Hello previas a la autenticación y añade la configuración de servidor `handshake_timeout_milliseconds` para limitar el tiempo total de handshake, evitando que clientes no autenticados consuman memoria en exceso o mantengan hilos ocupados indefinidamente. [#103284](https://github.com/ClickHouse/ClickHouse/pull/103284) ([Sema Checherinda](https://github.com/CheSema)).
* Corrige `min_value &gt; max_value` en las estadísticas de Parquet ColumnIndex para columnas String. [#103334](https://github.com/ClickHouse/ClickHouse/pull/103334) ([Saurabh Kumar Ojha](https://github.com/saurabhojha)).
* Corrige el manejo incorrecto de filas NULL para entradas `Nullable(Tuple(...))` en `flattenTuple` y `tupleToNameValuePairs`. `flattenTuple` ahora conserva el mapa nulo externo para que las filas NULL sigan siendo NULL. `tupleToNameValuePairs` ahora cambia el tipo de valor del resultado a `Nullable(T)` cuando es posible si la entrada es `Nullable(Tuple(...))`, de modo que las filas NULL produzcan `[('a', NULL), ('b', NULL)]` en lugar de `[('a', 0), ('b', 0)]`. Cuando el tipo de elemento no puede envolverse en `Nullable` (por ejemplo, `Array`), se usan valores predeterminados en lugar de NULL. Cierra [#103312](https://github.com/ClickHouse/ClickHouse/issues/103312). [#103383](https://github.com/ClickHouse/ClickHouse/pull/103383) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Comprueba si hay datos Dynamic aplanados malformados en Native format. [#103392](https://github.com/ClickHouse/ClickHouse/pull/103392) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige una RPC obsoleta que provocaba que la replicación se quedara bloqueada tras la sincronización del snapshot. [#103406](https://github.com/ClickHouse/ClickHouse/pull/103406) ([Seva Potapov](https://github.com/seva-potapov)).
* Corrige un fallo del servidor por `LOGICAL_ERROR` "Cannot pop N rows from X" (en builds de depuración / con sanitizador) al leer un documento BSON malformado que contenía un valor cuyo tipo BSON es incompatible con el tipo de la columna de destino dentro de una columna `Nullable(T)` o `Array(Nullable(T))`. La fila malformada ahora produce una excepción `ILLEGAL_COLUMN` limpia, como estaba previsto. [#103418](https://github.com/ClickHouse/ClickHouse/pull/103418) ([Groene AI](https://github.com/groeneai)).
* Corrige un fallo del servidor en `arrayFill` y `arrayReverseFill` cuando se aplican a una columna `Array(String)` cuya primera fila está vacía junto con una lambda constantemente falsa. El índice `size_t` del bucle de agregación / subarreglo sufría un underflow hasta `SIZE_MAX`, lo que luego provocaba una lectura fuera de límites dentro de `ColumnString::doInsertManyFrom`. Misma familia de errores que [#12263](https://github.com/ClickHouse/ClickHouse/issues/12263). [#103424](https://github.com/ClickHouse/ClickHouse/pull/103424) ([Groene AI](https://github.com/groeneai)).
* Corrige ACCESS\_DENIED / UNKNOWN\_TABLE en RMV APPEND descendentes con SQL SECURITY DEFINER cuando el EXCHANGE de un RMV REPLACE ascendente cambia la identidad del almacenamiento de destino a mitad de la resolución. [#103427](https://github.com/ClickHouse/ClickHouse/pull/103427) ([Alexander Gololobov](https://github.com/davenger)).
* Pobla la columna `_time` a partir de la table function `url`. [#103437](https://github.com/ClickHouse/ClickHouse/pull/103437) ([Nikita Taranov](https://github.com/nickitat)).
* Corrige una posible lectura fuera de los límites en la ruta de descompresión del codec `ALP` al procesar una entrada malformada con un ancho de bits no válido. [#103457](https://github.com/ClickHouse/ClickHouse/pull/103457) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Corrige un error por el que `SYSTEM SYNC FILESYSTEM CACHE '<name>' ON CLUSTER ...` podía perder el nombre de la caché al dar formato a la consulta, lo que provocaba que los nodos remotos sincronizaran todas las cachés del filesystem en lugar de solo la caché solicitada. [#103469](https://github.com/ClickHouse/ClickHouse/pull/103469) ([Asish Kumar](https://github.com/officialasishkumar)).
* Corrige el procesamiento de la ruta codificada en URL en `deltaLakeAzure`. Cierra [#103509](https://github.com/ClickHouse/ClickHouse/issues/103509). [#103525](https://github.com/ClickHouse/ClickHouse/pull/103525) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Corrige un uso de memoria después de su liberación en el heap al multiplicar un estado de `AggregateFunction` por un entero (por ejemplo, `quantilesExactState(...) * N`). El bucle de exponenciación por cuadrados fusionaba el estado consigo mismo, lo que no está definido cuando la `merge` de la función de agregación reasigna su almacenamiento interno. Cierra STID 0988-40af. [#103536](https://github.com/ClickHouse/ClickHouse/pull/103536) ([Groene AI](https://github.com/groeneai)).
* Corrige un raro `LOGICAL_ERROR` "Part X intersects previous part Y" que se producía durante el arranque de una tabla `ReplicatedMergeTree` cuando dos partes vacías inesperadas en disco tenían rangos de bloques superpuestos, pero sin que una contuviera a la otra. La excepción abortaba el hilo de asociación de la tabla e impedía que la tabla se iniciara. [#103537](https://github.com/ClickHouse/ClickHouse/pull/103537) ([Groene AI](https://github.com/groeneai)).
* Corrige `Logical error: Incorrect mark rows for part ...` (aserción solo de depuración) que se activaba por mutaciones en tablas `MergeTree` con granularidad de índice no adaptativa (`index_granularity_bytes = 0`) cuya última marca de datos estaba incompleta (se reproduce de forma más fiable con `DETACH`/`ATTACH` seguido de una eliminación ligera `DELETE`). [#103538](https://github.com/ClickHouse/ClickHouse/pull/103538) ([Groene AI](https://github.com/groeneai)).
* Corrige que `clickhouse-local` devolviera silenciosamente 0 filas al leer desde los pseudoficheros `/proc` y `/sys` mediante la table function `file()` (por ejemplo, `SELECT * FROM file('/proc/cpuinfo', 'RawBLOB')`). [#103548](https://github.com/ClickHouse/ClickHouse/pull/103548) ([Ashrith Bandla](https://github.com/ashrithb)).
* Corrige el manejo del argumento `max_string_length` para el table engine `GenerateRandom`. [#103550](https://github.com/ClickHouse/ClickHouse/pull/103550) ([Alex Kuleshov](https://github.com/0xAX)).
* Corrige el enmascaramiento de credenciales anidadas en los logs. [#103552](https://github.com/ClickHouse/ClickHouse/pull/103552) ([Vitaly Baranov](https://github.com/vitlibar)).
* Corrige la detección de SVE que usaba instrucciones SVE cuando no estaban disponibles. [#103568](https://github.com/ClickHouse/ClickHouse/pull/103568) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige el análisis de los argumentos de almacenamiento de `GenerateRandom`. [#103574](https://github.com/ClickHouse/ClickHouse/pull/103574) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Corrige un bucle infinito en `WITH FILL` para datos que empiezan con ±inf. [#103580](https://github.com/ClickHouse/ClickHouse/pull/103580) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se corrige que `JSONExtract` en un tipo `Variant` truncara silenciosamente los números JSON fraccionarios. Antes, `JSONExtract('{"x": 3.14}', 'x', 'Variant(Int64, Float64)')` devolvía `Int64=3` y `JSONExtract('{"x": 3.14}', 'x', 'Variant(String, Int64)')` devolvía `Int64=3`, perdiendo la parte fraccionaria. Ahora el valor fraccionario se conserva sin pérdida: un miembro `Float64`/`Decimal` lo toma cuando está presente; de lo contrario, un miembro `String` captura el JSON original. Los tipos `Variant` que contienen solo miembros enteros (p. ej., `Variant(Int64, Int32)`) y la extracción directa como entero (`JSONExtract(json, 'Int64')`, `JSONExtractInt`, etc.) no cambian. [#103620](https://github.com/ClickHouse/ClickHouse/pull/103620) ([Groene AI](https://github.com/groeneai)).
* Se corrige que `SYSTEM INSTRUMENT REMOVE` sin argumentos produjera `std::bad_optional_access` (código de error 1001) en lugar de `SYNTAX_ERROR` (código de error 62). [#103622](https://github.com/ClickHouse/ClickHouse/pull/103622) ([Pablo Marcos](https://github.com/pamarcos)).
* Se corrige un error lógico/comportamiento indefinido en la window view `windowID` y `tumble` cuando se llamaban con una cadena de zona horaria como tercer argumento. [#103641](https://github.com/ClickHouse/ClickHouse/pull/103641) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El logging del client de S3 ahora trata las respuestas HTTP 400 que incluyen un encabezado x-amz-bucket-region no vacío (región de firma SigV4 incorrecta) como un caso informativo de región incorrecta, con una línea de log más clara en lugar de la ruta genérica de error. El proveedor de credenciales de identidad web de STS se añade a la cadena de credenciales de S3 solo cuando la identidad web está configurada, lo que reduce las advertencias espurias en implementaciones que no la usan. Cierra [#99140](https://github.com/ClickHouse/ClickHouse/issues/99140). [#103673](https://github.com/ClickHouse/ClickHouse/pull/103673) ([MeltonSmith](https://github.com/MeltonSmith)).
* Se corrige `SYSTEM SYNC REPLICA <db>.<tbl> IF EXISTS` para que finalice correctamente y sin errores cuando la base de datos no exista, en consonancia con el comportamiento actual para una table inexistente y con el precedente establecido por `DROP TABLE IF EXISTS`. Antes, la consulta lanzaba `UNKNOWN_DATABASE` pese a `IF EXISTS`. Cierra [#103629](https://github.com/ClickHouse/ClickHouse/issues/103629). [#103689](https://github.com/ClickHouse/ClickHouse/pull/103689) ([Groene AI](https://github.com/groeneai)).
* Se corrige el error lógico `Arguments of 'plus' have incorrect data types` lanzado por `FunctionBinaryArithmetic::executeImpl2` cuando una table `MergeTree` tenía `Array(LowCardinality(...))` en su clave de ordenación y una cláusula `WHERE` usaba `plus` / `minus` entre esa columna y una constante `Array` de un tipo de elemento distinto. `KeyCondition::getMonotonicityForRange` ahora elimina `LowCardinality` de forma recursiva antes de invocar el despacho numérico interno. [#103701](https://github.com/ClickHouse/ClickHouse/pull/103701) ([Groene AI](https://github.com/groeneai)).
* Se corrige una condición de carrera al redimensionar dinámicamente la cache en 26.1+. [#103702](https://github.com/ClickHouse/ClickHouse/pull/103702) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrige un problema por el que los índices de omisión text y bloom\_filter en columnas `ALIAS` cuya expresión contenía una lambda con constantes capturadas (p. ej., `arrayMap((k, v) -> concat(k, '=', v), mapKeys(m), mapValues(m)))` se ignoraban silenciosamente. [#103708](https://github.com/ClickHouse/ClickHouse/pull/103708) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrige que `position` y `positionCaseInsensitive` con un `start_pos` cercano a `UINT64_MAX` se quedaran bloqueados o provocaran un fallo de segmentación debido a un desbordamiento en la aritmética de punteros. [#103766](https://github.com/ClickHouse/ClickHouse/pull/103766) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige un comportamiento indefinido al analizar `DateTime` con una parte fraccionaria doble. [#103773](https://github.com/ClickHouse/ClickHouse/pull/103773) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigió una regresión de corrección de datos en 26.x por la que `if` y `multiIf` compilados con JIT, con un tipo de resultado `Decimal` y un literal no `Decimal` (entero o de coma flotante) en una rama, devolvían silenciosamente un valor `10^scale` demasiado pequeño. La ruta lenta (sin JIT) no se veía afectada. Solución temporal en las versiones afectadas: `SET compile_expressions = 0`. [#103809](https://github.com/ClickHouse/ClickHouse/pull/103809) ([Groene AI](https://github.com/groeneai)).
* Corrige el reenvío del tokenizer desde el text index a las funciones compatibles. [#103826](https://github.com/ClickHouse/ClickHouse/pull/103826) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Corrige resultados incorrectos de `numbers`, `generate_series` y fuentes similares que respetan rangos cuando la cláusula `WHERE` usa `IN` o `NOT IN` sobre una tupla cuyos elementos se deduplican en una única columna clave (por ejemplo, `WHERE tuple(number, number) NOT IN (tuple(1, 2))`). Cierra [#103660](https://github.com/ClickHouse/ClickHouse/issues/103660). [#103835](https://github.com/ClickHouse/ClickHouse/pull/103835) ([Groene AI](https://github.com/groeneai)).
* Mantiene el pico real de memoria del hash join con spilling automático por debajo de `max_bytes_before_external_join`. Antes, la preasignación basada en estadísticas, el redimensionamiento in situ de la hash table y los buckets en memoria sin límite de `GraceHashJoin` podían hacer que la consulta superara el límite configurado y provocara `MEMORY_LIMIT_EXCEEDED`. [#103838](https://github.com/ClickHouse/ClickHouse/pull/103838) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un bloqueo durante el cierre de `clickhouse-local` cuando hay logs del sistema configurados (como `text_log` o `filesystem_cache_log`). `SystemLogs::flushImpl` llamaba a `BaseDaemon::instance().flushTextLogs()`, que lanza `std::bad_cast` fuera de `clickhouse-server`, y dejaba los hilos de guardado en ejecución hasta que `pthread_cond_destroy` bloqueaba la destrucción de las colas de logs del sistema. [#103874](https://github.com/ClickHouse/ClickHouse/pull/103874) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Rechaza las consultas CTE `MATERIALIZED` cuyo body se resuelve en distintos tipos de columna inferidos según la referencia, con un error claro `TYPE_MISMATCH` en lugar de hacer que el server falle con un `Bad cast` `LOGICAL_ERROR`. Esto ocurría cuando el body del CTE hacía referencia a identificadores de un ámbito externo (por ejemplo, un alias de la proyección de la subconsulta llamante) que se expandían en línea como constantes distintas para cada referencia. [#103879](https://github.com/ClickHouse/ClickHouse/pull/103879) ([Groene AI](https://github.com/groeneai)).
* Corrige un uso de valor no inicializado en los optimizadores del query plan de conversión de JOIN (`tryConvertAnyOuterJoinToInnerJoin`, `tryConvertAnyJoinToSemiOrAntiJoin`) cuando el filtro sobre un `ANY` `OUTER` `JOIN` contiene una función no determinista como `rand`, `now` o `rowNumberInAllBlocks`. El optimizador ya no intenta plegar constantes en esos filtros y deja el JOIN sin cambios, lo que también evita conversiones incorrectas a `INNER`/`SEMI`/`ANTI JOIN` que podían descartar filas silenciosamente. [#103880](https://github.com/ClickHouse/ClickHouse/pull/103880) ([Groene AI](https://github.com/groeneai)).
* Corrige un uso de memoria tras su liberación en `StorageKafka2` que podía hacer que el server fallara cuando se sustituye una session de Keeper mientras el consumer mantiene bloqueos efímeros de partición de tópico. [#103890](https://github.com/ClickHouse/ClickHouse/pull/103890) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un `LOGICAL_ERROR` "Primary key type mismatch" lanzado al hacer JOIN de una tabla `EmbeddedRocksDB` mediante `JOIN ... USING (key)` con una subconsulta cuya columna clave tiene un tipo distinto (por ejemplo, `Nullable(UInt64)`, `Int64`, `Decimal`) al de la primary key del almacenamiento. El planner ahora descarta `DirectKeyValueJoin` cuando hay incompatibilidad de tipos y recurre a `HashJoin`, que gestiona la conversión de tipos. [#103928](https://github.com/ClickHouse/ClickHouse/pull/103928) ([Groene AI](https://github.com/groeneai)).
* `SET max_threads = DEFAULT` (y lo mismo para `max_final_threads` y `max_parsing_threads`) ya no pierde el estado `auto`. Anteriormente, después de restablecer una de estas configuraciones, `system.settings` mostraba el recuento de núcleos resuelto (p. ej., `32`) en lugar de `'auto(32)'`, y el servidor se comportaba como si el valor se hubiera fijado explícitamente. [#103991](https://github.com/ClickHouse/ClickHouse/pull/103991) ([Groene AI](https://github.com/groeneai)).
* Corrige `SIZES_OF_ARRAYS_DONT_MATCH` al leer columnas `AggregateFunction(topK(N), String)` cuyo `alpha_size` persistido había aumentado debido a un ciclo de deserialize+serialize anterior a la versión 25.12. [#104002](https://github.com/ClickHouse/ClickHouse/pull/104002) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió una vulnerabilidad de inyección SQL en dictionary sources de PostgreSQL, Cassandra y XDBC: las claves de tipo cadena que contenían comillas simples se escapaban con `\'` (barra invertida), que estos backends interpretan como una barra invertida literal en lugar de una secuencia de escape, lo que permitía inyectar SQL arbitrario en las consultas de lookup del diccionario. `ExternalQueryBuilder` ahora emite el escape estándar de SQL `''` para esos backends; los dictionary sources de ClickHouse y MySQL siguen usando escape con barra invertida. [#104009](https://github.com/ClickHouse/ClickHouse/pull/104009) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrigió una posible incompatibilidad de tipos en la agregación cuando el tipo de una columna se cambiaba a o desde LowCardinality y no se reconstruía la proyección min-max. [#104013](https://github.com/ClickHouse/ClickHouse/pull/104013) ([Nikita Taranov](https://github.com/nickitat)).
* Corrige un bucle infinito de optimizaciones de consultas provocado por no propagar la prevención de eliminar columnas no usadas al fusionar expresiones. [#104083](https://github.com/ClickHouse/ClickHouse/pull/104083) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Corrige `LOGICAL_ERROR` en `StreamingStorageRegistry::renameTable` al renombrar por lotes tablas de streaming (S3Queue, Kafka, RabbitMQ) mediante seguimiento de identidad basado en UUID en lugar de nombres. [#104101](https://github.com/ClickHouse/ClickHouse/pull/104101) ([Nikita Taranov](https://github.com/nickitat)).
* Se corrigieron resultados incorrectos cuando un CTE construido con `UNION ALL` contenía una rama `SELECT DISTINCT` y la consulta externa proyectaba solo un subconjunto de las columnas del CTE. El nuevo `analyzer` `RemoveUnusedProjectionColumnsPass` eliminaba incorrectamente la columna no referenciada de la proyección `DISTINCT` interna, lo que hacía que filas que debían seguir siendo distintas (mismo valor en la columna proyectada, pero distinto valor en la columna eliminada) colapsaran en una sola. [#104114](https://github.com/ClickHouse/ClickHouse/pull/104114) ([Groene AI](https://github.com/groeneai)).
* Corrige varios problemas de exactitud en casos límite en la configuración `optimize_inverse_dictionary_lookup`, donde la optimización podía descartar filas silenciosamente o suprimir excepciones. Cierra [#103270](https://github.com/ClickHouse/ClickHouse/issues/103270). Cierra [#103085](https://github.com/ClickHouse/ClickHouse/issues/103085). [#104133](https://github.com/ClickHouse/ClickHouse/pull/104133) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige una escritura fuera de límites al deserializar el estado `quantileTiming`. [#104141](https://github.com/ClickHouse/ClickHouse/pull/104141) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un comportamiento indefinido cuando un valor `Float64` fuera de rango se convierte a un tipo entero wide (`UInt64`, `Int64`, `Int128`, `UInt128`, `Int256`, `UInt256`). Anteriormente, valores iguales a `Float64(numeric_limits<T>::max())` (que se redondea hacia arriba a un valor por encima del máximo real) eludían la comprobación de límites y producían UB en el cast posterior. Esto afectaba al parsing de parámetros de funciones de agregación (`topK`, `histogram`, `uniqUpTo`, `groupArrayInsertAt`, etc.) y a configuraciones de tipo entero mediante `SET <setting> = <Float64>`. Cierra [#103817](https://github.com/ClickHouse/ClickHouse/issues/103817). [#104154](https://github.com/ClickHouse/ClickHouse/pull/104154) ([Groene AI](https://github.com/groeneai)).
* Se corrige la excepción `LOGICAL_ERROR` "Unexpected return type from comparison. Expected `UInt8`. Got `Const(Nullable(UInt8))`" al comparar un `Tuple(Tuple(Nullable(...)))` anidado (o con un nivel de anidamiento mayor) con un literal `String`. El tipo de retorno de la comparación ahora se infiere correctamente como `Nullable(UInt8)`, en consonancia con el comportamiento en tiempo de ejecución. [#104171](https://github.com/ClickHouse/ClickHouse/pull/104171) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un aborto del servidor (`UndefinedBehaviorSanitizer: reference binding to null pointer`, segfault en versiones release) en `SELECT ... FROM <ReplacingMergeTree(version, is_deleted)> FINAL PREWHERE is_deleted = <expr> AND <other column expr>` cuando `query_plan_optimize_lazy_final = 1`. El paso de lectura lazy-FINAL sin intersección perdió la columna `is_deleted` de su encabezado de salida porque `PREWHERE` la consumió como entrada sin volver a exponerla como salida. El paso posterior `addIsDeletedFilter` acabó desreferenciando un puntero nulo `ActionsDAG::Node`. [#104177](https://github.com/ClickHouse/ClickHouse/pull/104177) ([Groene AI](https://github.com/groeneai)).
* Al llamar a la tabla system.failpoints, se usaba un failpoint, por lo que podía quedar deshabilitado. [#104237](https://github.com/ClickHouse/ClickHouse/pull/104237) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Se corrige `MemorySanitizer: use-of-uninitialized-value` en las funciones `detectLanguage*` cuando la entrada contiene un carácter UTF-8 que termina exactamente en el límite del búfer. [#104257](https://github.com/ClickHouse/ClickHouse/pull/104257) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige un error lógico (`Bad cast from type DB::CachedObjectStorage to DB::S3ObjectStorage`) que abortaba el análisis de argumentos de los motores y las table functions de data lake (`icebergS3`, `deltaLakeS3`, etc.) cuando se invocaban con `SETTINGS disk = '...'` sobre un disco cuyo object storage subyacente está envuelto por un decorador, como una filesystem cache. Cierra [#89300](https://github.com/ClickHouse/ClickHouse/issues/89300). [#104258](https://github.com/ClickHouse/ClickHouse/pull/104258) ([Groene AI](https://github.com/groeneai)).
* Se corrige el análisis de expresiones de subíndice entre paréntesis en columnas llamadas `values`, por ejemplo `(values['a'])`, para que ya no se interpreten como expresiones de tabla `VALUES` estándar de SQL. [#104312](https://github.com/ClickHouse/ClickHouse/pull/104312) ([Desel72](https://github.com/Desel72)).
* Se corrige un aborto del servidor/`LOGICAL_ERROR` en el hilo de eviction en segundo plano de la filesystem cache (`SLRUFileCachePriority::collectEvictionInfo`) que podía producirse cuando `keep_free_space_size_ratio` o `keep_free_space_elements_ratio` eran lo bastante altos como para activar la eviction mientras todas las cache entries ya habían sido promovidas a la protected queue de SLRU (con la probationary vacía). [#104313](https://github.com/ClickHouse/ClickHouse/pull/104313) ([Groene AI](https://github.com/groeneai)).
* Se corrigen excepciones (`NOT_FOUND_COLUMN_IN_BLOCK`, `LOGICAL_ERROR`, `AMBIGUOUS_COLUMN_NAME`) al usar projections con vistas UNION ALL, window functions o colisiones de nombres entre alias y columnas. Regresión de [#88798](https://github.com/ClickHouse/ClickHouse/issues/88798). [#104317](https://github.com/ClickHouse/ClickHouse/pull/104317) ([Amos Bird](https://github.com/amosbird)).
* Se corrige un posible underflow en el análisis de arrays de Postgres. [#104322](https://github.com/ClickHouse/ClickHouse/pull/104322) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Las funciones que devuelven un tipo no `Nullable` (como `Array`, `Tuple` o `Map`) ahora aceptan argumentos `Nullable`. Las funciones afectadas incluyen `extractAll`, `extractAllGroups`, `extractAllGroupsHorizontal`, `extractAllGroupsVertical`, `extractGroups`, `splitByChar`, `splitByString`, `splitByRegexp`, `splitByWhitespace`, `splitByNonAlpha` y `alphaTokens`. Las filas de entrada `NULL` ahora producen el valor predeterminado del tipo de resultado (por ejemplo, un array vacío) en lugar de generar "Nested type is not allowed inside Nullable type". [#104326](https://github.com/ClickHouse/ClickHouse/pull/104326) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige las estadísticas de Iceberg en tablas particionadas. Esto cierra [#104321](https://github.com/ClickHouse/ClickHouse/issues/104321). [#104329](https://github.com/ClickHouse/ClickHouse/pull/104329) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige un error lógico fatal durante el arranque del servidor en macOS (y compilaciones similares de jemalloc), en el que `Jemalloc::verifySetup` informaba incorrectamente de una discrepancia en `jemalloc_enable_background_threads` porque los mallctls opcionales `background_thread` / `max_background_threads` no existen; la verificación se omite cuando esos mallctls no están disponibles, y `getValue` ya no deja la salida sin inicializar si falla. Cierra [#102183](https://github.com/ClickHouse/ClickHouse/issues/102183). [#104330](https://github.com/ClickHouse/ClickHouse/pull/104330) ([SAYON DEEP](https://github.com/sayondeep)).
* Corrige una regresión que afectaba a la corrección, por la que las consultas `SELECT` con `max_rows_to_read_leaf` y `read_overflow_mode_leaf = 'throw'` podían lanzar incorrectamente `TOO_MANY_ROWS` incluso cuando un skip index habría reducido la lectura por debajo del límite del leaf. La configuración simétrica para non-leaf (`max_rows_to_read` / `read_overflow_mode`) ya estaba contemplada. [#104331](https://github.com/ClickHouse/ClickHouse/pull/104331) ([Groene AI](https://github.com/groeneai)).
* `toUUID`, `toUUIDOrNull`, `toUUIDOrZero`, `toUUIDOrDefault`, `CAST` a `UUID` y `Nullable(UUID)`, `accurateCastOrNull` a `UUID`, y los formatos de entrada que interpretan un UUID a partir de texto (`Avro`, `MsgPack`, `JSONExtract`, ...) ahora rechazan cadenas con la longitud correcta pero que contienen caracteres no hexadecimales. Antes, estas entradas se convertían silenciosamente en un UUID fabricado al leer más allá del final de la tabla de búsqueda de dígitos hexadecimales; ahora `toUUID` lanza `CANNOT_PARSE_UUID`, y las variantes `Or*` devuelven `NULL` / el UUID cero / el valor predeterminado proporcionado. [#104370](https://github.com/ClickHouse/ClickHouse/pull/104370) ([Groene AI](https://github.com/groeneai)).
* Corrige `Bad cast` `LOGICAL_ERROR` en `caseWithExpression` (y en SQL `CASE expr WHEN ... THEN ... ELSE ...`) cuando el supertype solo de THEN y el supertype de (THENs + ELSE) acaban en distintos almacenamientos `ColumnDecimal`; por ejemplo, valores THEN `(UInt16, Int8)` con un ELSE de `Decimal(9, 2)`. Cierra [#104335](https://github.com/ClickHouse/ClickHouse/issues/104335). [#104378](https://github.com/ClickHouse/ClickHouse/pull/104378) ([Groene AI](https://github.com/groeneai)).
* Los fallos internos informados mediante `logExceptionBeforeStart` (flushes de asynchronous insert, refreshes de vistas materialized, errores de parse lanzados durante consultas internas) ahora incrementan correctamente los ProfileEvents `FailedInternalQuery`, `FailedInternalSelectQuery` y `FailedInternalInsertQuery`, junto con los contadores visibles para el usuario `FailedQuery`, `FailedSelectQuery` y `FailedInsertQuery`. Antes, estos contadores internos permanecían en cero para los fallos ocurridos antes de que empezara la ejecución de la consulta, por lo que no contabilizaban una clase importante de fallos internos. [#104399](https://github.com/ClickHouse/ClickHouse/pull/104399) ([Groene AI](https://github.com/groeneai)).
* Corrige el error `Code: 36. BAD_ARGUMENTS Expected literal, got {name:Type}` que se producía al usar un parámetro de consulta dentro del ajuste `base_backup` de una sentencia `BACKUP` o `RESTORE` (p. ej., `BACKUP ... SETTINGS base_backup = S3({backup_name:String}, ...)`). La regresión se introdujo en `26.1.5` con el PR [#99205](https://github.com/ClickHouse/ClickHouse/issues/99205). Cierra [#103324](https://github.com/ClickHouse/ClickHouse/issues/103324). [#104413](https://github.com/ClickHouse/ClickHouse/pull/104413) ([Groene AI](https://github.com/groeneai)).
* Corrige un abort del servidor en escrituras de `IcebergLocal`/`IcebergS3` cuando a `ALTER TABLE ... DROP COLUMN` le sigue un `INSERT` con `iceberg_metadata_staleness_ms` mayor que cero. Ahora `ALTER` invalida la caché local de archivos de metadatos de Iceberg para que las lecturas y escrituras posteriores vean el nuevo esquema. [#104419](https://github.com/ClickHouse/ClickHouse/pull/104419) ([Groene AI](https://github.com/groeneai)).
* Corrige `DROP ROLE`, `DROP USER`, `DROP SETTINGS PROFILE`, `DROP ROW POLICY`, `DROP QUOTA` y `DROP MASKING POLICY` para eliminar las referencias a la entidad eliminada de cualquier otra entidad de acceso que la referenciara (p. ej., la lista `DEFAULT ROLE` de un usuario, la lista `TO` de un perfil de ajustes o los beneficiarios de una política de filas) y persistir esa limpieza en disco. Antes, el estado en memoria parecía correcto porque `SHOW CREATE` filtra los UUID desconocidos, pero los archivos `.sql` en disco conservaban entradas colgantes `ID('<dropped-uuid>')`, y las referencias reaparecían en el siguiente reinicio del servidor, manifestándose como errores `ACCESS_ENTITY_NOT_FOUND` durante la ejecución distribuida de consultas. [#104427](https://github.com/ClickHouse/ClickHouse/pull/104427) ([Groene AI](https://github.com/groeneai)).
* Corrige un abort del servidor provocado por `azureBlobStorage`, el engine `AzureBlobStorage` y DeltaLake-on-Azure con una cadena de conexión cuya URL `BlobEndpoint` tiene un puerto vacío, no numérico o fuera de rango (p. ej., `BlobEndpoint=http://host:abc/`). Ahora el servidor devuelve un error `BAD_ARGUMENTS` claro en lugar de abortar en builds de depuración o con sanitizador. [#104460](https://github.com/ClickHouse/ClickHouse/pull/104460) ([Groene AI](https://github.com/groeneai)).
* Permite usar un identificador sin comillas como nombre de usuario en las Table functions `remote` y `remoteSecure`, igual que los argumentos de base de datos y tabla aceptan identificadores sin comillas. Antes, esa consulta fallaba con un error de autenticación engañoso que hacía referencia al usuario `default`. [#104465](https://github.com/ClickHouse/ClickHouse/pull/104465) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige `Logical error: Incorrect ASTSelectWithUnionQuery (modes: M, selects: N)` que se activaba cuando el cuerpo de una función definida por el usuario en SQL contiene un `UNION ALL` interno entre paréntesis (p. ej., `CREATE FUNCTION f AS x -> (SELECT 1 UNION ALL (SELECT 1 UNION ALL SELECT 1))`). [#104477](https://github.com/ClickHouse/ClickHouse/pull/104477) ([Groene AI](https://github.com/groeneai)).
* Corrige que `uniqThetaIntersect` devolviera la cardinalidad del primer argumento en lugar de `0` cuando el segundo argumento es un estado `uniqTheta` vacío; por ejemplo, el resultado de `uniqThetaMergeStateIf(s, predicate)` cuando el predicado excluye todas las filas. [#104529](https://github.com/ClickHouse/ClickHouse/pull/104529) ([Groene AI](https://github.com/groeneai)).
* Corrige `SHOW TABLES` y `system.tables`, que truncaban silenciosamente el listado de las bases de datos `DataLakeCatalog` respaldadas por catálogos REST de Iceberg (`iceberg-rest`, `onelake`, `biglake`). Cuando el servidor del catálogo paginaba la respuesta de list-tables o list-namespaces (por ejemplo, Microsoft Fabric / OneLake con más de \~50 tablas por espacio de nombres), las tablas de las páginas posteriores quedaban silenciosamente ocultas para `SHOW TABLES` y `system.tables`, aunque se podían consultar mediante `SELECT` directo. `RestCatalog` ahora sigue el token de continuación `next-page-token` definido por la especificación OpenAPI de Iceberg REST, en consonancia con el comportamiento existente de `PaimonRestCatalog` y `UnityCatalog`. [#104531](https://github.com/ClickHouse/ClickHouse/pull/104531) ([Groene AI](https://github.com/groeneai)).
* La función de tabla `input` ahora infiere su estructura a partir de la cláusula `FORMAT` de la consulta `INSERT` circundante cuando ese formato tiene un esquema fijo (`LineAsString`, `RawBLOB`, `JSONAsString`, etc.), por lo que los usuarios ya no tienen que repetir la estructura como `input('line String')` para estos formatos. [#104532](https://github.com/ClickHouse/ClickHouse/issues/104532). [#104533](https://github.com/ClickHouse/ClickHouse/pull/104533) ([Groene AI](https://github.com/groeneai)).
* Se actualizó el tipo de dato de los campos del historial de Iceberg de `Int32` a `Int64`. Cierra [#94176](https://github.com/ClickHouse/ClickHouse/issues/94176). [#104579](https://github.com/ClickHouse/ClickHouse/pull/104579) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Se corrigió `Inconsistent AST formatting` `LOGICAL_ERROR` al analizar una llamada a función en la que una lambda va después de una coma, por ejemplo ``SELECT substring(x, `x` -> `x`)``. Antes, el parser fusionaba silenciosamente los argumentos anteriores en el lado izquierdo de la lambda, produciendo una llamada de un solo argumento que no podía volver a analizarse para reconstruir el mismo AST. Ahora preserva la aridad original de la función. [#104626](https://github.com/ClickHouse/ClickHouse/pull/104626) ([Groene AI](https://github.com/groeneai)).
* `CHECK TABLE t` ahora da preferencia a una tabla `TEMPORARY` frente a una permanente con el mismo nombre cuando no se proporciona un calificador de base de datos, en consonancia con la precedencia ya utilizada por `SHOW CREATE TABLE`, `DESCRIBE TABLE`, `OPTIMIZE TABLE` y `ALTER TABLE`. Anteriormente, `CHECK TABLE t` omitía por completo las tablas temporales, por lo que fallaba con `UNKNOWN_TABLE` en una tabla temporal `Log` o `File`, aunque esos motores admiten `CHECK`. Continuación de [#100966](https://github.com/ClickHouse/ClickHouse/pull/100966). [#104637](https://github.com/ClickHouse/ClickHouse/pull/104637) ([Groene AI](https://github.com/groeneai)).
* Corrige el bucle de terminación y reinicio de Keeper cuando se envía `get /keeper/availability_zone` con `quorum_reads=true` a un Keeper sin `<placement>` configurado. [#104663](https://github.com/ClickHouse/ClickHouse/pull/104663) ([myeongjun](https://github.com/myeongjjun)).
* Corrige una carrera de dato TOCTOU en `FutureSetFromTuple::buildOrderedSetInplace` que provoca un error lógico. [#104673](https://github.com/ClickHouse/ClickHouse/pull/104673) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige varias funciones que devolvían resultados distintos para la misma entrada según si los argumentos llegaban como columnas o constantes: `bitRotateLeft` / `bitRotateRight` (recuentos de desplazamiento en los límites), `length(FixedString)` / `concatWithSeparator` con entradas `LowCardinality(Nullable)`, `roundDown` sobre NaN y `rightUTF8` sobre UTF-8 no válido. [#104710](https://github.com/ClickHouse/ClickHouse/pull/104710) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió que `anyHeavy` devolviera un valor no dominante cuando el valor más frecuente era el valor predeterminado de la columna y los datos estaban repartidos en varias partes de `MergeTree` (ruta de lectura de columnas dispersas). [#104712](https://github.com/ClickHouse/ClickHouse/pull/104712) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigen varios defectos en el manejo de restricciones de configuración: las restricciones de `MergeTreeSettings` declaradas sobre el nombre canónico de una configuración podían eludirse escribiendo en un alias de esa configuración; la comprobación de la restricción `disallowed_values` lanzaba una excepción en rutas de clamp (consultas secundarias, workers `ON CLUSTER`, vistas `SQL SECURITY DEFINER`) en lugar de descartar silenciosamente el cambio. [#104737](https://github.com/ClickHouse/ClickHouse/pull/104737) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige una excepción `LOGICAL_ERROR` (`Metadata is not initialized`) provocada por `OPTIMIZE TABLE`, `ALTER TABLE ... DELETE`, `ALTER TABLE ... ADD COLUMN` y otras variantes de ALTER en una tabla `Iceberg` / `IcebergLocal` / `DeltaLake` / `Hudi` adjunta de forma diferida cuyo metadata aún no se había cargado (algo típico después de un reinicio del server, o después de que una escritura previa de metadata fallara y dejara en disco un archivo de metadata corrupto). Ahora la operación continúa normalmente si el metadata se carga correctamente o, en caso contrario, muestra el fallo de carga subyacente como una excepción normal visible para el usuario en lugar de abortar el server en builds de debug / sanitizador. [#104738](https://github.com/ClickHouse/ClickHouse/pull/104738) ([Groene AI](https://github.com/groeneai)).
* Se corrige un segfault debido a un error de use-after-free en `AvroConfluentRowInputFormat`. [#104751](https://github.com/ClickHouse/ClickHouse/pull/104751) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Las variantes escalares de `numericIndexedVectorPointwiseMultiply`, `numericIndexedVectorPointwiseDivide`, `numericIndexedVectorPointwiseEqual` y `numericIndexedVectorPointwiseNotEqual` ahora generan `INCORRECT_DATA` cuando se llaman con un escalar `UInt64` superior a `Int64::max`. [#104784](https://github.com/ClickHouse/ClickHouse/pull/104784) ([FriendLey](https://github.com/FriendLey)).
* Se corrige un error por el que sobrescribir manualmente una configuración mediante su nombre de alias (por ejemplo, `SET enable_analyzer = 1` en lugar de `SET allow_experimental_analyzer = 1`) después de aplicar una configuración `compatibility` podía hacer que esa sobrescritura se revirtiera tras un cambio posterior de la configuración `compatibility`. [#104829](https://github.com/ClickHouse/ClickHouse/pull/104829) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige que el logger de AWS quedara deshabilitado después de [https://github.com/ClickHouse/ClickHouse/commit/0e8ad4355c9d](https://github.com/ClickHouse/ClickHouse/commit/0e8ad4355c9d). [#104837](https://github.com/ClickHouse/ClickHouse/pull/104837) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se corrigen otras tres funciones que devolvían resultados distintos para la misma entrada según si los argumentos llegaban como columnas o como constantes: `transform` (y `caseWithExpression` a través de ella) con un valor predeterminado constante `Date`/`Date32`/`Enum`/`FixedString`, operadores de comparación entre un `String` y un `FixedString` constante, e `if`/`ifNull`/`nullIf` con una rama `FixedString` bajo una condición constante. [#104858](https://github.com/ClickHouse/ClickHouse/pull/104858) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige el cierre del server con `Bad cast from type DB::ColumnConst to DB::ColumnNullable` durante la poda de particiones de tablas `MergeTree` cuando la expresión de partición contiene una cadena de funciones que colapsa en un único valor constante (como `floor(NULL, toRelativeYearNum(...))`). [#104861](https://github.com/ClickHouse/ClickHouse/pull/104861) ([Groene AI](https://github.com/groeneai)).
* Se corrige una carrera de dato detectada por `ThreadSanitizer` en el constructor de copia de `ContextData`: `table_function_results` se copiaba desde el objeto fuente sin adquirir `table_function_results_mutex`, por lo que un escritor concurrente de `Context::executeTableFunction` podía entrar en carrera con la lectura no sincronizada en el constructor de copia. [#104879](https://github.com/ClickHouse/ClickHouse/pull/104879) ([Groene AI](https://github.com/groeneai)).
* Se corrigen las comprobaciones de consistencia de data part para tipos con estructura dinámica y se detectan `columns_substreams.txt` corruptos. Reenvío de [https://github.com/ClickHouse/ClickHouse/pull/103858](https://github.com/ClickHouse/ClickHouse/pull/103858) con cambios adicionales. [#104888](https://github.com/ClickHouse/ClickHouse/pull/104888) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige una condición de carrera entre DROP y UNDROP en DatabaseCatalog. [#104915](https://github.com/ClickHouse/ClickHouse/pull/104915) ([Azat Khuzhin](https://github.com/azat)).
* Corrige el redimensionamiento dinámico de la caché del sistema de archivos con segmentos descargados parcialmente, incluida la restauración de la contabilidad tras una expulsión fallida. [#104921](https://github.com/ClickHouse/ClickHouse/pull/104921) ([Antonio Andelic](https://github.com/antonio2368)).
* `DETACH TABLE` sobre una tabla temporal (sin la palabra clave `TEMPORARY`) ahora genera correctamente `SYNTAX_ERROR`, en línea con el comportamiento de `DETACH TEMPORARY TABLE`. Antes, establecía silenciosamente una marca interna `is_detached` y devolvía el control sin error. Para eliminar una tabla temporal, use `DROP TEMPORARY TABLE` o `DROP TABLE` (este último resuelve la tabla temporal mediante `Context::ResolveExternal`). Cierra [#103475](https://github.com/ClickHouse/ClickHouse/issues/103475). [#104943](https://github.com/ClickHouse/ClickHouse/pull/104943) ([Groene AI](https://github.com/groeneai)).
* Hace que la table function `filesystem` respete `max_memory_usage` / `max_server_memory_usage` al cargar el contenido de los archivos. Antes, las lecturas paralelas de contenido, si eran grandes o numerosas, podían superar el límite sin generar `MEMORY_LIMIT_EXCEEDED` y terminar siendo finalizadas por OOM. [#104956](https://github.com/ClickHouse/ClickHouse/pull/104956) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un `LOGICAL_ERROR` generado al filtrar `system.detached_tables` por `uuid` (por ejemplo, `SELECT count() FROM system.detached_tables WHERE uuid = '...'`). La consulta ahora devuelve el resultado esperado en lugar de abortar el servidor. [#104979](https://github.com/ClickHouse/ClickHouse/pull/104979) ([Groene AI](https://github.com/groeneai)).
* `flattenTuple` ya no genera un `LOGICAL_ERROR` cuando se invoca sobre una tupla cuya estructura anidada contiene solo hojas `Tuple()` vacías (por ejemplo, `Tuple(c0 Array(Tuple()))` o `Tuple(c0 Tuple())`). Estas entradas ahora producen una excepción `ILLEGAL_TYPE_OF_ARGUMENT` orientada al usuario, que explica que el resultado del aplanado sería una tupla vacía. [#104989](https://github.com/ClickHouse/ClickHouse/pull/104989) ([Groene AI](https://github.com/groeneai)).
* Corrige un aborto del servidor y un error silencioso de resultados incorrectos al consultar `loop(remote(...))` (o cualquier `loop()` que envuelva un almacenamiento que pueda diferir la agregación) con `GROUP BY`. Antes, el planner externo añadía `MergingAggregatedStep` basándose en la etapa de procesamiento informada por el almacenamiento interno, pero `LoopSource` siempre materializa su `select` interno con `QueryProcessingStage::Complete` y emite fragmentos de columnas simples, por lo que `MergingAggregatedTransform` provocaba un `LOGICAL_ERROR` (`Chunk info was not set for chunk in MergingAggregatedTransform`) con `enable_parallel_replicas = 1` y, en caso contrario, descartaba silenciosamente la agregación externa. [#105001](https://github.com/ClickHouse/ClickHouse/pull/105001) ([Groene AI](https://github.com/groeneai)).
* `clickhouse-benchmark --reconnect` (solo, sin valor) dejó de funcionar inadvertidamente en 25.4 debido a un cambio que convirtió `--reconnect` en una opción entera, exigiendo un valor. La forma sin valor vuelve a funcionar y equivale a `--reconnect=1` (reconectar en cada consulta). [#105006](https://github.com/ClickHouse/ClickHouse/pull/105006) ([Groene AI](https://github.com/groeneai)).
* Se corrigió una salida JSON malformada para nombres de columnas terminados en secuencias UTF-8 incompletas. [#105012](https://github.com/ClickHouse/ClickHouse/pull/105012) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige la pérdida silenciosa de datos tras `EXCHANGE TABLES` o `CREATE OR REPLACE TABLE` en la tabla de origen de una vista materializada. La arista de dependencia entre la `MV` y su vista de origen ahora se conserva en el nombre original para que siga activándose en los inserts. La regresión fue introducida por [#98779](https://github.com/ClickHouse/ClickHouse/issues/98779); restaura el comportamiento anterior a la regresión. [#105029](https://github.com/ClickHouse/ClickHouse/pull/105029) ([Sema Checherinda](https://github.com/CheSema)).
* Se corrige `CANNOT_COMPILE_CODE Could not find symbol __fixunsdfti` al compilar con JIT expresiones que convierten un `Float` a `UInt128`, como `toUInt128(<Float64 expression>)`. Faltaban en el resolvedor de símbolos del JIT las builtins sin signo de compiler-rt para conversión de float a entero de 128 bits. Cierra [#105031](https://github.com/ClickHouse/ClickHouse/issues/105031). [#105048](https://github.com/ClickHouse/ClickHouse/pull/105048) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige que `clickhouse-local` no imprimiera mensajes de registro de una consulta fallida cuando `send_logs_level` está configurado. [#105067](https://github.com/ClickHouse/ClickHouse/pull/105067) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigen resultados incorrectos cuando se hace referencia a la misma vista parametrizada más de una vez en la misma consulta con distintos valor del argumento. Antes, el analizador agrupaba las llamadas en una sola, descartando silenciosamente todos los filtros salvo el primero. [#105170](https://github.com/ClickHouse/ClickHouse/pull/105170) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige que la fila `TOTALS` se mostrara dos veces en la parte inferior de la tabla de resultados en la interfaz web `play.html`. [#103803](https://github.com/ClickHouse/ClickHouse/pull/103803) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se rechazan vectores no finitos (`NaN`, `±Inf`) durante la búsqueda vectorial (ya sea como vectores de búsqueda o como vectores de referencia); antes provocaban un comportamiento indefinido en `usearch`. [#104079](https://github.com/ClickHouse/ClickHouse/pull/104079) ([Groene AI](https://github.com/groeneai)).
* PromQL: se corrige el operador de agregación para vectores vacíos. [#104425](https://github.com/ClickHouse/ClickHouse/pull/104425) ([Vitaly Baranov](https://github.com/vitlibar)).
* PromQL: se corrige el manejo de errores en la API de consulta de Prometheus. [#104741](https://github.com/ClickHouse/ClickHouse/pull/104741) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se corrige una condición de carrera en `MergeTreeTransaction::afterCommit` en la que, tras una pérdida de connection entre la escritura del `CSN` de commit en ZooKeeper y la finalización de la transacción, la respuesta `COMMIT` podía llegar al client antes de que el nuevo `creation_csn` / `removal_csn` se hiciera visible en `system.parts`. [#104708](https://github.com/ClickHouse/ClickHouse/pull/104708) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Se corrige el crecimiento exponencial del uso de memoria en el parser de KQL al convertir la indexación de arrays anidados (`arr[arr[arr[...]]]`). [#105142](https://github.com/ClickHouse/ClickHouse/pull/105142) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigen resultados incorrectos para `RIGHT ANY JOIN` cuando la tabla de la derecha tiene varias filas por clave y el block de salida se divide debido a límites de tamaño. Cierra [#99431](https://github.com/ClickHouse/ClickHouse/issues/99431). [#102064](https://github.com/ClickHouse/ClickHouse/pull/102064) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se comprueba si hay desbordamiento de pila en el lector de `Avro` durante la deserialización de tipos anidados. [#102417](https://github.com/ClickHouse/ClickHouse/pull/102417) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigen filas duplicadas en `system.completions` para la configuración de `MergeTree`: cada nombre de configuración aparecía dos veces porque tanto `getMergeTreeSettings` como `getReplicatedMergeTreeSettings` se volcaban pese a tener nombres de configuración idénticos. Cierra [#102013](https://github.com/ClickHouse/ClickHouse/issues/102013). [#102015](https://github.com/ClickHouse/ClickHouse/pull/102015) ([Groene AI](https://github.com/groeneai)).
* Se corrige que `StorageObjectStorageQueue` (`S3Queue`, `AzureQueue`) bloqueara el apagado hasta completar la lectura desde el almacenamiento de objetos de archivos procesados parcialmente. Ahora la fuente aborta la lectura inmediatamente al apagarse; la deduplicación garantiza que las filas ya transmitidas a la tabla de destino antes del apagado no se dupliquen cuando se vuelva a intentar procesar el archivo en el siguiente inicio. [#103126](https://github.com/ClickHouse/ClickHouse/pull/103126) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Se corrigen las inserciones de varios bloques en el table engine `Alias` con `insert_deduplication_token` para que se conserven todos los bloques. [#103246](https://github.com/ClickHouse/ClickHouse/pull/103246) ([Enric Calabuig](https://github.com/eclbg)).
* Se corrigen `JSONHas` y `JSONExtractBool` en columnas `JSON` nativas, que devolvían el valor extraído (convertido a `UInt8`) en lugar de `0`/`1`. [#103313](https://github.com/ClickHouse/ClickHouse/pull/103313) ([zxuhan7](https://github.com/zxuhan)).
* Se protege el formato de entrada `CustomSeparated` frente a datos malformados o maliciosos que omiten `format_custom_row_after_delimiter`. La detección de encabezados, la inferencia de esquemas y las filas con un número variable de columnas acumulaban antes campos sin límite y podían asignar muchos gigabytes de memoria antes de fallar. Ahora la lectura falla con `INCORRECT_DATA` en cuanto una sola fila contiene más de 1.000.000 de campos. [#103404](https://github.com/ClickHouse/ClickHouse/pull/103404) ([Groene AI](https://github.com/groeneai)).
* Se corrige `RESTORE` de tablas `MergeTree` replicadas para que la asociación de partes restauradas use `backup_restore_keeper_max_retries` en lugar del presupuesto habitual de reintentos de inserción de Keeper. [#104610](https://github.com/ClickHouse/ClickHouse/pull/104610) ([Pablo Marcos](https://github.com/pamarcos)).
* Se corrigen resultados incorrectos de `WHERE p AND <LowCardinality(Nullable(int)) constant>` en tablas `MergeTree`. Antes, esas consultas devolvían cero filas porque la poda de partes derivaba un valor `NULL` predeterminado del tipo `LowCardinality(Nullable(...))` y generaba una condición de guarda `notEquals(x, NULL)`, descartando todas las partes. [#104767](https://github.com/ClickHouse/ClickHouse/pull/104767) ([Groene AI](https://github.com/groeneai)).
* Se corrige un resultado de agregación incorrecto al agrupar por una función no inyectiva de una columna que también es la clave de partición (por ejemplo, `PARTITION BY a` con `GROUP BY intDiv(a, 2)` o `a % 2`). Los valores de distintas particiones que se asignaban al mismo grupo no se fusionaban, lo que producía filas de grupo duplicadas con `allow_aggregate_partitions_independently = 1`. [#104869](https://github.com/ClickHouse/ClickHouse/pull/104869) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrige una condición de carrera en la transferencia de instantáneas de `Keeper` por la que una instantánea podía eliminarse o moverse mientras se enviaba a un follower en recuperación. [#104941](https://github.com/ClickHouse/ClickHouse/pull/104941) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrige un error silencioso de resultados incorrectos en `hilbertEncode` y `mortonEncode`, por el que un primer argumento `Tuple` no constante (máscara de rango) usaba los valores de la fila 0 para determinar el desplazamiento de bits de todas las filas. Ahora las funciones calculan los valores de la máscara para cada fila, por lo que el resultado ya no depende de que la entrada sea constante ni del tamaño del bloque. [#104992](https://github.com/ClickHouse/ClickHouse/pull/104992) ([Groene AI](https://github.com/groeneai)).
* Se corrige que `clickhouse-local` ignorara silenciosamente la configuración a nivel de usuario (`profiles`, `users`, `quotas`, ajustes de control de acceso) cuando el archivo de configuración se detectaba automáticamente en `./clickhouse-local.xml`, `~/.clickhouse-local/config.xml` o `/etc/clickhouse-local/config.xml`. Antes, estos ajustes se aplicaban solo cuando se pasaba `--config-file` o existía `./config.xml` en el directorio actual; ahora todas las rutas de detección se comportan de forma coherente. [#105008](https://github.com/ClickHouse/ClickHouse/pull/105008) ([Groene AI](https://github.com/groeneai)).
* Se corrigen las columnas `BFloat16` que devolvían silenciosamente cero coincidencias al compararlas con un literal de cadena (p. ej., `WHERE bf16_col = '49.9'`). [#105042](https://github.com/ClickHouse/ClickHouse/pull/105042) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige el manejo de `CLEAR COLUMN` y TTL durante los merges en `SummingMergeTree`, `AggregatingMergeTree` y `CoalescingMergeTree` cuando faltan columnas necesarias para el merge o han expirado. Cierra [#101953](https://github.com/ClickHouse/ClickHouse/issues/101953). [#105203](https://github.com/ClickHouse/ClickHouse/pull/105203) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrige una condición de carrera entre `DNSCacheUpdater::run` y `Context::reloadClusterConfig` añadiendo una comprobación explícita de null para `shared->clusters_config` antes de desreferenciarlo. [#105220](https://github.com/ClickHouse/ClickHouse/pull/105220) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Se corrige el parsing `best_effort` de fecha y hora para `toDateTime64` con precisión `ms` y `ns`. [#105233](https://github.com/ClickHouse/ClickHouse/pull/105233) ([Kaviraj Kanagaraj](https://github.com/kavirajk)).
* Se corrige que `OSIOWaitMicroseconds` informara la espera de E/S durante el ciclo de vida del hilo en lugar de la espera de E/S por consulta. [#105246](https://github.com/ClickHouse/ClickHouse/pull/105246) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* El table engine `Hudi` ahora genera `INCORRECT_DATA` (una excepción normal a nivel de consulta) en lugar de `LOGICAL_ERROR` cuando un archivo Parquet del directorio de la tabla no sigue la convención de nombres de Hudi `[FileId]_[FileWriteToken]_[Timestamp].[extension]`. Anteriormente, esos nombres de archivo provocaban una excepción en las builds de depuración. [#105266](https://github.com/ClickHouse/ClickHouse/pull/105266) ([Groene AI](https://github.com/groeneai)).
* Se corrige un interbloqueo en `ParallelFormattingOutputFormat` ante un fallo de planificación: cuando `scheduleFormatterThreadForUnitWithNumber` lanza una excepción (p. ej., `CANNOT_SCHEDULE_TASK`), la unidad quedaba en `READY_TO_FORMAT` sin ningún hilo formatter para procesarla, lo que provocaba un bloqueo. La llamada de planificación ahora se encapsula en `try`/`catch` y cualquier fallo se canaliza a través de `onBackgroundException` para que el collector finalice correctamente. [#105275](https://github.com/ClickHouse/ClickHouse/pull/105275) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige una pérdida silenciosa de datos en `Distributed` async inserts al recuperarse de un apagado anómalo: si el último archivo `.bin` de un batch guardado estaba intacto pero uno intermedio estaba corrupto, `DistributedAsyncInsertBatch::recoverBatch` solo validaba el header del último archivo y luego `sendBatch` marcaba todo el batch —incluidos los archivos intactos— como dañado, perdiendo sus filas. Ahora se valida individualmente el header de cada archivo, de modo que solo el archivo realmente dañado se mueve a `broken/` y las filas que sobreviven llegan al segmento remoto. [#105281](https://github.com/ClickHouse/ClickHouse/pull/105281) ([Groene AI](https://github.com/groeneai)).
* Se corrige una regresión en `clickhouse extract-from-config --try`: cuando la configuración usaba attributes `from_env` y no tenía ningún elemento `include_from` (o tenía uno que apuntaba a un archivo inexistente), todas las substitutions `from_env` se descartaban silenciosamente y devolvían cadenas vacías. Esto rompía la detección de puertos del entrypoint de Docker en la versión 26.2.5. Cierra [#101704](https://github.com/ClickHouse/ClickHouse/issues/101704). [#105283](https://github.com/ClickHouse/ClickHouse/pull/105283) ([Groene AI](https://github.com/groeneai)).
* Se corrige que `INSERT INTO` en una tabla `SQLite` fallara con un error de sintaxis de SQLite cuando el valor insertado es un `Enum`, `JSON` o `AggregateFunction` cuya representación textual contiene una comilla simple. El ajuste `output_format_values_escape_quote_with_quote` ahora se respeta en las serializations correspondientes (anteriormente, solo `String` y `FixedString` lo respetaban). [#105285](https://github.com/ClickHouse/ClickHouse/pull/105285) ([Groene AI](https://github.com/groeneai)).
* Se corrige `Code: 44. ILLEGAL_COLUMN: Cannot add column ...: column with this name already exists`, lanzado por consultas distribuidas con `allow_push_predicate_ast_for_distributed_subqueries = 1` (valor predeterminado) cuando una tupla `GLOBAL IN` se compara con una subconsulta cuya proyección contiene nombres de columna duplicados; por ejemplo, `(x, y) GLOBAL IN (SELECT number, number FROM numbers(5))`. [#105290](https://github.com/ClickHouse/ClickHouse/pull/105290) ([Groene AI](https://github.com/groeneai)).
* Se corrige el caso en que `reinterpret` a `Array(LowCardinality(...))` devolvía un error `NOT_IMPLEMENTED` confuso en tiempo de ejecución; ahora devuelve `ILLEGAL_TYPE_OF_ARGUMENT` durante la verificación de tipos. [#105301](https://github.com/ClickHouse/ClickHouse/pull/105301) ([Raúl Marín](https://github.com/Algunenano)).
* `minMap`/`maxMap` (forma de array) y `minMappedArrays`/`maxMappedArrays` ahora tratan `NaN` de forma coherente con `ORDER BY`: `NaN` se trata como el último valor (solo se devuelve cuando todos los valores son `NaN`). Antes, los resultados dependían de la posición de `NaN` en los datos debido a la semántica de comparación no ordenada de IEEE 754, y no coincidían con la forma con argumento `Map` de `minMap`/`maxMap`, corregida en [#100448](https://github.com/ClickHouse/ClickHouse/pull/100448). [#105331](https://github.com/ClickHouse/ClickHouse/pull/105331) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige una fuga de memoria en la caché `ColumnsDescription` por tabla para tablas de la familia `MergeTree` con columnas `Nested`. Las entradas nunca se desalojaban durante ciclos de `ALTER ADD COLUMN`/`DROP COLUMN` cuando `share_nested_offsets = 1` (valor predeterminado). [#105376](https://github.com/ClickHouse/ClickHouse/pull/105376) ([Groene AI](https://github.com/groeneai)).
* Se corrige la excepción `BAD_ARGUMENTS` "It's a bug! Only integer types are supported by `__bitWrapperFunc`", lanzada cuando un `SELECT` con un skip index `TYPE set(N)` tiene un átomo `WHERE` cuyo tipo de resultado es `Float`, `BFloat16` o cualquier otro tipo no entero (por ejemplo, `WHERE c0 + 0.1` o `WHERE log(c0)`). En ese caso, el skip index ahora vuelve a la ruta de filtro normal. [#105384](https://github.com/ClickHouse/ClickHouse/pull/105384) ([Groene AI](https://github.com/groeneai)).

<div id="268-build-testing-packaging-improvement">
  #### Mejora en compilación/pruebas/empaquetado
</div>

* Dejar de usar las bibliotecas y encabezados `compiler-rt` del sistema. Cierra [#91475](https://github.com/ClickHouse/ClickHouse/issues/91475). [#102857](https://github.com/ClickHouse/ClickHouse/pull/102857) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Actualizar la image base distroless de Docker para corregir CVE de OpenSSL en `libssl3t64`. [#103583](https://github.com/ClickHouse/ClickHouse/pull/103583) ([Rahul Nair](https://github.com/motsc)).
* Recibir de forma fiable la clave GPG durante las releases encadenando varios servidores de claves de Ubuntu, en lugar de agotar el tiempo de espera en `keyserver.ubuntu.com`. [#103834](https://github.com/ClickHouse/ClickHouse/pull/103834) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Eliminar y prohibir las comprobaciones de `CMake` en tiempo de compilación (`check_*`, `try_compile`, `try_run`). El compilador y la cadena de herramientas son fijos, por lo que la detección de funcionalidades en tiempo de configuración es innecesaria y ahora está bloqueada en todo el proyecto; cualquier comportamiento específico de una versión debe condicionarse explícitamente a `CMAKE_CXX_COMPILER_VERSION`. [#103980](https://github.com/ClickHouse/ClickHouse/pull/103980) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Actualizar `libarchive` de la versión 3.8.6 a la 3.8.7. [#104047](https://github.com/ClickHouse/ClickHouse/pull/104047) ([Robert Schulze](https://github.com/rschu1ze)).
* Actualizar `mongo-c-driver` a la versión 2.3.0. [#104300](https://github.com/ClickHouse/ClickHouse/pull/104300) ([Raúl Marín](https://github.com/Algunenano)).
* Actualizar las dependencias de LLVM para 22.x. [#104381](https://github.com/ClickHouse/ClickHouse/pull/104381) ([Joshua Carp](https://github.com/jmcarp)).
* Hacer que las clases de embedded-client y descriptor PTY se compilen en macOS y FreeBSD usando `posix_openpt` / `grantpt` / `unlockpt` de POSIX portable y eliminando las protecciones `#if` exclusivas de Linux. [#104436](https://github.com/ClickHouse/ClickHouse/pull/104436) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Actualizar `librdkafka` a la versión 2.14.1. [#105222](https://github.com/ClickHouse/ClickHouse/pull/105222) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).

<div id="264">
  ### lanzamiento de ClickHouse 26.4, 2026-04-30. [Presentación](https://presentations.clickhouse.com/2026-release-26.4/), [Vídeo](https://www.youtube.com/watch?v=9lSVy7k2EoI)
</div>

<div id="268-backward-incompatible-change">
  #### Cambio incompatible con versiones anteriores
</div>

* El operador `IN` ahora usa una semántica de valores exactos para el tipo `Bool`: solo los valores `0` y `1` del conjunto coinciden con valores `Bool`. Antes, los valores numéricos mayores que `255` en el conjunto `IN` se truncaban incorrectamente a true al compararse con `Bool`, por lo que `SELECT CAST(1, 'Bool') IN (256)` devolvía 1. Ahora devuelve correctamente `0`. Cierra [#92980](https://github.com/ClickHouse/ClickHouse/issues/92980). [#93115](https://github.com/ClickHouse/ClickHouse/pull/93115) ([Ashrith Bandla](https://github.com/ashrithb)).
* La biblioteca H3 se ha actualizado a la v4, lo que mejora la precisión de los cálculos de longitud, área y otras métricas. Este cambio es incompatible con versiones anteriores porque los nuevos resultados difieren de los anteriores. [#100348](https://github.com/ClickHouse/ClickHouse/pull/100348) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ya no se permite usar `SELECT` como identificador sin comillas en un elemento de la lista de expresiones `WITH`. [#101059](https://github.com/ClickHouse/ClickHouse/pull/101059) ([Aruj Bansal](https://github.com/arujbansal)).
* Este parche cambia cómo la tabla Merge manejará las columnas virtuales. Si la tabla subyacente contiene `_table` o `_database`, estas columnas se leerán desde el almacenamiento; de lo contrario, se rellenarán después del paso de lectura mediante el paso de expresión. [#101742](https://github.com/ClickHouse/ClickHouse/pull/101742) ([Mikhail Artemenko](https://github.com/Michicosun)).
* El operador `IN` ahora también rechaza conversiones de `Decimal` con pérdida dentro de tipos compuestos (`Tuple`, `Array`, `Map`), lo que hace que su comportamiento sea coherente con el de las comparaciones escalares de nivel superior. Antes, las comprobaciones de precisión solo se aplicaban a los valores escalares de nivel superior: por ejemplo, `CAST('33.3', 'Decimal64(1)') IN (33.33)` devolvía correctamente `0`, pero `CAST(['33.3'], 'Array(Decimal64(1))') IN ([33.33])` devolvía incorrectamente `1` porque la conversión con pérdida se producía dentro de un `Array`. Ahora ambos casos devuelven correctamente `0`. [#101812](https://github.com/ClickHouse/ClickHouse/pull/101812) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se redujo el valor predeterminado de `http_max_fields` de 1,000,000 a 1,000 y el de `http_max_field_name_size` de 128 KB a 4 KB para limitar el uso de memoria previo a la autenticación de las conexiones HTTP. Se añadieron los ajustes `http_max_request_header_size` y `http_headers_read_timeout`. Los usuarios que dependan de los límites anteriores más altos pueden restaurarlos mediante ajustes. [#103285](https://github.com/ClickHouse/ClickHouse/pull/103285) ([Sema Checherinda](https://github.com/CheSema)).

<div id="268-new-feature">
  #### Nueva funcionalidad
</div>

* Se añade el volcado automático a disco a los hash join y parallel hash join, convirtiéndolos en grace hash join cuando se alcanza el límite de memoria. Este comportamiento se controla con `max_bytes_before_external_join`. [#97813](https://github.com/ClickHouse/ClickHouse/pull/97813) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Se añade soporte para Arrow Flight SQL. [#91170](https://github.com/ClickHouse/ClickHouse/pull/91170) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Agregar compatibilidad con lectura incremental para los motores de tabla `Paimon`, con seguimiento del progreso de snapshots respaldado por Keeper, incluidas lecturas delta dirigidas de snapshots mediante `paimon_target_snapshot_id`, y ampliar la cobertura de pruebas para la correspondencia de tipos, la poda de particiones y los escenarios de lectura incremental. [#93655](https://github.com/ClickHouse/ClickHouse/pull/93655) ([XiaoBinMu](https://github.com/Binnn-MX)).
* La función `stem` ha dejado de ser experimental (anteriormente, era necesario habilitar la configuración `allow_experimental_nlp_functions`). [#102399](https://github.com/ClickHouse/ClickHouse/pull/102399) ([Jimmy Aguilar Mena](https://github.com/Ergus)). Ahora puede aplicar fácilmente stemming a todas las palabras/tokens de las columnas `String`, `FixedString`, `Array([Fixed]String)`, `Nullable`, `LowCardinality` y `Const` con la función `stem`. [#99137](https://github.com/ClickHouse/ClickHouse/pull/99137) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Se implementa el nuevo comportamiento de `max_insert_block_size_rows`, `max_insert_block_size_bytes`, `min_insert_block_size_rows`, `min_insert_block_size_bytes` en el squashing con la configuración de compatibilidad `use_strict_insert_block_limits`. [#94207](https://github.com/ClickHouse/ClickHouse/pull/94207) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Se añade la función `arrayAutocorrelation(arr [, max_lag])`, que calcula la autocorrelación normalizada de un arreglo numérico para cada valor de retraso. Admite arreglos de tipo entero, Float y Decimal. [#94776](https://github.com/ClickHouse/ClickHouse/pull/94776) ([Wenyu Chen](https://github.com/wenyuchen96)).
* Una función SQL `obfuscateQuery`. Cierra el issue [#98010](https://github.com/ClickHouse/ClickHouse/issues/98010). [#98305](https://github.com/ClickHouse/ClickHouse/pull/98305) ([Xuewei Wang](https://github.com/Sallery-X)).
* Se añadió compatibilidad con los tipos Map y JSON/Object como atributos de diccionario. Ahora los diccionarios pueden almacenar y recuperar tipos complejos, incluidos Map(String, String), Map(String, Array(String)), JSON y Nullable(JSON), tanto en los layouts FLAT como HASHED. [#98627](https://github.com/ClickHouse/ClickHouse/pull/98627) ([yanglongwei](https://github.com/ylw510)).
* Se añadieron dos nuevos ajustes de MergeTree — `replicated_fetches_min_part_level` y `replicated_fetches_min_part_level_timeout_seconds` — que permiten a las réplicas evitar recuperar partes recién insertadas (sin fusionar) de otras réplicas, lo que reduce la sobrecarga de la replicación durante periodos de ingestión intensiva. [#98625](https://github.com/ClickHouse/ClickHouse/pull/98625) ([tanner-bruce](https://github.com/tanner-bruce)).
* Añade soporte para índices de omisión de MergeTree en columnas JSON mediante JSONAllPaths con los tipos de índice bloom\_filter, tokenbf\_v1, ngrambf\_v1 y text (invertido), lo que permite omitir gránulos según el conjunto de rutas JSON presentes en cada gránulo. [#98886](https://github.com/ClickHouse/ClickHouse/pull/98886) ([Pavel Kruglov](https://github.com/Avogar)).
* La función `printf` ahora admite cadenas de formato no constantes, lo que permite usar distintos formatos por fila según los valores de las columnas. [#98991](https://github.com/ClickHouse/ClickHouse/pull/98991) ([Yash ](https://github.com/Onyx2406)).
* Se añade un nuevo índice de proyección, `commit_order`, que reorganiza los datos en orden de inserción. [#99004](https://github.com/ClickHouse/ClickHouse/pull/99004) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se añade la función `highlight`, que envuelve las apariciones de términos de búsqueda en una cadena de texto con etiquetas HTML (por defecto, `<em>`/`</em>`). Admite coincidencias ASCII sin distinción entre mayúsculas y minúsculas, la fusión automática de coincidencias superpuestas y etiquetas de apertura y cierre personalizadas. [#99131](https://github.com/ClickHouse/ClickHouse/pull/99131) ([Peng](https://github.com/fastio)).
* Implementa cuotas basadas en el hash de la consulta normalizada para proteger los servicios públicos de ClickHouse frente a abusos. 1. Añade compatibilidad con `NORMALIZED_QUERY_HASH` como tipo de clave de cuota: buckets de cuota separados para cada consulta normalizada única, de modo que `CREATE QUOTA q KEYED BY normalized_query_hash` realiza un seguimiento independiente de cada consulta distinta. 2. Añade compatibilidad con `QUERIES_PER_NORMALIZED_HASH` como tipo de recurso de cuota -- limita el número máximo de ejecuciones de una misma consulta normalizada dentro de un intervalo, de modo que `MAX queries_per_normalized_hash = 100` evita que un mismo patrón de consulta se ejecute más de 100 veces. [#99586](https://github.com/ClickHouse/ClickHouse/pull/99586) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ahora, los usuarios pueden escribir consultas con la sintaxis `NATURAL JOIN`, que hace coincidir automáticamente todas las columnas con el mismo nombre y evita duplicarlas en el resultado. [#99840](https://github.com/ClickHouse/ClickHouse/pull/99840) ([Peter Nguyen](https://github.com/petern48)).
* Se admite `SET TIME ZONE 'tz'` como alias de `SET session_timezone`. [#99883](https://github.com/ClickHouse/ClickHouse/pull/99883) ([phulv94](https://github.com/phulv94)).
* Se añadió soporte para consultas parametrizadas en la interfaz web (`play.html`): se detectan parámetros de consulta como `{name:Type}` y se muestran campos de entrada para introducir sus valores. [#100041](https://github.com/ClickHouse/ClickHouse/pull/100041) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Permite usar la cláusula estándar SQL `VALUES` como expresión de tabla en `FROM`, p. ej. `SELECT * FROM (VALUES (1, 'a'), (2, 'b')) AS t(id, val)`. [#100143](https://github.com/ClickHouse/ClickHouse/pull/100143) ([Desel72](https://github.com/Desel72)).
* Se añaden unidades compatibles con PostgreSQL al operador `EXTRACT`: `EPOCH`, `DOW`, `DOY`, `ISODOW`, `ISOYEAR`, `WEEK`, `CENTURY`, `DECADE`, `MILLENNIUM`. También se corrige `EXTRACT(WEEK FROM date)`, que antes generaba un error. [#100274](https://github.com/ClickHouse/ClickHouse/pull/100274) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió compatibilidad con literales compuestos de intervalos según el estándar SQL con calificadores de rango `TO`, p. ej., `INTERVAL '1:30' HOUR TO MINUTE`. Internamente, se descomponen en sumas de intervalos. [#100453](https://github.com/ClickHouse/ClickHouse/pull/100453) ([Desel72](https://github.com/Desel72)).
* Añade métricas asíncronas para la memoria de los búferes TCP de recepción y envío del kernel (`sk_rmem_alloc`, `sk_wmem_alloc`) de los sockets del pool de conexiones HTTP, notificadas como percentiles p50/p75/p90/p95 y totales por grupo de conexiones. [#100575](https://github.com/ClickHouse/ClickHouse/pull/100575) ([Sema Checherinda](https://github.com/CheSema)).
* Se añadió una web UI para el profiling de jemalloc en ClickHouse Keeper, disponible en `/jemalloc` en el puerto de control HTTP. [#100606](https://github.com/ClickHouse/ClickHouse/pull/100606) ([murphy-4o](https://github.com/murphy-4o)).
* Se implementó el comando `SYSTEM FLUSH OBJECT STORAGE QUEUE db.table PATH 'x'` para los modos ordered y unordered. [#100709](https://github.com/ClickHouse/ClickHouse/pull/100709) ([Bharat Nallan](https://github.com/bharatnc)).
* Se añadió la función `JSONAllValues`, que devuelve todos los valores de una columna `JSON` como `Array(String)`, con los valores serializados en representación textual y ordenados por sus nombres de ruta. Se añadió compatibilidad con el índice de texto para la expresión `JSONAllValues` en columnas `JSON`. Cuando se crea un índice de texto en `JSONAllValues(json_column)`, se utiliza automáticamente para filtrar consultas sobre subcolumnas `JSON` (p. ej., `json_column.key1 = 'value'`). [#100730](https://github.com/ClickHouse/ClickHouse/pull/100730) ([Anton Popov](https://github.com/CurtizJ)).
* Añade una nueva opción de configuración, `input_format_column_name_matching_mode`, que permite distintos modos de distinguir entre mayúsculas y minúsculas en los formatos de entrada. [#99346](https://github.com/ClickHouse/ClickHouse/pull/99346) ([manerone](https://github.com/Manerone)).
* Se añade el comando `watch` a `clickhouse-keeper-client`, con compatibilidad con `watch` en los comandos `get`, `exists` y `ls`. [#100834](https://github.com/ClickHouse/ClickHouse/pull/100834) ([Den Kalantaevskii](https://github.com/Diskein)).
* Se añadió la solicitud `getChildrenRecursive` (ListRecursive) a ClickHouse Keeper y el comando `lsr` a `clickhouse-keeper-client`. Esto cierra [#99916](https://github.com/ClickHouse/ClickHouse/issues/99916). [#100998](https://github.com/ClickHouse/ClickHouse/pull/100998) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Añade la nueva función `arrayTranspose`, que toma un array bidimensional (matriz) y lo transpone: `SELECT arrayTranspose([[1, 2, 3], [4, 5, 6]])`. [#101214](https://github.com/ClickHouse/ClickHouse/pull/101214) ([Vitaly Baranov](https://github.com/vitlibar)).
* La configuración `auto_statistics_types mergetree` tiene como valor predeterminado `'minmax, uniq'` — las estadísticas minmax y uniq se crean automáticamente para todas las columnas adecuadas de las tablas nuevas - `materialize_statistics_on_insert` tiene como valor predeterminado false — las estadísticas ahora se generan durante las fusiones en lugar de en el momento de la inserción, lo que reduce la sobrecarga de inserción. use `SET materialize_statistics_on_insert = 1` para restaurar el comportamiento anterior. [#101275](https://github.com/ClickHouse/ClickHouse/pull/101275) ([Han Fei](https://github.com/hanfei1991)).
* Añade la opción de refresh `prefer_dependency_replica` para las cadenas de dependencias de vistas materializadas, a fin de reducir la pérdida de datos causada por el retraso de replicación entre réplicas. [#101591](https://github.com/ClickHouse/ClickHouse/pull/101591) ([Seva Potapov](https://github.com/seva-potapov)).
* Añade la función `hasPhrase` (alias `matchPhrase`) para la búsqueda de frases (secuencias continuas de tokens). La búsqueda se realiza por fuerza bruta; es decir, el índice de texto aún no la admite. [#101997](https://github.com/ClickHouse/ClickHouse/pull/101997) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Añade las métricas de histograma `s3_read_request_duration_microseconds` y `s3_read_request_bytes` para observar el tiempo de vida de la conexión de las solicitudes GET de S3 y los bytes consumidos, visibles en `system.histogram_metrics` y en el endpoint de Prometheus. [#102058](https://github.com/ClickHouse/ClickHouse/pull/102058) ([Sema Checherinda](https://github.com/CheSema)).
* Los valores `Date` y `Date32` ahora se pueden sumar a los valores `Time` y `Time64` mediante el operador `+`, lo que da como resultado un `DateTime` o `DateTime64`. Por ejemplo, `SELECT toDate('2024-01-15') + toTime('14:30:25')` devuelve `2024-01-15 14:30:25`. El resultado se calcula en la zona horaria de la sesión, y los resultados fuera de rango se tratan según la configuración `date_time_overflow_behavior`. Cierra [#95914](https://github.com/ClickHouse/ClickHouse/issues/95914). [#102421](https://github.com/ClickHouse/ClickHouse/pull/102421) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* El índice de texto ahora es GA y permanece habilitado independientemente del ajuste `compatibility`, lo que evita que se deshabilite de forma inesperada durante las restauraciones desde copias de seguridad o al ejecutarse en modo de compatibilidad. [#101518](https://github.com/ClickHouse/ClickHouse/pull/101518) ([Nikita Fomichev](https://github.com/fm4v)).

<div id="264-experimental-feature">
  #### funcionalidad experimental
</div>

* Se añadió `ALTER TABLE ... EXECUTE remove_orphan_files` para tablas Iceberg, con el fin de identificar y eliminar archivos no referenciados del almacenamiento de objetos. [#99127](https://github.com/ClickHouse/ClickHouse/pull/99127) ([murphy-4o](https://github.com/murphy-4o)).
* Se añadió la opción de configuración `query_plan_optimize_join_order_randomize`, que aleatoriza las estadísticas usadas para reordenar joins, lo que resulta útil para pruebas. [#100643](https://github.com/ClickHouse/ClickHouse/pull/100643) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se añadió compatibilidad con funciones de IA en ClickHouse, lo que permite a los usuarios llamar a endpoints de OpenAI y Anthropic mediante SQL. `aiGenerate` se incluye como la primera función de este tipo. [#100831](https://github.com/ClickHouse/ClickHouse/pull/100831) ([George Larionov](https://github.com/george-larionov)).
* Se añadieron funciones de IA: `aiClassify`, `aiExtract` y `aiTranslate`, para aprovechar las API de LLM en ClickHouse. [#100832](https://github.com/ClickHouse/ClickHouse/pull/100832) ([George Larionov](https://github.com/george-larionov)).
* Se añadió `system.histogram_metric_log`, una nueva tabla del sistema que toma periódicamente instantáneas de todas las métricas de histograma (p. ej., latencias de S3/Azure y duraciones de las etapas de procesamiento de solicitudes de Keeper). Además, la columna `value` de `system.histogram_metrics` pasa a ser `Float64`, ya que es más flexible y compatible con el modelo de datos de Prometheus. [#103046](https://github.com/ClickHouse/ClickHouse/pull/103046) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)). Es probable que la estructura de la tabla cambie en futuras versiones.

<div id="268-performance-improvement">
  #### Mejora del rendimiento
</div>

* ClickHouse ahora puede descartar partes de datos completas en las consultas SELECT basándose en estadísticas mín./máx. [#94140](https://github.com/ClickHouse/ClickHouse/pull/94140) ([zoomxi](https://github.com/zoomxi)).
* Reducir la contención por bloqueos durante las operaciones de solo lectura en tablas ReplicatedMergeTree con mutaciones completadas. [#95771](https://github.com/ClickHouse/ClickHouse/pull/95771) ([Eduard Karacharov](https://github.com/korowa)).
* Se respeta `optimize_read_in_order` al leer proyecciones. Cierra [#89453](https://github.com/ClickHouse/ClickHouse/issues/89453). [#95885](https://github.com/ClickHouse/ClickHouse/pull/95885) ([Andrey Zvonov](https://github.com/zvonand)).
* Pequeñas mejoras en Hash Join y Concurrent Hash Join. [#96663](https://github.com/ClickHouse/ClickHouse/pull/96663) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Optimiza la transformación `DISTINCT` deshabilitando la optimización de columnas `LowCardinality` cuando los datos de entrada son casi todos distintos. [#97113](https://github.com/ClickHouse/ClickHouse/pull/97113) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Optimización del rendimiento para las consultas con `LIKE` de [#97723](https://github.com/ClickHouse/ClickHouse/issues/97723). Ahora estas consultas pueden usar índices de texto. [#98149](https://github.com/ClickHouse/ClickHouse/pull/98149) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Las funciones matemáticas vectorizadas (`exp`, `log`, `sigmoid`, `tanh`) ahora están aceleradas en AArch64 (mediante NEON/SVE) y en FreeBSD/Darwin, donde antes usaban un fallback escalar más lento. [#98230](https://github.com/ClickHouse/ClickHouse/pull/98230) ([Raúl Marín](https://github.com/Algunenano)).
* Las consultas que filtran por columnas de la clave primaria de `MergeTree` con alternancias en expresiones regulares sobre cadenas literales, como `^(abc-1|abc-2)`, ahora pueden usar la poda de la clave primaria cuando las alternativas comparten un prefijo común. [#98988](https://github.com/ClickHouse/ClickHouse/pull/98988) ([Yash ](https://github.com/Onyx2406)).
* Se generaliza el filtrado dinámico top-k de `ORDER BY ... LIMIT` para admitir los tipos `Nullable`, `String` y `COLLATE`. [#99033](https://github.com/ClickHouse/ClickHouse/pull/99033) ([murphy-4o](https://github.com/murphy-4o)).
* Se aceleró el hash join con claves `Int32` y `Int64` de rango pequeño mediante el uso de una tabla hash de índice directo. [#99275](https://github.com/ClickHouse/ClickHouse/pull/99275) ([Hechem Selmi](https://github.com/m-selmi)).
* Consultas discontinuas más rápidas para columnas `LowCardinality` con un único diccionario. [#99285](https://github.com/ClickHouse/ClickHouse/pull/99285) ([Ivan Babrou](https://github.com/bobrik)).
* Se aceleran las funciones `var*Stable` y `stddev*Stable` para columnas `Float64` al desvirtualizar el bucle interno. Nota: esto permite optimizaciones del compilador (FMA/registros) que alteran los resultados de coma flotante a nivel de ULP. [#99460](https://github.com/ClickHouse/ClickHouse/pull/99460) ([Riyane El Qoqui](https://github.com/riyaneel)).
* Usar la codificación base58 optimizada de Firedancer para entradas de 32/64 bytes (automática para `base58Encode`). Permitir la decodificación base58 optimizada si el resultado de la decodificación es de 32/64 bytes (de forma explícita con `base58Decode('...', 32)` o similar). [#99461](https://github.com/ClickHouse/ClickHouse/pull/99461) ([Joanna Hulboj](https://github.com/jh0x)).
* Se habilitan optimizaciones basadas en secciones del enlazador (`-ffunction-sections`, `-fdata-sections`, `--icf=all`) para reducir el tamaño del binario y mejorar el aprovechamiento de la caché de instrucciones. [#99474](https://github.com/ClickHouse/ClickHouse/pull/99474) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige el escalado negativo en consultas cortas con agregación en máquinas con muchos núcleos. Cuando una consulta lee pocas marcas, el pipeline ya no se expande hasta `max_threads` después de la agregación, lo que evita la sobrecarga de streams prácticamente vacíos. [#99493](https://github.com/ClickHouse/ClickHouse/pull/99493) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Mejora el rendimiento de las consultas con réplicas paralelas seleccionando adecuadamente el tamaño de la tarea de lectura. [#99801](https://github.com/ClickHouse/ClickHouse/pull/99801) ([Nikita Taranov](https://github.com/nickitat)).
* Permitir la precarga al leer un archivo remoto mediante la caché de páginas en espacio de usuario. [#99919](https://github.com/ClickHouse/ClickHouse/pull/99919) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Evitar el cálculo innecesario de la subcolumna `.size` de String al enumerar subcolumnas. [#99941](https://github.com/ClickHouse/ClickHouse/pull/99941) ([Pavel Kruglov](https://github.com/Avogar)).
* Hacer que la barra de progreso de clickhouse-client sea menos inestable al trabajar desde un hotel con clústeres que tienen un número muy elevado de réplicas. [#100145](https://github.com/ClickHouse/ClickHouse/pull/100145) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Iniciar `MemoryWorker` en `clickhouse-local` cuando la caché de páginas esté habilitada, para que la caché de páginas de espacio de usuario pueda utilizarse realmente. [#100306](https://github.com/ClickHouse/ClickHouse/pull/100306) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Optimiza las consultas aplicando la cláusula `LIMIT` dentro de `UNION ALL`. [#100364](https://github.com/ClickHouse/ClickHouse/pull/100364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añade compatibilidad con compilación JIT para comparaciones de columnas `String` y `FixedString` en `ORDER BY`, lo que mejora entre un 6 y un 17 % el rendimiento de la ordenación en la fase de merge para claves de ordenación con predominio de cadenas. En coautoría con @lgbo-ustc. [#100577](https://github.com/ClickHouse/ClickHouse/pull/100577) ([Raúl Marín](https://github.com/Algunenano)).
* Cuando `read_in_order_use_virtual_row` está habilitado junto con la nueva configuración `read_in_order_use_virtual_row_per_block`, ahora se emite información sobre los límites de las filas virtuales después de cada bloque leído de `MergeTree`, lo que permite que el proceso de mezcla vuelva a priorizar las fuentes a mitad del flujo para las partes cuyos datos quedan completamente filtrados por `WHERE`/`PREWHERE`/`JOIN`. Cierra [#99945](https://github.com/ClickHouse/ClickHouse/issues/99945). [#100603](https://github.com/ClickHouse/ClickHouse/pull/100603) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Conversión más rápida de Float a String para valores enteros grandes al extender la vía rápida de `itoa` con redondeo compatible con dragonbox. [#100649](https://github.com/ClickHouse/ClickHouse/pull/100649) ([Raúl Marín](https://github.com/Algunenano)).
* Sustituye `dragonbox` por `zmij` para lograr una conversión de Float a String entre 1.5x y 3x más rápida. [#100650](https://github.com/ClickHouse/ClickHouse/pull/100650) ([Raúl Marín](https://github.com/Algunenano)).
* Conversión más rápida de `Int128`/`UInt128` a cadena mediante la sustitución de la división por software por la reducción de Barrett y el desenrollado del bucle de conversión. [#100671](https://github.com/ClickHouse/ClickHouse/pull/100671) ([Raúl Marín](https://github.com/Algunenano)).
* Evita generar hilos redundantes en la fusión paralela de `uniqExact`. [#100686](https://github.com/ClickHouse/ClickHouse/pull/100686) ([Jiebin Sun](https://github.com/jiebinn)).
* Se añade la fusión paralela por lotes para `uniqExact`. [#100687](https://github.com/ClickHouse/ClickHouse/pull/100687) ([Jiebin Sun](https://github.com/jiebinn)).
* Mejor paralelización de consultas con vistas simples (con una tabla `MergeTree` subyacente) ejecutadas con réplicas paralelas. [#100815](https://github.com/ClickHouse/ClickHouse/pull/100815) ([Igor Nikonov](https://github.com/devcrafter)).
* Implementa compatibilidad con réplicas paralelas en vistas simples (incluidas las vistas `UNION ALL` compatibles sobre tablas `MergeTree`) cuando `parallel_replicas_allow_view_over_mergetree=1`. Esto permite paralelizar la consulta externa de la vista en lugar de la interna, lo que aumenta la paralelización de consultas entre nodos. [#100958](https://github.com/ClickHouse/ClickHouse/pull/100958) ([Igor Nikonov](https://github.com/devcrafter)).
* Optimizar la lectura en el orden de la clave primaria para `full_sorting_merge` cuando hay filtros con `IN` en el plan de consulta. [#101261](https://github.com/ClickHouse/ClickHouse/pull/101261) ([Nikita Taranov](https://github.com/nickitat)).
* Optimización de las asignaciones/liberaciones mediante el almacenamiento en caché de la configuración de muestreo, en lugar de recorrer toda la jerarquía del rastreador de memoria. [#101267](https://github.com/ClickHouse/ClickHouse/pull/101267) ([Azat Khuzhin](https://github.com/azat)).
* Corrige una regresión significativa en el rendimiento de INSERT cuando `deduplicate_insert = 'enable'` (predeterminado desde la versión 26.2) al posponer el cálculo del hash de los datos del squashing al sink y usar hashing por lotes de columnas mediante `updateHashWithValueRange`, lo que reduce la sobrecarga de \~2.5s a \~0.5s para 5M filas con 22 columnas. [#101494](https://github.com/ClickHouse/ClickHouse/pull/101494) ([Sema Checherinda](https://github.com/CheSema)).
* Reduce la sobrecarga del perfilado de bloqueos usando `try_lock` para evitar medir el tiempo de las adquisiciones sin contención y eliminar la medición del tiempo de retención. [#101502](https://github.com/ClickHouse/ClickHouse/pull/101502) ([Antonio Andelic](https://github.com/antonio2368)).
* Se sustituyeron las intrínsecas AVX-512 escritas a mano en `arrayDotProduct` por bucles autovectorizables independientes de la plataforma, añadiendo compatibilidad con AVX2 y ARM NEON. [#101571](https://github.com/ClickHouse/ClickHouse/pull/101571) ([Peng](https://github.com/fastio)).
* Mejora el rendimiento de `INSERT VALUES` para las columnas `Map`, `Array` y `Tuple` cuando los valores se pasan como cadenas escapadas (p. ej., `'{\'key\':1}'`), evitando recurrir innecesariamente al analizador de expresiones SQL. [#102119](https://github.com/ClickHouse/ClickHouse/pull/102119) ([Joanna Hulboj](https://github.com/jh0x)).
* Se corrigió el uso excesivo de CPU del motor de tabla `RabbitMQ`. [#102711](https://github.com/ClickHouse/ClickHouse/pull/102711) ([Jaap Elst](https://github.com/jaapieaapie1)).
* El optimizador del orden de JOIN ahora infiere predicados transitivos de equi-join a partir de las condiciones JOIN existentes. Por ejemplo, dado `A.x = B.x AND B.x = C.x`, se reconoce la equivalencia `A.x = C.x`, lo que permite al optimizador considerar joins directos entre tablas conectadas de forma transitiva. Esto puede mejorar la calidad del plan en esquemas en estrella y en copo de nieve, donde las tablas de dimensiones se conectan a través de una tabla de hechos compartida. Esta funcionalidad se controla mediante la nueva configuración `enable_join_transitive_predicates` (desactivada de forma predeterminada). [#98479](https://github.com/ClickHouse/ClickHouse/pull/98479) ([Alexander Gololobov](https://github.com/davenger)).
* Optimiza `TRUNCATE DATABASE TABLES LIKE` al cancelar previamente las operaciones de merge en paralelo. [#98597](https://github.com/ClickHouse/ClickHouse/pull/98597) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se añade compatibilidad con la monotonicidad en la multiplicación, lo que permite la poda por clave primaria en expresiones `key * constant`. [#98983](https://github.com/ClickHouse/ClickHouse/pull/98983) ([Amos Bird](https://github.com/amosbird)).
* Los diccionarios de caché ya no adquieren un bloqueo exclusivo en `hasKeys`; esto reduce la contención de bloqueos al usar un bloqueo compartido para las lecturas de la caché. [#100796](https://github.com/ClickHouse/ClickHouse/pull/100796) ([liuguangliang](https://github.com/sourcelliu)).
* Incorporar en línea la subconsulta VIEW en el árbol de consulta para permitir aplicar más optimizaciones a la VIEW. [#100830](https://github.com/ClickHouse/ClickHouse/pull/100830) ([Dmitry Novik](https://github.com/novikd)).
* Optimizar la carga de la caché al arrancar el servidor. [#101500](https://github.com/ClickHouse/ClickHouse/pull/101500) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Implementar la materialización diferida de columnas para ReplacingMergeTree con FINAL cuando el predicado sea lo bastante selectivo. [#101647](https://github.com/ClickHouse/ClickHouse/pull/101647) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se reactiva la optimización `optimize_rewrite_array_exists_to_has` (desactivada de forma predeterminada desde la versión 23.10). Reescribe `arrayExists(x -> x = elem, arr)` como la mucho más rápida `has(arr, elem)` y ahora omite correctamente la reescritura cuando el tipo de elemento del array y `elem` no son compatibles para `has` (p. ej., `Date` y `String`), por lo que las consultas que antes fallaban siguen funcionando. Cierra [#71431](https://github.com/ClickHouse/ClickHouse/issues/71431). [#100944](https://github.com/ClickHouse/ClickHouse/pull/100944) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-improvement">
  #### Mejora
</div>

* Salida mejorada de EXPLAIN PLAN pretty=1: imprime las columnas de salida de la consulta de nivel superior, muestra las etiquetas/símbolos de la relación de join junto con las filas estimadas del resultado y la localidad, e incluye las columnas de salida de cada paso para los pasos de join/source. Los cambios abarcan la parte de Information Deficit de [#98117](https://github.com/ClickHouse/ClickHouse/issues/98117). [#99462](https://github.com/ClickHouse/ClickHouse/pull/99462) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Añade la configuración de tabla MergeTree `share_nested_offsets` (valor predeterminado: `true`). Cuando se establece en `false`, las columnas Array con nombres con puntos (p. ej., `n.a`, `n.b`) se tratan como columnas independientes, en lugar de compartir archivos de desplazamiento y validar que los arrays tengan el mismo tamaño como parte de la semántica heredada de `Nested`. [#98416](https://github.com/ClickHouse/ClickHouse/pull/98416) ([Amos Bird](https://github.com/amosbird)).
* Ahora, los usuarios pueden especificar varios métodos de autenticación en el archivo de configuración users.xml/yaml (en SQL, esto siempre fue posible). [#91998](https://github.com/ClickHouse/ClickHouse/pull/91998) ([Flip-Liquid](https://github.com/Flip-Liquid)).
* Recarga automática de las conexiones entre nodos de Raft que usan TLS. [#93455](https://github.com/ClickHouse/ClickHouse/pull/93455) ([Evgeny](https://github.com/evkuzin)).
* Se amplía `cast_keep_nullable` para que funcione con tipos Dynamic/JSON. Cuando está habilitado, convertir NULL desde tipos que pueden ser Nullable devolverá NULL; de lo contrario, NULL provocará el error `CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN`. [#96504](https://github.com/ClickHouse/ClickHouse/pull/96504) ([Seva Potapov](https://github.com/seva-potapov)).
* Se redujo la huella de memoria de las estructuras de datos internas (objetos `ISerialization`) gracias a la incorporación de un grupo de objetos. [#96563](https://github.com/ClickHouse/ClickHouse/pull/96563) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Se añade compatibilidad con los campos `password` e `identity` en la configuración XML de keeper-client. [#96800](https://github.com/ClickHouse/ClickHouse/pull/96800) ([Grigorii Sokolik](https://github.com/GSokol)).
* Mejora de las escrituras de `Iceberg` para Unity Catalog. [#98162](https://github.com/ClickHouse/ClickHouse/pull/98162) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Añade la opción de configuración `finalize_projection_parts_synchronously` para permitir la finalización síncrona de las partes de proyección durante INSERT, lo que reduce el pico de uso de memoria en tablas con muchas proyecciones, mientras mantiene por defecto el comportamiento asíncrono existente. [#98228](https://github.com/ClickHouse/ClickHouse/pull/98228) ([Amos Bird](https://github.com/amosbird)).
* Agregar la columna `projections_duration_ms` a `system.part_log`, que registra la duración en milisegundos de la fusión/reconstrucción de cada proyección. [#98292](https://github.com/ClickHouse/ClickHouse/pull/98292) ([Amos Bird](https://github.com/amosbird)).
* Mejora en la cancelación de consultas mediante ExpressionTransform y NumbersRangedSource con KILL QUERY y «cancel query» (Ctrl+C) en clickhouse-client. [#98908](https://github.com/ClickHouse/ClickHouse/pull/98908) ([Roman Vasin](https://github.com/rvasin)).
* Reemplaza la lista `source_table_engines` codificada de forma fija por una consulta en tiempo de ejecución mediante `StorageFactory::getAllStorages()`. Esto añade comprobaciones de acceso para algunos motores de tabla que faltaban y cierra [#71544](https://github.com/ClickHouse/ClickHouse/issues/71544). [#98984](https://github.com/ClickHouse/ClickHouse/pull/98984) ([pufit](https://github.com/pufit)).
* Añade un ajuste para controlar el comportamiento ante incompatibilidades de tipo en Variant y Dynamic (throw o devolver null). [#99085](https://github.com/ClickHouse/ClickHouse/pull/99085) ([Bharat Nallan](https://github.com/bharatnc)).
* Mejorar la compatibilidad entre `Iceberg` y Spark: corregir el manejo inconsistente de rutas causado por el uso combinado de rutas de almacenamiento y rutas de metadata; exigir que las tablas `Iceberg` escriban una ubicación de tabla que sea una URL o una ruta absoluta; añadir un fallback para calcular el tamaño de los archivos en `Azure`, ya que algunos lectores de ClickHouse no admiten el conteo de bytes tras el recorrido; manejar `version-hint.txt` de forma compatible con Spark; introducir abstracciones a nivel de tipos que dificulten mezclar tipos de rutas en el futuro; añadir pruebas para `Azure` y `Local` que verifiquen la interoperabilidad entre motores sin carga ni descarga intermedias; corregir el uso de position deletes, que antes dependía de heurísticas de inferencia de rutas cuando ese enfoque no es adecuado. [#99163](https://github.com/ClickHouse/ClickHouse/pull/99163) ([Daniil Ivanik](https://github.com/divanik)). [#100420](https://github.com/ClickHouse/ClickHouse/pull/100420) ([Daniil Ivanik](https://github.com/divanik)).
* Se corrigió una posible condición de carrera en `IPartitionStrategy::cached_result` introducida en [https://github.com/ClickHouse/ClickHouse/pull/92844](https://github.com/ClickHouse/ClickHouse/pull/92844). [#99400](https://github.com/ClickHouse/ClickHouse/pull/99400) ([Arthur Passos](https://github.com/arthurpassos)).
* Los usuarios ahora pueden escribir tipos de datos Interval de ClickHouse en formato Arrow. [#99519](https://github.com/ClickHouse/ClickHouse/pull/99519) ([Peter Nguyen](https://github.com/petern48)).
* Añade compatibilidad nativa para importar y exportar tipos de datos `UUID` en los formatos `Arrow` y `Parquet`. Los usuarios ahora pueden consultar y transferir directamente datos UUID entre ClickHouse y otras herramientas de datos sin necesidad de realizar conversiones manuales a cadenas ni recurrir a soluciones alternativas. Inferencia lógica automatizada para UUID de nivel superior y compatibilidad con una sugerencia de schema explícita para UUID anidados. [#99521](https://github.com/ClickHouse/ClickHouse/pull/99521) ([Ivan](https://github.com/ivanmantova)).
* Admite archivos `7z` en el almacenamiento de objetos. Cierra [#70968](https://github.com/ClickHouse/ClickHouse/issues/70968). [#99600](https://github.com/ClickHouse/ClickHouse/pull/99600) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añaden los ProfileEvents `ObjectStorageListedObjects`, `ObjectStorageGlobFilteredObjects`, `ObjectStoragePredicateFilteredObjects` y `ObjectStorageReadObjects` para la introspección del pipeline de listado y lectura de archivos en almacenamiento de objetos (`S3`, `Azure`, etc.). [#99778](https://github.com/ClickHouse/ClickHouse/pull/99778) ([Sema Checherinda](https://github.com/CheSema)).
* Se corrige el fallo de la función de tabla `merge` que provocaba el error `UNKNOWN_IDENTIFIER` al consultar columnas que no están presentes en todas las tablas distribuidas/remotas subyacentes. [#99833](https://github.com/ClickHouse/ClickHouse/pull/99833) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ahora incluimos el tiempo de commit en la métrica del tiempo total de ejecución de las mutaciones para ReplicatedMergeTree. Se había omitido después de [#96376](https://github.com/ClickHouse/ClickHouse/issues/96376). [#99936](https://github.com/ClickHouse/ClickHouse/pull/99936) ([alesapin](https://github.com/alesapin)).
* Se añade un write-ahead log para los objetos blob pendientes de eliminación en `MetadataStorageFromDisk`, lo que mejora la durabilidad y la coherencia entre los metadatos y el almacenamiento remoto de objetos cuando se eliminan objetos. [#100019](https://github.com/ClickHouse/ClickHouse/pull/100019) ([Maksim Kita](https://github.com/kitaisreal)).
* Se deshabilitó la generación de SQL con IA (comando `??`) en el client embebido (protocolos SSH y WebSocket) para evitar el acceso a las variables de entorno del servidor. [#100290](https://github.com/ClickHouse/ClickHouse/pull/100290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se cambia la interfaz del catálogo para las inserciones de Iceberg. Quedan obsoletas las configuraciones `storage_catalog_type`, `storage_aws_access_key_id`, etc. [#100334](https://github.com/ClickHouse/ClickHouse/pull/100334) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Interpretar las tabulaciones como 4 espacios al pegar en clickhouse-client. Cierra [#100405](https://github.com/ClickHouse/ClickHouse/issues/100405). [#100416](https://github.com/ClickHouse/ClickHouse/pull/100416) ([Raúl Marín](https://github.com/Algunenano)).
* Evita escanear todo el catálogo remoto del lago de datos para mostrar sugerencias de tablas del tipo “Quizá quiso decir…” cuando `show_data_lake_catalogs_in_system_tables` está deshabilitado. [#100452](https://github.com/ClickHouse/ClickHouse/pull/100452) ([Alsu Giliazova](https://github.com/alsugiliazova)).
* Aplicar `distributed_index_analysis_min_indexes_bytes_to_activate` tras la poda de particiones. [#100477](https://github.com/ClickHouse/ClickHouse/pull/100477) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige un error de aserción en el pushdown del bloom filter de Parquet al usar cláusulas IN/NOT IN vacías. [#100543](https://github.com/ClickHouse/ClickHouse/pull/100543) ([zoomxi](https://github.com/zoomxi)).
* Las estadísticas de columna MinMax ahora almacenan los valores mínimo y máximo como Field (tipado) en lugar de Float64. El formato serializado incluye el nombre del tipo de la columna junto con los valores. La versión del archivo de estadísticas se actualiza a V2; los archivos escritos por versiones anteriores requieren volver a materializarse (ALTER TABLE … MATERIALIZE STATISTICS ALL). corrección [#53140](https://github.com/ClickHouse/clickhouse-private/issues/53140). [#100605](https://github.com/ClickHouse/ClickHouse/pull/100605) ([Han Fei](https://github.com/hanfei1991)).
* Actualizar `cppkafka` para incluir una corrección del interbloqueo al cerrar el consumidor. [#100612](https://github.com/ClickHouse/ClickHouse/pull/100612) ([Azat Khuzhin](https://github.com/azat)).
* La información del objeto que se utiliza para analizar los archivos de datos en Iceberg ahora incluye el número de filas del archivo y su tamaño en bytes, obtenidos del archivo de manifiesto. [#100645](https://github.com/ClickHouse/ClickHouse/pull/100645) ([Daniil Ivanik](https://github.com/divanik)).
* Se añadió el parámetro de configuración `use_separate_cache_arena` para poder controlar la separación de la arena de memoria de la caché. [#100664](https://github.com/ClickHouse/ClickHouse/pull/100664) ([Seva Potapov](https://github.com/seva-potapov)).
* Agrega compatibilidad nativa para importar los tipos de datos `StringView` y `BinaryView` de Apache Arrow a columnas `String` de ClickHouse, lo que mejora la compatibilidad con la ingestión basada en Arrow. [#100762](https://github.com/ClickHouse/ClickHouse/pull/100762) ([Ivan](https://github.com/ivanmantova)).
* Algunos ajustes del servidor Keeper ahora se recargan en caliente si el archivo de configuración cambia en tiempo de ejecución: max\_requests\_batch\_size, max\_requests\_batch\_bytes\_size, max\_request\_size, quorum\_reads. [#100773](https://github.com/ClickHouse/ClickHouse/pull/100773) ([Michael Kolupaev](https://github.com/al13n321)).
* Se incrementan los eventos de perfil `MemoryAllocatedWithoutCheck/MemoryAllocatedWithoutCheckBytes` en la compilación release. [#100899](https://github.com/ClickHouse/ClickHouse/pull/100899) ([Pavel Kruglov](https://github.com/Avogar)).
* El seguimiento de memoria en Cgroupv2 ahora excluye `slab_reclaimable` de la memoria del kernel, lo que ofrece una medición más precisa del uso de memoria no recuperable. [#100901](https://github.com/ClickHouse/ClickHouse/pull/100901) ([Antonio Andelic](https://github.com/antonio2368)).
* `use_partition_pruning = 0` ahora también desactiva la poda del índice `MinMax` y la optimización de conteo en las columnas de la clave de partición, además de desactivar la poda basada en claves de partición. [#100904](https://github.com/ClickHouse/ClickHouse/pull/100904) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* `pretty=1` en `EXPLAIN [PLAN]` ahora muestra las expresiones en un formato legible. [#100927](https://github.com/ClickHouse/ClickHouse/pull/100927) ([Kirill Kopnev](https://github.com/Fgrtue)).
* `accurateCastOrNull` y `accurateCastOrDefault` ahora admiten tipos de destino `Tuple`, incluidos `Tuples` anidados con elementos `Nullable`. Antes, estas funciones rechazaban destinos `Tuple` porque `Tuple` no podía estar dentro de `Nullable`. Cierra [#100820](https://github.com/ClickHouse/ClickHouse/issues/100820). [#100942](https://github.com/ClickHouse/ClickHouse/pull/100942) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corregir la duplicación de gráficos en la interfaz de Play al cambiar entre los temas claro y oscuro. [#101058](https://github.com/ClickHouse/ClickHouse/pull/101058) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Actualización de chdig a [v26.3.1](https://github.com/azat/chdig/releases/tag/v26.3.1) (interfaz de perfetto, minigráficos en el resumen para CPU/Memoria/Fusiones/Consultas, system.warnings, búsqueda con regexp en los logs). [#101092](https://github.com/ClickHouse/ClickHouse/pull/101092) ([Azat Khuzhin](https://github.com/azat)). Actualización de chdig a [v26.4.3](https://github.com/azat/chdig/releases/tag/v26.4.3) (mejoras en perfetto, correcciones para compartir mediante pastila.nl, diferencias de flamegraph, cambio de configuración en tiempo real). [#103145](https://github.com/ClickHouse/ClickHouse/pull/103145) ([Azat Khuzhin](https://github.com/azat)).
* Ahora se permite una coma final en la cláusula `WITH` antes de una consulta `SELECT`. [#101093](https://github.com/ClickHouse/ClickHouse/pull/101093) ([Aruj Bansal](https://github.com/arujbansal)).
* Añade el ajuste de MergeTree `compress_per_column_in_compact_parts` para controlar cómo se organizan los bloques comprimidos dentro de las partes Compact. Cuando es `true` (valor predeterminado, que conserva el comportamiento actual), cada columna inicia un nuevo bloque comprimido, lo que permite la descompresión selectiva. Cuando es `false`, todas las columnas dentro de un gránulo se empaquetan en el mismo bloque comprimido, lo que mejora la relación de compresión y el rendimiento de lectura en cargas de trabajo que siempre leen todas las columnas. [#101114](https://github.com/ClickHouse/ClickHouse/pull/101114) ([Amos Bird](https://github.com/amosbird)).
* Mostrar el tooltip de información de la tabla en la UI de Play solo al pasar el cursor sobre el nombre de la tabla, no sobre toda la fila. [#101118](https://github.com/ClickHouse/ClickHouse/pull/101118) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Añade iconos específicos para cada motor y mejora la UX de la lista de tablas en la barra lateral de la UI de Play. [#101134](https://github.com/ClickHouse/ClickHouse/pull/101134) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Compatibilidad con `Nullable(Tuple)` en los formatos `Arrow`, `ArrowStream`, `ORC` y `Parquet` heredado. [#101272](https://github.com/ClickHouse/ClickHouse/pull/101272) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Mostrar la fila TOTALS como pie de la tabla en la web UI (play.html). [#101286](https://github.com/ClickHouse/ClickHouse/pull/101286) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Compatibilidad con el modo multiconsulta en la interfaz web (`play.html`): ejecución de varias consultas a la vez, con ejecución en paralelo de consultas de tipo `SELECT` y visualización de resultados por consulta. [#101290](https://github.com/ClickHouse/ClickHouse/pull/101290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige el redimensionamiento de columnas en la interfaz web `play.html` después de refactorizar la tabla de resultados como un componente web. [#101295](https://github.com/ClickHouse/ClickHouse/pull/101295) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió la posibilidad de limitar la cantidad de flushes del perfil de jemalloc en MEMORY\_LIMIT\_EXCEEDED por intervalo de tiempo. [#101396](https://github.com/ClickHouse/ClickHouse/pull/101396) ([Azat Khuzhin](https://github.com/azat)).
* Se añadieron las configuraciones de Keeper `nuraft_streaming_mode` (valor predeterminado: `false`), `nuraft_max_log_gap_in_stream`, `nuraft_max_bytes_in_flight_in_stream`. Cierra [#90743](https://github.com/ClickHouse/ClickHouse/issues/90743). [#101427](https://github.com/ClickHouse/ClickHouse/pull/101427) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se añadió la métrica asíncrona `CGroupMemoryUsedWithoutPageCache`, que informa del uso de memoria del cgroup excluyendo tanto la caché de páginas del kernel del sistema operativo como la caché de páginas en espacio de usuario de ClickHouse, en consonancia con `MemoryResidentWithoutPageCache`. También se aclaró la descripción de la métrica `CGroupMemoryUsed`. [#101513](https://github.com/ClickHouse/ClickHouse/pull/101513) ([Francesco Ciocchetti](https://github.com/primeroz)).
* Añade azúcar sintáctico a nivel del analizador sintáctico para la sintaxis de la función `OVERLAY` del estándar SQL. La función `overlay` ya existe; esto añade compatibilidad con la forma basada en palabras clave que usa `PLACING`, `FROM` y `FOR` como separadores. [#101681](https://github.com/ClickHouse/ClickHouse/pull/101681) ([Desel72](https://github.com/Desel72)).
* Se añadió el alias de columna `INDEX_LENGTH` a la tabla del sistema `information_schema.tables`, en consonancia con los alias existentes en mayúsculas de esta tabla. [#101705](https://github.com/ClickHouse/ClickHouse/pull/101705) ([Robert Schulze](https://github.com/rschu1ze)).
* La tabla del sistema `information_schema.tables` ahora ignora las partes inactivas de la tabla. Esto hace que los valores de tamaño de la tabla que se muestran sean más realistas. [#101706](https://github.com/ClickHouse/ClickHouse/pull/101706) ([Robert Schulze](https://github.com/rschu1ze)).
* La función `ngrams` ahora rechaza longitudes de ngram no válidas. Ejemplo: `SELECT ngrams('abc', 0)` ahora devuelve un error. [#101922](https://github.com/ClickHouse/ClickHouse/pull/101922) ([Robert Schulze](https://github.com/rschu1ze)).
* Como seguimiento de [#91820](https://github.com/ClickHouse/ClickHouse/issues/91820) y [#90837](https://github.com/ClickHouse/ClickHouse/issues/90837): eliminar del mensaje de error los algoritmos no compatibles; ejecutar pruebas específicas de FIPS en compilaciones FIPS. [#102067](https://github.com/ClickHouse/ClickHouse/pull/102067) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Limita la altura de las celdas a tres líneas en la Web UI (`play.html`), con posibilidad de expandirlas al hacer clic. [#102154](https://github.com/ClickHouse/ClickHouse/pull/102154) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió una nueva opción que permite forzar el estilo (virtual/path) para los endpoints de S3. Resuelve [#82019](https://github.com/ClickHouse/ClickHouse/issues/82019); [#76007](https://github.com/ClickHouse/ClickHouse/issues/76007). Da continuidad a [https://github.com/ClickHouse/ClickHouse/pull/83168](https://github.com/ClickHouse/ClickHouse/pull/83168). [#102378](https://github.com/ClickHouse/ClickHouse/pull/102378) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* La configuración `restore_replace_external_engines_to_null` ahora también omite la restauración de bases de datos con motores externos (p. ej., `DataLakeCatalog`, `MySQL`, `PostgreSQL`, `S3`) en lugar de producir un error o iniciar conexiones externas. [#102400](https://github.com/ClickHouse/ClickHouse/pull/102400) ([Nikita Fomichev](https://github.com/fm4v)).
* Se añade soporte para el análisis de índices de texto de la función `hasPhrase` mediante el modo `HINT`. [#102438](https://github.com/ClickHouse/ClickHouse/pull/102438) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Considerar STATISTICS como solo lectura en ColumnDependency para corregir LOGICAL\_ERROR durante MATERIALIZE STATISTICS ALL. [#102627](https://github.com/ClickHouse/ClickHouse/pull/102627) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Crear y poblar `system.asynchronous_metric_log` en modo keeper-as-server. [#102664](https://github.com/ClickHouse/ClickHouse/pull/102664) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se añade la opción de configuración `default_system_log_flush_policy.skip_alias_columns` para permitir omitir las columnas ALIAS de las tablas de logs del sistema, lo que corrige los logs del sistema respaldados por S3 que rechazan columnas ALIAS. [#102669](https://github.com/ClickHouse/ClickHouse/pull/102669) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* No habilite las estadísticas automáticas para las tablas del sistema. Rara vez pueden aprovecharlas. [#102862](https://github.com/ClickHouse/ClickHouse/pull/102862) ([Han Fei](https://github.com/hanfei1991)).
* Se admite el tokenizer `array` para la optimización de LIKE. [#102880](https://github.com/ClickHouse/ClickHouse/pull/102880) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Enviar MemoryAllocatedWithoutCheck incluso en compilaciones de producción. [#103064](https://github.com/ClickHouse/ClickHouse/pull/103064) ([Azat Khuzhin](https://github.com/azat)).
* Exponer untracked\_memory de cada hilo en system.stack\_trace. [#103065](https://github.com/ClickHouse/ClickHouse/pull/103065) ([Azat Khuzhin](https://github.com/azat)).

<div id="268-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Corrección de errores (mal funcionamiento visible para el usuario en una versión estable oficial)
</div>

* Se corrige el error `Block structure mismatch in stream` causado por columnas innecesarias devueltas por la materialización diferida. Soluciona [#95191](https://github.com/ClickHouse/ClickHouse/issues/95191). [#96682](https://github.com/ClickHouse/ClickHouse/pull/96682) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Corrige un error lógico en una consulta de política de enmascaramiento de datos al usar `ON CLUSTER`. [#97594](https://github.com/ClickHouse/ClickHouse/pull/97594) ([Bharat Nallan](https://github.com/bharatnc)).
* Se corrige un error al usar Unity Catalog sobre GCS. [#98456](https://github.com/ClickHouse/ClickHouse/pull/98456) ([Melvyn Peignon](https://github.com/melvynator)).
* `DataLakeCatalog` ahora respeta la configuración `http_forbid_headers` del servidor al validar la opción `auth_header`. [#98827](https://github.com/ClickHouse/ClickHouse/pull/98827) ([Michael Anastasakis](https://github.com/michael-anastasakis)).
* Se corrigen las llamadas N+1 a `HeadObject` para globs con expansión entre llaves de S3. [#99219](https://github.com/ClickHouse/ClickHouse/pull/99219) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Validar los cambios de configuración en las consultas CREATE cuando el propio motor también admite parámetros de configuración. [#99279](https://github.com/ClickHouse/ClickHouse/pull/99279) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Se corrigió un fallo por el que `ALTER TABLE UPDATE/DELETE` fallaba con el error `Missing columns` cuando una tabla tiene una columna MATERIALIZED cuya expresión depende de una columna EPHEMERAL. [#99281](https://github.com/ClickHouse/ClickHouse/pull/99281) ([Yash ](https://github.com/Onyx2406)).
* Las credenciales en las cadenas de conexión de JDBC, ODBC y NATS ahora se enmascaran en los registros de consultas y en la salida de `SHOW CREATE`, lo que evita la exposición accidental de información confidencial. En las cadenas de conexión con formato URI (p. ej., `{scheme}://{user}:{password}@{host}`), solo se enmascara la contraseña, mientras que el resto permanece visible para facilitar la depuración. El ajuste `nats_token` ahora también se enmascara. [#99344](https://github.com/ClickHouse/ClickHouse/pull/99344) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Corrige el análisis incorrecto de palabras que comienzan con prefijos de meses en el formato DD-month-YYYY por parte de parseDateTimeBestEffort. Cierra [#99345](https://github.com/ClickHouse/ClickHouse/issues/99345#event-23517658314). [#99350](https://github.com/ClickHouse/ClickHouse/pull/99350) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió que se ignorara TABLE\_UUID\_MISMATCH cuando no se usa el analizador. [#99380](https://github.com/ClickHouse/ClickHouse/pull/99380) ([Azat Khuzhin](https://github.com/azat)).
* Corrige un error por el que los ajustes explícitos enviados junto con `compatibility` en la misma solicitud podían ignorarse de forma silenciosa cuando su valor coincidía con el valor predeterminado del servidor. [#99402](https://github.com/ClickHouse/ClickHouse/pull/99402) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Corrige los casos en los que los números con ceros a la izquierda en la ruta de particionado de Hive producían errores. Corrige [#98801](https://github.com/ClickHouse/ClickHouse/issues/98801). [#99458](https://github.com/ClickHouse/ClickHouse/pull/99458) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrige `heap-use-after-free` cuando se elimina una tabla de forma concurrente mientras hay una consulta de lectura en ejecución (19 casos en CI durante los últimos 90 días). [#99483](https://github.com/ClickHouse/ClickHouse/pull/99483) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un error en Keeper por el que una solicitud de lectura podía quedarse bloqueada (haciendo que la sesión expirara) si se cerraba una sesión distinta y no relacionada en el mismo servidor justo en un mal momento. [#99484](https://github.com/ClickHouse/ClickHouse/pull/99484) ([Michael Kolupaev](https://github.com/al13n321)).
* Validar la estructura de la columna antes de aplicar parches. [#99531](https://github.com/ClickHouse/ClickHouse/pull/99531) ([Seva Potapov](https://github.com/seva-potapov)).
* Corrige el fallo de aserción de `rows_sources` en la fusión vertical cuando `SYSTEM STOP/START MERGES` se activa y desactiva rápidamente durante la fusión de una tabla con columnas `Dynamic`. [#99532](https://github.com/ClickHouse/ClickHouse/pull/99532) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la poda incorrecta de particiones en `toWeek()`, que provocaba que las consultas con `WHERE toWeek(date, mode) = N` devolvieran resultados vacíos para las semanas 49-52 en tablas particionadas por `toYYYYMM(date)`. [#99542](https://github.com/ClickHouse/ClickHouse/pull/99542) ([Takumi Hara](https://github.com/takumihara)).
* Se corrige una excepción en funciones que operan con ColumnReplicated con filas no referenciadas producidas por JOIN. [#99564](https://github.com/ClickHouse/ClickHouse/pull/99564) ([Hechem Selmi](https://github.com/m-selmi)).
* Corrige un problema por el que `CLEAR COLUMN` no reconstruía las proyecciones ni reevaluaba las columnas materializadas que dependen de la columna eliminada, lo que podía provocar excepciones o corrupción de datos durante fusiones posteriores. [#99565](https://github.com/ClickHouse/ClickHouse/pull/99565) ([Desel72](https://github.com/Desel72)).
* Se corrigió una excepción (`Bad get: has Tuple, actual type String`) en `ConditionSelectivityEstimator` cuando una consulta usa IN con un solo parámetro de consulta escalar (p. ej., `WHERE col IN ({p:String})`) en una tabla que tiene estadísticas de columna y con `use_statistics` habilitado. [#99614](https://github.com/ClickHouse/ClickHouse/pull/99614) ([Ilya Yatsishin](https://github.com/qoega)).
* La parte con proyecciones desconocidas no debe marcarse como perdida para siempre. [#99623](https://github.com/ClickHouse/ClickHouse/pull/99623) ([Sema Checherinda](https://github.com/CheSema)).
* Se corrige una excepción poco frecuente de error lógico durante una fusión vertical cuando `SYSTEM STOP MERGES` y `SYSTEM START MERGES` se ejecutan de forma concurrente. [#99628](https://github.com/ClickHouse/ClickHouse/pull/99628) ([Desel72](https://github.com/Desel72)).
* Se corrige una referencia colgante en injectRequiredColumns que provocaba un fallo durante un merge. [#99679](https://github.com/ClickHouse/ClickHouse/pull/99679) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Corrige el comportamiento indefinido en el lector del formato Avro al leer valores numéricos que exceden la capacidad del tipo de la columna de destino. Ahora las consultas fallan cuando se producen desbordamientos, en lugar de generar silenciosamente valores incorrectos. [#99697](https://github.com/ClickHouse/ClickHouse/pull/99697) ([asyablue22](https://github.com/asyablue22)).
* Se corrige el procesamiento de las comillas de estilo shell en los argumentos de la función de tabla `executable`. [#99794](https://github.com/ClickHouse/ClickHouse/pull/99794) ([Nikita Semenov](https://github.com/leftmain)).
* Corrige un aborto por falso positivo en `NativeReader` al deserializar un flujo en formato Native con una discrepancia en el recuento de filas: se cambió de `LOGICAL_ERROR` a `INCORRECT_DATA` para que el error se trate como un error de datos en lugar de activar `abort()` en compilaciones con sanitizador/depuración. [#99822](https://github.com/ClickHouse/ClickHouse/pull/99822) ([Rahul Nair](https://github.com/motsc)).
* Corregida la interrupción del proceso en la deserialización de la columna `Tuple` cuando el tipo de serialización en el flujo binario es `DETACHED`. [#99823](https://github.com/ClickHouse/ClickHouse/pull/99823) ([Rahul Nair](https://github.com/motsc)).
* Se corrigió la falsa excepción `LOGICAL_ERROR` durante el redimensionamiento dinámico de la caché del sistema de archivos debido a una condición de carrera en la promoción de la subcola de SLRU. [#99850](https://github.com/ClickHouse/ClickHouse/pull/99850) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corregidas las consultas de async insert que mostraban `written_rows`, `read_rows` y `result_rows` en cero en `query_log` y en la salida del client. [#99879](https://github.com/ClickHouse/ClickHouse/pull/99879) ([Sema Checherinda](https://github.com/CheSema)).
* Corrige la excepción "Bad cast from type X to Y" en `KILL QUERY` cuando la consulta interna sobre las tablas del sistema devuelve columnas encapsuladas en `ColumnConst`. [#99881](https://github.com/ClickHouse/ClickHouse/pull/99881) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un error lógico en una subconsulta correlacionada dentro del argumento untuple. [#99917](https://github.com/ClickHouse/ClickHouse/pull/99917) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige una excepción al llamar a `right`, `rightUTF8` u otras funciones de subcadena con una longitud de INT64\_MIN (-9223372036854775808), lo que antes provocaba un comportamiento indefinido debido a un desbordamiento de enteros. Ahora las funciones devuelven correctamente el error ARGUMENT\_OUT\_OF\_BOUND. [#99934](https://github.com/ClickHouse/ClickHouse/pull/99934) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Ahora ClickHouse debería manejar correctamente las tablas de estilo Spark (donde tenemos la ruta absoluta completa para cada archivo o una ruta relativa a la ruta común de la tabla). Corrige [#92348](https://github.com/ClickHouse/ClickHouse/issues/92348). [#99935](https://github.com/ClickHouse/ClickHouse/pull/99935) ([alesapin](https://github.com/alesapin)).
* Se corrige la excepción "formato AST incoherente" en `ALTER TABLE ... MODIFY QUERY` con subconsultas anidadas que contienen `SETTINGS` cuando el propio `ALTER` también incluye `SETTINGS`. [#99938](https://github.com/ClickHouse/ClickHouse/pull/99938) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Se revierte [#97114](https://github.com/ClickHouse/ClickHouse/issues/97114) "Mover la estimación de filas en el paso de join antes de la comprobación de que haya 1 hijo" debido a una posible regresión del rendimiento. [#99957](https://github.com/ClickHouse/ClickHouse/pull/99957) ([Alexander Gololobov](https://github.com/davenger)).
* Corrige un error por el que ClickHouse podía omitir archivos si faltaba el encabezado `Content-Length` en la respuesta a la solicitud HEAD correspondiente (por ejemplo, debido a la transcodificación descompresiva en GCS). [#99971](https://github.com/ClickHouse/ClickHouse/pull/99971) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige un fallo de aserción (excepción en builds de depuración, resultados incorrectos en builds de lanzamiento) al multiplicar estados de agregación de `NumericIndexedVector` por una constante entera par, provocado por un XOR consigo mismos en bitmaps Roaring con alias en `pointwiseAddInplace`. [#99976](https://github.com/ClickHouse/ClickHouse/pull/99976) ([Desel72](https://github.com/Desel72)).
* Evitar la excepción `Unexpected return type` en el pushdown heredado de filtros a través de `JOIN USING` encadenados cuando los tipos de las claves cambian después de las conversiones de JOIN. [#99999](https://github.com/ClickHouse/ClickHouse/pull/99999) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la excepción `LOGICAL_ERROR` "Tipo de nodo inesperado para la expresión de tabla ... se obtuvo IDENTIFIER" cuando se usa una subconsulta escalar dentro de un argumento sin resolver de una función de tabla, p. ej., `SELECT * FROM remote('localhost', view(SELECT 2 AS x), concat(x, (SELECT 1)))`. [#100014](https://github.com/ClickHouse/ClickHouse/pull/100014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un fallo de `INSERT` con `VALUES` cuando los datos iban seguidos de un comentario SQL al final (`--` o `/* */`) en la línea siguiente. Ahora se omite el comentario en lugar de interpretarlo como otra fila. [#100016](https://github.com/ClickHouse/ClickHouse/pull/100016) ([Pratima Patel](https://github.com/pratimapatel2008)).
* Se corrige una excepción en `arrayRemove` al comparar Tuples con componentes NULL. [#100017](https://github.com/ClickHouse/ClickHouse/pull/100017) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una filtración de datos entre usuarios en `system.asynchronous_inserts`: cualquier usuario con `SELECT` sobre la tabla podía ver entradas pendientes de inserción asíncrona de otros usuarios. Ahora las entradas se filtran según el usuario actual, salvo que el usuario tenga el privilegio `SHOW_USERS`. [#100024](https://github.com/ClickHouse/ClickHouse/pull/100024) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige un caso en el que la conversión de Time64 a UInt64 podía restringir los valores a 24 horas. [#100025](https://github.com/ClickHouse/ClickHouse/pull/100025) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigió un bloqueo del servidor local cuando CREATE DICTIONARY tiene una definición con un valor de lista que contiene una función inexistente. [#100036](https://github.com/ClickHouse/ClickHouse/pull/100036) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Se corrige un problema que impedía que los formatos `CSV` y `MsgPack` analizaran correctamente `Nullable(Tuple)`. Cierra [#99753](https://github.com/ClickHouse/ClickHouse/issues/99753). [#100038](https://github.com/ClickHouse/ClickHouse/pull/100038) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrige el error de `CREATE VIEW` con `UNKNOWN_IDENTIFIER` al usar como lado derecho de `IN` un alias de expresión de función en `WITH` (por ejemplo, `tuple(...)`). [#100042](https://github.com/ClickHouse/ClickHouse/pull/100042) ([Peng](https://github.com/fastio)).
* Se corrigieron las funciones de agregación de series temporales (p. ej., `timeSeriesResampleToGridWithStaleness`) que fallaban con `ILLEGAL_TYPE_OF_ARGUMENT` cuando se usaban con `initializeAggregation` o `AggregatingMergeTree` en réplicas paralelas. [#100053](https://github.com/ClickHouse/ClickHouse/pull/100053) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió el procesamiento de valores negativos en NumericIndexedVectorDataBSI. [#100086](https://github.com/ClickHouse/ClickHouse/pull/100086) ([Daniil Ivanik](https://github.com/divanik)).
* Se corrigieron las funciones `accurateCastOrDefault` y `to*OrDefault`, que no preservaban el tipo de columna Const para entradas constantes. [#100132](https://github.com/ClickHouse/ClickHouse/pull/100132) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los parámetros de consulta omitidos de tipo `LowCardinality(Nullable(T))` ahora toman correctamente NULL como valor predeterminado, igual que `Nullable(T)`. [#100144](https://github.com/ClickHouse/ClickHouse/pull/100144) ([Denys Melnyk](https://github.com/germiBest)).
* Se corrige el uso de un valor sin inicializar en StringSearcher.h. [#100225](https://github.com/ClickHouse/ClickHouse/pull/100225) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Permite cancelar subconsultas escalares y otras canalizaciones durante el análisis mediante Ctrl+C. Anteriormente, al pulsar Ctrl+C durante una subconsulta escalar de larga duración no ocurría nada hasta que la subconsulta terminaba. También corrige la barra de progreso y las estadísticas JSON para que informen correctamente de las filas leídas durante la ejecución de subconsultas escalares, tanto en `clickhouse-client` como en `clickhouse-local`. En coautoría con @YjyJeff. [#100230](https://github.com/ClickHouse/ClickHouse/pull/100230) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió una excepción `LOGICAL_ERROR` en consultas que involucran columnas `Dynamic` con uniones cruzadas y filtros en tiempo de ejecución, causada por `ColumnVariant::filter`, que compartía punteros a columnas Variant en lugar de clonarlos en la ruta de optimización `hasOnlyNulls`. Cierra [https://github.com/ClickHouse/ClickHouse/pull/100147](https://github.com/ClickHouse/ClickHouse/pull/100147). [#100234](https://github.com/ClickHouse/ClickHouse/pull/100234) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió un error en `Array` de `Variant` que podía reinterpretar el tipo de dato al llamar a la función `arrayFirst`/`arrayLast`. Por ejemplo, antes `Array(Variant(Date, Bool))` se convertía en `Bool` cuando el tipo de variante subyacente real era `Date`. [#100255](https://github.com/ClickHouse/ClickHouse/pull/100255) ([timothygk](https://github.com/timothygk)).
* Algunos cambios menores en las funciones: las funciones h3 ahora validan mejor los límites; readWKB comprueba los límites de tamaño (una nueva configuración, `max_wkb_geometry_elements`); las funciones del generador aleatorio limitan el número máximo de iteraciones en sus cálculos. Como seguimiento de [#93543](https://github.com/ClickHouse/ClickHouse/issues/93543). [#100270](https://github.com/ClickHouse/ClickHouse/pull/100270) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un problema por el que cutURLParameter podía omitir parámetros por error cuando aparecían como subcadenas de otros parámetros. [#100280](https://github.com/ClickHouse/ClickHouse/pull/100280) ([Nikita Semenov](https://github.com/leftmain)).
* Se corrige una excepción cuando la configuración de la ruta del archivo de metadata de Iceberg contiene un byte nulo. [#100283](https://github.com/ClickHouse/ClickHouse/pull/100283) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió el crecimiento cuadrático del número de consultas ejecutadas cuando se usa `distributed_index_analysis` con predicados que contienen subconsultas `IN`. [#100287](https://github.com/ClickHouse/ClickHouse/pull/100287) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige la excepción "Block structure mismatch" al usar `GROUP BY ... WITH TOTALS HAVING` en combinación con `UNION DISTINCT` y expresiones Nullable. [#100293](https://github.com/ClickHouse/ClickHouse/pull/100293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción LOGICAL\_ERROR en `estimateCompressionRatio` cuando el parámetro `block_size_bytes` es extremadamente grande. [#100298](https://github.com/ClickHouse/ClickHouse/pull/100298) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción "Inconsistent AST formatting" en compilaciones de depuración al usar `GROUP BY CUBE(...) WITH ROLLUP` o combinaciones similares. [#100376](https://github.com/ClickHouse/ClickHouse/pull/100376) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una excepción al crear una vista con alias de columnas y consultas `SELECT *` o `EXCEPT`/`INTERSECT`. [#100386](https://github.com/ClickHouse/ClickHouse/pull/100386) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Soluciona que `DROP TABLE` se quede bloqueado indefinidamente en tablas con motor Kafka cuando los consumidores se quedan atascados en un rebalance tras un error de heartbeat. [#100388](https://github.com/ClickHouse/ClickHouse/pull/100388) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción `ReadBuffer is canceled. Can't read from it.` en las operaciones de copia de seguridad y restauración que usan archivos ZIP. [#100400](https://github.com/ClickHouse/ClickHouse/pull/100400) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción `TOO_MANY_ROWS` en consultas `SELECT count()` con `max_rows_to_read` / `force_primary_key` cuando los datos están repartidos en varias partes con límites de gránulo no alineados. [#100408](https://github.com/ClickHouse/ClickHouse/pull/100408) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige `system.completions` para filtrar correctamente bases de datos, tablas y columnas según los derechos de acceso en todas las combinaciones de permisos: por tabla, por base de datos y con revocación por columna. [#100432](https://github.com/ClickHouse/ClickHouse/pull/100432) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrige un SEGFAULT en NuRaft debido a una condición de carrera. [#100444](https://github.com/ClickHouse/ClickHouse/pull/100444) ([Pablo Marcos](https://github.com/pamarcos)).
* `min`/`max`/`argMin`/`argMax` ahora tratan los NaN de forma coherente con `ORDER BY`: los NaN siempre se omiten (solo se devuelven cuando todos los valores son NaN). Antes, los resultados dependían de la posición de los NaN en los datos debido a la semántica de comparación no ordenada de IEEE 754. [#100448](https://github.com/ClickHouse/ClickHouse/pull/100448) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió un error de copiar y pegar por el que `delta_lake_snapshot_end_version`, cuando se establecía sin `delta_lake_snapshot_start_version`, se ignoraba silenciosamente en lugar de generar un error `BAD_ARGUMENTS`. [#100454](https://github.com/ClickHouse/ClickHouse/pull/100454) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* `StorageRabbitMQ::shutdown` no es idempotente (accede incondicionalmente a punteros débiles y luego destruye los punteros compartidos correspondientes), pero ahora se invoca dos veces: una vez en `StreamingStorageRegistry` y después en `DatabaseCatalog`. Esta corrección hace que el método sea idempotente y añade comprobaciones defensivas de valores nulos. [#100455](https://github.com/ClickHouse/ClickHouse/pull/100455) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrigió la excepción `LOGICAL_ERROR` al usar `accurateCastOrNull` con el tipo de destino `QBit`. [#100470](https://github.com/ClickHouse/ClickHouse/pull/100470) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se corrigió la excepción LOGICAL\_ERROR "Stream ... not found" al insertar en una tabla con columnas `Array(JSON)` anidadas en partes wide con `optimize_on_insert=0`. [#100475](https://github.com/ClickHouse/ClickHouse/pull/100475) ([Pavel Kruglov](https://github.com/Avogar)).
* Validar las rutas de las entradas de archivo en los metadatos de la copia de seguridad para rechazar secuencias de path traversal, rutas absolutas y nombres vacíos durante `RESTORE`. [#100483](https://github.com/ClickHouse/ClickHouse/pull/100483) ([Pablo Marcos](https://github.com/pamarcos)).
* Se corrige un problema por el que la sintaxis `LIMIT m OFFSET n WITH TIES` no funcionaba. Esta sintaxis es equivalente a `LIMIT n, m WITH TIES`, que ya funcionaba. [#100491](https://github.com/ClickHouse/ClickHouse/pull/100491) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrige la excepción "No set is registered for key" al usar `IN` con columnas `Nullable(Tuple)` que tienen campos con nombre y elementos `LowCardinality`. [#100523](https://github.com/ClickHouse/ClickHouse/pull/100523) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un desbordamiento de búfer en el montón en usearch `sorted_buffer_gt::insert()` que podía provocar un cierre inesperado o corromper silenciosamente la memoria durante la búsqueda por similitud vectorial. [#100537](https://github.com/ClickHouse/ClickHouse/pull/100537) ([Dustin Healy](https://github.com/dustinhealy)).
* Se corrigió un problema por el que `EXECUTE AS` ignoraba las cláusulas `FORMAT` e `INTO OUTFILE` especificadas en la consulta. [#100538](https://github.com/ClickHouse/ClickHouse/pull/100538) ([pufit](https://github.com/pufit)).
* Corrige la inconsistencia en el formato del AST para SAMPLE con OFFSET a nivel de consulta. Cierra [#100576](https://github.com/ClickHouse/ClickHouse/issues/100576). [#100579](https://github.com/ClickHouse/ClickHouse/pull/100579) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige el catálogo Polaris en Azure. Desde la versión 25.12, este catálogo en Azure empezó a añadir el bucket al principio de la ruta. Por ejemplo, `abfss://polaris-polaris@<some_url>.windows.net/polaris-polaris/<other-path>` en lugar de `abfss://polaris-polaris@<some_url>.windows.net/<other-path>`. Este PR elimina el bucket de la ruta. [#100583](https://github.com/ClickHouse/ClickHouse/pull/100583) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige la excepción por incompatibilidad de tipos en transform cuando la columna por defecto es const en algunos bloques. Cierra [#100574](https://github.com/ClickHouse/ClickHouse/issues/100574). [#100616](https://github.com/ClickHouse/ClickHouse/pull/100616) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige los casos de NOT\_FOUND\_COLUMN\_IN\_BLOCK en los que la parte SELECT de la proyección contiene columnas que no existen en la parte SELECT original de la consulta. Cierra [#100194](https://github.com/ClickHouse/ClickHouse/issues/100194). [#100623](https://github.com/ClickHouse/ClickHouse/pull/100623) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Validar las dimensiones de la forma del formato Npy frente al tamaño del archivo y los límites de desbordamiento para evitar ataques de denegación de servicio mediante archivos `.npy` especialmente diseñados con dimensiones desmesuradamente grandes. También se rechazan las formas vacías y se limita la memoria por fila a 2 GiB. [#100625](https://github.com/ClickHouse/ClickHouse/pull/100625) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige un problema por el que se ignoraba `session_timezone` al analizar valores `DateTime` durante las inserciones asíncronas (TCP) y todas las inserciones a través de HTTP. [#100647](https://github.com/ClickHouse/ClickHouse/pull/100647) ([Sema Checherinda](https://github.com/CheSema)).
* Permitir pasar la clave de segmentación a las funciones de tabla `cluster()` y `clusterAllReplicas()` al usar una función de tabla como fuente (p. ej., `cluster('name', view(...), sharding_key)`). [#100665](https://github.com/ClickHouse/ClickHouse/pull/100665) ([Sergey Veletskiy](https://github.com/velom)).
* Se corrige un cierre inesperado del servidor (fallo de aserción) al usar funciones de agregación paramétricas con el combinador Array y argumentos NULL, como `quantileIfArrayArray(0.5)([[NULL]], [[1]])`. [#100679](https://github.com/ClickHouse/ClickHouse/pull/100679) ([nerve-bot](https://github.com/nerve-bot)).
* Corrige la excepción al calcular el supertipo común para tuplas vacías y no vacías con `use_variant_as_common_type` activado. [#100699](https://github.com/ClickHouse/ClickHouse/pull/100699) ([Antonio Andelic](https://github.com/antonio2368)).
* El servidor ya no deja de iniciarse cuando se configura un disco de Azure blob storage, pero el endpoint no está accesible temporalmente (p. ej., por un fallo de DNS). [#100701](https://github.com/ClickHouse/ClickHouse/pull/100701) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió el comportamiento indefinido en `positiveModulo` cuando el divisor sin signo no cabe en el tipo de resultado con signo. [#100705](https://github.com/ClickHouse/ClickHouse/pull/100705) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige el cierre inesperado del servidor (error lógico "tipo de retorno inesperado de \_\_topKFilter") cuando `use_top_k_dynamic_filtering` está habilitado y la columna de `ORDER BY` es de tipo `Dynamic` o `Variant`. [#100742](https://github.com/ClickHouse/ClickHouse/pull/100742) ([Groene AI](https://github.com/groeneai)).
* Corrige un fallo del servidor al usar la función `has()` con PREWHERE/WHERE en una clave Tuple que contiene elementos LowCardinality. [#100760](https://github.com/ClickHouse/ClickHouse/pull/100760) ([Groene AI](https://github.com/groeneai)).
* Se corrige el error de aserción `file_offset_of_buffer_end <= getFileSize()` (excepción en compilaciones de depuración) al leer tablas `Log` o `StripeLog` en almacenamiento de objetos S3 con escrituras concurrentes. [#100763](https://github.com/ClickHouse/ClickHouse/pull/100763) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una excepción en el estimador de selectividad de estadísticas cuando una cláusula WHERE incluye una expresión de función (p. ej., toDecimal64(col, 3)) en una tabla con estadísticas activadas. Ahora, el estimador omite esos predicados en lugar de intentar una conversión de tipos no válida. [#100764](https://github.com/ClickHouse/ClickHouse/pull/100764) ([Han Fei](https://github.com/hanfei1991)).
* Corrige un caso poco frecuente en el que un join con reordenación puede dar un resultado incorrecto. [#100790](https://github.com/ClickHouse/ClickHouse/pull/100790) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige los tipos incorrectos de los argumentos de `AggregateFunction` en el conteo trivial optimizado, lo que provocaba la excepción `NUMBER_OF_ARGUMENTS_DOESNT_MATCH` al consultar expresiones como `count(v0 + v1)` en tablas distribuidas. [#100794](https://github.com/ClickHouse/ClickHouse/pull/100794) ([YjyJeff](https://github.com/YjyJeff)).
* Algunos catálogos pueden mostrar secretos en la sección `SETTINGS` del resultado de la consulta `select * from system.databases`. Este PR evita ese comportamiento. [#100800](https://github.com/ClickHouse/ClickHouse/pull/100800) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige el comportamiento indefinido (desbordamiento de enteros con signo) en `toStartOfInterval` al usar intervalos de Week, Quarter o Year con el argumento `origin` y valores extremos del intervalo. [#100817](https://github.com/ClickHouse/ClickHouse/pull/100817) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigen los combinadores de funciones de agregación `If`, `Distinct`, `DistinctIf`, `IfState ` con tipo de retorno `Tuple` y uno o más argumentos `Nullable`, que no podían leer estados serializados antiguos tras la introducción de `Nullable(Tuple)`. Cierra [#98917](https://github.com/ClickHouse/ClickHouse/issues/98917). [#100826](https://github.com/ClickHouse/ClickHouse/pull/100826) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrige un segfault en s3Cluster y en las consultas distribuidas debido a un use-after-free en el pool de conexiones. [#100837](https://github.com/ClickHouse/ClickHouse/pull/100837) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se corrige un segfault por desreferenciación de puntero nulo al cargar diccionarios durante el apagado del servidor. `Context::getUserDefinedSQLObjectsStorage` (desreferencia `user_defined_sql_objects_storage`) es invocado por los hilos de diccionario de forma concurrente mientras el hilo principal llama a `Context::shutdown` (establece `user_defined_sql_objects_storage` en null). Debemos asegurarnos de deshabilitar futuras actualizaciones en el cargador de diccionarios, terminar las consultas de diccionario que se estén ejecutando en ese momento y esperar a que finalicen los hilos de carga de diccionarios, todo ello antes de ejecutar `Context::shutdown`. De forma similar a lo que hacemos con las consultas normales. [#100839](https://github.com/ClickHouse/ClickHouse/pull/100839) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrigió el desbordamiento de búfer en `ULIDStringToDateTime` cuando la entrada contiene bytes no ASCII. [#100843](https://github.com/ClickHouse/ClickHouse/pull/100843) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Corregido un cierre inesperado (`LOGICAL_ERROR`) al consultar una tabla `Merge` (o la table function `merge()`) que engloba varias tablas, incluida una tabla `Distributed`, con `distributed_group_by_no_merge=1` activado. [#100859](https://github.com/ClickHouse/ClickHouse/pull/100859) ([Groene AI](https://github.com/groeneai)).
* Cast\_keep\_nullable, cuando está habilitado, no lanzará una excepción al convertir un NULL de Dynamic a Variant. [#100864](https://github.com/ClickHouse/ClickHouse/pull/100864) ([Seva Potapov](https://github.com/seva-potapov)).
* Se corrige un problema por el que los comandos `clickhouse-keeper-client` `get`, `exists` y `ls` imprimían mensajes de error duplicados de `watch_id` en stdout en lugar de stderr. [#100893](https://github.com/ClickHouse/ClickHouse/pull/100893) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* Corrige una excepción en `intDiv`/`intDivOrZero` en arrays de tuplas Nullable, p. ej., `SELECT intDiv([divide((1, 2), ... AND NULL)], 2)`. [#100895](https://github.com/ClickHouse/ClickHouse/pull/100895) ([Raúl Marín](https://github.com/Algunenano)).
* Evaluar los argumentos del motor de `StorageAlias` antes de almacenar la definición, para que expresiones como `currentDatabase()` se resuelvan como literales antes de guardarse en la base de datos. [#100902](https://github.com/ClickHouse/ClickHouse/pull/100902) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se corrige `processAndOptimizeTextIndexFunctions` cuando `query_plan_merge_expressions = 0`, donde `ExpressionStep` está directamente sobre `ReadFromMergeTree`. Corrige [#100879](https://github.com/ClickHouse/ClickHouse/issues/100879). [#100909](https://github.com/ClickHouse/ClickHouse/pull/100909) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Se actualizó replxx para incluir la corrección de un acceso fuera de límites en do\_complete\_line. [#100925](https://github.com/ClickHouse/ClickHouse/pull/100925) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigen resultados incorrectos cuando un JOIN con la optimización de segmento por PK usa la caché de condiciones de consulta y algunas partes quedan filtradas por condiciones en caché. [#100926](https://github.com/ClickHouse/ClickHouse/pull/100926) ([Groene AI](https://github.com/groeneai)).
* Se corrigió que `divide` e `intDiv` devolvieran `ILLEGAL_DIVISION` en algunos casos al usarse en expresiones de filtro durante el análisis de índices. [#100928](https://github.com/ClickHouse/ClickHouse/pull/100928) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigieron los errores "La tabla de destino no existe" en las vistas materializadas con tablas internas durante el arranque asíncrono, causados por un orden incorrecto de las dependencias de inicio. [#100946](https://github.com/ClickHouse/ClickHouse/pull/100946) ([Nikolay Degterinsky](https://github.com/evillique)).
* Corrige el comportamiento indefinido (desbordamiento de enteros con signo) en parseDateTimeBestEffort al parsear cadenas de fecha y hora con más de 18 dígitos fraccionarios de segundo. [#100948](https://github.com/ClickHouse/ClickHouse/pull/100948) ([Vasily Chekalkin](https://github.com/bacek)).
* Se corrigió un fallo al usar un índice de búsqueda de texto con una cláusula `IN` que contiene una subconsulta de tipo Tuple, por ejemplo, `WHERE (id, str) IN (SELECT (id, str) FROM ...)`, o cuando el número de columnas de la subconsulta no coincide con el de la tupla del lado izquierdo de `IN`. [#100959](https://github.com/ClickHouse/ClickHouse/pull/100959) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrigió un fallo al crear un diccionario de polígonos a partir de una tabla `MergeTree` que utiliza serialización dispersa de columnas. [#100964](https://github.com/ClickHouse/ClickHouse/pull/100964) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrige el error lógico "nodo de acción del árbol de consulta no válido" al usar `INTERSECT ALL` / `UNION ALL` con expresiones reducidas a constantes. [#100977](https://github.com/ClickHouse/ClickHouse/pull/100977) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un problema que impedía que la función de agregación `sumCountOrDefault` con uno o más argumentos `Nullable` leyera estados serializados antiguos tras la introducción de `Nullable(Tuple)`. Cierra [#100882](https://github.com/ClickHouse/ClickHouse/issues/100882). [#101021](https://github.com/ClickHouse/ClickHouse/pull/101021) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrige un cierre inesperado (`Logical error: isConst/isSparse/isReplicated assertTypeEquality`) en los algoritmos de merge cuando la replicación diferida de columnas (`enable_lazy_columns_replication`) genera columnas `ColumnReplicated` que pasan a canalizaciones de merge-sort con entradas que llegan tarde. [#101036](https://github.com/ClickHouse/ClickHouse/pull/101036) ([Groene AI](https://github.com/groeneai)).
* Se corrige el error incorrecto `UNKNOWN_IDENTIFIER` cuando se usa el mismo alias para varias expresiones en `SELECT`; ahora se muestra el error correcto `MULTIPLE_EXPRESSIONS_FOR_ALIAS`. [#101040](https://github.com/ClickHouse/ClickHouse/pull/101040) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrección de las columnas ALIAS con tipos `DateTime`/`DateTime64` que no aplicaban la conversión de zona horaria cuando la zona horaria declarada difiere de la de la expresión. [#101043](https://github.com/ClickHouse/ClickHouse/pull/101043) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige que las políticas de fila no se registraran en `query_log` para vistas, subconsultas e `INSERT ... SELECT`. Aunque las políticas de fila se aplicaban durante la planificación de la consulta, no se propagaban de los subplanificadores al planificador principal para su registro. Las políticas de fila (solo para el registro) ahora se mantienen en `QueryAccessInfo` para que tanto los planificadores como los subplanificadores puedan poblarlas. [#101044](https://github.com/ClickHouse/ClickHouse/pull/101044) ([Narasimha Pakeer](https://github.com/npakeer)).
* Se corrige una excepción en `DirectJoinMergeTreeEntity` cuando los bloques del pipeline contienen columnas `ColumnConst` que se combinan con columnas normales. [#101046](https://github.com/ClickHouse/ClickHouse/pull/101046) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un espacio innecesario en el formato del alias de columna en la CTE (`WITH t (a, b)` → `WITH t(a, b)`). [#101049](https://github.com/ClickHouse/ClickHouse/pull/101049) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron las funciones de tabla `remote`/`cluster` que fallaban con funciones de tabla anidadas como `merge` cuando el analizador está habilitado. [#101055](https://github.com/ClickHouse/ClickHouse/pull/101055) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un problema por el que `OFFSET` se aplicaba dos veces en consultas distribuidas cuando `prefer_localhost_replica=1`, lo que producía menos filas de las esperadas. [#101071](https://github.com/ClickHouse/ClickHouse/pull/101071) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigió un fallo al usar el formato `Regexp` con una expresión regular no válida en la configuración `format_regexp`. [#101074](https://github.com/ClickHouse/ClickHouse/pull/101074) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige el error "Illegal type Decimal64 of start parameter" en las funciones de agregación de series temporales al usar `serialize_query_plan=1` con réplicas paralelas. [#101083](https://github.com/ClickHouse/ClickHouse/pull/101083) ([Groene AI](https://github.com/groeneai)).
* Se corrige una excepción en `optimizeLazyMaterialization` cuando se utiliza una proyección con PREWHERE junto con `ORDER BY ... LIMIT`. [#101115](https://github.com/ClickHouse/ClickHouse/pull/101115) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrige el fallo del servidor (SIGABRT) al usar funciones de agregación con el combinador `Null` de uso exclusivamente interno (p. ej., `sumNull`, `avgNull`) y con la configuración `aggregate_functions_null_for_empty = 1` habilitada. [#101147](https://github.com/ClickHouse/ClickHouse/pull/101147) ([Groene AI](https://github.com/groeneai)).
* Corrige un uso de memoria después de liberarla en la ruta de escritura de la caché del sistema de archivos que podía provocar lecturas de memoria ya liberada al registrar segmentos de archivo completados (detectado por MemorySanitizer en BuzzHouse). [#101161](https://github.com/ClickHouse/ClickHouse/pull/101161) ([Groene AI](https://github.com/groeneai)).
* Se corrige un cierre inesperado del servidor con "Intento de adjuntar una tabla externa a un Set listo sin elementos explícitos" cuando el análisis distribuido de índices encuentra un predicado GLOBAL IN cuyo Set se creó sin elementos explícitos. [#101178](https://github.com/ClickHouse/ClickHouse/pull/101178) ([Groene AI](https://github.com/groeneai)).
* Se corrigen las funciones de agregación `MAX`/`MIN` en columnas `Decimal` que devolvían resultados incorrectos cuando la compilación JIT está activada (tras alcanzar el umbral de compilación). [#101203](https://github.com/ClickHouse/ClickHouse/pull/101203) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigen las optimizaciones de `minmax_count_projection` y las optimizaciones triviales de `COUNT(*)`, que quedaban deshabilitadas de forma permanente después de una eliminación ligera, incluso tras haberse fusionado todas las partes con una máscara de eliminación ligera. [#101212](https://github.com/ClickHouse/ClickHouse/pull/101212) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige un caso que podía provocar el error lógico `Having zero bytes, ...` en la caché cuando se sobrescribía un objeto remoto entre `list` y `read`, lo que antes daba lugar a metadatos de objeto obsoletos. [#101219](https://github.com/ClickHouse/ClickHouse/pull/101219) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrige un cierre inesperado del servidor (LOGICAL\_ERROR: Bad cast from ColumnVector to ColumnLowCardinality) al consultar una tabla MergeTree con `ORDER BY CAST(lc_column, 'Type')`, donde `lc_column` tiene el tipo LowCardinality. [#101220](https://github.com/ClickHouse/ClickHouse/pull/101220) ([Groene AI](https://github.com/groeneai)).
* Se corrige la limpieza de los nodos de procesamiento obsoletos en `S3Queue`. [#101230](https://github.com/ClickHouse/ClickHouse/pull/101230) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrigió el UB en mergeTreeAnalyzeIndexes() cuando el argumento optimizations no es válido. [#101253](https://github.com/ClickHouse/ClickHouse/pull/101253) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige la excepción `Logical error: 'partitions_count > 0'` al realizar operaciones consecutivas de `ALTER TABLE UPDATE` en una tabla Iceberg particionada. [#101278](https://github.com/ClickHouse/ClickHouse/pull/101278) ([Desel72](https://github.com/Desel72)).
* Corrige resultados erróneos en consultas cuando se usa una constante entera grande (p. ej., 256, 2147483648) como predicado booleano en una cláusula WHERE con AND sobre tablas MergeTree. Por ejemplo, `SELECT count() FROM t WHERE (2147483648 > b) AND 2147483648` devolvía incorrectamente 0 en lugar de coincidir con todas las filas. [#101287](https://github.com/ClickHouse/ClickHouse/pull/101287) ([Groene AI](https://github.com/groeneai)).
* Se corrige el INSERT SELECT desde un clúster de Delta Lake con ReplicatedMergeTree. [#101299](https://github.com/ClickHouse/ClickHouse/pull/101299) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se corrigió un fallo que provocaba un cierre inesperado con "Error lógico: lectura desde una CTE materializada antes de la materialización" cuando una subconsulta escalar hace referencia a una cadena de CTE materializadas dependientes entre sí. [#101305](https://github.com/ClickHouse/ClickHouse/pull/101305) ([Groene AI](https://github.com/groeneai)).
* Se corrige una condición de carrera en los datos de `storage_id` en `IStorage::getDependentViewsByColumn`. [#101385](https://github.com/ClickHouse/ClickHouse/pull/101385) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se corrigen el formato y la clonación del AST de BACKUP FROM SNAPSHOT. [#101405](https://github.com/ClickHouse/ClickHouse/pull/101405) ([Pablo Marcos](https://github.com/pamarcos)).
* Se corrige el cierre inesperado por LOGICAL\_ERROR "Current component is empty" al consultar `system.part_moves_between_shards` con `enforce_keeper_component_tracking` habilitado. [#101462](https://github.com/ClickHouse/ClickHouse/pull/101462) ([Groene AI](https://github.com/groeneai)).
* Se corrigió un fallo de segmentación en DataTypeDynamic::create() cuando el fuzzer genera un AST malformado del tipo Dynamic. [#101464](https://github.com/ClickHouse/ClickHouse/pull/101464) ([Groene AI](https://github.com/groeneai)).
* Genera un error cuando se usan la configuración `delta_lake_snapshot_version` o la configuración de versión de CDF sin DeltaKernel habilitado, en lugar de devolver datos incorrectos en silencio. [#101489](https://github.com/ClickHouse/ClickHouse/pull/101489) ([Desel72](https://github.com/Desel72)).
* Se corrige la excepción `NOT_FOUND_COLUMN_IN_BLOCK` al usar ARRAY JOIN con JOIN USING y con la configuración `analyzer_compatibility_join_using_top_level_identifier` habilitada. Cierra [#101240](https://github.com/ClickHouse/ClickHouse/issues/101240). [#101507](https://github.com/ClickHouse/ClickHouse/pull/101507) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigió el fallo en el bucle de reintento de INSERT de Iceberg cuando la tabla se había creado con `iceberg_metadata_file_path` y la versión de metadatos de destino ya existía. [#101548](https://github.com/ClickHouse/ClickHouse/pull/101548) ([Groene AI](https://github.com/groeneai)).
* Eliminar Nullable de la columna de resultados en arrayIntersect y funciones relacionadas para evitar discrepancias en la serialización/deserialización. [#101569](https://github.com/ClickHouse/ClickHouse/pull/101569) ([George Larionov](https://github.com/george-larionov)).
* Se corrige un cierre inesperado del servidor (LOGICAL\_ERROR) al hacer SELECT desde una vista materializada basada en una tabla con engine IcebergLocal. [#101577](https://github.com/ClickHouse/ClickHouse/pull/101577) ([Groene AI](https://github.com/groeneai)).
* Se corrige un mensaje de error incorrecto al llamar a `intExp10` con un argumento NaN: mostraba `intExp2` en lugar de `intExp10`. [#101582](https://github.com/ClickHouse/ClickHouse/pull/101582) ([Krishna Chaitanya](https://github.com/Krishnachaitanyakc)).
* Se corrige un problema por el que `allow_statistics=0` no bloqueaba `ALTER TABLE ADD STATISTICS` ni `ALTER TABLE DROP STATISTICS` tras la refactorización en [#100288](https://github.com/ClickHouse/ClickHouse/issues/100288). [#101585](https://github.com/ClickHouse/ClickHouse/pull/101585) ([Krishna Chaitanya](https://github.com/Krishnachaitanyakc)).
* Se corrige el error por el que `KeeperMap` `CREATE TABLE` fallaba con "Cannot create metadata for table" cuando en nodos de ZooKeeper remanentes de un `drop` parcial anterior a la versión 25.1 faltaba el nodo `drop_lock_version`. [#101623](https://github.com/ClickHouse/ClickHouse/pull/101623) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige un posible error lógico al leer las subcolumnas de Map. Cierra [#100769](https://github.com/ClickHouse/ClickHouse/issues/100769). Cierra [#101336](https://github.com/ClickHouse/ClickHouse/issues/101336). [#101641](https://github.com/ClickHouse/ClickHouse/pull/101641) ([Pavel Kruglov](https://github.com/Avogar)).
* Da prioridad a la coincidencia exacta de la subcolumna frente a la coincidencia por prefijo en `getSubcolumnData` para evitar un posible fallo. Cierra [#101271](https://github.com/ClickHouse/ClickHouse/issues/101271). [#101645](https://github.com/ClickHouse/ClickHouse/pull/101645) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige un fallo (LOGICAL\_ERROR: "ColumnUnique can't contain null values") al comparar una columna `LowCardinality` con una constante NULL de `Variant` mientras `use_variant_default_implementation_for_comparisons` está deshabilitado. [#101690](https://github.com/ClickHouse/ClickHouse/pull/101690) ([Groene AI](https://github.com/groeneai)).
* Qué: Se añadió una comprobación de flujo vacío a Bzip2ReadBuffer para que devuelva EOF en lugar de lanzar UNEXPECTED\_END\_OF\_FILE cuando el flujo interno está vacío. [#101691](https://github.com/ClickHouse/ClickHouse/pull/101691) ([ClickGap AI Bot](https://github.com/clickgapai)).
* Qué: Se corrigió la descripción invertida de la columna `alterable` en `system.s3_queue_settings` y `system.azure_queue_settings`: se intercambiaron los significados de `0` y `1` para que coincidan con el comportamiento real del código. [#101703](https://github.com/ClickHouse/ClickHouse/pull/101703) ([ClickGap AI Bot](https://github.com/clickgapai)).
* Se corrige un error por el que positiveModulo(tuple, number) se derivaba incorrectamente a la división en lugar de al módulo. [#101709](https://github.com/ClickHouse/ClickHouse/pull/101709) ([ClickGap AI Bot](https://github.com/clickgapai)).
* Corrige un fallo al configurar `thread_pool_size` en un disco con caché. Anteriormente, `FileCacheSettings::loadFromConfig()` rechazaba `thread_pool_size` como una configuración desconocida, lo que impedía que el servidor arrancara. Esta configuración es un parámetro válido de `IDisk` que controla la cantidad de hilos usados en operaciones de copia de disco a disco durante los movimientos de partes en segundo plano. [#101712](https://github.com/ClickHouse/ClickHouse/pull/101712) ([Francisco](https://github.com/Milias)).
* Se corrigió la creación de diccionarios `RANGE_HASHED`, que aceptaba silenciosamente un atributo de rango `MAX` inexistente y usaba una configuración de tipos incorrecta cuando los atributos de rango mínimo y máximo tenían tipos distintos. El error se debía a un fallo de copiar y pegar en `buildRangeConfiguration`, que buscaba `min_attr_name` en lugar de `max_attr_name` para el atributo máximo. [#101732](https://github.com/ClickHouse/ClickHouse/pull/101732) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Se corrige un fallo de acceso a memoria liberada en el planificador de concesión de CPU cuando el temporizador de espera sobrevive al hilo de trabajo cuyos `ProfileEvents::Counters` referencia. [#101761](https://github.com/ClickHouse/ClickHouse/pull/101761) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige un error en las funciones arrayLevenshteinDistanceWeighted y arraySimilarity. Cierra el [issue #101725](https://github.com/ClickHouse/ClickHouse/issues/101725). [#101767](https://github.com/ClickHouse/ClickHouse/pull/101767) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Se corrige un problema por el que la API de consulta de Prometheus ignoraba los cuerpos de formulario en POST. [#101794](https://github.com/ClickHouse/ClickHouse/pull/101794) ([James Cunningham](https://github.com/JTCunning)).
* Se corrigió el escape de excepciones desde el destructor `Client::~Client` de S3 que provocaba el cierre del servidor. [#101798](https://github.com/ClickHouse/ClickHouse/pull/101798) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
* Corrige un use-after-scope en la deserialización en paralelo de rutas dinámicas del tipo `Object`, que podía provocar bloqueos al leer tablas con muchas rutas dinámicas. [#101823](https://github.com/ClickHouse/ClickHouse/pull/101823) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrigió una salida incorrecta de la función `formatDateTime` con el formateador `%W` bajo ciertas configuraciones de formato (no predeterminadas). [#101847](https://github.com/ClickHouse/ClickHouse/pull/101847) ([Robert Schulze](https://github.com/rschu1ze)).
* Se corrigió el falso negativo de `shouldPatchFunction` en `SYSTEM INSTRUMENT ADD` cuando la cadena de búsqueda aparece por primera vez dentro de un argumento de plantilla del nombre de símbolo desdemangleado. [#101885](https://github.com/ClickHouse/ClickHouse/pull/101885) ([Pablo Marcos](https://github.com/pamarcos)).
* Se corrigió la pérdida del registro de UDF cuando la sesión de ZooKeeper expiraba durante una actualización periódica; todas las funciones definidas por el usuario podían quedar no disponibles hasta que una actualización completa se realizara correctamente. [#101891](https://github.com/ClickHouse/ClickHouse/pull/101891) ([Nikita Fomichev](https://github.com/fm4v)).
* Se corrigió la descripción de `system.codecs` de `AES_256_GCM_SIV` para que indicara `AES-256` en lugar de `AES-128`. [#101917](https://github.com/ClickHouse/ClickHouse/pull/101917) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Se corrige un problema por el que se usaban extremos incorrectos en un índice min-max creado sobre una columna JSON, lo que provocaba un resultado de consulta incorrecto. Cierra [#101700](https://github.com/ClickHouse/ClickHouse/issues/101700). [#101918](https://github.com/ClickHouse/ClickHouse/pull/101918) ([Pavel Kruglov](https://github.com/Avogar)).
* El tokenizador `splitByString` ahora rechaza las cadenas separadoras vacías. [#101928](https://github.com/ClickHouse/ClickHouse/pull/101928) ([Robert Schulze](https://github.com/rschu1ze)).
* Se corrigió un problema por el que `materialize_skip_indexes_on_merge=false` no suprimía los índices de texto (de texto completo) durante la fusión. Anteriormente, solo se suprimían los índices de omisión no textuales (minmax, set, bloom\_filter); los índices de texto seguían generándose, lo que desperdiciaba CPU y E/S. [#101932](https://github.com/ClickHouse/ClickHouse/pull/101932) ([Groene AI](https://github.com/groeneai)).
* El tokenizador `sparseGrams` generó tokens más largos que la longitud máxima especificada (esto se debía a un `+2` codificado de forma fija en la implementación). [#101934](https://github.com/ClickHouse/ClickHouse/pull/101934) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Se corrigió SIGSEGV en `MergeTreeDataPartWriterWide::cancel` cuando un constructor de flujo lanza una excepción durante `addStreams`, dejando una entrada nula en `column_streams`. [#101936](https://github.com/ClickHouse/ClickHouse/pull/101936) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige una excepción al consultar tablas Merge o Distributed con un índice de texto completo y condiciones de filtro combinadas que mezclan `has*Tokens` con LIKE cuando `query_plan_direct_read_from_text_index` está habilitado. [#101939](https://github.com/ClickHouse/ClickHouse/pull/101939) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Se corrige un comportamiento indefinido al analizar paquetes de consulta del protocolo nativo con valores de `QueryProcessingStage` no válidos. [#101972](https://github.com/ClickHouse/ClickHouse/pull/101972) ([Raúl Marín](https://github.com/Algunenano)).
* Cerrar la conexión TCP cuando se produzca una excepción durante el análisis inicial de la consulta para evitar leer datos basura de un flujo desincronizado. [#101989](https://github.com/ClickHouse/ClickHouse/pull/101989) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige una condición de carrera de SLRU en la caché del sistema de archivos 26.1+, que puede provocar un error lógico en la reserva de espacio. En una compilación de depuración, también puede causar un fallo de aserción: `'Previous state is Evicting, but expected state to be Active while setting Evicting flag for 2c1e3484ecdc6b78a8978fa5b17c5097:0:339 (state: Evicting)'.`. [#101991](https://github.com/ClickHouse/ClickHouse/pull/101991) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrige una excepción al convertir una cadena con datos sobrantes al tipo `Tuple()` vacío. [#102011](https://github.com/ClickHouse/ClickHouse/pull/102011) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige el orden incorrecto de las filas en las consultas que usan ORDER BY con el algoritmo de join grace\_hash. Las consultas afectadas podían devolver resultados en un orden incorrecto, lo que producía una salida incorrecta sin que se advirtiera. [#102036](https://github.com/ClickHouse/ClickHouse/pull/102036) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Corrige un ERROR LÓGICO (Tamaño inesperado del tipo de índice) que podía producirse en consultas RIGHT JOIN y FULL JOIN cuando se había configurado el ajuste `max_bytes_in_join`. [#102042](https://github.com/ClickHouse/ClickHouse/pull/102042) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Corrige los casos en los que Time con valores negativos devolvía resultados incorrectos al compararse con DateTime. Cierra [#101670](https://github.com/ClickHouse/ClickHouse/issues/101670). [#102056](https://github.com/ClickHouse/ClickHouse/pull/102056) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrige un crash en la actualización de UDF causado por `ZooKeeperRetriesControl`, que reintentaba sobre una sesión de ZooKeeper obsoleta (caducada) sin renovarla. [#102059](https://github.com/ClickHouse/ClickHouse/pull/102059) ([Nikita Fomichev](https://github.com/fm4v)).
* Corrige los espacios que faltaban al formatear `unlock snapshot`. cierra [https://github.com/clickhouse/clickhouse/issues/101723](https://github.com/clickhouse/clickhouse/issues/101723). [#102063](https://github.com/ClickHouse/ClickHouse/pull/102063) ([Han Fei](https://github.com/hanfei1991)).
* Se corrige un fallo (SIGSEGV) al consultar una vista con una cláusula WHERE cuando la consulta interna genera columnas con tipos distintos de los metadatos de la vista (p. ej., Nullable de LEFT JOIN con `join_use_nulls`). [#102085](https://github.com/ClickHouse/ClickHouse/pull/102085) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrigen las entradas de `VectorSimilarityIndexCache` que nunca se desalojaban al eliminar una parte debido a una discrepancia en las claves de la caché. [#102152](https://github.com/ClickHouse/ClickHouse/pull/102152) ([Seva Potapov](https://github.com/seva-potapov)).
* Hacer NACK de los mensajes defectuosos al usar almacenamiento de RabbitMQ. [#102157](https://github.com/ClickHouse/ClickHouse/pull/102157) ([Seva Potapov](https://github.com/seva-potapov)).
* Se corrige un error lógico al analizar una cadena incorrecta correspondiente a una tupla vacía. [#102289](https://github.com/ClickHouse/ClickHouse/pull/102289) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige resultados de agregación incorrectos (filas duplicadas) al usar `optimize_aggregation_in_order=1` con columnas de GROUP BY en un orden distinto al de la clave de ordenación de la tabla. [#102299](https://github.com/ClickHouse/ClickHouse/pull/102299) ([Groene AI](https://github.com/groeneai)).
* Se corrige un fallo en `IcebergLocal` `ALTER TABLE ... UPDATE` al usar el formato Avro, causado porque los tipos envoltorio `LowCardinality`/`Nullable` no se desenvolvían antes de la serialización. [#102337](https://github.com/ClickHouse/ClickHouse/pull/102337) ([Desel72](https://github.com/Desel72)).
* Se corrigió un fallo de segmentación en mutaciones sobre columnas materializadas sin expresión. Resuelve [#102185](https://github.com/ClickHouse/ClickHouse/issues/102185). [#102342](https://github.com/ClickHouse/ClickHouse/pull/102342) ([zoomxi](https://github.com/zoomxi)).
* Corrección en Coalescing merge tree para el tipo Array. Se cierra [#89509](https://github.com/ClickHouse/ClickHouse/issues/89509). [#102384](https://github.com/ClickHouse/ClickHouse/pull/102384) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se corrige un segfault (o `LOGICAL_ERROR` en compilaciones de depuración) al leer archivos Parquet con el push down del filtro bloom habilitado y condiciones de igualdad/desigualdad en la cláusula WHERE. El fallo se producía por un acceso a memoria fuera de límites durante la recuperación de datos del filtro bloom del prefetcher de Parquet, y también podía provocar resultados de consulta incorrectos y no deterministas. [#102385](https://github.com/ClickHouse/ClickHouse/pull/102385) ([Groene AI](https://github.com/groeneai)).
* Corrige el `LOGICAL_ERROR` que abortaba el redimensionamiento dinámico de la caché del sistema de archivos SLRU, causado por estadísticas de desalojo compartidas entre subcolas y una ruta de recuperación incorrecta para candidatos fallidos. [#102396](https://github.com/ClickHouse/ClickHouse/pull/102396) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige un fallo al inicializar tablas alias sin tabla de destino en una réplica nueva de la base de datos Replicated. Cierra [#101320](https://github.com/ClickHouse/ClickHouse/issues/101320). [#102397](https://github.com/ClickHouse/ClickHouse/pull/102397) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se corrige una lectura fuera de los límites en las funciones de búsqueda en cadenas (`countSubstrings`, `position`, etc.) al buscar una subcadena objetivo compuesta íntegramente por bytes nulos. [#102401](https://github.com/ClickHouse/ClickHouse/pull/102401) ([Raúl Marín](https://github.com/Algunenano)).
* Los ajustes de los índices de texto completo (`enable_full_text_index`, `allow_experimental_full_text_index`, `use_skip_indexes_on_data_read`) ya no se desactivan cuando la configuración `compatibility` apunta a una versión anterior a la 26.1. Antes, esto podía impedir que `SharedDatabaseCatalog` creara tablas con índices de texto. [#102422](https://github.com/ClickHouse/ClickHouse/pull/102422) ([Nikita Fomichev](https://github.com/fm4v)).
* Corregida una lectura fuera de límites en `printf` con un `%` al final. [#102472](https://github.com/ClickHouse/ClickHouse/pull/102472) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige una excepción de chassert `ReadBuffer is canceled` en compilaciones de depuración de AsynchronousMetrics, causada porque `rewind` no restablecía la marca de cancelación del búfer. [#102524](https://github.com/ClickHouse/ClickHouse/pull/102524) ([Yuri Fedoseev](https://github.com/yurifedoseev)).
* Se corrigió `hasToken` / `hasTokenOrNull` con cadenas de búsqueda formadas solo por separadores (p. ej., `'()'`, `'!!!'`) en columnas con un índice de texto: anteriormente, el índice omitía silenciosamente todos los gránulos en lugar de generar `BAD_ARGUMENTS` (para `hasToken`) o devolver `NULL` (para `hasTokenOrNull`). [#102544](https://github.com/ClickHouse/ClickHouse/pull/102544) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Soluciona OOM en solicitudes `multi` enormes en keeper. Para el tracing de OpenTelemetry, asignamos incondicionalmente >1 KiB a spans de OpenTelemetry en objetos `ZooKeeperRequest`; es decir, en solicitudes `multi` realmente enormes, intentamos asignar >10 GiB de memoria adicional. Para solucionarlo, ahora mantenemos los datos compartidos en memoria estática y usamos `std::unique_ptr` en lugar de `std::optional` en `ZooKeeperOpentelemetrySpans`. [#102586](https://github.com/ClickHouse/ClickHouse/pull/102586) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corregido el problema por el que `CurrentMetric` de `NamedCollection` se inflaba con `CREATE NAMED COLLECTION IF NOT EXISTS` en colecciones existentes, y no se inicializaba para las colecciones cargadas desde la configuración o el almacenamiento SQL al inicio. Cierra [#102507](https://github.com/ClickHouse/ClickHouse/issues/102507). [#102598](https://github.com/ClickHouse/ClickHouse/pull/102598) ([Pablo Marcos](https://github.com/pamarcos)).
* Se corrigió una excepción en `getStructureOfRemoteTable` cuando el segmento local devuelve columnas vacías debido a DDL concurrente. [#102604](https://github.com/ClickHouse/ClickHouse/pull/102604) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la excepción `LOGICAL_ERROR` cuando varias consultas simultáneas `CREATE TABLE IF NOT EXISTS` se dirigen a la misma tabla `S3Queue` en una base de datos Shared. [#102610](https://github.com/ClickHouse/ClickHouse/pull/102610) ([Nikita Taranov](https://github.com/nickitat)).
* Se corrige el fallo LOGICAL\_ERROR "Unexpected number of rows in column subchunk" en el lector nativo de Parquet V3 al leer columnas Nullable con un filtro WHERE. [#102628](https://github.com/ClickHouse/ClickHouse/pull/102628) ([Groene AI](https://github.com/groeneai)).
* Se corrigió la descripción del evento de perfil `AzureWriteMicroseconds`, que indicaba "read" en lugar de "write". [#102639](https://github.com/ClickHouse/ClickHouse/pull/102639) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Error en la política de filas que provoca la excepción 'Not found column in block' en algunos casos especiales. [#102648](https://github.com/ClickHouse/ClickHouse/pull/102648) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigió una excepción del servidor en ClusterDiscovery cuando un clúster estático (definido en la configuración) se quedaba temporalmente sin nodos activos. [#102661](https://github.com/ClickHouse/ClickHouse/pull/102661) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige una inferencia incorrecta del tipo de dato Date en caso de desbordamiento después del ajuste de la zona horaria. Cierra [#102601](https://github.com/ClickHouse/ClickHouse/issues/102601). [#102674](https://github.com/ClickHouse/ClickHouse/pull/102674) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige el bloqueo indefinido de `SYSTEM WAIT VIEW` cuando se elimina la vista materializada actualizable mientras la espera está en curso. [#102681](https://github.com/ClickHouse/ClickHouse/pull/102681) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se corrige CASE con una expresión Dynamic que devolvía ELSE en todas las filas. Cierra [#102511](https://github.com/ClickHouse/ClickHouse/issues/102511). [#102684](https://github.com/ClickHouse/ClickHouse/pull/102684) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige la serialización del tipo Dynamic aplanado con tipos de datos codificados en formato binario. Cierra [#101911](https://github.com/ClickHouse/ClickHouse/issues/101911). [#102692](https://github.com/ClickHouse/ClickHouse/pull/102692) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige un problema por el que format\_schema\_source='query' ignoraba silenciosamente los resultados de varias filas. Cierra [#101905](https://github.com/ClickHouse/ClickHouse/issues/101905). [#102698](https://github.com/ClickHouse/ClickHouse/pull/102698) ([Pavel Kruglov](https://github.com/Avogar)).
* Informar del código de salida real a través del client SSH en lugar de asignar todos los errores a `1`. Cierra [#101741](https://github.com/ClickHouse/ClickHouse/issues/101741). [#102700](https://github.com/ClickHouse/ClickHouse/pull/102700) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se corrige la pérdida de encabezados HTTP en los controladores de consultas dinámicas y predefinidas. Cierra [#101846](https://github.com/ClickHouse/ClickHouse/issues/101846). [#102706](https://github.com/ClickHouse/ClickHouse/pull/102706) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Aplicar la corrección por muestreo de Poisson a los perfiles de heap colapsados de jemalloc para ajustarlos a la salida de jeprof. Anteriormente, el formato colapsado subestimaba los tamaños reales de asignación al no tener en cuenta la probabilidad de muestreo. [#102759](https://github.com/ClickHouse/ClickHouse/pull/102759) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrige el fallo provocado por un argumento `NULL` en la función `hasPhrase`. [#102802](https://github.com/ClickHouse/ClickHouse/pull/102802) ([Nikita Taranov](https://github.com/nickitat)).
* Se corrige un fallo del servidor (SIGSEGV) al leer archivos Avro con esquemas recursivos que contienen referencias cíclicas a tipos simbólicos. Ahora, esos esquemas se detectan y se rechazan con un mensaje de error claro, en lugar de provocar un fallo. [#102853](https://github.com/ClickHouse/ClickHouse/pull/102853) ([Groene AI](https://github.com/groeneai)).
* Corrige un cierre inesperado del servidor (aserción `LOGICAL&#95;ERROR`) cuando una función sobre una columna `Variant` alcanza el límite de memoria u otra excepción no relacionada con la conversión de tipos durante la conversión del resultado en `FunctionVariantAdaptor`. Ahora la excepción se propaga correctamente en lugar de clasificarse por error como un error interno. [#102855](https://github.com/ClickHouse/ClickHouse/pull/102855) ([Groene AI](https://github.com/groeneai)).
* Se corrige un fallo del servidor en compilaciones de depuración/sanitizador cuando se produce `std::length_error` durante la inferencia de esquema (p. ej., por valores extremos de `input_format_msgpack_number_of_columns` o datos de entrada malformados). [#102859](https://github.com/ClickHouse/ClickHouse/pull/102859) ([Groene AI](https://github.com/groeneai)).
* Hacer que la representación de NULL en la serialización de columnas replicadas y dispersas respete la configuración (p. ej., format\_tsv\_null\_representation). [#102888](https://github.com/ClickHouse/ClickHouse/pull/102888) ([Hechem Selmi](https://github.com/m-selmi)).
* Retroportado en [#103499](https://github.com/ClickHouse/ClickHouse/issues/103499): Se corrigen las solicitudes a S3 que fallaban con `ios_base::clear: unspecified iostream_category error` en lugar de reintentarse, debido a que `BufferedStreamBuf::flushBuffer` de Poco no gestionaba escrituras cortas desde la capa de socket. [#102894](https://github.com/ClickHouse/ClickHouse/pull/102894) ([Sema Checherinda](https://github.com/CheSema)).
* Se corrige el problema por el que las optimizaciones de `minmax_count_projection` y de `COUNT(*)` trivial quedaban deshabilitadas de forma permanente tras una eliminación ligera, incluso después de que se hubieran fusionado todas las partes con una máscara de eliminación ligera. [#102900](https://github.com/ClickHouse/ClickHouse/pull/102900) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrigieron cierres inesperados aleatorios en jemalloc debidos a LTO. [#102913](https://github.com/ClickHouse/ClickHouse/pull/102913) ([Azat Khuzhin](https://github.com/azat)).
* Optimiza las cadenas OR de las políticas de fila convirtiéndolas en IN en el nuevo analizador. [#102915](https://github.com/ClickHouse/ClickHouse/pull/102915) ([Azat Khuzhin](https://github.com/azat)).
* Corrige la corrupción de metadatos de jemalloc debida a la liberación de la caché de páginas con una alineación incorrecta, que puede provocar bloqueos. [#102918](https://github.com/ClickHouse/ClickHouse/pull/102918) ([Azat Khuzhin](https://github.com/azat)).
* Los INSERT simples sin vistas materializadas ya no solicitan una cantidad excesiva de slots e hilos de ConcurrencyControl (`max_threads` en lugar de `max_insert_threads`), lo que evita la inanición de slots de CC y el crecimiento descontrolado del número de hilos en clústeres con alto throughput de INSERT. [#102961](https://github.com/ClickHouse/ClickHouse/pull/102961) ([Sema Checherinda](https://github.com/CheSema)).
* Reintroducir ArrowMemoryPool para permitir que se lance MEMORY\_LIMIT\_EXCEEDED y así evitar el OOM del kernel. [#102999](https://github.com/ClickHouse/ClickHouse/pull/102999) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige el problema por el que se ignoraba `cast_string_to_date_time_mode` al hacer `CAST` a `Nullable(DateTime)`. Cierra [#101840](https://github.com/ClickHouse/ClickHouse/issues/101840). [#103035](https://github.com/ClickHouse/ClickHouse/pull/103035) ([Pavel Kruglov](https://github.com/Avogar)).
* Se añadió compatibilidad con las columnas `ALIAS` en la optimización de lectura directa del índice de texto. [#103037](https://github.com/ClickHouse/ClickHouse/pull/103037) ([Anton Popov](https://github.com/CurtizJ)).
* Retroportado en [#103454](https://github.com/ClickHouse/ClickHouse/issues/103454): se corrige un problema por el que `SELECT DISTINCT` devolvía silenciosamente resultados incompletos cuando una proyección de agregación coincidía con la consulta y algunas partes de la tabla no tenían datos de proyección (p. ej., la proyección se añadió a una tabla que ya contenía datos y no se ejecutó `MATERIALIZE PROJECTION`). Cierra [#102951](https://github.com/ClickHouse/ClickHouse/issues/102951). [#103052](https://github.com/ClickHouse/ClickHouse/pull/103052) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige los resultados erróneos devueltos por `WHERE x AND toNullable(N)` en tablas `MergeTree` cuando `N` es un entero de mayor tamaño que `UInt8` (p. ej., `256`, `65535`, `2147483648` o cualquier entero negativo). El filtro descartaba incorrectamente todas las filas porque `splitFilterNodeForAllowedInputs` usaba un cero `NULL` al convertir a booleano el remainder `Nullable` de un `AND` reducido, lo que hacía que la comparación se convirtiera en `NULL` bajo la lógica ternaria. [#103077](https://github.com/ClickHouse/ClickHouse/pull/103077) ([Groene AI](https://github.com/groeneai)).
* Se corrigió el tipo de argumento incorrecto que se mostraba en los mensajes de error de las funciones de búsqueda de cadenas (p. ej., `locate`, `position`) cuando los argumentos se pasan en orden invertido (`locate(needle, haystack)` con `function_locate_has_mysql_compatible_argument_order = 1`). [#103102](https://github.com/ClickHouse/ClickHouse/pull/103102) ([Alex Kuleshov](https://github.com/0xAX)).
* Se corrige que waitForPause quede bloqueado indefinidamente cuando se llama a disableFailPoint sin ningún hilo pausado en el failpoint. [#103119](https://github.com/ClickHouse/ClickHouse/pull/103119) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Limite las cadenas del paquete TCP Hello previo a la autenticación a 64 KB y agregue la configuración del servidor `handshake_timeout_milliseconds` para limitar el tiempo total del protocolo de enlace, evitando que los clientes no autenticados consuman memoria en exceso o mantengan hilos ocupados indefinidamente. [#103284](https://github.com/ClickHouse/ClickHouse/pull/103284) ([Sema Checherinda](https://github.com/CheSema)).
* Corregidas las estadísticas de ColumnIndex de Parquet cuando min\_value > max\_value en columnas String. [#103334](https://github.com/ClickHouse/ClickHouse/pull/103334) ([Saurabh Kumar Ojha](https://github.com/saurabhojha)).
* Validación de datos Dynamic aplanados malformados en Native format. [#103392](https://github.com/ClickHouse/ClickHouse/pull/103392) ([Pavel Kruglov](https://github.com/Avogar)).
* Poblar la columna `_time` a partir de la función de tabla `url`. [#103437](https://github.com/ClickHouse/ClickHouse/pull/103437) ([Nikita Taranov](https://github.com/nickitat)).
* Corregida la detección de SVE cuando se utilizan instrucciones SVE no disponibles. [#103568](https://github.com/ClickHouse/ClickHouse/pull/103568) ([Raúl Marín](https://github.com/Algunenano)).

<div id="268-build-testing-packaging-improvement">
  #### Mejora en compilación/pruebas/empaquetado
</div>

* La dependencia de Libstemmer (Snowball) ahora utiliza la versión más reciente, la v3.0.1. [#99256](https://github.com/ClickHouse/ClickHouse/pull/99256) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Se aleatorizó la configuración en clickhouse-test: `use_skip_indexes_for_top_k`, `use_top_k_dynamic_filtering`, `query_plan_max_limit_for_top_k_optimization`. [#91782](https://github.com/ClickHouse/ClickHouse/pull/91782) ([Nikita Fomichev](https://github.com/fm4v)).
* Implementar una prueba de estrés para las funciones, para comprobar la robustez de sus distintas propiedades. [#93543](https://github.com/ClickHouse/ClickHouse/pull/93543) ([Michael Kolupaev](https://github.com/al13n321)).
* Proporcionar una configuración propia de CMake para `llvm-project` en lugar de importar la de upstream. [#97453](https://github.com/ClickHouse/ClickHouse/pull/97453) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Aleatorizar más configuraciones `optimize_*` en la infraestructura de pruebas para mejorar la cobertura de las pasadas de optimización de consultas. [#97547](https://github.com/ClickHouse/ClickHouse/pull/97547) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Usa la toolchain de Rust nightly-2026-03-22. [#98602](https://github.com/ClickHouse/ClickHouse/pull/98602) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se usa `wasmtime` v42.0.1. [#98603](https://github.com/ClickHouse/ClickHouse/pull/98603) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se usa `llvm-project` 22.1.1. [#98882](https://github.com/ClickHouse/ClickHouse/pull/98882) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se reemplazó `SANITIZE_COVERAGE` (callbacks personalizados del sanitizador, granularidad a nivel de símbolo) por la cobertura basada en código fuente de LLVM (`WITH_COVERAGE`, `-fprofile-instr-generate -fcoverage-mapping`) para el pipeline nocturno de cobertura por prueba. El server ahora lee su propio mapa de cobertura de las secciones ELF durante el arranque y recopila tuplas `(file, line_start, line_end)` por prueba mediante un nuevo comando `SYSTEM SET COVERAGE TEST 'name'`. La selección de pruebas en las comprobaciones de CI específicas usa consultas por rango de líneas sobre una nueva table CIDB `checks_coverage_lines` y ordena las pruebas candidatas según cuántas líneas modificadas del diff cubren. [#99513](https://github.com/ClickHouse/ClickHouse/pull/99513) ([Nikita Fomichev](https://github.com/fm4v)).
* Corrige el error de enlazado de llvm-libc en compilaciones con `-O0`. [#100023](https://github.com/ClickHouse/ClickHouse/pull/100023) ([Zheguang Zhao](https://github.com/zheguang)).
* Se corrigieron dos mensajes de error al arrancar el contenedor cuando la configuración no contenía las opciones `logger.log` y `logger.errorlog` (p. ej., cuando todos los mensajes de registro deben enviarse a STDOUT/STDERR). [#100239](https://github.com/ClickHouse/ClickHouse/pull/100239) ([Simon](https://github.com/simonhammes)).
* Se prefiere `ld64.lld` en lugar del `ld` de Apple (cctools-port ld64) para las compilaciones de macOS. Esto debería reducir significativamente los tiempos de enlace en Darwin, ya que el ld64 de cctools-port es muy lento con `-ffunction-sections` y `-dead_strip`. Se vuelve a `ld` si `ld64.lld` no está disponible. [#100275](https://github.com/ClickHouse/ClickHouse/pull/100275) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Pruebas para garantizar que los directorios no registren secretos (REST + Glue). [#100307](https://github.com/ClickHouse/ClickHouse/pull/100307) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Repetir las pruebas modificadas recientemente con distintas configuraciones aleatorias. [#100385](https://github.com/ClickHouse/ClickHouse/pull/100385) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Registrar las dependencias de archivos `#embed` en CMake y habilitar el modo de dependencias de ccache para que las recompilaciones sean correctas. [#100411](https://github.com/ClickHouse/ClickHouse/pull/100411) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadieron pruebas de corrección para consultas TPC-H. [#100580](https://github.com/ClickHouse/ClickHouse/pull/100580) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se usa `aws-sdk-cpp` 1.11.771. [#100582](https://github.com/ClickHouse/ClickHouse/pull/100582) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Permitir que los archivos XML de pruebas de rendimiento hagan referencia a archivos externos con consultas SQL y ajustes mediante el atributo `file`. [#100747](https://github.com/ClickHouse/ClickHouse/pull/100747) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se corrigió la compilación con `-march=x86-64-v4` añadiendo la inclusión faltante de `TargetSpecific.h` en `LowerUpperImpl.h`. [#100932](https://github.com/ClickHouse/ClickHouse/pull/100932) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la compilación en Gentoo al añadir --no-default-config a cxxflags. [#100973](https://github.com/ClickHouse/ClickHouse/pull/100973) ([Isak Ellmer](https://github.com/spinojara)).
* Se añadió `utils/auto-bisect/` — un marco de bisección basado en shell que descarga binarios precompilados de CI y ejecuta un script de prueba proporcionado por el usuario para encontrar el primer commit que introdujo una regresión, sin necesidad de una compilación local. [#100989](https://github.com/ClickHouse/ClickHouse/pull/100989) ([Nikita Fomichev](https://github.com/fm4v)).
* Se desactiva ThinLTO de forma predeterminada en CMake para que las compilaciones locales de los desarrolladores ya no lo activen implícitamente. Las compilaciones de release de CI no se ven afectadas, ya que pasan explícitamente `-DENABLE_THINLTO=1`. [#101041](https://github.com/ClickHouse/ClickHouse/pull/101041) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Añade el benchmark TPC-DS SF1 a las pruebas de rendimiento. [#101209](https://github.com/ClickHouse/ClickHouse/pull/101209) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se añadieron pruebas sin estado para las eliminaciones ligeras de MergeTree que cubren: el ciclo de vida de la marca `has_lightweight_delete`, la corrección de `COUNT(*)` con `optimize_trivial_count_query`, la integridad de las columnas `MATERIALIZED`/`DEFAULT`, la recuperación de la marca en `ReplicatedMergeTree`, `read_in_order` con filas eliminadas, múltiples ciclos de eliminación y merge, la ocultación de la columna `_row_exists`, la variedad de predicados y la aplicación de RBAC en `ALTER DELETE`. [#101792](https://github.com/ClickHouse/ClickHouse/pull/101792) ([Nikita Fomichev](https://github.com/fm4v)).
* Ahora se publican imágenes distroless de Docker con variantes ubuntu y alpine para las versiones etiquetadas. [#101941](https://github.com/ClickHouse/ClickHouse/pull/101941) ([Rahul Nair](https://github.com/motsc)).
* Los stack traces ahora muestran rutas relativas limpias (p. ej., `src/Common/Exception.cpp`) en lugar de rutas contaminadas con el directorio de compilación (p. ej., `./ci/tmp/fast_build/./src/Common/Exception.cpp`). [#102000](https://github.com/ClickHouse/ClickHouse/pull/102000) ([Raúl Marín](https://github.com/Algunenano)).
* Añade una comprobación de estilo de CI que rechace los archivos de más de 5 MB incluidos en commits del repositorio, con una lista blanca para los datos de prueba legítimos ya existentes. Elimina `zookeeper_log.parquet`, sin usar, de 14 MB. [#102080](https://github.com/ClickHouse/ClickHouse/pull/102080) ([Raúl Marín](https://github.com/Algunenano)).
* Elimina \~400 directivas `#include` sin usar de las cabeceras para reducir los tiempos de compilación. [#102585](https://github.com/ClickHouse/ClickHouse/pull/102585) ([Raúl Marín](https://github.com/Algunenano)).
* Se utiliza `wasmtime` v43.0.1. [#102603](https://github.com/ClickHouse/ClickHouse/pull/102603) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se utiliza `openssl` 3.5.6. [#102606](https://github.com/ClickHouse/ClickHouse/pull/102606) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Use `xz` 5.8.3. [#102607](https://github.com/ClickHouse/ClickHouse/pull/102607) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Actualización de la imagen base distroless de Docker de Debian 12 (glibc 2.36, OpenSSL 3.0) a Debian 13 (glibc 2.41, OpenSSL 3.5), lo que reduce la superficie de CVE a cero vulnerabilidades alcanzables. [#101678](https://github.com/ClickHouse/ClickHouse/pull/101678) ([Rahul Nair](https://github.com/motsc)).

<div id="263">
  ### Lanzamiento de ClickHouse 26.3 LTS, 2026-03-26. [Presentación](https://presentations.clickhouse.com/), [Vídeo](https://www.youtube.com/watch?v=_bY0ucNB1lQ)
</div>

<div id="268-backward-incompatible-change">
  #### Cambio incompatible con versiones anteriores
</div>

* Volver a una versión anterior tras actualizar puede provocar pérdida de datos. Las versiones de serialización de los tipos de datos ahora se propagan a los tipos de datos anidados. Por ejemplo, la versión de serialización de String `with_size_stream` antes se aplicaba solo a las columnas String de nivel superior y a los elementos de Tuple. Ahora se aplica a cualquier tipo String dentro de cualquier tipo anidado, como `Array`/`Map`/`Variant`/`JSON`/etc. Este comportamiento está controlado por la configuración de MergeTree `propagate_types_serialization_versions_to_nested_types`, que ahora está activada de forma predeterminada. Después de este cambio, las partes de datos recién creadas no pueden ser leídas por versiones anteriores, pero las partes antiguas pueden leerse en la versión nueva sin problemas. **La actualización es segura, pero volver a una versión anterior no lo es: si necesitas revertir después de actualizar a 26.3, ¡los datos escritos por 26.3 en columnas con tipos anidados no podrán leerse!** Consulta [#101429](https://github.com/ClickHouse/ClickHouse/issues/101429) para más detalles. [#94859](https://github.com/ClickHouse/ClickHouse/pull/94859) ([Pavel Kruglov](https://github.com/Avogar)).
* Se elimina el tipo de índice de omisión `hypothesis`. Era una función experimental poco conocida y de utilidad práctica limitada. Crear tablas con `INDEX ... TYPE hypothesis` ahora producirá un error. [#96874](https://github.com/ClickHouse/ClickHouse/pull/96874) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se elimina la función experimental `detectProgrammingLanguage`. [#99567](https://github.com/ClickHouse/ClickHouse/pull/99567) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la precedencia del operador `NOT` para ajustarla al estándar SQL: `NOT` ahora tiene menor precedencia que `IS NULL`, `BETWEEN`, `LIKE` y los operadores aritméticos. Por ejemplo, `NOT (x) IS NULL` ahora se interpreta como `NOT (x IS NULL)` en lugar de `(NOT x) IS NULL`. Esto puede cambiar el resultado de las consultas que dependían del comportamiento anterior (no estándar). [#97680](https://github.com/ClickHouse/ClickHouse/pull/97680) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige los metadatos de las proyecciones normales para que las proyecciones con claves de ordenación de varias columnas se reconozcan adecuadamente. Se basa en [#90429](https://github.com/ClickHouse/ClickHouse/issues/90429). [#91352](https://github.com/ClickHouse/ClickHouse/pull/91352) ([Amos Bird](https://github.com/amosbird)).
* Se corrigió un problema por el que los archivos de índices de omisión no respetaban la configuración replace\_long\_file\_name\_to\_hash, lo que provocaba errores de "Nombre de archivo demasiado largo" y fallos al leer índices con nombres largos. Ahora, los nombres de archivo de los índices de omisión se convierten en hash cuando superan max\_file\_name\_length, de forma similar a los archivos de columnas. Esto es retrocompatible (los servidores nuevos leen las partes antiguas), pero una degradación de versión (o el uso de servidores antiguos durante una actualización gradual) puede hacer que se ignoren los índices con nombres largos. [#97128](https://github.com/ClickHouse/ClickHouse/pull/97128) ([Raúl Marín](https://github.com/Algunenano)).
* Se activa async insert de forma predeterminada. Ahora ClickHouse agrupará por lotes todas las inserciones pequeñas de forma predeterminada. Este ajuste se define en compatibility. Si establece `compatibility=<version less than 26.2>`, el valor predeterminado será el anterior, `false`. Puede activar o desactivar async inserts en varios niveles: en la configuración de los perfiles de usuario, para la sesión, para la consulta o para la tabla MergeTree. [#97590](https://github.com/ClickHouse/ClickHouse/pull/97590) ([Sema Checherinda](https://github.com/CheSema)).
* Se cambió el valor predeterminado de `mysql_datatypes_support_level` de vacío a `decimal,datetime64,date2Date32`, lo que permite la asignación correcta de `DATE` de MySQL a `Date32`, de `DECIMAL`/`NUMERIC` a `Decimal` y de `DATETIME`/`TIMESTAMP` con precisión a `DateTime64` de forma predeterminada. Anteriormente, las columnas `DATE` de MySQL se asignaban a `Date`, que no puede representar fechas anteriores a 1970-01-01, lo que provocaba corrupción de datos. [#97716](https://github.com/ClickHouse/ClickHouse/pull/97716) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Aceptar un array de nombres de las partes en lugar de una expresión regular para `mergeTreeAnalyzeIndexes{,UUID}`, ya que las expresiones regulares son lentas (*Funcionalidad experimental*). [#98474](https://github.com/ClickHouse/ClickHouse/pull/98474) ([Azat Khuzhin](https://github.com/azat)).
* Cambiar el valor predeterminado de `stderr_reaction` de `throw` a `log_last` para las UDF ejecutables. Las UDFs que escriben advertencias en stderr ya no provocan errores cuando el código de salida es 0. Las excepciones por código de salida ahora incluyen el contenido de stderr. [#99232](https://github.com/ClickHouse/ClickHouse/pull/99232) ([Xu Jia](https://github.com/XuJia0210)).

<div id="268-new-feature">
  #### Nueva funcionalidad
</div>

* Se añadió serialización en buckets para columnas Map en MergeTree (`map_serialization_version = 'with_buckets'`). Las claves se dividen en buckets basados en hash, de modo que al leer una sola clave (`m['key']`) solo se lea un bucket en lugar de toda la columna, lo que proporciona una aceleración de 2 a 49 veces en búsquedas de una sola clave, según el tamaño del mapa. El número de buckets y la estrategia de asignación a buckets pueden controlarse mediante nuevas configuraciones de MergeTree: `map_serialization_version`, `max_buckets_in_map`, `map_buckets_strategy`, `map_buckets_coefficient` y `map_buckets_min_avg_size`. [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200) ([Pavel Kruglov](https://github.com/Avogar)).
* Compatibilidad con CTE materializadas. Permite evaluar las CTE solo una vez durante la ejecución de la consulta y almacenar sus resultados en tablas temporales. Cierra [#53449](https://github.com/ClickHouse/ClickHouse/issues/53449). [#94849](https://github.com/ClickHouse/ClickHouse/pull/94849) ([Dmitry Novik](https://github.com/novikd)).
* Permite usar determinadas funciones estándar de SQL sin paréntesis por compatibilidad, como `NOW`. Cierra [#52102](https://github.com/ClickHouse/ClickHouse/issues/52102). [#95949](https://github.com/ClickHouse/ClickHouse/pull/95949) ([Aly Kafoury](https://github.com/AlyHKafoury)).
* Ahora puede usar la función de clave de ordenación natural `naturalSortKey(s)`. [#90322](https://github.com/ClickHouse/ClickHouse/pull/90322) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* Ahora puede usar JSON/Object nativo como entrada para las funciones JSONExtract. Cierra [#88370](https://github.com/ClickHouse/ClickHouse/issues/88370). [#96711](https://github.com/ClickHouse/ClickHouse/pull/96711) ([Fisnik Kastrati](https://github.com/fkastrati)).
* Si un parámetro de consulta es de tipo `Nullable` y no se especifica, asumiremos que su valor es `NULL`. [#93869](https://github.com/ClickHouse/ClickHouse/pull/93869) ([Vikash Kumar](https://github.com/vikashkumar2020)).
* Se admite ZooKeeper auxiliar para la base de datos `Replicated`. [#95590](https://github.com/ClickHouse/ClickHouse/pull/95590) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Se añadió compatibilidad con la función `has` para el tipo JSON a fin de comprobar la existencia de una ruta, de forma similar a Map. [#96927](https://github.com/ClickHouse/ClickHouse/pull/96927) ([DQ](https://github.com/il9ue)).
* Se añadió la función de tabla `mergeTreeTextIndex(database, table, index)`, que permite leer datos directamente desde un índice de texto. Esta función puede usarse para tareas de introspección o para realizar agregaciones sobre los datos del índice de texto. [#97003](https://github.com/ClickHouse/ClickHouse/pull/97003) ([Anton Popov](https://github.com/CurtizJ)).
* Añade la configuración de MergeTree `table_readonly` para marcar las tablas como de solo lectura y evitar inserciones y modificaciones. [#97652](https://github.com/ClickHouse/ClickHouse/pull/97652) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añade la nueva configuración `use_partition_pruning` y el alias `use_partition_key`. Establécela en `false` para deshabilitar la poda de particiones en función de la clave de partición. [#97888](https://github.com/ClickHouse/ClickHouse/pull/97888) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Implementa `ALTER TABLE ... EXECUTE expire_snapshots('<timestamp>')` en tablas Iceberg. [#97904](https://github.com/ClickHouse/ClickHouse/pull/97904) ([murphy-4o](https://github.com/murphy-4o)). [#99130](https://github.com/ClickHouse/ClickHouse/pull/99130)
* Permite que cada entrada `type=http` de `<protocols>` especifique una clave `<handlers>` personalizada que apunte a una sección de configuración `<http_handlers_*>` independiente, lo que permite definir distintas reglas de enrutamiento HTTP para cada puerto. [#98414](https://github.com/ClickHouse/ClickHouse/pull/98414) ([Amos Bird](https://github.com/amosbird)).
* Se agrega la opción `pretty=1` a `EXPLAIN` para obtener una salida con sangría en forma de árbol, y `compact=1` para contraer los pasos de `Expression`, lo que hace que los planes de consulta sean más legibles. [#98500](https://github.com/ClickHouse/ClickHouse/pull/98500) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Se añade la configuración del servidor `restore_access_entities_with_current_grants`. Cuando está habilitada, los usuarios/roles restaurados desde copias de seguridad ven sus grants limitados a lo que el usuario que realiza la restauración puede conceder (con la misma semántica que `GRANT CURRENT GRANTS`), en lugar de fallar con `ACCESS_DENIED`. [#98795](https://github.com/ClickHouse/ClickHouse/pull/98795) ([pufit](https://github.com/pufit)).
* Se añaden las funciones `caseFoldUTF8` y `removeDiacriticsUTF8` para el plegado de mayúsculas y minúsculas de Unicode y la eliminación de marcas diacríticas. [#98973](https://github.com/ClickHouse/ClickHouse/pull/98973) ([George Larionov](https://github.com/george-larionov)).
* Se agregó la función de cadena `normalizeUTF8NFKCCasefold` para la normalización Unicode NFKC\_Casefold, que combina la normalización NFKC con el plegado de mayúsculas y minúsculas. [#99276](https://github.com/ClickHouse/ClickHouse/pull/99276) ([George Larionov](https://github.com/george-larionov)).
* Se añade el `tokenizer` `unicode_word` para índices de texto completo y la función `tokens`. Segmenta el texto según las reglas de límites de palabras de Unicode: las palabras ASCII se forman con caracteres conectores (guion bajo, dos puntos, punto y comilla simple), mientras que los caracteres Unicode no ASCII se convierten en tokens de un solo carácter. Nota: 26.3 acepta este tokenizador únicamente con el nombre `unicode_word`; se renombró a `asciiCJK` en 26.4. [#99357](https://github.com/ClickHouse/ClickHouse/pull/99357) ([Amos Bird](https://github.com/amosbird)).
* Se agregaron las configuraciones `max_skip_unavailable_shards_num` y `max_skip_unavailable_shards_ratio` para limitar cuántos segmentos pueden omitirse sin avisar cuando `skip_unavailable_shards` está habilitado. Si la cantidad o la proporción de segmentos no disponibles supera el umbral configurado, se genera una excepción en lugar de devolver resultados incompletos sin avisar. [#99369](https://github.com/ClickHouse/ClickHouse/pull/99369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ahora los usuarios pueden usar la palabra clave `SOME` en expresiones de subconsulta. Se comporta de forma idéntica a `ANY`. [#99842](https://github.com/ClickHouse/ClickHouse/pull/99842) ([Artem Kytkin](https://github.com/Vinceent)).
* Se añade la configuración `output_format_trim_fixed_string` para eliminar los bytes nulos al final de los valores `FixedString` en los formatos de salida de texto. [#97558](https://github.com/ClickHouse/ClickHouse/pull/97558) ([NeedmeFordev](https://github.com/spider-yamet)).
* Se admiten expresiones JOIN de tablas entre paréntesis en la cláusula FROM, p. ej., `SELECT * FROM (t1 CROSS JOIN t2)`. [#97650](https://github.com/ClickHouse/ClickHouse/pull/97650) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Implementar la función `toDaysInMonth`: devuelve el número de días del mes correspondiente a la fecha especificada. [#99227](https://github.com/ClickHouse/ClickHouse/pull/99227) ([Vitaly Baranov](https://github.com/vitlibar)).

<div id="268-experimental-feature">
  #### Funcionalidad experimental
</div>

* Se añade compatibilidad experimental con funciones definidas por el usuario (UDFs) basadas en WebAssembly, lo que permite implementar lógica de funciones personalizadas en WebAssembly y ejecutarla dentro de ClickHouse. Agradecimientos especiales a [Alexey Smirnov](https://github.com/lioshik) por aportar compatibilidad con el backend de Wasmtime. [#88747](https://github.com/ClickHouse/ClickHouse/pull/88747) ([Vladimir Cherkasov](https://github.com/vdimir)). Mejoras incrementales en la compatibilidad con UDF de WASM. [#99373](https://github.com/ClickHouse/ClickHouse/pull/99373) ([Vasily Chekalkin](https://github.com/bacek)).
* Se añade compatibilidad con dialectos SQL externos mediante la biblioteca `polyglot`. [#99496](https://github.com/ClickHouse/ClickHouse/pull/99496) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añade el códec de compresión de punto flotante `ALP` (sin fallback ALP\_rd para valores `double` no compresibles). [#91362](https://github.com/ClickHouse/ClickHouse/pull/91362) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* Se añaden indicaciones de tipo diferidas experimentales para columnas `JSON`. Cuando se habilita mediante `allow_experimental_json_lazy_type_hints`, la instrucción `ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName)` que solo añade o modifica indicaciones de tipo se completa de forma instantánea como una operación solo de metadatos, sin reescribir datos históricos. Las indicaciones de tipo se aplican en tiempo de consulta a las partes antiguas y se materializan durante las operaciones INSERT y las fusiones en segundo plano. [#97412](https://github.com/ClickHouse/ClickHouse/pull/97412) ([tanner-bruce](https://github.com/tanner-bruce)).
* Se habilitan lecturas paralelas desde el motor de tabla YTsaurus. [#97343](https://github.com/ClickHouse/ClickHouse/pull/97343) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).

<div id="268-performance-improvement">
  #### Mejora del rendimiento
</div>

* Mejora el rendimiento de los lagos de datos. En versiones anteriores, la lectura desde el almacenamiento de objetos no ajustaba el pipeline al número de hilos de procesamiento. Esto supone mejoras de varios órdenes de magnitud (\~40x) en máquinas multinúcleo. [#99548](https://github.com/ClickHouse/ClickHouse/pull/99548) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ahora, la relación entre `enable_parallel_replicas` y `automatic_parallel_replicas_mode` es la siguiente. Una consulta puede usar réplicas paralelas solo si `enable_parallel_replicas > 0`. Además, si `automatic_parallel_replicas_mode=1`, la decisión de usar réplicas paralelas se toma durante la planificación en función de las estadísticas recopiladas previamente. Si `automatic_parallel_replicas_mode=0`, las réplicas paralelas se usarán en todas las consultas compatibles, independientemente de las estadísticas. Una excepción destacada es `insert-select` distribuido con réplicas paralelas: en este caso, las consultas siempre se ejecutarán como si `automatic_parallel_replicas_mode=0`. [#97517](https://github.com/ClickHouse/ClickHouse/pull/97517) ([Nikita Taranov](https://github.com/nickitat)).
* Permite la poda de particiones cuando el predicado contiene cualquier operador de comparación (`=`, `<`, `>`, `!=`) y la clave de partición está incluida en una cadena de funciones deterministas (p. ej., `PARTITION BY x` y predicados como `cityHash64(x) % 5 > 2`, `toYYYYMM(x) < 2026`, `toYYYYMM(x) = 2026` o `toYYYYMM(x) != 2026` usarán la clave de partición para la poda). Cierra [#28800](https://github.com/ClickHouse/ClickHouse/issues/28800). [#98432](https://github.com/ClickHouse/ClickHouse/pull/98432) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Permite la optimización de lectura en orden y la poda de la primary key cuando el tipo de destino de `CAST` es `Nullable` y la conversión es monótona; por ejemplo, con `PRIMARY KEY x`, ClickHouse puede usar la optimización de lectura en orden para `ORDER BY x::Nullable(UInt64)` y aplicar la poda de la primary key a predicados como `WHERE x::Nullable(UInt64) > 500000`. [#98482](https://github.com/ClickHouse/ClickHouse/pull/98482) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se habilitan la poda de índices y el pushdown de filtros cuando una columna de tipo entero se compara con un literal de coma flotante; por ejemplo, predicados como `WHERE x < 10.5` ahora pueden usar la clave primaria para la poda, y filtros como `prime < 1e9` o `number < 1e5` ahora hacen pushdown en las funciones de tabla `primes()` y `numbers()` en lugar de provocar una ejecución sin límite. Cierra [#85167](https://github.com/ClickHouse/ClickHouse/issues/85167). [#98516](https://github.com/ClickHouse/ClickHouse/pull/98516) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se añadió una nueva caché SLRU para los metadatos de Parquet a fin de mejorar el rendimiento de lectura, al eliminar la necesidad de volver a descargar archivos solo para leer esos metadatos. [#98140](https://github.com/ClickHouse/ClickHouse/pull/98140) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Se admite el intercambio de lados en los joins ANTI, SEMI y FULL según las estadísticas del optimizador. [#97498](https://github.com/ClickHouse/ClickHouse/pull/97498) ([Hechem Selmi](https://github.com/m-selmi)).
* Optimiza el descarte de gránulos para `pointInPolygon` en polígonos grandes y corrige que el análisis de índices de `pointInPolygon` arroje excepciones durante la poda de la clave primaria. [#91633](https://github.com/ClickHouse/ClickHouse/pull/91633) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Mejora del rendimiento de la función `levenshteinDistance`. [#94543](https://github.com/ClickHouse/ClickHouse/pull/94543) ([Joanna Hulboj](https://github.com/jh0x)).
* Optimiza las conversiones por lotes de tipo Decimal al evitar llamadas a funciones para cada elemento. [#95923](https://github.com/ClickHouse/ClickHouse/pull/95923) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Las tablas Iceberg ahora admiten la precarga asíncrona de metadatos mediante la configuración de tabla `iceberg_metadata_async_prefetch_period_ms`, que precarga periódicamente la caché de metadatos. Además, la configuración de consulta `iceberg_metadata_staleness_ms` permite que las consultas SELECT usen metadatos en caché si son más recientes que el umbral de obsolescencia especificado, lo que elimina las llamadas al catálogo Iceberg durante el procesamiento de solicitudes. [#96191](https://github.com/ClickHouse/ClickHouse/pull/96191) ([Arsen Muk](https://github.com/arsenmuk)).
* El modo ordered de `S3Queue` usa S3 ListObjectsV2 StartAfter para evitar volver a listar el historial completo del prefijo, lo que reduce las llamadas a ListObjects. [#96370](https://github.com/ClickHouse/ClickHouse/pull/96370) ([Venkata  Vineel ](https://github.com/vyalamar)).
* Menor uso de memoria para la deduplicación de inserciones. En general, el bloque original es necesario para la deduplicación, pero en los insert síncronos se pudo omitir y ahorrar memoria por completo. [#96661](https://github.com/ClickHouse/ClickHouse/pull/96661) ([Sema Checherinda](https://github.com/CheSema)).
* Se usa un valor específico de la arquitectura para el tamaño de línea de caché en lugar de un valor fijo de 64. [#97357](https://github.com/ClickHouse/ClickHouse/pull/97357) ([Nikita Taranov](https://github.com/nickitat)).
* Se optimizó ligeramente la lectura del diccionario del índice de texto, lo que mejora el rendimiento general del análisis de índices de texto. [#97519](https://github.com/ClickHouse/ClickHouse/pull/97519) ([Anton Popov](https://github.com/CurtizJ)).
* Acelera la descompresión de bloques de 16 bytes con `LZ4` en ARM. [#97774](https://github.com/ClickHouse/ClickHouse/pull/97774) ([Raúl Marín](https://github.com/Algunenano)).
* Se ha refactorizado la tokenización con una nueva interfaz de alto rendimiento, sustituyendo la antigua API de tipo iterador para admitir SIMD y tokenizadores con estado. Parte de [#90268](https://github.com/ClickHouse/ClickHouse/issues/90268). [#97871](https://github.com/ClickHouse/ClickHouse/pull/97871) ([Amos Bird](https://github.com/amosbird)).
* Se mejoró el rendimiento del análisis de índices de texto para consultas con condiciones combinadas que involucran columnas indexadas y no indexadas. Anteriormente, la optimización de salida temprana durante el análisis de índices se deshabilitaba incorrectamente en estos casos. [#98096](https://github.com/ClickHouse/ClickHouse/pull/98096) ([Anton Popov](https://github.com/CurtizJ)).
* Mejora el rendimiento de las consultas que contienen expresiones constantes que generan arrays o maps muy largos. [#98287](https://github.com/ClickHouse/ClickHouse/pull/98287) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió el análisis de las condiciones sobre claves primarias `DateTime64` al compararlas con constantes enteras, lo que antes impedía la poda de gránulos. [#98410](https://github.com/ClickHouse/ClickHouse/pull/98410) ([Amos Bird](https://github.com/amosbird)).
* La configuración `optimize_syntax_fuse_functions` está activada de forma predeterminada. [#98424](https://github.com/ClickHouse/ClickHouse/pull/98424) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Optimiza la función de agregación `avgWeighted` mediante acumuladores locales en lugar del almacenamiento y reenvío fila por fila a través del estado de agregación, mejorando el rendimiento hasta en un 27 % para entradas Nullable. [#98793](https://github.com/ClickHouse/ClickHouse/pull/98793) ([Antonio Andelic](https://github.com/antonio2368)).
* Mejora el rendimiento y reduce el uso de memoria de las funciones de ventana paralelas en determinados escenarios, así como de las cargas de trabajo de `arrayFold` con arrays grandes. Esto también puede reducir la presión de fallos de página y mejorar la estabilidad con límites de memoria ajustados en las consultas afectadas. [#98892](https://github.com/ClickHouse/ClickHouse/pull/98892) ([filimonov](https://github.com/filimonov)).
* Mejora el rendimiento de las fusiones ordenadas. [#99013](https://github.com/ClickHouse/ClickHouse/pull/99013) ([Artem Zuikov](https://github.com/4ertus2)).
* Se optimizan `INTERSECT ALL` y `EXCEPT ALL`. [#99097](https://github.com/ClickHouse/ClickHouse/pull/99097) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se añadió soporte para la optimización `read_in_order_use_virtual_row` en lecturas en orden inverso. [#99198](https://github.com/ClickHouse/ClickHouse/pull/99198) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Reducir la contención de la caché en los `RIGHT` y `FULL` JOINs comprobando si JoinUsedFlags está definido antes de escribir. [#99274](https://github.com/ClickHouse/ClickHouse/pull/99274) ([Hechem Selmi](https://github.com/m-selmi)).
* Optimiza `PrefetchingHelper::calcPrefetchLookAhead` sustituyendo la aritmética de coma flotante por aritmética entera pura, mejorando la disposición de la caché de instrucciones y reduciendo la sobrecarga de ciclos en los bucles de agregación. [#99327](https://github.com/ClickHouse/ClickHouse/pull/99327) ([Riyane El Qoqui](https://github.com/riyaneel)).
* Reducir el consumo de memoria de Keeper sustituyendo `absl::flat_hash_set` por `CompactChildrenSet` para almacenar los hijos de los nodos. El nuevo contenedor almacena de 0 a 1 hijos directamente, sin asignación en el heap, lo que cubre la mayoría de los nodos de Keeper. Esto reduce el tamaño de `KeeperMemNode` de 144 a 128 bytes. [#99860](https://github.com/ClickHouse/ClickHouse/pull/99860) ([Antonio Andelic](https://github.com/antonio2368)).
* Las proyecciones de agregación ahora funcionan correctamente en las vistas. Corrige [#32753](https://github.com/ClickHouse/ClickHouse/issues/32753). [#88798](https://github.com/ClickHouse/ClickHouse/pull/88798) ([Amos Bird](https://github.com/amosbird)).
* Se añadió compatibilidad con la optimización de conversión de OUTER a INNER join con `join_use_nulls`. Cierra [#90978](https://github.com/ClickHouse/ClickHouse/issues/90978). [#95968](https://github.com/ClickHouse/ClickHouse/pull/95968) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Mejora la lectura de subcolumnas mediante el cálculo correcto de los tamaños antes de leerlas. Reduce el uso de memoria y acelera la lectura de subcolumnas. [#96251](https://github.com/ClickHouse/ClickHouse/pull/96251) ([Pavel Kruglov](https://github.com/Avogar)).
* Hacer que las cachés de mark, de datos sin comprimir y de páginas utilicen una arena de jemalloc independiente para evitar la fragmentación de memoria cuando las asignaciones de corta duración, es decir, para consultas y solicitudes, se mezclan con asignaciones de mayor duración para las cachés. [#96812](https://github.com/ClickHouse/ClickHouse/pull/96812) ([Seva Potapov](https://github.com/seva-potapov)). [#98812](https://github.com/ClickHouse/ClickHouse/pull/98812). [#99021](https://github.com/ClickHouse/ClickHouse/pull/99021)
* Las tablas con reglas `DELETE TTL` ahora pueden utilizar el algoritmo de fusión vertical. [#97332](https://github.com/ClickHouse/ClickHouse/pull/97332) ([murphy-4o](https://github.com/murphy-4o)).
* Aplicar índices de omisión de datos durante el análisis distribuido de índices. [#97767](https://github.com/ClickHouse/ClickHouse/pull/97767) ([Azat Khuzhin](https://github.com/azat)).
* Las marcas de los índices secundarios ahora se precargan cuando la configuración `prewarm_mark_cache` está habilitada (se cargan en la caché de marcas de índice durante la obtención de partes de datos y el arranque de la tabla). [#97772](https://github.com/ClickHouse/ClickHouse/pull/97772) ([Anton Popov](https://github.com/CurtizJ)).
* Menor bloqueo durante el control de acceso. [#97894](https://github.com/ClickHouse/ClickHouse/pull/97894) ([Nikita Taranov](https://github.com/nickitat)).
* Cuando se habilita apply\_row\_policy\_after\_final o apply\_prewhere\_after\_final, las condiciones compuestas con AND en las políticas de fila y en PREWHERE ahora se descomponen para extraer átomos de la clave de ordenación y utilizarlos en el análisis del índice de clave primaria. Anteriormente, si un filtro diferido contenía una combinación de predicados de la clave de ordenación y de predicados que no pertenecían a ella (p. ej., x > 1 AND y != 'foo'), toda la expresión quedaba excluida del análisis del índice. Ahora, los átomos de la clave de ordenación (como x > 1) se extraen y se usan para la poda de gránulos, incluso dentro de expresiones AND anidadas. [#98513](https://github.com/ClickHouse/ClickHouse/pull/98513) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Reduce la contención por bloqueos en MergeTreeBackgroundExecutor al hacer que los recursos de la tarea se liberen sin adquirir el bloqueo. Cierra [#93620](https://github.com/ClickHouse/ClickHouse/issues/93620). [#98604](https://github.com/ClickHouse/ClickHouse/pull/98604) ([Dmitry Novik](https://github.com/novikd)).
* Corrige el uso excesivo de memoria (\~514 MiB) durante la autodetección de formato al leer datos que no son Arrow (p. ej., JSON desde `url` o `file` sin un formato explícito), debido a que el lector ArrowStream interpretaba erróneamente los primeros bytes como una longitud de metadatos enorme. [#98893](https://github.com/ClickHouse/ClickHouse/pull/98893) ([Konstantin Bogdanov](https://github.com/thevar1able)).

<div id="268-improvement">
  #### Mejora
</div>

* Permite analizar archivos GeoParquet que contienen distintos tipos Geo en la misma columna. [#97851](https://github.com/ClickHouse/ClickHouse/pull/97851) ([Mark Needham](https://github.com/mneedham)).
* Se introduce la función SQL `tokensForLikePattern`, que tokeniza patrones LIKE respetando la semántica de los comodines: `%` y `_` se consideran comodines, los comodines escapados (`\%`, `\_`) se consideran literales y se descartan los tokens adyacentes a comodines no escapados. [#97872](https://github.com/ClickHouse/ClickHouse/pull/97872) ([Amos Bird](https://github.com/amosbird)).
* Se añade un marcador de posición `{_schema_hash}` para el motor de tabla S3, que inserta un hash de las definiciones de las columnas de la tabla en la ruta de S3. [#98265](https://github.com/ClickHouse/ClickHouse/pull/98265) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* `SymbolIndex`, `addressToSymbol`, `system.symbols` y `buildId` ahora funcionan en macOS mediante el análisis de las tablas de símbolos Mach-O. [#99014](https://github.com/ClickHouse/ClickHouse/pull/99014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La tabla `system.stack_trace` ahora funciona en macOS, lo que permite inspeccionar las trazas de pila de todos los hilos del servidor. [#98982](https://github.com/ClickHouse/ClickHouse/pull/98982) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Añade la opción de configuración LDAP por servidor `<follow_referrals>` (valor predeterminado: `false`) para controlar si el client LDAP sigue las referencias. Deshabilitar el seguimiento de referencias evita timeouts y bloqueos al buscar desde un base DN raíz de dominio de Active Directory. Los mensajes de registro relacionados con las referencias se han movido de `warn` a `trace`. [#96765](https://github.com/ClickHouse/ClickHouse/pull/96765) ([paf91](https://github.com/paf91)).
* Ahora registramos en una nueva columna llamada `skip_indices` de la tabla `query&#95;log` todos los índices de omisión de datos utilizados durante la ejecución de la consulta. Corrige [#78676](https://github.com/ClickHouse/ClickHouse/issues/78676). Autor original @pheepa. [#87862](https://github.com/ClickHouse/ClickHouse/pull/87862) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Las sugerencias de ACCESS\_DENIED ya no revelan los nombres de las columnas, a menos que el usuario pueda mostrar todas las columnas requeridas; los nombres de la base de datos y de la tabla siguen siendo visibles en la sugerencia. [#91067](https://github.com/ClickHouse/ClickHouse/pull/91067) ([filimonov](https://github.com/filimonov)).
* Añade un hilo dedicado a la limpieza para MergeTree, a fin de evitar retrasos en la limpieza cuando la carga de merge es elevada. Esto resuelve [#86181](https://github.com/ClickHouse/ClickHouse/issues/86181). [#91574](https://github.com/ClickHouse/ClickHouse/pull/91574) ([Amos Bird](https://github.com/amosbird)).
* Recargar la configuración del clúster si cambian las IP asociadas al hostname del servidor local, en lugar de las IP de cualquier host. Corrige [#81215](https://github.com/ClickHouse/ClickHouse/issues/81215), [#70156](https://github.com/ClickHouse/ClickHouse/issues/70156) y [#65268](https://github.com/ClickHouse/ClickHouse/issues/65268). [#93726](https://github.com/ClickHouse/ClickHouse/pull/93726) ([Zhigao Hong](https://github.com/zghong)).
* Permite que optimize\_aggregators\_of\_group\_by\_keys optimice correctamente las funciones de agregación en las consultas GROUPING SETS. [#93935](https://github.com/ClickHouse/ClickHouse/pull/93935) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Keeper-bench: informar de errores en las métricas y generar un archivo JSON de métricas para el modo --input-request-log. [#95748](https://github.com/ClickHouse/ClickHouse/pull/95748) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* Se añade la nueva cláusula ROLE a CREATE USER. [#97074](https://github.com/ClickHouse/ClickHouse/pull/97074) ([Vitaly Baranov](https://github.com/vitlibar)).
* Ahora puede establecer la configuración de internal\_replication para un clúster creado por la base de datos Replicated. [#97228](https://github.com/ClickHouse/ClickHouse/pull/97228) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
* Nueva configuración: `allow_nullable_tuple_in_extracted_subcolumns` controla si las subcolumnas `Tuple(...)` extraídas de `Tuple`, `Variant`, `Dynamic` y `JSON` se devuelven como `Nullable(Tuple(...))` (`NULL` para las filas que faltan) o como `Tuple(...)` (valores de tupla predeterminados para las filas que faltan). Está deshabilitada de forma predeterminada y solo puede cambiarse reiniciando el servidor. [#97299](https://github.com/ClickHouse/ClickHouse/pull/97299) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Agregar información sobre los filtros diferidos como un elemento independiente en la salida de EXPLAIN (al usar Row Policies/PREWHERE con FINAL). Relacionado: [#91065](https://github.com/ClickHouse/ClickHouse/pull/91065). [#97374](https://github.com/ClickHouse/ClickHouse/pull/97374) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Habilita `type_json_allow_duplicated_key_with_literal_and_nested_object` de forma predeterminada. Permite evitar errores por claves duplicadas durante el análisis de JSON como `{"a" : 42, "a" : {"b" : 42}}`, que ClickHouse puede generar a partir de los datos JSON originales `{"a" : 42, "a.b" : 42}`. [#97423](https://github.com/ClickHouse/ClickHouse/pull/97423) ([Pavel Kruglov](https://github.com/Avogar)).
* Mejora de Keeper: `find_super_nodes` es un comando muy útil para depurar el crecimiento inesperado del número de nodos en Keeper. Desafortunadamente, si hay varios supernodos, es casi imposible encontrar más de uno, porque el comando se queda bloqueado indefinidamente al recorrer los hijos del primer supernodo que encuentra. Este PR impide recorrer los hijos de los supernodos. [#97819](https://github.com/ClickHouse/ClickHouse/pull/97819) ([pufit](https://github.com/pufit)).
* Compatibilidad inicial con el autocompletado para `clickhouse-keeper-client`. [#97828](https://github.com/ClickHouse/ClickHouse/pull/97828) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Vaciar los búferes de logging asíncrono en caso de cierre inesperado. [#97836](https://github.com/ClickHouse/ClickHouse/pull/97836) ([Azat Khuzhin](https://github.com/azat)).
* Se habilita de forma predeterminada la función de suplantación de identidad (consulta [EXECUTE AS target\_user](https://clickhouse.com/docs/sql-reference/statements/execute_as)). [#97870](https://github.com/ClickHouse/ClickHouse/pull/97870) ([Vitaly Baranov](https://github.com/vitlibar)).
* Mejora en la cancelación de consultas con el motor de tabla SQLite mediante KILL QUERY y la cancelación de consultas (Ctrl+C) en clickhouse-client. [#97944](https://github.com/ClickHouse/ClickHouse/pull/97944) ([Roman Vasin](https://github.com/rvasin)).
* Se añadió la configuración del servidor `jemalloc_profiler_sampling_rate` para controlar `lg_prof_sample` de jemalloc y exponerla como la métrica asíncrona `jemalloc.prof.lg_sample`. [#97945](https://github.com/ClickHouse/ClickHouse/pull/97945) ([Antonio Andelic](https://github.com/antonio2368)).
* Se añade compatibilidad con pesos en la implementación de la cola acotada concurrente. [#97962](https://github.com/ClickHouse/ClickHouse/pull/97962) ([Daniil Ivanik](https://github.com/divanik)).
* Se añade `sslmode` a las claves permitidas para los orígenes de diccionario de PostgreSQL. Anteriormente, `sslmode` no figuraba en la lista de claves permitidas `dictionary&#95;allowed&#95;keys` de `PostgreSQLDictionarySource.cpp`, lo que imposibilitaba configurar el modo SSL para las conexiones de diccionario de PostgreSQL. Esto impedía que los diccionarios se conectaran a servidores PostgreSQL que requieren SSL (por ejemplo, AWS RDS, que exige SSL de forma predeterminada), ya que la conexión fallaba durante la negociación TLS y el servidor rechazaba la alternativa no cifrada. [#98014](https://github.com/ClickHouse/ClickHouse/pull/98014) ([mcalfin](https://github.com/mcalfin)).
* Mostrar un error claro de "archivo no encontrado" al pasar una ruta de archivo inexistente a `clickhouse` o `clickhouse-local`, en lugar de un mensaje genérico confuso. [#98048](https://github.com/ClickHouse/ClickHouse/pull/98048) ([Raúl Marín](https://github.com/Algunenano)).
* Ahora también se pueden crear índices de texto en columnas `Nullable([Fixed]String)` y `Array(Nullable([Fixed]String))`. [#98118](https://github.com/ClickHouse/ClickHouse/pull/98118) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Evite eliminar colecciones con nombre de las que dependan las fuentes de diccionario. [#98127](https://github.com/ClickHouse/ClickHouse/pull/98127) ([Pablo Marcos](https://github.com/pamarcos)).
* Se habilita el algoritmo de join `grace_hash` para consultas con totales. [#98144](https://github.com/ClickHouse/ClickHouse/pull/98144) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Cancelar antes las fusiones en segundo plano en DROP DATABASE para ordinary shared merge tree. [#98161](https://github.com/ClickHouse/ClickHouse/pull/98161) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Mejora de la cancelación de consultas con MongoDB y MySQL mediante KILL QUERY y la cancelación de consultas (Ctrl+C) en clickhouse-client. [#98187](https://github.com/ClickHouse/ClickHouse/pull/98187) ([Roman Vasin](https://github.com/rvasin)).
* Elimina NetlinkMetricsProvider y usa procfs exclusivamente para recopilar métricas taskstats por hilo. La recopilación basada en Netlink presenta problemas en entornos contenerizados y tiene una latencia en cola peor en situaciones de contención. [#98229](https://github.com/ClickHouse/ClickHouse/pull/98229) ([Amos Bird](https://github.com/amosbird)).
* Se refactorizó el manejo de los archivos de manifiesto de Iceberg para corregir problemas con la caché de archivos de manifiesto. [#98231](https://github.com/ClickHouse/ClickHouse/pull/98231) ([Daniil Ivanik](https://github.com/divanik)).
* Ahora también tenemos en cuenta los casos en que la clave de ordenación de la tabla puede ser una expresión como `toDate(time)`, y podemos decidir no aplazar expresiones de este tipo si forman parte de filtros. [#98237](https://github.com/ClickHouse/ClickHouse/pull/98237) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Añade una nueva métrica `MaxAllocatedEphemeralLockSequentialNumber` para el número secuencial máximo asignado a los znodes de bloqueo efímeros de ZooKeeper. [#98243](https://github.com/ClickHouse/ClickHouse/pull/98243) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Actualización de ClickStack a la versión 2.20.0. [#98252](https://github.com/ClickHouse/ClickHouse/pull/98252) ([Aaron Knudtson](https://github.com/knudtty)).
* Se agregó un nuevo evento de perfil `KeeperRequestTotalWithSubrequests` que cuenta cada subsolicitud dentro de una solicitud múltiple de forma individual, lo que ofrece una mejor visibilidad de la carga de trabajo real de Keeper. El evento existente `KeeperRequestTotal` sigue contando cada solicitud múltiple como una sola solicitud. [#98348](https://github.com/ClickHouse/ClickHouse/pull/98348) ([Antonio Andelic](https://github.com/antonio2368)).
* `SYSTEM RELOAD DICTIONARIES` ahora recarga los diccionarios en orden topológico para que los diccionarios que toman datos de otros diccionarios vean datos actualizados tras la recarga. [#98356](https://github.com/ClickHouse/ClickHouse/pull/98356) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Reiniciar la caché de estadísticas después de cambiar la configuración de MergeTree. [#98520](https://github.com/ClickHouse/ClickHouse/pull/98520) ([Han Fei](https://github.com/hanfei1991)).
* Solo las réplicas "vivas" (a las que se puede acceder) participan en el análisis distribuido de índices. [#98521](https://github.com/ClickHouse/ClickHouse/pull/98521) ([Azat Khuzhin](https://github.com/azat)).
* Se añade la configuración `access_control_improvements.disallow_config_defined_profiles_for_sql_defined_users` (deshabilitada/permitida de forma predeterminada), que impide usar perfiles de configuración definidos en la configuración (excepto el perfil `default`) para usuarios definidos mediante SQL. [#98662](https://github.com/ClickHouse/ClickHouse/pull/98662) ([Alexander Tokmakov](https://github.com/tavplubix)).
* Se limita el número de nodos usados por la heurística automática de réplicas paralelas al número real de nodos del clúster (en lugar de basarse solo en la configuración `max_parallel_replicas`). [#98668](https://github.com/ClickHouse/ClickHouse/pull/98668) ([Nikita Taranov](https://github.com/nickitat)).
* Implementación de solicitudes redundantes y lectura asíncrona para el análisis distribuido de índices. [#98724](https://github.com/ClickHouse/ClickHouse/pull/98724) ([Azat Khuzhin](https://github.com/azat)).
* La deserialización de estados `AggregateFunction` binarios ahora requiere consumir toda la entrada. Si hay bytes redundantes adicionales al final, ClickHouse lanza una excepción en lugar de aceptar datos de estado malformados. [#98786](https://github.com/ClickHouse/ClickHouse/pull/98786) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Hacer que TRUNCATE DATABASE responda a la cancelación de consultas. [#98828](https://github.com/ClickHouse/ClickHouse/pull/98828) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se mejora `keeper-bench` con canalización de solicitudes, período de calentamiento, estadísticas por operación, semillas reproducibles y una mejor gestión de errores. [#98906](https://github.com/ClickHouse/ClickHouse/pull/98906) ([Antonio Andelic](https://github.com/antonio2368)).
* Se admite la cláusula SAMPLE en el análisis distribuido de índices. [#98931](https://github.com/ClickHouse/ClickHouse/pull/98931) ([Azat Khuzhin](https://github.com/azat)).
* Mostrar el título del gráfico en el dashboard incluso cuando la consulta devuelve un resultado vacío o produce un error. [#98975](https://github.com/ClickHouse/ClickHouse/pull/98975) ([Yash ](https://github.com/Onyx2406)).
* Los mensajes de error del analizador ya no muestran todas las columnas de una tabla (lo que podía generar excepciones de más de 150 KB). Las listas de columnas ahora están limitadas a 10 elementos. [#99002](https://github.com/ClickHouse/ClickHouse/pull/99002) ([Yash ](https://github.com/Onyx2406)).
* Devolver correctamente las estadísticas de las columnas de las subconsultas con joins para que la consulta padre pueda utilizarlas para reordenar los joins. [#99096](https://github.com/ClickHouse/ClickHouse/pull/99096) ([Alexander Gololobov](https://github.com/davenger)).
* Marque la sesión de ZooKeeper como expirada inmediatamente al comenzar la finalización, en lugar de esperar a que termine el hilo de envío. Esto permite que otros hilos establezcan una nueva sesión sin demora. [#99102](https://github.com/ClickHouse/ClickHouse/pull/99102) ([Raúl Marín](https://github.com/Algunenano)).
* Se usan más funciones matemáticas de LLVM-libc: `exp`, `exp2`, `expm1`, `fabs`, `fabsl`, `floor`, `fmodl`, `log`, `log2`, `logf`, `pow`, `scalbn`, `scalbnl`, `copysignl`, `nan`, `nanf`, `nanl` y las constantes compartidas `explogxf`. [#99118](https://github.com/ClickHouse/ClickHouse/pull/99118) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Reducir el uso de memoria y corregir una posible duplicación de la salida en el formato collapsed de `system.jemalloc_profile_text`. [#99121](https://github.com/ClickHouse/ClickHouse/pull/99121) ([Antonio Andelic](https://github.com/antonio2368)).
* Se añadió la columna `is_subrequest` a `system.aggregated_zookeeper_log` para separar las solicitudes independientes de las subsolicitudes dentro de las solicitudes Multi/MultiRead. Anteriormente, las subsolicitudes se agregaban en las mismas agrupaciones que las solicitudes independientes y, como cada suboperación se registraba con la duración total de la solicitud múltiple, la latencia media resultaba engañosa. Las subsolicitudes ahora tienen latencia cero. [#99169](https://github.com/ClickHouse/ClickHouse/pull/99169) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Permite el comando `ALTER TABLE MODIFY COLUMN x TTL ...` sin especificar el tipo de columna. [#99208](https://github.com/ClickHouse/ClickHouse/pull/99208) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se omiten las solicitudes obsoletas de Keeper para las sesiones que ya se han desconectado, lo que evita recorridos de ida y vuelta innecesarios de Raft. El número de sesiones finalizadas rastreadas está limitado por la configuración de coordinación `max_finished_sessions_cache_size`. [#99246](https://github.com/ClickHouse/ClickHouse/pull/99246) ([Antonio Andelic](https://github.com/antonio2368)).
* Compatibilidad con índices de texto construidos sobre `mapValues(map)` con el operador `IN`. [#99286](https://github.com/ClickHouse/ClickHouse/pull/99286) ([Anton Popov](https://github.com/CurtizJ)).
* Soporte de autocompletado similar al de una shell en clickhouse keeper-client (gestiona el autocompletado de argumentos entre comillas, es decir, `'foo ba'`, gestiona argumentos escapados, es decir, `foo\ ba`, hace que `ls` imprima los nodos entre comillas si contienen espacios en blanco). [#99312](https://github.com/ClickHouse/ClickHouse/pull/99312) ([Azat Khuzhin](https://github.com/azat)).
* Se evita que el comando `mntr` de Keeper se quede bloqueado por contención de bloqueos. [#99472](https://github.com/ClickHouse/ClickHouse/pull/99472) ([Antonio Andelic](https://github.com/antonio2368)).
* Se reduce la contención de bloqueos en el despachador de Keeper al invocar callbacks y despachar solicitudes de lectura fuera del ámbito del mutex, y se añaden guardas de bloqueo con perfilado para la observabilidad. [#99751](https://github.com/ClickHouse/ClickHouse/pull/99751) ([Antonio Andelic](https://github.com/antonio2368)).
* Se tolera la ausencia de relleno al final del último bloque de archivos Parquet. [#99857](https://github.com/ClickHouse/ClickHouse/pull/99857) ([Seva Potapov](https://github.com/seva-potapov)).

<div id="268-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Corrección de errores (mal funcionamiento visible para el usuario en una versión estable oficial)
</div>

* Corrige cómo se guarda el destino de una tabla Alias como dependencia DDL cuando no está totalmente calificado: ahora se guarda con la base de datos de la tabla Alias en lugar de con la base de datos de la sesión. [#95175](https://github.com/ClickHouse/ClickHouse/pull/95175) ([Enric Calabuig](https://github.com/eclbg)).
* Se corrigió un resultado incorrecto o una excepción durante la lectura de subcolumnas de columnas ALIAS. [#95408](https://github.com/ClickHouse/ClickHouse/pull/95408) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige la ausencia de una columna al usar un alias de identificador no estándar en JOIN con el analizador antiguo. Soluciona [#25594](https://github.com/ClickHouse/ClickHouse/issues/25594), [#47288](https://github.com/ClickHouse/ClickHouse/issues/47288) y [#53263](https://github.com/ClickHouse/ClickHouse/issues/53263). [#95679](https://github.com/ClickHouse/ClickHouse/pull/95679) ([Zhigao Hong](https://github.com/zghong)).
* Soluciona un fallo en las funciones del dialecto Kusto `bin()`, `bin_at()`, `extract()` e `indexof()` cuando se pasan argumentos vacíos. [#95736](https://github.com/ClickHouse/ClickHouse/pull/95736) ([NeedmeFordev](https://github.com/spider-yamet)).
* Prohíbe montar local\_object\_storage (que se utiliza en datalakes sobre el sistema de archivos local y, posiblemente, por LocalDisk) en cualquier lugar distinto de user\_files\_path en clickhouse-client. [#96201](https://github.com/ClickHouse/ClickHouse/pull/96201) ([Daniil Ivanik](https://github.com/divanik)).
* En el motor de tablas `DeltaLake`, se corrige una condición de carrera lógica al cambiar la versión de la instantánea y se eliminan recargas redundantes y costosas de la instantánea. [#96226](https://github.com/ClickHouse/ClickHouse/pull/96226) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrigió un error lógico al hacer attach de una parte en MergeTree si se habían producido varios cambios de nombre encadenados entre el detach y el attach. [#96351](https://github.com/ClickHouse/ClickHouse/pull/96351) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un error por el que los ajustes explícitos enviados junto con `compatibility` en la misma solicitud podían ignorarse de forma silenciosa cuando su valor coincidía con el valor predeterminado del servidor. [#97078](https://github.com/ClickHouse/ClickHouse/pull/97078) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se corrige un problema por el que el client informaba `NETWORK_ERROR` en lugar del error de parsing real (con el número de fila correcto) cuando un INSERT con parsing en paralelo encontraba datos no válidos. [#97339](https://github.com/ClickHouse/ClickHouse/pull/97339) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un problema por el que la función de agregación `sumCount` no podía leer estados serializados antiguos tras la introducción de `Nullable(Tuple)`. Cierra [#97370](https://github.com/ClickHouse/ClickHouse/issues/97370). [#97502](https://github.com/ClickHouse/ClickHouse/pull/97502) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigió la excepción en la comparación de tuplas que involucra elementos del tipo `Nothing` (p. ej., al comparar con elementos de tupla `NULL`) cuando se usa con `GROUPING SETS` y `ORDER BY`. [#97509](https://github.com/ClickHouse/ClickHouse/pull/97509) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige el cálculo no determinista de `uncompressed_hash` para las partes de Compact MergeTree cuando se utilizan varios códecs de compresión, lo que podía provocar un comportamiento incorrecto de deduplicación. [#97522](https://github.com/ClickHouse/ClickHouse/pull/97522) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un error lógico por la falta de stream durante INSERT SELECT con JSON y buckets en shared data. Cierra [#97331](https://github.com/ClickHouse/ClickHouse/issues/97331). [#97523](https://github.com/ClickHouse/ClickHouse/pull/97523) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió el problema por el que las excepciones `MEMORY_LIMIT_EXCEEDED` se informaban incorrectamente como `CORRUPTED_DATA` durante las fusiones de SummingMergeTree y CoalescingMergeTree. [#97537](https://github.com/ClickHouse/ClickHouse/pull/97537) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Soluciona la excepción "Context has expired" en subconsultas correlacionadas que contienen funciones de tabla como `url()`. [#97544](https://github.com/ClickHouse/ClickHouse/pull/97544) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigen excepciones y comportamientos incorrectos en `optimize_syntax_fuse_functions` con proyecciones de agregación, tipos Date y preservación de nombres de columna. [#97545](https://github.com/ClickHouse/ClickHouse/pull/97545) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se elimina la reescritura incorrecta de consultas de `replaceRegexpOne` a `extract`, que producía resultados erróneos cuando la regexp no coincidía; también se corrige una excepción cuando `replaceRegexpOne` se usa con `GROUP BY ... WITH CUBE` y `group_by_use_nulls=1`. [#97546](https://github.com/ClickHouse/ClickHouse/pull/97546) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige el bloqueo indefinido de `DROP DATABASE` con `database_atomic_wait_for_drop_and_detach_synchronously` cuando se fuerza la finalización de la consulta. [#97586](https://github.com/ClickHouse/ClickHouse/pull/97586) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un problema por el que `KILL QUERY` no podía finalizar consultas bloqueadas durante la generación de `WITH FILL`, la carga de diccionarios mediante `dictGet` o `ALTER DELETE` con `mutations_sync=1` en `ReplicatedMergeTree`. [#97589](https://github.com/ClickHouse/ClickHouse/pull/97589) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La función de tabla `loop` llamaba a `inner_storage->read()` directamente, omitiendo la capa del intérprete, donde se aplican las políticas de fila, los privilegios a nivel de columna y otras comprobaciones de seguridad. Esto permitía que un usuario restringido por políticas de fila leyera todas las filas mediante `loop(table)`, incluso cuando un SELECT directo devolvía cero filas. [#97682](https://github.com/ClickHouse/ClickHouse/pull/97682) ([pufit](https://github.com/pufit)).
* Corrige la poda incorrecta de particiones al usar DateTime64 anterior a la época Unix con la función `toDate()`. [#97746](https://github.com/ClickHouse/ClickHouse/pull/97746) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Después de este parche, `hasPartitionId` devolverá `false` si existe otra partición con un ID de partición superior en el conjunto de partes de datos. [#97748](https://github.com/ClickHouse/ClickHouse/pull/97748) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se corrigen posibles fallos al leer gránulos vacíos en datos compartidos avanzados en JSON. Cierra [#97563](https://github.com/ClickHouse/ClickHouse/issues/97563). [#97778](https://github.com/ClickHouse/ClickHouse/pull/97778) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige `Cannot schedule a file` `LOGICAL_ERROR` al hacer `INSERT` en `Distributed` debido a una condición de carrera entre `DROP` e `INSERT`. [#97822](https://github.com/ClickHouse/ClickHouse/pull/97822) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigió un cierre inesperado/fallo de aserción del servidor de ClickHouse en la llamada a `mapContainsKey/mapContainsKeyLike` con el índice de omisión `tokenbf_v1`. [#97826](https://github.com/ClickHouse/ClickHouse/pull/97826) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Se corrigieron las excepciones `LOGICAL&#95;ERROR` causadas por `LowCardinality` dentro de tipos compuestos (`Variant`, `Dynamic`, `Tuple`) en `concatWithSeparator`, `format`, las subconsultas `IN`, `GLOBAL IN` y los joins con filtros en tiempo de ejecución. [#97831](https://github.com/ClickHouse/ClickHouse/pull/97831) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige la excepción `LOGICAL_ERROR` `Chunk info was not set for chunk in MergingAggregatedTransform` al usar `ARRAY JOIN` con la función de tabla `merge()` en varias tablas Distributed combinadas con `GROUP BY`. [#97838](https://github.com/ClickHouse/ClickHouse/pull/97838) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige un cierre inesperado del servidor (`std::terminate`) causado por una excepción no capturada en el destructor del grupo de conexiones HTTP cuando se alcanza el límite estricto del grupo de conexiones en condiciones de alta concurrencia. La excepción `HTTP_CONNECTION_LIMIT_REACHED` podía propagarse desde `~PooledConnection` al devolver una conexión al grupo para su reutilización, lo que provocaba `SIGABRT`. [#97850](https://github.com/ClickHouse/ClickHouse/pull/97850) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige un resultado incorrecto cuando se usa el algoritmo `grace_hash` con joins no equi y el bloque de la izquierda no puede procesarse por completo debido a las restricciones de tamaño del resultado del join. [#97866](https://github.com/ClickHouse/ClickHouse/pull/97866) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Corrige la ineficiencia de rendimiento en el escaneo de metadatos de DeltaLake introducida en [#96686](https://github.com/ClickHouse/ClickHouse/pull/96686). [#97880](https://github.com/ClickHouse/ClickHouse/pull/97880) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrigió una condición de carrera de datos en el client de ZooKeeper entre sendThread y receiveThread. [#97887](https://github.com/ClickHouse/ClickHouse/pull/97887) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige un error por el que no era posible usar CTE con sentencias insert SELECT distribuidas. Continuación de [https://github.com/ClickHouse/ClickHouse/pull/87789](https://github.com/ClickHouse/ClickHouse/pull/87789). Cierra [#95837](https://github.com/ClickHouse/ClickHouse/issues/95837). [#97889](https://github.com/ClickHouse/ClickHouse/pull/97889) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige una excepción en `CachedOnDiskReadBufferFromFile::readBigAt`. Cierra [#97325](https://github.com/ClickHouse/ClickHouse/issues/97325). [#97890](https://github.com/ClickHouse/ClickHouse/pull/97890) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrige la excepción `LOGICAL_ERROR` en el motor `Alias` con columnas materializadas debido a un desajuste de columnas. Cierra [#97907](https://github.com/ClickHouse/ClickHouse/issues/97907). [#97921](https://github.com/ClickHouse/ClickHouse/pull/97921) ([Kai Zhu](https://github.com/nauu)).
* Se corrige la pérdida de datos de Keeper tras un reinicio al usar Azure Blob Storage con metadatos `s3_plain` para el almacenamiento de registros. [#97987](https://github.com/ClickHouse/ClickHouse/pull/97987) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrige una compilación errónea del JIT de la función `sign` para tipos enteros de mayor tamaño que `Int8` — los valores fuera del intervalo -128..127 podían producir un signo incorrecto. [#98012](https://github.com/ClickHouse/ClickHouse/pull/98012) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la excepción `DUPLICATE_COLUMN` y la aparición silenciosa de valores NULL al leer tablas de Delta Lake que usan el modo "name" de asignación de columnas con campos de struct cuyos nombres contienen puntos (p. ej., ``STRUCT<`a.foo`: STRING, `b.foo`: STRING>``). [#98013](https://github.com/ClickHouse/ClickHouse/pull/98013) ([Caio Ishizaka Costa](https://github.com/ch-caioishizaka)).
* Se corrige la mutación tras una actualización ligera y los índices secundarios. [#98044](https://github.com/ClickHouse/ClickHouse/pull/98044) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige un resultado incorrecto en las consultas FINAL al mezclar índices de salto de clave primaria y de columnas que no forman parte de la clave primaria. [#98097](https://github.com/ClickHouse/ClickHouse/pull/98097) ([Raúl Marín](https://github.com/Algunenano)).
* Se aplican comprobaciones de READ ON FILE a file() escalar y a DESCRIBE TABLE file(). [#98115](https://github.com/ClickHouse/ClickHouse/pull/98115) ([Nikolay Degterinsky](https://github.com/evillique)).
* Corrige un fallo por el que, al consultar archivos con un patrón glob (p. ej., `file('dir/**', 'LineAsString')`), se producía una excepción no controlada del sistema de archivos (`STD_EXCEPTION`) si el directorio contenía un enlace simbólico roto. Ahora los enlaces simbólicos rotos se omiten silenciosamente, y la consulta devuelve resultados de todos los archivos válidos. [#98143](https://github.com/ClickHouse/ClickHouse/pull/98143) ([Mark Andreev](https://github.com/mrk-andreev)).
* Se corrigió un segfault durante la optimización del plan de consulta al convertir un outer join en un inner join con `arrayJoin` en una expresión de filtro. [#98147](https://github.com/ClickHouse/ClickHouse/pull/98147) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió el problema por el que el formato `ProtobufList` no funcionaba con el motor Kafka porque el estado de lectura no se restablecía entre mensajes. [#98151](https://github.com/ClickHouse/ClickHouse/pull/98151) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un fallo lógico con analyzer\_compatibility\_join\_using\_top\_level\_identifier y ARRAY JOIN; cierra [#98164](https://github.com/ClickHouse/ClickHouse/issues/98164). [#98179](https://github.com/ClickHouse/ClickHouse/pull/98179) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Configura el componente `Watch` para las respuestas de watch en `aggregated_zookeeper_log` en lugar de dejarlo vacío. [#98202](https://github.com/ClickHouse/ClickHouse/pull/98202) ([Antonio Andelic](https://github.com/antonio2368)).
* Si las columnas de la clave de partición no están incluidas en la clave de ordenación, la poda de particiones podría omitir por error particiones que contienen filas que deberían "prevalecer" durante la deduplicación FINAL. [#98242](https://github.com/ClickHouse/ClickHouse/pull/98242) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrige el error lógico "Bad cast from type DB::ColumnConst to DB::ColumnArray" en `kql_array_sort_asc`/`kql_array_sort_desc` cuando se llama con argumentos constantes de tipo array. [#98251](https://github.com/ClickHouse/ClickHouse/pull/98251) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un acceso fuera de rango en `ColumnConst::getExtremes` que podía provocar un bloqueo cuando `extremes = 1` está habilitado. [#98263](https://github.com/ClickHouse/ClickHouse/pull/98263) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un posible interbloqueo cuando dos operaciones concurrentes de `MOVE PARTITION` actúan sobre el mismo par de tablas en direcciones opuestas. [#98264](https://github.com/ClickHouse/ClickHouse/pull/98264) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El servidor HTTP ahora devuelve un mensaje de error en el cuerpo de la respuesta en las respuestas 400 Bad Request causadas por cabeceras malformadas, en lugar de devolver un cuerpo vacío. [#98268](https://github.com/ClickHouse/ClickHouse/pull/98268) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige resultados incorrectos en el análisis distribuido de índices (función experimental) y en la caché de condiciones de consulta. [#98269](https://github.com/ClickHouse/ClickHouse/pull/98269) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigió la excepción LOGICAL\_ERROR "Resultado no válido de la búsqueda binaria en `MergeTreeSetIndex`", provocada por la conversión `toDate` en columnas clave con datos que cruzan el umbral de 65535. [#98276](https://github.com/ClickHouse/ClickHouse/pull/98276) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción `LOGICAL_ERROR` cuando un RIGHT JOIN contenido dentro de un CROSS JOIN se intercambia mediante la optimización `query_plan_join_swap_table` en la ruta de código heredada del paso de JOIN. [#98279](https://github.com/ClickHouse/ClickHouse/pull/98279) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Validar los datos corruptos durante la deserialización de `DDSketch` para evitar segfaults, excepciones, bucles infinitos y OOM al leer estados corruptos de la función de agregación `quantilesDD`. [#98284](https://github.com/ClickHouse/ClickHouse/pull/98284) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige LOGICAL\_ERROR "Intentando ejecutar la acción PLACEHOLDER" al hacer referencia a columnas correlacionadas de consultas externas dentro de funciones lambda como `arrayMap`. [#98285](https://github.com/ClickHouse/ClickHouse/pull/98285) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una excepción por error lógico en `caseWithExpression` cuando la expresión `CASE` incluye `materialize(NULL)` u otros argumentos `Nullable(Nothing)`. [#98290](https://github.com/ClickHouse/ClickHouse/pull/98290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corregida una excepción por conversión de tipo incorrecta al filtrar la columna virtual `_table` en la table function `merge`. [#98291](https://github.com/ClickHouse/ClickHouse/pull/98291) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un fallo esporádico de deduplicación por el que las reinserciones se deduplicaban incorrectamente debido a un orden de limpieza incoherente entre los directorios `blocks/` y `deduplication_hashes/` de ZooKeeper. [#98293](https://github.com/ClickHouse/ClickHouse/pull/98293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una excepción al usar `ORDER BY ... WITH FILL` junto con `LIMIT BY`. [#98361](https://github.com/ClickHouse/ClickHouse/pull/98361) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la corrupción silenciosa de datos al insertar una columna `Date` de Parquet/Arrow en una columna `Enum`: ahora rechaza correctamente la conversión incompatible de tipos en lugar de almacenar valores `Enum` no válidos. [#98364](https://github.com/ClickHouse/ClickHouse/pull/98364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una excepción al leer un archivo Arrow que contiene una columna `Array` en una tabla con una columna `Nested`. [#98365](https://github.com/ClickHouse/ClickHouse/pull/98365) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigen las mutaciones `MATERIALIZE INDEX` y `MATERIALIZE PROJECTION` que se quedaban bloqueadas cuando se eliminaba el índice o la proyección antes de que terminara la mutación. [#98369](https://github.com/ClickHouse/ClickHouse/pull/98369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una excepción al leer desde `Nullable(Tuple(...))` cuando el nombre de un elemento de Tuple entra en conflicto con la subcolumna `null` de Nullable. [#98372](https://github.com/ClickHouse/ClickHouse/pull/98372) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la excepción "Column ... query tree node does not have valid source node" al hacer join entre una tabla `Merge` (que envuelve una tabla `Distributed`) y otra tabla. [#98376](https://github.com/ClickHouse/ClickHouse/pull/98376) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la conversión incorrecta de Parquet `Bool` a `FixedString` en el lector nativo V3, que producía bytes sin procesar en lugar de una representación de cadena. [#98378](https://github.com/ClickHouse/ClickHouse/pull/98378) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corregido `tryGetColumnDescription` para filtrar las subcolumnas según el tipo de la columna padre, en consonancia con otros métodos de búsqueda de columnas. [#98391](https://github.com/ClickHouse/ClickHouse/pull/98391) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Aceptar credenciales base64 sin relleno en la autenticación HTTP Basic. Algunos clientes HTTP omiten el relleno final `=` en el encabezado `Authorization: Basic`, lo que antes provocaba fallos de autenticación. [#98392](https://github.com/ClickHouse/ClickHouse/pull/98392) ([Amos Bird](https://github.com/amosbird)).
* Corrige resultados incorrectos de la poda de particiones tras fusionar partes con columnas `Nullable` de clave de partición, causados por límites incorrectos del índice min-max. [#98405](https://github.com/ClickHouse/ClickHouse/pull/98405) ([Amos Bird](https://github.com/amosbird)).
* Se corrige una excepción poco frecuente en el ejecutor del pipeline, que podía manifestarse como `Received signal 6` (solo en compilaciones de depuración) cuando la expansión del pipeline se solapa con la cancelación de la consulta debido a una condición de carrera. [#98428](https://github.com/ClickHouse/ClickHouse/pull/98428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción "Column identifier is already registered" cuando se usa `count_distinct_optimization` con la cláusula `QUALIFY`. [#98433](https://github.com/ClickHouse/ClickHouse/pull/98433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la excepción "cannot be inside Nullable type" al usar `IN`/`NOT IN` con argumentos de columna `LowCardinality` (p. ej., `a NOT IN (b)` donde `a` es `LowCardinality(String)`). [#98443](https://github.com/ClickHouse/ClickHouse/pull/98443) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la excepción "Pipeline stuck" en los JOIN `full_sorting_merge`, causada por un interbloqueo en `PingPongProcessor` cuando la optimización `FilterBySetOnTheFly` creó una dependencia circular con `MergeJoinTransform`. [#98454](https://github.com/ClickHouse/ClickHouse/pull/98454) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción `LOGICAL_ERROR` "Projection cannot increase the number of rows in a block" al fusionar partes con un TTL que elimina todas las filas y una proyección de agregación con una clave `GROUP BY` constante. [#98458](https://github.com/ClickHouse/ClickHouse/pull/98458) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una excepción por error lógico cuando `CROSS JOIN` se usa junto con `INNER JOIN USING`. [#98459](https://github.com/ClickHouse/ClickHouse/pull/98459) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una desreferenciación de puntero nulo en `dictGetOrDefault` cuando el argumento de la clave es `Nullable`. [#98460](https://github.com/ClickHouse/ClickHouse/pull/98460) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una excepción en consultas `DISTINCT` al usar proyecciones de agregación cuando `materialize` provoca diferencias de tipo `LowCardinality` entre la consulta y la proyección. [#98462](https://github.com/ClickHouse/ClickHouse/pull/98462) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción LOGICAL\_ERROR cuando se usa `arrayJoin` en una expresión de filtro con OUTER JOIN y `join_use_nulls` activado. [#98464](https://github.com/ClickHouse/ClickHouse/pull/98464) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la excepción de error lógico "La réplica decidió leer en modo WithOrder, no en ReverseOrder" al usar réplicas paralelas con `optimize_aggregation_in_order`. [#98467](https://github.com/ClickHouse/ClickHouse/pull/98467) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un problema por el que ClickHouse Keeper desconectaba a los clientes Java de ZooKeeper después de la solicitud `addWatch`. El cliente Java espera un cuerpo `ErrorResponse` de 4 bytes en la respuesta de `addWatch`, pero Keeper estaba enviando un cuerpo vacío, lo que provocaba `EOFException` y la desconexión de la sesión. Esto rompía `CuratorCache` de Apache Curator y cualquier aplicación Java que usara watches persistentes. Corrige [#98079](https://github.com/ClickHouse/ClickHouse/issues/98079). [#98499](https://github.com/ClickHouse/ClickHouse/pull/98499) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrige que las métricas de Keeper `zk_followers` y `zk_synced_followers` no disminuyeran cuando un follower deja de estar disponible. Se añaden las nuevas métricas `zk_learners` y `zk_synced_non_voting_followers` al comando de cuatro letras `mntr`. Corrige [#54173](https://github.com/ClickHouse/ClickHouse/issues/54173). [#98504](https://github.com/ClickHouse/ClickHouse/pull/98504) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrigió una excepción LOGICAL\_ERROR en `renameAndCommitEmptyParts` que podía producirse cuando `TRUNCATE TABLE` se ejecutaba de manera concurrente con `OPTIMIZE TABLE` usando transacciones de MergeTree. [#98508](https://github.com/ClickHouse/ClickHouse/pull/98508) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un problema por el que el puerto seguro de Raft de Keeper ignoraba `cipherList` y `dhParamsFile` de la configuración de `openSSL`, y siempre usaba los valores predeterminados en lugar de los especificados por el usuario. Cierra [#51188](https://github.com/ClickHouse/ClickHouse/issues/51188). [#98509](https://github.com/ClickHouse/ClickHouse/pull/98509) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrigieron mensajes de log de Keeper engañosos, como "Recibir la solicitud de la sesión X tomó 9963 ms", donde el tiempo informado en realidad se invertía en esperar inactivo en `poll()` entre latidos, y no en realizar la operación en sí. Corrige [#79026](https://github.com/ClickHouse/ClickHouse/issues/79026). [#98510](https://github.com/ClickHouse/ClickHouse/pull/98510) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige un resultado inesperado con read\_in\_order\_use\_virtual\_row y funciones monótonas; cierra [#97837](https://github.com/ClickHouse/ClickHouse/issues/97837). [#98514](https://github.com/ClickHouse/ClickHouse/pull/98514) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrige `LOGICAL_ERROR: Not-ready Set is passed as the second argument for function 'in'` al usar `PREWHERE` con una subconsulta `IN` en tablas MergeTree. [#98522](https://github.com/ClickHouse/ClickHouse/pull/98522) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigen las conexiones TCP de Keeper que, al no responder a la señal de apagado, impedían el cierre ordenado del servidor. [#98525](https://github.com/ClickHouse/ClickHouse/pull/98525) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción "No se encontró la columna de ordenación entre las salidas de ActionsDAG" cuando `query_plan_convert_join_to_in` está habilitado con `query_plan_merge_expressions = 0`. [#98526](https://github.com/ClickHouse/ClickHouse/pull/98526) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un fallo en el origen de diccionario de MongoDB con named collections. Cierra [#97840](https://github.com/ClickHouse/ClickHouse/issues/97840). [#98528](https://github.com/ClickHouse/ClickHouse/pull/98528) ([Pablo Marcos](https://github.com/pamarcos)).
* Se corrigió LOGICAL\_ERROR cuando Identifier queda vacío tras la sustitución de parámetros. [#98530](https://github.com/ClickHouse/ClickHouse/pull/98530) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
* Se corrige un bloqueo mutuo en el pipeline al usar `sort_overflow_mode = 'break'` junto con funciones de ventana. [#98543](https://github.com/ClickHouse/ClickHouse/pull/98543) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la reversión de columnas en el motor Buffer al gestionar una excepción al agregar un bloque nuevo. La lógica anterior podía provocar un estado de las columnas en memoria corrupto. [#98551](https://github.com/ClickHouse/ClickHouse/pull/98551) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió la excepción `Bad cast from type ColumnConst to ColumnDynamic` en la comparación null-safe (`<=>` / `IS NOT DISTINCT FROM`) con columnas const `Dynamic` o `Variant` y `NULL`. También se corrigió que `IS DISTINCT FROM` con `Dynamic`/`Variant` frente a `NULL` devolvía siempre 0 de forma incorrecta. [#98553](https://github.com/ClickHouse/ClickHouse/pull/98553) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió el uso del índice de texto con otros índices de omisión. Anteriormente, podían producirse errores lógicos como "Trying to get non-existing mark" cuando un filtro de consulta utilizaba simultáneamente un índice de texto y otros índices de omisión convencionales. [#98555](https://github.com/ClickHouse/ClickHouse/pull/98555) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrige el error lógico "TABLE\_FUNCTION is not allowed in expression context" cuando una función de tabla con alias aparece varias veces en el mismo ámbito de la consulta (por ejemplo, en las cláusulas `PREWHERE` y `QUALIFY`). [#98557](https://github.com/ClickHouse/ClickHouse/pull/98557) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige el análisis distribuido de índices con expresiones (no solo columnas) en la PK (lo que provoca que no se filtren gránulos redundantes en réplicas remotas). [#98561](https://github.com/ClickHouse/ClickHouse/pull/98561) ([Azat Khuzhin](https://github.com/azat)).
* Impedir la eliminación de una columna cuando sus subcolumnas se utilicen en expresiones default/alias de otras columnas, y usar el analizador para las expresiones default en alter drop column. [#98569](https://github.com/ClickHouse/ClickHouse/pull/98569) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Se corrigió el reintento incorrecto de solicitudes de S3 ante errores no reintentables (incluido `HTTP_CONNECTION_LIMIT_REACHED`) en el client HTTP. [#98598](https://github.com/ClickHouse/ClickHouse/pull/98598) ([Sema Checherinda](https://github.com/CheSema)).
* Se corrige un desbordamiento decimal al aplicar la poda de particiones con DateTime64. [#98628](https://github.com/ClickHouse/ClickHouse/pull/98628) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige dos errores en la compilación JIT de expresiones: un error de copia y pega en la verificación de tipos de `nativeCast` que hacía inalcanzables las ramas de conversión de entero a entero y de float a float, y un `TargetMachine` nulo (`nullptr`) incorrecto pasado a LLVM `PassBuilder`, lo que impedía registrar las pasadas de optimización específicas del destino. [#98660](https://github.com/ClickHouse/ClickHouse/pull/98660) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una elusión de RBAC que permitía a los usuarios ejecutar DESCRIBE sobre cualquier tabla mediante `remote()`, `remoteSecure()`, `cluster()` o `clusterAllReplicas()` apuntando a localhost, sin requerir el privilegio `SHOW_COLUMNS`. [#98669](https://github.com/ClickHouse/ClickHouse/pull/98669) ([pufit](https://github.com/pufit)).
* Corrige la excepción `BAD_GET` y los resultados de consulta incorrectos cuando se usa una expresión no booleana (p. ej., `sin(col)`) tanto en WHERE como en SELECT con un JOIN, debido a que la optimización de push-down de filtros corrompe nodos DAG compartidos. [#98681](https://github.com/ClickHouse/ClickHouse/pull/98681) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige LOGICAL\_ERROR "La réplica decidió leer en modo Default, no en WithOrder" al usar `read_in_order_through_join` con réplicas paralelas. [#98685](https://github.com/ClickHouse/ClickHouse/pull/98685) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la excepción "Bad cast from type `DB::TableFunctionNode` to `DB::QueryNode`" al usar la función de tabla `input` como argumento de `remote`. [#98694](https://github.com/ClickHouse/ClickHouse/pull/98694) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la resurrección de partes de datos obsoletas causada por la limpieza incorrecta de partes vacías que las cubren. [#98698](https://github.com/ClickHouse/ClickHouse/pull/98698) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige una excepción en `LogicalExpressionOptimizerPass` cuando una función booleana en una comparación `equals` devuelve un tipo `Variant`. [#98712](https://github.com/ClickHouse/ClickHouse/pull/98712) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige que `parseDateTimeBestEffort` analizara incorrectamente palabras que comienzan con prefijos de nombres de meses o días de la semana. Cierra [#97965](https://github.com/ClickHouse/ClickHouse/issues/97965). [#98742](https://github.com/ClickHouse/ClickHouse/pull/98742) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige la excepción `UNKNOWN_IDENTIFIER` al consultar la table function `merge()` o el engine `Merge` en tablas con columnas JSON que tienen parámetros distintos (p. ej., diferentes campos `SKIP`) y columnas ALIAS que hacen referencia a subrutas de JSON, cuando está habilitado el nuevo analizador. Cierra [#97812](https://github.com/ClickHouse/ClickHouse/issues/97812). [#98753](https://github.com/ClickHouse/ClickHouse/pull/98753) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige la optimización `optimize_skip_unused_shards` del analizador cuando se usa el motor `Distributed` en una `View`. [#98754](https://github.com/ClickHouse/ClickHouse/pull/98754) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Corrige el acceso por nombre a las subcolumnas de tuplas (p. ej., `SELECT x.a` para `Tuple(a UUID, b Int32)`) en las tablas externas pasadas mediante `--external` en `clickhouse-client`. Cierra [#96925](https://github.com/ClickHouse/ClickHouse/issues/96925). [#98755](https://github.com/ClickHouse/ClickHouse/pull/98755) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió la excepción de `reverseUTF8` con entradas UTF-8 no válidas (truncadas). [#98770](https://github.com/ClickHouse/ClickHouse/pull/98770) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corregida la detección de la utilidad del índice de omisión Set con un predicado OR con false (es decir, or(x, 0)). [#98776](https://github.com/ClickHouse/ClickHouse/pull/98776) ([Azat Khuzhin](https://github.com/azat)).
* Corrige una excepción `LOGICAL_ERROR` (desajuste en la estructura de bloques en `removeUnusedColumns`) que podía producirse con `FINAL` + `PREWHERE` + una expresión `WHERE` constante + agregaciones independientes de las columnas, como `count()`. [#98778](https://github.com/ClickHouse/ClickHouse/pull/98778) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las entradas de `system.trace_log` para las recargas automáticas de diccionarios de ClickHouse ahora tienen identificadores de consulta no vacíos. [#98784](https://github.com/ClickHouse/ClickHouse/pull/98784) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige un fallo en el que podíamos desreferenciar un puntero nulo en tablas del sistema creadas entre el momento en que tomábamos una instantánea de las tablas en la llamada a `IDatabaseTablesIterator::table()` y el momento en que esas tablas cambiaban en otro hilo durante una iteración posterior. [#98792](https://github.com/ClickHouse/ClickHouse/pull/98792) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Se corrige un problema por el que `SYSTEM START REPLICATED VIEW` no activaba la tarea de actualización. [#98797](https://github.com/ClickHouse/ClickHouse/pull/98797) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige la excepción "Inconsistent table names" al usar la función de tabla `view()` con JOINs dentro de otro JOIN (solo con el analizador antiguo). [#98809](https://github.com/ClickHouse/ClickHouse/pull/98809) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige el ajuste de RLIMIT\_SIGPENDING (mediante pending\_signals). [#98829](https://github.com/ClickHouse/ClickHouse/pull/98829) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige una excepción al combinar `loop` con funciones de tabla de clúster. [#98860](https://github.com/ClickHouse/ClickHouse/pull/98860) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* LEFT ANTI JOIN con múltiples columnas de clave de JOIN devolvía resultados incorrectos cuando `enable_join_runtime_filters=1` (que es el valor predeterminado). [#98871](https://github.com/ClickHouse/ClickHouse/pull/98871) ([Alexander Gololobov](https://github.com/davenger)).
* Se corrige `WITH FILL STALENESS`, que producía filas adicionales rellenadas al leer los datos en varios fragmentos (p. ej., con `index_granularity` pequeño). [#98895](https://github.com/ClickHouse/ClickHouse/pull/98895) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige el error lógico "RPNBuilderFunctionTreeNode has A arguments, attempted to get argument at index B" LOGICAL\_ERROR. [#98900](https://github.com/ClickHouse/ClickHouse/pull/98900) ([Azat Khuzhin](https://github.com/azat)).
* Corrige el desajuste en el seguimiento de memoria causado por asignaciones fallidas que no se revertían, el comportamiento indefinido de `nallocx(0)` y un error de una unidad en el seguimiento del pico global. Amplía el seguimiento para abarcar los búferes circulares de `io_uring`. [#98915](https://github.com/ClickHouse/ClickHouse/pull/98915) ([Antonio Andelic](https://github.com/antonio2368)).
* Prohibir adjuntar tablas locales de lago de datos fuera de las rutas del usuario, no solo crearlas. [#98936](https://github.com/ClickHouse/ClickHouse/pull/98936) ([Daniil Ivanik](https://github.com/divanik)).
* Se corrige una condición de carrera que podía causar la excepción "ReadBuffer is canceled" en consultas que usan `urlCluster` o funciones de tabla de clúster similares. [#98955](https://github.com/ClickHouse/ClickHouse/pull/98955) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción `LOGICAL_ERROR` en las funciones financieras (`financialNetPresentValue`, `financialInternalRateOfReturn`, etc.) al pasar argumentos de tipo `BFloat16`. [#98958](https://github.com/ClickHouse/ClickHouse/pull/98958) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigen los skip indexes (y las condiciones de la clave primaria) que no se aplicaban a las columnas ALIAS cuando la fusión de expresiones del plan de consulta está deshabilitada (query\_plan\_merge\_expressions = 0 o query\_plan\_enable\_optimizations = 0). [#98960](https://github.com/ClickHouse/ClickHouse/pull/98960) ([Peng](https://github.com/fastio)).
* Incrementa el evento de perfil `InsertQuery` para inserciones asíncronas. Cierra [#98626](https://github.com/ClickHouse/ClickHouse/issues/98626). [#98962](https://github.com/ClickHouse/ClickHouse/pull/98962) ([Narasimha Pakeer](https://github.com/npakeer)).
* Corrige la excepción "Comportamiento inconsistente de KeyCondition" en compilaciones de depuración cuando la clave primaria contiene valores `NaN` de coma flotante, haciendo que `accurateLess` y `accurateEquals` manejen `NaN` de forma coherente con el orden de ordenación de ClickHouse. Cierra [#98075](https://github.com/ClickHouse/ClickHouse/issues/98075). [#98964](https://github.com/ClickHouse/ClickHouse/pull/98964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* SummingMergeTree ya no suma las columnas de tipo Bool (ni las de otros tipos de dominio). Los valores Bool se conservan tal cual, en lugar de sumarse aritméticamente. [#98976](https://github.com/ClickHouse/ClickHouse/pull/98976) ([Yash ](https://github.com/Onyx2406)).
* Corrige la excepción Scalar doesn't exist que se producía al ejecutar una consulta en un segmento remoto con `optimize_const_name_size` activado y `enable_scalar_subquery_optimization` = 0. Las constantes grandes sustituidas por referencias `__getScalar` en la consulta remota no se enviaban al segmento, lo que hacía que la consulta fallara. [#98979](https://github.com/ClickHouse/ClickHouse/pull/98979) ([andriibeee](https://github.com/andriibeee)).
* Corrige `NOT_FOUND_COLUMN_IN_BLOCK` en algunas consultas con `GROUP BY` y expresiones que incluyen búsquedas inversas en diccionarios, comparaciones de conversión `Date/DateTime` y comparaciones de tuplas. Cierra [#98888](https://github.com/ClickHouse/ClickHouse/issues/98888). [#98980](https://github.com/ClickHouse/ClickHouse/pull/98980) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigió un comportamiento indefinido (desreferenciación de un puntero nulo) al cambiar una columna version/sign/is\_deleted a `EPHEMERAL` o `ALIAS` en motores MergeTree. Ahora, esos cambios se rechazan correctamente. [#98985](https://github.com/ClickHouse/ClickHouse/pull/98985) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un problema por el que `system.grants` omitía, en la columna `access_object`, los parámetros de expresiones regulares de los privilegios `URL` y `S3`. [#98987](https://github.com/ClickHouse/ClickHouse/pull/98987) ([DQ](https://github.com/il9ue)).
* Se corrigieron las lecturas de Iceberg BigLake: las credenciales de ADC ahora se reenvían al client S3 de GCS (lo que corrige errores 403), las credenciales de OAuth2 ahora se codifican para URL antes de enviarse (lo que corrige fallos de autenticación en tokens con caracteres especiales) y el recorrido del espacio de nombres ya no se aborta ante respuestas HTTP 400 de BigLake. [#98998](https://github.com/ClickHouse/ClickHouse/pull/98998) ([Nikita Fomichev](https://github.com/fm4v)).
* Se corrigió un problema por el que `clickhouse-client` no podía cambiar la zona horaria cuando la variable de entorno `TZ` usa la sintaxis de ruta de archivo de POSIX (por ejemplo, `TZ=:/etc/localtime`). [#99000](https://github.com/ClickHouse/ClickHouse/pull/99000) ([Yash ](https://github.com/Onyx2406)).
* Corrige la poda incorrecta o insuficiente cuando se usan `startsWith`, `LIKE` y `NOT LIKE` con una columna `FixedString`. Además, la función de conversión de tipo de `FixedString` a `String` ahora puede podar gránulos cuando se aplica sobre la columna clave. Cierra [#98940](https://github.com/ClickHouse/ClickHouse/issues/98940). [#99001](https://github.com/ClickHouse/ClickHouse/pull/99001) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigió `windowFunnel` con `strict_deduplication`, que devolvía un Level incorrecto al encontrar un evento duplicado. [#99003](https://github.com/ClickHouse/ClickHouse/pull/99003) ([Yash ](https://github.com/Onyx2406)).
* Corrige un error por el que EXISTS ignoraba las cláusulas LIMIT y OFFSET en las subconsultas, lo que provocaba resultados incorrectos cuando la subconsulta no devolvía ninguna fila debido a un OFFSET o a un límite de cero. Cierra [#88722](https://github.com/ClickHouse/ClickHouse/issues/88722). [#99005](https://github.com/ClickHouse/ClickHouse/pull/99005) ([andriibeee](https://github.com/andriibeee)).
* Se corrige la excepción "Block structure mismatch" cuando la optimización de push-down de filtros encuentra una expresión AND que se cortocircuita a una constante con `GROUPING SETS`. [#99010](https://github.com/ClickHouse/ClickHouse/pull/99010) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una excepción al leer partes de parche (actualizaciones ligeras) cuando el plan de consulta no incluye la columna `_part_offset`. [#99023](https://github.com/ClickHouse/ClickHouse/pull/99023) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Una consulta como `SELECT * FROM table WHERE pk_id = ''`, donde `pk_id` es la clave primaria y es de tipo `String`, ahora usará correctamente el índice de clave primaria para filtrar gránulos. [#99027](https://github.com/ClickHouse/ClickHouse/pull/99027) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Se corrigió la excepción `DEPENDENCIES_NOT_FOUND` en el motor Kafka cuando la vista materializada se desacopla mientras el hilo en segundo plano está transmitiendo datos. [#99028](https://github.com/ClickHouse/ClickHouse/pull/99028) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corregida una excepción al crear una tabla con una columna `EPHEMERAL` con el mismo nombre que una columna virtual (p. ej., `_part_offset`). [#99031](https://github.com/ClickHouse/ClickHouse/pull/99031) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige el confuso "inflate failed: error de búfer" al leer archivos comprimidos inexistentes mediante la función de tabla `url()` con patrones glob. Ahora devuelve un resultado vacío, como se esperaba, cuando `http_skip_not_found_url_for_globs` está habilitado. [#99034](https://github.com/ClickHouse/ClickHouse/pull/99034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un fallo del servidor (`std::terminate`) al ejecutar `ALTER TABLE ... DROP PART` en una `patch part` tras un cambio de esquema (p. ej., `ADD COLUMN`). El fallo se producía por la ausencia de columnas del sistema (`_part`) en los metadatos de la parte de cobertura vacía, lo que provocaba una excepción no capturada dentro de un `NOEXCEPT&#95;SCOPE`. [#99036](https://github.com/ClickHouse/ClickHouse/pull/99036) ([Peng](https://github.com/fastio)).
* El proceso del servidor ClickHouse podía bloquearse si se producía una excepción por excederse el límite de memoria durante una *lectura de disco en caché*. Esto ya se ha corregido. [#99042](https://github.com/ClickHouse/ClickHouse/pull/99042) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Corrige `LOGICAL_ERROR` al consultar una tabla que tiene tanto una ROW POLICY como una columna ALIAS al usar `dictGet`. El problema se debía a un acceso prematuro a la expresión de la tabla durante la resolución de la columna ALIAS en el nuevo analizador. [#99065](https://github.com/ClickHouse/ClickHouse/pull/99065) ([Peng](https://github.com/fastio)).
* Corrige un error por acceso fuera de rango cuando el usuario intenta consultar solo columnas virtuales de una tabla Iceberg con los datos en formato Avro. Es un caso extremadamente raro, así que no se marca como crítico. Corrige [#88238](https://github.com/ClickHouse/ClickHouse/issues/88238). [#99080](https://github.com/ClickHouse/ClickHouse/pull/99080) ([alesapin](https://github.com/alesapin)).
* Se corrigió un fallo de segmentación en una CTE recursiva con `remote()` + `view()`. [#99081](https://github.com/ClickHouse/ClickHouse/pull/99081) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se omite el análisis adicional de índices innecesario cuando se aplica la optimización de lectura en orden. [#99084](https://github.com/ClickHouse/ClickHouse/pull/99084) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigió un fallo causado por una excepción por límite de memoria lanzada durante la aplicación de un patch part. [#99086](https://github.com/ClickHouse/ClickHouse/pull/99086) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrigió una aserción de depuración en `DDLWorker` provocada por un `first_failed_task_name` obsoleto después de que se eliminara una entrada de ZooKeeper durante la recuperación tras la reinicialización. [#99099](https://github.com/ClickHouse/ClickHouse/pull/99099) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrigió la reconstrucción de los índices de texto en las fusiones con TTL. [#99107](https://github.com/ClickHouse/ClickHouse/pull/99107) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige un fallo en la consulta `ALTER TABLE ... REMOVE SETTINGS` para el motor de tabla Iceberg. Corrige [#86330](https://github.com/ClickHouse/ClickHouse/issues/86330). [#99108](https://github.com/ClickHouse/ClickHouse/pull/99108) ([alesapin](https://github.com/alesapin)).
* Corrige un error en la optimización `query_plan_convert_any_join_to_semi_or_anti_join`, que devolvía un resultado incorrecto para las filas sin coincidencia. Relacionado: [https://github.com/ClickHouse/ClickHouse/pull/95995](https://github.com/ClickHouse/ClickHouse/pull/95995). [#99112](https://github.com/ClickHouse/ClickHouse/pull/99112) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrige la excepción LOGICAL\_ERROR en `ASTColumnsExceptTransformer::transform`. [#99119](https://github.com/ClickHouse/ClickHouse/pull/99119) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige una evasión de RBAC que permitía a los usuarios obtener la estructura de la tabla mediante `DESCRIBE TABLE` o `CREATE TABLE AS` en funciones de tabla (`mysql()`, `postgresql()`, `sqlite()`, `arrowFlight()`, `jdbc()`, `odbc()`, etc.) sin los privilegios de acceso al origen necesarios. En funciones que infieren el esquema desde servidores remotos, esto también permitía desencadenar conexiones salientes (SSRF) sin autorización. [#99122](https://github.com/ClickHouse/ClickHouse/pull/99122) ([pufit](https://github.com/pufit)).
* Se corrigió el fallo de Keeper (segfault en NuRaft) durante la reconfiguración dinámica y la transferencia de liderazgo. [#99133](https://github.com/ClickHouse/ClickHouse/pull/99133) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Corrige un fallo al usar una tabla Buffer con SAMPLE cuando el destino no lo admite. [#99141](https://github.com/ClickHouse/ClickHouse/pull/99141) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrige el LOGICAL\_ERROR causado por una discrepancia en el orden de las columnas de las partes de parche. [#99164](https://github.com/ClickHouse/ClickHouse/pull/99164) ([Pablo Marcos](https://github.com/pamarcos)).
* Se corrige un cierre inesperado muy poco frecuente cuando una tabla Iceberg contiene archivos en formatos mixtos (ORC y Parquet). Corrige [#88126](https://github.com/ClickHouse/ClickHouse/issues/88126). [#99168](https://github.com/ClickHouse/ClickHouse/pull/99168) ([alesapin](https://github.com/alesapin)).
* Se corrigió un problema por el que `max_execution_time` no se aplicaba a las operaciones de copia de seguridad/restauración. [#99205](https://github.com/ClickHouse/ClickHouse/pull/99205) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrigió un problema por el que `insert_deduplication_token` se ignoraba silenciosamente en las consultas `INSERT SELECT` sin `ORDER BY ALL`. Anteriormente, la deduplicación estaba completamente deshabilitada para los `INSERT SELECT` sin ordenar, incluso cuando se proporcionaba un token de usuario explícito. Ahora, proporcionar `insert_deduplication_token` basta para habilitar la deduplicación independientemente de `ORDER BY ALL`. [#99206](https://github.com/ClickHouse/ClickHouse/pull/99206) ([Desel72](https://github.com/Desel72)).
* Se corrigen las comprobaciones de acceso excesivas durante la optimización `InverseDictionaryLookupPass` al comprobar el privilegio `CREATE_TEMPORARY_TABLE` una sola vez antes de la pasada, en lugar de hacerlo en cada nodo visitado. [#99210](https://github.com/ClickHouse/ClickHouse/pull/99210) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Corrige un problema por el que `clickhouse format --obfuscate` producía SQL no válido al ofuscar tipos de skip index, nombres de códecs de compresión, nombres de motores de base de datos y definiciones de layout/source de diccionarios. [#99260](https://github.com/ClickHouse/ClickHouse/pull/99260) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió un error por el que, en algunos casos, la comparación entre los tipos Time\[64] y DateTime\[64] resultaba confusa; ahora, en casos como este, los valores de Time\[64] se convierten en DateTime\[64] al añadir `1970-01-01` como parte de la fecha. [#99267](https://github.com/ClickHouse/ClickHouse/pull/99267) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Limitar las restricciones de configuración en el worker de DDL para las consultas DDL distribuidas. [#99317](https://github.com/ClickHouse/ClickHouse/pull/99317) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige pequeños problemas en la autenticación TOTP: la opción de CLI `--one-time-password` con contraseña vacía y la validación de los valores de configuración `<digits>` y `<period>`. [#99322](https://github.com/ClickHouse/ClickHouse/pull/99322) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrige el error lógico `unordered_map::at: key not found` en el formato de salida Avro al serializar columnas `Enum8`/`Enum16` con valores no presentes en la definición del enum. [#99332](https://github.com/ClickHouse/ClickHouse/pull/99332) ([Desel72](https://github.com/Desel72)).
* Se corrige CHECK TABLE con serialización dispersa en Tuple con Dynamic. Cierra [#96588](https://github.com/ClickHouse/ClickHouse/issues/96588). [#99351](https://github.com/ClickHouse/ClickHouse/pull/99351) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió una validación excesivamente estricta del preprocesador del índice de texto. [#99359](https://github.com/ClickHouse/ClickHouse/pull/99359) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrige un problema de compatibilidad al actualizar tablas replicadas con índices minmax implícitos de la versión 25.10 a versiones más recientes. [#99392](https://github.com/ClickHouse/ClickHouse/pull/99392) ([Raúl Marín](https://github.com/Algunenano)).
* Se eliminó la compatibilidad con las funciones negadas (`notEquals`, `notLike`, `notIn`) en el análisis del índice de texto. Estas funciones nunca podían descartar ningún gránulo, por lo que su análisis en el índice solo añadía sobrecarga sin aportar ningún beneficio. [#99393](https://github.com/ClickHouse/ClickHouse/pull/99393) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige `optimize_skip_unused_shards` con el nuevo analizador para el caso en que se usaba una tabla `Distributed` dentro de una subconsulta con IN. [#99436](https://github.com/ClickHouse/ClickHouse/pull/99436) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se corrige un error de tipo `heap-use-after-free` en `INTERSECT`/`EXCEPT` cuando la consulta produce nombres de columna duplicados. [#99471](https://github.com/ClickHouse/ClickHouse/pull/99471) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un error lógico en `ALTER TABLE ... DROP PART` cuando se utiliza un parámetro de consulta tipado para el nombre de la parte. [#99489](https://github.com/ClickHouse/ClickHouse/pull/99489) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la excepción `NOT_FOUND_COLUMN_IN_BLOCK` cuando se hacía referencia a un predicado de índice de texto (p. ej., `hasAllTokens`) tanto en las cláusulas `SELECT` como en `WHERE` mediante un alias. [#99504](https://github.com/ClickHouse/ClickHouse/pull/99504) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige los resultados incorrectos al usar `hasAllTokens` con OR entre columnas que tienen índices de texto separados. [#99505](https://github.com/ClickHouse/ClickHouse/pull/99505) ([Anton Popov](https://github.com/CurtizJ)).
* Inicializar la caché de páginas en `clickhouse-local` para que la opción `page_cache_max_size` surta efecto. [#99510](https://github.com/ClickHouse/ClickHouse/pull/99510) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un caso poco frecuente en el que una parte de datos se marcaba incorrectamente como dañada y se desasociaba después de la consulta `DETACH/ATTACH TABLE`. [#99529](https://github.com/ClickHouse/ClickHouse/pull/99529) ([Anton Popov](https://github.com/CurtizJ)).
* Soluciona la excepción `std::length_error` al consultar tablas del sistema vacías con el formato Pretty a través de la interfaz HTTP. [#99541](https://github.com/ClickHouse/ClickHouse/pull/99541) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió `LOGICAL_ERROR` al usar `ALTER TABLE ADD COLUMN` para crear una columna `EPHEMERAL` con el mismo nombre que una columna virtual (p. ej., `_part_offset`). [#99549](https://github.com/ClickHouse/ClickHouse/pull/99549) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un problema por el que las entradas de `VectorSimilarityIndexCache` nunca se expulsaban tras eliminar una parte, debido a claves de caché inconsistentes. [#99575](https://github.com/ClickHouse/ClickHouse/pull/99575) ([Seva Potapov](https://github.com/seva-potapov)).
* Se prohíbe la lectura de credenciales de Google desde un archivo local. Esta configuración es insegura porque permite leer otras credenciales si se conoce la ruta del archivo. [#99584](https://github.com/ClickHouse/ClickHouse/pull/99584) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se corrige la degradación del rendimiento en el analizador. Se eliminan de ARRAY JOIN las columnas no utilizadas. [#99587](https://github.com/ClickHouse/ClickHouse/pull/99587) ([Dmitry Novik](https://github.com/novikd)).
* Se corrigió la lectura del índice de texto en tablas con eliminaciones ligeras y políticas de fila ya existentes. [#99661](https://github.com/ClickHouse/ClickHouse/pull/99661) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrige una desreferenciación de nullptr en el lector de Parquet cuando la ruta filter-in-decoder encuentra páginas descartadas por el filtro. Cierra [#99676](https://github.com/ClickHouse/ClickHouse/issues/99676). [#99677](https://github.com/ClickHouse/ClickHouse/pull/99677) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una operación de seek incorrecta en AsynchronousReadBufferFromFileDescriptor con O\_DIRECT. Cierra [#99358](https://github.com/ClickHouse/ClickHouse/issues/99358). [#99678](https://github.com/ClickHouse/ClickHouse/pull/99678) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió un heap-buffer-overflow en `CompressionCodecT64` y un aborto del proceso en `CompressionCodecMultiple` al descomprimir datos comprimidos malformados. Ambos problemas fueron detectados por nuevos targets de libFuzzer. Los códecs ahora lanzan una excepción en lugar de bloquearse. [#99680](https://github.com/ClickHouse/ClickHouse/pull/99680) ([Rahul](https://github.com/motsc)).
* Retrasar el procesamiento hasta que el servidor termine de cargar todas las tablas. [#99700](https://github.com/ClickHouse/ClickHouse/pull/99700) ([Seva Potapov](https://github.com/seva-potapov)).
* Se corrigió que la fuente de diccionario MySQL omitiera `RemoteHostFilter` con `params` de DDL en línea. [#99720](https://github.com/ClickHouse/ClickHouse/pull/99720) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se corrige un error lógico al iterar sobre tablas de lago de datos en `system.tables`. [#99739](https://github.com/ClickHouse/ClickHouse/pull/99739) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se corrigió el análisis de predicados con la función `IN` en el índice de texto con preprocesador. Se corrigió la colisión entre los tokens buscados en el índice de texto, que podía dar lugar a resultados incorrectos. [#99755](https://github.com/ClickHouse/ClickHouse/pull/99755) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrige un bucle infinito al leer archivos en formato `Npy` con dimensiones negativas en la forma. [#99812](https://github.com/ClickHouse/ClickHouse/pull/99812) ([Desel72](https://github.com/Desel72)).
* Corrige un desbordamiento global de búfer en la función `CRC32` con argumentos `FixedString` al evaluarse con cero filas durante el cálculo de la cabecera del plan de consulta. [#99835](https://github.com/ClickHouse/ClickHouse/pull/99835) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un bloqueo (desreferenciación de puntero nulo) al ejecutar `ALTER TABLE ... MODIFY COLUMN ... COMMENT` en tablas Iceberg. [#99838](https://github.com/ClickHouse/ClickHouse/pull/99838) ([Desel72](https://github.com/Desel72)).
* Se corrigió la configuración `aggregate_functions_null_for_empty` para que funcione con funciones de agregación que devuelven tipos no `Nullable`, como `Array` o `Map` (por ejemplo, `groupArray`, `sumMap`). [#99839](https://github.com/ClickHouse/ClickHouse/pull/99839) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la excepción LOGICAL\_ERROR en la función `midpoint` al llamarla con tipos enteros mixtos con y sin signo. [#99867](https://github.com/ClickHouse/ClickHouse/pull/99867) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción "Block structure mismatch" en consultas con cláusula HAVING en las que la expresión de filtro contiene tanto una agregación envuelta en una función que devuelve NULL como `materialize(0)`. [#99915](https://github.com/ClickHouse/ClickHouse/pull/99915) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un error de aserción en `sipHash128Keyed` (y funciones hash con clave similares) cuando el argumento de datos es un Map con claves de Array u otros tipos de Array anidados. [#99921](https://github.com/ClickHouse/ClickHouse/pull/99921) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la excepción `LOGICAL_ERROR` "Not-ready Set" en la función `IN` durante la optimización del plan de consulta mediante `convertAnyJoinToSemiOrAntiJoin`. [#99939](https://github.com/ClickHouse/ClickHouse/pull/99939) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="263-build-testing-packaging-improvement">
  #### mejora en compilación/pruebas/empaquetado
</div>

* Reducir el tiempo de compilación eliminando inclusiones pesadas de cabeceras y moviendo las instanciaciones costosas de plantillas fuera de las cabeceras. [#97893](https://github.com/ClickHouse/ClickHouse/pull/97893) ([Raúl Marín](https://github.com/Algunenano)).
* Reducir el tiempo de compilación de las funciones aritméticas y de las cabeceras relacionadas reduciendo las matrices de despacho de plantillas y eliminando inclusiones pesadas. [#98204](https://github.com/ClickHouse/ClickHouse/pull/98204) ([Raúl Marín](https://github.com/Algunenano)).
* Usar `mongo-c-driver` 2.2.2. [#98304](https://github.com/ClickHouse/ClickHouse/pull/98304) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Usar `postgres` REL\_18\_3. [#98306](https://github.com/ClickHouse/ClickHouse/pull/98306) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Habilitar el jemalloc allocator para las builds de UBSan para evitar la acumulación de RSS causada por el deficiente comportamiento de recuperación de memoria de `malloc` de glibc. [#98444](https://github.com/ClickHouse/ClickHouse/pull/98444) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Usar el name mangling v0 de Rust y eliminar los símbolos internos de la biblioteca PRQL para reducir la proliferación de nombres de símbolos procedente de las bibliotecas parser combinator. [#98446](https://github.com/ClickHouse/ClickHouse/pull/98446) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Añadir la suite de benchmark TPC-H y el README de TPC-DS a `tests/benchmarks`. [#98495](https://github.com/ClickHouse/ClickHouse/pull/98495) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Añadir pruebas de corrección para las 99 consultas de TPC-DS. [#99204](https://github.com/ClickHouse/ClickHouse/pull/99204) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Añadir una prueba de integración que reproduce el error de DDL CREATE TABLE + ALTER con una réplica fuera de línea ([#44070](https://github.com/ClickHouse/ClickHouse/issues/44070)), marcada como fallo esperado. [#99259](https://github.com/ClickHouse/ClickHouse/pull/99259) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Integrar jemalloc con el prefijo `je_` y eliminar el uso de `--wrap` del enlazador. [#99342](https://github.com/ClickHouse/ClickHouse/pull/99342) ([Azat Khuzhin](https://github.com/azat)).

<div id="262">
  ### Lanzamiento de ClickHouse 26.2, 2026-02-26. [Presentación](https://presentations.clickhouse.com/2026-release-26.2/), [Vídeo](https://www.youtube.com/watch?v=7qHba08vNfo)
</div>

<div id="268-backward-incompatible-change">
  #### Cambio incompatible con versiones anteriores
</div>

* La deduplicación está activada de forma predeterminada para todas las inserciones. Antes estaba desactivada para las inserciones asíncronas y para las MV, pero activada para las inserciones síncronas. El objetivo es tener los mismos valores predeterminados en ambas formas de inserción. Si tiene la deduplicación desactivada explícitamente en su clúster, debe establecer explícitamente `deduplicate_insert='backward_compatible_choice'` para mantener el comportamiento anterior. Lo mismo sucede con `deduplicate_blocks_in_dependent_materialized_views`. [#95970](https://github.com/ClickHouse/ClickHouse/pull/95970) ([Sema Checherinda](https://github.com/CheSema)).
* Se ha mejorado el formato de almacenamiento de las estadísticas. Ahora, todas las estadísticas se almacenan en un único archivo. [#93414](https://github.com/ClickHouse/ClickHouse/pull/93414) ([Anton Popov](https://github.com/CurtizJ)). Si no habilitaste explícitamente las estadísticas de tablas, puedes ignorar este punto.
* Se limitan los metadatos en memoria de S3(Azure)Queue. Las tablas del sistema cambian de nombre de `azure_queue` a `azure_queue_metadata_cache` y de `system.s3queue` a `s3queue_metadata_cache`. [#95809](https://github.com/ClickHouse/ClickHouse/pull/95809) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Anteriormente, al aplicar una función a una columna `Variant`, se devolvía NULL de forma silenciosa cuando un subtipo de `Variant` era incompatible con la función; ahora se lanza una excepción, lo que puede romper consultas que dependían de ese comportamiento silencioso de NULL. [#95811](https://github.com/ClickHouse/ClickHouse/pull/95811) ([Bharat Nallan](https://github.com/bharatnc)).
* Las columnas `DATE` de PostgreSQL ahora se infieren como `Date32` en ClickHouse (en versiones anteriores se inferían como `Date`, lo que provocaba un desbordamiento de los valores fuera de un rango estrecho). Se permite insertar valores `Date32` de nuevo en PostgreSQL. Cierra [#73084](https://github.com/ClickHouse/ClickHouse/issues/73084). [#95999](https://github.com/ClickHouse/ClickHouse/pull/95999) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La semántica de la configuración `do_not_merge_across_partitions_select_final` se aclaró. Anteriormente, la funcionalidad podía habilitarse automáticamente cuando la configuración no se establecía explícitamente en la configuración. Esto provocó confusión en repetidas ocasiones y, lamentablemente, dio lugar a algunos problemas en producción. Ahora, las reglas son más simples: `do_not_merge_across_partitions_select_final=1` habilita la funcionalidad de forma incondicional. Si `do_not_merge_across_partitions_select_final=0`, el modo automático se usa solo si la nueva configuración `enable_automatic_decision_for_merging_across_partitions_for_final=1`; de lo contrario, no se usa. Para preservar en la medida de lo posible el comportamiento anterior, los valores predeterminados se establecieron en `do_not_merge_across_partitions_select_final=0` y `enable_automatic_decision_for_merging_across_partitions_for_final=1`. [#96110](https://github.com/ClickHouse/ClickHouse/pull/96110) ([Nikita Taranov](https://github.com/nickitat)).
* Al crear una tabla de S3 con columnas especificadas explícitamente, ClickHouse ahora valida que esos nombres de columna realmente existan en el esquema del archivo remoto. Las consultas que antes funcionaban con nombres de columna que no coincidían ahora fallarán en el momento de crear la tabla. Esto cierra [#96089](https://github.com/ClickHouse/ClickHouse/issues/96089). [#96194](https://github.com/ClickHouse/ClickHouse/pull/96194) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se prohíbe el uso de subconsultas en ORDER BY y en otras expresiones de clave de tabla. [#96847](https://github.com/ClickHouse/ClickHouse/pull/96847) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se habilita `apply_row_policy_after_final` de forma predeterminada. Inicialmente, cuando `optimize_move_to_prewhere_if_final=0`, tanto ROW POLICY como PREWHERE respetaban FINAL y se aplicaban después de FINAL. Esto se vio afectado por [#87303](https://github.com/ClickHouse/ClickHouse/issues/87303), que ignoraba `optimize_move_to_prewhere_if_final` para el filtro de ROW POLICY. Para corregirlo, este PR habilita la configuración `apply_row_policy_after_final`, introducida en [#91065](https://github.com/ClickHouse/ClickHouse/issues/91065). Con `apply_row_policy_after_final` habilitado, ROW POLICY seguirá respetando FINAL de forma predeterminada, como antes. Este PR es un cambio incompatible porque modifica el comportamiento de `optimize_move_to_prewhere_if_final=1`. Ahora, para que ROW POLICY se aplique antes de FINAL, debe usarse `apply_row_policy_after_final` en lugar de `optimize_move_to_prewhere_if_final`. [#97279](https://github.com/ClickHouse/ClickHouse/pull/97279) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* El tipo `Date` ahora se serializa como el tipo `date32` nativo de Arrow en los formatos Arrow/ArrowStream, en lugar de `uint16`. Herramientas como PyArrow ahora reconocerán correctamente la columna como un tipo de fecha. El comportamiento anterior puede restaurarse con la configuración `output_format_arrow_date_as_uint16`. Se sigue admitiendo la lectura de archivos Arrow antiguos que usaban `uint16` para columnas `Date`. [#96860](https://github.com/ClickHouse/ClickHouse/pull/96860) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-new-feature">
  #### Nueva funcionalidad
</div>

* Ahora los usuarios pueden usar ClickStack (una UI de observabilidad) directamente desde ClickHouse, lo que resulta útil para la depuración y el desarrollo local. [#96597](https://github.com/ClickHouse/ClickHouse/pull/96597) ([Aaron Knudtson](https://github.com/knudtty)).
* Se admite la autenticación mediante contraseña de un solo uso basada en el tiempo (TOTP). [#71273](https://github.com/ClickHouse/ClickHouse/pull/71273) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Añade la configuración de la base de datos `lazy_load_tables`. Cuando está habilitada, las tablas no se cargan durante el arranque de la base de datos; en su lugar, se crea un `StorageTableProxy` ligero y el table engine real se materializa al acceder por primera vez. [#96283](https://github.com/ClickHouse/ClickHouse/pull/96283) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* Se añadió la configuración `input_format_max_block_wait_ms` para emitir bloques de datos al agotarse el tiempo de espera y se permitió procesar los datos restantes cuando una conexión HTTP se cierra de forma inesperada. [#94509](https://github.com/ClickHouse/ClickHouse/pull/94509) ([Mostafa Mohamed Salah](https://github.com/Sasao4o)).
* Integración del catálogo de Google BigLake. Esto cierra [#95339](https://github.com/ClickHouse/ClickHouse/issues/95339). [#97104](https://github.com/ClickHouse/ClickHouse/pull/97104) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se añadió la tabla del sistema `system.tokenizers`, que muestra todos los tokenizadores disponibles. [#96753](https://github.com/ClickHouse/ClickHouse/pull/96753) ([Robert Schulze](https://github.com/rschu1ze)).
* Añadir una nueva tabla del sistema `system.user_defined_functions` para supervisar el estado de carga y la configuración de las UDF. [#90340](https://github.com/ClickHouse/ClickHouse/pull/90340) ([Xu Jia](https://github.com/XuJia0210)).
* Se añade la tabla `system.jemalloc_stats`, que expone estadísticas del allocator de memoria jemalloc (mediante `malloc_stats_print`) para diagnosticar el uso de memoria en servidores compilados con jemalloc. También se añade un endpoint HTTP `/jemalloc.html` en la interfaz HTTP de ClickHouse para visualizar interactivamente estas estadísticas. [#97077](https://github.com/ClickHouse/ClickHouse/pull/97077) ([Antonio Andelic](https://github.com/antonio2368)).
* Se añadió la tabla `system.jemalloc_profile_text` para leer y analizar perfiles del heap de jemalloc. El formato de salida se controla con la configuración `jemalloc_profile_text_output_format` (raw, simbolizado o collapsed; el valor predeterminado es collapsed). La resolución de frames inline se controla con `jemalloc_profile_text_symbolize_with_inline` (cuando está activado, los frames inline se incluyen a costa de una simbolización más lenta; cuando está desactivado, se omiten para obtener una salida más rápida). Para el formato collapsed, `jemalloc_profile_text_collapsed_use_count` controla si las pilas se ponderan por el número de asignaciones activas (true) o por bytes activos (false, valor predeterminado). Esto facilita el perfilado de memoria y la visualización de flame graphs a partir de perfiles del heap de jemalloc. Corrige [#93248](https://github.com/ClickHouse/ClickHouse/issues/93248). [#97218](https://github.com/ClickHouse/ClickHouse/pull/97218) ([Antonio Andelic](https://github.com/antonio2368)).
* Añade la configuración `default_dictionary_database`, que permite a ClickHouse resolver los diccionarios externos a los que se hace referencia sin un calificador de base de datos dentro de una base de datos predeterminada especificada. Esto simplifica la migración de diccionarios globales definidos en XML a diccionarios definidos en SQL por base de datos, lo que permite que las consultas de diccionario existentes (p. ej., dictGet('name', …)) sigan funcionando sin cambios. [#91412](https://github.com/ClickHouse/ClickHouse/pull/91412) ([Dmitrii Plotnikov](https://github.com/dimbo4ka)).
* Soporte para ZooKeeper auxiliar en `DatabaseReplicated`. [#91683](https://github.com/ClickHouse/ClickHouse/pull/91683) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Implementa la nueva función de tabla `primes` y la nueva tabla del sistema `system.primes`, que contiene números primos en orden ascendente. Cierra [#90839](https://github.com/ClickHouse/ClickHouse/issues/90839). [#92776](https://github.com/ClickHouse/ClickHouse/pull/92776) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Los async inserts admiten quorum en paralelo. Los datos insertados se replican en el quorum. Si se detectan duplicados, la consulta espera hasta que los datos insertados previamente también se repliquen. [#93356](https://github.com/ClickHouse/ClickHouse/pull/93356) ([Sema Checherinda](https://github.com/CheSema)).
* Se añadieron las funciones `colorOKLABToSRGB`, `colorSRGBToOKLAB` para convertir valores de sRGB a OKLAB y viceversa. [#93361](https://github.com/ClickHouse/ClickHouse/pull/93361) ([Pranav Tiwari](https://github.com/pranavt84)).
* Un nuevo ajuste `deduplicate_insert` que anula `insert_deduplicate` y `async_insert_deduplicate`. [#94413](https://github.com/ClickHouse/ClickHouse/pull/94413) ([Sema Checherinda](https://github.com/CheSema)).
* La configuración del servidor `insert_deduplication_version` permite realizar la migración a un hash de deduplicación unificado. [#95409](https://github.com/ClickHouse/ClickHouse/pull/95409) ([Sema Checherinda](https://github.com/CheSema)).
* Se añade la función hash `xxh3_128`. [#96055](https://github.com/ClickHouse/ClickHouse/pull/96055) ([Raúl Marín](https://github.com/Algunenano)).
* Se añadió la consulta `OPTIMIZE <table> DRY RUN PARTS <part names>` para simular merges sin hacer commit de la parte resultante. Puede ser útil para pruebas: verificar la corrección del merge en la nueva versión, reproducir de forma determinista errores relacionados con merges y hacer benchmark del rendimiento de los merges de forma fiable. [#96122](https://github.com/ClickHouse/ClickHouse/pull/96122) ([Anton Popov](https://github.com/CurtizJ)).
* Añade una nueva comprobación habilitada de forma predeterminada mediante la configuración `check_named_collection_dependencies` para evitar eliminar colecciones nombradas utilizadas por tablas. [#96181](https://github.com/ClickHouse/ClickHouse/pull/96181) ([Pablo Marcos](https://github.com/pamarcos)).
* Se agregó `system.fail_points` para inspeccionar los failpoints existentes en el servidor y verificar si están habilitados o no. Esto ayudará a automatizar las pruebas. [#96762](https://github.com/ClickHouse/ClickHouse/pull/96762) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Añade acceso basado en roles al catálogo de Glue. Usa la configuración `aws_role_arn` y, opcionalmente, `aws_role_session_name`. [#90825](https://github.com/ClickHouse/ClickHouse/pull/90825) ([Antonio Andelic](https://github.com/antonio2368)).
* Se añadió una configuración, `add_minmax_index_for_temporal_columns`, que, al habilitarse, crea automáticamente índices minmax para todas las columnas `Date`, `Date32`, `Time`, `Time64`, `DateTime` y `DateTime64`. [#93355](https://github.com/ClickHouse/ClickHouse/pull/93355) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Soporte para alias de tabla extendidos en JOINs (consultas como `SELECT * FROM (SELECT 1) AS t(a) JOIN (SELECT 1) AS u(b) ON a = b`). Cierra [#95131](https://github.com/ClickHouse/ClickHouse/issues/95131). [#95331](https://github.com/ClickHouse/ClickHouse/pull/95331) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se añadió compatibilidad con `ALTER TABLE RENAME COLUMN` para tablas Iceberg. Antes, solo se admitían `ADD COLUMN, DROP COLUMN, and MODIFY COLUMN`. [#97455](https://github.com/ClickHouse/ClickHouse/pull/97455) ([murphy-4o](https://github.com/murphy-4o)).

<div id="268-experimental-feature">
  #### Funcionalidad experimental
</div>

* El índice de texto ahora es GA. [#96794](https://github.com/ClickHouse/ClickHouse/pull/96794) ([Robert Schulze](https://github.com/rschu1ze)).
* El tipo de dato `QBit`, para el almacenamiento vectorial cuantizado y empaquetado en bits (usado para la búsqueda aproximada de vecinos más cercanos), ahora está disponible de forma general y ya no requiere habilitar una configuración experimental. [#95358](https://github.com/ClickHouse/ClickHouse/pull/95358) ([Raufs Dunamalijevs](https://github.com/rienath)).
* La búsqueda vectorial en ClickHouse ahora puede usar réplicas en el clúster para *distribuir* la carga y la búsqueda entre las partes del índice vectorial. Esto permite que ClickHouse admita índices vectoriales grandes que superan la capacidad de memoria de una sola VM. [#95876](https://github.com/ClickHouse/ClickHouse/pull/95876) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Se añade un AST fuzzer del servidor controlado por las configuraciones `ast_fuzzer_runs` y `ast_fuzzer_any_query`. Cuando está habilitado, el servidor ejecuta mutaciones aleatorias de cada consulta después de su ejecución normal y descarta los resultados. [#97568](https://github.com/ClickHouse/ClickHouse/pull/97568) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añade la función `iif` al dialecto KQL experimental. [#94790](https://github.com/ClickHouse/ClickHouse/pull/94790) ([happyso](https://github.com/sunyeongchoi)).
* La inferencia de esquema ahora tiene en cuenta `allow_experimental_nullable_tuple_type`. Cuando está habilitado, permite que los tipos de tupla inferidos sean `Nullable(Tuple(...))`, de modo que los objetos anidados que falten puedan convertirse en `NULL` en lugar de en una tupla de elementos `NULL`. [#95525](https://github.com/ClickHouse/ClickHouse/pull/95525) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* La configuración `use_statistics_cache` ahora está habilitada de forma predeterminada, por lo que las estadísticas de columnas se almacenan en caché en memoria para acelerar la optimización de consultas sin necesidad de volver a cargarlas desde cada parte. [#95950](https://github.com/ClickHouse/ClickHouse/pull/95950) ([Han Fei](https://github.com/hanfei1991)).

<div id="268-performance-improvement">
  #### Mejora del rendimiento
</div>

* Permite usar cualquier expresión determinista de la clave primaria para la omisión de datos (por ejemplo, `ORDER BY cityHash64(user_id)`/ `ORDER BY length(user_id)`). En el caso de las expresiones deterministas, ClickHouse puede aplicar la expresión a las constantes de la consulta y usar el resultado en el índice de la clave primaria para predicados como `=`, `IN` y `has`. Si la expresión también es inyectiva (por ejemplo, `ORDER BY hex(p)` o `ORDER BY reverse(tuple(reverse(p), hex(p)))`), podemos usar eficazmente el índice para las formas negadas: `!=`, `NOT IN` y `NOT has`. Cierra [#10685](https://github.com/ClickHouse/ClickHouse/issues/10685). Cierra [#82161](https://github.com/ClickHouse/ClickHouse/issues/82161). [#92952](https://github.com/ClickHouse/ClickHouse/pull/92952) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se ha mejorado el formato de almacenamiento de las estadísticas. Ahora, todas las estadísticas se almacenan en un único archivo. [#93414](https://github.com/ClickHouse/ClickHouse/pull/93414) ([Anton Popov](https://github.com/CurtizJ)).
* Permitir la lectura en paralelo para motores de tabla y funciones remotos en la caché del sistema de archivos. [#71781](https://github.com/ClickHouse/ClickHouse/pull/71781) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se permite usar la caché de páginas en espacio de usuario con archivos locales y con funciones de tabla de almacenamiento de objetos. [#77874](https://github.com/ClickHouse/ClickHouse/pull/77874) ([Michael Kolupaev](https://github.com/al13n321)).
* Se evita el uso innecesario de `memcpy` en la caché de páginas en espacio de usuario. [#77884](https://github.com/ClickHouse/ClickHouse/pull/77884) ([Michael Kolupaev](https://github.com/al13n321)).
* El valor predeterminado de `concurrent_threads_scheduler` ahora es `max_min_fair` en lugar de `fair_round_robin`. Esto mejora la equidad cuando la carga es alta al priorizar las consultas con menos slots asignados, de modo que las consultas de corta duración no se vean penalizadas por las de larga duración. [#95300](https://github.com/ClickHouse/ClickHouse/pull/95300) ([Sergei Trifonov](https://github.com/serxa)).
* Si una consulta `FINAL` usaba la condición de la clave primaria para filtrar, seguida de índices de omisión para otras condiciones, el paso de procesamiento `PrimaryKeyExpand` ahora solo comprobará la intersección de los rangos iniciales preseleccionados de la clave primaria. [#94903](https://github.com/ClickHouse/ClickHouse/pull/94903) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Al usar réplicas paralelas con funciones de tabla como `s3(...)`, las consultas con una sola subconsulta que envuelve la función de tabla ahora se paralelizan automáticamente entre las réplicas, mientras que antes solo se paralelizaban las referencias directas a funciones de tabla. Cierra [#92264](https://github.com/ClickHouse/ClickHouse/issues/92264). [#96332](https://github.com/ClickHouse/ClickHouse/pull/96332) ([phulv94](https://github.com/phulv94)).
* Se habilita la división en segmentos separados de los archivos de datos y del sistema de la caché. [#87834](https://github.com/ClickHouse/ClickHouse/pull/87834) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* Se aceleran algunas operaciones de hash join al implementar despacho dinámico para `ColumnVector::replicate`. [#79573](https://github.com/ClickHouse/ClickHouse/pull/79573) ([Raúl Marín](https://github.com/Algunenano)).
* Mejora del rendimiento para `parallel hash join` en casos de predicados complejos. Anteriormente, procesábamos las filas no emparejadas en un solo hilo, lo que no es óptimo; esta optimización paraleliza el procesamiento de las filas no emparejadas en varios hilos. Se puede activar o desactivar con el ajuste `parallel_non_joined_rows_processing`. Activado de forma predeterminada. [#92068](https://github.com/ClickHouse/ClickHouse/pull/92068) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se optimizó ligeramente el análisis del tipo JSON. [#93614](https://github.com/ClickHouse/ClickHouse/pull/93614) ([Pavel Kruglov](https://github.com/Avogar)).
* Mejora de la huella de memoria del AST. La optimización tiene sentido, ya que los campos no se utilizan cuando no se usa el resaltado ni se analizan VALUES. [#93974](https://github.com/ClickHouse/ClickHouse/pull/93974) ([Ilya Yatsishin](https://github.com/qoega)).
* Optimiza el consumo de memoria de los objetos AST de Tuple con nombres. Coloca los nombres de columna como cadenas en el objeto Tuple en lugar de mantenerlos en nodos literales AST genéricos. [#94704](https://github.com/ClickHouse/ClickHouse/pull/94704) ([Ilya Yatsishin](https://github.com/qoega)).
* Se mejora la desvirtualización con opciones adicionales del enlazador. [#94737](https://github.com/ClickHouse/ClickHouse/pull/94737) ([Nikita Taranov](https://github.com/nickitat)).
* Mejora el rendimiento de la clonación de réplicas para tablas ReplicatedMergeTree con muchas partes agrupando en lotes las solicitudes a ZooKeeper. [#94847](https://github.com/ClickHouse/ClickHouse/pull/94847) ([c-end](https://github.com/c-end)).
* Cuando la etapa de lectura ya tenía filtros PREWHERE, no se podía añadir un filtro nuevo. Este cambio pospone la optimización de PREWHERE hasta después de la optimización de filtros runtime de JOIN, para que los filtros runtime también puedan llevarse a PREWHERE. [#95838](https://github.com/ClickHouse/ClickHouse/pull/95838) ([Alexander Gololobov](https://github.com/davenger)).
* Acelera la compresión del códec `T64` usando despacho dinámico en x86. [#95881](https://github.com/ClickHouse/ClickHouse/pull/95881) ([Raúl Marín](https://github.com/Algunenano)).
* Se acelera `uniq` para tipos numéricos agrupando las inserciones en lotes cuando es posible (sin NULL, sin -If, sin GROUP BY y sin IPv6 ni String). [#95904](https://github.com/ClickHouse/ClickHouse/pull/95904) ([Raúl Marín](https://github.com/Algunenano)).
* Optimizaciones de bajo nivel para Keeper: se ha detectado que `ZooKeeper::observeOperations` supone >20% del consumo de CPU del hilo de recepción de ZooKeeper. Este cambio lo corrige de la siguiente manera: 1. Para `AggregatedZooKeeperLog::stats`, se usa `CityHash64` en lugar de `SipHash`, ya que es >10x más rápido. 2. Para `Coordination::ErrorCounter`, se usa `std::array<std::atomic<UInt32>, N>` en lugar de `std::unordered_map` y `std::mutex`. [#95962](https://github.com/ClickHouse/ClickHouse/pull/95962) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se eliminó la alineación de 64 bytes para ProfileEvents::Counter para ahorrar memoria. [#96097](https://github.com/ClickHouse/ClickHouse/pull/96097) ([Azat Khuzhin](https://github.com/azat)).
* Optimización de memoria: reducir en 50 veces el tamaño de la estructura `CachedOnDiskReadBufferFromFile`. [#96098](https://github.com/ClickHouse/ClickHouse/pull/96098) ([Azat Khuzhin](https://github.com/azat)).
* No copiar los datos antiguos al redimensionar la tabla hash si está vacía. [#96180](https://github.com/ClickHouse/ClickHouse/pull/96180) ([Raúl Marín](https://github.com/Algunenano)).
* Se admiten filtros de runtime de JOIN para JOINs `RIGHT OUTER`. [#96183](https://github.com/ClickHouse/ClickHouse/pull/96183) ([Hechem Selmi](https://github.com/m-selmi)).
* La optimización `enable_join_runtime_filters` ahora es la predeterminada. [#89314](https://github.com/ClickHouse/ClickHouse/pull/89314) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Anteriormente, la optimización direct read del índice de texto se aplicaba solo cuando todas las partes tenían un índice de texto materializado. Este PR añade compatibilidad parcial: si algunas partes tienen un índice de texto materializado, esas partes lo usarán, mientras que las partes sin un índice de texto materializado recurrirán a la expresión de filtro original. [#96411](https://github.com/ClickHouse/ClickHouse/pull/96411) ([Anton Popov](https://github.com/CurtizJ)).
* Se añadieron índices secundarios `minmax` en las columnas de tiempo e índices `bloom_filter` en las columnas `query_id`/`initial_query_id` de las tablas de logs del sistema para agilizar el filtrado. [#96712](https://github.com/ClickHouse/ClickHouse/pull/96712) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La optimización de materialización diferida ahora se aplica a todas las ramas de una consulta `UNION ALL`, no solo a la primera. Las consultas que combinan varias lecturas ordenadas y limitadas de distintas tablas `MergeTree` mediante `UNION ALL` ahora se beneficiarán de la lectura diferida de columnas en cada rama, lo que reduce la E/S. [#96832](https://github.com/ClickHouse/ClickHouse/pull/96832) ([Federico Ginosa](https://github.com/menxit)).
* Optimiza el cálculo del skip index minmax durante INSERT eliminando una copia de datos innecesaria y habilitando el cálculo vectorizado de mínimos/máximos en columnas numéricas. [#97392](https://github.com/ClickHouse/ClickHouse/pull/97392) ([Raúl Marín](https://github.com/Algunenano)).
* El motor `DeltaLake` ahora toma el resultado de `count()` de los metadatos de Delta Lake y muestra las estadísticas correctas de la tabla en system.tables (bytes/filas totales). [#96190](https://github.com/ClickHouse/ClickHouse/pull/96190) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Las columnas no utilizadas también se eliminan del paso de lectura cuando se lee desde un MergeTree. Esto es especialmente útil cuando se hace pushdown de un filtro a `PREWHERE`. [#89982](https://github.com/ClickHouse/ClickHouse/pull/89982) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Se mejoró el procesamiento de la consulta `SHOW TABLES` al obtener solo los nombres de las tablas, y se mejoró getLightweightTablesIterator para que devuelva una estructura que contenga únicamente los nombres de las tablas. Resuelve [#93835](https://github.com/ClickHouse/ClickHouse/issues/93835). [#94467](https://github.com/ClickHouse/ClickHouse/pull/94467) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Mejora `assumeNotNull`, `coalesce` e `ifNull` para permitir la poda de la clave primaria y del `skip index` en predicados de rango cuando las columnas clave se envuelven en estas funciones. Cierra [#94689](https://github.com/ClickHouse/ClickHouse/issues/94689). [#94754](https://github.com/ClickHouse/ClickHouse/pull/94754) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se añaden las extensiones with\_data & with\_stat a la solicitud getChildren de Keeper. Esto permite obtener no solo la lista de hijos, sino también su `stat` y/o `data` en una sola operación. [#94826](https://github.com/ClickHouse/ClickHouse/pull/94826) ([Nikolay Degterinsky](https://github.com/evillique)).
* El análisis de índices se realiza solo una vez (en la mayoría de los casos), independientemente de si se acaba ejecutando un plan local o uno con réplicas paralelas. [#94854](https://github.com/ClickHouse/ClickHouse/pull/94854) ([Nikita Taranov](https://github.com/nickitat)).
* Permite habilitar el análisis distribuido de índices según la cantidad de partes (`distributed_index_analysis_min_parts_to_activate`) y el tamaño de los índices (`distributed_index_analysis_min_indexes_size_to_activate`). [#95216](https://github.com/ClickHouse/ClickHouse/pull/95216) ([Azat Khuzhin](https://github.com/azat)).
* Se habilita la optimización de PREWHERE para tablas Iceberg. [#95476](https://github.com/ClickHouse/ClickHouse/pull/95476) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se reduce el consumo de memoria de algunas clases de AST. [#95514](https://github.com/ClickHouse/ClickHouse/pull/95514) ([Raúl Marín](https://github.com/Algunenano)).
* Limita el número de flujos del pipeline generados con `split_intersecting_parts_ranges_into_layers` habilitado. Ayuda a evitar un consumo excesivo de memoria. [#96478](https://github.com/ClickHouse/ClickHouse/pull/96478) ([Nikita Taranov](https://github.com/nickitat)).
* Se implementó la optimización de conjuntos equivalentes para múltiples joins. Las consultas con múltiples operaciones consecutivas de `INNER JOIN` ahora se benefician de una mejora en la optimización de pushdown de filtros. Cuando las tablas se unen por columnas equivalentes (p. ej., `t1 JOIN t2 ON t1.id = t2.id JOIN t3 ON t2.id = t3.id WHERE t1.id > 10`), los filtros aplicados a cualquier tabla de la cadena se hacen pushdown automáticamente a todas las tablas. Cierra [#96550](https://github.com/ClickHouse/ClickHouse/issues/96550). [#96596](https://github.com/ClickHouse/ClickHouse/pull/96596) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Optimiza el escaneo de metadata de delta lake. Incorpora cambios de la PR de delta-kernel [https://github.com/delta-io/delta-kernel-rs/pull/1827](https://github.com/delta-io/delta-kernel-rs/pull/1827). [#96686](https://github.com/ClickHouse/ClickHouse/pull/96686) ([Kseniia Sumarokova](https://github.com/kssenii)).
* En la base de datos Replicated, no actualice el clúster almacenado en caché para cada consulta de prueba. [#96897](https://github.com/ClickHouse/ClickHouse/pull/96897) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Utiliza el índice de clave primaria al filtrar con `startsWithUTF8` si el prefijo contiene únicamente caracteres ASCII. [#97055](https://github.com/ClickHouse/ClickHouse/pull/97055) ([vkcku](https://github.com/vkcku)).

<div id="268-improvement">
  #### Mejora
</div>

* Añadir trazas de OpenTelemetry para las peticiones de Keeper. [#91332](https://github.com/ClickHouse/ClickHouse/pull/91332) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Nuevas opciones de configuración: `logger.startup_console_level` & `logger.shutdown_console_level` para anular el nivel de registro de la consola durante el inicio y el apagado de ClickHouse, respectivamente. [#95919](https://github.com/ClickHouse/ClickHouse/pull/95919) ([Garrett Thomas](https://github.com/garrettthomaskth)).
* Se respetan las sobrescrituras de la línea de comandos al recargar la configuración. Cierra [#80294](https://github.com/ClickHouse/ClickHouse/issues/80294). [#80295](https://github.com/ClickHouse/ClickHouse/pull/80295) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Permitir sobrescrituras de clave-valor en los parámetros de named collection de la función de tabla `mongodb`. [#89616](https://github.com/ClickHouse/ClickHouse/pull/89616) ([vanchaklar](https://github.com/vanchaklar)).
* La optimización de lectura en orden para las tablas Iceberg ahora también funciona con funciones de ordenación complejas como `icebergBucket` y `icebergTruncate`, no solo con referencias simples a columnas. [#90256](https://github.com/ClickHouse/ClickHouse/pull/90256) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se añade una nueva columna llamada parts\_postpone\_reasons en system.mutations para mejorar el diagnóstico, que muestra los motivos de aplazamiento de las partes. [#92206](https://github.com/ClickHouse/ClickHouse/pull/92206) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Seguimiento de los cambios en el número de filas que se van a leer (debido a inserciones/eliminaciones o al uso de la caché de condiciones de consulta) en `DataflowStatisticsCache`. [#93636](https://github.com/ClickHouse/ClickHouse/pull/93636) ([Nikita Taranov](https://github.com/nickitat)).
* Se admite la consulta SYSTEM RESET DDL WORKER \[ON CLUSTER]. Solicita restablecer el estado de DDLWorker en su thread principal. Resulta útil para refrescar la réplica activa cuando se actualizan los ID del host. [#93780](https://github.com/ClickHouse/ClickHouse/pull/93780) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Se añade compatibilidad con `mutation_ids` en `system.part_log` para los tipos de evento `MUTATE_PART` y `MUTATE_PART_START`. [#93811](https://github.com/ClickHouse/ClickHouse/pull/93811) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Las operaciones en segundo plano (Mutate, Merge) ahora pueden configurarse de forma independiente a través del perfil 'background'. Antes, estas operaciones compartían la configuración con las consultas normales mediante el perfil 'default'. [#93905](https://github.com/ClickHouse/ClickHouse/pull/93905) ([Arsen Muk](https://github.com/arsenmuk)).
* Se añadió más información a `system.crash_log`. [#94112](https://github.com/ClickHouse/ClickHouse/pull/94112) [#95857](https://github.com/ClickHouse/ClickHouse/pull/95857) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se añadió la nueva métrica `QueryNonInternal` para realizar un seguimiento del número de consultas no internas en ejecución. Esta métrica se expone como `ClickHouseMetrics_QueryNonInternal` y ayuda a los operadores a supervisar la concurrencia de consultas con respecto al límite `max_concurrent_queries`, que solo se aplica a las consultas no internas. [#94284](https://github.com/ClickHouse/ClickHouse/pull/94284) ([Ashwath Singh](https://github.com/ashwath)).
* Se añade compatibilidad con la recopilación de estadísticas de bytes de entrada para columnas de partes compactas en `RuntimeDataflowStatisticsCacheUpdater`. [#94626](https://github.com/ClickHouse/ClickHouse/pull/94626) ([Nikita Taranov](https://github.com/nickitat)).
* Añade una comprobación para detectar una configuración incorrecta de Keeper que provoca fallos en la formación del clúster. Cierra [#60932](https://github.com/ClickHouse/ClickHouse/issues/60932). [#94682](https://github.com/ClickHouse/ClickHouse/pull/94682) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Mejorar la deserialización de prefijos JSON al cargar partes. [#94848](https://github.com/ClickHouse/ClickHouse/pull/94848) ([Pavel Kruglov](https://github.com/Avogar)).
* Refactoriza la escritura para usar el pipeline completo de INSERT, que activa las vistas materializadas en la tabla de destino. [#94890](https://github.com/ClickHouse/ClickHouse/pull/94890) ([Kai Zhu](https://github.com/nauu)).
* Usar optimizaciones del plan de búsqueda por similitud vectorial solo si existe el índice para la columna de búsqueda. [#94998](https://github.com/ClickHouse/ClickHouse/pull/94998) ([Eduard Karacharov](https://github.com/korowa)).
* Comprobar el límite total de memoria antes de la autenticación del usuario y lanzar `(total) memory limit exceeded` si el límite total supera lo permitido. [#95003](https://github.com/ClickHouse/ClickHouse/pull/95003) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se añadió la opción de configuración `throw_on_unmatched_row_policies` que, cuando está habilitada, lanza una excepción si un usuario consulta una tabla que tiene políticas de filas pero ninguna de ellas se le aplica, lo que evita el comportamiento ambiguo de devolver todas las filas debido a una mala configuración del control de acceso. [#95014](https://github.com/ClickHouse/ClickHouse/pull/95014) ([Vitaly Baranov](https://github.com/vitlibar)).
* Actualización dinámica de los tokens de acceso de S3 en consultas largas con Unity Catalog. Esto cierra [#93981](https://github.com/ClickHouse/ClickHouse/issues/93981). [#95069](https://github.com/ClickHouse/ClickHouse/pull/95069) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Desactiva la liberación gradual de páginas sucias de jemalloc si ClickHouse está sometido a una presión de memoria sostenida durante `memory_worker_decay_adjustment_period_ms` milisegundos. Vuelve a activarla si ClickHouse opera en condiciones normales durante el mismo periodo de tiempo. [#95145](https://github.com/ClickHouse/ClickHouse/pull/95145) ([Antonio Andelic](https://github.com/antonio2368)).
* Compatibilidad con ZooKeeper auxiliar para S3Queue mediante la configuración `keeper_path` de s3Queue. [#95203](https://github.com/ClickHouse/ClickHouse/pull/95203) ([Diego Nieto](https://github.com/lesandie)).
* Se respeta `max_parts_to_merge_at_once` en las fusiones de partes con eliminación por TTL. [#95315](https://github.com/ClickHouse/ClickHouse/pull/95315) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Añadir `connection_address` y `connection_port` a query\_log para reflejar la conexión física (`address` y `port` se reemplazan al conectarse a través de un proxy y auth\_use\_forwarded\_address=1). [#95471](https://github.com/ClickHouse/ClickHouse/pull/95471) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Corrige el cálculo incorrecto de memoria para la caché de condiciones de la consulta. El problema principal era que no se tenía en cuenta la clave de la caché, que estaba compuesta por varias cadenas (como part\_name, el id de la tabla y la condición SQL completa). [#95478](https://github.com/ClickHouse/ClickHouse/pull/95478) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* El servidor iniciado con la configuración integrada permitirá gestionar usuarios y permisos, guardándolos en el directorio `access`, igual que la configuración habitual. Esto mejora las pruebas. También se habilitaron todas las access\_control\_improvements en la configuración integrada y en clickhouse-local. [#95481](https://github.com/ClickHouse/ClickHouse/pull/95481) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se mejoraron los mensajes de error de autenticación de S3 para incluir una indicación de revisar las credenciales cuando se deniega el acceso. [#95648](https://github.com/ClickHouse/ClickHouse/pull/95648) ([Gerald Latkovic](https://github.com/batkovic75)).
* Se habilita la caché de estadísticas y se establece el período de actualización de la caché en 300 s. [#95841](https://github.com/ClickHouse/ClickHouse/pull/95841) ([Han Fei](https://github.com/hanfei1991)).
* Se añadió el nombre del componente a `system.aggregated_zookeeper_log`. [#95882](https://github.com/ClickHouse/ClickHouse/pull/95882) ([Antonio Andelic](https://github.com/antonio2368)).
* Omitir las lecturas desde el almacenamiento de objetos al consultar las tablas `DeltaLake` desde `system.tables`. [#95899](https://github.com/ClickHouse/ClickHouse/pull/95899) ([Antonio Andelic](https://github.com/antonio2368)).
* Se habilita `enable_max_bytes_limit_for_min_age_to_force_merge` de forma predeterminada si la configuración `compatibility` es `26.2` o superior. [#95917](https://github.com/ClickHouse/ClickHouse/pull/95917) ([Christoph Wurm](https://github.com/cwurm)).
* Delta Lake ya está disponible en macOS. Cierra #95979. [#95985](https://github.com/ClickHouse/ClickHouse/pull/95985) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En versiones anteriores, al combinar expresiones ALTER en conflicto con UPDATE y RENAME COLUMN, se lanzaba un error lógico en lugar de una excepción adecuada. Cierra [#70678](https://github.com/ClickHouse/ClickHouse/issues/70678). [#96022](https://github.com/ClickHouse/ClickHouse/pull/96022) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Mejora la salida de ayuda de todas las aplicaciones de ClickHouse y añade una opción `--no-sudo`, junto con algunas correcciones. Da continuidad a [#58244](https://github.com/ClickHouse/ClickHouse/issues/58244) de [Ilya Yatsishin](https://github.com/qoega). [#96025](https://github.com/ClickHouse/ClickHouse/pull/96025) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se agregó el alias `distanceCosine` para `cosineDistance`, ya que todas las demás funciones de distancia ya tienen un alias de este tipo. [#96065](https://github.com/ClickHouse/ClickHouse/pull/96065) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se añadió compatibilidad con la extensión `with_data` de Keeper para mejorar la obtención de tablas en la base de datos Replicated. [#96090](https://github.com/ClickHouse/ClickHouse/pull/96090) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se actualiza chdig a [v26.2.1](https://github.com/azat/chdig/releases/tag/v26.2.1) (nuevas funcionalidades y compatibilidad con MacOS). [#96113](https://github.com/ClickHouse/ClickHouse/pull/96113) ([Azat Khuzhin](https://github.com/azat)).
* Mejora del pushdown de filtros para `numbers` y `primes`. ClickHouse ahora puede derivar cotas conservadoras de valores a partir de las condiciones `WHERE` cuando no es posible derivar cotas exactas, y restringir en consecuencia la generación de secuencias (por ejemplo, para `WHERE number % 5 < 2 AND number > 100 AND number < 300`, ClickHouse solo generará números entre 100 y 300, y luego aplicará el predicado), evitando escaneos no acotados. Cierra [#84853](https://github.com/ClickHouse/ClickHouse/issues/84853). Cierra [#93913](https://github.com/ClickHouse/ClickHouse/issues/93913). [#96115](https://github.com/ClickHouse/ClickHouse/pull/96115) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Anteriormente, el formateador ponía SELECT entre paréntesis cuando había una cláusula `COMMENT` para evitar ambigüedades en el análisis sintáctico. En su lugar, ahora coloca `COMMENT` antes de `AS SELECT`, lo que elimina la ambigüedad sin necesidad de paréntesis. [#96293](https://github.com/ClickHouse/ClickHouse/pull/96293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La opción de configuración `allow_impersonate_user` ahora se encuentra dentro de la sección `access_control_improvements`, en lugar de ser una opción de configuración del servidor independiente. [#96451](https://github.com/ClickHouse/ClickHouse/pull/96451) ([Vitaly Baranov](https://github.com/vitlibar)).
* Hacer que la opción de configuración `core_dump.size_limit` admita recarga en caliente, para evitar tener que reiniciar los servidores para que los cambios de configuración surtan efecto. [#96524](https://github.com/ClickHouse/ClickHouse/pull/96524) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Mejora la interoperabilidad del perfilador de CPU y del perfilador en tiempo real con los tiempos de espera de socket. [#96601](https://github.com/ClickHouse/ClickHouse/pull/96601) ([Sergei Trifonov](https://github.com/serxa)).
* Evita que reaparezcan los datos eliminados si se ejecuta ADD COLUMN poco después de la mutación DROP COLUMN. [#96713](https://github.com/ClickHouse/ClickHouse/pull/96713) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Cambio del tipo de `function_id` en `system.instrumentation` de LowCardinality(Int32) a Int32. [#96726](https://github.com/ClickHouse/ClickHouse/pull/96726) (Copilot).
* La espera síncrona de las mutaciones respetará la cancelación de consultas y los límites de tiempo. [#96756](https://github.com/ClickHouse/ClickHouse/pull/96756) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió el comando de sistema `SYSTEM RELOAD DELTA KERNEL TRACING <level>` para cambiar el logging de delta-kernel, lo que puede resultar útil para la depuración. [#96763](https://github.com/ClickHouse/ClickHouse/pull/96763) ([Kseniia Sumarokova](https://github.com/kssenii)).
* El filtrado por familia de direcciones IP, es decir, los ajustes `dns_allow_resolve_names_to_ipv4/ipv6`, se aplica incluso si la caché de DNS está deshabilitada. [#96810](https://github.com/ClickHouse/ClickHouse/pull/96810) ([c-end](https://github.com/c-end)).
* Mejora de la introspección de jemalloc. [#96840](https://github.com/ClickHouse/ClickHouse/pull/96840) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige la interfaz web de `/play`, que arrojaba `QUERY_CACHE_USED_WITH_SYSTEM_TABLE` al consultar tablas del sistema. [#96869](https://github.com/ClickHouse/ClickHouse/pull/96869) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Mejora de la interfaz web: cambiar el favicon para indicar el estado de ejecución de una consulta; mostrar los errores de las consultas auxiliares (carga de bases de datos y tablas) en lugar de ignorarlos silenciosamente. Cierra [#85055](https://github.com/ClickHouse/ClickHouse/issues/85055). [#96883](https://github.com/ClickHouse/ClickHouse/pull/96883) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se puede hacer clic en el panel izquierdo de la UI de `/play` para mostrar u ocultar la lista de bases de datos. [#96884](https://github.com/ClickHouse/ClickHouse/pull/96884) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `DROP DATABASE` ahora elimina las tablas en orden inverso de dependencia, lo que mejora la tolerancia a fallos cuando la base de datos contiene tablas con dependencias de carga (por ejemplo, tablas `Distributed` que usan `joinGet`). [#97057](https://github.com/ClickHouse/ClickHouse/pull/97057) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Actualizar yaml-cpp para evitar que se omita YAML no válido. [#97333](https://github.com/ClickHouse/ClickHouse/pull/97333) ([Azat Khuzhin](https://github.com/azat)).
* Mostrar un indicador de carga en la barra lateral de `play.html` mientras se cargan las tablas. [#97531](https://github.com/ClickHouse/ClickHouse/pull/97531) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Añade un botón para copiar al portapapeles los resultados sin procesar de la consulta en la interfaz web integrada (play.html). [#97532](https://github.com/ClickHouse/ClickHouse/pull/97532) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige el ofuscador de consultas (`clickhouse-format --obfuscate`) para que genere SQL que pueda analizarse en más casos. [#97584](https://github.com/ClickHouse/ClickHouse/pull/97584) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Corrección de errores (mal funcionamiento visible para el usuario en una versión estable oficial)
</div>

* Después de `ALTER` que solo afectan a los metadatos, como ampliar los elementos de los Enums, la optimización de la agregación con proyección puede terminar provocando una excepción. [#84143](https://github.com/ClickHouse/ClickHouse/pull/84143) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las vistas materializadas ahora usan como contexto de ejecución la base de datos en la que se crearon, lo que significa que: - es posible omitir la calificación explícita de la base de datos en los nombres a los que se hace referencia en la consulta SELECT de la vista - si no se indica una calificación explícita de la base de datos, se asume la misma base de datos en la que se creó la vista materializada. [#88193](https://github.com/ClickHouse/ClickHouse/pull/88193) ([Dmitry Kovalev](https://github.com/dk-github)).
* Corrige la sustitución de parámetros de consulta en los métodos de autenticación de CREATE USER cuando se usa ON CLUSTER. Los parámetros de consulta en los métodos de autenticación (p. ej., `password`) no se sustituían, lo que provocaba errores UNKNOWN\_QUERY\_PARAMETER en nodos remotos. [#92777](https://github.com/ClickHouse/ClickHouse/pull/92777) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* Se corrigieron inconsistencias en el análisis de índices de texto para las funciones `has`, `mapContainsKey` y `mapContainsValue`. Anteriormente, las consultas que usaban estas funciones podían devolver resultados distintos dependiendo de si la expresión se evaluaba con o sin un índice de texto. [#93578](https://github.com/ClickHouse/ClickHouse/pull/93578) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrige un fallo al adjuntar una tabla a una base de datos `MaterializedPostgreSQL` si `dropReplicationSlot` lanza una excepción durante el desenrollado de la pila. [#96871](https://github.com/ClickHouse/ClickHouse/pull/96871) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Las copias de seguridad podían hacer que el servidor fallara si se ejecutaban muchas copias de seguridad concurrentes que competían por los mismos archivos. [#93659](https://github.com/ClickHouse/ClickHouse/pull/93659) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige las consultas con réplicas paralelas y un JOIN con una tabla no MT. Cierra [#92056](https://github.com/ClickHouse/ClickHouse/issues/92056). [#93902](https://github.com/ClickHouse/ClickHouse/pull/93902) ([Igor Nikonov](https://github.com/devcrafter)).
* Corrige un problema por el cual las columnas de Iceberg con un punto en el nombre devolvían NULL como valor. [#94335](https://github.com/ClickHouse/ClickHouse/pull/94335) ([Mikhail Koviazin](https://github.com/mkmkme)).
* Se corrigió el manejo de cadenas UTF-8 en `stringJaccardIndexUTF8` y se mejoró el rendimiento. [#94613](https://github.com/ClickHouse/ClickHouse/pull/94613) ([Joanna Hulboj](https://github.com/jh0x)).
* Corrige posibles desbordamientos en `WITH FILL STALENESS` (que provocan UB y/o bucles infinitos). Corrige un posible bucle infinito debido a saltos grandes. Añade compatibilidad con el analizador antiguo (principalmente para pruebas de estrés). [#94663](https://github.com/ClickHouse/ClickHouse/pull/94663) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigen posibles consultas distribuidas que pueden quedar bloqueadas cuando los nombres de host se resuelven en varias direcciones y una réplica remota se congela. [#94726](https://github.com/ClickHouse/ClickHouse/pull/94726) ([c-end](https://github.com/c-end)).
* Corrige un resultado no válido al unir varias expresiones de tabla, cuando la expresión de tabla más a la izquierda es una función de tabla `-Cluster`. Resuelve [#89996](https://github.com/ClickHouse/ClickHouse/issues/89996). [#94748](https://github.com/ClickHouse/ClickHouse/pull/94748) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Corrige la poda incorrecta de la clave primaria y del índice de omisión para predicados que involucran `toWeek`, `toYearWeek`, `toStartOfWeek`, `toLastDayOfWeek` y `toDayOfWeek`, y corrige excepciones en algunas de estas funciones para consultas válidas con `LowCardinality(String)`. [#94816](https://github.com/ClickHouse/ClickHouse/pull/94816) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se elimina la omisión innecesaria de la comprobación de permisos en las consultas `ATTACH` para una vista con SQL Security. Esto evita una posible escalada de privilegios cuando un usuario adjunta una vista con un definidor sin validar el acceso requerido. [#94865](https://github.com/ClickHouse/ClickHouse/pull/94865) ([pufit](https://github.com/pufit)).
* Corrige un fallo al iniciar `ReplicatedMergeTree` causado por la eliminación simultánea de los directorios `delete_tmp_*`. [#94892](https://github.com/ClickHouse/ClickHouse/pull/94892) ([myeongjun](https://github.com/myeongjjun)).
* Se corrige un problema por el que `INSERT` en tablas Iceberg con vistas materializadas perdía información de deduplicación, lo que provocaba una excepción. [#94938](https://github.com/ClickHouse/ClickHouse/pull/94938) ([Daniil Ivanik](https://github.com/divanik)).
* Corrige un error por el que `SYSTEM DROP QUERY CACHE TAG 'TAGNAME' ON CLUSTER <CLUSTERNAME>` hacía que se eliminara toda la caché del clúster. [#94978](https://github.com/ClickHouse/ClickHouse/pull/94978) ([Rory Crispin](https://github.com/RoryCrispin)).
* Mantener la granularidad constante del índice (use\_const\_adaptive\_granularity) tras las fusiones verticales (v2 con una corrección para Nested y en general). [#95013](https://github.com/ClickHouse/ClickHouse/pull/95013) ([Azat Khuzhin](https://github.com/azat)).
* Corrige una condición de carrera en la caché del sistema de archivos en la versión 26.1 tras \[ClickHouse/ClickHouse[#82764](https://github.com/ClickHouse/ClickHouse/issues/82764)]\([https://github.com/ClickHouse/ClickHouse/pull/82764](https://github.com/ClickHouse/ClickHouse/pull/82764)). [#95042](https://github.com/ClickHouse/ClickHouse/pull/95042) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrige la cancelación de la table function postgresql() mediante KILL QUERY y la cancelación de consultas (Ctrl+C) en clickhouse-client. [#95136](https://github.com/ClickHouse/ClickHouse/pull/95136) ([Roman Vasin](https://github.com/rvasin)).
* Se corrigió la inferencia de tipos para columnas calificadas de tablas de origen cuando se usan varios joins con la cláusula `USING`. Anteriormente, los joins posteriores actualizaban incorrectamente los tipos de las columnas subyacentes de las tablas de origen a un supertipo común, incluso cuando la columna no intervenía en ese join (p. ej., en `SELECT t2.a FROM t1 LEFT JOIN t2 USING (a) LEFT JOIN t3 USING (a)`, la columna `t2.a` solo se usa en el primer join, por lo que su tipo debería ser el supertipo de `t1.a` y `t2.a`, excluyendo `t3.a`). Esto podía provocar errores lógicos o fallos cuando las funciones esperaban tipos de columna distintos de los que realmente aparecían en el plan de ejecución. [#95157](https://github.com/ClickHouse/ClickHouse/pull/95157) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Hacer que la transformación de la columna se realice solo una vez al obtener el contenido de la lista y de los archivos `.avro` del manifiesto. [#95164](https://github.com/ClickHouse/ClickHouse/pull/95164) ([Daniil Ivanik](https://github.com/divanik)).
* Se corrigió un cálculo incorrecto del tamaño de las columnas JSON que podía provocar un uso excesivo de memoria o estadísticas de columnas erróneas. [#95207](https://github.com/ClickHouse/ClickHouse/pull/95207) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigió la contabilización inexacta de memoria al aplicar partes de parche grandes después de actualizaciones ligeras. Anteriormente, aplicar parches grandes podía provocar un uso excesivo de memoria y hacer que el proceso del servidor fuera finalizado por el OOM killer. [#95231](https://github.com/ClickHouse/ClickHouse/pull/95231) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrigió un comportamiento indefinido que podía provocar resultados incorrectos o una excepción cuando una consulta distribuida con `max_parallel_replicas` volvía a una réplica local durante el análisis de índices. [#95263](https://github.com/ClickHouse/ClickHouse/pull/95263) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige la agregación de columnas dispersas para `sum` y las series temporales cuando `group_by_overflow_mode` se establece en `any`. [#95301](https://github.com/ClickHouse/ClickHouse/pull/95301) ([Mikhail Koviazin](https://github.com/mkmkme)).
* Corrige un problema de fiabilidad en la política de disco `plain_rewritable`, donde un error de red a mitad del proceso de desvincular un archivo de metadatos podía dejar el almacenamiento en un estado incoherente. [#95302](https://github.com/ClickHouse/ClickHouse/pull/95302) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se sustituye Date por Date32 para Iceberg. [#95322](https://github.com/ClickHouse/ClickHouse/pull/95322) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* El argumento `password` de la función de tabla `redis` ahora se enmascarará en los logs y las tablas del sistema (p. ej.: `query_log`). [#95325](https://github.com/ClickHouse/ClickHouse/pull/95325) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Se corrigió un error por el que las tablas podían eliminarse o modificarse mientras una consulta distribuida seguía ejecutándose en ellas, lo que podía provocar excepciones o resultados incorrectos. [#95356](https://github.com/ClickHouse/ClickHouse/pull/95356) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige un error lógico en algunos casos al usar `LIMIT/OFFSET` negativo en consultas distribuidas. [#95357](https://github.com/ClickHouse/ClickHouse/pull/95357) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigió un error por el que clickhouse-client pedía la contraseña dos veces al conectarse por ssh. [#95372](https://github.com/ClickHouse/ClickHouse/pull/95372) ([Isak Ellmer](https://github.com/spinojara)).
* Se corrige una condición de carrera en el almacenamiento S3(Azure)Queue. [#95385](https://github.com/ClickHouse/ClickHouse/pull/95385) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige el error del filtro de prewhere causado por expresiones lambda en prewhere. [#95395](https://github.com/ClickHouse/ClickHouse/pull/95395) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Se corrige `optimize_syntax_fuse_functions` para que no reescriba `sum/count/avg` como `sumCount()` cuando el argumento de agregación es `Nullable`. Cierra [#95390](https://github.com/ClickHouse/ClickHouse/issues/95390). [#95441](https://github.com/ClickHouse/ClickHouse/pull/95441) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se evita un posible fallo en las consultas distribuidas en caso de cancelación. [#95466](https://github.com/ClickHouse/ClickHouse/pull/95466) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* Se corrige la deduplicación del streaming desde el motor S3(Azure)Queue. [#95467](https://github.com/ClickHouse/ClickHouse/pull/95467) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrigió la actualización de las políticas de filas asignadas al usuario inicial en consultas distribuidas. [#95469](https://github.com/ClickHouse/ClickHouse/pull/95469) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se corrige la comprobación de discos cifrados sobre plain\_rewritable (corrige el posible `It is not possible to register multiple plain-rewritable disks with the same object storage prefix`). [#95470](https://github.com/ClickHouse/ClickHouse/pull/95470) ([Azat Khuzhin](https://github.com/azat)).
* A la función de tabla `mergeTreeProjection` le faltaba una comprobación de acceso, lo que permitía a los usuarios sin permiso SELECT sobre una tabla (pero con permisos para funciones de tabla) leer datos de sus proyecciones. Esta corrección añade la misma comprobación de acceso que ya tienen `mergeTreeIndex` y `mergeTreeAnalyzeIndexes`. [#95480](https://github.com/ClickHouse/ClickHouse/pull/95480) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un posible error lógico al leer la subcolumna de tamaño de las subcolumnas dinámicas de los tipos Dynamic/JSON. [#95573](https://github.com/ClickHouse/ClickHouse/pull/95573) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige una regresión en la replicación sin copia (experimental) introducida por [#94262](https://github.com/ClickHouse/ClickHouse/issues/94262), por la que las partes compartidas podían eliminarse antes de que otras réplicas terminaran de obtenerlas. [#95597](https://github.com/ClickHouse/ClickHouse/pull/95597) ([filimonov](https://github.com/filimonov)).
* Se corrige un cierre inesperado al aplicar `tupleElement` a arrays de JSON. Cierra [#95581](https://github.com/ClickHouse/ClickHouse/issues/95581). [#95647](https://github.com/ClickHouse/ClickHouse/pull/95647) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige la excepción por error lógico al usar un comodín (`*`) dentro de una función lambda en una cláusula VALUES de un JOIN con USING. Cierra [#93675](https://github.com/ClickHouse/ClickHouse/issues/93675). [#95661](https://github.com/ClickHouse/ClickHouse/pull/95661) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigió el error lógico `There was an error: Cannot obtain error message` al esperar un DDL distribuido y eliminar simultáneamente la base de datos Replicated. Corrige el issue [#95539](https://github.com/ClickHouse/ClickHouse/issues/95539). [#95664](https://github.com/ClickHouse/ClickHouse/pull/95664) ([Alexander Tokmakov](https://github.com/tavplubix)).
* Se corrige un problema en la función `IN` que devolvía resultados incorrectos con valores `NULL` cuando `transform_null_in` está habilitada. Cierra [#65776](https://github.com/ClickHouse/ClickHouse/issues/65776). [#95674](https://github.com/ClickHouse/ClickHouse/pull/95674) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Maneja correctamente los tipos `LowCardinality Nullable` en `CAST` cuando la configuración `cast_keep_nullable` está habilitada. Cierra [#95670](https://github.com/ClickHouse/ClickHouse/issues/95670). [#95747](https://github.com/ClickHouse/ClickHouse/pull/95747) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la compactación de datos particionados en Delta Lake. [#95773](https://github.com/ClickHouse/ClickHouse/pull/95773) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrige una condición de carrera en la columna Nullable de `join` en los filtros en tiempo de ejecución. [#95775](https://github.com/ClickHouse/ClickHouse/pull/95775) ([Hechem Selmi](https://github.com/m-selmi)).
* Se corrige un posible error lógico en una consulta con comodines (`*`, `table.*`) y `analyzer_compatibility_join_using_top_level_identifier` cuando la columna `USING` tiene tipos distintos en las tablas y en la lista de selección. Cierra [#90477](https://github.com/ClickHouse/ClickHouse/issues/90477). [#95808](https://github.com/ClickHouse/ClickHouse/pull/95808) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigieron errores de seguridad de memoria en operaciones del pool de hilos en paralelo (copias de seguridad, agregación, consultas distribuidas) que podían causar excepciones cuando se producía un error durante la programación de tareas. [#95818](https://github.com/ClickHouse/ClickHouse/pull/95818) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige un fallo en DROP WORKLOAD cuando se ejecuta de forma concurrente con consultas que usan el workload que se está eliminando. [#95856](https://github.com/ClickHouse/ClickHouse/pull/95856) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la lentitud al consultar las tablas del sistema con un usuario que tiene privilegios limitados en muchas bases de datos. Cierra [#89371](https://github.com/ClickHouse/ClickHouse/issues/89371). [#95874](https://github.com/ClickHouse/ClickHouse/pull/95874) ([pufit](https://github.com/pufit)).
* Se corrigió la ejecución de tupleElement en JSON con rutas anidadas; antes podía dar lugar a resultados de consulta incorrectos. [#95907](https://github.com/ClickHouse/ClickHouse/pull/95907) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió un error `NOT_SUPPORTED` que podía producirse al usar el algoritmo de JOIN `direct` con una tabla MergeTree vacía. [#95935](https://github.com/ClickHouse/ClickHouse/pull/95935) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige un problema por el que el client no sugería ni autocompletaba nombres de alias para configuraciones; cierra [#92190](https://github.com/ClickHouse/ClickHouse/issues/92190). [#95945](https://github.com/ClickHouse/ClickHouse/pull/95945) ([phulv94](https://github.com/phulv94)).
* Se ha corregido event\_date en system.asynchronous\_metric\_log. [#95947](https://github.com/ClickHouse/ClickHouse/pull/95947) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige el manejo de las skipping paths en el tipo de datos JSON. Anteriormente, con `JSON(SKIP path)` se omitían todas las claves JSON con el prefijo `path`, incluso claves como `"pathpath"`, por lo que esto podía provocar pérdida de datos en esas rutas durante el `insert`. Ahora ya está corregido y solo se omite la clave `"path"`. [#95948](https://github.com/ClickHouse/ClickHouse/pull/95948) ([Pavel Kruglov](https://github.com/Avogar)).
* Una parte con proyecciones desconocidas no debe marcarse como perdida definitivamente. [#95952](https://github.com/ClickHouse/ClickHouse/pull/95952) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Corrige un problema por el que la cadena vacía pasaba a ser `NULL` en la tabla `Join` con clave `Nullable(String)`. Cierra [#71414](https://github.com/ClickHouse/ClickHouse/issues/71414). [#96002](https://github.com/ClickHouse/ClickHouse/pull/96002) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ahora, el motor de PostgreSQL puede leer correctamente `BOOLEAN[]`. Cierra [#72754](https://github.com/ClickHouse/ClickHouse/issues/72754). [#96006](https://github.com/ClickHouse/ClickHouse/pull/96006) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige el formato `ProtobufList` en el caso de lectura desde un archivo vacío. Cierra [#70059](https://github.com/ClickHouse/ClickHouse/issues/70059). [#96007](https://github.com/ClickHouse/ClickHouse/pull/96007) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un problema en el formato `ProtobufList`, que generaba un registro fantasma en tablas vacías. Cierra [#72596](https://github.com/ClickHouse/ClickHouse/issues/72596). [#96010](https://github.com/ClickHouse/ClickHouse/pull/96010) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la incompatibilidad de tipos en la función `if` entre `UInt64` e `Int32` en un caso inusual de consultas distribuidas y PREWHERE, con inferencia de tipos. Cierra [#70017](https://github.com/ClickHouse/ClickHouse/issues/70017). [#96012](https://github.com/ClickHouse/ClickHouse/pull/96012) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigen las consultas compiladas con `JIT` que usan tipos `Bool`. [#96013](https://github.com/ClickHouse/ClickHouse/pull/96013) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un error lógico al leer una columna UUID de una columna TEXT de SQLite. Cierra [#71263](https://github.com/ClickHouse/ClickHouse/issues/71263). [#96016](https://github.com/ClickHouse/ClickHouse/pull/96016) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la conversión de tipos del motor SQLite para `DateTime`, `Date`, `UUID` y otros tipos. Cierra [#73481](https://github.com/ClickHouse/ClickHouse/issues/73481). [#96017](https://github.com/ClickHouse/ClickHouse/pull/96017) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los valores `FixedString` se escapaban incorrectamente en consultas a bases de datos externas como SQLite y PostgreSQL. Cierra [#73519](https://github.com/ClickHouse/ClickHouse/issues/73519). En coautoría con @jh0x. [#96019](https://github.com/ClickHouse/ClickHouse/pull/96019) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un error de aserción en WindowTransform con un desplazamiento PRECEDING grande. Cierra [#75852](https://github.com/ClickHouse/ClickHouse/issues/75852). [#96026](https://github.com/ClickHouse/ClickHouse/pull/96026) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un error que podía provocar corrupción de datos cuando las inserciones asíncronas concurrentes usan los mismos nombres de parámetro, pero contienen valores diferentes. [#96035](https://github.com/ClickHouse/ClickHouse/pull/96035) ([Seva Potapov](https://github.com/seva-potapov)).
* Se corrigió el período de los profilers globales (controlado por `global_profiler_real_time_period_ns` y `global_profiler_cpu_time_period_ns`). En lugar del valor configurado, se usaba un valor truncado, lo que hacía que el profiler se activara con más frecuencia de la prevista. [#96048](https://github.com/ClickHouse/ClickHouse/pull/96048) ([Antonio Andelic](https://github.com/antonio2368)).
* Antes, si en una entrada estaba presente el archivo de datos de referencia dentro del archivo de manifiesto de Iceberg para `position delete`, pero su valor era NULL, no obteníamos los límites correctos para los archivos de datos correspondientes. Este PR corrige este error. [#96061](https://github.com/ClickHouse/ClickHouse/pull/96061) ([Daniil Ivanik](https://github.com/divanik)).
* Se corrige la revocación de roles predeterminados. [#96103](https://github.com/ClickHouse/ClickHouse/pull/96103) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se corrige un error de uso tras liberar memoria en el análisis de índices, en una combinación poco frecuente de `use_primary_key` deshabilitado y un número muy elevado de disyunciones de condiciones que utilizan el índice. [#96112](https://github.com/ClickHouse/ClickHouse/pull/96112) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una regresión del códec `Gorilla` cuando un tamaño especificado explícitamente no se corresponde con el tamaño del tipo de dato y el tamaño del búfer es demasiado pequeño. En versiones anteriores, se producía una excepción durante la descompresión. Cierra [#78253](https://github.com/ClickHouse/ClickHouse/issues/78253). [#96118](https://github.com/ClickHouse/ClickHouse/pull/96118) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Evita un interbloqueo al cargar diccionarios cuando un diccionario hace referencia a una tabla Merge que, a su vez, lo referencia de forma recursiva. Cierra [#78360](https://github.com/ClickHouse/ClickHouse/issues/78360). [#96120](https://github.com/ClickHouse/ClickHouse/pull/96120) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrección del uso de un valor no inicializado en `formatDateTime` con especificadores de formato de ancho no fijo, como los de estilo MySQL y JODA. [#96133](https://github.com/ClickHouse/ClickHouse/pull/96133) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La combinación de las opciones `use_const_adaptive_granularity` e `index_granularity_bytes` (que significa "granularidad no adaptativa") provocó un cálculo erróneo del número de filas que se debían leer y una excepción. [#96143](https://github.com/ClickHouse/ClickHouse/pull/96143) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La ejecución de una mutación ALTER UPDATE no válida en tablas de almacenamiento de objetos de tipo archivo, como S3 y Azure, podía provocar una desreferenciación de nullptr. Cierra [#92994](https://github.com/ClickHouse/ClickHouse/issues/92994). [#96162](https://github.com/ClickHouse/ClickHouse/pull/96162) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un problema por el que `AccessRights::contains` devolvía resultados incorrectos con revocaciones parciales. [#96170](https://github.com/ClickHouse/ClickHouse/pull/96170) ([pufit](https://github.com/pufit)).
* Se corrigió la colisión de hash en la caché de condiciones de consulta para constantes plegadas de CTE, lo que podía provocar un resultado de consulta incorrecto. Cierra [#96060](https://github.com/ClickHouse/ClickHouse/issues/96060). [#96172](https://github.com/ClickHouse/ClickHouse/pull/96172) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un posible interbloqueo en ProcessList. Puede ocurrir por una posible inversión en el orden de los bloqueos si el overcommit tracker de memoria se activa mientras añadimos una tarea al verificador de cancelación. [#96182](https://github.com/ClickHouse/ClickHouse/pull/96182) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrigió un error por el que las consultas con joins externos (LEFT, RIGHT o FULL) combinados con varios INNER JOINs podían devolver resultados incorrectos debido a una reordenación no válida de joins. Cuando la condición ON de un join externo hacía referencia a columnas de varias tablas unidas previamente, el optimizador no tenía en cuenta todas las dependencias entre tablas y podía reordenar los joins de forma incorrecta, lo que provocaba la ausencia de filas. Cierra [#95972](https://github.com/ClickHouse/ClickHouse/issues/95972). [#96193](https://github.com/ClickHouse/ClickHouse/pull/96193) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Cuando una tabla no tiene estadísticas definidas, ClickHouse no debería intentar cargarlas. Esto evita cierta sobrecarga (más de 100 ms) al comprobar si existen los archivos de estadísticas. (issue [#96068](https://github.com/ClickHouse/ClickHouse/issues/96068)). [#96233](https://github.com/ClickHouse/ClickHouse/pull/96233) ([Han Fei](https://github.com/hanfei1991)).
* Corrige `optimize_syntax_fuse_functions` para que no reescriba `sum/count/avg` como `sumCount()` cuando el argumento de agregación es `LowCardinality(Nullable)`. Cierra [#95390](https://github.com/ClickHouse/ClickHouse/issues/95390). [#96239](https://github.com/ClickHouse/ClickHouse/pull/96239) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrige la poda incorrecta de particiones con `not IN` y `not has` en algunos casos. [#96241](https://github.com/ClickHouse/ClickHouse/pull/96241) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrige `stack-use-after-scope` en el índice de similitud vectorial. [#96259](https://github.com/ClickHouse/ClickHouse/pull/96259) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un problema por el que el ejecutor de pruebas no reconocía los comentarios de sugerencia de error cuando una consulta estaba precedida por un comentario SQL. [#96336](https://github.com/ClickHouse/ClickHouse/pull/96336) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Se corrige un error lógico en KeyCondition cuando una tabla tiene una clave primaria Nullable y la consulta usa la función `coalesce`, cuyo primer argumento es constante. [#96340](https://github.com/ClickHouse/ClickHouse/pull/96340) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La interacción entre `GROUPING SETS`, `group_by_use_nulls` y el tipo de dato `Tuple` con `LowCardinality` en su interior podía producir una estructura de bloques inesperada en el pipeline de consulta, lo que provocaba un error lógico. Esto surgió tras la introducción de `Tuple`s `Nullable`. [#96358](https://github.com/ClickHouse/ClickHouse/pull/96358) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Era posible crear una tabla con una expresión vacía `()` como índice, lo que provocaba un acceso no válido a la memoria. [#96363](https://github.com/ClickHouse/ClickHouse/pull/96363) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un fallo del analizador antiguo cuando había JOIN y alias duplicados. [#96405](https://github.com/ClickHouse/ClickHouse/pull/96405) ([Ilya Golshtein](https://github.com/ilejn)).
* Se corrigió el error `Nested columns sizes are inconsistent with local_discriminators` debido a una optimización errónea del filtrado in-place para columnas Variant. [#96410](https://github.com/ClickHouse/ClickHouse/pull/96410) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un problema por el que `CREATE TABLE ... CLONE AS ...` ignoraba el calificador completo de la tabla de origen. [#96415](https://github.com/ClickHouse/ClickHouse/pull/96415) ([Hasyimi Bahrudin](https://github.com/hasyimibhar)).
* Corrige la cancelación de la función de tabla `mysql` con KILL QUERY y al cancelar la consulta (Ctrl+C) en clickhouse-client. [#96437](https://github.com/ClickHouse/ClickHouse/pull/96437) ([Roman Vasin](https://github.com/rvasin)).
* Corrige un bloqueo activo en el hilo de comprobación de cancelación de consultas con valores altos de `max_execution_time`. [#96450](https://github.com/ClickHouse/ClickHouse/pull/96450) ([Sergei Trifonov](https://github.com/serxa)).
* Se corrige un error lógico en algunos casos al utilizar valores fraccionarios de `LIMIT/OFFSET` en consultas distribuidas. [#96475](https://github.com/ClickHouse/ClickHouse/pull/96475) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrige una desreferenciación de puntero nulo en ciertas expresiones con funciones lambda. [#96479](https://github.com/ClickHouse/ClickHouse/pull/96479) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige resultados erróneos cuando las columnas `LowCardinality` se convierten en `Nullable`. [#96483](https://github.com/ClickHouse/ClickHouse/pull/96483) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige un fallo al crear una tabla Iceberg con una cláusula `ORDER BY` que hace referencia a una columna inexistente o usa un argumento posicional. Cierra [#93280](https://github.com/ClickHouse/ClickHouse/issues/93280). [#96484](https://github.com/ClickHouse/ClickHouse/pull/96484) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se corrige la excepción del filtro en tiempo de ejecución para columnas Tuple con subcampos Nullable. [#96509](https://github.com/ClickHouse/ClickHouse/pull/96509) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción `LOGICAL_ERROR` en el lector nativo de Parquet V3 cuando la columna de filtro de `PREWHERE` contiene valores UInt8 no booleanos. [#96594](https://github.com/ClickHouse/ClickHouse/pull/96594) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la regeneración implícita de índices en las tablas replicadas durante los cambios de metadatos. [#96600](https://github.com/ClickHouse/ClickHouse/pull/96600) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige una condición de carrera en DROP WORKLOAD. [#96614](https://github.com/ClickHouse/ClickHouse/pull/96614) ([Sergei Trifonov](https://github.com/serxa)).
* Se corrige un error en las escrituras en tablas Iceberg por el que las inserciones en particiones podían provocar una distribución incorrecta de los datos entre los archivos de partición. [#96620](https://github.com/ClickHouse/ClickHouse/pull/96620) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se corrigió `heap-use-after-free` en `CREATE TABLE` con restricciones. [#96669](https://github.com/ClickHouse/ClickHouse/pull/96669) ([Nikita Taranov](https://github.com/nickitat)).
* Validar la versión witness en bech32 para evitar el desbordamiento de búfer. [#96671](https://github.com/ClickHouse/ClickHouse/pull/96671) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige un error por el que `system.tables` producía errores cuando se creaba un catálogo REST de lago de datos con una configuración `auth_header` no válida. [#96680](https://github.com/ClickHouse/ClickHouse/pull/96680) ([Han Fei](https://github.com/hanfei1991)).
* Se corrigió `min(timestamp)`, que devolvía epoch (`1970-01-01`) mediante `_minmax_count_projection` tras una fusión de TTL cuando se filtran todas las filas de un bloque. [#96703](https://github.com/ClickHouse/ClickHouse/pull/96703) ([Raquel Barbadillo](https://github.com/rbarbadillo)).
* Se mejora la validación de la configuración `iceberg_metadata_file_path` para evitar el path traversal y garantizar que el archivo de metadata especificado esté dentro del directorio de la tabla. [#96754](https://github.com/ClickHouse/ClickHouse/pull/96754) ([Daniil Ivanik](https://github.com/divanik)).
* Se corrige un fallo en `ifNull` con el argumento `Variant` utilizado en `GROUP BY`. [#96790](https://github.com/ClickHouse/ClickHouse/pull/96790) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigieron las colisiones de claves de caché entre tablas con la opción `table_disk=1`. [#96818](https://github.com/ClickHouse/ClickHouse/pull/96818) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se corrige que el hilo de purga de MemoryWorker se quedara bloqueado debido a una condición de carrera. [#96819](https://github.com/ClickHouse/ClickHouse/pull/96819) ([Antonio Andelic](https://github.com/antonio2368)).
* No registrar en los logs datos con credenciales en catálogos Iceberg. [#96831](https://github.com/ClickHouse/ClickHouse/pull/96831) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se corrigió el código de salida de clickhouse-client tras un error del servidor. [#96841](https://github.com/ClickHouse/ClickHouse/pull/96841) ([Vitaly Baranov](https://github.com/vitlibar)).
* Las consultas con CROSS JOIN y réplicas paralelas habilitadas podían devolver resultados incorrectos. Soluciona [#74337](https://github.com/ClickHouse/ClickHouse/issues/74337). [#96848](https://github.com/ClickHouse/ClickHouse/pull/96848) ([Igor Nikonov](https://github.com/devcrafter)).
* Se corrigió el error por el que fallaban las consultas `ALTER TABLE DROP COLUMN` tras haberse realizado previamente una actualización ligera en la misma columna. [#96861](https://github.com/ClickHouse/ClickHouse/pull/96861) ([Anton Popov](https://github.com/CurtizJ)).
* Corregido el desbordamiento de pila (fallo) al crear copias de seguridad en formato de archivo (`.zip`, `.tzst`) en un disco `plain_rewritable` de almacenamiento de objetos. [#96872](https://github.com/ClickHouse/ClickHouse/pull/96872) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige el fallo del servidor cuando una copia de seguridad falla por falta de espacio en el disco u otros errores de E/S en el sistema de archivos de destino. [#96873](https://github.com/ClickHouse/ClickHouse/pull/96873) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrección de `EXCEPT ALL` y `INTERSECT ALL`, que no tenían en cuenta la multiplicidad de las filas y se comportaban como sus equivalentes `DISTINCT`. [#96876](https://github.com/ClickHouse/ClickHouse/pull/96876) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción `std::terminate` en `indexOfAssumeSorted` al llamarse con tipos incompatibles (p. ej., un array `IPv4` con un valor de búsqueda entero). [#96877](https://github.com/ClickHouse/ClickHouse/pull/96877) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la excepción `Bad cast from type DB::ColumnNullable to DB::ColumnString` al usar funciones de ventana con `group_by_use_nulls = 1` y CUBE/ROLLUP/GROUPING SETS. [#96878](https://github.com/ClickHouse/ClickHouse/pull/96878) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige resultados incorrectos cuando las expresiones compiladas con JIT convierten `DateTime` a `DateTime64` (p. ej., en `CASE`/`if`/`multiIf` con tipos `DateTime` mixtos). El valor se reinterpretaba en lugar de escalarse correctamente, lo que producía marcas de tiempo incorrectas una vez activada la compilación de expresiones. [#96879](https://github.com/ClickHouse/ClickHouse/pull/96879) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción por error lógico en `CoalescingMergeTree` cuando una expresión de índice de omisión produce una columna constante (p. ej., `bloom_filter` sobre `ifNotFinite(1, c0)` para una columna entera). [#96880](https://github.com/ClickHouse/ClickHouse/pull/96880) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige el número de puerto incorrecto en el mensaje de error al conectarse accidentalmente por HTTP al puerto del protocolo nativo con TLS habilitado. [#96881](https://github.com/ClickHouse/ClickHouse/pull/96881) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrección para que los `SETTINGS` por subconsulta se apliquen a las funciones de tabla como `file` en CTE y subconsultas. [#96882](https://github.com/ClickHouse/ClickHouse/pull/96882) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una fuga de memoria en objetos BIO al leer certificados X509. [#96885](https://github.com/ClickHouse/ClickHouse/pull/96885) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción `LOGICAL_ERROR` en el analizador de consultas cuando se pasa una expresión lambda donde se espera un valor concreto (p. ej., como argumento acumulador de `arrayFold`). [#96892](https://github.com/ClickHouse/ClickHouse/pull/96892) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción `ColumnNullable is not compatible with original` al convertir tipos anidados complejos (Array de Tuple Nullable que contiene Map con valores Enum Nullable). [#96924](https://github.com/ClickHouse/ClickHouse/pull/96924) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una condición de carrera en la carga paralela del diccionario `HASHED` segmentado que, en ocasiones, podía hacer que algunas filas no se cargaran. [#96953](https://github.com/ClickHouse/ClickHouse/pull/96953) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una condición de carrera entre `REPLACE PARTITION` y las mutaciones en segundo plano que podía hacer que tanto los datos antiguos como los nuevos se vieran después del reemplazo. [#96955](https://github.com/ClickHouse/ClickHouse/pull/96955) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió un problema en la función `arrayJoin` que producía filas duplicadas cuando se usaba con INNER JOIN y la cláusula WHERE, debido a que la optimización parcial de push-down de predicados enviaba incorrectamente por debajo de un JOIN los filtros que contenían `arrayJoin`. [#96989](https://github.com/ClickHouse/ClickHouse/pull/96989) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un fallo (SEGFAULT) en `clearCaches` causado por que `BlockIO::operator=` no movía `query_metadata_cache`, lo que provocaba la destrucción prematura de instantáneas de almacenamiento en caché y un acceso a memoria ya liberada en el almacenamiento `MergeTreeData`. [#96995](https://github.com/ClickHouse/ClickHouse/pull/96995) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un fallo de aserción en `IfTransformStringsToEnumPass` cuando la función `if` o `transform` devuelve `Nullable(String)` (p. ej., con `GROUP BY ... WITH CUBE` y `group_by_use_nulls = true`). [#97002](https://github.com/ClickHouse/ClickHouse/pull/97002) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigen los datos incorrectos escritos durante `INSERT ... SELECT` con `UNION ALL` y `JOIN`, donde las columnas de texto constantes podían recibir valores erróneos tras la compactación de bloques. [#97019](https://github.com/ClickHouse/ClickHouse/pull/97019) ([Hasyimi Bahrudin](https://github.com/hasyimibhar)).
* Se corrige la excepción de `assert_cast` (o la corrupción silenciosa de datos en compilaciones release) al generar estadísticas de columnas después de que `ALTER TABLE MODIFY COLUMN` cambie el tipo de la columna. [#97027](https://github.com/ClickHouse/ClickHouse/pull/97027) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigen lecturas de memoria sin inicializar en Azure Blob Storage, el protocolo SSH y las interfaces de Arrow Flight. [#97053](https://github.com/ClickHouse/ClickHouse/pull/97053) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigen los casos en los que los índices afectaban al resultado de las consultas con row policy/PREWHERE y FINAL. [#97076](https://github.com/ClickHouse/ClickHouse/pull/97076) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige la condición de carrera restante entre `REPLACE PARTITION` y las mutaciones en segundo plano en tablas `MergeTree`, que podía provocar la reaparición de datos antiguos. [#97105](https://github.com/ClickHouse/ClickHouse/pull/97105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corregir los índices implícitos con columnas con alias y realizar una validación completa antes de crearlos. [#97115](https://github.com/ClickHouse/ClickHouse/pull/97115) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige un error lógico en `FunctionVariantAdaptor` con funciones que requieren argumentos const, como `arrayROCAUC`. [#97116](https://github.com/ClickHouse/ClickHouse/pull/97116) ([Bharat Nallan](https://github.com/bharatnc)).
* Corregir las mutaciones atascadas cuando `PartCheckThread` vuelve a encolar un `GET_PART` para una parte ya mutada, lo que deja entradas fantasma en `parts_to_do`. [#97162](https://github.com/ClickHouse/ClickHouse/pull/97162) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la estimación del número de filas del plan de consulta para subconsultas con `ORDER BY ... LIMIT`, que podía hacer que el optimizador eligiera un orden de join subóptimo. [#97193](https://github.com/ClickHouse/ClickHouse/pull/97193) ([Alexander Gololobov](https://github.com/davenger)).
* Se corrige la excepción `LOGICAL_ERROR` en `FunctionVariantAdaptor` cuando una función que opera sobre columnas Variant devuelve el tipo `Nothing`, lo que puede ocurrir con Arrays vacíos en consultas `UNION ALL`. [#97213](https://github.com/ClickHouse/ClickHouse/pull/97213) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una condición de carrera durante las operaciones de copia multiparte en S3 (por ejemplo, durante `BACKUP`/`RESTORE` en S3) que podía provocar excepciones en caso de acceso concurrente. [#97227](https://github.com/ClickHouse/ClickHouse/pull/97227) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige la excepción `LOGICAL_ERROR` cuando `arrayJoin` en la cláusula `WHERE` hace referencia a columnas de ambos lados de un `JOIN`. [#97239](https://github.com/ClickHouse/ClickHouse/pull/97239) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la excepción `LOGICAL_ERROR` al leer la subcolumna `.size` de un `Nullable(String)` disperso en una Tuple con PREWHERE. [#97264](https://github.com/ClickHouse/ClickHouse/pull/97264) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción "El número de filas en el fragmento diferido no coincide con el número de desplazamientos" en `LazyMaterializingTransform` al leer tablas con granularidad de índice no adaptativa (`index_granularity_bytes = 0`) usando `ORDER BY ... LIMIT`. [#97270](https://github.com/ClickHouse/ClickHouse/pull/97270) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige que `SYSTEM RESTART REPLICA` pierda una tabla de la base de datos cuando falla la recreación de la tabla con una excepción no relacionada con ZooKeeper (p. ej., límite de memoria), lo que provoca desajustes en el hash de metadatos en `DatabaseReplicated`. [#97276](https://github.com/ClickHouse/ClickHouse/pull/97276) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El campo `readonly` de `system.merge_tree_settings` ahora refleja correctamente que ciertas configuraciones de MergeTree (por ejemplo, `index_granularity`) son incondicionalmente de solo lectura. [#97277](https://github.com/ClickHouse/ClickHouse/pull/97277) ([Robert Schulze](https://github.com/rschu1ze)).
* Se corrigió un cierre inesperado durante la optimización de `count()` en tablas `MergeTree` cuando el snapshot de almacenamiento se creó sin datos. [#97281](https://github.com/ClickHouse/ClickHouse/pull/97281) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige un posible fallo al resolver los nombres de las funciones a partir de la información de depuración de las trazas de pila. [#97294](https://github.com/ClickHouse/ClickHouse/pull/97294) ([Azat Khuzhin](https://github.com/azat)).
* Soluciona un error lógico con analyzer\_compatibility\_join\_using\_top\_level\_identifier y las columnas ALIAS. Cierra [#96228](https://github.com/ClickHouse/ClickHouse/issues/96228). [#97297](https://github.com/ClickHouse/ClickHouse/pull/97297) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigió la excepción `LOGICAL_ERROR` en `applyOrder` al usar columnas con índice de texto con la cláusula `QUALIFY`. [#97313](https://github.com/ClickHouse/ClickHouse/pull/97313) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La tabla del sistema `system.functions` ahora muestra `categories = 'Internal'` para las funciones internas, en lugar de `categories = ''`. [#97315](https://github.com/ClickHouse/ClickHouse/pull/97315) ([Robert Schulze](https://github.com/rschu1ze)).
* La consulta con una secuencia de RIGHT JOIN y réplicas paralelas habilitadas puede producir un resultado incorrecto. Corrige [#74341](https://github.com/ClickHouse/ClickHouse/issues/74341). [#97316](https://github.com/ClickHouse/ClickHouse/pull/97316) ([Igor Nikonov](https://github.com/devcrafter)).
* Se corrigen errores `TABLE_UUID_MISMATCH` espurios que podían producirse con vistas materializadas actualizables y en otros casos en los que se cambia el nombre de las tablas. [#97323](https://github.com/ClickHouse/ClickHouse/pull/97323) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige un segfault en la copia de seguridad de `StorageKeeperMap` debido al uso de un puntero de almacenamiento colgante tras liberarlo en el lote de copia de seguridad diferido. [#97336](https://github.com/ClickHouse/ClickHouse/pull/97336) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la función `exists` con una subconsulta escalar dentro de un `ALTER UPDATE/DELETE` cuando `mutations_execute_subqueries_on_initiator` está habilitado. La subconsulta escalar se evaluaba de forma incorrecta, lo que podía provocar un error o un comando de mutación corrupto que hiciera que la tabla no pudiera cargarse en el siguiente reinicio del servidor. [#97347](https://github.com/ClickHouse/ClickHouse/pull/97347) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Se corrige la excepción lógica `Unexpected return type from equals. Expected Nullable(UInt8). Got Const(LowCardinality(Nullable(UInt8)))` al comparar NULL con una columna Variant que contiene tipos de LowCardinality. [#97379](https://github.com/ClickHouse/ClickHouse/pull/97379) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una posible condición de carrera cuando `EXCHANGE TABLES` se ejecuta en paralelo con la caché de consultas por segmentos habilitada. [#97411](https://github.com/ClickHouse/ClickHouse/pull/97411) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige la excepción `LOGICAL_ERROR` en la conversión de Array a `QBit` cuando `nullable_source` de un envoltorio `Tuple` externo reemplaza la columna de array convertida por una columna de tipo incompatible. Cierra [#97389](https://github.com/ClickHouse/ClickHouse/issues/97389). [#97413](https://github.com/ClickHouse/ClickHouse/pull/97413) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una inconsistencia en el formateo del AST al reconstruir literales de tupla con alias entre paréntesis; por ejemplo, `(('a', 'b') AS x)` se reformateaba incorrectamente como `tuple(('a', 'b') AS x)`. [#97418](https://github.com/ClickHouse/ClickHouse/pull/97418) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una excepción durante las inserciones asíncronas con deduplicación cuando un error de análisis producía un bloque vacío con cero filas. [#97460](https://github.com/ClickHouse/ClickHouse/pull/97460) ([Sema Checherinda](https://github.com/CheSema)).
* Se corrige la excepción "El número de filas en el fragmento diferido no coincide con el número de desplazamientos" en `LazyMaterializingTransform` al leer tablas con granularidad de índice no adaptativa (`index_granularity_bytes = 0`) mediante `ORDER BY ... LIMIT`. [#97482](https://github.com/ClickHouse/ClickHouse/pull/97482) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la configuración de inserción en Iceberg. Añade un alias para la opción `allow_experimental_insert_into_iceberg`. [#97483](https://github.com/ClickHouse/ClickHouse/pull/97483) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se corrige `ACCESS_DENIED` para los usuarios sin el permiso `CREATE TEMPORARY TABLE` cuando la optimización `optimize_inverse_dictionary_lookup` reescribe los predicados `dictGet(...)`. ClickHouse ahora omite esa reescritura y ejecuta la expresión original. Cierra [#97269](https://github.com/ClickHouse/ClickHouse/issues/97269). [#97484](https://github.com/ClickHouse/ClickHouse/pull/97484) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige un error de aserción (excepción en compilaciones de depuración o con sanitizador) en `Set` y `MergeTreeIndexSet` al procesar columnas con subcolumnas dispersas internas (p. ej., columnas `Tuple` de partes de MergeTree con distintos perfiles de serialización dispersa). [#97493](https://github.com/ClickHouse/ClickHouse/pull/97493) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un posible uso de memoria después de liberarla en StorageKafka2. [#97520](https://github.com/ClickHouse/ClickHouse/pull/97520) ([Bharat Nallan](https://github.com/bharatnc)).
* Se corrige el uso de `INTO OUTFILE` con `TRUNCATE` y la opción `into_outfile_create_parent_directories` cuando la ruta de salida contiene directorios. [#97549](https://github.com/ClickHouse/ClickHouse/pull/97549) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió el error `BAD_ARGUMENTS` al consultar tablas con expresiones lambda dentro de columnas ALIAS mediante la table function `merge()` con el analizador habilitado. [#97551](https://github.com/ClickHouse/ClickHouse/pull/97551) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción de `system.zookeeper_info` cuando el zxid de Keeper es 0. [#97553](https://github.com/ClickHouse/ClickHouse/pull/97553) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un posible error lógico en el diccionario `ip_trie` cuando el tipo de clave no es String. [#97555](https://github.com/ClickHouse/ClickHouse/pull/97555) ([Bharat Nallan](https://github.com/bharatnc)).
* Se corrigió un problema por el que la autenticación OAuth del catálogo REST no funcionaba para el `RestCatalog` base (solo funcionaba para catálogos derivados como `OneLakeCatalog`). Esto rompió el catálogo REST predeterminado tras la introducción del catálogo BigLake. [#97561](https://github.com/ClickHouse/ClickHouse/pull/97561) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Las funciones de Geometry (`perimeterSpherical`, `areaSpherical`, etc.) ahora aceptan subtipos geométricos individuales (`Polygon`, `Ring`, `Point`, etc.), además del tipo Variant `Geometry`. [#97571](https://github.com/ClickHouse/ClickHouse/pull/97571) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige la excepción `LOGICAL_ERROR` al usar `isNull`/`isNotNull` sobre subcolumnas de tipos `Nullable(Tuple(... Nullable(T) ...))`. Cierra [#97224](https://github.com/ClickHouse/ClickHouse/issues/97224). [#97582](https://github.com/ClickHouse/ClickHouse/pull/97582) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la desreferenciación de un puntero nulo al aplicar partes de parche durante las actualizaciones ligeras. [#97583](https://github.com/ClickHouse/ClickHouse/pull/97583) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `BaseSettings::readBinary` pasa el índice de `accessor.find` a `field_infos[]` sin comprobar el valor centinela que indica que no se encontró (es decir, `-1`), lo que puede provocar un acceso fuera de los límites de `std::vector`. El problema se detectó gracias al endurecimiento de libcxx. Esto probablemente ocurrió durante la deserialización del plan de consulta, cuando un servidor más reciente envía un ajuste que un servidor más antiguo no reconoce. El método de lectura basado en cadenas ya gestiona esto correctamente; a `readBinary` le faltaba esa misma comprobación. [#97585](https://github.com/ClickHouse/ClickHouse/pull/97585) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige resultados incorrectos en consultas `UNION ALL` en las que una rama tenía un predicado siempre falso: la rama leía datos indebidamente en lugar de no devolver nada. [#97620](https://github.com/ClickHouse/ClickHouse/pull/97620) ([Bharat Nallan](https://github.com/bharatnc)).
* Se corrigió el fallo de `IN (col)` con una referencia de una sola columna que provocaba el error `UNSUPPORTED_METHOD`. [#97646](https://github.com/ClickHouse/ClickHouse/pull/97646) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió la excepción por error lógico durante `GROUP BY ... WITH ROLLUP/CUBE` cuando las claves incluyen `LowCardinality(Nullable(...))` dentro de `Nullable(Tuple(...))`. [#97647](https://github.com/ClickHouse/ClickHouse/pull/97647) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió una inconsistencia en el formato del AST para `NOT (1, 1, 1)` que podía provocar `LOGICAL_ERROR` en builds de depuración. [#97653](https://github.com/ClickHouse/ClickHouse/pull/97653) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la excepción de `keeper-converter` al encontrarse con archivos de registro de transacciones de ZooKeeper vacíos. [#97673](https://github.com/ClickHouse/ClickHouse/pull/97673) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-build-testing-packaging-improvement">
  #### Mejora en compilación/pruebas/empaquetado
</div>

* ClickHouse puede compilarse con clang-23 (master). [#95578](https://github.com/ClickHouse/ClickHouse/pull/95578) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige `is_local` para forzarlo a false cuando `bind_host` está configurado, y se sustituye por una prueba de integración. Seguimiento de [#74741](https://github.com/ClickHouse/ClickHouse/pull/74741). [#93109](https://github.com/ClickHouse/ClickHouse/pull/93109) [#96018](https://github.com/ClickHouse/ClickHouse/pull/96018) ([Zhigao Hong](https://github.com/zghong)).
* Pruebas de estrés: se corrigen las pruebas de estrés y de actualización en CI. se ignoran las etiquetas `no-{build}`. se añade aleatorización de compatibilidad. [#94693](https://github.com/ClickHouse/ClickHouse/pull/94693) ([Nikita Fomichev](https://github.com/fm4v)).
* Publicar el binario parser\_memory\_profiler de la compilación. La herramienta puede usarse para analizar el consumo de memoria del AST. [#95826](https://github.com/ClickHouse/ClickHouse/pull/95826) ([Ilya Yatsishin](https://github.com/qoega)).
* Se agregó la marca `--symbolize` para la herramienta `parser_memory_profiler`, que genera archivos `.heap.sym` con los símbolos resueltos en la salida. [#96477](https://github.com/ClickHouse/ClickHouse/pull/96477) ([Ilya Yatsishin](https://github.com/qoega)).
* Se fijan las imágenes de Docker de terceros en versiones específicas para las pruebas de integración. [#96500](https://github.com/ClickHouse/ClickHouse/pull/96500) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se vuelve a habilitar la posibilidad de enlazar `OpenSSL` dinámicamente. No se recomienda y no se utiliza en ninguna compilación de producción, pero la opción sigue existiendo para los entusiastas de internet. [#96506](https://github.com/ClickHouse/ClickHouse/pull/96506) ([Govind R Nair](https://github.com/Revertionist)).
* Reduce el rango de `magic_enum` de \[-100, 1000] al valor predeterminado \[-128, 127] mediante una especialización por tipo para `Coordination::OpNum`, lo que mejora el tiempo de compilación. [#96632](https://github.com/ClickHouse/ClickHouse/pull/96632) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se eliminaron los templates de C++ innecesarios de las clases Function para reducir los tiempos de compilación. [#96646](https://github.com/ClickHouse/ClickHouse/pull/96646) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se traslada la generación de `StorageSystemLicenses` a la fase de configuración para mejorar el paralelismo de la compilación. [#96697](https://github.com/ClickHouse/ClickHouse/pull/96697) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se paraleliza el escaneo de licencias. [#96727](https://github.com/ClickHouse/ClickHouse/pull/96727) ([Raúl Marín](https://github.com/Algunenano)).
* Añadida una prueba funcional sin estado para el soporte del protocolo SSH. [#96996](https://github.com/ClickHouse/ClickHouse/pull/96996) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió Kafka 3.9.0 a la infraestructura de pruebas funcionales sin estado, lo que permite probar directamente los motores de tabla Kafka y Kafka2 usando ClickHouse Keeper como ZooKeeper. Seis nuevas pruebas sin estado cubren las operaciones básicas de producción y consumo, las columnas virtuales, INSERT, varios formatos, la gestión de mensajes corruptos y el almacenamiento de offsets basado en Keeper. [#96997](https://github.com/ClickHouse/ClickHouse/pull/96997) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añade un flujo de trabajo de CI para compilar una toolchain de clang optimizada con PGO+BOLT. [#96991](https://github.com/ClickHouse/ClickHouse/pull/96991) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Usar la compilación de LLVM/Clang optimizada con PGO en CI, lo que debería mejorar la velocidad de compilación entre un 20 y un 30 %. [#97031](https://github.com/ClickHouse/ClickHouse/pull/97031) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se reemplazan las funciones matemáticas de glibc por implementaciones de llvm-libc. [#90151](https://github.com/ClickHouse/ClickHouse/pull/90151) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se actualiza Boost de 1.83 a 1.90 y se corrige un fallo de aserción de `devector` en compilaciones de depuración. [#97037](https://github.com/ClickHouse/ClickHouse/pull/97037) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se actualizó `postgres` a REL\_18\_1. [#95189](https://github.com/ClickHouse/ClickHouse/pull/95189) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se usa `libexpat` 2.7.3. [#95218](https://github.com/ClickHouse/ClickHouse/pull/95218) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Usar `OpenSSL` 3.5.5. [#95345](https://github.com/ClickHouse/ClickHouse/pull/95345) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se usa `simdjson` v4.2.4. [#97129](https://github.com/ClickHouse/ClickHouse/pull/97129) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se usa `libarchive` 3.8.5. [#97131](https://github.com/ClickHouse/ClickHouse/pull/97131) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se usa `fast_float` v8.2.3. [#97133](https://github.com/ClickHouse/ClickHouse/pull/97133) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Usar `abseil-cpp` 20260107.1 y actualizar `s2geometry` a la versión v0.13.1. [#97134](https://github.com/ClickHouse/ClickHouse/pull/97134) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Aumenta `libxml2` a 2.15.1. [#95574](https://github.com/ClickHouse/ClickHouse/pull/95574) ([Robert Schulze](https://github.com/rschu1ze)).
* Se actualizaron 7 imágenes de Docker para pruebas de integración de Tier-3, sustituyendo imágenes base obsoletas (EOL) o retiradas por versiones compatibles actuales. [#97314](https://github.com/ClickHouse/ClickHouse/pull/97314) ([Rahul](https://github.com/motsc)).
* Se añaden consultas del benchmark TPC-DS. [#97349](https://github.com/ClickHouse/ClickHouse/pull/97349) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Sustituye las opciones individuales de CMake para el conjunto de instrucciones x86 (`ENABLE_SSSE3`, `ENABLE_AVX2`, `NO_SSE3_OR_HIGHER`, `ARCH_NATIVE`, etc.) por una única opción numérica `X86_ARCH_LEVEL` (`1`/`2`/`3`/`4`), en línea con los niveles estándar de microarquitectura x86-64 ya utilizados por el sistema de despacho en runtime. [#97354](https://github.com/ClickHouse/ClickHouse/pull/97354) ([Raúl Marín](https://github.com/Algunenano)).
* Se evita instanciar variantes de plantilla de `division_by_nullable=true` para operaciones que no son de división en `FunctionBinaryArithmetic`, lo que reduce el tiempo de compilación y el tamaño del binario. [#97496](https://github.com/ClickHouse/ClickHouse/pull/97496) ([Raúl Marín](https://github.com/Algunenano)).
* Reduce la huella de inclusión de `Exception.h` eliminándolo de archivos de cabecera muy referenciados, como `typeid_cast.h`, `assert_cast.h`, `Context_fwd.h`, `IDataType.h` y varios archivos de cabecera de Column. [#97497](https://github.com/ClickHouse/ClickHouse/pull/97497) ([Raúl Marín](https://github.com/Algunenano)).
* Use siempre las cabeceras integradas de `compiler-rt` (`sanitizador` y las interfaces de XRay) en lugar de las cabeceras del compilador del sistema, y compile de forma predeterminada las bibliotecas `compiler-rt` a partir del código fuente. [#97499](https://github.com/ClickHouse/ClickHouse/pull/97499) ([Raúl Marín](https://github.com/Algunenano)).
* Se evita incluir las cabeceras de boost/multiprecision en `wide_integer_impl.h` en plataformas con un `long double` adecuado, lo que mejora el tiempo de compilación. [#96633](https://github.com/ClickHouse/ClickHouse/pull/96633) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Implementar el job de cobertura de código con LLVM y habilitarlo inicialmente para la rama master. [#90952](https://github.com/ClickHouse/ClickHouse/pull/90952) ([Alexey Bakharew](https://github.com/alexbakharew)).
* Se habilita el hardening rápido de libcxx para las compilaciones de release. Esto es necesario principalmente para las comprobaciones de acceso fuera de límites. Dados los resultados de las pruebas de rendimiento, no se espera ningún impacto perceptible en el rendimiento. [#94757](https://github.com/ClickHouse/ClickHouse/pull/94757) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).

<div id="261">
  ### Lanzamiento de ClickHouse 26.1, 2026-01-29. [Presentación](https://presentations.clickhouse.com/2026-release-26.1/), [Vídeo](https://www.youtube.com/watch?v=fWuYt4M0xE4)
</div>

<div id="268-backward-incompatible-change">
  #### Cambio incompatible con versiones anteriores
</div>

* Corrige el formato inconsistente causado por una sustitución incorrecta de alias en el formateador. Esto cierra [#82833](https://github.com/ClickHouse/ClickHouse/issues/82833). Esto cierra [#82832](https://github.com/ClickHouse/ClickHouse/issues/82832). Esto cierra [#68296](https://github.com/ClickHouse/ClickHouse/issues/68296). Este cambio podría no ser compatible con versiones anteriores: cuando el analizador está deshabilitado, ciertas consultas CREATE VIEW con IN que hacen referencia a un alias no pueden procesarse. Para evitar esta incompatibilidad, habilite el analizador (está habilitado de forma predeterminada desde la versión 24.3). [#82838](https://github.com/ClickHouse/ClickHouse/pull/82838) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los códecs `DEFLATE_QPL` y `ZSTD_QAT` se eliminaron. Se recomienda a los usuarios convertir los datos existentes comprimidos con `DEFLATE_QPL` o `ZSTD_QAT` a otro códec antes de actualizar. Tenga en cuenta que, para usar estos códecs, era necesario habilitar los ajustes `enable_deflate_qpl_codec` y `enable_zstd_qat_codec`. [#92150](https://github.com/ClickHouse/ClickHouse/pull/92150) ([Robert Schulze](https://github.com/rschu1ze)).
* Mejora la depuración de UDF al habilitar la captura de stderr en `system.query_log.exception`. Anteriormente, el stderr de las UDF solo se registraba en archivos y no se exponía en los registros de consultas, lo que hacía imposible la depuración. Ahora, stderr genera excepciones de forma predeterminada y se acumula por completo (hasta 1 MB) antes de lanzarse, por lo que las trazas completas de Python y los mensajes de error aparecen en `system.query_log.exception`, lo que facilita una solución eficaz de problemas. [#92209](https://github.com/ClickHouse/ClickHouse/pull/92209) ([Xu Jia](https://github.com/XuJia0210)).
* La lista vacía de columnas en la cláusula `JOIN USING ()` ahora se considera un error de sintaxis. Anteriormente, debía producir `INVALID_JOIN_ON_EXPRESSION` durante la ejecución de la consulta. En algunos casos, como al realizar un join con el motor de almacenamiento `Join`, esto provocaba `LOGICAL_ERROR`; cierra el issue [#82502](https://github.com/ClickHouse/ClickHouse/issues/82502). [#92371](https://github.com/ClickHouse/ClickHouse/pull/92371) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Utiliza la coincidencia parcial para SKIP REGEXP en el tipo JSON de forma predeterminada. Cierra [#79250](https://github.com/ClickHouse/ClickHouse/issues/79250). [#92847](https://github.com/ClickHouse/ClickHouse/pull/92847) ([Pavel Kruglov](https://github.com/Avogar)).
* Se revierte "Allow INSERT into simple ALIAS columns" (revierte ClickHouse/ClickHouse[#84154](https://github.com/ClickHouse/ClickHouse/issues/84154)). No funciona con formatos personalizados y no está protegido por ninguna configuración. [#92849](https://github.com/ClickHouse/ClickHouse/pull/92849) ([Azat Khuzhin](https://github.com/azat)).
* Configuración para devolver un error si un catálogo de lago de datos no tiene acceso al almacenamiento de objetos. [#93606](https://github.com/ClickHouse/ClickHouse/pull/93606) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se ha eliminado el motor de base de datos `Lazy` y ya no está disponible. Cierra [#91231](https://github.com/ClickHouse/ClickHouse/issues/91231). [#93627](https://github.com/ClickHouse/ClickHouse/pull/93627) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se elimina el modo `transposed_with_wide_view` de `metric_log`, ya que no se puede usar debido a un error. Ya no es posible definir `system.metric_log` con este modo. Esto revierte parcialmente [#78412](https://github.com/ClickHouse/ClickHouse/issues/78412). [#93867](https://github.com/ClickHouse/ClickHouse/pull/93867) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La planificación de CPU para las cargas de trabajo ahora es preventiva de forma predeterminada. Consulte la configuración del servidor `cpu_slot_preemption`. [#94060](https://github.com/ClickHouse/ClickHouse/pull/94060) ([Sergei Trifonov](https://github.com/serxa)).
* Se escapan los nombres de archivo de los índices para evitar partes dañadas. Con este cambio, ClickHouse no podrá cargar índices con caracteres no ASCII en su nombre creados por versiones anteriores. Para resolverlo, puede usar la configuración de MergeTree `escape_index_filenames`. [#94079](https://github.com/ClickHouse/ClickHouse/pull/94079) ([Raúl Marín](https://github.com/Algunenano)).
* Las configuraciones de formato `exact_rows_before_limit`, `rows_before_aggregation`, `cross_to_inner_join_rewrite`, `regexp_dict_allow_hyperscan`, `regexp_dict_flag_case_insensitive`, `regexp_dict_flag_dotall` y `dictionary_use_async_executor` pasaron a ser configuraciones normales (no de formato). Se trata de un cambio puramente interno, sin efectos visibles para el usuario, salvo en el caso (poco probable) de que haya especificado alguna de estas configuraciones en definiciones de table engine de Iceberg o DeltaLake o Kafka o S3 o S3Queue o Azure o Hive o RabbitMQ o Set o FileLog o NATS. En esos casos, estas configuraciones antes se ignoraban; ahora, esas definiciones generan un error. [#94106](https://github.com/ClickHouse/ClickHouse/pull/94106) ([Robert Schulze](https://github.com/rschu1ze)).
* Las funciones `joinGet/joinGetOrNull` ahora exigen privilegios `SELECT` sobre la tabla Join subyacente. Después de este cambio, ejecutar `joinGet('db.table', 'column', key)` requiere que el usuario tenga el privilegio `SELECT` tanto sobre las columnas clave definidas en la tabla Join como sobre la columna de atributo recuperada. Las consultas que no cuenten con estos privilegios fallarán con `ACCESS_DENIED`. Para migrar, otorgue los permisos necesarios mediante `GRANT SELECT ON db.join_table TO user` para acceso completo a la tabla, o `GRANT SELECT(key_col, attr_col) ON db.join_table TO user` para acceso a nivel de columna. Este cambio afecta a todos los usuarios y aplicaciones que dependen de `joinGet`/`joinGetOrNull` en los casos en que antes no se hubieran configurado privilegios `SELECT` explícitos. [#94307](https://github.com/ClickHouse/ClickHouse/pull/94307) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se comprueba `SHOW COLUMNS` para las consultas `CREATE TABLE ... AS ...`. Anteriormente, se comprobaba `SHOW TABLES`, lo que supone un privilegio incorrecto para este tipo de comprobación de permisos. [#94556](https://github.com/ClickHouse/ClickHouse/pull/94556) ([pufit](https://github.com/pufit)).
* Hacer que el formato de salida `Hash` sea independiente del tamaño de los bloques. [#94503](https://github.com/ClickHouse/ClickHouse/pull/94503) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Tenga en cuenta que esto cambia los valores hash de salida con respecto a las versiones anteriores.

<div id="268-new-feature">
  #### Nueva funcionalidad
</div>

* API HTTP y Web UI integrada para ClickHouse Keeper. [#78181](https://github.com/ClickHouse/ClickHouse/pull/78181) ([pufit](https://github.com/pufit) y [speeedmaster](https://github.com/speeedmaster)).
* La deduplicación de async insert ahora funciona con vistas materializadas dependientes. Cuando se produce una colisión por block\_id, el bloque original se filtra para eliminar las filas asociadas a ese block\_id, y las filas restantes se transforman con todas las consultas SELECT de las vistas materializadas pertinentes; esto reconstruye el bloque original sin las filas en conflicto. [#89140](https://github.com/ClickHouse/ClickHouse/pull/89140) ([Sema Checherinda](https://github.com/CheSema)). Se permite usar deduplicación con async inserts cuando intervienen vistas materializadas. [#93957](https://github.com/ClickHouse/ClickHouse/pull/93957) ([Sema Checherinda](https://github.com/CheSema)).
* Se introdujeron una nueva sintaxis y un nuevo framework para simplificar y ampliar la funcionalidad de los índices de proyección. Esto da continuidad a [https://github.com/ClickHouse/ClickHouse/pull/81021](https://github.com/ClickHouse/ClickHouse/pull/81021). [#91844](https://github.com/ClickHouse/ClickHouse/pull/91844) ([Amos Bird](https://github.com/amosbird)).
* Se añade soporte para índices de texto en columnas `Array`. [#89895](https://github.com/ClickHouse/ClickHouse/pull/89895) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Se habilita `use_variant_as_common_type` de forma predeterminada, lo que permite usar tipos incompatibles dentro de un `Array`, en consultas `UNION` y en las ramas de `if`/`multiIf`/`case`. [#90677](https://github.com/ClickHouse/ClickHouse/pull/90677) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Nueva tabla del sistema `zookeeper_info`. Implementa [#88014](https://github.com/ClickHouse/ClickHouse/issues/88014). [#90809](https://github.com/ClickHouse/ClickHouse/pull/90809) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Se admite el tipo `Variant` en todas las funciones. [#90900](https://github.com/ClickHouse/ClickHouse/pull/90900) ([Bharat Nallan](https://github.com/bharatnc)).
* Agrega una métrica `ClickHouse_Info` al endpoint `/metrics` de Prometheus que contiene principalmente información sobre la versión, lo que permite crear gráficos para seguir información detallada de la versión a lo largo del tiempo. [#91125](https://github.com/ClickHouse/ClickHouse/pull/91125) ([Christoph Wurm](https://github.com/cwurm)).
* Se introduce un nuevo comando `rcfg` de cuatro letras para Keeper que permite cambiar la configuración del clúster. Este comando ofrece más posibilidades para modificar la configuración que la solicitud estándar `reconfigure`. El comando recibe una cadena `json` como argumento. El conjunto completo de bytes enviados a la interfaz TCP debe tener este aspecto: `rcfg{json_string_length_big_endian}{json_string}`. Algunos ejemplos del comando podrían ser así: `{"preconditions": {"leaders": [1, 2], "members": [1, 2, 3, 4, 5]}, "actions": [{"transfer_leadership": [3]}, {"remove_members": [1, 2]}, {"set_priority": [{"id": 4, "priority": 100}, {"id": 5, "priority": 100}]}, {"transfer_leadership": [4, 5]}, {"set_priority": [{"id": 3, "priority": 0}]}]}`. [#91354](https://github.com/ClickHouse/ClickHouse/pull/91354) ([alesapin](https://github.com/alesapin)).
* Se agrega la función `reverseBySeparator`, que invierte el orden de las subcadenas de una cadena delimitadas por un separador especificado. Cierra [#91463](https://github.com/ClickHouse/ClickHouse/issues/91463). [#91780](https://github.com/ClickHouse/ClickHouse/pull/91780) ([Xuewei Wang](https://github.com/Sallery-X)).
* Añade la nueva configuración `max_insert_block_size_bytes`, que permite un control más preciso de la formación de los bloques insertados. [#92833](https://github.com/ClickHouse/ClickHouse/pull/92833) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Es posible ejecutar consultas DDL con la cláusula `ON CLUSTER` en una base de datos Replicated si está habilitada la configuración `ignore_on_cluster_for_replicated_database`. En este caso, se ignorará el nombre del clúster. [#92872](https://github.com/ClickHouse/ClickHouse/pull/92872) ([Kirill](https://github.com/kirillgarbar)).
* Se implementó la función `mergeTreeAnalyzeIndexes`. [#92954](https://github.com/ClickHouse/ClickHouse/pull/92954) ([Azat Khuzhin](https://github.com/azat)).
* Se agregó la nueva configuración `use_primary_key`. Establézcala en `false` para desactivar la poda de gránulos según la clave primaria. [#93319](https://github.com/ClickHouse/ClickHouse/pull/93319) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se añadió la función de tabla `icebergLocalCluster`. [#93323](https://github.com/ClickHouse/ClickHouse/pull/93323) ([Anton Ivashkin](https://github.com/ianton-ru)).
* Se añadió la función `cosineDistanceTransposed`, que aproxima la [distancia de coseno](https://en.wikipedia.org/wiki/Cosine_similarity#Cosine_distance) entre dos puntos. [#93621](https://github.com/ClickHouse/ClickHouse/pull/93621) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se añade la columna `files` a la tabla system.parts, que muestra el número de archivos en cada parte de datos. [#94337](https://github.com/ClickHouse/ClickHouse/pull/94337) ([Match](https://github.com/gayanMatch)).
* Añade un scheduler max-min fair para el control de la concurrencia. Proporciona una mayor equidad en situaciones de sobreasignación elevada, cuando muchas consultas compiten por slots de CPU limitados. Las consultas de corta duración no se ven penalizadas por las de larga duración, que han acumulado más slots con el tiempo. Se habilita con el valor `max_min_fair` de la configuración de servidor `concurrent_threads_scheduler`. [#94732](https://github.com/ClickHouse/ClickHouse/pull/94732) ([Sergei Trifonov](https://github.com/serxa)).
* Se añadió la posibilidad de que ClickHouse client sobrescriba el SNI de TLS al conectarse al servidor. [#89761](https://github.com/ClickHouse/ClickHouse/pull/89761) ([Matt Klein](https://github.com/mattklein123)).
* Admite tablas temporales en las llamadas a la función `joinGet`. [#92973](https://github.com/ClickHouse/ClickHouse/pull/92973) ([Eduard Karacharov](https://github.com/korowa)).
* Admite vectores de eliminación en el motor de tabla `DeltaLake`. [#93852](https://github.com/ClickHouse/ClickHouse/pull/93852) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se admiten vectores de eliminación en `deltaLakeCluster`. [#94365](https://github.com/ClickHouse/ClickHouse/pull/94365) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Compatibilidad con Google Cloud Storage para lagos de datos. [#93866](https://github.com/ClickHouse/ClickHouse/pull/93866) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="268-experimental-feature">
  #### Funcionalidad experimental
</div>

* `QBit` pasa de Experimental a Beta. [#93816](https://github.com/ClickHouse/ClickHouse/pull/93816) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se añade compatibilidad con `Nullable(Tuple)`. Establece `allow_experimental_nullable_tuple_type = 1` para habilitarlo. [#89643](https://github.com/ClickHouse/ClickHouse/pull/89643) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Compatibilidad con el catálogo REST de Paimon, como continuación de [https://github.com/ClickHouse/ClickHouse/pull/84423](https://github.com/ClickHouse/ClickHouse/pull/84423). [#92011](https://github.com/ClickHouse/ClickHouse/pull/92011) ([JIaQi Tang](https://github.com/JiaQiTang98)).

<div id="268-performance-improvement">
  #### Mejora del rendimiento
</div>

* La configuración `use_skip_indexes_on_data_read` ahora está habilitada de forma predeterminada. Esta configuración permite filtrar de forma continua al mismo tiempo que se leen los datos, lo que mejora el rendimiento de las consultas y el tiempo de arranque. [#93407](https://github.com/ClickHouse/ClickHouse/pull/93407) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Mejora el rendimiento de `DISTINCT` en las columnas `LowCardinality`. Cierra [#5917](https://github.com/ClickHouse/ClickHouse/issues/5917). [#91639](https://github.com/ClickHouse/ClickHouse/pull/91639) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Optimizar la función de agregación `distinctJSONPaths` para que lea únicamente las rutas JSON de las partes de datos, en lugar de toda la columna JSON. [#92196](https://github.com/ClickHouse/ClickHouse/pull/92196) ([Pavel Kruglov](https://github.com/Avogar)).
* Más filtros aplicados con pushdown en JOINs. [#85556](https://github.com/ClickHouse/ClickHouse/pull/85556) ([Nikita Taranov](https://github.com/nickitat)).
* Se amplía la compatibilidad con más casos de push down desde la condición ON del join cuando el filtro usa entradas de un solo lado. Se admiten joins `ANY`, `SEMI` y `ANTI`. [#92584](https://github.com/ClickHouse/ClickHouse/pull/92584) ([Dmitry Novik](https://github.com/novikd)).
* Permite usar conjuntos equivalentes para hacer push down de filtros en `SEMI JOIN`. Cierra [#85239](https://github.com/ClickHouse/ClickHouse/issues/85239). [#92837](https://github.com/ClickHouse/ClickHouse/pull/92837) ([Dmitry Novik](https://github.com/novikd)).
* Omitir la lectura del lado izquierdo del hash join cuando el lado derecho está vacío. Antes leíamos el lado izquierdo hasta el primer bloque no vacío, lo que podía implicar mucho trabajo en casos con mucho filtrado o agregación. [#94062](https://github.com/ClickHouse/ClickHouse/pull/94062) ([Alexander Gololobov](https://github.com/davenger)).
* Uso del método "fastrange" (Daniel Lemire) para particionar datos dentro de la canalización de consultas. Esto podría mejorar la ordenación paralela y los JOINs. [#93080](https://github.com/ClickHouse/ClickHouse/pull/93080) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Mejora el rendimiento de las funciones de ventana cuando `PARTITION BY` coincide con la clave de ordenación o es un prefijo de ella. [#87299](https://github.com/ClickHouse/ClickHouse/pull/87299) ([Nikita Taranov](https://github.com/nickitat)).
* Se hace pushdown del filtro externo en las vistas, lo que permite aplicar PREWHERE en nodos locales y remotos. Resuelve [#88189](https://github.com/ClickHouse/ClickHouse/issues/88189). [#88316](https://github.com/ClickHouse/ClickHouse/pull/88316) ([Igor Nikonov](https://github.com/devcrafter)).
* Se implementan compilaciones JIT para más funciones. Cierra [#73509](https://github.com/ClickHouse/ClickHouse/issues/73509). [#88770](https://github.com/ClickHouse/ClickHouse/pull/88770) ([Alexey Milovidov](https://github.com/alexey-milovidov) con [Taiyang Li](https://github.com/taiyang-li)).
* Si un índice de salto utilizado en una consulta `FINAL` está en una columna que forma parte de la clave primaria, el paso adicional para comprobar la intersección con la clave primaria en otras partes es innecesario y ya no se realiza. Resuelve [#85897](https://github.com/ClickHouse/ClickHouse/issues/85897). [#93899](https://github.com/ClickHouse/ClickHouse/pull/93899) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Optimiza el rendimiento y el uso de memoria de `LIMIT` y `OFFSET` fraccionarios. [#91167](https://github.com/ClickHouse/ClickHouse/pull/91167) ([Ahmed Gouda](https://github.com/0xgouda)).
* Se corrige el uso de una lógica de lectura aleatoria más rápida en el prefetcher de Parquet Reader V3. Cierra [#90890](https://github.com/ClickHouse/ClickHouse/issues/90890). [#91435](https://github.com/ClickHouse/ClickHouse/pull/91435) ([Arsen Muk](https://github.com/arsenmuk)).
* Mejora el rendimiento de `icebergCluster`. Cierra [#91462](https://github.com/ClickHouse/ClickHouse/issues/91462). [#91537](https://github.com/ClickHouse/ClickHouse/pull/91537) ([Yang Jiang](https://github.com/Ted-Jiang)).
* No filtrar por columnas virtuales con filtros constantes. [#91588](https://github.com/ClickHouse/ClickHouse/pull/91588) ([c-end](https://github.com/c-end)).
* Reduce el uso de memoria de INSERT/merges con wide parts en tablas muy anchas al habilitar búferes de escritura adaptativos. Añade compatibilidad con búferes de escritura adaptativos para discos cifrados. [#92250](https://github.com/ClickHouse/ClickHouse/pull/92250) ([Azat Khuzhin](https://github.com/azat)).
* Se mejoró el rendimiento de la búsqueda de texto completo con índice de texto y el tokenizador `sparseGrams` al reducir el número de tokens buscados en el índice. [#93078](https://github.com/ClickHouse/ClickHouse/pull/93078) ([Anton Popov](https://github.com/CurtizJ)).
* La función `isValidASCII` se optimizó para casos positivos, es decir, valores de entrada compuestos únicamente por caracteres ASCII. [#93347](https://github.com/ClickHouse/ClickHouse/pull/93347) ([Robert Schulze](https://github.com/rschu1ze)).
* La optimización de lectura en orden ahora detecta cuándo las columnas de ORDER BY son constantes debido a las condiciones de WHERE, lo que permite realizar lecturas eficientes en orden inverso. Esto beneficia a consultas multi-tenant como `WHERE tenant='42' ORDER BY tenant, event_time DESC`, que ahora pueden usar InReverseOrder en lugar de requerir una ordenación completa.". [#94103](https://github.com/ClickHouse/ClickHouse/pull/94103) ([matanper](https://github.com/matanper)).
* Se introduce una clase especializada del AST de enum para almacenar parámetros de valor como pares (cadena, entero) en lugar de nodos ASTLiteral, con el fin de optimizar el consumo de memoria. [#94178](https://github.com/ClickHouse/ClickHouse/pull/94178) ([Ilya Yatsishin](https://github.com/qoega)).
* Análisis distribuido de índices en varias réplicas. Resulta beneficioso para el almacenamiento compartido y para grandes volúmenes de datos en un clúster. Esto se aplica a SharedMergeTree (ClickHouse Cloud) y podría aplicarse a otros tipos de tablas MergeTree sobre almacenamiento compartido. [#86786](https://github.com/ClickHouse/ClickHouse/pull/86786) ([Azat Khuzhin](https://github.com/azat)).
* Reducir la sobrecarga de los filtros de runtime de join deshabilitándolos en los siguientes casos: - hay demasiados bits activados en el filtro bloom - se filtran muy pocas filas en runtime. [#91578](https://github.com/ClickHouse/ClickHouse/pull/91578) ([Alexander Gololobov](https://github.com/davenger)).
* Se usa un búfer en memoria para la entrada de subconsultas correlacionadas para evitar evaluarla varias veces. Parte de [#79890](https://github.com/ClickHouse/ClickHouse/issues/79890). [#91205](https://github.com/ClickHouse/ClickHouse/pull/91205) ([Dmitry Novik](https://github.com/novikd)).
* Permite que todas las réplicas tomen rangos huérfanos durante la lectura con réplicas en paralelo. Esto mejora el equilibrio de carga y reduce la latencia en la cola larga. [#91374](https://github.com/ClickHouse/ClickHouse/pull/91374) ([zoomxi](https://github.com/zoomxi)).
* Las operaciones externas de agregación, ordenación y join ahora respetan la configuración de consulta `temporary_files_codec` en todos los contextos. Se corrigieron los eventos de perfil ausentes para grace hash join. [#92388](https://github.com/ClickHouse/ClickHouse/pull/92388) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Mejorar la robustez de la detección del uso de memoria de las consultas para el volcado a disco durante la agregación/ordenación. [#92500](https://github.com/ClickHouse/ClickHouse/pull/92500) ([Azat Khuzhin](https://github.com/azat)).
* Estimar el recuento total de filas y las estadísticas de NDV (número de valores distintos) de las columnas de la clave de agregación. [#92812](https://github.com/ClickHouse/ClickHouse/pull/92812) ([Alexander Gololobov](https://github.com/davenger)).
* Optimiza la compresión de las listas de postings con simdcomp. [#92871](https://github.com/ClickHouse/ClickHouse/pull/92871) ([Peng Jian](https://github.com/fastio)).
* Se refactorizó el procesamiento del modo Ordered de S3Queue con buckets. Esto también debería mejorar el rendimiento al reducir el número de solicitudes a Keeper. [#92889](https://github.com/ClickHouse/ClickHouse/pull/92889) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Las funciones `mapContainsKeyLike` y `mapContainsValueLike` ahora pueden usar un índice de texto en `mapKeys()` o `mapValues()`, respectivamente. [#93049](https://github.com/ClickHouse/ClickHouse/pull/93049) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Reduce el uso de memoria en sistemas no Linux (habilita la purga inmediata de las páginas sucias de jemalloc). [#93360](https://github.com/ClickHouse/ClickHouse/pull/93360) ([Eduard Karacharov](https://github.com/korowa)).
* Forzar el purgado de las arenas de jemalloc en caso de que la proporción entre el tamaño de las páginas sucias y `max_server_memory_usage` supere `memory_worker_purge_dirty_pages_threshold_ratio`. [#93500](https://github.com/ClickHouse/ClickHouse/pull/93500) ([Eduard Karacharov](https://github.com/korowa)).
* Reduce el uso de memoria para AST. [#93601](https://github.com/ClickHouse/ClickHouse/pull/93601) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* En algunos casos, hemos visto que ClickHouse no respeta el límite de memoria al leer desde una tabla. Se ha corregido este comportamiento. [#93715](https://github.com/ClickHouse/ClickHouse/pull/93715) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Se habilitan de forma predeterminada las extensiones `CHECK_STAT` y `TRY_REMOVE` de Keeper. [#93886](https://github.com/ClickHouse/ClickHouse/pull/93886) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Analizar los límites inferior y superior de los nombres de archivo correspondientes a los borrados posicionales en las entradas del archivo de manifiesto de Iceberg para seleccionar mejor los archivos de datos correspondientes. [#93980](https://github.com/ClickHouse/ClickHouse/pull/93980) ([Daniil Ivanik](https://github.com/divanik)).
* Agrega dos ajustes más para controlar el número máximo de subcolumnas dinámicas en una columna JSON. El primero es el ajuste de MergeTree `merge_max_dynamic_subcolumns_in_compact_part` (similar al ya añadido `merge_max_dynamic_subcolumns_in_wide_part`) que limita el número de subcolumnas dinámicas creadas durante la fusión en una parte Compact. El segundo es el ajuste a nivel de consulta `max_dynamic_subcolumns_in_json_type_parsing`, que limita el número de subcolumnas dinámicas creadas durante el análisis de datos JSON; permitirá especificar el límite en la inserción. [#94184](https://github.com/ClickHouse/ClickHouse/pull/94184) ([Pavel Kruglov](https://github.com/Avogar)).
* Se optimiza ligeramente la compactación de columnas de tipo JSON en algunos casos. [#94247](https://github.com/ClickHouse/ClickHouse/pull/94247) ([Pavel Kruglov](https://github.com/Avogar)).
* Reduzca el tamaño de las colas del pool de hilos en función de la experiencia en producción. Añada una comprobación explícita del consumo de memoria antes de leer cualquier dato de MergeTree. [#94692](https://github.com/ClickHouse/ClickHouse/pull/94692) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Asegúrese de que el planificador dé prioridad al hilo MemoryWorker cuando haya escasez de CPU, ya que protege el proceso de ClickHouse frente a una amenaza existencial. [#94864](https://github.com/ClickHouse/ClickHouse/pull/94864) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Ejecutar la purga de páginas sucias de jemalloc en un hilo distinto del hilo principal de `MemoryWorker`. Si la purga es lenta, podría retrasar la actualización del uso de RSS, lo que podría hacer que el proceso se finalice por falta de memoria. Se introduce una nueva configuración `memory_worker_purge_total_memory_threshold_ratio` para iniciar la purga de páginas sucias según la proporción del uso total de memoria. [#94902](https://github.com/ClickHouse/ClickHouse/pull/94902) ([Antonio Andelic](https://github.com/antonio2368)).

<div id="268-improvement">
  #### Mejora
</div>

* `system.blob_storage_log` ahora está disponible para Azure Blob Storage. [#93105](https://github.com/ClickHouse/ClickHouse/pull/93105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Implementar `blob_storage_log` para Local y HDFS. Corregir un error cuando `S3Queue` utilizaba algo distinto del nombre del disco para registrar en `blob_storage_log`. Añadir la columna `error_code` a `blob_storage_log`. Dividir el archivo de configuración de pruebas para simplificar las pruebas en local. [#93106](https://github.com/ClickHouse/ClickHouse/pull/93106) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-client` y `clickhouse-local` resaltarán grupos de dígitos (miles, millones, etc.) dentro de los literales numéricos al escribir. Esto cierra [#93100](https://github.com/ClickHouse/ClickHouse/issues/93100). [#93108](https://github.com/ClickHouse/ClickHouse/pull/93108) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Añade compatibilidad en `clickhouse-client` con argumentos de línea de comandos que tienen espacios alrededor del signo igual. Cierra [#93077](https://github.com/ClickHouse/ClickHouse/issues/93077). [#93174](https://github.com/ClickHouse/ClickHouse/pull/93174) ([Cole Smith](https://github.com/colesmith54)).
* Con `<interactive_history_legacy_keymap>true</interactive_history_legacy_keymap>`, el cliente de la CLI ahora puede volver a usar Ctrl-R para la búsqueda normal, como antes, mientras que Ctrl-T realiza una búsqueda difusa. [#87785](https://github.com/ClickHouse/ClickHouse/pull/87785) ([Larry Snizek](https://github.com/larry-cdn77)).
* La sentencia para limpiar cachés `SYSTEM DROP [...] CACHE` daba la falsa impresión de que desactivaba la caché. ClickHouse ahora admite la sentencia `SYSTEM CLEAR [...] CACHE`, que resulta más clara. La sintaxis anterior sigue estando disponible. [#93727](https://github.com/ClickHouse/ClickHouse/pull/93727) ([Pranav Tiwari](https://github.com/pranavt84)).
* Permite usar varias columnas como clave primaria en `EmbeddedRocksDB`. Cierra [#32819](https://github.com/ClickHouse/ClickHouse/issues/32819). [#33917](https://github.com/ClickHouse/ClickHouse/pull/33917) ([usurai](https://github.com/usurai)).
* Ahora ya es posible usar IN no constante con escalares (consultas como `val1 NOT IN if(cond, val2, val3)`). [#93495](https://github.com/ClickHouse/ClickHouse/pull/93495) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Evita que los encabezados `x-amz-server-side-encryption` se propaguen en las solicitudes S3 `HeadObject`, `UploadPart` y `CompleteMultipartUpload`, ya que no son compatibles. [#64577](https://github.com/ClickHouse/ClickHouse/pull/64577) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
* Seguimiento del particionamiento de Hive en el modo ordered de S3Queue. Resuelve [#71161](https://github.com/ClickHouse/ClickHouse/issues/71161). [#81040](https://github.com/ClickHouse/ClickHouse/pull/81040) ([Anton Ivashkin](https://github.com/ianton-ru)).
* Optimiza la reserva de espacio en la caché del sistema de archivos. `FileCache::collectCandidatesForEviction` se ejecutará sin un bloqueo exclusivo. [#82764](https://github.com/ClickHouse/ClickHouse/pull/82764) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Permite una estrategia de rotación compuesta (tamaño + tiempo) para el log del servidor. [#87620](https://github.com/ClickHouse/ClickHouse/pull/87620) ([Jianmei Zhang](https://github.com/zhangjmruc)).
* El client de la CLI ahora puede especificar `<warnings>false</warnings>` en lugar de la opción de línea de comandos `--no-warnings`. [#87783](https://github.com/ClickHouse/ClickHouse/pull/87783) ([Larry Snizek](https://github.com/larry-cdn77)).
* Se añade compatibilidad para la función de agregación `avg` con valores Date, DateTime y Time como argumentos. Cierra [#82267](https://github.com/ClickHouse/ClickHouse/issues/82267). [#87845](https://github.com/ClickHouse/ClickHouse/pull/87845) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* La optimización `use_join_disjunctions_push_down` está habilitada de forma predeterminada. [#89313](https://github.com/ClickHouse/ClickHouse/pull/89313) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se admiten más motores de tabla y tipos de fuentes de datos en las subconsultas correlacionadas. Cierra [#80775](https://github.com/ClickHouse/ClickHouse/issues/80775). [#90175](https://github.com/ClickHouse/ClickHouse/pull/90175) ([Dmitry Novik](https://github.com/novikd)).
* Si el esquema de la vista parametrizada se especifica explícitamente, se muestra. Cierra [#88875](https://github.com/ClickHouse/ClickHouse/issues/88875), [#81385](https://github.com/ClickHouse/ClickHouse/issues/81385). [#90220](https://github.com/ClickHouse/ClickHouse/pull/90220) ([Grigorii Sokolik](https://github.com/GSokol)).
* Gestiona correctamente la laguna en las entradas del log de Keeper si los logs son anteriores al último índice confirmado. [#90403](https://github.com/ClickHouse/ClickHouse/pull/90403) ([Antonio Andelic](https://github.com/antonio2368)).
* Se mejoró la configuración `min_free_disk_bytes_to_perform_insert` para que funcione correctamente con volúmenes JBOD. [#90878](https://github.com/ClickHouse/ClickHouse/pull/90878) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* Ahora se puede especificar la opción `storage_class_name` en las colecciones con nombre para el motor de tabla `S3` y la función de tabla `s3`. [#91926](https://github.com/ClickHouse/ClickHouse/pull/91926) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Se admite la inserción en ZooKeeper auxiliar mediante `system.zookeeper`. [#92092](https://github.com/ClickHouse/ClickHouse/pull/92092) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Se agregan nuevas métricas para Keeper: los profile events `KeeperChangelogWrittenBytes`, `KeeperChangelogFileSyncMicroseconds`, `KeeperSnapshotWrittenBytes` y `KeeperSnapshotFileSyncMicroseconds`, así como las histogram metrics `KeeperBatchSizeElements` y `KeeperBatchSizeBytes`. [#92149](https://github.com/ClickHouse/ClickHouse/pull/92149) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se ha añadido una nueva configuración, `trace_profile_events_list`, que limita el trazado con `trace_profile_event` a la lista especificada de nombres de eventos. Esto permite una recopilación de datos más precisa en cargas de trabajo de gran tamaño. [#92298](https://github.com/ClickHouse/ClickHouse/pull/92298) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Compatibilidad con SYSTEM NOTIFY FAILPOINT para failpoints pausables. - Compatibilidad con SYSTEM WAIT FAILPOINT fp PAUSE/RESUME. [#92368](https://github.com/ClickHouse/ClickHouse/pull/92368) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Agregar la columna `creation` (implícita/explícita) a `system.data_skipping_indices`. [#92378](https://github.com/ClickHouse/ClickHouse/pull/92378) ([Raúl Marín](https://github.com/Algunenano)).
* Permitir pasar la descripción de las columnas de las tablas dinámicas de YTsaurus a la fuente del diccionario. [#92391](https://github.com/ClickHouse/ClickHouse/pull/92391) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* En [#63985](https://github.com/ClickHouse/ClickHouse/pull/63985), hicimos posible especificar todos los parámetros necesarios para la configuración de TLS por puerto (consulte [protocolos componibles](https://clickhouse.com/docs/operations/settings/composable-protocols)), de modo que ya no dependemos de una configuración global de TLS. Sin embargo, la implementación sigue requiriendo implícitamente que exista una sección de configuración global `openSSL.server`, lo que entra en conflicto con entornos en los que se necesitan configuraciones de TLS distintas para diferentes puertos. Por ejemplo, en despliegues keeper-in-server, necesitamos configuraciones de TLS independientes para la comunicación entre instancias de Keeper y las conexiones del clickhouse client. [#92457](https://github.com/ClickHouse/ClickHouse/pull/92457) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se incorpora un nuevo ajuste `input_format_binary_max_type_complexity` que limita el número total de nodos de tipo que pueden decodificarse en formato binario para evitar payloads maliciosos. [#92519](https://github.com/ClickHouse/ClickHouse/pull/92519) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Mostrar las tareas en ejecución en `system.background_schedule_pool{,_log}`. Añadir documentación. [#92587](https://github.com/ClickHouse/ClickHouse/pull/92587) ([Azat Khuzhin](https://github.com/azat)).
* Ejecuta la consulta actual en la búsqueda con Ctrl+R en client si no se encuentra ninguna coincidencia en el historial. [#92749](https://github.com/ClickHouse/ClickHouse/pull/92749) ([Azat Khuzhin](https://github.com/azat)).
* Se admite `EXPLAIN indices = 1` como alias de `EXPLAIN indexes = 1`. Resuelve [#92483](https://github.com/ClickHouse/ClickHouse/issues/92483). [#92774](https://github.com/ClickHouse/ClickHouse/pull/92774) ([Pranav Tiwari](https://github.com/pranavt84)).
* El lector de Parquet ahora permite leer columnas de tipo Tuple o Map como JSON: `select x from file(f.parquet, auto, 'x JSON')` funciona incluso si el tipo de la columna `x` en `f.parquet` es tuple o map. [#92864](https://github.com/ClickHouse/ClickHouse/pull/92864) ([Michael Kolupaev](https://github.com/al13n321)).
* Se admiten tuplas vacías en el lector de Parquet. [#92868](https://github.com/ClickHouse/ClickHouse/pull/92868) ([Michael Kolupaev](https://github.com/al13n321)).
* Se recurre a la copia en modo lectura y escritura para Azure Blob Storage cuando la copia nativa falla con BadRequest (p. ej., lista de bloques no válida). Anteriormente, esto solo se hacía para el error Unauthorized, que se observaba al copiar un blob entre distintas cuentas de almacenamiento. Pero a veces también vemos el error "The specified block list is invalid". Así que ahora se ha actualizado la condición para recurrir a lectura y escritura en todos los fallos de la copia nativa. [#92888](https://github.com/ClickHouse/ClickHouse/pull/92888) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Se corrige el throttling del endpoint de metadatos de EC2 al ejecutar muchas consultas concurrentes de S3 con credenciales de perfil de instancia de EC2. Anteriormente, cada consulta creaba su propio `AWSInstanceProfileCredentialsProvider`, lo que provocaba solicitudes concurrentes al servicio de metadatos de EC2 y podía dar lugar a timeouts y errores `HTTP response code: 403`. Ahora, el proveedor de credenciales se almacena en caché y se comparte entre todas las consultas. [#92891](https://github.com/ClickHouse/ClickHouse/pull/92891) ([Sav](https://github.com/sberss)).
* Se ha rediseñado la configuración `insert_select_deduplicate` para permitir mantener la compatibilidad con versiones anteriores. [#92951](https://github.com/ClickHouse/ClickHouse/pull/92951) ([Sema Checherinda](https://github.com/CheSema)).
* Registrar las tareas en segundo plano más lentas que la media (`background_schedule_pool_log.duration_threshold_milliseconds=30`) para evitar un registro excesivo de tareas. [#92965](https://github.com/ClickHouse/ClickHouse/pull/92965) ([Azat Khuzhin](https://github.com/azat)).
* En versiones anteriores, algunos nombres de funciones de C++ se mostraban de forma incorrecta ("mangled") en `system.trace_log` y `system.symbols`, y la función `demangle` no los procesaba correctamente. Cierra [#93074](https://github.com/ClickHouse/ClickHouse/issues/93074). [#93075](https://github.com/ClickHouse/ClickHouse/pull/93075) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se introdujo la opción de copia de seguridad `backup_data_from_refreshable_materialized_view_targets` para omitir la copia de seguridad de las vistas materializadas actualizables. Las RMV con estrategia de actualización APPEND siempre se respaldan. [#93076](https://github.com/ClickHouse/ClickHouse/pull/93076) ([Julia Kartseva](https://github.com/jkartseva)). [#93658](https://github.com/ClickHouse/ClickHouse/pull/93658) ([Julia Kartseva](https://github.com/jkartseva))
* Usar información de depuración mínima en lugar de no incluir información de depuración para unidades de traducción grandes, como las funciones. [#93079](https://github.com/ClickHouse/ClickHouse/pull/93079) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió compatibilidad con MinIO en el SDK de AWS S3 para C++ mediante la implementación de un mapeo de códigos de error para errores específicos de MinIO. Este cambio permite que ClickHouse gestione correctamente y reintente los errores del servidor de MinIO cuando se utilizan implementaciones de MinIO en lugar de AWS S3, lo que mejora la fiabilidad para los usuarios que ejecutan almacenamiento de objetos en clústeres de MinIO autogestionados. [#93082](https://github.com/ClickHouse/ClickHouse/pull/93082) ([XiaoBinMu](https://github.com/Binnn-MX)).
* Escribir perfiles simbolizados de jemalloc (lo que elimina la necesidad de un binario durante la generación de perfiles de heap). [#93099](https://github.com/ClickHouse/ClickHouse/pull/93099) ([Azat Khuzhin](https://github.com/azat)).
* Se restauró la herramienta `clickhouse git-import`: fallaba con commits grandes y no válidos. Véase [https://presentations.clickhouse.com/2020-matemarketing/](https://presentations.clickhouse.com/2020-matemarketing/). [#93202](https://github.com/ClickHouse/ClickHouse/pull/93202) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* No mostrar las contraseñas del almacenamiento URL en el registro de consultas. [#93245](https://github.com/ClickHouse/ClickHouse/pull/93245) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se añadió compatibilidad con el tipo `Geometry` en `flipCoordinates`. [#93303](https://github.com/ClickHouse/ClickHouse/pull/93303) ([Bharat Nallan](https://github.com/bharatnc)).
* Mejora la UX de SYSTEM INSTRUMENT ADD/REMOVE: usa literales String para los nombres de las funciones, parchea todas las funciones que coincidan y permite usar function\_name en `REMOVE`. [#93345](https://github.com/ClickHouse/ClickHouse/pull/93345) ([Pablo Marcos](https://github.com/pamarcos)).
* Se añade una nueva configuración `materialize_statistics_on_merge` que permite activar o desactivar la materialización de estadísticas durante la fusión. El valor predeterminado es `1`. [#93379](https://github.com/ClickHouse/ClickHouse/pull/93379) ([Han Fei](https://github.com/hanfei1991)).
* ClickHouse ahora puede interpretar `SELECT` sin paréntesis alrededor de las consultas `DESCRIBE SELECT`. Cierra [#58382](https://github.com/ClickHouse/ClickHouse/issues/58382). [#93429](https://github.com/ClickHouse/ClickHouse/pull/93429) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Añade aleatoriedad a las comprobaciones de corrección de la caché con una probabilidad determinada. [#93439](https://github.com/ClickHouse/ClickHouse/pull/93439) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Añadir la configuración `type_json_allow_duplicated_key_with_literal_and_nested_object` para permitir paths duplicados en JSON cuando uno es un literal y otro es un objeto anidado, por ejemplo `{"a" : 42, "a" : {"b" : 42}}`. Es posible que algunos datos se hayan creado antes de que se añadiera esta restricción sobre paths duplicados en [https://github.com/ClickHouse/ClickHouse/pull/79317](https://github.com/ClickHouse/ClickHouse/pull/79317), y que ahora una manipulación posterior de esos datos provoque errores. Con esta configuración, esos datos antiguos aún pueden usarse sin errores. [#93604](https://github.com/ClickHouse/ClickHouse/pull/93604) ([Pavel Kruglov](https://github.com/Avogar)).
* No se imprimen los valores de tipos simples en líneas separadas en Pretty JSON. [#93836](https://github.com/ClickHouse/ClickHouse/pull/93836) ([Pavel Kruglov](https://github.com/Avogar)).
* Cuando hay muchas sentencias `alter table ... modify setting ...`, puede que no se adquiera el bloqueo en 5 segundos. Es mejor devolver `timeout` que `error lógico`. [#93856](https://github.com/ClickHouse/ClickHouse/pull/93856) ([Han Fei](https://github.com/hanfei1991)).
* Se evita una salida excesiva ante un error de sintaxis. Antes de este cambio, se mostraba el script SQL completo, que podía contener muchas consultas. [#93876](https://github.com/ClickHouse/ClickHouse/pull/93876) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Cálculo correcto del tamaño en bytes de la solicitud `check` con estadísticas en Keeper. [#93907](https://github.com/ClickHouse/ClickHouse/pull/93907) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Se añadió la configuración `use_hash_table_stats_for_join_reordering` para controlar si se utilizan estadísticas del tamaño de la tabla hash en tiempo de ejecución para reordenar joins. Esta configuración está habilitada de forma predeterminada, lo que conserva el comportamiento existente de `collect_hash_table_stats_during_joins`. [#93912](https://github.com/ClickHouse/ClickHouse/pull/93912) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Ahora los usuarios pueden ver parcialmente las opciones de configuración globales anidadas del servidor en la tabla `system.server_settings` (p. ej., `logger.level`). Esto solo cubre las opciones de configuración con una estructura fija (sin listas, enumeraciones, repeticiones, etc.). [#94001](https://github.com/ClickHouse/ClickHouse/pull/94001) ([Hechem Selmi](https://github.com/m-selmi)).
* `QBit` ahora se puede comparar por igualdad. [#94078](https://github.com/ClickHouse/ClickHouse/pull/94078) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Cuando Keeper detecte un snapshot dañado o changelogs inconsistentes, que lance una excepción en lugar de abortar manualmente o limpiar los archivos automáticamente. Esto debería dar lugar a un comportamiento más seguro de Keeper, al depender de la intervención manual. [#94168](https://github.com/ClickHouse/ClickHouse/pull/94168) ([Antonio Andelic](https://github.com/antonio2368)).
* Se corrigió la posible presencia de restos en caso de que falle `CREATE TABLE`. [#94174](https://github.com/ClickHouse/ClickHouse/pull/94174) ([Azat Khuzhin](https://github.com/azat)).
* Corrige el acceso a memoria no inicializada (un fallo en OpenSSL) cuando se usa una clave TLS protegida con contraseña. [#94182](https://github.com/ClickHouse/ClickHouse/pull/94182) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Actualiza chdig a la versión [v26.1.1](https://github.com/azat/chdig/releases/tag/v26.1.1). [#94290](https://github.com/ClickHouse/ClickHouse/pull/94290) ([Azat Khuzhin](https://github.com/azat)).
* Añade compatibilidad con un particionamiento más genérico para el modo ordered de S3Queue. [#94321](https://github.com/ClickHouse/ClickHouse/pull/94321) ([Bharat Nallan](https://github.com/bharatnc)).
* Se añadió el alias `use_statistics` para el ajuste `allow_statistics_optimize`. Esto es más coherente con los ajustes existentes `use_primary_key` y `use_skip_indexes`. [#94366](https://github.com/ClickHouse/ClickHouse/pull/94366) ([Robert Schulze](https://github.com/rschu1ze)).
* Se habilitó la configuración `input_format_numbers_enum_on_conversion_error` para que, en la conversión de números a enums, se compruebe si el elemento existe. [#94384](https://github.com/ClickHouse/ClickHouse/pull/94384) ([Elmi Ahmadov](https://github.com/ahmadov)).
* En el modo ordered de S3(Azure)Queue, se limpian los nodos failed según los límites de seguimiento (antes esto solo se hacía en el modo Unordered, tanto para failed como para processed; ahora también se hará en Ordered, pero solo para los nodos failed). [#94412](https://github.com/ClickHouse/ClickHouse/pull/94412) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se habilitó la gestión de acceso para el usuario `default` en clickhouse-local. El usuario `default` de `clickhouse-local` no tenía el privilegio `access&#95;management`, lo que hacía que operaciones como `DROP ROW POLICY IF EXISTS` fallaran con el error `ACCESS_DENIED`, aunque ese usuario no debería tener restricciones. [#94501](https://github.com/ClickHouse/ClickHouse/pull/94501) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se habilita named collection para diccionarios y tablas de YTsaurus. [#94582](https://github.com/ClickHouse/ClickHouse/pull/94582) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* Se añade compatibilidad con colecciones con nombre definidas mediante SQL en BACKUP/RESTORE para S3 y Azure Blob Storage. Cierra [#94604](https://github.com/ClickHouse/ClickHouse/issues/94604). [#94605](https://github.com/ClickHouse/ClickHouse/pull/94605) ([Pablo Marcos](https://github.com/pamarcos)).
* Compatibilidad con la agrupación en buckets basada en la clave de partición para S3Queue en modo ordenado. [#94698](https://github.com/ClickHouse/ClickHouse/pull/94698) ([Bharat Nallan](https://github.com/bharatnc)).
* Añade una métrica asíncrona con el tiempo transcurrido del merge en ejecución más largo. [#94825](https://github.com/ClickHouse/ClickHouse/pull/94825) ([Raúl Marín](https://github.com/Algunenano)).
* Añadir una comprobación del archivo asociado antes de aplicar la eliminación por posición con IcebergBitmapPositionDeleteTransform. [#94897](https://github.com/ClickHouse/ClickHouse/pull/94897) ([Yang Jiang](https://github.com/Ted-Jiang)).
* Ahora `view_duration_ms` muestra el tiempo durante el cual el grupo estuvo activo, no la suma de las duraciones de los hilos que contiene. [#94966](https://github.com/ClickHouse/ClickHouse/pull/94966) ([Sema Checherinda](https://github.com/CheSema)).
* Se elimina el límite máximo del número de tokens de búsqueda en las funciones `hasAnyTokens` y `hasAllTokens`, que estaba fijado en 64. Ejemplo: `SELECT count() FROM table WHERE hasAllTokens(text, ['token_1', 'token_2', [...], 'token_65']]);` La consulta daría como resultado un error `BAD_ARGUMENTS` porque hay 65 tokens de búsqueda. Con este PR, el límite se ha eliminado por completo y la misma consulta se ejecutaría sin errores. [#95152](https://github.com/ClickHouse/ClickHouse/pull/95152) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Se añade la configuración `input_format_numbers_enum_on_conversion_error` para que, en la conversión de números a Enums, se compruebe si el elemento existe. Cierra: [#56144](https://github.com/ClickHouse/ClickHouse/issues/56144). [#56240](https://github.com/ClickHouse/ClickHouse/pull/56240) ([Nikolay Degterinsky](https://github.com/evillique)).
* Compartir recursos del analizador de formato entre la lectura del archivo de datos y del archivo de eliminación por posición en tablas Iceberg para reducir las asignaciones de memoria. [#94701](https://github.com/ClickHouse/ClickHouse/pull/94701) ([Yang Jiang](https://github.com/Ted-Jiang)).

<div id="268-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Corrección de errores (mal funcionamiento visible para el usuario en una versión estable oficial)
</div>

* Corrige un error por el que los manejadores de consultas predefinidas interpretaban los espacios en blanco finales como datos durante las operaciones de inserción. [#83604](https://github.com/ClickHouse/ClickHouse/pull/83604) ([Fabian Ponce](https://github.com/FabianPonce)).
* Se corrige el error INCOMPATIBLE\_TYPE\_OF\_JOIN para el almacenamiento Join cuando se aplica la optimización de outer join a inner join. Resuelve [#80794](https://github.com/ClickHouse/ClickHouse/issues/80794). [#84292](https://github.com/ClickHouse/ClickHouse/pull/84292) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrige la excepción "Invalid number of rows in Chunk" al usar hash join con `allow_experimental_join_right_table_sorting` activado. [#86440](https://github.com/ClickHouse/ClickHouse/pull/86440) ([yanglongwei](https://github.com/ylw510)).
* Los nombres de archivo siempre se reemplazan por un hash en MergeTree si el sistema de archivos no distingue entre mayúsculas y minúsculas. Anteriormente, en sistemas de archivos que no distinguen entre mayúsculas y minúsculas (como MacOS), esto podía provocar corrupción de datos cuando varios nombres de columna/subcolumna diferían solo por el uso de mayúsculas y minúsculas. [#86559](https://github.com/ClickHouse/ClickHouse/pull/86559) ([Pavel Kruglov](https://github.com/Avogar)).
* Añadir una comprobación completa de permisos durante la fase de creación de la consulta subyacente en una vista materializada. [#89180](https://github.com/ClickHouse/ClickHouse/pull/89180) ([pufit](https://github.com/pufit)).
* Se corrigió un fallo en la función `icebergHash` al usar un argumento constante. [#90335](https://github.com/ClickHouse/ClickHouse/pull/90335) ([Michael Kolupaev](https://github.com/al13n321)).
* Corrige un error lógico cuando una mutación sin transacción modifica partes dentro de una transacción activa que finalmente se revierte. [#90469](https://github.com/ClickHouse/ClickHouse/pull/90469) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Actualiza correctamente `system.warnings` después de convertir una base de datos ordinaria en una base de datos Atomic. [#90473](https://github.com/ClickHouse/ClickHouse/pull/90473) ([sdk2](https://github.com/sdk2)).
* Corrige un error de aserción al leer un archivo Parquet, cuando una parte de una expresión **prewhere** se usa en otra parte de la consulta. [#90635](https://github.com/ClickHouse/ClickHouse/pull/90635) ([Max Kainov](https://github.com/maxknv)).
* Se corrige un fallo en un clúster de un solo nodo al leer desde Iceberg en modo split-by-buckets. Cierra la issue [#90913](https://github.com/ClickHouse/ClickHouse/issues/90913#issue-3668583963). [#91553](https://github.com/ClickHouse/ClickHouse/pull/91553) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige un posible error lógico en el motor Log durante la lectura de subcolumnas. Cierra [#91710](https://github.com/ClickHouse/ClickHouse/issues/91710). [#91711](https://github.com/ClickHouse/ClickHouse/pull/91711) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió el error lógico: 'Storage no admite transacción' durante ATTACH AS REPLICATED. [#91772](https://github.com/ClickHouse/ClickHouse/pull/91772) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrección de un problema por el que los filtros en tiempo de ejecución funcionaban incorrectamente cuando LEFT ANTI JOIN tenía una poscondición adicional. [#91824](https://github.com/ClickHouse/ClickHouse/pull/91824) ([Alexander Gololobov](https://github.com/davenger)).
* Corrige un error en una comparación null-safe que involucra el tipo Nothing. Cierra [#91834](https://github.com/ClickHouse/ClickHouse/issues/91834). Cierra [#84870](https://github.com/ClickHouse/ClickHouse/issues/84870). Cierra [#91821](https://github.com/ClickHouse/ClickHouse/issues/91821). [#91884](https://github.com/ClickHouse/ClickHouse/pull/91884) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige errores en la decodificación de DELTA\_BYTE\_ARRAY en el lector nativo de Parquet que afectaban a datos de tipo cadena muy repetitivos. [#91929](https://github.com/ClickHouse/ClickHouse/pull/91929) ([Daniel Muino](https://github.com/dmuino)).
* Almacena en caché el esquema solo para el archivo a partir del cual se infirió en los globs, en lugar de para todos los archivos durante la inferencia del esquema. Cierra [#91745](https://github.com/ClickHouse/ClickHouse/issues/91745). [#92006](https://github.com/ClickHouse/ClickHouse/pull/92006) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige el error `Couldn't pack tar archive: Failed to write all bytes` causado por un encabezado incorrecto con el tamaño de la entrada del archivo. Soluciona [#89075](https://github.com/ClickHouse/ClickHouse/issues/89075). [#92122](https://github.com/ClickHouse/ClickHouse/pull/92122) ([Julia Kartseva](https://github.com/jkartseva)).
* Liberar el flujo de solicitudes en insert select para evitar el cierre de la conexión HTTP. [#92175](https://github.com/ClickHouse/ClickHouse/pull/92175) ([Sema Checherinda](https://github.com/CheSema)).
* Se corrige un error lógico en consultas con múltiples JOIN con la cláusula `USING` y `join_use_nulls`. [#92251](https://github.com/ClickHouse/ClickHouse/pull/92251) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige un error lógico al reordenar join con join\_use\_nulls, cierra [https://github.com/clickhouse/clickhouse/issues/90795](https://github.com/clickhouse/clickhouse/issues/90795). [#92289](https://github.com/ClickHouse/ClickHouse/pull/92289) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige el formato inconsistente del AST de arrayElement con un literal negado. Cierra [#92288](https://github.com/ClickHouse/ClickHouse/issues/92288) Cierra [#92212](https://github.com/ClickHouse/ClickHouse/issues/92212) Cierra [#91832](https://github.com/ClickHouse/ClickHouse/issues/91832) Cierra [#91789](https://github.com/ClickHouse/ClickHouse/issues/91789) Cierra [#91735](https://github.com/ClickHouse/ClickHouse/issues/91735) Cierra [#88495](https://github.com/ClickHouse/ClickHouse/issues/88495) Cierra [#92386](https://github.com/ClickHouse/ClickHouse/issues/92386). [#92293](https://github.com/ClickHouse/ClickHouse/pull/92293) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige un posible fallo con la configuración `join_on_disk_max_files_to_merge`. [#92335](https://github.com/ClickHouse/ClickHouse/pull/92335) ([Bharat Nallan](https://github.com/bharatnc)).
* issue relacionado con #[https://github.com/ClickHouse/support-escalation/issues/6365](https://github.com/ClickHouse/support-escalation/issues/6365). [#92339](https://github.com/ClickHouse/ClickHouse/pull/92339) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Se corrige la falta de comprobación de acceso en `SYSTEM SYNC FILE CACHE`. Cierra [#92101](https://github.com/ClickHouse/ClickHouse/issues/92101). [#92372](https://github.com/ClickHouse/ClickHouse/pull/92372) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrigió el paso `count_distinct_optimization` sobre funciones de ventana y múltiples argumentos. [#92376](https://github.com/ClickHouse/ClickHouse/pull/92376) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige el error "No se puede escribir en el búfer finalizado" al usar determinadas funciones de agregación con funciones de ventana. Cierra [#91415](https://github.com/ClickHouse/ClickHouse/issues/91415). [#92395](https://github.com/ClickHouse/ClickHouse/pull/92395) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Corrige un error lógico al usar `CREATE TABLE ... AS urlCluster()` y el motor de base de datos `Replicated`. Cierra [#92216](https://github.com/ClickHouse/ClickHouse/issues/92216). [#92418](https://github.com/ClickHouse/ClickHouse/pull/92418) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Hereda la configuración de la información de serialización de la parte de origen durante una mutación en MergeTree. Esto corrige un posible resultado incorrecto de la consulta sobre una parte mutada tras cambios en la serialización de los tipos de datos. [#92419](https://github.com/ClickHouse/ClickHouse/pull/92419) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige un posible conflicto entre una columna y una subcolumna con el mismo nombre que podía provocar el uso de una serialización incorrecta y fallos en las consultas. Cierra [#90219](https://github.com/ClickHouse/ClickHouse/issues/90219). Cierra [#85161](https://github.com/ClickHouse/ClickHouse/issues/85161). [#92453](https://github.com/ClickHouse/ClickHouse/pull/92453) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige un `LOGICAL_ERROR` causado por una modificación no deseada del plan de consulta al convertir un outer join en un inner join. También se flexibilizan los requisitos de la optimización para poder aplicarla en casos en los que se aplican funciones inyectivas a las claves de agregación en los joins. [#92503](https://github.com/ClickHouse/ClickHouse/pull/92503) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Corrige un posible error `SIZES_OF_COLUMNS_DOESNT_MATCH` al ordenar una columna Tuple vacía. Cierra [#92422](https://github.com/ClickHouse/ClickHouse/issues/92422). [#92520](https://github.com/ClickHouse/ClickHouse/pull/92520) ([Pavel Kruglov](https://github.com/Avogar)).
* Verificación de rutas tipadas incompatibles en el tipo JSON. Cierra [#91577](https://github.com/ClickHouse/ClickHouse/issues/91577). [#92539](https://github.com/ClickHouse/ClickHouse/pull/92539) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió el interbloqueo en SHOW CREATE DATABASE para la base de datos Backup. [#92541](https://github.com/ClickHouse/ClickHouse/pull/92541) ([Azat Khuzhin](https://github.com/azat)).
* Usar el código de error correcto al validar el índice hypothesis. [#92559](https://github.com/ClickHouse/ClickHouse/pull/92559) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige la resolución de subcolumnas Dynamic en alias de columnas en el analizador. Anteriormente, la subcolumna Dynamic en un alias de columna se envolvía en `getSubcolumn` y, en algunos casos, ni siquiera podía resolverse. Cierra [#91434](https://github.com/ClickHouse/ClickHouse/issues/91434). [#92583](https://github.com/ClickHouse/ClickHouse/pull/92583) ([Pavel Kruglov](https://github.com/Avogar)).
* Se evita un fallo en tokens() con un segundo argumento NULL. [#92586](https://github.com/ClickHouse/ClickHouse/pull/92586) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige un posible cierre inesperado provocado por una mutación in situ de las columnas const PREWHERE subyacentes. Esto podría haber ocurrido durante la reducción del tamaño de columnas (`IColumn::shrinkToFit`) o el filtrado (`IColumn::filter`), que podían activarse de forma concurrente en varios hilos. [#92588](https://github.com/ClickHouse/ClickHouse/pull/92588) ([Arsen Muk](https://github.com/arsenmuk)).
* La creación y materialización de índices de texto en tablas que contienen partes de gran tamaño (más de 4.294.967.295 filas) está temporalmente deshabilitada. Esta limitación evita resultados incorrectos en las consultas, ya que la implementación actual del índice aún no admite partes tan grandes. [#92644](https://github.com/ClickHouse/ClickHouse/pull/92644) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige un error lógico `Too large size (A) passed to allocator` al ejecutar JOINs. Cierra [#92043](https://github.com/ClickHouse/ClickHouse/issues/92043). [#92667](https://github.com/ClickHouse/ClickHouse/pull/92667) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrige un error por el que los índices `ngrambf_v1` con longitud de ngram (1.er parámetro) > 8 lanzaban una excepción. [#92672](https://github.com/ClickHouse/ClickHouse/pull/92672) ([Robert Schulze](https://github.com/rschu1ze)).
* Se corrige una excepción no controlada durante la recarga en segundo plano de las colecciones con nombre cuando se usa almacenamiento de ZooKeeper. Cierra [https://github.com/ClickHouse/clickhouse-private/issues/44180](https://github.com/ClickHouse/clickhouse-private/issues/44180). [#92717](https://github.com/ClickHouse/ClickHouse/pull/92717) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige la lógica incorrecta en las comprobaciones de grants de acceso con comodines. El intento anterior [https://github.com/ClickHouse/ClickHouse/pull/90928](https://github.com/ClickHouse/ClickHouse/pull/90928) abordó una vulnerabilidad crítica, pero acabó siendo demasiado restrictivo, lo que hizo que algunas sentencias `GRANT` con comodines fallaran debido a revocaciones no relacionadas. [#92725](https://github.com/ClickHouse/ClickHouse/pull/92725) ([pufit](https://github.com/pufit)).
* Corrige un error en la lógica de omisión de datos al usar `not match(...)` en `WHERE`, que provocaba resultados incorrectos. Cierra [#92492](https://github.com/ClickHouse/ClickHouse/issues/92492). [#92726](https://github.com/ClickHouse/ClickHouse/pull/92726) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* No intente eliminar los directorios temporales al iniciar si se crea una tabla MergeTree en un disco de solo lectura. [#92748](https://github.com/ClickHouse/ClickHouse/pull/92748) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrigió "Cannot add action to empty ExpressionActionsChain" para ALTER TABLE REWRITE PARTS (v2). [#92754](https://github.com/ClickHouse/ClickHouse/pull/92754) ([Azat Khuzhin](https://github.com/azat)).
* Evita un fallo al leer desde una `Connection` desconectada. [#92807](https://github.com/ClickHouse/ClickHouse/pull/92807) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Corrige el error lógico ` Failed to set file processing within 100 retries` en el almacenamiento `S3Queue` en modo `Ordered`. Ahora se ha sustituido por una advertencia. Este error podía producirse antes de la versión 25.10 si la sesión de Keeper había expirado; sin embargo, seguirá siendo una advertencia en las versiones 25.10+, ya que aún es teóricamente posible que se produzca este error en caso de una alta concurrencia de procesamiento en modo `Ordered`. [#92814](https://github.com/ClickHouse/ClickHouse/pull/92814) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Antes, algunas consultas que usaban sharding por PK con una condición falsa fallaban. Ahora ya no fallan. Necesario para [https://github.com/ClickHouse/ClickHouse/pull/89313](https://github.com/ClickHouse/ClickHouse/pull/89313). [#92815](https://github.com/ClickHouse/ClickHouse/pull/92815) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrigió el cálculo de los tamaños sin comprimir de los índices de texto en la tabla `system.parts`. [#92832](https://github.com/ClickHouse/ClickHouse/pull/92832) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrigió el uso del índice primario en las actualizaciones ligeras que tienen una cláusula `IN` con subconsultas en el predicado de la cláusula `WHERE`. [#92838](https://github.com/ClickHouse/ClickHouse/pull/92838) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrigió la creación de la indicación de tipo para la ruta 'skip' en JSON. Cierra [#92731](https://github.com/ClickHouse/ClickHouse/issues/92731). [#92842](https://github.com/ClickHouse/ClickHouse/pull/92842) ([Pavel Kruglov](https://github.com/Avogar)).
* En el motor de tabla S3, debemos evitar almacenar en caché la clave de partición si hay funciones no deterministas. [#92844](https://github.com/ClickHouse/ClickHouse/pull/92844) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige un posible error `FILE_DOESNT_EXIST` tras la mutación de una columna dispersa con `ratio_of_defaults_for_sparse_serialization=0.0`. Cierra [#92633](https://github.com/ClickHouse/ClickHouse/issues/92633). [#92860](https://github.com/ClickHouse/ClickHouse/pull/92860) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige la inferencia del esquema de Parquet en el antiguo lector de Parquet (no se usa de forma predeterminada) cuando una columna JSON va después de una columna Tupe. Corrige el fallo del antiguo lector de Parquet (no se usa de forma predeterminada) con tuplas vacías. [#92867](https://github.com/ClickHouse/ClickHouse/pull/92867) ([Michael Kolupaev](https://github.com/al13n321)).
* Corrige un error lógico con múltiples joins con una condición constante y `join_use_nulls`; cierra [#92640](https://github.com/ClickHouse/ClickHouse/issues/92640). [#92892](https://github.com/ClickHouse/ClickHouse/pull/92892) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige un posible error `NOT_FOUND_COLUMN_IN_BLOCK` durante la inserción en una tabla con una subcolumna en la expresión de partición. Cierra [#93210](https://github.com/ClickHouse/ClickHouse/issues/93210). Cierra [#83406](https://github.com/ClickHouse/ClickHouse/issues/83406). [#92905](https://github.com/ClickHouse/ClickHouse/pull/92905) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige el error `NO_SUCH_COLUMN_IN_TABLE` en el motor Merge con tablas con alias. Cierra [#88665](https://github.com/ClickHouse/ClickHouse/issues/88665). [#92910](https://github.com/ClickHouse/ClickHouse/pull/92910) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige el caso NULL != NULL para full\_sorting\_join en una columna LowCardinality(Nullable(T)). [#92924](https://github.com/ClickHouse/ClickHouse/pull/92924) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrigieron varios cierres inesperados durante las fusiones de índices de texto en tablas `MergeTree`. [#92925](https://github.com/ClickHouse/ClickHouse/pull/92925) ([Anton Popov](https://github.com/CurtizJ)).
* Se restauran las envolturas LowCardinality en los resultados de expresiones SET, cuando es necesario, durante la agregación con TTL para evitar excepciones durante la optimización de la tabla. [#92971](https://github.com/ClickHouse/ClickHouse/pull/92971) ([Seva Potapov](https://github.com/seva-potapov)).
* Corrige un error lógico durante el análisis de índices cuando se usa un array vacío en la función `has`. Cierra [#92906](https://github.com/ClickHouse/ClickHouse/issues/92906). [#92995](https://github.com/ClickHouse/ClickHouse/pull/92995) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrige un posible bloqueo al finalizar el pool de programación en segundo plano (puede provocar bloqueos del servidor durante el apagado). [#93008](https://github.com/ClickHouse/ClickHouse/pull/93008) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige un posible error FILE\_DOESNT\_EXIST después de una mutación de una columna dispersa cuando la configuración `ratio_of_defaults_for_sparse_serialization` se cambiaba a `1.0` mediante alter. [#93016](https://github.com/ClickHouse/ClickHouse/pull/93016) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige un error en la lógica de omisión de datos al usar `not materialize(...)` o `not CAST(...)` en `WHERE`, que provocaba resultados incorrectos. Cierra [#88536](https://github.com/ClickHouse/ClickHouse/issues/88536). [#93017](https://github.com/ClickHouse/ClickHouse/pull/93017) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrige el posible uso de partes obsoletas debido a una race condition TOCTOU en las partes compartidas. [#93022](https://github.com/ClickHouse/ClickHouse/pull/93022) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige un bloqueo al deserializar un estado de agregación `groupConcat` malformado con desplazamientos fuera de rango. [#93028](https://github.com/ClickHouse/ClickHouse/pull/93028) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se corrige un problema que dejaba la conexión en un estado incorrecto tras la cancelación preliminar de consultas distribuidas. [#93029](https://github.com/ClickHouse/ClickHouse/pull/93029) ([Azat Khuzhin](https://github.com/azat)).
* Corrige los resultados del join cuando la clave de join del lado derecho es una columna dispersa. Esto cierra [#92920](https://github.com/ClickHouse/ClickHouse/issues/92920). Solo puedo reproducir el error con `set compatibility='23.3'`. No estoy seguro de si debería retroportarse. [#93038](https://github.com/ClickHouse/ClickHouse/pull/93038) ([Amos Bird](https://github.com/amosbird)).
* Se soluciona un posible `Cannot finalize buffer after cancellation` en `estimateCompressionRatio()`. Soluciona: [#87380](https://github.com/ClickHouse/ClickHouse/issues/87380). [#93068](https://github.com/ClickHouse/ClickHouse/pull/93068) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigieron las fusiones de índices de texto basados en expresiones complejas (como `concat(col1, col2)`). [#93073](https://github.com/ClickHouse/ClickHouse/pull/93073) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrige la aplicación de la proyección cuando el filtro contiene subcolumnas. Cierra [#92882](https://github.com/ClickHouse/ClickHouse/issues/92882). [#93141](https://github.com/ClickHouse/ClickHouse/pull/93141) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió un error lógico que se producía en algunos casos al añadir filtros en tiempo de ejecución de join al plan de consulta. Se debía a que se devolvían incorrectamente columnas const duplicadas desde uno de los lados del join. [#93144](https://github.com/ClickHouse/ClickHouse/pull/93144) ([Alexander Gololobov](https://github.com/davenger)).
* La función especial `__applyFilter` utilizada por los filtros de tiempo de ejecución de JOIN devolvía ILLEGAL\_TYPE\_OF\_ARGUMENT en algunos casos válidos. [#93187](https://github.com/ClickHouse/ClickHouse/pull/93187) ([Alexander Gololobov](https://github.com/davenger)).
* Evita que distintas columnas interpoladas se fusionen en la misma columna dentro de un bloque cuando las columnas interpoladas son, en la práctica, alias de la misma columna. [#93197](https://github.com/ClickHouse/ClickHouse/pull/93197) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* No añadir un filtro en tiempo de ejecución al hacer join con la tabla del lado derecho ya rellenada. [#93211](https://github.com/ClickHouse/ClickHouse/pull/93211) ([Alexander Gololobov](https://github.com/davenger)).
* Se corrige la limpieza de los watches persistentes de Keeper tras una sesión finalizada. Cierra [#92480](https://github.com/ClickHouse/ClickHouse/issues/92480). [#93213](https://github.com/ClickHouse/ClickHouse/pull/93213) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se corrige el uso de ORDER BY con tuplas en Iceberg. Esto cierra [#92977](https://github.com/ClickHouse/ClickHouse/issues/92977). [#93225](https://github.com/ClickHouse/ClickHouse/pull/93225) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se corrige un fallo en la configuración `s3queue_migrate_old_metadata_to_buckets` de S3Queue. Cierra [#93392](https://github.com/ClickHouse/ClickHouse/issues/93392), [#93196](https://github.com/ClickHouse/ClickHouse/issues/93196), [#81739](https://github.com/ClickHouse/ClickHouse/issues/81739). [#93232](https://github.com/ClickHouse/ClickHouse/pull/93232) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se eliminan las columnas no utilizadas cuando la proyección se reconstruye durante la fusión. Esto reduce el uso de memoria y crea menos partes temporales. [#93233](https://github.com/ClickHouse/ClickHouse/pull/93233) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se corrige la eliminación de columnas no utilizadas de subconsultas cuando hay una subconsulta escalar correlacionada. Antes de esta corrección, una columna podía eliminarse si solo se usaba en la subconsulta correlacionada, y la consulta fallaba con el error `NOT_FOUND_COLUMN_IN_BLOCK`. [#93273](https://github.com/ClickHouse/ClickHouse/pull/93273) ([Dmitry Novik](https://github.com/novikd)).
* Corrige la posible falta de una subcolumna en una MV durante un ALTER de la tabla de origen. Cierra [#93231](https://github.com/ClickHouse/ClickHouse/issues/93231). [#93276](https://github.com/ClickHouse/ClickHouse/pull/93276) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige en el analizador la planificación de consultas del motor de tabla `Merge`, que podía lanzar ILLEGAL\_COLUMN para `hostName()` al fusionar tablas locales y remotas/Distributed. Cierra [#92059](https://github.com/ClickHouse/ClickHouse/issues/92059). [#93286](https://github.com/ClickHouse/ClickHouse/pull/93286) ([Jinlin](https://github.com/withlin)).
* Corrige un caso en el que `NOT IN` con argumentos de Array no constantes devolvía un valor incorrecto, y añade compatibilidad con funciones de Array no constantes. Cierra [#14980](https://github.com/ClickHouse/ClickHouse/issues/14980). [#93314](https://github.com/ClickHouse/ClickHouse/pull/93314) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se corrige el error `Not found column` en la optimización `use_top_k_dynamic_filtering`. Corrige [#93186](https://github.com/ClickHouse/ClickHouse/issues/93186). [#93316](https://github.com/ClickHouse/ClickHouse/pull/93316) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se corrigió la reconstrucción de los índices de texto creados sobre subcolumnas. [#93326](https://github.com/ClickHouse/ClickHouse/pull/93326) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrigió el manejo de un array vacío como segundo argumento de las funciones `hasAllTokens` y `hasAnyTokens`. [#93328](https://github.com/ClickHouse/ClickHouse/pull/93328) ([Anton Popov](https://github.com/CurtizJ)).
* Se corrigió un error lógico al usar filtros de tiempo de ejecución en una consulta con totales para la tabla del lado derecho. [#93330](https://github.com/ClickHouse/ClickHouse/pull/93330) ([Alexander Gololobov](https://github.com/davenger)).
* El servidor ya no falla si se llama a la función `tokens` con parámetros del tokenizer no constantes (el 2.º, 3.º y 4.º parámetro), p. ej., `SELECT tokens(NULL, 1, materialize(1))`. [#93383](https://github.com/ClickHouse/ClickHouse/pull/93383) ([Robert Schulze](https://github.com/rschu1ze)).
* Se corrigió una vulnerabilidad por desbordamiento de enteros en la deserialización del estado de `groupConcat` que podía provocar problemas de seguridad de la memoria con estados de agregación manipulados. [#93426](https://github.com/ClickHouse/ClickHouse/pull/93426) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se corrigió el análisis del índice de texto en columnas de tipo array cuando el índice no contiene tokens (todos los arrays están vacíos o el tokenizador omite todos los tokens). [#93457](https://github.com/ClickHouse/ClickHouse/pull/93457) ([Anton Popov](https://github.com/CurtizJ)).
* Evita el inicio de sesión mediante OAuth en ClickHouse Client cuando el nombre de usuario y la contraseña están en la cadena de conexión. [#93459](https://github.com/ClickHouse/ClickHouse/pull/93459) ([Krishna Mannem](https://github.com/kcmannem)).
* Corregir la compatibilidad con las credenciales proporcionadas de Azure ADLS Gen2 en DataLakeCatalog: interpretar las claves `adls.sas-token.*` de los catálogos REST de Iceberg y corregir el análisis de las URL ABFSS. [#93477](https://github.com/ClickHouse/ClickHouse/pull/93477) ([Karun Anantharaman](https://github.com/karunmotorq)).
* Se corrigió la compatibilidad con GLOBAL IN en el analizador (antes, el Set se volvía a crear en el nodo remoto). [#93507](https://github.com/ClickHouse/ClickHouse/pull/93507) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigió la extracción de la subcolumna durante la deserialización directamente en columnas dispersas. [#93512](https://github.com/ClickHouse/ClickHouse/pull/93512) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió la lectura directa desde el índice de texto en consultas de búsqueda duplicadas. [#93516](https://github.com/ClickHouse/ClickHouse/pull/93516) ([Anton Popov](https://github.com/CurtizJ)).
* Corrección del error NOT\_FOUND\_COLUMN\_IN\_BLOCK cuando el runtime filter está habilitado y las tablas unidas devuelven la misma columna varias veces (p. ej., SELECT a, a, a FROM t). [#93526](https://github.com/ClickHouse/ClickHouse/pull/93526) ([Alexander Gololobov](https://github.com/davenger)).
* Se corrigió un error por el que clickhouse-client pedía la contraseña dos veces al conectarse mediante ssh. [#93547](https://github.com/ClickHouse/ClickHouse/pull/93547) ([Isak Ellmer](https://github.com/spinojara)).
* Asegúrese de que ZooKeeper finalice correctamente al apagarse (corrige un posible bloqueo durante el apagado en casos muy poco probables). [#93602](https://github.com/ClickHouse/ClickHouse/pull/93602) ([Azat Khuzhin](https://github.com/azat)).
* Se corrigió LOGICAL\_ERROR al restaurar ReplicatedMergeTree con una condición de carrera en la deduplicación. [#93612](https://github.com/ClickHouse/ClickHouse/pull/93612) ([Pablo Marcos](https://github.com/pamarcos)).
* Se corrige el uso de columnas dispersas en la actualización de TTL durante la deserialización directa en columnas dispersas en algunos formatos de entrada. Esto corrige el posible error lógico `Unexpected type of result TTL column`. [#93619](https://github.com/ClickHouse/ClickHouse/pull/93619) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigieron las funciones de índice H3 que a veces fallaban o se quedaban bloqueadas al llamarse con valores de entrada no válidos. [#93657](https://github.com/ClickHouse/ClickHouse/pull/93657) ([Michael Kolupaev](https://github.com/al13n321)).
* El uso del índice `ngram_bf` en datos no UTF-8 provocó una lectura de memoria no inicializada, con valores que podían quedar en la estructura del índice resultante. Cierra [#92576](https://github.com/ClickHouse/ClickHouse/issues/92576). [#93663](https://github.com/ClickHouse/ClickHouse/pull/93663) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Comprobar que el tamaño del búfer descomprimido sea el esperado. [#93690](https://github.com/ClickHouse/ClickHouse/pull/93690) ([Raúl Marín](https://github.com/Algunenano)).
* Impedir que los usuarios obtengan la lista de columnas de una tabla sin verificar el permiso `SHOW COLUMNS` mediante el motor de tabla `merge`. [#93695](https://github.com/ClickHouse/ClickHouse/pull/93695) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Se corrigió la materialización de los índices de omisión creados a partir de subcolumnas. [#93708](https://github.com/ClickHouse/ClickHouse/pull/93708) ([Anton Popov](https://github.com/CurtizJ)).
* Guardamos los punteros compartidos a los almacenamientos en `QueryPipeline::resources::storage_holders` para garantizar que los objetos `IStorage` no se destruyan mientras `PipelineExecutor` siga activo. [#93746](https://github.com/ClickHouse/ClickHouse/pull/93746) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrige el problema al adjuntar BD Replicated cuando el host entre servidores cambiaba tras reiniciar. [#93779](https://github.com/ClickHouse/ClickHouse/pull/93779) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Se corrige la aserción `!read_until_position` en `ReadBufferFromS3`, que se producía cuando la caché estaba habilitada. [#93809](https://github.com/ClickHouse/ClickHouse/pull/93809) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige un error lógico en un caso poco frecuente en el que se usa una tupla vacía con una columna `Map`. Cierra [#93784](https://github.com/ClickHouse/ClickHouse/issues/93784). [#93814](https://github.com/ClickHouse/ClickHouse/pull/93814) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigió la corrupción de `_part_offset` al reconstruir las proyecciones durante las fusiones, y se optimizó el procesamiento de proyecciones al evitar lecturas innecesarias de la columna `_part_offset` y omitir columnas no necesarias en los cálculos de proyecciones. Esto da continuidad a las optimizaciones introducidas en [#93233](https://github.com/ClickHouse/ClickHouse/issues/93233). [#93827](https://github.com/ClickHouse/ClickHouse/pull/93827) ([Amos Bird](https://github.com/amosbird)).
* Se elimina el manejo de 'Bad version'. [#93843](https://github.com/ClickHouse/ClickHouse/pull/93843) ([Anton Ivashkin](https://github.com/ianton-ru)).
* Se corrige que `optimize_inverse_dictionary_lookup` no funcionara con una consulta distribuida cuando la clave es de tipo entero con signo. Cierra [#93259](https://github.com/ClickHouse/ClickHouse/issues/93259). [#93848](https://github.com/ClickHouse/ClickHouse/pull/93848) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigió que `lag`/`lead` no funcionaran con la consulta distribuida `remote()`. Cierra [#90014](https://github.com/ClickHouse/ClickHouse/issues/90014). [#93858](https://github.com/ClickHouse/ClickHouse/pull/93858) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrigió un error en el envío de instrumentación del sistema. [#93937](https://github.com/ClickHouse/ClickHouse/pull/93937) ([Pablo Marcos](https://github.com/pamarcos)).
* En [https://github.com/ClickHouse/ClickHouse/pull/89173](https://github.com/ClickHouse/ClickHouse/pull/89173), añadimos un campo adicional a la estructura que `TraceSender` envía a través de una tubería interna. Sin embargo, no se actualizó el tamaño del búfer ([aquí](https://github.com/ClickHouse/ClickHouse/pull/89173/changes#diff-36ecfac5cde34c92c031652d8a77f0d12782cd5d43e68d6ef159e6d46a54224fL44)), por lo que estamos escribiendo más datos en el búfer de los que permite `buffer_size`, lo que provoca múltiples flushes. Además, como `TraceSender::send` se llama desde distintos hilos, los flushes de esos hilos pueden intercalarse, lo que rompe el invariante del que depende el extremo receptor (`TraceCollector`). [#93966](https://github.com/ClickHouse/ClickHouse/pull/93966) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrige la conversión de tipos al supertipo durante la operación JOIN del motor de almacenamiento `Join` con la cláusula `USING`. Corrige [#91672](https://github.com/ClickHouse/ClickHouse/issues/91672). Corrige [#78572](https://github.com/ClickHouse/ClickHouse/issues/78572). [#94000](https://github.com/ClickHouse/ClickHouse/pull/94000) ([Dmitry Novik](https://github.com/novikd)).
* Corrección de un problema por el que FilterStep no se añadía correctamente cuando se aplicaba un runtime filter de join sobre una tabla Merge. [#94021](https://github.com/ClickHouse/ClickHouse/pull/94021) ([Alexander Gololobov](https://github.com/davenger)).
* Una consulta `SELECT` que incluía un predicado sobre varias columnas con índices de omisión de bloom filter, y en la que había condiciones `OR` y `NOT`, podía devolver resultados incoherentes. Esto ya se ha corregido. [#94026](https://github.com/ClickHouse/ClickHouse/pull/94026) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Se corrige `CLEAR` en una columna con índices dependientes. [#94057](https://github.com/ClickHouse/ClickHouse/pull/94057) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió el uso de un valor sin inicializar en `ReadWriteBufferFromHTTP`. [#94058](https://github.com/ClickHouse/ClickHouse/pull/94058) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una comprobación errónea de las rutas tipadas en JSON. La comprobación se introdujo en [https://github.com/ClickHouse/ClickHouse/pull/92842](https://github.com/ClickHouse/ClickHouse/pull/92842) y puede provocar un error al iniciar tablas existentes. [#94070](https://github.com/ClickHouse/ClickHouse/pull/94070) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige el cierre inesperado durante el análisis del filtro cuando hay un OUTER JOIN. Corrige [#90979](https://github.com/ClickHouse/ClickHouse/issues/90979). [#94080](https://github.com/ClickHouse/ClickHouse/pull/94080) ([Dmitry Novik](https://github.com/novikd)).
* Se corrigió la precisión de `uniqTheta` al usar claves de agregación UInt8 en paralelo (`max_threads` > 1, valor predeterminado). [#94095](https://github.com/ClickHouse/ClickHouse/pull/94095) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige un fallo provocado por una excepción lanzada desde una llamada a `socket.setBlocking(true)` dentro de `SCOPE_EXIT`. [#94100](https://github.com/ClickHouse/ClickHouse/pull/94100) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrige la pérdida de datos cuando `DROP PARTITION` elimina partes creadas por entradas de log posteriores en ReplicatedMergeTree. [#94123](https://github.com/ClickHouse/ClickHouse/pull/94123) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Se corrigió un problema en el lector de Parquet v3, que manejaba incorrectamente los arrays que cruzan los límites de página. Esto ocurre, por ejemplo, con archivos escritos por Arrow sin habilitar las estadísticas de página ni el índice de página. Afecta solo a las columnas del tipo de dato Array. El síntoma más probable es que un array cada \~1 MB de datos quede truncado. Antes de esta corrección, use esta configuración como solución alternativa: `input_format_parquet_use_native_reader_v3 = 0`. [#94125](https://github.com/ClickHouse/ClickHouse/pull/94125) ([Michael Kolupaev](https://github.com/al13n321)).
* Se corrige el exceso de watches en ReplicatedMergeTree mientras se espera una entrada del log. [#94133](https://github.com/ClickHouse/ClickHouse/pull/94133) ([Azat Khuzhin](https://github.com/azat)).
* Funciones `arrayShuffle`, `arrayPartialShuffle` y `arrayRandomSample` para materializar columnas constantes, de modo que distintas filas obtengan resultados diferentes. [#94134](https://github.com/ClickHouse/ClickHouse/pull/94134) ([Joanna Hulboj](https://github.com/jh0x)).
* Se corrige una condición de carrera en la evaluación de funciones de tabla en vistas materializadas. [#94171](https://github.com/ClickHouse/ClickHouse/pull/94171) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una desreferenciación de nullptr en los motores de base de datos `PostgreSQL` (cuando la consulta es incorrecta). Cierra [#92887](https://github.com/ClickHouse/ClickHouse/issues/92887). [#94180](https://github.com/ClickHouse/ClickHouse/pull/94180) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige una fuga de memoria en vistas materializadas actualizables que utilizan consultas `SELECT` con múltiples subconsultas. [#94200](https://github.com/ClickHouse/ClickHouse/pull/94200) ([Antonio Andelic](https://github.com/antonio2368)).
* Soluciona una condición de carrera entre `DataPartStorageOnDiskBase::remove` y `system.parts`. Cierra [#49076](https://github.com/ClickHouse/ClickHouse/issues/49076). [#94262](https://github.com/ClickHouse/ClickHouse/pull/94262) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se elimina el especificador `noexcept` incorrecto en la asignación por copia de HashTable, que puede provocar un crash (`std::terminate`) en caso de excepciones de memoria. [#94275](https://github.com/ClickHouse/ClickHouse/pull/94275) ([Nikita Taranov](https://github.com/nickitat)).
* Anteriormente, al crear una proyección con columnas duplicadas en GROUP BY (p. ej., `GROUP BY c0, c0`) e insertar datos, se producía un `std::length_error` si `optimize_row_order` está habilitado. Cierra [#94065](https://github.com/ClickHouse/ClickHouse/issues/94065). [#94277](https://github.com/ClickHouse/ClickHouse/pull/94277) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un error poco frecuente en el client de ZooKeeper durante la conexión que provoca cuelgues y fallos. [#94320](https://github.com/ClickHouse/ClickHouse/pull/94320) ([Azat Khuzhin](https://github.com/azat)).
* Se corrige un problema por el que la optimización de función a subcolumnas no se aplicaba a las subcolumnas. [#94323](https://github.com/ClickHouse/ClickHouse/pull/94323) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrige un posible resultado incorrecto en `RIGHT JOIN` anidados cuando `enable_lazy_columns_replication` está habilitado. El error provocaba que todas las filas de las columnas replicadas devolvieran incorrectamente el mismo valor en lugar de sus valores correspondientes. Cierra [#93891](https://github.com/ClickHouse/ClickHouse/issues/93891). [#94339](https://github.com/ClickHouse/ClickHouse/pull/94339) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se corrige el pushdown de filtros en SEMI JOIN mediante conjuntos de equivalencia. No se aplica el pushdown del filtro si han cambiado los tipos de los argumentos. Corrige [#93264](https://github.com/ClickHouse/ClickHouse/issues/93264). [#94340](https://github.com/ClickHouse/ClickHouse/pull/94340) ([Dmitry Novik](https://github.com/novikd)).
* Corrige el uso de DeltaLake CDF con el motor de base de datos DataLake (integración de catálogos de delta lake). Cierra [#94122](https://github.com/ClickHouse/ClickHouse/issues/94122). [#94342](https://github.com/ClickHouse/ClickHouse/pull/94342) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se corrigió el valor incorrecto de la métrica `FilesystemCacheSizeLimit` cuando se usaba la política de caché `SLRU`. [#94363](https://github.com/ClickHouse/ClickHouse/pull/94363) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Crear un motor de base de datos Backup con menos de dos argumentos ahora devuelve un mensaje de error más descriptivo (`Wrong number of arguments` en lugar de `std::out_of_range: InlinedVector::at(size_type) const failed bounds check.`). [#94374](https://github.com/ClickHouse/ClickHouse/pull/94374) ([Robert Schulze](https://github.com/rschu1ze)).
* Ignora las revocaciones imposibles de privilegios globales a nivel de base de datos para privilegios con opción de otorgamiento. [#94386](https://github.com/ClickHouse/ClickHouse/pull/94386) ([pufit](https://github.com/pufit)).
* Se corrigió la lectura de desplazamientos dispersos en partes compactas. Cierra [#94385](https://github.com/ClickHouse/ClickHouse/issues/94385). [#94399](https://github.com/ClickHouse/ClickHouse/pull/94399) ([Pavel Kruglov](https://github.com/Avogar)).
* No impedir ALTER de columnas con índices implícitos, incluso si se usa el modo `throw` de `alter_column_secondary_index_mode`. [#94425](https://github.com/ClickHouse/ClickHouse/pull/94425) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrige un crash en `TCPHandler` cuando varias llamadas a `receivePacketsExpectQuery` leen `Protocol::Client::IgnoredPartUUIDs`. [#94434](https://github.com/ClickHouse/ClickHouse/pull/94434) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Se corrige el enmascaramiento de datos sensibles en `system.functions`. [#94436](https://github.com/ClickHouse/ClickHouse/pull/94436) ([Vitaly Baranov](https://github.com/vitlibar)).
* Corrige la desreferenciación de nullptr con `send_profile_events` deshabilitado. Esta funcionalidad se introdujo recientemente en el driver de Python de ClickHouse. Cierra [#92488](https://github.com/ClickHouse/ClickHouse/issues/92488). [#94466](https://github.com/ClickHouse/ClickHouse/pull/94466) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la incompatibilidad de .mrk del índice de texto durante las operaciones de merge. [#94494](https://github.com/ClickHouse/ClickHouse/pull/94494) ([Peng Jian](https://github.com/fastio)).
* Cuando `read_in_order_use_virtual_row` está habilitado, el código accedía a las columnas del índice basándose en el tamaño completo de la clave primaria sin comprobar si el índice se había truncado, lo que provocaba acceso a memoria ya liberada / memoria sin inicializar. Cierra [#85596](https://github.com/ClickHouse/ClickHouse/issues/85596). [#94500](https://github.com/ClickHouse/ClickHouse/pull/94500) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un error causado por una incompatibilidad de tipos al enviar tablas externas para subconsultas con GLOBAL IN cuando los tipos son Nullable. Cierra [#94097](https://github.com/ClickHouse/ClickHouse/issues/94097). [#94511](https://github.com/ClickHouse/ClickHouse/pull/94511) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* En versiones anteriores, las consultas con múltiples condiciones de índice sobre la misma expresión podían lanzar por error la excepción `Not found column`. Cierra [#60660](https://github.com/ClickHouse/ClickHouse/issues/60660). [#94515](https://github.com/ClickHouse/ClickHouse/pull/94515) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige el manejo incorrecto de la columna Nullable del join en los filtros en tiempo de ejecución. [#94555](https://github.com/ClickHouse/ClickHouse/pull/94555) ([Alexander Gololobov](https://github.com/davenger)).
* La creación de una carga de trabajo dentro de otra que está actualmente en uso ya no provoca un fallo. [#94599](https://github.com/ClickHouse/ClickHouse/pull/94599) ([Sergei Trifonov](https://github.com/serxa)).
* Se corrige un fallo en la optimización de ANY LEFT JOIN cuando se evalúa `isNotNull` sobre una columna ausente. [#94600](https://github.com/ClickHouse/ClickHouse/pull/94600) ([Molly](https://github.com/ggmolly)).
* Corregida la evaluación de expresiones por defecto al hacer referencia a otras columnas con valores por defecto calculados. [#94615](https://github.com/ClickHouse/ClickHouse/pull/94615) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige problemas de permisos en las operaciones de BACKUP/RESTORE. [#94617](https://github.com/ClickHouse/ClickHouse/pull/94617) ([Pablo Marcos](https://github.com/pamarcos)).
* Se corrige un cierre inesperado debido a una conversión de tipo incorrecta cuando el tipo de dato es `Nullable(DateTime64)`. [#94627](https://github.com/ClickHouse/ClickHouse/pull/94627) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige un error por el que ciertas consultas distribuidas con `ORDER BY` podían devolver columnas `ALIAS` con los valores intercambiados (es decir, la columna `a` mostraba los datos de la columna `b` y viceversa). [#94644](https://github.com/ClickHouse/ClickHouse/pull/94644) ([filimonov](https://github.com/filimonov)).
* Se corrigió el guardado de los resultados de keeper-bench en un archivo. [#94654](https://github.com/ClickHouse/ClickHouse/pull/94654) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige estimaciones incorrectas con estadísticas de tipo MinMax cuando la columna contiene valores de coma flotante negativos. [#94665](https://github.com/ClickHouse/ClickHouse/pull/94665) ([zoomxi](https://github.com/zoomxi)).
* Se corrige la lectura de archivos Parquet cuando la clave de un map es un struct. [#94670](https://github.com/ClickHouse/ClickHouse/pull/94670) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige un posible resultado incorrecto de RIGHT join al usar condiciones ON complejas. Cierra [#92913](https://github.com/ClickHouse/ClickHouse/issues/92913). [#94680](https://github.com/ClickHouse/ClickHouse/pull/94680) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Preservar la granularidad constante del índice (use\_const\_adaptive\_granularity) después de las fusiones verticales. [#94725](https://github.com/ClickHouse/ClickHouse/pull/94725) ([Azat Khuzhin](https://github.com/azat)).
* Corrige un error en mutaciones con subconsultas escalares y dependencias de una tabla. Si una tabla tenía dependencias (índice o proyecciones) sobre una columna, las subconsultas escalares podían evaluarse y almacenarse en caché sin ningún dato, lo que podía provocar cambios incorrectos. [#94731](https://github.com/ClickHouse/ClickHouse/pull/94731) ([Raúl Marín](https://github.com/Algunenano)).
* Se corrigió el fallback de cpu\_pressure de AsynchronousMetrics en caso de error. [#94827](https://github.com/ClickHouse/ClickHouse/pull/94827) ([Raúl Marín](https://github.com/Algunenano)).
* A la función `getURLHostRFC` le faltaban comprobaciones de límites antes de desreferenciar punteros. Cuando se pasaba una cadena vacía a `domainRFC`, se leía memoria sin inicializar, lo que desencadenaba errores de MSan. [#94851](https://github.com/ClickHouse/ClickHouse/pull/94851) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corregir el modo de solo lectura de los discos cifrados. [#94852](https://github.com/ClickHouse/ClickHouse/pull/94852) ([Azat Khuzhin](https://github.com/azat)).
* Corrige un error lógico en `LIMIT/OFFSET` con valores fraccionarios al usar el analizador antiguo con tablas Distributed. Cierra [#94712](https://github.com/ClickHouse/ClickHouse/issues/94712). [#94999](https://github.com/ClickHouse/ClickHouse/pull/94999) ([Ahmed Gouda](https://github.com/0xgouda)).
* Se corrige un fallo que se producía en determinadas condiciones cuando los filtros de ejecución de JOIN están habilitados de forma predeterminada. [#95000](https://github.com/ClickHouse/ClickHouse/pull/95000) ([Alexander Gololobov](https://github.com/davenger)).
* Mejora del enmascaramiento de contraseñas en la URL utilizada en el motor de tabla `URL()` y la función de tabla `url()`. [#95006](https://github.com/ClickHouse/ClickHouse/pull/95006) ([Vitaly Baranov](https://github.com/vitlibar)).
* La función `toStartOfInterval` ahora funciona igual que `toStartOfX`, donde `X` es `Day, Week, Month, Quarter, Year`, cuando `enable_extended_results_for_datetime_functions` está activado. [#95011](https://github.com/ClickHouse/ClickHouse/pull/95011) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Corrige las comparaciones de cadenas constantes que no tenían en cuenta las opciones `cast_string_to_date_time_mode`, `bool_true_representation`, `bool_false_representation` e `input_format_null_as_default`. Cierra [#91681](https://github.com/ClickHouse/ClickHouse/issues/91681). [#95040](https://github.com/ClickHouse/ClickHouse/pull/95040) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Se corrige una condición de carrera en la caché del sistema de archivos. [#95064](https://github.com/ClickHouse/ClickHouse/pull/95064) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige una condición de carrera poco frecuente en el lector de Parquet. [#95068](https://github.com/ClickHouse/ClickHouse/pull/95068) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se corrige un fallo en la optimización top K cuando `LIMIT` es cero. Cierra [#93893](https://github.com/ClickHouse/ClickHouse/issues/93893). [#95072](https://github.com/ClickHouse/ClickHouse/pull/95072) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Al convertir DateTime/enteros a Time64, se extrae el componente de hora del día mediante `toTime`, que no es monótono. La plantilla `ToDateTimeMonotonicity` afirmaba erróneamente que esta conversión era monótona, lo que provocaba la excepción "Invalid binary search result in MergeTreeSetIndex" en las compilaciones de depuración. [#95125](https://github.com/ClickHouse/ClickHouse/pull/95125) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La lista de entradas del archivo manifest se volvió a crear solo cuando fue necesario (anteriormente se hacía en cada iteración). [#95162](https://github.com/ClickHouse/ClickHouse/pull/95162) ([Daniil Ivanik](https://github.com/divanik)).

<div id="268-build-testing-packaging-improvement">
  #### Mejora en compilación/pruebas/empaquetado
</div>

* Se añade un conjunto de herramientas para el perfilado de asignaciones de memoria en el parser de ClickHouse SQL mediante las capacidades de perfilado de heap de jemalloc. [#94072](https://github.com/ClickHouse/ClickHouse/pull/94072) ([Ilya Yatsishin](https://github.com/qoega)).
* Se añadió una herramienta que simplifica la depuración de asignaciones de memoria en el parser. Utiliza la métrica `stats.allocated` de jemalloc antes y después de analizar la consulta hasta su representación AST para mostrar qué se ha asignado. También admite un modo de perfilado de memoria que vuelca el perfil antes y después para generar informes sobre dónde se produjeron las asignaciones. [#93523](https://github.com/ClickHouse/ClickHouse/pull/93523) ([Ilya Yatsishin](https://github.com/qoega)).
* Se eliminan inclusiones transitivas de libc++. [#92523](https://github.com/ClickHouse/ClickHouse/pull/92523) ([Raúl Marín](https://github.com/Algunenano)).
* Algunas pruebas secuenciales pasan a ejecutarse en paralelo: [https://github.com/ClickHouse/ClickHouse/pull/93030/changes#diff-c3a73510dae653c9bbfa24300b32f5d6ec663fd4e72cc4a3d5daa6e4342915df](https://github.com/ClickHouse/ClickHouse/pull/93030/changes#diff-c3a73510dae653c9bbfa24300b32f5d6ec663fd4e72cc4a3d5daa6e4342915df). [#93030](https://github.com/ClickHouse/ClickHouse/pull/93030) ([Nikita Fomichev](https://github.com/fm4v)).
* Se limpian algunas banderas de compilación. [#93679](https://github.com/ClickHouse/ClickHouse/pull/93679) ([Raúl Marín](https://github.com/Algunenano)).
* Se actualiza c-ares de v1.34.5 a v1.34.6. Esto corrige `CVE-2025-62408` de c-ares, que no es relevante para ClickHouse. [#94129](https://github.com/ClickHouse/ClickHouse/pull/94129) ([Govind R Nair](https://github.com/Revertionist)).
* Se usa `curl` 8.18.0. [#94742](https://github.com/ClickHouse/ClickHouse/pull/94742) ([Konstantin Bogdanov](https://github.com/thevar1able)).
