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

# registro de cambios de la v26.4 para Cloud

> Registro de cambios de la v26.4

<div id="backward-incompatible-changes">
  ## Cambios incompatibles con versiones anteriores
</div>

<div id="query-and-syntax-changes">
  ### Cambios en consultas y sintaxis
</div>

* El operador `IN` ahora usa una semántica de valores exactos para el tipo `Bool`: solo `0` y `1` del conjunto coinciden con valores `Bool`. Antes, los valores numéricos mayores que `255` en el conjunto de `IN` se convertían incorrectamente a true, por lo que `SELECT CAST(1, 'Bool') IN (256)` devolvía `1`. Ahora devuelve correctamente `0`. [#93115](https://github.com/ClickHouse/ClickHouse/pull/93115) ([Ashrith Bandla](https://github.com/ashrithb)).
* Se corrigió 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)).
* `SELECT` ya no se permite 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)).
* El operador `IN` ahora rechaza conversiones de `Decimal` con pérdida dentro de tipos compuestos (`Tuple`, `Array`, `Map`), lo que hace que su comportamiento sea coherente con las comparaciones escalares de nivel superior. Antes, las comprobaciones de precisión solo se aplicaban a 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`. Ahora ambos casos devuelven correctamente `0`. [#101812](https://github.com/ClickHouse/ClickHouse/pull/101812) ([Nihal Z. Miaji](https://github.com/nihalzp)).

<div id="data-type-changes">
  ### Cambios en los tipos de datos
</div>

* Las versiones de serialización de los tipos de datos ahora también se propagan a los tipos de datos anidados. Por ejemplo, la versión de serialización `with_size_stream` de String antes solo se aplicaba 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 o JSON. Esto se controla mediante el setting de MergeTree `propagate_types_serialization_versions_to_nested_types`, que ahora está habilitado de forma predeterminada. Después de este cambio, las partes de datos recién creadas no pueden leerse con versiones anteriores, pero las partes antiguas sí pueden leerse en la versión nueva. Las actualizaciones son seguras, pero no las reversiones a versiones anteriores. [#94859](https://github.com/ClickHouse/ClickHouse/pull/94859) ([Pavel Kruglov](https://github.com/Avogar)).
* Se corrigió el orden de bytes de la serialización binaria de `QBit` para usar el formato little-endian. [#101378](https://github.com/ClickHouse/ClickHouse/pull/101378) ([Raufs Dunamalijevs](https://github.com/rienath)).

<div id="storage-and-index-changes">
  ### Cambios en el almacenamiento y los índices
</div>

* Se corrigieron los metadatos de las proyecciones normales para que las proyecciones con claves de ordenación de varias columnas se reconozcan correctamente. [#91352](https://github.com/ClickHouse/ClickHouse/pull/91352) ([Amos Bird](https://github.com/amosbird)).
* Se corrigió un problema por el que los archivos de los índices de omisión no respetaban la configuración `replace_long_file_name_to_hash`, lo que provocaba errores de "File name too long" y fallos al leer índices con nombres largos. Ahora, cuando los nombres de archivo de los índices de omisión superan `max_file_name_length`, se reemplazan por un hash, igual que ocurre con los archivos de columna. Esto es retrocompatible (los servidores nuevos leen las partes antiguas), pero una reversió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)).

<div id="removed-features">
  ### Características eliminadas
</div>

* Se eliminó el tipo de índice de omisión `hypothesis`. Era una característica experimental poco conocida y de utilidad práctica limitada. Crear tablas con `INDEX ... TYPE hypothesis` ahora genera un error. [#96874](https://github.com/ClickHouse/ClickHouse/pull/96874) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se eliminó la función experimental `detectProgrammingLanguage`. [#99567](https://github.com/ClickHouse/ClickHouse/pull/99567) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="settings-and-configuration-changes">
  ### Cambios en los ajustes y la configuración
</div>

* Se cambió el valor predeterminado de `mysql_datatypes_support_level` de vacío a `decimal,datetime64,date2Date32`, lo que permite, de forma predeterminada, la correspondencia correcta de MySQL `DATE` con `Date32`, `DECIMAL`/`NUMERIC` con `Decimal` y `DATETIME`/`TIMESTAMP` con precisión con `DateTime64`. Anteriormente, las columnas MySQL `DATE` se correspondían con `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)).

<div id="insert-and-deduplication-changes">
  ### Cambios en las inserciones y la deduplicación
</div>

* La inserción asíncrona ahora está habilitada de forma predeterminada: ClickHouse agrupa por defecto todas las inserciones pequeñas en lotes. Esto se rige por la configuración `compatibility`: establecer `compatibility` en una versión inferior a 26.2 restablece el valor predeterminado anterior de `false`. Las inserciones asíncronas pueden activarse o desactivarse en varios niveles: en los perfiles de usuario de la configuración, 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)).

<div id="system-table-changes">
  ### Cambios en las tablas del sistema
</div>

