Saltar al contenido principal

Cambio incompatible con versiones anteriores

  • La función geoToH3() ahora acepta la entrada en el orden (lat, lon,res) (que es el orden estándar de las funciones geométricas). Los usuarios que quieran conservar el orden heredado de resultados (lon, lat,res) pueden establecer la configuración geotoh3_lon_lat_input_order = true. #78852 (Pratima Patel).
  • Los índices de tipo full_text se renombraron a gin. Esto sigue la terminología, más familiar, de PostgreSQL y otras bases de datos. Los índices existentes de tipo full_text siguen pudiéndose cargar, pero lanzarán una excepción (sugiriendo usar índices gin en su lugar) cuando se intente utilizarlos en búsquedas. #79024 (Robert Schulze).
  • Se añadió la configuración de caché del sistema de archivos allow_dynamic_cache_resize, con valor predeterminado false, para permitir el redimensionamiento dinámico de la caché del sistema de archivos. Motivo: en ciertos entornos (ClickHouse Cloud), todos los eventos de scaling se producen mediante el reinicio del proceso, y queremos que esta feature esté explícitamente deshabilitada para tener más control sobre el comportamiento, además de servir como medida de seguridad. Este PR está marcado como incompatible con versiones anteriores porque, en versiones antiguas, el redimensionamiento dinámico de la caché funcionaba de forma predeterminada sin ninguna configuración especial. #79148 (Kseniia Sumarokova).
  • Se eliminó la compatibilidad con los tipos de índice heredados annoy y usearch. Ambos han sido stubs durante mucho tiempo; es decir, cualquier intento de usar estos índices heredados devolvía un error de todos modos. Si todavía tiene índices annoy y usearch, elimínelos. #79802 (Robert Schulze). #* Eliminar la configuración del servidor format_alter_commands_with_parentheses. La configuración se introdujo y estaba deshabilitada de forma predeterminada en la versión 24.2. Se habilitó de forma predeterminada en la versión 25.2. Como no hay versiones LTS que no admitan el nuevo formato, podemos eliminar la configuración. #79970 (János Benjamin Antal). #* Menor: forzar que las configuraciones del servidor backup_threads y restore_threads no sean cero. #80224 (Raúl Marín).
  • Se corrige bitNot() para que String devuelva una cadena terminada en cero. #80791 (Azat Khuzhin).