* Se revirtió el cambio en la columna `skip_indexes` de `system.query_log`. [#101018](https://github.com/ClickHouse/ClickHouse/pull/101018) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="other-breaking-changes">
  ### Otros cambios incompatibles
</div>

* `mergeTreeAnalyzeIndexes{,UUID}` ahora acepta un Array de nombres de partes en lugar de una expresión regular, ya que las expresiones regulares son lentas (funcionalidad experimental). [#98474](https://github.com/ClickHouse/ClickHouse/pull/98474) ([Azat Khuzhin](https://github.com/azat)).
* La biblioteca H3 se ha actualizado a la versión 4, lo que mejora la precisión de los cálculos de longitud, área y otras métricas. Este cambio no es retrocompatible porque los nuevos resultados difieren de los anteriores. [#100348](https://github.com/ClickHouse/ClickHouse/pull/100348) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se ha cambiado la forma en que la tabla `Merge` maneja las columnas virtuales. Si la tabla subyacente contiene `_table` o `_database`, estas columnas se leen desde el almacenamiento; de lo contrario, se rellenan 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)).

<div id="new-features">
  ## Nuevas características
</div>

<div id="functions">
  ### Funciones
</div>

* Se añadió la función `naturalSortKey(s)` para claves de ordenación natural. [#90322](https://github.com/ClickHouse/ClickHouse/pull/90322) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* Se añadió la función `arrayAutocorrelation(arr [, max_lag])`, que calcula la autocorrelación normalizada de un array numérico para cada desfase. Admite arrays de enteros, coma flotante y decimales. [#94776](https://github.com/ClickHouse/ClickHouse/pull/94776) ([Wenyu Chen](https://github.com/wenyuchen96)).
* La función `has()` ahora es compatible con el tipo JSON para comprobar la existencia de rutas, 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 lee datos directamente desde un índice de texto. Puede usarse para introspección o para realizar agregaciones sobre datos del índice de texto. [#97003](https://github.com/ClickHouse/ClickHouse/pull/97003) ([Anton Popov](https://github.com/CurtizJ)).
* Se añadió la función SQL `obfuscateQuery`. [#98305](https://github.com/ClickHouse/ClickHouse/pull/98305) ([Xuewei Wang](https://github.com/Sallery-X)).
* Se añadieron las funciones `caseFoldUTF8` y `removeDiacriticsUTF8` para el plegado de mayúsculas y minúsculas en Unicode y la eliminación de marcas diacríticas. [#98973](https://github.com/ClickHouse/ClickHouse/pull/98973) ([George Larionov](https://github.com/george-larionov)).
* La función `printf` ahora admite cadenas de formato no constantes, lo que permite usar un patrón de formato distinto por fila según los valores de las columnas. [#98991](https://github.com/ClickHouse/ClickHouse/pull/98991) ([Yash](https://github.com/Onyx2406)).
* Se añadió 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 combinación automática de coincidencias superpuestas y etiquetas de apertura/cierre personalizadas. [#99131](https://github.com/ClickHouse/ClickHouse/pull/99131) ([Peng](https://github.com/fastio)).
* Se añadió 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ñadió el tokenizador `unicode_word` para índices de texto completo y la función `tokens`. Divide el texto usando reglas de límite de palabra 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. Las stop words configurables usan por defecto signos de puntuación CJK comunes. [#99357](https://github.com/ClickHouse/ClickHouse/pull/99357) ([Amos Bird](https://github.com/amosbird)).
* Se añadió la función `arrayTranspose`, que toma una matriz bidimensional (matriz) y la transpone. [#101214](https://github.com/ClickHouse/ClickHouse/pull/101214) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se añadió la función `hasPhrase` (alias `matchPhrase`) para la búsqueda de frases (secuencias continuas de tokens). La búsqueda es de fuerza bruta y aún no es compatible con el índice de texto. [#101997](https://github.com/ClickHouse/ClickHouse/pull/101997) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Se añadió `dotProduct` como función de distancia compatible para índices de similitud vectorial. La dirección de ordenación ahora se valida para todas las funciones de distancia a fin de evitar resultados incorrectos sin avisar. [#102254](https://github.com/ClickHouse/ClickHouse/pull/102254) ([Renzo](https://github.com/RenzoMXD)).
* La función `stem` ahora puede aplicar stemming a todas las palabras/tokens de columnas `String`, `FixedString`, `Array([Fixed]String)`, `Nullable`, `LowCardinality` y `Const`. [#99137](https://github.com/ClickHouse/ClickHouse/pull/99137) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* La función `stem` ya no es experimental (anteriormente, era necesario habilitar `allow_experimental_nlp_functions`). [#102399](https://github.com/ClickHouse/ClickHouse/pull/102399) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* 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 path. También se añadió compatibilidad con índices de texto para la expresión `JSONAllValues` en columnas `JSON`: cuando se crea un índice de texto en `JSONAllValues(json_column)`, se usa automáticamente para filtrar consultas sobre subcolumnas de `JSON` (p. ej., `json_column.key1 = 'value'`). [#100730](https://github.com/ClickHouse/ClickHouse/pull/100730) ([Anton Popov](https://github.com/CurtizJ)).
* Se añadieron unidades compatibles con PostgreSQL al operador `EXTRACT`: `EPOCH`, `DOW`, `DOY`, `ISODOW`, `ISOYEAR`, `WEEK`, `CENTURY`, `DECADE` y `MILLENNIUM`. También se corrigió `EXTRACT(WEEK FROM date)`, que anteriormente generaba un error. [#100274](https://github.com/ClickHouse/ClickHouse/pull/100274) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añadió compatibilidad con la función `toDaysInMonth()` mediante azúcar sintáctico del parser para la sintaxis de la función estándar SQL `OVERLAY`. 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)).
* Los valores de `Date` y `Date32` ahora pueden sumarse a los valores de `Time` y `Time64` mediante el operador `+`, lo que produce un resultado `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 gestionan de acuerdo con la configuración `date_time_overflow_behavior`. [#102421](https://github.com/ClickHouse/ClickHouse/pull/102421) ([Nihal Z. Miaji](https://github.com/nihalzp)).

<div id="sql-and-query-features">
  ### Características de SQL y de las consultas
</div>

* Cuando un parámetro tiene tipo `Nullable` y no se especifica, ahora se asume que su valor es `NULL`. [#93869](https://github.com/ClickHouse/ClickHouse/pull/93869) ([Vikash Kumar](https://github.com/vikashkumar2020)).
* ClickHouse ahora puede omitir partes de datos completas en consultas `SELECT` basándose en estadísticas mín./máx. [#94140](https://github.com/ClickHouse/ClickHouse/pull/94140) ([zoomxi](https://github.com/zoomxi)).
* Se añadió compatibilidad con las CTE materializadas, que evalúan las CTE una sola vez durante la ejecución de la consulta y almacenan sus resultados en tablas temporales. [#94849](https://github.com/ClickHouse/ClickHouse/pull/94849) ([Dmitry Novik](https://github.com/novikd)).
* Ahora se pueden usar ciertas funciones sin paréntesis en SQL. [#95949](https://github.com/ClickHouse/ClickHouse/pull/95949) ([Aly Kafoury](https://github.com/AlyHKafoury)).
* Se añadió la sintaxis de subcolumna combinada `json.@path` para el tipo `JSON`. Devuelve el valor literal como `Dynamic` si la ruta contiene un escalar, el subobjeto como `Dynamic` si la ruta contiene un objeto anidado, o `NULL` si la ruta no existe. [#98788](https://github.com/ClickHouse/ClickHouse/pull/98788) ([Pavel Kruglov](https://github.com/Avogar)).
* Se añadió la palabra clave `SOME` para 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ñadió compatibilidad con `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ó compatibilidad con la cláusula `VALUES` estándar de SQL como expresión de tabla en `FROM`, por ejemplo, `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ñadió compatibilidad con literales compuestos de intervalos del estándar SQL con calificadores de rango `TO`, por ejemplo, `INTERVAL '1:30' HOUR TO MINUTE`, que se descomponen internamente en sumas de intervalos. [#100453](https://github.com/ClickHouse/ClickHouse/pull/100453) ([Desel72](https://github.com/Desel72)).
* Se añadió 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)).

<div id="table-engines-and-storage">
  ### Motores de tabla y almacenamiento
</div>

* Se añadió compatibilidad con la lectura incremental para el motor de tabla `Paimon`, con seguimiento del progreso de instantáneas respaldado por Keeper, incluidas lecturas delta de instantáneas concretos mediante `paimon_target_snapshot_id`. [#93655](https://github.com/ClickHouse/ClickHouse/pull/93655) ([XiaoBinMu](https://github.com/Binnn-MX)).
* Se añadió compatibilidad con ZooKeeper auxiliar en `DatabaseReplicated`. [#95590](https://github.com/ClickHouse/ClickHouse/pull/95590) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Se añadió compatibilidad para leer tipos timestamp de nanosegundos de Iceberg v3 (`timestamp_ns` y `timestamptz_ns`), asignados a `DateTime64(9)` y `DateTime64(9, 'UTC')`. Esto permite que ClickHouse lea datos de Iceberg con estos tipos en el esquema; no constituye compatibilidad completa con Iceberg v3 ni permite escribir Iceberg v3 con estos tipos. [#97132](https://github.com/ClickHouse/ClickHouse/pull/97132) ([Dmitry Kovalev](https://github.com/dk-github)).
* Se añadió `ALTER TABLE ... EXECUTE expire_snapshots('<timestamp>')` para tablas Iceberg. [#97904](https://github.com/ClickHouse/ClickHouse/pull/97904) ([murphy-4o](https://github.com/murphy-4o)).
* Se añadió una nueva caché SLRU para metadatos de Parquet para mejorar el rendimiento de lectura al eliminar la necesidad de volver a descargar archivos solo para leer sus metadatos. [#98140](https://github.com/ClickHouse/ClickHouse/pull/98140) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Se añadió compatibilidad con índices de omisión de MergeTree para columnas JSON usando `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)).
* Se añadió el í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ñ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 lee un bucket en lugar de toda la columna, lo que proporciona una aceleración de entre 2 y 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 bucketización pueden controlarse mediante los nuevos ajustes de MergeTree `map_serialization_version`, `max_buckets_in_map`, `map_buckets_strategy`, `map_buckets_coefficient` y `map_buckets_min_avg_size`. El ajuste `map_serialization_version_for_zero_level_parts` mantiene la serialización básica para las inserciones a fin de evitar la sobrecarga de escritura, mientras que las partes fusionadas usan buckets. Los índices de omisión sobre `mapKeys`/`mapValues` son compatibles con la serialización en buckets, y `optimize_functions_to_subcolumns` reescribe `m['key']` como una lectura de subcolumna por clave cuando hay buckets disponibles. [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200) ([Pavel Kruglov](https://github.com/Avogar)).

<div id="insert-and-deduplication">
  ### Inserción y deduplicación
</div>

* Se implementó un nuevo comportamiento de `max_insert_block_size_rows`, `max_insert_block_size_bytes`, `min_insert_block_size_rows` y `min_insert_block_size_bytes` en el proceso de compactación, controlado por la configuración de compatibilidad `use_strict_insert_block_limits`. [#94207](https://github.com/ClickHouse/ClickHouse/pull/94207) ([Kirill Kopnev](https://github.com/Fgrtue)).

<div id="settings-and-configuration">
  ### Ajustes y configuración
</div>

* Se añadió el ajuste de MergeTree `table_readonly` para marcar 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ñadió el ajuste `use_partition_pruning` (alias `use_partition_key`). Establécelo en `false` para desactivar la poda de particiones basada en la clave de partición. [#97888](https://github.com/ClickHouse/ClickHouse/pull/97888) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Cada entrada `type=http` en `<protocols>` ahora puede especificar una clave `<handlers>` personalizada que apunte a una sección de configuración `<http_handlers_*>` independiente, lo que permite aplicar distintas reglas de enrutamiento HTTP por puerto. [#98414](https://github.com/ClickHouse/ClickHouse/pull/98414) ([Amos Bird](https://github.com/amosbird)).
* Se añadieron dos ajustes de MergeTree — `replicated_fetches_min_part_level` y `replicated_fetches_min_part_level_timeout_seconds` — que permiten a las réplicas omitir la recuperación de partes recién insertadas (sin fusionar) desde otras réplicas, reduciendo la sobrecarga de replicación durante periodos de ingestión intensa. [#98625](https://github.com/ClickHouse/ClickHouse/pull/98625) ([tanner-bruce](https://github.com/tanner-bruce)).
* Se añadió el ajuste de servidor `restore_access_entities_with_current_grants`. Cuando está habilitado, los usuarios/roles restaurados ven sus privilegios 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ñadieron los ajustes `max_skip_unavailable_shards_num` y `max_skip_unavailable_shards_ratio` para limitar cuántos segmentos pueden omitirse sin aviso cuando `skip_unavailable_shards` está habilitado. Si el número o la proporción de segmentos no disponibles supera el umbral configurado, se lanza una excepción en lugar de devolver resultados incompletos sin aviso. [#99369](https://github.com/ClickHouse/ClickHouse/pull/99369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se implementaron cuotas por hash de consulta normalizada para proteger los servicios públicos de ClickHouse frente a abusos. `NORMALIZED_QUERY_HASH` se admite como tipo de clave de cuota — una cuota independiente por cada consulta normalizada única, de modo que `CREATE QUOTA q KEYED BY normalized_query_hash` controla cada consulta distinta por separado. `QUERIES_PER_NORMALIZED_HASH` se admite como tipo de recurso de cuota — limita el número máximo de ejecuciones de una misma consulta normalizada dentro de un intervalo, por lo 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)).
* El ajuste de MergeTree `auto_statistics_types` ahora usa `minmax, uniq` de forma predeterminada, por lo que las estadísticas minmax y uniq se crean automáticamente para todas las columnas adecuadas de las tablas nuevas. `materialize_statistics_on_insert` ahora usa `false` de forma predeterminada, por lo que las estadísticas se generan durante las fusiones en lugar de en el momento de la inserción, reduciendo la sobrecarga de inserción. Establece `materialize_statistics_on_insert = 1` para restaurar el comportamiento anterior. [#101275](https://github.com/ClickHouse/ClickHouse/pull/101275) ([Han Fei](https://github.com/hanfei1991)).
* Se añadió el ajuste de actualización `prefer_dependency_replica` para las cadenas de dependencias de vistas materializadas, con el 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)).

<div id="authentication">
  ### Autenticación
</div>

* Se añadió la opción de configuración LDAP por servidor `<follow_referrals>` (valor predeterminado: `false`) para controlar si el client de LDAP sigue referencias. Desactivar el seguimiento de referencias evita `timeouts` y bloqueos al buscar desde un base DN raíz de dominio de Active Directory, y genera menos ruido en el log. [#96765](https://github.com/ClickHouse/ClickHouse/pull/96765) ([paf91](https://github.com/paf91)).

<div id="system-tables">
  ### Tablas del sistema
</div>

* Se añadió `system.histogram_metric_log`, una nueva tabla del sistema que realiza instantáneas periódicas de todas las métricas de histograma (p. ej., latencias de S3/Azure y duraciones de las etapas de procesamiento de solicitudes de Keeper). La columna `value` de `system.histogram_metrics` ahora es `Float64` para ofrecer mayor flexibilidad y compatibilidad con el modelo de datos de Prometheus. [#103046](https://github.com/ClickHouse/ClickHouse/pull/103046) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).

<div id="experimental-features">
  ## Características experimentales
</div>

* Se añadió el códec de compresión de punto flotante ALP (sin fallback de ALP\_rd para valores `double` no comprimibles). [#91362](https://github.com/ClickHouse/ClickHouse/pull/91362) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* Se añadieron indicaciones de tipo diferidas experimentales para columnas JSON. Cuando se habilitan mediante `allow_experimental_json_lazy_type_hints`, `ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName)` que solo agrega o modifica indicaciones de tipo se completa al instante como una operación de solo metadatos, sin reescribir los datos históricos. Las indicaciones de tipo se aplican en tiempo de consulta a las partes antiguas y se materializan durante los INSERT y las fusiones en segundo plano. [#97412](https://github.com/ClickHouse/ClickHouse/pull/97412) ([tanner-bruce](https://github.com/tanner-bruce)).
* Se añadió 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ñadió la configuración `query_plan_optimize_join_order_randomize`, que aleatoriza las estadísticas utilizadas para reordenar el join, lo que resulta útil para realizar 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 las funciones de IA `aiClassify`, `aiExtract` y `aiTranslate` para utilizar APIs de LLM en ClickHouse. [#100832](https://github.com/ClickHouse/ClickHouse/pull/100832) ([George Larionov](https://github.com/george-larionov)).
* Se añadió compatibilidad con lagos de datos en Azure con Delta Kernel. [#102202](https://github.com/ClickHouse/ClickHouse/pull/102202) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).

<div id="performance-improvements">
  ## Mejoras del rendimiento
</div>

<div id="join-performance">
  ### Rendimiento de JOIN
</div>

* Pequeñas mejoras en `HashJoin` y `ConcurrentHashJoin`. [#96663](https://github.com/ClickHouse/ClickHouse/pull/96663) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se añadió compatibilidad para invertir los lados de los joins `ANTI`, `SEMI` y `FULL` en función de las estadísticas del optimizador. [#97498](https://github.com/ClickHouse/ClickHouse/pull/97498) ([Hechem Selmi](https://github.com/m-selmi)).
* Se redujo la contención en la caché en los joins `RIGHT` y `FULL` comprobando si `JoinUsedFlags` está activado antes de escribir. [#99274](https://github.com/ClickHouse/ClickHouse/pull/99274) ([Hechem Selmi](https://github.com/m-selmi)).
* Se aceleraron los joins hash sobre claves `Int32` e `Int64` con un rango pequeño mediante una tabla hash de índice directo. [#99275](https://github.com/ClickHouse/ClickHouse/pull/99275) ([Hechem Selmi](https://github.com/m-selmi)).

<div id="query-optimization">
  ### Optimización de consultas
</div>

* Se optimizó el skipping de gránulos para `pointInPolygon` en polígonos grandes y se corrigió un error por el que el análisis de índice de `pointInPolygon` arrojaba errores durante el pruning de la primary key. [#91633](https://github.com/ClickHouse/ClickHouse/pull/91633) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* `optimize_read_in_order` ahora se respeta al leer projections. [#95885](https://github.com/ClickHouse/ClickHouse/pull/95885) ([Andrey Zvonov](https://github.com/zvonand)).
* Se optimizó ligeramente la lectura desde el Diccionario del text index, lo que mejora el rendimiento general del análisis del text index. [#97519](https://github.com/ClickHouse/ClickHouse/pull/97519) ([Anton Popov](https://github.com/CurtizJ)).
* Se mejoró el rendimiento del análisis del text index para consultas con conditions combinadas que involucran tanto columnas indexadas como no indexadas. Anteriormente, la optimización de salida anticipada durante el análisis de índice se deshabilitaba incorrectamente en esos casos. [#98096](https://github.com/ClickHouse/ClickHouse/pull/98096) ([Anton Popov](https://github.com/CurtizJ)).
* Se mejoró el rendimiento de las consultas con expressions 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 condiciones de clave para primary keys `DateTime64` comparadas con constantes enteras, lo que antes impedía el Granule pruning. [#98410](https://github.com/ClickHouse/ClickHouse/pull/98410) ([Amos Bird](https://github.com/amosbird)).
* La setting `optimize_syntax_fuse_functions` ahora está habilitada de forma predeterminada. [#98424](https://github.com/ClickHouse/ClickHouse/pull/98424) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* El partition pruning ahora está permitido cuando el predicado contiene cualquier operador de comparación (`=`, `<`, `>`, `!=`) y la partition key está envuelta en una chain de funciones determinista (por ejemplo, con `PARTITION BY x`, predicados como `cityHash64(x) % 5 > 2`, `toYYYYMM(x) < 2026`, `toYYYYMM(x) = 2026` o `toYYYYMM(x) != 2026` usarán la partition key para el pruning). [#98432](https://github.com/ClickHouse/ClickHouse/pull/98432) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* La optimización read-in-order y el pruning de la primary key ahora están permitidos cuando el tipo de destino de `CAST` es `Nullable` y la conversión es monotónica; por ejemplo, con `PRIMARY KEY x`, ClickHouse puede usar la optimización read-in-order para `ORDER BY x::Nullable(UInt64)` y el pruning de la primary key para predicados como `WHERE x::Nullable(UInt64) > 500000`. [#98482](https://github.com/ClickHouse/ClickHouse/pull/98482) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* El pruning de índice y el filter pushdown ahora están permitidos cuando una columna integral se compara con un literal float; por ejemplo, predicados como `WHERE x < 10.5` ahora pueden usar la primary key para el pruning, y filtros como `prime < 1e9` o `number < 1e5` ahora hacen pushdown para las table functions `primes()` y `numbers()` en lugar de provocar una ejecución no acotada. [#98516](https://github.com/ClickHouse/ClickHouse/pull/98516) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Las consultas que filtran por columnas de primary key de MergeTree con alternancias regex sobre strings literales, como `^(abc-1|abc-2)`, ahora pueden usar el pruning de la primary key cuando las alternativas comparten un prefix común. [#98988](https://github.com/ClickHouse/ClickHouse/pull/98988) ([Yash](https://github.com/Onyx2406)).
* Se optimizaron `INTERSECT ALL` y `EXCEPT ALL`. [#99097](https://github.com/ClickHouse/ClickHouse/pull/99097) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Se agregó 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)).
* 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 corrigió el escalado negativo en consultas cortas con aggregation en máquinas con muchos núcleos. Cuando una consulta lee pocas marcas, la pipeline ya no se expande a `max_threads` después de la aggregation, lo que evita la sobrecarga de flujos casi vacíos. [#99493](https://github.com/ClickHouse/ClickHouse/pull/99493) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se mejoró el rendimiento de las consultas con réplicas paralelas al seleccionar correctamente el tamaño de la tarea de lectura. [#99801](https://github.com/ClickHouse/ClickHouse/pull/99801) ([Nikita Taranov](https://github.com/nickitat)).
* Se eliminaron los elementos redundantes al final de `ORDER BY` una vez que todas las claves de `GROUP BY` quedan cubiertas por el prefijo de `ORDER BY`. [#100157](https://github.com/ClickHouse/ClickHouse/pull/100157) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se optimizaron 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ñadió soporte de 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 ordenación en la fase de combinación para claves de ordenación dominadas por cadenas. [#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`, la información de límites de filas virtuales ahora se emite después de cada block leído de MergeTree, lo que permite que la combinación vuelva a priorizar las fuentes a mitad del flujo para las partes cuyos datos quedan completamente filtrados por `WHERE`/`PREWHERE`/`JOIN`. [#100603](https://github.com/ClickHouse/ClickHouse/pull/100603) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Mejor paralelización de consultas con vistas simples (sobre una tabla MergeTree subyacente) ejecutadas con réplicas paralelas. [#100815](https://github.com/ClickHouse/ClickHouse/pull/100815) ([Igor Nikonov](https://github.com/devcrafter)).
* Se añadió soporte para réplicas paralelas sobre vistas simples (incluidas las vistas `UNION ALL` compatibles sobre tablas `MergeTree`) cuando `parallel_replicas_allow_view_over_mergetree=1`. Esto paraleliza la consulta externa de la vista en lugar de la interna, aumentando la paralelización de consultas entre nodos. [#100958](https://github.com/ClickHouse/ClickHouse/pull/100958) ([Igor Nikonov](https://github.com/devcrafter)).
* Se optimizó la lectura en 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)).
* Se mejoró el rendimiento de `INSERT VALUES` para columnas `Map`, `Array` y `Tuple` cuando los valores se pasan como cadenas escapadas (por ejemplo, `'{\'key\':1}'`), evitando recurrir innecesariamente al analizador de expresiones SQL. [#102119](https://github.com/ClickHouse/ClickHouse/pull/102119) ([Joanna Hulboj](https://github.com/jh0x)).

<div id="function-and-aggregation-performance">
  ### Rendimiento de funciones y agregación
</div>

* Se mejoró el rendimiento de la función `levenshteinDistance`. [#94543](https://github.com/ClickHouse/ClickHouse/pull/94543) ([Joanna Hulboj](https://github.com/jh0x)).
* Se optimizaron las conversiones en lote del tipo Decimal al evitar llamadas a funciones por elemento. [#95923](https://github.com/ClickHouse/ClickHouse/pull/95923) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Se mejoró el rendimiento de las consultas `LIKE`. [#98149](https://github.com/ClickHouse/ClickHouse/pull/98149) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Se optimizó la aggregate function `avgWeighted` mediante el uso de acumuladores locales en lugar de almacenamiento y reenvío por fila a través del estado de agregación, con mejoras de rendimiento de hasta un 27 % para entradas `Nullable`. [#98793](https://github.com/ClickHouse/ClickHouse/pull/98793) ([Antonio Andelic](https://github.com/antonio2368)).
* Se aceleraron las funciones `var*Stable` y `stddev*Stable` para columnas `Float64` mediante la desvirtualización del bucle interno. 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)).
* Se utiliza la codificación base58 optimizada de Firedancer para entradas de 32/64 bytes (automática para `base58Encode`) y se permite usar la decodificación base58 optimizada si el resultado decodificado tiene 32/64 bytes (de forma explícita con `base58Decode('...', 32)`). [#99461](https://github.com/ClickHouse/ClickHouse/pull/99461) ([Joanna Hulboj](https://github.com/jh0x)).
* Se optimizó la función `cutURLParameter` eliminando desplazamientos de memoria innecesarios. [#100218](https://github.com/ClickHouse/ClickHouse/pull/100218) ([Nikita Semenov](https://github.com/leftmain)).
* Conversión más rápida de float a string para valores enteros grandes al ampliar la ruta 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)).
* Se reemplazó dragonbox por zmij para lograr una conversión de float a string entre 1,5 y 3 veces 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 string al sustituir la división por software por reducción de Barrett y desenrollar el bucle de conversión. [#100671](https://github.com/ClickHouse/ClickHouse/pull/100671) ([Raúl Marín](https://github.com/Algunenano)).
* Se evitó crear threads redundantes en la fusión paralela de `UniqExactSet`. [#100686](https://github.com/ClickHouse/ClickHouse/pull/100686) ([Jiebin Sun](https://github.com/jiebinn)).
* Se añadió fusión paralela por lotes para `UniqExactSet`. [#100687](https://github.com/ClickHouse/ClickHouse/pull/100687) ([Jiebin Sun](https://github.com/jiebinn)).

<div id="storage-and-io-performance">
  ### Rendimiento de almacenamiento y E/S
</div>

* Se redujo la contención de bloqueos durante operaciones de solo lectura en tablas ReplicatedMergeTree con mutaciones finalizadas. [#95771](https://github.com/ClickHouse/ClickHouse/pull/95771) ([Eduard Karacharov](https://github.com/korowa)).
* Iceberg ahora puede precargar metadatos en la caché de forma asíncrona, habilitado al establecer `iceberg_metadata_async_prefetch_period_ms` al crear la tabla. Las consultas `SELECT` sobre tablas Iceberg ahora pueden especificar el parámetro `iceberg_metadata_staleness_ms`, lo que permite a ClickHouse basarse en la versión en caché de los metadatos si es más reciente que la antigüedad especificada; de lo contrario, se consulta el catálogo Iceberg remoto para obtener los metadatos más recientes. Esto puede eliminar llamadas al catálogo Iceberg durante el procesamiento de solicitudes, con una mejora visible del rendimiento. [#96191](https://github.com/ClickHouse/ClickHouse/pull/96191) ([Arsen Muk](https://github.com/arsenmuk)).
* El modo ordered de S3Queue ahora usa S3 `ListObjectsV2` `StartAfter` para evitar volver a listar todo el historial del prefijo, lo que reduce las llamadas a `ListObjects`. [#96370](https://github.com/ClickHouse/ClickHouse/pull/96370) ([Venkata Vineel](https://github.com/vyalamar)).
* Se habilitaron lecturas paralelas en el motor de tabla YTsaurus. [#97343](https://github.com/ClickHouse/ClickHouse/pull/97343) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* Se mejoró 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. [#99548](https://github.com/ClickHouse/ClickHouse/pull/99548) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se permitió 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)).
* Se corrigió una regresión significativa del rendimiento de INSERT cuando `deduplicate_insert=enable` (valor predeterminado desde la versión 26.2) al diferir el cálculo del hash de los datos, moviéndolo del squashing al sink, y usar hash por lotes de columnas mediante `updateHashWithValueRange`, lo que reduce la sobrecarga de \~2.5s a \~0.5s para 5M de filas con 22 columnas. [#101494](https://github.com/ClickHouse/ClickHouse/pull/101494) ([Sema Checherinda](https://github.com/CheSema)).

<div id="memory-optimization">
  ### Optimización de memoria
</div>

* En las inserciones síncronas, ahora se puede omitir el bloque original (necesario para la deduplicación) para ahorrar memoria. [#96661](https://github.com/ClickHouse/ClickHouse/pull/96661) ([Sema Checherinda](https://github.com/CheSema)).
* Se mejoró el rendimiento y se redujo el uso de memoria de las funciones de ventana paralelas en ciertos escenarios, así como de las cargas de trabajo de `arrayFold` con arrays grandes. Esto también puede reducir la presión por fallos de página y mejorar la estabilidad de las consultas afectadas cuando los límites de memoria son estrictos. [#98892](https://github.com/ClickHouse/ClickHouse/pull/98892) ([filimonov](https://github.com/filimonov)).

<div id="improvements">
  ## Mejoras
</div>

<div id="query-and-sql-improvements">
  ### Consultas y SQL
</div>

* Las proyecciones de agregación ahora son compatibles correctamente en vistas. [#88798](https://github.com/ClickHouse/ClickHouse/pull/88798) ([Amos Bird](https://github.com/amosbird)).
* `optimize_aggregators_of_group_by_keys` ahora optimiza correctamente las funciones de agregación en consultas `GROUPING SETS`. [#93935](https://github.com/ClickHouse/ClickHouse/pull/93935) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Se añadió compatibilidad con la optimización que convierte joins `OUTER` en `INNER` con `join_use_nulls`. [#95968](https://github.com/ClickHouse/ClickHouse/pull/95968) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Se amplió `cast_keep_nullable` para que funcione con tipos `Dynamic`/`JSON`. Cuando está habilitado, convertir `NULL` desde tipos que pueden ser `Nullable` devuelve `NULL`; de lo contrario, `NULL` lanza el error `CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN`. [#96504](https://github.com/ClickHouse/ClickHouse/pull/96504) ([Seva Potapov](https://github.com/seva-potapov)).
* Se añadió la cláusula `ROLE` a `CREATE USER`. [#97074](https://github.com/ClickHouse/ClickHouse/pull/97074) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se añadió información sobre filtros diferidos como un elemento independiente en la salida de la consulta `EXPLAIN` (al usar políticas de fila/PREWHERE con FINAL). [#97374](https://github.com/ClickHouse/ClickHouse/pull/97374) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Se añadió compatibilidad con expresiones de 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)).
* Se aplican í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)).
* La clave de ordenación de una tabla ahora puede ser una expresión como `toDate(time)`, y las decisiones sobre no diferir esas expresiones se toman cuando forman parte de filtros. [#98237](https://github.com/ClickHouse/ClickHouse/pull/98237) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* El optimizador del orden de join ahora infiere predicados transitivos de equi-join a partir de condiciones de 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 transitivamente. Esto puede mejorar la calidad del plan para esquemas en estrella y en copo de nieve. La 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)).
* Cuando `apply_row_policy_after_final` o `apply_prewhere_after_final` está habilitado, 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 para el análisis de índices de clave primaria. Antes, si un filtro diferido contenía una mezcla de predicados sobre la clave de ordenación y otros que no lo eran (p. ej. `x > 1 AND y != 'foo'`), toda la expresión se excluía del análisis de índices. [#98513](https://github.com/ClickHouse/ClickHouse/pull/98513) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Ahora, solo las réplicas "vivas" (a las que se puede conectar) participan en el análisis distribuido de índices. [#98521](https://github.com/ClickHouse/ClickHouse/pull/98521) ([Azat Khuzhin](https://github.com/azat)).
* Se limitó el número de nodos usados en la heurística automática de réplicas paralelas al número real de nodos del clúster (en lugar de solo la configuración `max_parallel_replicas`). [#98668](https://github.com/ClickHouse/ClickHouse/pull/98668) ([Nikita Taranov](https://github.com/nickitat)).
* Se implementaron hedged requests 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)).
* Se añadió compatibilidad con 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)).
* Se añadió compatibilidad con la monotonicidad en la multiplicación, lo que permite la poda de la clave primaria para expresiones `key * constant`. [#98983](https://github.com/ClickHouse/ClickHouse/pull/98983) ([Amos Bird](https://github.com/amosbird)).
* Los mensajes de error del analizador ya no muestran todas las columnas de una tabla (lo que podía producir 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)).
* Las estadísticas de columnas de subconsultas con JOIN ahora se devuelven correctamente para que la consulta padre pueda usarlas para reordenar los JOIN. [#99096](https://github.com/ClickHouse/ClickHouse/pull/99096) ([Alexander Gololobov](https://github.com/davenger)).
* Ahora se permite `ALTER TABLE MODIFY COLUMN x TTL ...` sin especificar el tipo de la columna. [#99208](https://github.com/ClickHouse/ClickHouse/pull/99208) ([Nikolay Degterinsky](https://github.com/evillique)).
* Se mejoró la salida de `EXPLAIN PLAN pretty=1`: ahora imprime las columnas de salida de la consulta de nivel superior, muestra etiquetas/símbolos de relaciones JOIN con la estimación de filas del resultado y la localidad, e incluye las columnas de salida por paso para los pasos de JOIN/source. [#99462](https://github.com/ClickHouse/ClickHouse/pull/99462) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Se corrigió el fallo de la función de tabla `merge()` con un 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)).
* `ConditionSelectivityEstimator` ya no se usa en el optimizador cuando la condición no está en CNF (por ejemplo, `where a = 0`, que es una única condición en la que las estadísticas no pueden ayudar). [#100110](https://github.com/ClickHouse/ClickHouse/pull/100110) ([Han Fei](https://github.com/hanfei1991)).
* Se aplicó `distributed_index_analysis_min_indexes_bytes_to_activate` después de la poda de particiones. [#100477](https://github.com/ClickHouse/ClickHouse/pull/100477) ([Azat Khuzhin](https://github.com/azat)).
* `EXPLAIN PIPELINE` ahora admite la configuración `distributed=1` para incluir fragmentos remotos del pipeline. [#100513](https://github.com/ClickHouse/ClickHouse/pull/100513) ([Nikita Taranov](https://github.com/nickitat)).
* `use_partition_pruning = 0` ahora también desactiva la poda del índice `MinMax` y la optimización del 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)).
* `EXPLAIN [PLAN] pretty=1` ahora imprime expresiones en un formato legible para humanos. [#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`. [#100942](https://github.com/ClickHouse/ClickHouse/pull/100942) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ahora puede usar 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)).
* Se implementó la materialización diferida de columnas para ReplacingMergeTree con FINAL cuando el predicado es lo suficientemente selectivo. [#101647](https://github.com/ClickHouse/ClickHouse/pull/101647) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Se mejoraron las estimaciones predeterminadas de selectividad para condiciones sin estadísticas, ajustándolas a heurísticas estándar del sector: 0.1 para la selectividad de la condición `LIKE` y 0.33 para la selectividad de una condición desconocida. [#101653](https://github.com/ClickHouse/ClickHouse/pull/101653) ([Alexander Gololobov](https://github.com/davenger)).
* Se incorporó 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)).

<div id="functions">
  ### Funciones
</div>

* Ahora se puede usar entrada nativa de JSON/Object para las funciones `JSONExtract`. [#96711](https://github.com/ClickHouse/ClickHouse/pull/96711) ([Fisnik Kastrati](https://github.com/fkastrati)).
* Se introdujo la función SQL `tokensForLikePattern`, que tokeniza patrones `LIKE` respetando la semántica de los comodines: `%` y `_` se tratan como comodines, los comodines escapados (`\%`, `\_`) se tratan como 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 implementó la función `toDaysInMonth()`, que 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)).
* Se cambió el nombre del tokenizador `unicodeWord` a `asciiCJK`. [#100956](https://github.com/ClickHouse/ClickHouse/pull/100956) ([George Larionov](https://github.com/george-larionov)).
* Se añadió azúcar sintáctico a nivel de parser para la sintaxis de la función estándar SQL `OVERLAY`. La función `overlay` ya existe; esto añade soporte para la forma basada en palabras clave que utiliza `PLACING`, `FROM` y `FOR` como separadores. [#101681](https://github.com/ClickHouse/ClickHouse/pull/101681) ([Desel72](https://github.com/Desel72)).
* La función `ngrams` ahora rechaza longitudes de ngram no válidas. Por ejemplo, `SELECT ngrams('abc', 0)` ahora devuelve un error. [#101922](https://github.com/ClickHouse/ClickHouse/pull/101922) ([Robert Schulze](https://github.com/rschu1ze)).
* Se añadió soporte para el tokenizador `array` en la optimización de `LIKE`. [#102880](https://github.com/ClickHouse/ClickHouse/pull/102880) ([Elmi Ahmadov](https://github.com/ahmadov)).

<div id="table-engines-and-storage">
  ### Motores de tabla y almacenamiento
</div>

* Se añadió un hilo de limpieza dedicado para MergeTree para evitar retrasos en la limpieza bajo una carga intensa de merges. [#91574](https://github.com/ClickHouse/ClickHouse/pull/91574) ([Amos Bird](https://github.com/amosbird)).
* Las tablas con reglas `DELETE TTL` ahora pueden usar el algoritmo de vertical merge. [#97332](https://github.com/ClickHouse/ClickHouse/pull/97332) ([murphy-4o](https://github.com/murphy-4o)).
* Las marcas de los índices secundarios ahora se precalientan cuando está habilitada la configuración `prewarm_mark_cache` (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)).
* Ahora se pueden crear índices de texto sobre columnas `Nullable([Fixed]String)` y `Array(Nullable([Fixed]String))`. [#98118](https://github.com/ClickHouse/ClickHouse/pull/98118) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Cancelación anticipada de merges 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)).
* Se añadió la configuración `finalize_projection_parts_synchronously` para permitir la finalización síncrona de las partes de proyección durante INSERT, reduciendo el uso máximo de memoria en tablas con muchas proyecciones, mientras se conserva por defecto el comportamiento asíncrono existente. [#98228](https://github.com/ClickHouse/ClickHouse/pull/98228) ([Amos Bird](https://github.com/amosbird)).
* Se añadió la configuración de MergeTree `share_nested_offsets` (valor predeterminado `true`). Cuando se establece en `false`, las columnas Array con nombres con puntos (por ejemplo, `n.a`, `n.b`) se tratan como columnas independientes en lugar de compartir archivos de desplazamiento y validar que los tamaños de los arrays sean iguales como parte de la semántica heredada de Nested. [#98416](https://github.com/ClickHouse/ClickHouse/pull/98416) ([Amos Bird](https://github.com/amosbird)).
* Se optimizó `TRUNCATE DATABASE TABLES LIKE` precancelando merges en paralelo. [#98597](https://github.com/ClickHouse/ClickHouse/pull/98597) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se redujo la contención de bloqueos en `MergeTreeBackgroundExecutor` liberando los recursos de las tareas sin adquirir el bloqueo. [#98604](https://github.com/ClickHouse/ClickHouse/pull/98604) ([Dmitry Novik](https://github.com/novikd)).
* `TRUNCATE DATABASE` ahora responde a la cancelación de consultas. [#98828](https://github.com/ClickHouse/ClickHouse/pull/98828) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Se reinicia la caché de estadísticas después de cambiar una configuración de MergeTree. [#98520](https://github.com/ClickHouse/ClickHouse/pull/98520) ([Han Fei](https://github.com/hanfei1991)).
* Se añadió la configuración de MergeTree `compress_per_column_in_compact_parts` para controlar cómo se organizan los bloques comprimidos dentro de las partes compactas. 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 tasa de compresión y el rendimiento de lectura para cargas de trabajo que siempre leen todas las columnas. [#101114](https://github.com/ClickHouse/ClickHouse/pull/101114) ([Amos Bird](https://github.com/amosbird)).
* El índice de texto ahora es GA y permanece habilitado independientemente de la configuración `compatibility`, lo que evita su desactivación inesperada durante la restauración de copias de seguridad o al ejecutarse en modo de compatibilidad. [#101518](https://github.com/ClickHouse/ClickHouse/pull/101518) ([Nikita Fomichev](https://github.com/fm4v)).
* Se añadió soporte para el índice de texto creado sobre `mapValues(map)` con el operador `IN`. [#99286](https://github.com/ClickHouse/ClickHouse/pull/99286) ([Anton Popov](https://github.com/CurtizJ)).
* Se mejoró el análisis de varios índices de texto usados simultáneamente en la misma consulta. La configuración `use_skip_indexes_on_data_read` ya no es necesaria para la optimización de direct read de los índices de texto. [#102255](https://github.com/ClickHouse/ClickHouse/pull/102255) ([Anton Popov](https://github.com/CurtizJ)).
* Se añadió compatibilidad con el análisis de índices de texto para la función `hasPhrase` mediante el modo `HINT`. [#102438](https://github.com/ClickHouse/ClickHouse/pull/102438) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Las estadísticas de columna MinMax ahora almacenan los valores mínimo y máximo como `Field` (con tipo) en lugar de `Float64`. El formato serializado incluye el nombre de tipo de la columna junto con los valores. La versión del archivo de estadísticas pasa a V2; los archivos escritos por versiones anteriores requieren volver a materializarse (`ALTER TABLE ... MATERIALIZE STATISTICS ALL`). [#100605](https://github.com/ClickHouse/ClickHouse/pull/100605) ([Han Fei](https://github.com/hanfei1991)).

<div id="data-lakes-improvements">
  ### Lagos de datos
</div>

* Se añadió una nueva consulta para comprobar el estado de `DataLakeCatalog`. [#94690](https://github.com/ClickHouse/ClickHouse/pull/94690) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Se mejoraron las operaciones de escritura de Iceberg para Unity Catalog. [#98162](https://github.com/ClickHouse/ClickHouse/pull/98162) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se reconstruyeron las entidades de `IcebergManifestFile` para que el mantenimiento del código sea menos propenso a errores (y también se corrigieron algunos problemas de caché de archivos manifest). [#98231](https://github.com/ClickHouse/ClickHouse/pull/98231) ([Daniil Ivanik](https://github.com/divanik)).
* Se mejoró `ALTER TABLE ... EXECUTE expire_snapshots(...)` de Iceberg con un soporte más amplio para argumentos. [#99130](https://github.com/ClickHouse/ClickHouse/pull/99130) ([murphy-4o](https://github.com/murphy-4o)).
* Se cambió la interfaz de las inserciones de Iceberg con el catálogo. Se marcaron como obsoletas las opciones `storage_catalog_type`, `storage_aws_access_key_id` y otras similares. [#100334](https://github.com/ClickHouse/ClickHouse/pull/100334) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Se corrigió el manejo inconsistente de rutas en Iceberg causado por el uso combinado de rutas de almacenamiento y rutas de metadatos; se exigió que las tablas Iceberg escriban una ubicación de tabla que sea una URL o una ruta absoluta; se añadió un mecanismo alternativo para contar tamaños de archivo en Azure; se manejó `version-hint.txt` de forma compatible con Spark; se introdujeron abstracciones a nivel de tipo para reducir la confusión entre tipos de rutas; y se corrigió el uso de eliminaciones por posición. [#100420](https://github.com/ClickHouse/ClickHouse/pull/100420) ([Daniil Ivanik](https://github.com/divanik)).
* Se evitó escanear todo el catálogo remoto del lago de datos en busca de sugerencias de tablas del tipo "Maybe you meant ..." cuando `show_data_lake_catalogs_in_system_tables` está deshabilitado. [#100452](https://github.com/ClickHouse/ClickHouse/pull/100452) ([Alsu Giliazova](https://github.com/alsugiliazova)).
* La información del objeto utilizada para analizar archivos de datos de Iceberg ahora contiene el número de filas del archivo y su tamaño en bytes, extraídos del archivo manifest. [#100645](https://github.com/ClickHouse/ClickHouse/pull/100645) ([Daniil Ivanik](https://github.com/divanik)).
* Se añadió un mecanismo de poda para Delta Lake con columnas virtuales. [#101634](https://github.com/ClickHouse/ClickHouse/pull/101634) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="s3-and-object-storage-improvements">
  ### S3 y almacenamiento de objetos
</div>

* Se añadió 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)).
* Se añadió una nueva opción para forzar el uso del estilo virtual/path en los endpoints de S3. [#102378](https://github.com/ClickHouse/ClickHouse/pull/102378) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="settings-and-configuration-improvements">
  ### Configuración y ajustes
</div>

* Los usuarios ahora pueden especificar varios métodos de autenticación en la configuración `users_xml`. [#91998](https://github.com/ClickHouse/ClickHouse/pull/91998) ([Flip-Liquid](https://github.com/Flip-Liquid)).
* Ahora se puede establecer la configuración `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)).
* Se añadió la configuración `allow_nullable_tuple_in_extracted_subcolumns`, que controla si las subcolumnas extraídas `Tuple(...)` de `Tuple`, `Variant`, `Dynamic` y `JSON` se devuelven como `Nullable(Tuple(...))` (`NULL` para las filas faltantes) o como `Tuple(...)` (valores de tupla predeterminados para las filas faltantes). Está deshabilitada de forma predeterminada; solo puede cambiarse reiniciando el servidor. [#97299](https://github.com/ClickHouse/ClickHouse/pull/97299) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* `type_json_allow_duplicated_key_with_literal_and_nested_object` ahora está habilitada de forma predeterminada, lo que evita errores por claves duplicadas al analizar JSON como `{"a" : 42, "a" : {"b" : 42}}`, que ClickHouse puede producir a partir de los datos originales `{"a" : 42, "a.b" : 42}`. [#97423](https://github.com/ClickHouse/ClickHouse/pull/97423) ([Pavel Kruglov](https://github.com/Avogar)).
* Las estadísticas de columnas ahora son GA. La configuración `allow_experimental_statistics` (valor predeterminado: `false`) queda obsoleta en favor de `allow_statistics` (valor predeterminado: `true`); `allow_statistics_optimize` pasa de beta a GA; ClickHouse crea estadísticas `minmax` y `uniq` para las columnas nuevas (configuración de MergeTree `auto_statistics_types`); y, para evitar INSERTs más lentos, `materialize_statistics_on_insert` ahora está deshabilitada de forma predeterminada. [#97487](https://github.com/ClickHouse/ClickHouse/pull/97487) ([Han Fei](https://github.com/hanfei1991)).
* Se aclaró la relación entre `enable_parallel_replicas` y `automatic_parallel_replicas_mode`: una consulta puede usar réplicas paralelas solo si `enable_parallel_replicas > 0`. Con `automatic_parallel_replicas_mode=1`, la decisión se toma durante la planificación en función de las estadísticas recopiladas; con `automatic_parallel_replicas_mode=0`, las réplicas paralelas se usan para todas las consultas compatibles, independientemente de las estadísticas. INSERT SELECT en Distributed con réplicas paralelas siempre se comporta como si `automatic_parallel_replicas_mode=0`. [#97517](https://github.com/ClickHouse/ClickHouse/pull/97517) ([Nikita Taranov](https://github.com/nickitat)).
* Se habilitó de forma predeterminada la funcionalidad de suplantación ([EXECUTE AS target\_user](/es/reference/statements/execute_as)). [#97870](https://github.com/ClickHouse/ClickHouse/pull/97870) ([Vitaly Baranov](https://github.com/vitlibar)).
* Se añadió la configuración `access_control_improvements.disallow_config_defined_profiles_for_sql_defined_users` (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 añadió una configuración para controlar el comportamiento ante incompatibilidades de tipos en `Variant` y `Dynamic` (lanzar una excepción o devolver null). [#99085](https://github.com/ClickHouse/ClickHouse/pull/99085) ([Bharat Nallan](https://github.com/bharatnc)).
* Se cambió el valor predeterminado de `stderr_reaction` de `throw` a `log_last` para los UDFs ejecutables. Los UDFs que escriben advertencias en stderr ya no fallan cuando el código de salida es 0, y 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)).
* Se añadió la configuración `input_format_column_name_matching_mode`, que permite distintas sensibilidades entre mayúsculas y minúsculas para los formatos de entrada. [#99346](https://github.com/ClickHouse/ClickHouse/pull/99346) ([manerone](https://github.com/Manerone)).
* Las estadísticas automáticas ya no están habilitadas para las tablas del sistema, ya que rara vez se benefician de ellas. [#102862](https://github.com/ClickHouse/ClickHouse/pull/102862) ([Han Fei](https://github.com/hanfei1991)).

<div id="system-tables-and-monitoring-improvements">
  ### Tablas del sistema y monitorización
</div>

* Los índices de descarte de datos utilizados durante la ejecución de la consulta ahora se registran en `system.query_log` en una nueva columna `skip_indices`. [#99793](https://github.com/ClickHouse/ClickHouse/pull/99793) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Se añadió la columna `projections_duration_ms` a `system.part_log`, que registra la duración, en milisegundos, de la fusión o reconstrucción de cada proyección. [#98292](https://github.com/ClickHouse/ClickHouse/pull/98292) ([Amos Bird](https://github.com/amosbird)).
* Se añadió el alias de columna `INDEX_LENGTH` a `information_schema.tables`. [#101705](https://github.com/ClickHouse/ClickHouse/pull/101705) ([Robert Schulze](https://github.com/rschu1ze)).
* `information_schema.tables` ahora ignora las partes inactivas de la tabla, lo que hace que los valores mostrados del tamaño de la tabla sean más realistas. [#101706](https://github.com/ClickHouse/ClickHouse/pull/101706) ([Robert Schulze](https://github.com/rschu1ze)).

<div id="clickhouse-keeper-improvements">
  ### ClickHouse Keeper
</div>

* `find_super_nodes` ya no se queda bloqueado al recorrer los hijos del primer supernodo, lo que permite encontrar más de uno. [#97819](https://github.com/ClickHouse/ClickHouse/pull/97819) ([pufit](https://github.com/pufit)).
* Se marca una sesión de ZooKeeper como expirada en cuanto comienza la finalización, en lugar de esperar a que termine el thread de envío. Esto permite que otros threads establezcan una nueva sesión sin demora. [#99102](https://github.com/ClickHouse/ClickHouse/pull/99102) ([Raúl Marín](https://github.com/Algunenano)).
* Se omiten las solicitudes obsoletas de Keeper para sesiones que ya se han desconectado, lo que evita recorridos de ida y vuelta innecesarios en Raft. El número de sesiones finalizadas rastreadas está limitado por la configuración de coordination `max_finished_sessions_cache_size`. [#99246](https://github.com/ClickHouse/ClickHouse/pull/99246) ([Antonio Andelic](https://github.com/antonio2368)).
* 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 redujo la contención de bloqueos en el despachador de Keeper al invocar callbacks y despachar read requests fuera del ámbito del mutex, y se añadieron guardas de bloqueo perfiladas para la observabilidad. [#99751](https://github.com/ClickHouse/ClickHouse/pull/99751) ([Antonio Andelic](https://github.com/antonio2368)).

<div id="memory-management-improvements">
  ### Gestión de la memoria
</div>

* Se añadió el parámetro de configuración `use_separate_cache_arena` para controlar la separación de la arena de caché. [#100664](https://github.com/ClickHouse/ClickHouse/pull/100664) ([Seva Potapov](https://github.com/seva-potapov)).

<div id="data-formats-improvements">
  ### Formatos de datos
</div>

* Se añadió la configuración `output_format_trim_fixed_string` para eliminar los bytes nulos finales 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)).
* Ahora es posible procesar 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)).
* La deserialización de estados binarios de `AggregateFunction` 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)).
* Los usuarios ahora pueden escribir tipos de datos `Interval` de ClickHouse en el formato Arrow. [#99519](https://github.com/ClickHouse/ClickHouse/pull/99519) ([Peter Nguyen](https://github.com/petern48)).
* Se añadió soporte nativo para importar y exportar tipos de datos UUID en los formatos Arrow y Parquet, con inferencia lógica automática para UUIDs de nivel superior y soporte para indicaciones de esquema explícitas para UUIDs anidados. [#99521](https://github.com/ClickHouse/ClickHouse/pull/99521) ([Ivan](https://github.com/ivanmantova)).
* Se tolera la ausencia de relleno al final del último bloque de los archivos Parquet. [#99857](https://github.com/ClickHouse/ClickHouse/pull/99857) ([Seva Potapov](https://github.com/seva-potapov)).
* La exportación de UUIDs a Parquet mediante el codificador Arrow ahora incluye la anotación correcta del tipo UUID, lo que elimina la necesidad de aplicar manualmente CAST a los datos `FixedString(16)` al volver a leer los archivos. [#100150](https://github.com/ClickHouse/ClickHouse/pull/100150) ([Ivan](https://github.com/ivanmantova)).
* Se añadió soporte nativo para importar tipos de datos Apache Arrow `StringView` y `BinaryView` en 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)).
* Se añadió soporte para `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)).

<div id="named-collections-and-dictionaries">
  ### Colecciones con nombre y diccionarios
</div>

* Se añadió `sslmode` a las claves permitidas para las fuentes de diccionario de PostgreSQL, lo que permite configurar el modo SSL para las conexiones de diccionarios de PostgreSQL (por ejemplo, para AWS RDS, que exige SSL de forma predeterminada). [#98014](https://github.com/ClickHouse/ClickHouse/pull/98014) ([mcalfin](https://github.com/mcalfin)).
* Se evita eliminar colecciones con nombre que son dependencias de fuentes de diccionario. [#98127](https://github.com/ClickHouse/ClickHouse/pull/98127) ([Pablo Marcos](https://github.com/pamarcos)).
* Se añadió soporte para 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)).
* `SYSTEM RELOAD DICTIONARIES` ahora recarga los diccionarios en orden topológico para que los diccionarios que toman datos de otros diccionarios dispongan de datos actualizados después de la recarga. [#98356](https://github.com/ClickHouse/ClickHouse/pull/98356) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Los diccionarios de caché ya no adquieren un bloqueo exclusivo en `hasKeys`, lo que reduce la contención al usar un bloqueo compartido para las lecturas de caché. [#100796](https://github.com/ClickHouse/ClickHouse/pull/100796) ([liuguangliang](https://github.com/sourcelliu)).

<div id="other-improvements">
  ### Otras mejoras
</div>

* Las pistas de `ACCESS_DENIED` ya no revelan nombres de 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 pista. [#91067](https://github.com/ClickHouse/ClickHouse/pull/91067) ([filimonov](https://github.com/filimonov)).
* Se recarga la configuración del clúster si cambian las direcciones IP del hostname del servidor local, en lugar de las direcciones IP de cualquier host. [#93726](https://github.com/ClickHouse/ClickHouse/pull/93726) ([Zhigao Hong](https://github.com/zghong)).
* Se vacían 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 redujo el bloqueo durante el control de acceso. [#97894](https://github.com/ClickHouse/ClickHouse/pull/97894) ([Nikita Taranov](https://github.com/nickitat)).
* Se actualizó ClickStack a la versión 2.20.0. [#98252](https://github.com/ClickHouse/ClickHouse/pull/98252) ([Aaron Knudtson](https://github.com/knudtty)).
* Se desactiva 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 envía NACK para los mensajes dañados al usar almacenamiento RabbitMQ. [#102157](https://github.com/ClickHouse/ClickHouse/pull/102157) ([Seva Potapov](https://github.com/seva-potapov)).

<div id="bug-fixes">
  ## Correcciones de errores
</div>

<Accordion title="Todas las correcciones de errores (haz clic para expandir)">
  ### Correcciones de JOIN

  * Se corrigió la ausencia de una columna cuando se usaba un alias de identificador no estándar en un JOIN con el analyzer antiguo. [#95679](https://github.com/ClickHouse/ClickHouse/pull/95679) ([Zhigao Hong](https://github.com/zghong)).
  * Se corrigió un resultado incorrecto cuando se usaba el algoritmo `grace_hash` con joins no equi y el bloque izquierdo no podía procesarse por completo debido a restricciones de tamaño en el resultado del join. [#97866](https://github.com/ClickHouse/ClickHouse/pull/97866) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
  * Se corrigió un error lógico con `analyzer_compatibility_join_using_top_level_identifier` y `ARRAY JOIN`. [#98179](https://github.com/ClickHouse/ClickHouse/pull/98179) ([Vladimir Cherkasov](https://github.com/vdimir)).
  * Se corrigió una excepción `LOGICAL_ERROR` cuando un `RIGHT JOIN` dentro de un `CROSS JOIN` era intercambiado por la optimización `query_plan_join_swap_table` en la ruta de código heredada del paso join. [#98279](https://github.com/ClickHouse/ClickHouse/pull/98279) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción "Pipeline stuck" en joins `full_sorting_merge` causada por un interbloqueo en `PingPongProcessor` cuando la optimización `FilterBySetOnTheFly` creaba una dependencia circular con `MergeJoinTransform`. [#98454](https://github.com/ClickHouse/ClickHouse/pull/98454) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción de error lógico cuando `CROSS JOIN` se usaba junto con `INNER JOIN USING`. [#98459](https://github.com/ClickHouse/ClickHouse/pull/98459) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción `LOGICAL_ERROR` cuando `arrayJoin` se usaba en una expresión de filtro con `OUTER JOIN` y `join_use_nulls` habilitado. [#98464](https://github.com/ClickHouse/ClickHouse/pull/98464) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción `BAD_GET` y resultados de consulta incorrectos cuando se usaba 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 pushdown de filtros corrompía nodos DAG compartidos. [#98681](https://github.com/ClickHouse/ClickHouse/pull/98681) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un `LOGICAL_ERROR` "Replica decided to read in Default mode, not in 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)).
  * `LEFT ANTI JOIN` con múltiples columnas de clave de join devolvía resultados incorrectos cuando `enable_join_runtime_filters=1` (el valor predeterminado). [#98871](https://github.com/ClickHouse/ClickHouse/pull/98871) ([Alexander Gololobov](https://github.com/davenger)).
  * Se corrigió 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. [#99112](https://github.com/ClickHouse/ClickHouse/pull/99112) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Se corrigió una excepción en funciones que operan sobre `ColumnReplicated` con filas no referenciadas producidas por JOIN. [#99564](https://github.com/ClickHouse/ClickHouse/pull/99564) ([Hechem Selmi](https://github.com/m-selmi)).
  * Se corrigió un caso poco frecuente en el que un join con reordenación podía producir un resultado incorrecto. [#100790](https://github.com/ClickHouse/ClickHouse/pull/100790) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Se corrigieron resultados incorrectos cuando un JOIN con la optimización shard-by-PK usaba la caché de condiciones de consulta y algunas partes se filtraban mediante condiciones en caché. [#100926](https://github.com/ClickHouse/ClickHouse/pull/100926) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió una excepción `NOT_FOUND_COLUMN_IN_BLOCK` al usar `ARRAY JOIN` con `JOIN USING` y `analyzer_compatibility_join_using_top_level_identifier` habilitado. [#101507](https://github.com/ClickHouse/ClickHouse/pull/101507) ([Vladimir Cherkasov](https://github.com/vdimir)).
  * Se corrigió el orden incorrecto de las filas en consultas que usan `ORDER BY` con el algoritmo de join `grace_hash`, lo que podía generar resultados incorrectos sin advertencia. [#102036](https://github.com/ClickHouse/ClickHouse/pull/102036) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
  * Se corrigió un `LOGICAL_ERROR` (tamaño inesperado del tipo de índice) que podía producirse en consultas `RIGHT JOIN` y `FULL JOIN` cuando se configuraba `max_bytes_in_join`. [#102042](https://github.com/ClickHouse/ClickHouse/pull/102042) ([Jimmy Aguilar Mena](https://github.com/Ergus)).

  ### Correcciones de consultas y del analizador

  * Se corrigió cómo se guarda el destino de una tabla alias como dependencia DDL cuando no está completamente 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 error `Block structure mismatch in stream` causado por columnas innecesarias devueltas por la materialización diferida. [#96682](https://github.com/ClickHouse/ClickHouse/pull/96682) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
  * Se corrigió una excepción en la comparación de tuplas que involucraba elementos del tipo `Nothing` (p. ej., al comparar con elementos de tupla `NULL`) cuando se usaba con `GROUPING SETS` y `ORDER BY`. [#97509](https://github.com/ClickHouse/ClickHouse/pull/97509) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió la excepción "Context has expired" en subconsultas correlacionadas que contenían funciones de tabla como `url()`. [#97544](https://github.com/ClickHouse/ClickHouse/pull/97544) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigieron excepciones y comportamiento incorrecto en `optimize_syntax_fuse_functions` con proyecciones de agregación, tipos Date y preservación de nombres de columnas. [#97545](https://github.com/ClickHouse/ClickHouse/pull/97545) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se eliminó una query rewrite incorrecta de `replaceRegexpOne` a `extract` que producía resultados erróneos cuando la regexp no coincidía; también se corrigió una excepción cuando `replaceRegexpOne` se usaba 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 corrigieron excepciones `LOGICAL_ERROR` causadas por `LowCardinality` dentro de tipos compuestos (`Variant`, `Dynamic`, `Tuple`) en `concatWithSeparator`, `format`, subconsultas `IN`, `GLOBAL IN` y 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 corrigió una excepción `LOGICAL_ERROR` "Chunk info was not set for chunk in MergingAggregatedTransform" al usar `ARRAY JOIN` con la función de tabla `merge()` sobre varias tablas Distributed combinadas con `GROUP BY`. [#97838](https://github.com/ClickHouse/ClickHouse/pull/97838) ([Raúl Marín](https://github.com/Algunenano)).
  * Se corrigió un error que impedía usar CTE con operaciones insert-select distribuidas. [#97889](https://github.com/ClickHouse/ClickHouse/pull/97889) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Se corrigió una discrepancia entre columnas. [#97921](https://github.com/ClickHouse/ClickHouse/pull/97921) ([Kai Zhu](https://github.com/nauu)).
  * Se corrigió un segfault en 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ó un `LOGICAL_ERROR` "Trying to execute PLACEHOLDER action" cuando se referenciaban 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 corrigió una excepción de error lógico en `caseWithExpression` cuando la expresión `CASE` involucraba argumentos `materialize(NULL)` u otros argumentos `Nullable(Nothing)`. [#98290](https://github.com/ClickHouse/ClickHouse/pull/98290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción de conversión inválida al filtrar la columna virtual `_table` en la función de tabla `merge`. [#98291](https://github.com/ClickHouse/ClickHouse/pull/98291) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción cuando `ORDER BY ... WITH FILL` se usaba junto con `LIMIT BY`. [#98361](https://github.com/ClickHouse/ClickHouse/pull/98361) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una 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)).
  * Se corrigió una excepción "Column identifier is already registered" cuando `count_distinct_optimization` se usaba con una cláusula `QUALIFY`. [#98433](https://github.com/ClickHouse/ClickHouse/pull/98433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción "cannot be inside Nullable type" al usar `IN`/`NOT IN` con argumentos de columna `LowCardinality` (por ejemplo, `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ó una 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 corrigió una excepción en consultas `DISTINCT` cuando el uso de proyecciones de agregación y `materialize` causaba diferencias en el 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 corrigió una excepción de error lógico "Replica decided to read in WithOrder mode, not in 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 resultado inesperado con `read_in_order_use_virtual_row` y funciones monotónicas. [#98514](https://github.com/ClickHouse/ClickHouse/pull/98514) ([Vladimir Cherkasov](https://github.com/vdimir)).
  * Se corrigió un `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 corrigió una excepción "Sorting column wasn't found in the ActionsDAG's outputs" cuando `query_plan_convert_join_to_in` estaba habilitado con `query_plan_merge_expressions = 0`. [#98526](https://github.com/ClickHouse/ClickHouse/pull/98526) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un `LOGICAL_ERROR` cuando un `Identifier` quedaba vacío después de la sustitución de parámetros. [#98530](https://github.com/ClickHouse/ClickHouse/pull/98530) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
  * Se corrigió el análisis de índice distribuido con expresiones (no solo columnas) en la clave primaria, lo que provocaba que no se filtraran los gránulos redundantes en réplicas remotas. [#98561](https://github.com/ClickHouse/ClickHouse/pull/98561) ([Azat Khuzhin](https://github.com/azat)).
  * Se corrigió un error lógico "TABLE\_FUNCTION is not allowed in expression context" cuando una table function con un alias aparecía varias veces dentro del mismo ámbito de 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)).
  * Se corrigió una excepción "Bad cast from type `DB::TableFunctionNode` to `DB::QueryNode`" al usar la table function `input` como argumento de `remote`. [#98694](https://github.com/ClickHouse/ClickHouse/pull/98694) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción en `LogicalExpressionOptimizerPass` cuando una función booleana en una comparación `equals` devolvía un tipo `Variant`. [#98712](https://github.com/ClickHouse/ClickHouse/pull/98712) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción `UNKNOWN_IDENTIFIER` al consultar la table function `merge()` o el motor `Merge` sobre tablas con columnas JSON con parámetros distintos y columnas ALIAS que hacen referencia a subrutas JSON, con el nuevo analizador habilitado. [#98753](https://github.com/ClickHouse/ClickHouse/pull/98753) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió la optimización `optimize_skip_unused_shards` con el analizador cuando se usaba un almacenamiento `Distributed` en una `View`. [#98754](https://github.com/ClickHouse/ClickHouse/pull/98754) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
  * Se corrigió una excepción `LOGICAL_ERROR` (desajuste en la estructura del bloque en `removeUnusedColumns`) que podía producirse con `FINAL` + `PREWHERE` + una expresión `WHERE` constante + agregaciones que no dependen de columnas, como `count()`. [#98778](https://github.com/ClickHouse/ClickHouse/pull/98778) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción "Inconsistent table names" al usar la table function `view()` que contiene 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 corrigió una excepción al combinar `loop` con cluster table functions. [#98860](https://github.com/ClickHouse/ClickHouse/pull/98860) ([Konstantin Bogdanov](https://github.com/thevar1able)).
  * Se corrigió un `LOGICAL_ERROR` "RPNBuilderFunctionTreeNode has A arguments, attempted to get argument at index B". [#98900](https://github.com/ClickHouse/ClickHouse/pull/98900) ([Azat Khuzhin](https://github.com/azat)).
  * Se corrigió una excepción "Scalar doesn't exist" al consultar un segmento remoto con `optimize_const_name_size` configurado y `enable_scalar_subquery_optimization = 0`. [#98979](https://github.com/ClickHouse/ClickHouse/pull/98979) ([andriibeee](https://github.com/andriibeee)).
  * Se corrigió `NOT_FOUND_COLUMN_IN_BLOCK` en algunas consultas con `GROUP BY` y expresiones que incluyen búsquedas inversas en Diccionario, comparaciones de conversión `Date`/`DateTime` y comparaciones de tuplas. [#98980](https://github.com/ClickHouse/ClickHouse/pull/98980) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Se corrigió 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 filas debido a un desplazamiento o a un límite de cero. [#99005](https://github.com/ClickHouse/ClickHouse/pull/99005) ([andriibeee](https://github.com/andriibeee)).
  * Se corrigió una excepción "Block structure mismatch" cuando la optimización de propagación de filtros encontraba una expresión `AND` que se cortocircuitaba a una constante con `GROUPING SETS`. [#99010](https://github.com/ClickHouse/ClickHouse/pull/99010) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un `LOGICAL_ERROR` al consultar una tabla que tiene tanto una ROW POLICY como una columna ALIAS que usa `dictGet`, provocado por un acceso prematuro a la expresión de 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)).
  * Se corrigió un fallo de segmentación en un CTE recursivo 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 corrigieron las verificaciones de acceso durante `InverseDictionaryLookupPass`, comprobando el acceso solo una vez antes de ejecutar el paso de optimización. [#99210](https://github.com/ClickHouse/ClickHouse/pull/99210) ([Mikhail Artemenko](https://github.com/Michicosun)).
  * Se corrigió `optimize_skip_unused_shards` con el nuevo analizador cuando se usaba una tabla `Distributed` dentro de una subconsulta `IN`. [#99436](https://github.com/ClickHouse/ClickHouse/pull/99436) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
  * Se corrigió un error de uso de memoria después de liberarla (`heap-use-after-free`) en `INTERSECT`/`EXCEPT` cuando la consulta producía nombres de columna duplicados. [#99471](https://github.com/ClickHouse/ClickHouse/pull/99471) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un error lógico en `ALTER TABLE ... DROP PART` cuando se usaba 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ó una 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ó una degradación del rendimiento en el analizador al eliminar columnas no utilizadas de `ARRAY JOIN`. [#99587](https://github.com/ClickHouse/ClickHouse/pull/99587) ([Dmitry Novik](https://github.com/novikd)).
  * Se corrigió una excepción (`Bad get: has Tuple, actual type String`) en `ConditionSelectivityEstimator` cuando una consulta usaba `IN` con un único parámetro de consulta escalar (por ejemplo, `WHERE col IN ({p:String})`) en una tabla que tiene estadísticas de columnas y `use_statistics` habilitado. [#99614](https://github.com/ClickHouse/ClickHouse/pull/99614) ([Ilya Yatsishin](https://github.com/qoega)).
  * Se corrigió una excepción "Block structure mismatch" en consultas con una cláusula `HAVING` en las que la expresión de filtro contenía 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 corrigió un error lógico con una subconsulta correlacionada dentro de un argumento `untuple`. [#99917](https://github.com/ClickHouse/ClickHouse/pull/99917) ([Vladimir Cherkasov](https://github.com/vdimir)).
  * Se corrigió una excepción "Inconsistent AST formatting" en `ALTER TABLE ... MODIFY QUERY` con subconsultas anidadas que contenían `SETTINGS` cuando el propio `ALTER` también tenía `SETTINGS`. [#99938](https://github.com/ClickHouse/ClickHouse/pull/99938) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
  * Se corrigió una excepción `LOGICAL_ERROR` "Not-ready Set" en la función `IN` durante la optimización del plan de consulta con `convertAnyJoinToSemiOrAntiJoin`. [#99939](https://github.com/ClickHouse/ClickHouse/pull/99939) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción `LOGICAL_ERROR` "Unexpected node type for table expression ... Actual IDENTIFIER" cuando se usaba una subconsulta escalar dentro de un argumento de función de tabla no resuelto. [#100014](https://github.com/ClickHouse/ClickHouse/pull/100014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió el número cuadrático de consultas ejecutadas cuando se usaba `distributed_index_analysis` con predicados que contenían subconsultas `IN`. [#100287](https://github.com/ClickHouse/ClickHouse/pull/100287) ([Anton Popov](https://github.com/CurtizJ)).
  * Se corrigió una excepción de "Block structure mismatch" al usar `GROUP BY ... WITH TOTALS HAVING` combinado con `UNION DISTINCT` y expresiones `Nullable`. [#100293](https://github.com/ClickHouse/ClickHouse/pull/100293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción de "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)).
  * Se corrigió una excepción `TOO_MANY_ROWS` en consultas `SELECT count()` con `max_rows_to_read` / `force_primary_key` cuando los datos estaban divididos en múltiples partes con límites de gránulos no alineados. [#100408](https://github.com/ClickHouse/ClickHouse/pull/100408) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigieron casos de `NOT_FOUND_COLUMN_IN_BLOCK` en los que la parte `SELECT` de la proyección tenía columnas que no existían en la parte `SELECT` original de la consulta. [#100623](https://github.com/ClickHouse/ClickHouse/pull/100623) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Ahora se permite pasar una clave de segmentación a las funciones de tabla `cluster()` y `clusterAllReplicas()` al usar una función de tabla como origen (por ejemplo, `cluster('name', view(...), sharding_key)`). [#100665](https://github.com/ClickHouse/ClickHouse/pull/100665) ([Sergey Veletskiy](https://github.com/velom)).
  * Se corrigieron tipos de argumento incorrectos de `AggregateFunction` en el conteo trivial optimizado, lo que provocaba una 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)).
  * Se corrigió un error lógico, "Invalid action query tree node", 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 corrigió un error `UNKNOWN_IDENTIFIER` incorrecto cuando se usaba el mismo alias para varias expresiones en `SELECT`; ahora se informa correctamente el error `MULTIPLE_EXPRESSIONS_FOR_ALIAS`. [#101040](https://github.com/ClickHouse/ClickHouse/pull/101040) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción en `DirectJoinMergeTreeEntity` cuando los bloques del pipeline contenían columnas `ColumnConst` combinadas con columnas normales. [#101046](https://github.com/ClickHouse/ClickHouse/pull/101046) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un espacio sobrante en el formato de los alias de columnas de 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 corrigió un fallo en las funciones de tabla `remote`/`cluster` con funciones de tabla anidadas como `merge` cuando el analizador estaba habilitado. [#101055](https://github.com/ClickHouse/ClickHouse/pull/101055) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió la aplicación doble de `OFFSET` 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 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 corrigieron resultados de consulta incorrectos cuando se usaba una constante entera grande (p. ej., 256, 2147483648) como predicado booleano en una cláusula `WHERE` con `AND` en tablas MergeTree. [#101287](https://github.com/ClickHouse/ClickHouse/pull/101287) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió un cierre inesperado con "Logical error: Reading from materialized CTE before materialization" cuando una subconsulta escalar hacía referencia a una cadena de materialized CTE dependientes. [#101305](https://github.com/ClickHouse/ClickHouse/pull/101305) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió una excepción al convertir una cadena con datos adicionales al final al tipo vacío `Tuple()`. [#102011](https://github.com/ClickHouse/ClickHouse/pull/102011) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un error lógico al analizar una cadena incorrecta de tupla vacía. [#102289](https://github.com/ClickHouse/ClickHouse/pull/102289) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Se corrigieron resultados de agregación incorrectos (filas duplicadas) al usar `optimize_aggregation_in_order=1` con columnas de `GROUP BY` ordenadas de forma distinta a la clave de ordenación de la tabla. [#102299](https://github.com/ClickHouse/ClickHouse/pull/102299) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió una excepción en `getStructureOfRemoteTable` cuando el segmento local devolvía columnas vacías debido a DDL concurrente. [#102604](https://github.com/ClickHouse/ClickHouse/pull/102604) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se optimizaron las cadenas de OR de ROW POLICY a `IN` en el nuevo analizador. [#102915](https://github.com/ClickHouse/ClickHouse/pull/102915) ([Azat Khuzhin](https://github.com/azat)).
  * Se corrigieron resultados incorrectos devueltos por `WHERE x AND toNullable(N)` en tablas `MergeTree` cuando `N` es un entero mayor que `UInt8` (p. ej., `256`, `65535`, `2147483648` o cualquier entero negativo). [#103077](https://github.com/ClickHouse/ClickHouse/pull/103077) ([Groene AI](https://github.com/groeneai)).

  ### Correcciones de MergeTree y almacenamiento

  * Se corrigió un error lógico al adjuntar una parte en MergeTree si había varios cambios de nombre encadenados entre su separación y su nueva adjunción. [#96351](https://github.com/ClickHouse/ClickHouse/pull/96351) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió el cálculo no determinista de `uncompressed_hash` para partes Compact de MergeTree cuando se usan 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)).
  * Se corrigió que las excepciones `MEMORY_LIMIT_EXCEEDED` se reportaran incorrectamente como `CORRUPTED_DATA` durante las merges de SummingMergeTree y CoalescingMergeTree. [#97537](https://github.com/ClickHouse/ClickHouse/pull/97537) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
  * `hasPartitionId` ahora devuelve `false` si existe otra partición con un ID de partición más alto en el conjunto de partes de datos. [#97748](https://github.com/ClickHouse/ClickHouse/pull/97748) ([Mikhail Artemenko](https://github.com/Michicosun)).
  * Se corrigió una mutación después de una actualización ligera con índices secundarios. [#98044](https://github.com/ClickHouse/ClickHouse/pull/98044) ([Raúl Marín](https://github.com/Algunenano)).
  * Se corrigieron resultados incorrectos en consultas FINAL al mezclar índices de omisión de clave primaria y de no clave primaria. [#98097](https://github.com/ClickHouse/ClickHouse/pull/98097) ([Raúl Marín](https://github.com/Algunenano)).
  * Si las columnas de la clave de partición no están cubiertas por la clave de ordenación, la poda de particiones podía omitir incorrectamente particiones que contenían filas que debían "prevalecer" durante la deduplicación FINAL. [#98242](https://github.com/ClickHouse/ClickHouse/pull/98242) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Se corrigió un posible interbloqueo cuando dos operaciones concurrentes de `MOVE PARTITION` trabajan con el mismo par de tablas en direcciones opuestas. [#98264](https://github.com/ClickHouse/ClickHouse/pull/98264) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción `LOGICAL_ERROR` "Invalid binary search result in `MergeTreeSetIndex`" provocada por la conversión `toDate` en columnas de clave con datos a ambos lados del límite de 65535. [#98276](https://github.com/ClickHouse/ClickHouse/pull/98276) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un fallo esporádico de deduplicación por el que las reinserciones se deduplicaban incorrectamente debido a un orden de limpieza inconsistente entre los directorios ZooKeeper `blocks/` y `deduplication_hashes/`. [#98293](https://github.com/ClickHouse/ClickHouse/pull/98293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió que las mutaciones `MATERIALIZE INDEX` y `MATERIALIZE PROJECTION` se quedaran bloqueadas cuando el índice o la proyección se eliminaban antes de que finalizara la mutación. [#98369](https://github.com/ClickHouse/ClickHouse/pull/98369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigieron resultados incorrectos de poda de particiones después de fusionar partes con columnas de clave de partición `Nullable`, causados por límites incorrectos del índice min-max. [#98405](https://github.com/ClickHouse/ClickHouse/pull/98405) ([Amos Bird](https://github.com/amosbird)).
  * Se corrigió una excepción `LOGICAL_ERROR` en `renameAndCommitEmptyParts` que podía producirse cuando `TRUNCATE TABLE` se ejecutaba de forma 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 desbordamiento decimal al realizar poda de particiones con `DateTime64`. [#98628](https://github.com/ClickHouse/ClickHouse/pull/98628) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Se corrigió la reaparición de partes de datos obsoletas causada por una limpieza incorrecta de partes de cobertura vacías. [#98698](https://github.com/ClickHouse/ClickHouse/pull/98698) ([Shaohua Wang](https://github.com/tiandiwonder)).
  * Se corrigió la detección de la utilidad del índice de omisión set en un predicado `OR` con false (es decir, `or(x, 0)`). [#98776](https://github.com/ClickHouse/ClickHouse/pull/98776) ([Azat Khuzhin](https://github.com/azat)).
  * Se corrigió que los índices de omisión (y las condiciones de clave primaria) no se aplicaran a 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)).
  * Se corrigió la poda incorrecta o insuficiente cuando se usaban `startsWith`, `LIKE` o `NOT LIKE` con una columna `FixedString`. Además, la función de conversión de `FixedString` a `String` ahora puede podar gránulos cuando se aplica a una columna clave. [#99001](https://github.com/ClickHouse/ClickHouse/pull/99001) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Se corrigió una excepción al leer partes de parche (actualizaciones ligeras) sin la columna `_part_offset` en el plan de consulta. [#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 una clave primaria `String`, ahora usa 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ó una excepción al crear una tabla con una columna `EPHEMERAL` que tiene el mismo nombre que una columna virtual (por ejemplo, `_part_offset`). [#99031](https://github.com/ClickHouse/ClickHouse/pull/99031) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió `LOGICAL_ERROR` debido a 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 corrigió que `ALTER TABLE UPDATE`/`DELETE` fallara con un 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)).
  * Se corrigió la 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 corrigió el marcado incorrecto, en casos raros, de una parte de datos como dañada y su separación tras una consulta `DETACH`/`ATTACH TABLE`. [#99529](https://github.com/ClickHouse/ClickHouse/pull/99529) ([Anton Popov](https://github.com/CurtizJ)).
  * Se corrigió un fallo de aserción de `rows_sources` en una fusión vertical cuando `SYSTEM STOP/START MERGES` se alterna 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 para `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 corrigió un `LOGICAL_ERROR` al usar `ALTER TABLE ADD COLUMN` para crear una columna `EPHEMERAL` con el mismo nombre que una columna virtual (por ejemplo, `_part_offset`). [#99549](https://github.com/ClickHouse/ClickHouse/pull/99549) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió que `CLEAR COLUMN` no reconstruyera las proyecciones ni volviera a evaluar las columnas materializadas que dependen de la columna limpiada, lo que podía causar excepciones o corrupción de datos durante fusiones posteriores. [#99565](https://github.com/ClickHouse/ClickHouse/pull/99565) ([Desel72](https://github.com/Desel72)).
  * Una parte con proyecciones desconocidas ya no se marca como perdida para siempre. [#99623](https://github.com/ClickHouse/ClickHouse/pull/99623) ([Sema Checherinda](https://github.com/CheSema)).
  * Se corrigió una referencia colgante en `injectRequiredColumns` que provocaba un fallo durante la fusión. [#99679](https://github.com/ClickHouse/ClickHouse/pull/99679) ([Tuan Pham Anh](https://github.com/tuanpach)).
  * Se corrigió un error lógico durante la fusión de partes de proyección después de `CLEAR COLUMN` en una tabla con proyecciones y partes compactas. [#100068](https://github.com/ClickHouse/ClickHouse/pull/100068) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió un `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)).
  * Evalúe los argumentos del engine para `StorageAlias` antes de almacenar la definición, de modo 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 corrigió que `divide` e `intDiv` devolvieran `ILLEGAL_DIVISION` cuando se usaban en expresiones de filtro durante el análisis de índices en algunos casos. [#100928](https://github.com/ClickHouse/ClickHouse/pull/100928) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Se corrigió que una optimización de `minmax_count_projection` y de `COUNT(*)` trivial quedara deshabilitada de forma permanente tras una eliminación ligera, incluso después de que se fusionaran 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)).
  * Se corrigió una carrera de dato en `storage_id` en `IStorage::getDependentViewsByColumn`. [#101385](https://github.com/ClickHouse/ClickHouse/pull/101385) ([Nikolay Degterinsky](https://github.com/evillique)).
  * Se corrigió que `materialize_skip_indexes_on_merge=false` no suprimiera los índices de texto (full-text) durante la fusión. Anteriormente, solo se suprimían los skip indexes no textuales (minmax, set, bloom\_filter). [#101932](https://github.com/ClickHouse/ClickHouse/pull/101932) ([Groene AI](https://github.com/groeneai)).
  * Las entradas de caché del índice de similitud vectorial ahora se eliminan después de eliminar una parte (por ejemplo, durante una fusión), lo que corrige que las entradas nunca se expulsaran debido a claves de caché que no coincidían. [#99575](https://github.com/ClickHouse/ClickHouse/pull/99575) ([Seva Potapov](https://github.com/seva-potapov)).
  * Se corrigió una excepción `LOGICAL_ERROR` falsa durante el redimensionamiento dinámico de la caché del filesystem debido a una race condition en la promoción de la subcola SLRU. [#99850](https://github.com/ClickHouse/ClickHouse/pull/99850) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un posible error lógico durante la lectura de subcolumnas de Map. [#101641](https://github.com/ClickHouse/ClickHouse/pull/101641) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió la prioridad de la coincidencia exacta de subcolumnas sobre la coincidencia por prefijo en `getSubcolumnData` para evitar un posible fallo. [#101645](https://github.com/ClickHouse/ClickHouse/pull/101645) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió el uso de extremos incorrectos en un índice min-max creado sobre una columna JSON, lo que provocaba resultados de consulta incorrectos. [#101918](https://github.com/ClickHouse/ClickHouse/pull/101918) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió un bug de race en SLRU en la caché del filesystem (26.1+) que podía provocar un error lógico de reserva de espacio. [#101991](https://github.com/ClickHouse/ClickHouse/pull/101991) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Se corrigió un error lógico `Having zero bytes` en la caché, provocado por la sobrescritura de 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 corrigió un fallo de aserción `file_offset_of_buffer_end <= getFileSize()` 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)).
  * Se corrigió la aplicación del límite de tamaño de la caché al recargar la configuración. [#100659](https://github.com/ClickHouse/ClickHouse/pull/100659) ([Aleksei Filatov](https://github.com/aalexfvk)).
  * Se corrigió una terminación con `LOGICAL_ERROR` durante el cambio dinámico de tamaño de la caché del sistema de archivos SLRU, causada por estadísticas de expulsión 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)).
  * Se corrigió que las optimizaciones `minmax_count_projection` y la trivial de `COUNT(*)` quedaran deshabilitadas permanentemente después de una eliminación ligera. [#102900](https://github.com/ClickHouse/ClickHouse/pull/102900) ([Anton Popov](https://github.com/CurtizJ)).

  ### Correcciones de tipos de datos y serialización

  * 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)).
  * Se corrigió que la función de agregación `sumCount` no pudiera leer estados serializados antiguos tras la introducción de `Nullable(Tuple)`. [#97502](https://github.com/ClickHouse/ClickHouse/pull/97502) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Se corrigió un error lógico relacionado con la ausencia de un stream durante `INSERT SELECT` con JSON y buckets en datos compartidos. [#97523](https://github.com/ClickHouse/ClickHouse/pull/97523) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigieron posibles fallos durante la lectura de gránulos vacíos en datos compartidos avanzados en JSON. [#97778](https://github.com/ClickHouse/ClickHouse/pull/97778) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió una compilación JIT incorrecta de la función `sign` para tipos enteros más amplios que `Int8`: los valores fuera del rango -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ó que el formato `ProtobufList` no funcionara 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)).
  * Se corrigió la corrupción silenciosa de datos al insertar una columna `Date` de Parquet/Arrow en una columna `Enum`: ahora la conversión de tipos incompatible se rechaza correctamente en lugar de almacenar valores de enum no válidos. [#98364](https://github.com/ClickHouse/ClickHouse/pull/98364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción al leer un archivo Arrow con 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 corrigió una excepción al leer desde `Nullable(Tuple(...))` cuando el nombre de un elemento de Tuple colisiona con la subcolumna `null` de Nullable. [#98372](https://github.com/ClickHouse/ClickHouse/pull/98372) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió 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 en cadena. [#98378](https://github.com/ClickHouse/ClickHouse/pull/98378) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió `tryGetColumnDescription` para filtrar subcolumnas por el tipo de la columna padre, de forma coherente con otros métodos de búsqueda de columnas. [#98391](https://github.com/ClickHouse/ClickHouse/pull/98391) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió la reversión de columnas en el motor Buffer al gestionar una excepción durante la anexión de un nuevo bloque. La lógica anterior podía provocar un estado corrupto de las columnas en memoria. [#98551](https://github.com/ClickHouse/ClickHouse/pull/98551) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió una 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` devolviera siempre 0 de forma incorrecta. [#98553](https://github.com/ClickHouse/ClickHouse/pull/98553) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió que `parseDateTimeBestEffort` analizara incorrectamente palabras que empiezan por prefijos de mes o de día de la semana. [#98742](https://github.com/ClickHouse/ClickHouse/pull/98742) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió una excepción de `reverseUTF8` con entrada UTF-8 no válida (truncada). [#98770](https://github.com/ClickHouse/ClickHouse/pull/98770) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una 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)).
  * SummingMergeTree ya no suma columnas `Bool` (ni otras columnas de tipo domain); los valores `Bool` ahora se conservan tal cual en lugar de sumarse aritméticamente. [#98976](https://github.com/ClickHouse/ClickHouse/pull/98976) ([Yash](https://github.com/Onyx2406)).
  * Se corrigió un comportamiento indefinido (desreferenciación de puntero nulo) al alterar una columna version/sign/is\_deleted a `EPHEMERAL` o `ALIAS` en motores MergeTree. Ahora esas alteraciones se rechazan correctamente. [#98985](https://github.com/ClickHouse/ClickHouse/pull/98985) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió que `parseDateTimeBestEffort` interpretara incorrectamente palabras que comienzan con prefijos de mes en formato DD-month-YYYY. [#99350](https://github.com/ClickHouse/ClickHouse/pull/99350) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió `CHECK TABLE` con serialización dispersa dentro de un Tuple con Dynamic. [#99351](https://github.com/ClickHouse/ClickHouse/pull/99351) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió un logical error `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 corrigió un error por el que la comparación entre los tipos `Time[64]` y `DateTime[64]` resultaba confusa; los valores `Time[64]` ahora se promocionan a `DateTime[64]` añadiendo `1970-01-01` como parte de la fecha. [#99267](https://github.com/ClickHouse/ClickHouse/pull/99267) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Se corrigió la deserialización de `\N` (NULL) para el tipo `Variant` en los formatos de texto Escaped/Raw. [#99648](https://github.com/ClickHouse/ClickHouse/pull/99648) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió un comportamiento indefinido en el lector del formato Avro al leer valores numéricos que desbordan el tipo de columna de destino. Las consultas ahora fallan en caso de desbordamiento en lugar de producir silenciosamente valores incorrectos. [#99697](https://github.com/ClickHouse/ClickHouse/pull/99697) ([asyablue22](https://github.com/asyablue22)).
  * Se corrigió una terminación por falso positivo en `NativeReader` al deserializar un flujo en formato Native con un desajuste en el recuento de filas: se cambió de `LOGICAL_ERROR` a `INCORRECT_DATA`. [#99822](https://github.com/ClickHouse/ClickHouse/pull/99822) ([Rahul Nair](https://github.com/motsc)).
  * Se corrigió una terminación del proceso durante la deserialización de columnas `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 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ó una excepción `LOGICAL_ERROR` en la función `midpoint` cuando se invoca con tipos enteros con signo y sin signo combinados. [#99867](https://github.com/ClickHouse/ClickHouse/pull/99867) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción `LOGICAL_ERROR` en consultas que involucran columnas `Dynamic` con joins cruzados y filtros en tiempo de ejecución, causada porque `ColumnVariant::filter` compartía punteros a columnas Variant en lugar de clonarlos en la ruta de optimización `hasOnlyNulls`. [#100234](https://github.com/ClickHouse/ClickHouse/pull/100234) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió un error en arrays de `Variant` que podía reinterpretar el tipo de datos al llamar a `arrayFirst`/`arrayLast`. Por ejemplo, `Array(Variant(Date, Bool))` se convertía en `Bool` cuando el tipo variante subyacente real era `Date`. [#100255](https://github.com/ClickHouse/ClickHouse/pull/100255) ([timothygk](https://github.com/timothygk)).
  * Se corrigió un problema que impedía que los formatos `CSV` y `MsgPack` analizaran `Nullable(Tuple)` correctamente. [#100038](https://github.com/ClickHouse/ClickHouse/pull/100038) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Se corrigió un problema por el que las funciones `accurateCastOrDefault` y `to*OrDefault` 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 con 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 corrigió el desbordamiento de enteros con signo (comportamiento indefinido) en `toStartOfInterval` cuando se llamaba con valores de intervalos de milisegundos o microsegundos muy grandes en `DateTime64` de alta precisión. [#100156](https://github.com/ClickHouse/ClickHouse/pull/100156) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigieron los filtros de runtime de join sobre el tipo de datos `Variant`. [#100182](https://github.com/ClickHouse/ClickHouse/pull/100182) ([Dmitry Novik](https://github.com/novikd)).
  * Se corrigió una conversión de `Time64` a `UInt64` que podía limitar los valores a 24 horas. [#100025](https://github.com/ClickHouse/ClickHouse/pull/100025) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Se corrigió una excepción al calcular el supertipo común para tuples vacías y no vacías con `use_variant_as_common_type` habilitado. [#100699](https://github.com/ClickHouse/ClickHouse/pull/100699) ([Antonio Andelic](https://github.com/antonio2368)).
  * 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 corrigió el comportamiento indefinido (desbordamiento de enteros con signo) en `toStartOfInterval` al usar intervalos de Week, Quarter o Year con un argumento `origin` y valores de intervalo extremos. [#100817](https://github.com/ClickHouse/ClickHouse/pull/100817) ([Raúl Marín](https://github.com/Algunenano)).
  * Se corrigió un problema que impedía que los combinadores de funciones de agregación `If`, `Distinct`, `DistinctIf` e `IfState`, con un tipo de retorno `Tuple` y uno o más argumentos `Nullable`, pudieran leer estados serializados antiguos tras la introducción de `Nullable(Tuple)`. [#100826](https://github.com/ClickHouse/ClickHouse/pull/100826) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * `cast_keep_nullable`, cuando está habilitado, ya no genera una excepción al convertir un null `Dynamic` en un `Variant`. [#100864](https://github.com/ClickHouse/ClickHouse/pull/100864) ([Seva Potapov](https://github.com/seva-potapov)).
  * Se corrigió una excepción en `intDiv`/`intDivOrZero` sobre arrays de tuples anulables. [#100895](https://github.com/ClickHouse/ClickHouse/pull/100895) ([Raúl Marín](https://github.com/Algunenano)).
  * Se corrigió el comportamiento indefinido (desbordamiento de enteros con signo) en `parseDateTimeBestEffort` al analizar cadenas de fecha y hora con más de 18 dígitos de fracción de segundo. [#100948](https://github.com/ClickHouse/ClickHouse/pull/100948) ([Vasily Chekalkin](https://github.com/bacek)).
  * Se corrigió que la función de agregación `sumCountOrDefault`, con uno o más argumentos `Nullable`, no pudiera leer estados serializados antiguos tras la introducción de `Nullable(Tuple)`. [#101021](https://github.com/ClickHouse/ClickHouse/pull/101021) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Se corrigió que las columnas ALIAS con tipos `DateTime`/`DateTime64` no aplicaran la conversión de zona horaria cuando la zona horaria declarada difería de la zona horaria de la expresión. [#101043](https://github.com/ClickHouse/ClickHouse/pull/101043) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se eliminó `Nullable` de la columna de resultado en `arrayIntersect` y funciones relacionadas para evitar un desajuste entre serialización y deserialización. [#101569](https://github.com/ClickHouse/ClickHouse/pull/101569) ([George Larionov](https://github.com/george-larionov)).
  * Se corrigió que `positiveModulo(tuple, number)` se redirigiera incorrectamente a división en lugar de a módulo. [#101709](https://github.com/ClickHouse/ClickHouse/pull/101709) ([ClickGap AI Bot](https://github.com/clickgapai)).
  * Se corrigió una salida incorrecta en `formatDateTime` con el especificador `%W` bajo determinadas configuraciones de formato no predeterminadas. [#101847](https://github.com/ClickHouse/ClickHouse/pull/101847) ([Robert Schulze](https://github.com/rschu1ze)).
  * Se corrigió una excepción por incompatibilidad de tipos en `transform` cuando la columna predeterminada es const en algunos bloques. [#100616](https://github.com/ClickHouse/ClickHouse/pull/100616) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se permiten row groups vacíos en Parquet. [#100653](https://github.com/ClickHouse/ClickHouse/pull/100653) ([Vitaly Baranov](https://github.com/vitlibar)).
  * `min`/`max`/`argMin`/`argMax` ahora tratan NaN de forma coherente con `ORDER BY`: NaN siempre se omite (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. [#100448](https://github.com/ClickHouse/ClickHouse/pull/100448) ([Raúl Marín](https://github.com/Algunenano)).
  * Se corrigió una inferencia incorrecta del tipo de dato de fecha en caso de overflow tras el ajuste de la zona horaria. [#102674](https://github.com/ClickHouse/ClickHouse/pull/102674) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió que `CASE` con una expresión `Dynamic` devolviera `ELSE` para todas las filas. [#102684](https://github.com/ClickHouse/ClickHouse/pull/102684) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió la serialización del tipo `Dynamic` aplanado con tipos de datos codificados en binario. [#102692](https://github.com/ClickHouse/ClickHouse/pull/102692) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió que `cast_string_to_date_time_mode` se ignorara para `CAST` a `Nullable(DateTime)`. [#103035](https://github.com/ClickHouse/ClickHouse/pull/103035) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se hizo que la representación de null en la serialización de columnas replicadas y dispersas respetara la configuración (por ejemplo, `format_tsv_null_representation`). [#102888](https://github.com/ClickHouse/ClickHouse/pull/102888) ([Hechem Selmi](https://github.com/m-selmi)).

  ### Correcciones de text index y skip index

  * Se corrigió el uso del índice de texto junto 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 usaba simultáneamente un índice de texto y otros índices de omisión normales. [#98555](https://github.com/ClickHouse/ClickHouse/pull/98555) ([Anton Popov](https://github.com/CurtizJ)).
  * Se corrigió la reconstrucción de los índices de texto durante las fusiones con TTL. [#99107](https://github.com/ClickHouse/ClickHouse/pull/99107) ([Anton Popov](https://github.com/CurtizJ)).
  * 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 eliminó la compatibilidad con funciones negadas (`notEquals`, `notLike`, `notIn`) en el análisis del índice de texto. Estas funciones nunca podían omitir ningún gránulo, por lo que analizar el índice para ellas solo añadía sobrecarga. [#99393](https://github.com/ClickHouse/ClickHouse/pull/99393) ([Anton Popov](https://github.com/CurtizJ)).
  * Se corrigió una excepción `NOT_FOUND_COLUMN_IN_BLOCK` cuando se hacía referencia a un predicado del índice de texto (p. ej., `hasAllTokens`) tanto en las cláusulas `SELECT` como `WHERE` mediante un alias. [#99504](https://github.com/ClickHouse/ClickHouse/pull/99504) ([Anton Popov](https://github.com/CurtizJ)).
  * Se corrigieron resultados incorrectos al usar `hasAllTokens` con `OR` entre columnas que tienen índices de texto independientes. [#99505](https://github.com/ClickHouse/ClickHouse/pull/99505) ([Anton Popov](https://github.com/CurtizJ)).
  * Se corrigió la lectura del índice de texto en una tabla con eliminaciones ligeras y políticas de fila existentes. [#99661](https://github.com/ClickHouse/ClickHouse/pull/99661) ([Anton Popov](https://github.com/CurtizJ)).
  * Se corrigió el análisis, por parte del índice de texto con preprocesador, de predicados con la función `IN`, y también una colisión de tokens buscados que podía provocar resultados incorrectos. [#99755](https://github.com/ClickHouse/ClickHouse/pull/99755) ([Anton Popov](https://github.com/CurtizJ)).
  * Se corrigió el uso incorrecto del índice de texto con las funciones `startsWith` y `endsWith` en tokenizadores que no admiten coincidencias de subcadenas (`array`, `splitByString`). Anteriormente, estos tokenizadores podían producir resultados incorrectos de forma silenciosa. [#100151](https://github.com/ClickHouse/ClickHouse/pull/100151) ([Anton Popov](https://github.com/CurtizJ)).
  * Se corrigió un fallo poco frecuente cuando se lanzaba una excepción "Memory Limit" al crear el índice de texto. [#100213](https://github.com/ClickHouse/ClickHouse/pull/100213) ([Anton Popov](https://github.com/CurtizJ)).
  * Se corrigieron los errores "Not-ready Set is passed as the second argument" durante el análisis de un índice de texto construido sobre `mapValues` para predicados que contenían una cláusula `IN`. [#100224](https://github.com/ClickHouse/ClickHouse/pull/100224) ([Anton Popov](https://github.com/CurtizJ)).
  * Se corrigió un fallo al usar un índice de búsqueda de texto con una cláusula `IN` que contenía una subconsulta de Tuple, por ejemplo, `WHERE (id, str) IN (SELECT (id, str) FROM ...)`, o cuando el número de columnas de la subconsulta no coincidía con la Tuple del lado izquierdo de `IN`. [#100959](https://github.com/ClickHouse/ClickHouse/pull/100959) ([Anton Popov](https://github.com/CurtizJ)).
  * El tokenizador `splitByString` ahora rechaza cadenas separadoras vacías. [#101928](https://github.com/ClickHouse/ClickHouse/pull/101928) ([Robert Schulze](https://github.com/rschu1ze)).
  * El tokenizador `sparseGrams` generaba tokens más largos que la longitud máxima proporcionada (debido 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ó 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`, con `query_plan_direct_read_from_text_index` habilitado. [#101939](https://github.com/ClickHouse/ClickHouse/pull/101939) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
  * Se corrigió `hasToken`/`hasTokenOrNull` con patrones compuestos solo por separadores (p. ej., `'()'`, `'!!!'`) en columnas con un índice de texto: antes, 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)).
  * Los ajustes del índice de texto completo (`enable_full_text_index`, `allow_experimental_full_text_index`, `use_skip_indexes_on_data_read`) ya no se desactivan cuando el ajuste `compatibility` apunta a una versión anterior a la 26.1. [#102422](https://github.com/ClickHouse/ClickHouse/pull/102422) ([Nikita Fomichev](https://github.com/fm4v)).
  * Se añadió compatibilidad con columnas `ALIAS` en la optimización de lectura directa desde el índice de texto. [#103037](https://github.com/ClickHouse/ClickHouse/pull/103037) ([Anton Popov](https://github.com/CurtizJ)).

  ### Correcciones en el lago de datos

  * Se corrigió una condición de carrera lógica al cambiar la versión del snapshot en el motor de tablas `DeltaLake`, y se eliminaron las recargas redundantes y costosas de snapshots. [#96226](https://github.com/ClickHouse/ClickHouse/pull/96226) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Se corrigieron una excepción `DUPLICATE_COLUMN` y valores NULL silenciosos al leer tablas Delta Lake que usan el modo de correspondencia de columnas "name" con campos struct cuyos nombres contienen puntos. [#98013](https://github.com/ClickHouse/ClickHouse/pull/98013) ([Caio Ishizaka Costa](https://github.com/ch-caioishizaka)).
  * Se corrigió 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)).
  * Ahora se prohíbe crear, adjuntar y actualizar tablas locales de lago de datos fuera de las rutas de usuario; esto se comprueba al crear y actualizar `IDataLakeMetadata`. [#98936](https://github.com/ClickHouse/ClickHouse/pull/98936) ([Daniil Ivanik](https://github.com/divanik)).
  * Se corrigieron las lecturas de Iceberg BigLake: las credenciales de ADC ahora se reenvían al client S3 de GCS (corrigiendo errores 403), las credenciales de OAuth2 se codifican como URL antes de enviarse 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 error de acceso fuera de límites al consultar solo columnas virtuales de una tabla Iceberg con datos Avro. [#99080](https://github.com/ClickHouse/ClickHouse/pull/99080) ([alesapin](https://github.com/alesapin)).
  * Se corrigió un crash en `ALTER TABLE ... REMOVE SETTINGS` para el motor de tablas Iceberg. [#99108](https://github.com/ClickHouse/ClickHouse/pull/99108) ([alesapin](https://github.com/alesapin)).
  * Se corrigió un crash muy poco frecuente cuando una tabla Iceberg contiene archivos en formatos mixtos (ORC y Parquet). [#99168](https://github.com/ClickHouse/ClickHouse/pull/99168) ([alesapin](https://github.com/alesapin)).
  * Se corrigió un crash (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)).
  * ClickHouse ahora maneja correctamente las tablas de estilo Spark (con una ruta absoluta completa para cada archivo o una ruta relativa a la ruta común de la tabla). [#99935](https://github.com/ClickHouse/ClickHouse/pull/99935) ([alesapin](https://github.com/alesapin)).
  * Se corrigió una excepción cuando una opción de ruta de archivo de metadata de Iceberg contiene un null byte. [#100283](https://github.com/ClickHouse/ClickHouse/pull/100283) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un error de copiar y pegar por el que `delta_lake_snapshot_end_version`, configurado sin `delta_lake_snapshot_start_version`, se ignoraba silenciosamente en lugar de producir un error `BAD_ARGUMENTS`. [#100454](https://github.com/ClickHouse/ClickHouse/pull/100454) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
  * Se corrigió un error lógico en tablas Iceberg ordenadas durante mutations. [#100499](https://github.com/ClickHouse/ClickHouse/pull/100499) ([alesapin](https://github.com/alesapin)).
  * Se corrigió el Polaris catalog con Azure, donde desde la versión 25.12 el catálogo añadía el bucket al principio de la ruta. [#100583](https://github.com/ClickHouse/ClickHouse/pull/100583) ([Konstantin Vedernikov](https://github.com/scanhex12)).
  * Se corrigió una 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)).
  * Se corrigió `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)).
  * Ahora se genera un error cuando se usan `delta_lake_snapshot_version` o las configuraciones de versión de CDF sin DeltaKernel habilitado, en lugar de devolver silenciosamente datos incorrectos. [#101489](https://github.com/ClickHouse/ClickHouse/pull/101489) ([Desel72](https://github.com/Desel72)).
  * Se corrigió un bucle de reintentos de INSERT de Iceberg que fallaba 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)).
  * Se corrigió un fallo del servidor (`LOGICAL_ERROR`) al seleccionar desde una vista materializada respaldada por una tabla con el table engine IcebergLocal. [#101577](https://github.com/ClickHouse/ClickHouse/pull/101577) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió un fallo en `ALTER TABLE ... UPDATE` de IcebergLocal al usar formato Avro, causado porque los tipos envoltorio `LowCardinality`/`Nullable` no se desempaquetaban antes de la serialización. [#102337](https://github.com/ClickHouse/ClickHouse/pull/102337) ([Desel72](https://github.com/Desel72)).
  * Se añadió la columna `hostname` que faltaba a `system.delta_lake_metadata_log` y `system.iceberg_metadata_log`. [#102162](https://github.com/ClickHouse/ClickHouse/pull/102162) ([Michael Russell](https://github.com/Crazybus)).
  * Se corrigió CoalescingMergeTree para el tipo Array. [#102384](https://github.com/ClickHouse/ClickHouse/pull/102384) ([Konstantin Vedernikov](https://github.com/scanhex12)).

  ### Correcciones de S3/Azure/almacenamiento de objetos

  * Se corrigió una excepción en `CachedOnDiskReadBufferFromFile::readBigAt`. [#97890](https://github.com/ClickHouse/ClickHouse/pull/97890) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Se corrigió 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 si el directorio contenía un enlace simbólico colgante. Ahora esos enlaces simbólicos colgantes se omiten silenciosamente. [#98143](https://github.com/ClickHouse/ClickHouse/pull/98143) ([Mark Andreev](https://github.com/mrk-andreev)).
  * Se corrigió el uso excesivo de memoria (\~514 MiB) durante la autodetección de formato al leer datos que no eran Arrow (p. ej., JSON desde `url()` o `file()` sin un formato explícito), causado porque 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)).
  * Se corrigió una race condition que podía provocar 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 corrigió el mensaje engañoso "inflate failed: buffer error" al leer archivos comprimidos inexistentes mediante la función de tabla `url()` con patrones glob. [#99034](https://github.com/ClickHouse/ClickHouse/pull/99034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigieron las llamadas N+1 a `HeadObject` para globs con expansión de llaves en S3. [#99219](https://github.com/ClickHouse/ClickHouse/pull/99219) ([Konstantin Bogdanov](https://github.com/thevar1able)).
  * Se corrigieron casos en los que números con ceros a la izquierda en una ruta de partición de Hive provocaban errores. [#99458](https://github.com/ClickHouse/ClickHouse/pull/99458) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Se corrigió un posicionamiento incorrecto en `AsynchronousReadBufferFromFileDescriptor` con `O_DIRECT`. [#99678](https://github.com/ClickHouse/ClickHouse/pull/99678) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigió un error por el que ClickHouse podía omitir archivos si faltaba la cabecera `Content-Length` en la respuesta a la solicitud HEAD (por ejemplo, debido a transcodificación descompresiva en GCS). [#99971](https://github.com/ClickHouse/ClickHouse/pull/99971) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * El servidor ya no deja de arrancar 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ó un segfault en `s3Cluster` y en consultas distribuidas debido a un use-after-free en el grupo de conexiones. [#100837](https://github.com/ClickHouse/ClickHouse/pull/100837) ([Konstantin Bogdanov](https://github.com/thevar1able)).
  * Se corrigió una excepción que se escapaba del destructor `Client::~Client` de S3 y provocaba la terminación del servidor. [#101798](https://github.com/ClickHouse/ClickHouse/pull/101798) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
  * Se corrigió que el host y el puerto no se registraran correctamente durante la reconexión. [#102280](https://github.com/ClickHouse/ClickHouse/pull/102280) ([Grant Holly](https://github.com/grantholly-clickhouse)).
  * 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)).

  ### Correcciones de S3Queue

  * S3Queue: se corrigió un error de aserción tras una pérdida de conexión con ZooKeeper, aunque el commit se había realizado correctamente. [#100210](https://github.com/ClickHouse/ClickHouse/pull/100210) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * 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)).

  ### Correcciones de seguridad y control de acceso

  * 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)`. [#97682](https://github.com/ClickHouse/ClickHouse/pull/97682) ([pufit](https://github.com/pufit)).
  * Aplicar comprobaciones `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)).
  * Aceptar credenciales base64 sin relleno en HTTP Basic Auth. Algunos clientes HTTP omiten el relleno final `=` en la cabecera `Authorization: Basic`, lo que antes provocaba fallos de autenticación. [#98392](https://github.com/ClickHouse/ClickHouse/pull/98392) ([Amos Bird](https://github.com/amosbird)).
  * Se corrigió 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)).
  * Se corrigió un issue por el que `system.grants` omitía los parámetros de expresión regular de los grants `URL` y `S3` en la columna `access_object`. [#98987](https://github.com/ClickHouse/ClickHouse/pull/98987) ([DQ](https://github.com/il9ue)).
  * Se corrigió una elusió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 requeridos. En el caso de las funciones que infieren el esquema a partir de 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)).
  * Limitar las constraints de settings en el worker de DDL para consultas DDL distribuidas. [#99317](https://github.com/ClickHouse/ClickHouse/pull/99317) ([Pablo Marcos](https://github.com/pamarcos)).
  * Se corrigieron problemas menores con la autenticación TOTP: la opción de CLI `--one-time-password` con una 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)).
  * Las credenciales en las cadenas de conexión JDBC, ODBC y NATS ahora se enmascaran en los registros de consultas y en la salida de `SHOW CREATE`. En el caso de las cadenas de conexión con formato URI, solo se enmascara la parte correspondiente a la contraseña. El setting `nats_token` ahora también se enmascara. [#99344](https://github.com/ClickHouse/ClickHouse/pull/99344) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
  * Prohibir la lectura de credenciales de Google desde un archivo local, lo cual era inseguro porque permitía leer otras credenciales si se conocía la ruta del archivo. [#99584](https://github.com/ClickHouse/ClickHouse/pull/99584) ([Konstantin Vedernikov](https://github.com/scanhex12)).
  * Se corrigió que el origen del diccionario de MySQL omitiera `RemoteHostFilter` para parámetros DDL inline. [#99720](https://github.com/ClickHouse/ClickHouse/pull/99720) ([Shaohua Wang](https://github.com/tiandiwonder)).
  * Se corrigió `system.completions` para filtrar correctamente bases de datos, tablas y columnas según los permisos de acceso en todas las combinaciones de grants: por tabla, por base de datos y revoke por columna. [#100432](https://github.com/ClickHouse/ClickHouse/pull/100432) ([Shaohua Wang](https://github.com/tiandiwonder)).
  * Sanitizar `query_id` en el handler HTTP para evitar la inyección de CRLF en las cabeceras de respuesta mediante la cabecera `X-ClickHouse-Query-Id`. [#100500](https://github.com/ClickHouse/ClickHouse/pull/100500) ([Pablo Marcos](https://github.com/pamarcos)).
  * Algunos catálogos podían mostrar secretos en la sección `SETTINGS` de `SELECT * FROM system.databases`. Ahora esto se impide. [#100800](https://github.com/ClickHouse/ClickHouse/pull/100800) ([Konstantin Vedernikov](https://github.com/scanhex12)).
  * Las políticas de fila no se propagaban desde los subplanificadores al planificador principal para el logging, por lo que no aparecían en `query_log` para vistas, subconsultas e instrucciones `INSERT SELECT`. Ahora se conservan en `QueryAccessInfo` para el logging. [#101044](https://github.com/ClickHouse/ClickHouse/pull/101044) ([Narasimha Pakeer](https://github.com/npakeer)).

  ### Correcciones de copia de seguridad y restauración

  * Se corrigió que `max_execution_time` no se aplicara a la copia de seguridad/restauración. [#99205](https://github.com/ClickHouse/ClickHouse/pull/99205) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Se corrigió una excepción `ReadBuffer is canceled. Can't read from it.` en operaciones de copia de seguridad/restauración con archivos zip. [#100400](https://github.com/ClickHouse/ClickHouse/pull/100400) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se validan las rutas de las entradas de archivo en los metadatos de la copia de seguridad para rechazar recorridos de ruta, rutas absolutas y nombres vacíos durante `RESTORE`. [#100483](https://github.com/ClickHouse/ClickHouse/pull/100483) ([Pablo Marcos](https://github.com/pamarcos)).
  * Se corrigieron el formateo y la clonación del AST de `BACKUP FROM SNAPSHOT`. [#101405](https://github.com/ClickHouse/ClickHouse/pull/101405) ([Pablo Marcos](https://github.com/pamarcos)).

  ### Correcciones de ClickHouse Keeper

  * Se corrigió una carrera de dato en el client de ZooKeeper entre el hilo de envío y el hilo de recepción. [#97887](https://github.com/ClickHouse/ClickHouse/pull/97887) ([Pablo Marcos](https://github.com/pamarcos)).
  * Se corrigió la pérdida de datos en Keeper tras un reinicio al usar Azure Blob Storage con metadatos `s3_plain` para el almacenamiento de logs. [#97987](https://github.com/ClickHouse/ClickHouse/pull/97987) ([Antonio Andelic](https://github.com/antonio2368)).
  * Se estableció 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)).
  * Se corrigió un problema por el que ClickHouse Keeper desconectaba a clients Java de ZooKeeper después de una solicitud `addWatch`. El Java client espera un cuerpo `ErrorResponse` de 4 bytes, pero Keeper enviaba un cuerpo vacío, lo que provocaba `EOFException` y la desconexión de la sesión. [#98499](https://github.com/ClickHouse/ClickHouse/pull/98499) ([Antonio Andelic](https://github.com/antonio2368)).
  * Se corrigió que las métricas de Keeper `zk_followers` y `zk_synced_followers` no disminuyeran cuando un follower dejaba de estar disponible. Se añadieron las nuevas métricas `zk_learners` y `zk_synced_non_voting_followers` al comando `mntr`. [#98504](https://github.com/ClickHouse/ClickHouse/pull/98504) ([Antonio Andelic](https://github.com/antonio2368)).
  * Se corrigió que el puerto Raft seguro de Keeper ignorara `cipherList` y `dhParamsFile` de la configuración `openSSL`. [#98509](https://github.com/ClickHouse/ClickHouse/pull/98509) ([Antonio Andelic](https://github.com/antonio2368)).
  * Se corrigieron mensajes de log engañosos de Keeper como "Receiving request for session X took 9963 ms", donde el tiempo informado en realidad se pasaba esperando inactivo en `poll()` entre heartbeats. [#98510](https://github.com/ClickHouse/ClickHouse/pull/98510) ([Antonio Andelic](https://github.com/antonio2368)).
  * Se corrigió que las conexiones TCP de Keeper impidieran un apagado ordenado del servidor al no responder a la señal de apagado. [#98525](https://github.com/ClickHouse/ClickHouse/pull/98525) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una aserción de depuración en `DDLWorker` causada por un `first_failed_task_name` obsoleto después de que se eliminara una entrada de ZooKeeper durante la recuperación de reinicialización. [#99099](https://github.com/ClickHouse/ClickHouse/pull/99099) ([Antonio Andelic](https://github.com/antonio2368)).
  * Se corrigió un caso de crash en Keeper. [#99133](https://github.com/ClickHouse/ClickHouse/pull/99133) ([JIaQi Tang](https://github.com/JiaQiTang98)).
  * Se corrigió un error en Keeper por el que una read request podía quedarse bloqueada (provocando un timeout de sesión) si otra sesión distinta y no relacionada en el mismo servidor se cerraba justo en el momento equivocado. [#99484](https://github.com/ClickHouse/ClickHouse/pull/99484) ([Michael Kolupaev](https://github.com/al13n321)).
  * Se corrigió un SEGFAULT en NuRaft debido a una race condition. [#100444](https://github.com/ClickHouse/ClickHouse/pull/100444) ([Pablo Marcos](https://github.com/pamarcos)).
  * Se corrigió que `KeeperMap` `CREATE TABLE` fallara con "Cannot create metadata for table" cuando nodos residuales de ZooKeeper de un drop parcial anterior a 25.1 no tenían el nodo `drop_lock_version`. [#101623](https://github.com/ClickHouse/ClickHouse/pull/101623) ([Antonio Andelic](https://github.com/antonio2368)).
  * Se corrigió la pérdida del registry de UDF cuando una sesión de ZooKeeper expiraba durante una actualización periódica: todas las user-defined functions podían dejar de estar disponibles hasta que una actualización completa se completara correctamente. [#101891](https://github.com/ClickHouse/ClickHouse/pull/101891) ([Nikita Fomichev](https://github.com/fm4v)).
  * Se corrigió un crash durante la actualización de UDF causado por que `ZooKeeperRetriesControl` reintentaba sobre una sesión de ZooKeeper obsoleta (expirada) sin renovarla. [#102059](https://github.com/ClickHouse/ClickHouse/pull/102059) ([Nikita Fomichev](https://github.com/fm4v)).

  ### Correcciones de bloqueos y estabilidad

  * Se corrigió un fallo en las funciones del dialecto Kusto `bin()`, `bin_at()`, `extract()` e `indexof()` cuando se proporcionan argumentos vacíos. [#95736](https://github.com/ClickHouse/ClickHouse/pull/95736) ([NeedmeFordev](https://github.com/spider-yamet)).
  * Se corrigió un fallo/assert del servidor en `mapContainsKey`/`mapContainsKeyLike` con un skip index `tokenbf_v1`. [#97826](https://github.com/ClickHouse/ClickHouse/pull/97826) ([Shankar Iyer](https://github.com/shankar-iyer)).
  * Se corrigió un fallo del servidor (`std::terminate`) causado por una excepción no capturada en el destructor del pool de conexiones HTTP cuando se alcanza el límite estricto del grupo de conexiones con alta concurrencia. [#97850](https://github.com/ClickHouse/ClickHouse/pull/97850) ([Antonio Andelic](https://github.com/antonio2368)).
  * Se corrigió un acceso fuera de límites en `ColumnConst::getExtremes` que podía causar un fallo cuando `extremes = 1` está habilitado. [#98263](https://github.com/ClickHouse/ClickHouse/pull/98263) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se añadieron validaciones de datos corruptos durante la deserialización de `DDSketch` para evitar segfaults, excepciones, bucles infinitos y OOM al leer aggregate function states corruptos de `quantilesDD`. [#98284](https://github.com/ClickHouse/ClickHouse/pull/98284) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción poco frecuente en el ejecutor del pipeline, que podía manifestarse como `Received signal 6` (en builds de depuración), cuando la expansión del pipeline compite con la cancelación de la consulta. [#98428](https://github.com/ClickHouse/ClickHouse/pull/98428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una desreferenciación de puntero nulo en `dictGetOrDefault` cuando el argumento de clave es `Nullable`. [#98460](https://github.com/ClickHouse/ClickHouse/pull/98460) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un interbloqueo del 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ó un fallo por desreferenciación de puntero nulo en tablas del sistema creadas entre la captura instantánea de las tablas en `IDatabaseTablesIterator::table()` y su modificación en otro hilo durante una iteración posterior. [#98792](https://github.com/ClickHouse/ClickHouse/pull/98792) ([Grant Holly](https://github.com/grantholly-clickhouse)).
  * Se corrigió la desviación en el seguimiento de memoria causada por asignaciones fallidas que no se revertían, el comportamiento no definido de `nallocx(0)` y un error de desfase de uno en el seguimiento del pico global. Se amplió el seguimiento para cubrir los búferes circulares de `io_uring`. [#98915](https://github.com/ClickHouse/ClickHouse/pull/98915) ([Antonio Andelic](https://github.com/antonio2368)).
  * Se corrigió un fallo del servidor (`std::terminate`) al ejecutar `ALTER TABLE ... DROP PART` en una patch part después de un cambio de esquema (por ejemplo, ADD COLUMN). [#99036](https://github.com/ClickHouse/ClickHouse/pull/99036) ([Peng](https://github.com/fastio)).
  * Se corrigió un fallo del servidor que podía ocurrir si se lanzaba una excepción por exceder el límite de memoria durante una lectura desde disco en caché. [#99042](https://github.com/ClickHouse/ClickHouse/pull/99042) ([Shankar Iyer](https://github.com/shankar-iyer)).
  * Se corrigió un fallo provocado por una excepción de límite de memoria lanzada durante la aplicación de una patch part. [#99086](https://github.com/ClickHouse/ClickHouse/pull/99086) ([Anton Popov](https://github.com/CurtizJ)).
  * Se corrigió 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 corrigió un error de heap-use-after-free cuando una tabla se elimina de forma concurrente mientras hay una consulta de lectura en ejecución. [#99483](https://github.com/ClickHouse/ClickHouse/pull/99483) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un heap-buffer-overflow en `CompressionCodecT64` y un aborto del proceso en `CompressionCodecMultiple` al descomprimir datos comprimidos malformados. Ahora los códecs lanzan una excepción en lugar de bloquearse. [#99680](https://github.com/ClickHouse/ClickHouse/pull/99680) ([Rahul Nair](https://github.com/motsc)).
  * Se corrigió un bucle infinito al leer archivos en formato `Npy` con dimensiones de shape negativas. [#99812](https://github.com/ClickHouse/ClickHouse/pull/99812) ([Desel72](https://github.com/Desel72)).
  * Se corrigió un global-buffer-overflow en la función `CRC32` con argumentos `FixedString` cuando se evaluaba con cero filas durante el cálculo del header del query plan. [#99835](https://github.com/ClickHouse/ClickHouse/pull/99835) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un fallo 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ó un fallo de aserción al multiplicar estados de agregación `NumericIndexedVector` por una constante entera par, causado por self-XOR en bitmaps Roaring con alias en `pointwiseAddInplace`. [#99976](https://github.com/ClickHouse/ClickHouse/pull/99976) ([Desel72](https://github.com/Desel72)).
  * Se corrigió una desreferenciación de nullptr en el Parquet reader cuando la ruta filter-in-decoder encuentra páginas filtradas. [#99677](https://github.com/ClickHouse/ClickHouse/pull/99677) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un fallo 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 corrigió un SIGSEGV al leer patch parts después de `ALTER MODIFY COLUMN`. [#100107](https://github.com/ClickHouse/ClickHouse/pull/100107) ([Nikolay Degterinsky](https://github.com/evillique)).
  * Se corrigió un use-of-uninitialized-value en `StringSearcher.h`. [#100225](https://github.com/ClickHouse/ClickHouse/pull/100225) ([Konstantin Bogdanov](https://github.com/thevar1able)).
  * Se corrigió un fallo 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)).
  * Se corrigió un heap-buffer-overflow en `sorted_buffer_gt::insert()` de usearch que podía provocar un fallo o corromper la memoria silenciosamente durante la vector similarity search. [#100537](https://github.com/ClickHouse/ClickHouse/pull/100537) ([Dustin Healy](https://github.com/dustinhealy)).
  * Se corrigió un fallo del servidor (error lógico "Unexpected return type from \_\_topKFilter") cuando `use_top_k_dynamic_filtering` está habilitado y la columna `ORDER BY` es de tipo `Dynamic` o `Variant`. [#100742](https://github.com/ClickHouse/ClickHouse/pull/100742) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió un fallo del servidor al usar la función `has()` con PREWHERE/WHERE sobre una clave Tuple que contiene elementos LowCardinality. [#100760](https://github.com/ClickHouse/ClickHouse/pull/100760) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió un segfault por desreferenciación de puntero nulo al cargar diccionarios durante el apagado del servidor. [#100839](https://github.com/ClickHouse/ClickHouse/pull/100839) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
  * Se corrigió un 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)).
  * Se corrigió un fallo (`LOGICAL_ERROR`) al consultar una tabla `Merge` (o la table function `merge()`) que abarca varias tablas, incluida una tabla `Distributed`, con `distributed_group_by_no_merge=1` habilitado. [#100859](https://github.com/ClickHouse/ClickHouse/pull/100859) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió un fallo al construir un diccionario Polygon a partir de una tabla `MergeTree` que usa serialización de columnas dispersas. [#100964](https://github.com/ClickHouse/ClickHouse/pull/100964) ([Anton Popov](https://github.com/CurtizJ)).
  * Se corrigió un fallo (`Logical error: isConst/isSparse/isReplicated assertTypeEquality`) en los algoritmos de merge cuando la replicación diferida de columnas (`enable_lazy_columns_replication`) produce 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 corrigió un fallo del servidor (`SIGABRT`) al usar funciones de agregación con el combinador interno `Null` (por ejemplo, `sumNull`, `avgNull`) y `aggregate_functions_null_for_empty = 1`. [#101147](https://github.com/ClickHouse/ClickHouse/pull/101147) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió un use-after-free 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. [#101161](https://github.com/ClickHouse/ClickHouse/pull/101161) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió un fallo del servidor con "Trying to attach external table to a ready set without explicit elements" cuando el análisis distribuido de índices encuentra un predicado `GLOBAL IN` cuyo Set se construyó sin elementos explícitos. [#101178](https://github.com/ClickHouse/ClickHouse/pull/101178) ([Groene AI](https://github.com/groeneai)).
  * Se corrigieron resultados incorrectos en las funciones de agregación `MAX`/`MIN` sobre columnas `Decimal` cuando la compilación JIT está habilitada. [#101203](https://github.com/ClickHouse/ClickHouse/pull/101203) ([Raúl Marín](https://github.com/Algunenano)).
  * Se corrigió un fallo 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 un tipo `LowCardinality`. [#101220](https://github.com/ClickHouse/ClickHouse/pull/101220) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió UB en `mergeTreeAnalyzeIndexes()` en caso de que el argumento de optimizaciones no sea válido. [#101253](https://github.com/ClickHouse/ClickHouse/pull/101253) ([Azat Khuzhin](https://github.com/azat)).
  * Se corrigió un fallo del servidor (Logical error: "Variant ... is empty") cuando una consulta lee simultáneamente una columna `Tuple` que contiene un tipo `Map` `Dynamic` y su subcolumna. [#101448](https://github.com/ClickHouse/ClickHouse/pull/101448) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió un fallo `LOGICAL_ERROR` con el mensaje "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 mal formado del tipo `Dynamic`. [#101464](https://github.com/ClickHouse/ClickHouse/pull/101464) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió 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)).
  * Se añadió una comprobación para streams vacíos en `Bzip2ReadBuffer` para que devuelva EOF en lugar de lanzar `UNEXPECTED_END_OF_FILE` cuando el stream interno está vacío. [#101691](https://github.com/ClickHouse/ClickHouse/pull/101691) ([ClickGap AI Bot](https://github.com/clickgapai)).
  * Se corrigió un fallo por uso de memoria después de liberarla en el scheduler de arrendamiento de CPU cuando el temporizador de espera sobrevive al worker thread cuyos `ProfileEvents::Counters` referencia. [#101761](https://github.com/ClickHouse/ClickHouse/pull/101761) ([Antonio Andelic](https://github.com/antonio2368)).
  * Se corrigió un uso fuera de ámbito en la deserialización en paralelo de rutas dinámicas del tipo `Object`, que podía provocar fallos al leer tablas con muchas rutas dinámicas. [#101823](https://github.com/ClickHouse/ClickHouse/pull/101823) ([Antonio Andelic](https://github.com/antonio2368)).
  * Se corrigió un SIGSEGV en `MergeTreeDataPartWriterWide::cancel` cuando un constructor de stream lanza una excepción durante `addStreams`, lo que dejaba una entrada nula en `column_streams`. [#101936](https://github.com/ClickHouse/ClickHouse/pull/101936) ([Antonio Andelic](https://github.com/antonio2368)).
  * Se corrigió un fallo de segmentación en mutations sobre materialized columns sin expresión. [#102342](https://github.com/ClickHouse/ClickHouse/pull/102342) ([zoomxi](https://github.com/zoomxi)).
  * Se corrigió un segfault (o `LOGICAL_ERROR` en builds de depuración) al leer archivos Parquet con bloom filter push-down habilitado y condiciones de igualdad/desigualdad en la cláusula `WHERE`, causado por un acceso a memoria fuera de límites en el precargador de Parquet. [#102385](https://github.com/ClickHouse/ClickHouse/pull/102385) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió una lectura fuera de límites en funciones de búsqueda de cadenas (`countSubstrings`, `position`, etc.) al buscar una subcadena compuesta íntegramente por bytes nulos. [#102401](https://github.com/ClickHouse/ClickHouse/pull/102401) ([Raúl Marín](https://github.com/Algunenano)).
  * Se corrigió 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)).
  * Se corrigió un fallo por `LOGICAL_ERROR` "Unexpected number of rows in column subchunk" en el lector nativo de Parquet V3 al leer nullable columns con un filtro `WHERE`. [#102628](https://github.com/ClickHouse/ClickHouse/pull/102628) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió un fallo del server (SIGSEGV) al leer archivos Avro con schemas recursivos que contenían referencias cíclicas a tipos simbólicos. Ahora estos schemas se detectan y rechazan con un mensaje de error claro. [#102853](https://github.com/ClickHouse/ClickHouse/pull/102853) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió un fallo del server (aserción `LOGICAL_ERROR`) cuando una función sobre una columna `Variant` alcanza un memory limit u otra excepción no relacionada con la conversión de tipos durante el cast del resultado en `FunctionVariantAdaptor`. [#102855](https://github.com/ClickHouse/ClickHouse/pull/102855) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió un fallo del server en builds de depuración/sanitizador cuando se lanza `std::length_error` durante schema inference. [#102859](https://github.com/ClickHouse/ClickHouse/pull/102859) ([Groene AI](https://github.com/groeneai)).
  * Se corrigió un fallo al usar una vista con una cláusula `WHERE` en la que la consulta interna produce columnas con tipos distintos de los metadatos de la vista (por ejemplo, `Nullable` a partir de un `LEFT JOIN` con `join_use_nulls`). [#102085](https://github.com/ClickHouse/ClickHouse/pull/102085) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).

  ### Otras correcciones de errores

  * Se corrigió un error por el que las configuraciones explícitas enviadas junto con `compatibility` en la misma solicitud podían ignorarse silenciosamente 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 corrigió un problema por el que el client informaba `NETWORK_ERROR` en lugar del parsing error 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)).
  * Se corrigió un problema por el que `DROP DATABASE` con `database_atomic_wait_for_drop_and_detach_synchronously` podía quedar bloqueado indefinidamente cuando se terminaba 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 terminar 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)).
  * Se corrigió un error lógico en una consulta de política de enmascaramiento de datos con `ON CLUSTER`. [#97594](https://github.com/ClickHouse/ClickHouse/pull/97594) ([Bharat Nallan](https://github.com/bharatnc)).
  * Se corrigió una poda de particiones incorrecta al usar `DateTime64` anterior al epoch con la función `toDate()`. [#97746](https://github.com/ClickHouse/ClickHouse/pull/97746) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Se corrigió un `LOGICAL_ERROR` de `Cannot schedule a file` en `INSERT` sobre `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 error lógico "Bad cast from type DB::ColumnConst to DB::ColumnArray" en `kql_array_sort_asc`/`kql_array_sort_desc` cuando se invocaban con argumentos de Array constantes. [#98251](https://github.com/ClickHouse/ClickHouse/pull/98251) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * El servidor HTTP ahora devuelve un mensaje de error en el body de la respuesta para las respuestas 400 Bad Request causadas por headers malformados, en lugar de un body vacío. [#98268](https://github.com/ClickHouse/ClickHouse/pull/98268) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigieron resultados incorrectos con distributed index analysis (Experimental Feature) y la caché de condiciones de consulta. [#98269](https://github.com/ClickHouse/ClickHouse/pull/98269) ([Azat Khuzhin](https://github.com/azat)).
  * Se corrigió un problema por el que un dictionary source de `MongoDB` fallaba con named collections. [#98528](https://github.com/ClickHouse/ClickHouse/pull/98528) ([Pablo Marcos](https://github.com/pamarcos)).
  * Ahora se impide eliminar una columna cuando sus subcolumns se usan en expresiones predeterminadas o alias de otras columnas, y se utiliza el analizador para las expresiones predeterminadas en `ALTER DROP COLUMN`. [#98569](https://github.com/ClickHouse/ClickHouse/pull/98569) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
  * Todas las `DB::Exception` de `PocoHTTPClient::makeRequestInternalImpl` ahora se consideran no reintentables, incluida `HTTP_CONNECTION_LIMIT_REACHED`. [#98598](https://github.com/ClickHouse/ClickHouse/pull/98598) ([Sema Checherinda](https://github.com/CheSema)).
  * Se corrigieron dos errores en la compilación JIT de expresiones: un error de copiar y pegar 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 `nullptr` incorrecto de TargetMachine pasado a `PassBuilder` de LLVM. [#98660](https://github.com/ClickHouse/ClickHouse/pull/98660) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió una excepción "Inconsistent KeyCondition behavior" en compilaciones de depuración cuando la clave primaria contiene valores NaN de punto flotante, haciendo que `accurateLess` y `accurateEquals` manejen NaN de forma coherente con el orden de clasificación de ClickHouse. [#98964](https://github.com/ClickHouse/ClickHouse/pull/98964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió `windowFunnel` con `strict_deduplication`, que devolvía un nivel incorrecto al encontrar un evento duplicado. [#99003](https://github.com/ClickHouse/ClickHouse/pull/99003) ([Yash](https://github.com/Onyx2406)).
  * Se hizo que las entradas de `system.trace_log` para las recargas automáticas de los diccionarios de ClickHouse tengan IDs de consulta no vacíos. [#98784](https://github.com/ClickHouse/ClickHouse/pull/98784) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
  * Se corrigió que `SYSTEM START REPLICATED VIEW` no activara la tarea de actualización. [#98797](https://github.com/ClickHouse/ClickHouse/pull/98797) ([Pablo Marcos](https://github.com/pamarcos)).
  * Se corrigió que `WITH FILL STALENESS` produjera filas rellenadas adicionales cuando los datos se leen en varios fragmentos (por ejemplo, con un `index_granularity` pequeño). [#98895](https://github.com/ClickHouse/ClickHouse/pull/98895) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un fallo en la ofuscación de consultas para identificadores que comienzan con una letra mayúscula, como `Ab`. [#101450](https://github.com/ClickHouse/ClickHouse/pull/101450) ([Xuewei Wang](https://github.com/Sallery-X)).
  * Se corrigió que se ignorara `TABLE_UUID_MISMATCH` en la ruta de código sin analizador. [#99380](https://github.com/ClickHouse/ClickHouse/pull/99380) ([Azat Khuzhin](https://github.com/azat)).
  * Se corrigió que `clickhouse format --obfuscate` produjera 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)).
  * Validar los cambios de configuración en las consultas CREATE cuando el propio engine también admite settings. [#99279](https://github.com/ClickHouse/ClickHouse/pull/99279) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
  * Se corrigió que `insert_deduplication_token` se ignorara silenciosamente en consultas `INSERT SELECT` sin `ORDER BY ALL`. Ahora, proporcionar `insert_deduplication_token` es suficiente para habilitar la desduplicación independientemente de `ORDER BY ALL`. [#99206](https://github.com/ClickHouse/ClickHouse/pull/99206) ([Desel72](https://github.com/Desel72)).
  * Retrasar el procesamiento hasta que el servidor haya terminado de cargar todas las tablas. [#99700](https://github.com/ClickHouse/ClickHouse/pull/99700) ([Seva Potapov](https://github.com/seva-potapov)).
  * Se corrigió el análisis de comillas de estilo shell en los argumentos de la table function `executable`. [#99794](https://github.com/ClickHouse/ClickHouse/pull/99794) ([Nikita Semenov](https://github.com/leftmain)).
  * Se corrigió que las consultas de async insert reportaran `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)).
  * Se corrigió que un `INSERT` con `VALUES` fallara cuando los datos iban seguidos de un comentario SQL final (`--` o `/* */`) en la línea siguiente. Ahora el comentario se omite en lugar de interpretarse como otra fila. [#100016](https://github.com/ClickHouse/ClickHouse/pull/100016) ([Pratima Patel](https://github.com/pratimapatel2008)).
  * Se corrigió 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)).
  * Procesar correctamente los valores negativos dentro de `NumericIndexedVectorDataBSI`. [#100086](https://github.com/ClickHouse/ClickHouse/pull/100086) ([Daniil Ivanik](https://github.com/divanik)).
  * Se corrigió un problema por el que la table function `primes` no respetaba correctamente `max_rows_to_read` en algunos casos, especialmente cuando están presentes offset y step. [#100199](https://github.com/ClickHouse/ClickHouse/pull/100199) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Los usuarios ya no ven `NATURAL CROSS JOIN` al consultar el AST de una consulta con natural join que se reescribe como `CROSS JOIN`. [#100223](https://github.com/ClickHouse/ClickHouse/pull/100223) ([Peter Nguyen](https://github.com/petern48)).
  * Se introdujeron algunos cambios menores en funciones: las funciones h3 ahora validan mejor los límites; `readWKB` comprueba los límites de tamaño (un nuevo ajuste, `max_wkb_geometry_elements`); y las funciones del generador aleatorio limitan el número máximo de iteraciones. [#100270](https://github.com/ClickHouse/ClickHouse/pull/100270) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Se corrigió un issue por el que `cutURLParameter` podía omitir parámetros incorrectamente cuando aparecían como subcadenas de otros parámetros. [#100280](https://github.com/ClickHouse/ClickHouse/pull/100280) ([Nikita Semenov](https://github.com/leftmain)).
  * Se corrigió una 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 corrigió un problema por el que `DROP TABLE` quedaba bloqueado indefinidamente en tablas con motor Kafka cuando los consumers se quedaban 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 validan las dimensiones de la forma del formato Npy frente al tamaño del archivo y los límites de desbordamiento para evitar denegaciones de servicio mediante archivos `.npy` manipulados. 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 corrigió que `session_timezone` se ignorara al analizar valores `DateTime` durante async inserts (TCP) y en todas las inserciones por HTTP. [#100647](https://github.com/ClickHouse/ClickHouse/pull/100647) ([Sema Checherinda](https://github.com/CheSema)).
  * Se hizo `StorageRabbitMQ::shutdown` idempotente y se añadieron comprobaciones defensivas de null, ya que ahora se llama dos veces (en `StreamingStorageRegistry` y `DatabaseCatalog`). [#100455](https://github.com/ClickHouse/ClickHouse/pull/100455) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
  * Se corrigió una 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ó que la sintaxis `LIMIT m OFFSET n WITH TIES` no funcionara (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 corrigió un segfault en el que `SerializationInfoTuple::add` hacía un `assert_cast` sobre una referencia simple de `SerializationInfo` al fusionar partes después de que `ALTER MODIFY COLUMN` cambiara una columna de un tipo no `Tuple` a `Tuple`. [#100509](https://github.com/ClickHouse/ClickHouse/pull/100509) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
  * Se corrigió una 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 corrigió que `EXECUTE AS` ignorara las cláusulas `FORMAT` e `INTO OUTFILE` especificadas en la consulta. [#100538](https://github.com/ClickHouse/ClickHouse/pull/100538) ([pufit](https://github.com/pufit)).
  * Se corrigió el formato inconsistente del AST para `SAMPLE` con un `OFFSET` a nivel de consulta. [#100579](https://github.com/ClickHouse/ClickHouse/pull/100579) ([Pavel Kruglov](https://github.com/Avogar)).
  * Se corrigieron los errores "La tabla de destino no existe" en las vistas materializadas con tablas internas durante el inicio asíncrono, causados por un orden incorrecto en las dependencias de inicio. [#100946](https://github.com/ClickHouse/ClickHouse/pull/100946) ([Nikolay Degterinsky](https://github.com/evillique)).
  * Se corrigió una excepción en `optimizeLazyMaterialization` cuando se usa 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 corrigió un mensaje de error incorrecto al llamar a `intExp10` con un argumento NaN: decía `intExp2` en lugar de `intExp10`. [#101582](https://github.com/ClickHouse/ClickHouse/pull/101582) ([Krishna Chaitanya](https://github.com/Krishnachaitanyakc)).
  * Se corrigió que `allow_statistics=0` no bloqueara `ALTER TABLE ADD STATISTICS` ni `ALTER TABLE DROP STATISTICS`. [#101585](https://github.com/ClickHouse/ClickHouse/pull/101585) ([Krishna Chaitanya](https://github.com/Krishnachaitanyakc)).
  * Se corrigió que `CREATE TABLE ... AS merge()` ignorara la lista explícita de columnas y, en su lugar, infiriera automáticamente las columnas a partir de las tablas de origen, lo que provocaba errores `NOT_FOUND_COLUMN_IN_BLOCK` cuando `merge_table_max_tables_to_look_for_schema_inference` era lo bastante bajo y las tablas de origen tenían esquemas distintos. [#101663](https://github.com/ClickHouse/ClickHouse/pull/101663) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
  * Se corrigió que la creación de un diccionario `RANGE_HASHED` aceptara silenciosamente un atributo de rango `MAX` inexistente y usara una configuración de tipos incorrecta cuando los atributos de rango mínimo y máximo tenían tipos diferentes. [#101732](https://github.com/ClickHouse/ClickHouse/pull/101732) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
  * Se corrigieron errores en las funciones `arrayLevenshteinDistanceWeighted` y `arraySimilarity`. [#101767](https://github.com/ClickHouse/ClickHouse/pull/101767) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
  * Se corrigió que la API de consultas de Prometheus ignorara los cuerpos de formulario de las solicitudes POST. [#101794](https://github.com/ClickHouse/ClickHouse/pull/101794) ([James Cunningham](https://github.com/JTCunning)).
  * Se corrigió un 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 desmangleado. [#101885](https://github.com/ClickHouse/ClickHouse/pull/101885) ([Pablo Marcos](https://github.com/pamarcos)).
  * Se corrigió la descripción de `system.codecs` para `AES_256_GCM_SIV` para que mostrara `AES-256` en lugar de `AES-128`. [#101917](https://github.com/ClickHouse/ClickHouse/pull/101917) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
  * Se corrigió un comportamiento indefinido al analizar paquetes de consulta del protocolo nativo con valores `QueryProcessingStage` no válidos. [#101972](https://github.com/ClickHouse/ClickHouse/pull/101972) ([Raúl Marín](https://github.com/Algunenano)).
  * Se cerró la conexión TCP cuando se produce 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)).
  * Se corrigieron los casos en los que `Time` con valores negativos devolvía un resultado incorrecto al compararse con `DateTime`. [#102056](https://github.com/ClickHouse/ClickHouse/pull/102056) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Se corrigieron los espacios que faltaban al dar formato a unlock snapshot. [#102063](https://github.com/ClickHouse/ClickHouse/pull/102063) ([Han Fei](https://github.com/hanfei1991)).
  * No se podían inicializar, en una réplica nueva, las tablas Alias sin una tabla de destino en Database Replicated. [#102397](https://github.com/ClickHouse/ClickHouse/pull/102397) ([Nikolay Degterinsky](https://github.com/evillique)).
  * Los `INSERT` simples sin vistas materializadas ya no solicitan un número excesivo de slots y threads de `ConcurrencyControl` (`max_threads` en lugar de `max_insert_threads`), lo que evita el agotamiento de slots de CC y el aumento descontrolado del número de threads en clusters con alto throughput de `INSERT`. [#102961](https://github.com/ClickHouse/ClickHouse/pull/102961) ([Sema Checherinda](https://github.com/CheSema)).
  * Se reintrodujo `ArrowMemoryPool` para poder lanzar `MEMORY_LIMIT_EXCEEDED` y evitar el OOM del kernel. [#102999](https://github.com/ClickHouse/ClickHouse/pull/102999) ([Azat Khuzhin](https://github.com/azat)).
  * Se corrigió un 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 corrigió el bloqueo indefinido de `waitForPause` cuando se llama a `disableFailPoint` sin que haya ningún thread pausado en el failpoint. [#103119](https://github.com/ClickHouse/ClickHouse/pull/103119) ([Shaohua Wang](https://github.com/tiandiwonder)).
</Accordion>