Nueva funcionalidad

  • Añade una nueva opción a MergeTree SETTINGS que especifica un códec de compresión predeterminado en caso de que la consulta CREATE no defina explícitamente uno para las columnas correspondientes. Esto cierra #42005. #66394 (gvoelfin).
  • Continuación de https://github.com/ClickHouse/ClickHouse/pull/71943. Este PR implementa los tipos de datos Time/Time64. Implementa nuevos tipos de datos: Time (HHH:MM:SS) y Time64 (HHH:MM:SS.<fractional>), algunas funciones básicas de conversión de tipo y funciones para interactuar con otros tipos de datos. Además, se cambió el nombre de la función existente toTime a toTimeWithFixedDate porque la función toTime es necesaria para la función de conversión de tipo. #75735 (Yarik Briukhovetskyi).
  • Se admiten subconsultas correlacionadas como argumento de la expresión EXISTS en la cláusula WHERE. Cierra #72459. #76078 (Dmitry Novik).
  • Permitir la escritura en los motores de tabla Merge. #77484 (Anton Ivashkin).
  • INSERT SELECT distribuido para tablas MergeTree replicadas ahora aprovecha eficientemente las réplicas paralelas para paralelizar los INSERT, seleccionando datos distintos en diferentes nodos e insertándolos de forma independiente. #78041 (Igor Nikonov).
  • Se añaden las funciones mapContainsValuesLike/mapContainsValues/mapExtractValuesLike para filtrar por valores de map y su compatibilidad con índices basados en bloomfilter. #78171 (UnamedRus).
  • Se añade la tabla system.iceberg_history. #78244 (Smita Kulkarni).
  • Se añadió la programación de slots de consulta para workloads; consulte https://clickhouse.com/docs/operations/workload-scheduling#query&#95;scheduling para obtener más detalles. #78415 (Sergei Trifonov).
  • Se añaden las funciones getServerSetting y getMergeTreeSetting. Cierra https://github.com/clickhouse/clickhouse/issues/78318. #78439 (NamNguyenHoai).
  • Se admiten valores no permitidos en las restricciones de configuración. #78499 (Bharat Nallan).
  • Se añade la nueva opción de configuración iceberg_enable_version_hint para aprovechar el archivo version-hint.text. #78594 (Arnaud Briche).
  • Permite truncar tablas específicas de una base de datos, filtradas con la palabra clave LIKE. #78597 (Yarik Briukhovetskyi).
  • clickhouse-local (y su alias abreviado, ch) ahora usan un FROM table implícito cuando hay datos de entrada para procesar. Esto resuelve #65023. También se habilitó la inferencia de formato en clickhouse-local si no se especifica --input-format y procesa un archivo regular. #79085 (Alexey Milovidov).
  • Se añaden las funciones icebergHash y icebergBucketTransform. Se admite la poda de archivos de datos en tablas Iceberg particionadas con bucket transfom. #79262 (Daniil Ivanik).
  • Se añade compatibilidad con Coalescing Merge Tree. Esto cierra #78869. #79344 (Konstantin Vedernikov).
  • Añade las funciones stringBytesUniq y stringBytesEntropy para identificar datos posiblemente aleatorios o cifrados. #79350 (Sachin Kumar Singh).
  • Se admite la columna virtual _part_starting_offset en las tablas de la familia MergeTree. Esta columna representa el recuento acumulado de filas de todas las partes anteriores, calculado en tiempo de consulta en función de la lista actual de partes. Los valores acumulados se conservan durante toda la ejecución de la consulta y siguen siendo válidos incluso después de la exclusión de partes. Se ha refactorizado la lógica interna relacionada para admitir este comportamiento. #79417 (Amos Bird).
  • Se añadió una configuración enable_shared_storage_snapshot_in_query para permitir usar la misma instantánea de almacenamiento en todas las subconsultas de una sola consulta. Esto garantiza lecturas coherentes de la misma tabla, incluso cuando se hace referencia a ella varias veces dentro de una consulta. #79471 (Amos Bird).
  • Se admite escribir columnas JSON de CH en Parquet y leer columnas JSON de Parquet directamente como columnas JSON de CH. #79649 (Nihal Z. Miaji).
  • Se incluye chdig, una interfaz TUI para ClickHouse (similar a top), como parte de ClickHouse. #79666 (Azat Khuzhin).
  • Se añade compatibilidad con MultiPolygon para pointInPolygon. #79773 (Nihal Z. Miaji).
  • Soporte para Geo Parquet. Esto cierra #75317. #79777 (Konstantin Vedernikov).
  • Se añade compatibilidad para consultar tablas de Delta Lake montadas en el sistema de archivos local mediante la table function deltaLakeLocal. #79781 (roykim98).
  • Se añadió la funcionalidad de codificación/decodificación en base32. #79809 (Joanna Hulboj).
  • La búsqueda vectorial de ClickHouse ahora admite tanto el prefiltrado como el posfiltrado, y ofrece opciones de configuración relacionadas para un control más preciso. (incidencia #78161). #79854 (Shankar Iyer).
  • Se admite el uso de funciones para leer el formato WKB. Esto cierra parcialmente #43941. #80139 (Konstantin Vedernikov).
  • Se añade una nueva configuración cast_string_to_date_time_mode, que permite elegir el modo de análisis de DateTime durante el CAST desde String. #80210 (Pavel Kruglov).
  • Se añadieron funciones de codificación y decodificación de Bech32 y Bech32m (issue #40381). #80239 (George Larionov).
  • Se añade compatibilidad con la configuración disk para los motores de BD Atomic y Ordinary, lo que permite especificar el disco donde se almacenan los archivos de metadatos de las tablas. #80546 (Tuan Pham Anh).
  • Funciones auxiliares para desempaquetar y comparar partes de MergeTree. #80573 (Mikhail Artemenko).
  • Funciones auxiliares timeSeries* para acelerar algunos casos de uso al trabajar con series temporales: - remuestrear los datos sobre una rejilla temporal con la marca de tiempo inicial, la marca de tiempo final y el paso especificados - calcular delta, rate, idelta e irate, similares a PromQL. #80590 (Alexander Gololobov).
  • Permite filtrar las partes seleccionadas para las consultas por el disco en el que residen. #80650 (tanner-bruce).
  • Añadir una página de inicio con la lista de herramientas web integradas. Se abrirá cuando la solicite un agente de usuario similar a un navegador. #81129 (Alexey Milovidov).
  • Permite filtrar los valores NULL en arrayFirst, arrayFirstIndex, arrayLast y arrayLastIndex. Corrige #81113. #81197 (Lennard Eijsackers).

Característica experimental

  • Catálogo de metastore de Hive para el datalake de Iceberg. #77677 (Konstantin Vedernikov).
  • Se admiten parámetros explícitos mediante pares clave-valor. Actualmente, los parámetros admitidos son tokenizer, que es obligatorio, y max_rows_per_postings_list y ngram_size, que son opcionales. #80262 (Elmi Ahmadov).
  • Los índices experimentales de tipo gin pasaron a llamarse text. Los índices existentes de tipo gin siguen pudiendo cargarse, pero arrojarán una excepción (sugiriendo índices text en su lugar) al intentar usarlos en búsquedas. #80855 (Robert Schulze).

Mejora del rendimiento

  • Acelera los índices secundarios al evaluar sus expresiones en varios gránulos a la vez. #64109 (Alexey Milovidov).
  • Se introdujo un umbral (controlado por la configuración parallel_hash_join_threshold) para recurrir al algoritmo hash cuando el tamaño de la tabla de la derecha está por debajo de ese umbral. #76185 (Nikita Taranov).
  • La implementación actual de Pipe::resize crea un único nodo Resize o StrictResize insertándolo en la topología de la canalización, que luego actúa como un concentrador central que conecta todos los flujos de entrada (nodos aguas arriba) con un conjunto unificado de flujos de salida (nodos aguas abajo). Este diseño provoca contención en torno al ExecutingGraph::Node::status_mutex durante la ejecución del grafo de la canalización, especialmente en entornos con un gran número de núcleos. Cuando las canalizaciones escalan a decenas o cientos de flujos, esta contención da lugar a:. #77562 (Zhiguo Zhou).
  • Mejora el rendimiento de S3Queue/AzureQueue al permitir ejecutar operaciones INSERT de datos en paralelo (se puede habilitar con la configuración de queue parallel_inserts=true). Anteriormente, S3Queue/AzureQueue solo podían realizar en paralelo la primera parte del pipeline (descarga, análisis); INSERT se ejecutaba en un solo hilo. Y las operaciones INSERT casi siempre son el cuello de botella. Ahora escalará casi linealmente con processing_threads_num. #77671 (Azat Khuzhin).
  • Se cambia el formato de las partes compactas para guardar marcas de cada subflujo y poder leer subcolumnas individuales. El formato compacto anterior sigue siendo compatible para lecturas y puede habilitarse para escrituras mediante la configuración de MergeTree write_marks_for_substreams_in_compact_parts. Está deshabilitado de forma predeterminada para que las actualizaciones sean más seguras, ya que modifica el almacenamiento de las partes compactas. Se habilitará de forma predeterminada en una de las próximas versiones. #77940 (Pavel Kruglov).
  • Se introdujo la nueva configuraciónuse_skip_indexes_in_final_exact_mode. Si una consulta sobre una tabla ReplacingMergeTree incluye la cláusula FINAL, leer únicamente los rangos de la tabla basándose en índices de omisión puede producir resultados incorrectos. Esta configuración garantiza que se devuelvan resultados correctos al analizar partes más recientes que se solapan con los rangos de clave primaria devueltos por el índice de omisión. Establézcala en 0 para desactivarla y en 1 para activarla. #78350 (Shankar Iyer).
  • Ahora usamos el número de réplicas para determinar el tamaño de la tarea de lectura con las réplicas paralelas habilitadas. Esto proporciona una mejor distribución del trabajo entre réplicas cuando la cantidad de datos que se va a leer no es muy grande. #78695 (Nikita Taranov).
  • Permite fusionar en paralelo los estados de uniqExact durante la etapa final de la agregación distribuida. #78703 (Nikita Taranov).
  • Corrige una posible degradación del rendimiento en la fusión paralela de estados uniqExact para la agregación por clave. #78724 (Nikita Taranov). #* Sustituye las consultas DELETE FROM ... WHERE 1 por TRUNCATE. (Revertido). #78739 (Konstantin Vedernikov).
  • Reduce la cantidad de llamadas a la API List Blobs de Azure Storage. #78860 (Julia Kartseva).
  • Incorporar, si es posible, las condiciones de igualdad del paso de filtro del plan de consulta a la condición de JOIN para poder usarlas como claves de la tabla hash. #78877 (Dmitry Novik).
  • Mejora el rendimiento del análisis de rutas de Hive usando extractKeyValuePairs en lugar de expresiones regulares. #79067 (Arthur Passos).
  • Mejora el rendimiento del INSERT SELECT distribuido con réplicas en paralelo. #79441 (Azat Khuzhin).
  • Permite mover condiciones con subcolumnas a PREWHERE. #79489 (Pavel Kruglov).
  • Mejoras de rendimiento en todos los tipos de bloom filter. #79800 (Delyan Kratunov).
  • Evita que LogSeriesLimiter realice tareas de limpieza en cada instanciación, lo que evita la contención de bloqueos y las regresiones de rendimiento en escenarios de alta concurrencia. #79864 (filimonov).
  • Se habilita compile_expressions (compilador JIT para fragmentos de expresiones ordinarias) de forma predeterminada. Esto cierra #51264, #56386 y #66486. #79907 (Alexey Milovidov).
  • Acelera las consultas con la optimización de conteo trivial. #79945 (Raúl Marín).
  • Se añadió una ruta optimizada en UniqExactSet::merge cuando uno de los conjuntos está vacío. Además, ahora, si el conjunto LHS es de dos niveles y el RHS es de un solo nivel, no se realizará la conversión del RHS a dos niveles. #79971 (Nikita Taranov).
  • Añada __attribute__((always_inline)) a convertDecimalsImpl. #79999 (Konstantin Bogdanov).
  • Se establece input_format_parquet_bloom_filter_push_down en true de forma predeterminada. Además, se corrige un error en el historial de cambios de la configuración. #80058 (Alexey Milovidov). #* El logging pasa a ser asíncrono de forma predeterminada. Puede desactivarse estableciendo <async>false</async> en <logger>. #80125 (Raúl Marín).
  • Mejora la eficiencia en la reutilización de memoria y reduce los fallos de página al usar las tablas hash de dos niveles. #80245 (Jiebin Sun).
  • Evita actualizaciones innecesarias y reduce la contención por bloqueos en QueryConditionCache. #80247 (Jiebin Sun).
  • Pequeña optimización de concatenateBlocks, que puede ser beneficiosa para el Hash join paralelo. #80328 (李扬).
  • Al seleccionar rangos de marcas a partir del rango de la clave primaria, no se puede usar la búsqueda binaria si la clave primaria está envuelta en funciones. Este PR corrige esta limitación: la búsqueda binaria aún puede aplicarse cuando la clave primaria está envuelta en una cadena de funciones siempre monótonas, o cuando la RPN contiene un elemento que siempre es verdadero. Este PR cierra #45536. #80597 (zoomxi).
  • Mejora la velocidad de apagado del motor Kafka (elimina un retraso adicional de 3 segundos cuando hay varias tablas Kafka). #80796 (Azat Khuzhin).
  • Reduce el uso de memoria de las async inserts y mejora el rendimiento de las consultas INSERT. #80972 (Raúl Marín).
  • No generar perfiles de los procesadores si la tabla de registros está deshabilitada. #81256 (Raúl Marín).
  • Se acelera toFixedString cuando el valor de entrada es exactamente el solicitado. #81257 (Raúl Marín).
  • No procesar los valores de cuota si el usuario no tiene límites. #81549 (Raúl Marín).
  • Hacer que ProcfsMetricsProvider sea thread_local para mantener abiertos los archivos entre tareas. #81576 (Raúl Marín).
  • Se corrigió una regresión de rendimiento en el seguimiento de la memoria. #81694 (Michael Kolupaev).

Mejora

#* clickhouse-local conservará sus bases de datos después del reinicio si especifica el argumento de la línea de comandos --path. Esto cierra #50647. Esto cierra #49947. #71722 (Alexey Milovidov).
  • EXPLAIN SYNTAX ahora utiliza un nuevo analizador. Devuelve un árbol de sintaxis abstracta (AST) construido a partir del árbol de consulta. Se añadió la opción query_tree_passes para controlar el número de pasadas que se ejecutarán antes de convertir el árbol de consulta en el AST. #74536 (Vladimir Cherkasov). #* Se usa de forma predeterminada la política de caché SLRU en la caché del sistema de archivos. #75072 (Kseniia Sumarokova).
  • Se refactorizó la lógica de inserción en vistas. #77309 (Sema Checherinda).
  • Las funciones de tabla de clúster para almacenamiento de objetos (p. ej., s3Cluster) ahora asignarán los archivos a las réplicas para su lectura según un hash consistente, a fin de mejorar la localidad de la caché. #77326 (Andrej Hoos).
  • Actualiza las credenciales de S3 tras el error AuthenticationRequired. #77353 (Vitaly Baranov).
  • Se incorporó la configuración del proxy en algunos búferes HTTP con ayuda de constructores. #77693 (Arthur Passos).
  • Se añadieron métricas de diccionarios a system.asynchronous_metrics - DictionaryMaxUpdateDelay - El retraso máximo (en segundos) en la actualización del diccionario. - DictionaryTotalFailedUpdates - Número de errores desde la última carga correcta en todos los diccionarios. #78175 (Vlad).
  • Añadir las funciones divideOrNull,moduloOrNull, intDivOrNull,positiveModuloOrNull para que devuelvan NULL cuando el argumento de la derecha sea cero. #78276 (kevinyhzou).
  • Amplía la función isIPAddressInRange para admitir los tipos de datos String, IPv4, IPv6, Nullable(String), Nullable(IPv4) y Nullable(IPv6). #78364 (YjyJeff).
  • Cambiar dinámicamente la configuración del pool de conexiones del motor PostgreSQL. #78414 (Samay Sharma).
  • Permite especificar _part_offset en una proyección normal. Este es el primer paso para crear un índice de proyección. Se puede usar con #58224 y puede contribuir a mejorar https://github.com/ClickHouse/ClickHouse/pull/63207. #78429 (Amos Bird).
  • Mejora la optimización de la clave de segmentación en las consultas distribuidas. #78452 (fhw12345).
  • Añade nuevas columnas (create_query y source) a system.named_collections. Cierra #78179. #78582 (MikhailBurdukov).
  • Se añadió el campo condition a la tabla del sistema system.query_condition_cache. Almacena la condición en texto claro cuyo hash se usa como clave en la caché de condiciones de consulta. #78671 (Robert Schulze).
  • Se implementa una lógica similar al reequilibrio de Kafka para StorageKafka2 usando ClickHouse Keeper. Para cada réplica, admitimos dos tipos de bloqueos de partición: bloqueos permanentes y bloqueos temporales. La réplica intenta mantener los bloqueos permanentes el mayor tiempo posible; en un momento dado, no hay más de all_topic_partitions / active_replicas_count (donde all_topic_partitions es el número total de particiones y active_replicas_count es el número de réplicas activas) bloqueos permanentes en la réplica; si hay más, la réplica libera algunas particiones. Algunas particiones quedan bloqueadas temporalmente por la réplica. El número máximo de bloqueos temporales en una réplica cambia dinámicamente para dar a otras réplicas la oportunidad de tomar algunas particiones como bloqueos permanentes. Al actualizar los bloqueos temporales, la réplica los libera todos e intenta tomar otros de nuevo. #78726 (Daria Fomina).
  • Añade opciones de configuración de tabla para SASL y credenciales al motor de tabla Kafka. Esto permite configurar directamente en la sentencia CREATE TABLE la autenticación basada en SASL para Kafka y sistemas compatibles con Kafka, en lugar de tener que usar archivos de configuración o colecciones con nombre. #78810 (Christoph Wurm).
  • Añade una advertencia sobre las bases de datos que podrían haberse creado para guardar tablas dañadas. #78841 (János Benjamin Antal).
  • Ahora también se pueden crear índices de similitud vectorial sobre columnas BFloat16. #78850 (Robert Schulze).
  • Se admiten marcas temporales Unix con parte fraccionaria en el análisis de DateTime64 con mejor esfuerzo. #78908 (Pavel Kruglov).
  • En la implementación de delta-kernel de DeltaLake para almacenamiento, se corrige columnMappingMode.name y se añaden pruebas para la evolución del esquema. #78921 (Kseniia Sumarokova).
  • Mejora de la inserción en una columna Variant en el formato Values mediante una mejor conversión de valores. #78923 (Pavel Kruglov).
  • Se añade la columna virtual _time al motor S3Queue. #78926 (Anton Ivashkin).
  • La función tokens se amplió para aceptar un argumento adicional “tokenizer”, además de otros argumentos específicos del tokenizer. #79001 (Elmi Ahmadov).
  • La sentencia SHOW CLUSTER ahora expande las macros (si las hay) de su argumento. #79006 (arf42).
  • Las funciones hash ahora admiten NULL dentro de arrays, tuples y maps. (incidencias #48365 y #48623). #79008 (Michael Kolupaev).
  • Compatibilidad con la actualización en tablas MergeTree de solo lectura. #79033 (Alexey Milovidov). #* Se actualiza cctz a 2025a. #79043 (Raúl Marín).
  • Hacer que la configuración que controla el cierre de la conexión cuando la CPU está sobrecargada pueda recargarse en caliente. #79052 (Alexey Katsman).
  • Es mejor en términos de usabilidad. #79066 (Alexey Milovidov).
  • Se habilita de forma predeterminada la caché de condiciones de consulta. #79080 (Alexey Milovidov). #* Permite deshacer el cierre de pestañas en la Web UI. Con esto se cierra #71284. #79084 (Alexey Milovidov).
  • Eliminar la configuración durante recoverLostReplica, tal como se hizo en https://github.com/ClickHouse/ClickHouse/pull/78637. #79113 (Nikita Mikhaylov).
  • Añade los ProfileEvents ParquetReadRowGroups y ParquetPrunedRowGroups para perfilar la poda del índice Parquet. #79180 (flynn).
  • Agregar el prefijo del contenedor a las rutas de datos mostradas en system.tables para discos simples en Azure Blob Storage, de modo que la información sea coherente con S3 y GCP. #79241 (Julia Kartseva).
  • Soporte para modificar una base de datos en clúster. #79242 (Tuan Pham Anh).
  • Omitir explícitamente las ejecuciones perdidas de recopilación de estadísticas para QueryMetricLog; de lo contrario, el registro tardará mucho en alcanzar la hora actual. #79257 (Mikhail Artemenko).
  • Se añadió la posibilidad de aplicar eliminaciones ligeras sobre la marcha (con los ajustes lightweight_deletes_sync = 0, apply_mutations_on_fly = 1. #79281 (Anton Popov).
  • Se optimizaron las mutaciones ALTER ... DELETE para las partes en las que deben eliminarse todas las filas. Ahora, en esos casos se crea una parte vacía en lugar de la parte original, sin ejecutar ninguna mutación. #79307 (Anton Popov).
  • Pequeñas optimizaciones en CHColumnToArrowColumn. #79308 (Bharat Nallan).
  • La configuración allow_archive_path_syntax se marcó como experimental por error. Se añadió una prueba para evitar que las configuraciones experimentales estén habilitadas de forma predeterminada. #79320 (Alexey Milovidov).
  • Ahora es posible ajustar la configuración de la caché de páginas por consulta. Esto es necesario para experimentar más rápido y para poder ajustar con precisión las consultas de alto rendimiento y baja latencia. #79337 (Alexey Milovidov).
  • No mostrar sugerencias numéricas en los formatos Pretty para números que se parezcan a la mayoría de los hashes de 64 bits. Esto cierra #79334. #79338 (Alexey Milovidov).
  • Si los datos en formato Pretty se muestran en la terminal y un bloque posterior tiene los mismos anchos de columna, puede continuar a partir del bloque anterior, uniéndose a él al mover el cursor hacia arriba. Esto cierra #79333. La función se controla mediante la nueva configuración output_format_pretty_glue_chunks. #79339 (Alexey Milovidov).
  • Los colores de los gráficos en los dashboards avanzados se calcularán a partir del hash de la consulta correspondiente. Esto facilita recordar y localizar un gráfico al desplazarse por el dashboard. #79341 (Alexey Milovidov).
  • Se añade la métrica asíncrona FilesystemCacheCapacity: la capacidad total del sistema de archivos virtual cache. Esto es útil para la monitorización global de la infraestructura. #79348 (Alexey Milovidov).
  • Optimizar el acceso a system.parts (leer el tamaño de columnas/índices solo cuando se solicite). #79352 (Azat Khuzhin).
  • Se seleccionan los campos importantes para la consulta 'SHOW CLUSTER <name>' en lugar de todos los campos. #79368 (Tuan Pham Anh).
  • Permite especificar opciones de almacenamiento para DatabaseCatalog. #79407 (Kseniia Sumarokova).
  • Se añadió compatibilidad con almacenamiento local en delta kernel. #79416 (Kseniia Sumarokova).
  • Se añade una configuración a nivel de consulta para habilitar delta-kernel-rs: allow_experimental_delta_kernel_rs. #79418 (Kseniia Sumarokova).
  • Corrige un posible bucle infinito al listar blobs en el almacenamiento de blobs de Azure/S3. #79425 (Alexander Gololobov).
  • Ahora, ClickHouse también acepta parámetros de consulta como param-<name> (guion) junto con param_<name> (guion bajo). Con esto se resuelve #63093. #79429 (Engel Danila). #* Se añade el ajuste de la caché del sistema de archivos max_size_ratio_to_total_space. #79460 (Kseniia Sumarokova).
  • Mensaje de advertencia detallado sobre la reducción de ancho de banda al copiar datos de un S3 local a un S3 remoto con la suma de comprobación habilitada. #79464 (VicoWu).
  • En clickhouse-benchmark, se reconfiguró la opción reconnect para que acepte 0, 1 o N como valores de reconexión, según corresponda. #79465 (Sachin Kumar Singh).
  • Se agrega la configuración input_format_max_block_size_bytes para limitar, en bytes, los bloques creados en los formatos de entrada. Esto puede ayudar a evitar un uso elevado de memoria durante la importación de datos cuando las filas contienen valores grandes. #79495 (Pavel Kruglov).
  • Mejora la velocidad y el uso de memoria de sparseGrams. #79517 (Konstantin Vedernikov).
  • Evita la copia adicional del bloque al insertarlo en una parte compacta cuando sea posible. #79536 (Pavel Kruglov).
  • Se habilita de forma predeterminada la implementación delta-kernel del almacenamiento DeltaLake. #79541 (Kseniia Sumarokova).
  • Si leer desde una URL implica varias redirecciones, la configuración enable_url_encoding se aplica correctamente en toda la cadena de redirecciones. #79563 (Shankar Iyer).
  • Permitir ALTER TABLE ... MOVE|REPLACE PARTITION en tablas ubicadas en distintos discos plain_rewritable. #79566 (Julia Kartseva).
  • Se admiten subconsultas escalares correlacionadas en la cláusula WHERE. Cierra #6697. #79600 (Dmitry Novik).
  • Anteriormente, cuando input_format_parquet_max_block_size = 0, ClickHouse se bloqueaba. Ahora este comportamiento se ha corregido. Esto cierra #79394. #79601 (abashkeev).
  • Se añade la configuración throw_on_error para startup_scripts: cuando throw_on_error es true, el servidor no se iniciará a menos que todas las consultas finalicen correctamente. De forma predeterminada, throw_on_error es false, lo que mantiene el comportamiento anterior. #79732 (Aleksandr Musorin).
  • El índice de similitud vectorial ahora también se usa si el vector de referencia es de tipo Array(BFloat16). #79745 (Shankar Iyer).
  • Añade last_error_message, last_error_trace y query_id a la tabla system.error_log. Ticket relacionado #75816. #79836 (Andrei Tinikov). #* Habilita el envío de informes de fallos de forma predeterminada. Esto puede desactivarse en el archivo de configuración del servidor. #79838 (Alexey Milovidov).
  • La tabla del sistema system.functions ahora muestra en qué versión de ClickHouse se introdujo por primera vez cada función. #79839 (Robert Schulze).
  • Se añadió la configuración access_control_improvements.enable_user_name_access_type. Esta configuración permite habilitar o deshabilitar privilegios precisos para usuarios/roles, introducida en https://github.com/ClickHouse/ClickHouse/pull/72246. Puede que quiera desactivar esta configuración si tiene un clúster con réplicas anteriores a la versión 25.1. #79842 (pufit).
  • La implementación adecuada del método ASTSelectWithUnionQuery::clone() ahora también tiene en cuenta el campo is_normalized. Esto podría ayudar con #77569. #79909 (Nikita Mikhaylov).
  • Se admiten subconsultas correlacionadas en la lista de proyección en casos sencillos. #79925 (Dmitry Novik).
  • Corrige el formato inconsistente de ciertas consultas con el operador EXCEPT. Si el lado izquierdo del operador EXCEPT termina en *, la consulta formateada pierde los paréntesis y luego se analiza como un * con el modificador EXCEPT. Estas consultas las detecta el fuzzer y es poco probable que aparezcan en la práctica. Esto cierra #79950. #79952 (Alexey Milovidov).
  • Se permite añadir http_response_headers en http_handlers de cualquier tipo. #79975 (Andrey Zvonov).
  • Pequeña mejora en el análisis del tipo JSON al usar una caché para el orden de deserialización de variantes. #79984 (Pavel Kruglov).
  • Permitir mover el predicado GLOBAL [NOT] IN a la cláusula PREWHERE cuando corresponda. #79996 (Eduard Karacharov).
  • Añade la configuración s3_slow_all_threads_after_network_error. #80035 (Vitaly Baranov).
  • El nivel de logging de las partes seleccionadas para fusionar era incorrecto (Information). Cierra #80061. #80062 (Alexey Milovidov).
  • La función reverse es compatible con el tipo de datos Tuple. Cierra #80053. #80083 (flynn).
  • El valor predeterminado de la configuración enble_url_encoding ahora es False. #80088 (Shankar Iyer).
  • Este pequeño parche resuelve #75817: permite obtener los datos de auxiliary_zookeepers desde la tabla system.zookeeper. #80146 (Nikolay Govorov).
  • La búsqueda vectorial con el índice de similitud vectorial ahora es beta (antes era experimental). #80164 (Robert Schulze).
  • Se añaden métricas asíncronas sobre los sockets TCP del servidor. Esto mejora la observabilidad. Cierra #80187. #80188 (Alexey Milovidov).
  • La función tokens ahora admite string como tokenizador. #80195 (Robert Schulze).
  • Réplicas paralelas: evita esperar a réplicas lentas sin usar si todas las tareas de lectura ya se han asignado a otras réplicas. #80199 (Igor Nikonov).
  • Se admite anylast_respect_nulls y any_respect_nulls en simpleAggregateFunction. #80219 (Diskein).
  • Elimina la llamada innecesaria a adjustCreateQueryForBackup() para las bases de datos replicadas. #80282 (Vitaly Baranov). #* Permite opciones adicionales (que van después de --, como -- --config.value='abc') en clickhouse-local sin el signo igual. Cierra #80292. #80293 (Alexey Milovidov).
  • Resaltar los metacaracteres en las consultas SHOW ... LIKE. Esto cierra #80275. #80297 (Alexey Milovidov). #* Hacer persistente la UDF SQL en clickhouse-local. La función creada previamente se cargará al iniciar. Esto cierra #80085. #80300 (Alexey Milovidov).
  • Se admite la comparación entre Time/Time64. #80327 (Yarik Briukhovetskyi).
  • Se corrigió la descripción en el plan EXPLAIN de un paso DISTINCT preliminar. #80330 (UnamedRus).
  • Permitir el uso de named collections en ODBC/JDBC. #80334 (Andrey Zvonov).
  • Se habilita la compatibilidad con el filtrado mediante múltiples proyecciones, lo que permite usar más de una proyección para el filtrado a nivel de parte. Esto soluciona #55525. Este es el segundo paso para implementar el índice de proyección, después de #78429. #80343 (Amos Bird).
  • Métricas del número de discos de solo lectura y averiados. Se registra un indicador cuando se inicia DiskLocalCheckThread. #80391 (VicoWu).
  • Se añadió compatibilidad para el almacenamiento s3_plain_rewritable con proyecciones. En versiones anteriores, los objetos de metadatos en S3 que hacían referencia a proyecciones no se actualizaban cuando se movían. Cierra #70258. #80393 (Sav).
  • Las réplicas paralelas usan un tiempo de espera de conexión independiente; consulta la configuración parallel_replicas_connect_timeout_ms. Antes, las configuraciones connect_timeout_with_failover_ms/connect_timeout_with_failover_secure_ms se usaban como valores de tiempo de espera de conexión para las consultas de réplicas paralelas (1 segundo de forma predeterminada). #80421 (Igor Nikonov).
  • El comando SYSTEM UNFREEZE no intentará buscar partes en discos de solo lectura ni de escritura única. Esto cierra #80430. #80432 (Alexey Milovidov).
  • Se cambió el nivel de registro de un mensaje sobre partes fusionadas de INFO a TRACE. #80476 (Hans Krutzer).
  • Se implementa la serialización aplanada para Dynamic y JSON en formato Native, que permite serializar y deserializar datos Dynamic y JSON sin estructuras especiales como shared variant para Dynamic y shared data para JSON. Esta serialización se puede habilitar estableciendo output_format_native_use_flattened_dynamic_and_json_serialization. Esta serialización se puede usar para facilitar la compatibilidad de Dynamic y JSON con el protocolo TCP en clientes en distintos lenguajes. #80499 (Pavel Kruglov).
  • Cambia el comportamiento predeterminado de la poda de particiones para una tabla Iceberg. #80583 (Melvyn Peignon).
  • Añade dos nuevos ProfileEvents para la observabilidad del algoritmo de búsqueda en índices: IndexBinarySearchAlgorithm y IndexGenericExclusionSearchAlgorithm. #80679 (Pablo Marcos).
  • No registrar advertencias en los logs sobre MADV_POPULATE_WRITE no compatible en kernels antiguos (para evitar ensuciar los logs). #80704 (Robert Schulze).
  • Se añadió compatibilidad para Date32 y DateTime64 en TTL. #80710 (Andrey Zvonov).
  • Ajuste de los valores de compatibilidad de max_merge_delayed_streams_for_parallel_write. #80760 (Azat Khuzhin).
  • Se corrige un fallo: si se lanza una excepción al intentar eliminar un archivo temporal (se usan para volcar datos temporales al disco) en el destructor, el programa puede terminar. #80776 (Alexey Milovidov).
  • Se añade el modificador IF EXISTS a SYSTEM SYNC REPLICA. #80810 (Raúl Marín).
  • Se amplía el mensaje de excepción sobre “Having zero bytes, but read range is not finished…” y se añade la columna finished_download_time a system.filesystem_cache’. #80849 (Kseniia Sumarokova).
  • Anteriormente, el almacenamiento packed no era compatible con el índice de texto completo, porque el ID del segmento se actualizaba sobre la marcha al leer y escribir el archivo (.gin_sid) en disco. En el caso del almacenamiento packed, no se admite leer un valor de un archivo sin confirmar, y esto provocaba un problema. #80852 (Elmi Ahmadov).
  • Añade una sección sobre el algoritmo de búsqueda a la salida de EXPLAIN cuando se usa con indexes = 1. Muestra “binary search” o “generic exclusion search”. #80881 (Pablo Marcos).
  • A principios de 2024, prefer_column_name_to_alias estaba fijado de forma rígida a True para el handler de MySQL porque el nuevo analizador no estaba habilitado de forma predeterminada. Ahora, esa restricción se ha eliminado. #80916 (Yarik Briukhovetskyi).
  • Ahora system.iceberg_history muestra el historial de las bases de datos de catálogo, como glue o iceberg rest. Además, se renombraron las columnas table_name y database_name a table y database en system.iceberg_history para mantener la coherencia. #80975 (alesapin).
  • Se permite el modo de solo lectura para la función de tabla merge, por lo que no se requiere el privilegio CREATE TEMPORARY TABLE para usarla. #80981 (Miсhael Stetsyuk).
  • Mejor introspección de las cachés en memoria (se expone información sobre las cachés en system.metrics en lugar de en system.asynchronouse_metrics, que está incompleto). Se añade el tamaño de las cachés en memoria (en bytes) a dashboard.html. VectorSimilarityIndexCacheSize/IcebergMetadataFilesCacheSize se ha renombrado a VectorSimilarityIndexCacheBytes/IcebergMetadataFilesCacheBytes. #81023 (Azat Khuzhin).
  • Se ignoran las bases de datos con motores que no pueden contener tablas RocksDB al leer desde system.rocksdb. #81083 (Pervakov Grigorii).
  • Se permiten filesystem_caches y named_collections en el archivo de configuración de clickhouse-local. #81105 (Alexey Milovidov).
  • Se corrige el resaltado de PARTITION BY en las consultas INSERT. En versiones anteriores, PARTITION BY no se resaltaba como palabra clave. #81106 (Alexey Milovidov). #* Dos pequeñas mejoras en la Web UI: gestionar correctamente las consultas sin salida, como CREATE e INSERT (hasta hace poco, estas consultas mostraban un indicador de carga infinito); - al hacer doble clic en una tabla, desplazarse a la parte superior. #81131 (Alexey Milovidov). #* Se actualiza c-ares a v1.34.5. #81159 (Konstantin Bogdanov). #* Se actualiza curl a 8.14 para corregir CVE-2025-5025 y CVE-2025-4947. #81171 (larryluogit). #* Se actualiza libarchive a 3.7.9 para corregir: CVE-2024-20696 CVE-2025-25724 CVE-2024-48958 CVE-2024-57970 CVE-2025-1632 CVE-2024-48957 CVE-2024-48615. #81174 (larryluogit). #* Se actualiza libxml2 a 2.14.3. #81187 (larryluogit).
  • MemoryResidentWithoutPageCache proporciona la cantidad de memoria física utilizada por el proceso del servidor, excluida la caché de páginas en espacio de usuario, en bytes. Esto ofrece una visión más precisa del uso real de memoria cuando se utiliza la caché de páginas en espacio de usuario. Cuando la caché de páginas en espacio de usuario está deshabilitada, este valor es igual a MemoryResident. #81233 (Jayme Bird).
  • Marcar como ya registradas las excepciones registradas manualmente en el cliente, el servidor local, el cliente de Keeper y la aplicación disks, para que no se registren dos veces. #81271 (Miсhael Stetsyuk).
  • Los ajustes use_skip_indexes_if_final y use_skip_indexes_if_final_exact_mode ahora tienen True como valor predeterminado. Las consultas con la cláusula FINAL ahora usarán índices de omisión (si corresponde) para preseleccionar gránulos y también leer los gránulos adicionales que correspondan a rangos de clave primaria coincidentes. Los usuarios que necesiten el comportamiento anterior, con resultados aproximados o imprecisos, pueden establecer use_skip_indexes_if_final_exact_mode en FALSE tras una evaluación cuidadosa. #81331 (Shankar Iyer). #* Cuando tenga varias consultas en la web UI, se ejecutará la que esté bajo el cursor. Continuación de #80977. #81354 (Alexey Milovidov).
  • Este PR corrige problemas en la implementación de is_strict en las verificaciones de monotonicidad de las funciones de conversión. Actualmente, algunas funciones de conversión, como toFloat64(UInt32) y toDate(UInt8), devuelven incorrectamente is_strict como false cuando deberían devolver true. #81359 (zoomxi). #* En un sistema de archivos con journal, mkdir se escribe en el journal del sistema de archivos, que se almacena de forma persistente en disco. Si el disco es lento, esto puede llevar bastante tiempo. Sin duda tiene sentido sacarlo del alcance del bloqueo de reserva. #81371 (Kseniia Sumarokova).
  • Al comprobar si un KeyCondition coincide con un rango continuo, si la clave está envuelta en una cadena no estricta de funciones, es posible que un Constraint::POINT deba convertirse en un Constraint::RANGE. Por ejemplo, toDate(event_time) = '2025-06-03' implica un rango para event_time: [‘2025-06-03 00:00:00’, ‘2025-06-04 00:00:00’). Este PR corrige este comportamiento. #81400 (zoomxi). #* Se usa postgres 16.9. #81437 (Konstantin Bogdanov). #* Se usa openssl 3.2.4. #81438 (Konstantin Bogdanov). #* Se usa abseil-cpp 2025-01-27. #81440 (Konstantin Bogdanov). #* Se usa mongo-c-driver 1.30.4. #81449 (Konstantin Bogdanov). #* Se usa krb5 1.21.3-final. #81453 (Konstantin Bogdanov). #* Se usa orc 2.1.2. #81455 (Konstantin Bogdanov). #* Se añade compatibilidad con el argumento --database en clickhouse-local. Puede cambiar a una base de datos creada previamente. Esto cierra #44115. #81465 (Alexey Milovidov). #* Los alias clickhouse/ch invocarán clickhouse-client en lugar de clickhouse-local si se especifican --host o --port. Continuación de #79422. Cierra #65252. #81509 (Alexey Milovidov).
  • Ahora que tenemos la distribución de los tiempos de respuesta de Keeper, podemos ajustar los intervalos del histograma. #81516 (Miсhael Stetsyuk).
  • Aplazar la lectura de los archivos de manifiesto de Iceberg hasta la primera lectura durante una consulta. #81619 (Daniil Ivanik). #* Usar grpc 1.73.0. #81629 (Konstantin Bogdanov). #* Usar delta-kernel-rs v0.12.1. #81707 (Konstantin Bogdanov).
  • Se añade el evento de perfil PageCacheReadBytes. #81742 (Kseniia Sumarokova).

Corrección de errores (mal funcionamiento visible para el usuario en una versión estable oficial)

  • Corrige la vista con parámetros en la consulta SELECT EXCEPT. Cierra #49447. #57380 (Nikolay Degterinsky).
  • Analizador: corrige el nombre de la proyección de la columna tras la promoción del tipo de columna en el join. Cierra #63345. #63519 (Dmitry Novik).
  • Una vista materializada puede iniciarse demasiado tarde, p. ej., después de la tabla de Kafka que le envía datos. #72123 (Ilya Golshtein).
  • Se corrigió un error lógico en los casos de colisión de nombres de columnas cuando analyzer_compatibility_join_using_top_level_identifier está habilitado. #75676 (Vladimir Cherkasov).
  • Se corrigieron fallos poco frecuentes al leer una tabla MergeTree después de múltiples consultas asíncronas (con alter_sync = 0) RENAME COLUMN y ADD COLUMN. #76346 (Anton Popov).
  • Se corrige la reescritura de consultas SELECT durante la creación de VIEW con el analizador activado. Cierra #75956. #76356 (Dmitry Novik).
  • Corrige el uso de CTE en predicados con pushdown cuando allow_push_predicate_ast_for_distributed_subqueries está habilitado. Corrige #75647. Corrige #79672. #77316 (Dmitry Novik).
  • Se corrige la aplicación de async_insert desde el servidor (mediante apply_settings_from_server) (anteriormente provocaba errores de Unknown packet 11 from server en el cliente). #77578 (Azat Khuzhin).
  • Se corrigió un problema por el que la vista materializada actualizable en bases de datos replicadas no funcionaba en las réplicas recién añadidas. #77774 (Michael Kolupaev).
  • Se corrigió un problema por el que las vistas materializadas actualizables rompían las copias de seguridad. #77893 (Michael Kolupaev).
  • Se corrigió un antiguo error lógico que se producía en transform. #78247 (Yarik Briukhovetskyi).
  • Corrige un problema por el que SYSTEM SYNC REPLICA LIGHTWEIGHT 'foo' informaba correctamente de una ejecución satisfactoria incluso cuando la réplica especificada no existía. Ahora, el comando valida correctamente que la réplica exista en Keeper antes de intentar la sincronización. #78405 (Jayme Bird).
  • Se corrigen algunos casos en los que el índice secundario no se aplicaba al usar el analizador. Corrige #65607, corrige #69373. #78485 (Nikolai Kochetov).
  • Corrige el volcado de eventos de perfil (NetworkSendElapsedMicroseconds/NetworkSendBytes) para el protocolo HTTP con compresión habilitada (el error no debería superar el tamaño del búfer, normalmente de alrededor de 1 MiB). #78516 (Azat Khuzhin). #* ```sql CREATE TABLE t0 ( key Int32, value Int32 ) ENGINE=MergeTree() PRIMARY KEY key PARTITION BY key % 2;. #78593 (Vlad).
  • Corrección del analizador que producía LOGICAL_ERROR cuando JOIN ... USING incluye una columna ALIAS; debería generar un error adecuado. #78618 (Yakov Olkhovskiy).
  • Se corrige el analizador: CREATE VIEW ... ON CLUSTER falla si SELECT contiene argumentos posicionales. #78663 (Yakov Olkhovskiy).
  • Corrige el error Block structure mismatch en el caso de INSERT SELECT en una función de tabla con inferencia de esquema si SELECT tiene subconsultas escalares. #78677 (Pervakov Grigorii).
  • Corrección del analizador: con prefer_global_in_and_join=1, para una tabla Distributed en una consulta SELECT, la función in debe sustituirse por globalIn. #78749 (Yakov Olkhovskiy).
  • Se corrigieron diversos tipos de consultas SELECT que leen de tablas con motor MongoDB o la función de tabla mongodb: consultas con conversión implícita de un valor constante en la cláusula WHERE (p. ej., WHERE datetime = '2025-03-10 00:00:00'); consultas con LIMIT y GROUP BY. Anteriormente, podían devolver resultados incorrectos. #78777 (Anton Popov).
  • Se corrige la conversión entre distintos tipos JSON. Ahora se realiza mediante un cast simple, pasando por la conversión a/de String. Es menos eficaz, pero 100 % precisa. #78807 (Pavel Kruglov).
  • Se corrigió un error lógico durante la conversión del tipo Dynamic a Interval. #78813 (Pavel Kruglov).
  • Se corrige la reversión de columnas en caso de error de análisis de JSON. #78836 (Pavel Kruglov).
  • Corrige el error ‘bad cast’ al hacer join con una columna de alias constante. #78848 (Vladimir Cherkasov).
  • No se permite PREWHERE en vistas materializadas sobre columnas con tipos diferentes en la vista y en la tabla de destino. #78889 (Pavel Kruglov).
  • Se corrigió un error lógico al analizar datos binarios incorrectos en una columna Variant. #78982 (Pavel Kruglov).
  • Lanzar una excepción si el tamaño del lote de Parquet se establece en 0. Anteriormente, cuando output_format_parquet_batch_size = 0, ClickHouse se bloqueaba. Ahora este comportamiento se ha corregido. #78991 (daryawessely).
  • Se corrigió la deserialización de los discriminadores de Variant con el formato basic en partes compactas. Se introdujo en https://github.com/ClickHouse/ClickHouse/pull/55518. #79000 (Pavel Kruglov).
  • Los diccionarios de tipo complex_key_ssd_cache ya no aceptan los parámetros block_size y write_buffer_size con valor cero o negativo (problema #78314). #79028 (Elmi Ahmadov).
  • Evite usar Field en columnas no agregadas de SummingMergeTree. Esto podría provocar errores inesperados con tipos Dynamic/Variant usados en SummingMergeTree. #79051 (Pavel Kruglov).
  • Se corrigió la lectura desde una vista materializada con una tabla de destino Distributed y una cabecera distinta en el analizador. #79059 (Pavel Kruglov).
  • Se corrige un fallo en una situación muy específica cuando se utilizaba la función currentDatabase en secciones CONSTRAINT para consultas ON CLUSTER. Cierra #78100. #79070 (pufit).
  • Corrige un error por el que arrayUnion() devolvía valores adicionales (incorrectos) en tablas con inserciones en lotes. Corrige #75057. #79079 (Peter Nguyen). #* Corrige un segfault en OpenSSLInitializer. Cierra #79092. #79097 (Konstantin Bogdanov).
  • Se corrige la transmisión de roles externos en las consultas entre servidores. #79099 (Andrey Zvonov).
  • Establezca siempre un prefijo para ListObject de S3. #79114 (Azat Khuzhin).
  • Corrige un error por el que arrayUnion() devolvía valores adicionales (incorrectos) en tablas con inserciones por lotes. Corrige #79157. #79158 (Peter Nguyen).
  • Se corrigió un error lógico tras el pushdown del filtro. #79164 (Pervakov Grigorii).
  • Se pasa a usar IColumn en lugar de Field en SingleValueDataGeneric. Esto corrige los valores de retorno incorrectos de algunas funciones de agregado, como argMax, para los tipos Dynamic/Variant/JSON. #79166 (Pavel Kruglov).
  • Se corrige el motor de tabla DeltaLake cuando se usa la implementación de delta-kernel con endpoints basados en HTTP; se corrige NOSIGN. Cierra #78124. #79203 (Kseniia Sumarokova).
  • Corrección de Keeper: Evita activar watches en solicitudes múltiples fallidas. #79247 (Antonio Andelic).
  • Se prohíben los tipos Dynamic y JSON en IN. Con la implementación actual de IN, pueden producirse resultados incorrectos. El soporte adecuado para estos tipos en IN es complejo y podría implementarse en el futuro. #79282 (Pavel Kruglov).
  • Corrige la comprobación de rutas duplicadas durante el análisis del tipo JSON. #79317 (Pavel Kruglov).
  • Corrige problemas de conexión con SecureStreamSocket. #79383 (Konstantin Bogdanov).
  • Se corrige la carga de discos plain_rewritable que contienen datos. #79439 (Julia Kartseva).
  • Se soluciona un fallo en el descubrimiento dinámico de subcolumnas en partes Wide de MergeTree. #79466 (Pavel Kruglov).
  • Verifique la longitud del nombre de la tabla solo para las sentencias CREATE iniciales. No la verifique para las sentencias CREATE secundarias, a fin de evitar problemas de compatibilidad con versiones anteriores. #79488 (Miсhael Stetsyuk).
  • Se corrigió el error Block structure mismatch en varios casos relacionados con tablas con columnas dispersas. #79491 (Anton Popov).
  • Soluciona dos casos de Logical Error: Can't set alias of * of Asterisk on alias. #79505 (Raúl Marín).
  • Se corrige la aplicación de la configuración use_native_copy y allow_azure_native_copy para Azure Blob Storage, y se actualiza el comportamiento para usar la copia nativa solo cuando las credenciales coinciden; esto resuelve #78964. #79561 (Smita Kulkarni).
  • Se corrige el uso de rutas incorrectas al renombrar una base de datos Atomic. #79569 (Tuan Pham Anh).
  • Se corrige ORDER BY en una columna JSON junto con otras columnas. #79591 (Pavel Kruglov).
  • Corrige la duplicación de resultados al leer desde un origen remoto cuando use_hedged_requests y allow_experimental_parallel_reading_from_replicas están deshabilitados. #79599 (Eduard Karacharov).
  • Se corrigió un fallo en la implementación de delta-kernel al usar Unity Catalog. #79677 (Kseniia Sumarokova).
  • Resolver macros en clústeres de autodiscovery. #79696 (Anton Ivashkin).
  • Corrige errores lógicos relacionados con el ámbito de origen desconocido de una columna que se producían al comprobar si esta columna estaba correlacionada. Corrige #78183. Corrige #79451. #79727 (Dmitry Novik).
  • Se corrigen resultados incorrectos para conjuntos de agrupación con ColumnConst y Analyzer. #79743 (Andrey Zvonov).
  • Se corrige la duplicación de resultados del segmento local al leer desde una tabla distribuida cuando la réplica local está desactualizada. #79761 (Eduard Karacharov).
  • Gestionar adecuadamente page_cache_limits cuando esté mal configurado. #79805 (Bharat Nallan).
  • Corrige el resultado de la función SQL formatDateTime si un especificador de formato de tamaño variable (p. ej., %W, es decir, el día de la semana Monday Tuesday, etc.) va seguido de un especificador de formato compuesto (un especificador de formato que imprime varios componentes a la vez; p. ej., %D, es decir, la fecha en formato estadounidense 05/04/25). #79835 (Robert Schulze).
  • IcebergS3 admite la optimización de conteo, pero IcebergS3Cluster no. Como resultado, el valor de count() devuelto en modo clúster puede ser un múltiplo del número de réplicas. #79844 (wxybear).
  • Corrige el orden de ordenación de los NaN con bit de signo negativo. #79847 (Pervakov Grigorii).
  • Ahora GROUP BY ALL ya no tiene en cuenta la parte GROUPING. #79915 (Yarik Briukhovetskyi).
  • Corrige el error AMBIGUOUS_COLUMN_NAME con materialización diferida cuando no se usa ninguna columna durante la ejecución de la consulta hasta la proyección. Por ejemplo, SELECT * FROM t ORDER BY rand() LIMIT 5. #79926 (Igor Nikonov).
  • Se corrigió la fusión incorrecta de estados en las funciones TopK / TopKWeighted, que causaba valores de error excesivos incluso cuando la capacidad no se había agotado. #79939 (Joel Höner).
  • Ocultar la contraseña en la consulta CREATE DATABASE datalake ENGINE = DataLakeCatalog(\'http://catalog:8181\', \'admin\', \'password\'). #79941 (Han Fei).
  • Permite especificar un alias en JOIN USING. Especifique este alias si se ha cambiado el nombre de la columna (p. ej., debido a `ARRAY JOIN). Corrige #73707. #79942 (Nikolai Kochetov).
  • Se respeta la configuración readonly en el almacenamiento de objetos azure_blob_storage. #79954 (Julia Kartseva).
  • Se corrigieron resultados incorrectos en consultas y fallos por falta de memoria al usar match(column, '^…') con caracteres escapados con barra invertida. #79969 (filimonov).
  • Se desactiva el particionado de Hive para data lakes. Aborda parcialmente https://github.com/issues/assigned?issue=ClickHouse%7CClickHouse%7C79937. #80005 (Daniil Ivanik).
  • No se podían aplicar los índices de omisión con expresiones lambda. Se corrige el caso en el que las funciones de nivel superior de la definición del índice coinciden exactamente con las de la consulta. #80025 (Nikolai Kochetov).
  • Permitir que las vistas materializadas con UNION funcionen correctamente en réplicas nuevas. #80037 (Samay Sharma).
  • Corrige la versión de los metadatos durante attach part en la réplica que ejecuta el comando ATTACH_PART desde el registro de replicación. #80038 (Aleksei Filatov).
  • El especificador de formato %e en la función SQL parseDateTime ahora reconoce días de un solo dígito (p. ej., 3), mientras que antes requería un espacio de relleno (p. ej., 3). Esto hace que su comportamiento sea compatible con MySQL. Para conservar el comportamiento anterior, establezca la opción parsedatetime_e_requires_space_padding = 1. (issue #78243). #80057 (Robert Schulze).
  • Los nombres de las funciones definidas por el usuario ejecutables (eUDF) no se añaden a la columna used_functions de la tabla system.query_log, a diferencia de otras funciones. Este PR implementa la adición del nombre de la eUDF si la eUDF se utilizó en la petición. #80073 (Kyamran). #* Corrige las advertencias Cannot find 'kernel' in '[...]/memory.stat' en el registro de ClickHouse (problema #77410). #80129 (Robert Schulze).
  • Se corrige un error lógico en el formato Arrow con LowCardinality(FixedString). #80156 (Pavel Kruglov).
  • Se corrige la lectura de subcolumnas en el motor Merge. #80158 (Pavel Kruglov).
  • Corrige un error en la comparación entre tipos numéricos en KeyCondition. #80207 (Yarik Briukhovetskyi).
  • Corrige AMBIGUOUS_COLUMN_NAME al aplicar materialización diferida a una tabla con proyecciones. #80251 (Igor Nikonov).
  • Corrige la optimización incorrecta del recuento para filtros de prefijo de cadenas como LIKE ‘ab_c%’ al usar proyecciones implícitas. Esto corrige #80250. #80261 (Amos Bird).
  • Corrige la serialización incorrecta de campos numéricos anidados como cadenas en documentos de MongoDB. Se elimina el límite máximo de profundidad de los documentos de MongoDB. #80289 (Kirill Nikiforov).
  • Realiza verificaciones de metadatos menos estrictas para RMT en la base de datos Replicated. Cierra #80296. #80298 (Nikolay Degterinsky).
  • Se corrige la representación textual de DateTime y DateTime64 para el almacenamiento de PostgreSQL. #80301 (Yakov Olkhovskiy).
  • Se permite DateTime con zona horaria en las tablas StripeLog. Esto cierra #44120. #80304 (Alexey Milovidov).
  • Deshabilita el push-down de filtros para un predicado con una función no determinista cuando el paso del plan de consulta cambia el número de filas. Corrige #40273. #80329 (Nikolai Kochetov).
  • Se corrigen posibles errores lógicos y bloqueos en las proyecciones con subcolumnas. #80333 (Pavel Kruglov).
  • Soluciona el error NOT_FOUND_COLUMN_IN_BLOCK causado por la optimización de filter-push-down del sep JOIN lógico cuando la expresión ON no es una igualdad trivial. Soluciona #79647 Soluciona #77848. #80360 (Nikolai Kochetov).
  • Corrige resultados incorrectos al leer claves en orden inverso en tablas particionadas. Esto soluciona #79987. #80448 (Amos Bird).
  • Se corrigió la ordenación errónea en tablas con una clave Nullable y optimize_read_in_order habilitado. #80515 (Pervakov Grigorii).
  • Se corrigió un problema que hacía que DROP de una vista materializada actualizable quedara bloqueado si la vista se había pausado con SYSTEM STOP REPLICATED VIEW. #80543 (Michael Kolupaev).
  • Se corrige ‘Cannot find column’ con Tuple constante en una consulta Distributed. #80596 (Yakov Olkhovskiy).
  • Se corrige la función shardNum en tablas distribuidas con join_use_nulls. #80612 (János Benjamin Antal).
  • Se corrigen resultados incorrectos al leer una columna que existe en un subconjunto de tablas en el motor Merge. #80643 (Pavel Kruglov).
  • La marca de tiempo de la tabla iceberg_history ahora debería ser correcta. #80711 (Melvyn Peignon).
  • Se corrige el manejo de los globs enum de un solo elemento en las funciones de tabla de almacenamiento de objetos. #80716 (Konstantin Bogdanov).
  • Se corrigieron los tipos de resultado incorrectos de las funciones de comparación con Tuple(Dynamic) y String que provocaban un error lógico. #80728 (Pavel Kruglov).
  • Añade compatibilidad con el tipo de dato faltante timestamp_ntz para Unity Catalog. Corrige #79535, corrige #79875. #80740 (alesapin).
  • Corrige el error THERE_IS_NO_COLUMN en consultas distribuidas con IN cte. Soluciona #75032. #80757 (Nikolai Kochetov).
  • Se corrige el número excesivo de archivos (lo que provoca un uso excesivo de memoria) para ORDER BY externo. #80777 (Azat Khuzhin). #* Es posible que este PR cierre #80742. #80783 (zoomxi). #* Se corrige un fallo en Kafka porque get_member_id() estaba creando std::string a partir de NULL (probablemente era un problema que solo se producía cuando había fallado la conexión con el broker). #80793 (Azat Khuzhin).
  • Esperar correctamente a que finalicen los consumidores antes de detener el motor Kafka (los consumidores activos tras el apagado pueden activar varias aserciones de depuración y también pueden leer datos de los brókers en segundo plano después de que la tabla se haya eliminado/desacoplado). #80795 (Azat Khuzhin).
  • Se corrige NOT_FOUND_COLUMN_IN_BLOCK, causado por la optimización predicate-push-down. Corrige #80443. #80834 (Nikolai Kochetov).
  • Corregido un error lógico al resolver el comodín de asterisco (*) en la función de tabla en JOIN con USING. #80894 (Vladimir Cherkasov).
  • Corregido el cómputo de memoria de la caché de archivos de metadatos de Iceberg. #80904 (Azat Khuzhin).
  • Se corrige el particionamiento erróneo con una clave de partición Nullable. #80913 (Pervakov Grigorii).
  • Corrige el error Table does not exist en consultas distribuidas con predicado propagado (push-down) (allow_push_predicate_ast_for_distributed_subqueries=1) cuando la tabla de origen no existe en el nodo iniciador. Corrige #77281. #80915 (Nikolai Kochetov).
  • Se corrige el error lógico en las funciones anidadas con ventanas con nombre. #80926 (Pervakov Grigorii).
  • Se corrigen los extremos en columnas Nullable y de coma flotante. #80970 (Pervakov Grigorii).
  • Se corrige un posible cierre inesperado al consultar system.tables (probablemente cuando hay presión de memoria). #80976 (Azat Khuzhin).
  • Se corrige el renombrado atómico con TRUNCATE para archivos cuya compresión se infiere por su extensión. #80979 (Pablo Marcos). #* Se corrige ErrorCodes::getName. #81032 (RinChanNOW).
  • Se corrige un error por el que el usuario no podía listar tablas en Unity Catalog si no tenía permisos para todas ellas. Ahora todas las tablas se muestran correctamente; si se intenta leer una tabla restringida, se lanzará una excepción. #81044 (alesapin).
  • Ahora, ClickHouse ignorará los errores y las respuestas inesperadas de los catálogos de lagos de datos al ejecutar la consulta SHOW TABLES. Corrige #79725. #81046 (alesapin).
  • Corrige el parseo de DateTime64 desde enteros en JSONExtract y en el parseo del tipo JSON. #81050 (Pavel Kruglov).
  • Se refleja la configuración date_time_input_format en la caché de inferencia de esquema. #81052 (Pavel Kruglov).
  • Se corrigió un cierre inesperado en INSERT si se hacía DROP de la tabla después de que comenzara la consulta, pero antes de que se enviaran las columnas. #81053 (Azat Khuzhin).
  • Se corrige el uso de un valor sin inicializar en quantileDeterministic. #81062 (Azat Khuzhin).
  • Se corrige la gestión del recuento de hardlinks en las transacciones de disco de metadatastoragefromdisk. Se añaden pruebas. #81066 (Sema Checherinda).
  • Los nombres de las User Defined Functions (UDF) no se añaden a la tabla system.query_log, a diferencia de otras funciones. Este PR incorpora el nombre de la UDF en una de las dos columnas, used_executable_user_defined_functions o used_sql_user_defined_functions, si la UDF se utilizó en la consulta. #81101 (Kyamran).
  • Se corrigieron los errores Too large size ... passed to allocator o los posibles bloqueos durante las inserciones a través del protocolo HTTP con formatos de texto (JSON, Values, …) y campos Enum omitidos. #81145 (Anton Popov).
  • Se corrigió LOGICAL_ERROR en el caso de una columna dispersa en un bloque INSERT enviado a una MV no MT. #81161 (Azat Khuzhin).
  • Se corrige Unknown table expression identifier para distributed_product_mode_local=local con replicación cruzada. #81162 (Nikolai Kochetov).
  • Se corrigió el almacenamiento en caché incorrecto del número de filas en archivos Parquet tras aplicar filtros. #81184 (Michael Kolupaev).
  • Se corrige la configuración max_size_to_total_space de la caché fs cuando se usa con una ruta relativa de la caché. #81237 (Kseniia Sumarokova).
  • Se corrigió el fallo de clickhouse-local al generar tuplas o maps constantes en formato Parquet. #81249 (Michael Kolupaev).
  • Verificar los offsets de arrays recibidos por la red. #81269 (Azat Khuzhin).
  • Corrige un caso límite en una consulta que hace join entre tablas vacías y usa funciones de ventana. El error hace que se dispare el número de streams paralelos, lo que provoca OOM. #81299 (Alexander Gololobov).
  • Correcciones para las funciones Cluster de data lake (deltaLakeCluster, icebergCluster, etc.): (1) corrigen un posible fallo de segmentación en DataLakeConfiguration al usar la función Cluster con el analizador antiguo; (2) eliminan las actualizaciones duplicadas de metadatos del lago de datos (solicitudes adicionales al almacenamiento de objetos); (3) corrigen el listado redundante en el almacenamiento de objetos cuando el formato no se especifica explícitamente (algo que ya se había hecho para los motores de data lake no agrupados en clúster). #81300 (Kseniia Sumarokova).
  • Permite que el indicador force_restore_data recupere los metadatos perdidos de Keeper. #81324 (Raúl Marín).
  • Corrige un error de región en delta-kernel. Corrige #79914. #81353 (Kseniia Sumarokova).
  • Se deshabilita el JIT incorrecto de divideOrNull. #81370 (Raúl Marín).
  • Corrige un error de inserción cuando una tabla MergeTree tiene un nombre largo en la columna de partición. #81390 (hy123q).
  • No almacene en memoria el contenido de varios archivos de manifiesto. #81470 (Daniil Ivanik).
  • Corrige un posible fallo durante el cierre de los pools en segundo plano (background_.*pool_size). #81473 (Azat Khuzhin).
  • Se corrigió una lectura fuera de límites en el formato Npy que ocurría al escribir en una tabla con el motor URL. Esto cierra #81356. #81502 (Alexey Milovidov).
  • Es posible que la Web UI muestre NaN% (los típicos problemas de JavaScript). #81507 (Alexey Milovidov).
  • Se corrige DatabaseReplicated para database_replicated_enforce_synchronous_settings=1. #81564 (Azat Khuzhin).
  • Se corrige el orden de ordenación para los tipos LowCardinality(Nullable(…)). #81583 (Pervakov Grigorii).
  • El servidor no debe mantener una conexión HTTP si la solicitud no se ha leído por completo desde el socket. #81595 (Sema Checherinda).
  • Hacer que las subconsultas escalares correlacionadas devuelvan un resultado de tipo Nullable para la expresión de proyección. Se corrige el caso en que una subconsulta correlacionada produce un conjunto de resultados vacío. #81632 (Dmitry Novik).
  • Se corrigió Unexpected relative path for a deduplicated part durante ATTACH a ReplicatedMergeTree. #81647 (Azat Khuzhin).
  • La configuración de la consulta use_iceberg_partition_pruning no surtirá efecto para el almacenamiento Iceberg, porque usa el contexto global en lugar del contexto de la consulta. no es crítico porque su valor predeterminado es true. este PR puede corregirlo. #81673 (Han Fei).
  • Añadir una validación para la configuración de MergeTree merge_max_block_size a fin de garantizar que no sea cero. #81693 (Bharat Nallan).
  • Soluciona problemas de clickhouse-local con consultas DROP VIEW bloqueadas. #81705 (Bharat Nallan).
  • Se corrige el join de StorageRedis en algunos casos. #81736 (Pervakov Grigorii).
  • Se corrige un bloqueo en ConcurrentHashJoin con USING () vacío y con el analizador antiguo habilitado. #81754 (Nikita Taranov).
  • Corrección de Keeper: bloquear el commit de logs nuevos si hay una entrada no válida en los logs. Anteriormente, si el leader aplicaba algunos logs de forma incorrecta, seguía haciendo commit de logs nuevos, aunque el follower detectara una discrepancia en el digest y abortara. #81780 (Antonio Andelic).
Última modificación el 10 de junio de 2026