Saltar al contenido principal

Cambios incompatibles con versiones anteriores

Cambios en el formato de los datos y en el esquema

  • Se cambió la configuración predeterminada schema_inference_make_columns_nullable para que respete la información de Nullable de las columnas presente en los metadatos de Parquet/ORC/Arrow, en lugar de hacer que todo sea Nullable. No hay cambios en los formatos de texto. #71499 (Michael Kolupaev).

Cambios en consultas y funciones

  • La caché de resultados de consultas ahora ignora la configuración log_comment, por lo que cambiar solo log_comment en una consulta ya no provoca un fallo de caché. Existe una pequeña posibilidad de que algunos usuarios segmentaran intencionadamente su caché variando log_comment. Este cambio modifica ese comportamiento y, por lo tanto, no es compatible con versiones anteriores. Utilice la configuración query_cache_tag para este fin. #79878 (filimonov).
  • En versiones anteriores, las consultas con funciones de tabla con el mismo nombre que las funciones de implementación de operadores se formateaban de forma inconsistente. Cierra #81601. Cierra #81977. Cierra #82834. Cierra #82835. Las consultas EXPLAIN SYNTAX no formatearán operadores; el nuevo comportamiento refleja mejor el propósito de explicar la sintaxis. clickhouse-format, formatQuery y similares no formatearán funciones como operadores si la consulta las contenía en forma funcional. #82825 (Alexey Milovidov).
  • Se deshabilitan las operaciones binarias sin sentido con IPv4/IPv6: se deshabilita la suma o resta de una IPv4/IPv6 con un tipo no entero. Antes se permitían operaciones con tipos de coma flotante y se producían errores lógicos con algunos otros tipos (como DateTime). #86336 (Raúl Marín).
  • Se cambiaron los nombres de las funciones searchAny y searchAll a hasAnyTokens y hasAllTokens para mantener una mayor coherencia con la función existente hasToken. #88109 (Robert Schulze).

Cambios en los tipos de datos

  • Se prohíbe el uso del tipo Dynamic en las claves de JOIN. Esto puede dar lugar a resultados inesperados cuando el tipo Dynamic se compara con un tipo que no es Dynamic. Es mejor convertir una columna Dynamic al tipo requerido. #86358 (Pavel Kruglov).

Cambios en almacenamiento e índices

  • Se deja obsoleta la configuración allow_dynamic_metadata_for_data_lakes. Ahora, todas las tablas Iceberg intentan obtener del almacenamiento el esquema de tabla más actualizado antes de ejecutar cada consulta. #86366 (Daniil Ivanik).
  • El índice de texto invertido se rediseñó desde cero para que sea escalable con conjuntos de datos que no caben en RAM. #86485 (Anton Popov).
  • La configuración del servidor storage_metadata_write_full_object_key está habilitada de forma predeterminada y ya no puede desactivarse. #87335 (Sema Checherinda).
  • Se elimina cache_hits_threshold de la caché del sistema de archivos. cache_hits_threshold se añadió antes de incorporar la política de caché SLRU, y no es necesario admitir ambas. #88344 (Kseniia Sumarokova).

Cambios en ajustes y configuración

  • Reducir replicated_deduplication_window_seconds de 1 semana a una hora para almacenar menos znodes en ZooKeeper cuando la tasa de inserción es baja. #87414 (Sema Checherinda).
  • Renombrar el ajuste query_plan_use_new_logical_join_step a query_plan_use_logical_join_step. #87679 (Vladimir Cherkasov).
  • La nueva sintaxis permite que el parámetro del tokenizer sea más expresivo. #87997 (Elmi Ahmadov).
  • Dos cambios menores en el funcionamiento de los ajustes min_free_disk_ratio_to_perform_insert y min_free_disk_bytes_to_perform_insert: usar bytes no reservados en lugar de bytes disponibles para determinar si debe rechazarse una inserción. Probablemente esto no sea crucial si las reservas para las fusiones en segundo plano y las mutaciones son pequeñas en comparación con los umbrales configurados, pero parece más correcto. - No aplicar estos ajustes a las tablas del sistema. La razón es que seguimos queriendo que tablas como query_log se actualicen. Esto ayuda mucho con la depuración. Los datos escritos en las tablas del sistema suelen ser pequeños en comparación con los datos reales, por lo que deberían poder seguir escribiéndose durante mucho más tiempo con un umbral razonable de min_free_disk_ratio_to_perform_insert. #88468 (c-end).

Cambios de Keeper

  • Se habilita el modo asíncrono para la replicación interna de Keeper. Keeper conservará el mismo comportamiento que antes, con posibles mejoras del rendimiento. Si está actualizando desde una versión anterior a la 23.9, primero debe actualizar a la 23.9+ y luego a la 25.10+. También puede establecer keeper_server.coordination_settings.async_replication en 0 antes de la actualización y habilitarlo una vez finalizada. #88515 (Antonio Andelic).

Nuevas características

Funciones

  • Se añade la función naiveBayesClassifier para clasificar texto con Naive Bayes a partir de ngrams. #78700 (Nihal Z. Miaji).
  • Se añade la función arrayExcept, que sustrae un array de otro tratándolo como un conjunto. #82368 (Joanna Hulboj).
  • Nueva función conv para convertir números entre bases; actualmente admite bases de 2-36. #83058 (hp).
  • Se añade la aggregate function studentTTestOneSample. #85436 (Dylan).
  • Se añade la función isValidASCII para comprobar si una cadena contiene solo caracteres ASCII. Cierra #85377. #85786 (rajat mohan).
  • Aggregate functions timeSeriesChangesToGrid y timeSeriesResetsToGrid. Se comportan de forma similar a timeSeriesRateToGrid: aceptan parámetros para la marca temporal de inicio, la marca temporal de fin, el step y la ventana retrospectiva, así como dos argumentos para los timestamps y los valores, pero requieren al menos 1 muestra por ventana en lugar de 2. Calculan un changes/resets de PromQL, contando cuántas veces cambia o disminuye el valor de la muestra dentro de la ventana especificada para cada timestamp de la cuadrícula temporal definida por los parámetros. El tipo de retorno es Array(Nullable(Float64)). #86010 (Stephen Chi).
  • Aggregate function quantilePrometheusHistogram, que acepta como argumentos los límites superiores y los valores acumulados de los buckets del histograma, y realiza una interpolación lineal entre los límites superior e inferior del bucket en el que se encuentra la posición del quantile. Se comporta de forma similar a la función histogram_quantile() de PromQL en histogramas clásicos. #86294 (Stephen Chi).
  • Se añaden variantes optimizadas case-insensitive de las funciones startsWith y endsWith: startsWithCaseInsensitive, endsWithCaseInsensitive, startsWithCaseInsensitiveUTF8 y endsWithCaseInsensitiveUTF8. #87374 (Guang Zhao).

Tablas del sistema

  • Agrega una nueva tabla del sistema database_replicas con información sobre las réplicas de bases de datos. #83408 (Konstantin Morozov).
  • Agrega una nueva tabla system.aggregated_zookeeper_log. La tabla contiene estadísticas (p. ej., número de operaciones, latencia promedio, errores) de las operaciones de ZooKeeper agrupadas por ID de sesión, ruta padre y tipo de operación, y se escriben periódicamente en disco. #85102 (Miсhael Stetsyuk).
  • Agrega la tabla del sistema iceberg_metadata_log para recuperar archivos de metadatos de Iceberg durante las sentencias SELECT. #86152 (scanhex12).
  • Agrega advertencias de CPU y memoria a la tabla system.warnings. #86838 (Bharat Nallan).
  • Tabla del sistema para archivos de metadatos de Delta Lake. #87263 (scanhex12).

Motores de tabla y almacenamiento

  • Compatibilidad con el motor de tabla Alias. #76569 (RinChanNOW).
  • Ahora puede usar NATS JetStream para consumir mensajes especificando las nuevas opciones nats_stream y nats_consumer para el motor NATS. #84799 (Dmitry Novikov).
  • Tablas Iceberg y Delta Lake con configuración de disco. Esto permite definir tablas de usuario con un disco existente. Se añade la opción allowed_disks_for_table_engines, que permite usar discos específicos para Iceberg. Ejemplo: CREATE TABLE test ENGINE = Iceberg('path/inside/disk') SETTING datalake_disk_name = '<some_user_disk>'; ### Entrada de documentación para cambios visibles para el usuario. #86778 (scanhex12).
  • Se añade una nueva opción de tabla min_level_for_wide_part que permite especificar el nivel mínimo para que una parte se cree como parte wide. #88179 (Christoph Wurm).

Iceberg y lagos de datos

  • Se añade compatibilidad para consultar Apache Paimon desde ClickHouse. Esta integración permite a los usuarios de ClickHouse interactuar directamente con el almacenamiento del lago de datos de Paimon. #84423 (JIaQi).
  • ALTER UPDATE para el motor de tabla Iceberg. #86059 (scanhex12).

Índices y estadísticas

  • Nuevo índice bloom filter sparse_gram, útil para encontrar subcadenas largas. #79985 (scanhex12).
  • Se añadió la posibilidad de crear automáticamente estadísticas en todas las columnas aptas de las tablas MergeTree. Se añadió la configuración de nivel de tabla auto_statistics_types, que almacena, separados por comas, los tipos de estadísticas que se deben crear (p. ej., auto_statistics_types = 'minmax, uniq, countmin'). #87241 (Anton Popov).

Funcionalidades de SQL y consultas

  • Se añadió compatibilidad con la sintaxis LIMIT BY ALL. Al igual que GROUP BY ALL y ORDER BY ALL, LIMIT BY ALL se expande automáticamente para usar como claves de LIMIT BY todas las expresiones no agregadas de la cláusula SELECT. Por ejemplo, SELECT id, name, count(*) FROM table GROUP BY id LIMIT 1 BY ALL equivale a SELECT id, name, count(*) FROM table GROUP BY id LIMIT 1 BY id, name. Esta funcionalidad simplifica las consultas cuando se quiere limitar por todas las columnas no agregadas seleccionadas sin tener que enumerarlas explícitamente. Cierra #59152. #84079 (Surya Kant Ranjan).
  • Trata un nombre de setting sin valor en la configuración de la consulta como equivalente a 1 (p. ej., SELECT ... SETTINGS use_query_cache equivale a use_query_cache = 1). #85800 (thraeka).
  • Permite a los usuarios crear vistas temporales con la misma sintaxis que las tablas temporales. #86432 (Aly Kafoury).
  • Se añadió compatibilidad con LIMIT y OFFSET negativos. Cierra #28913. #88411 (Nihal Z. Miaji).

Características del cliente y la CLI

  • Acceda a las instancias de ClickHouse Cloud con credenciales de Cloud mediante --login. #82753 (Krishna Mannem).
  • Se añade la opción --semicolons_inline para dar formato a las consultas de modo que los puntos y coma se coloquen en la última línea en lugar de en una línea aparte. #88018 (Jan Rada).

Configuración del servidor y gestión de cargas de trabajo

  • Nuevas opciones de configuración: logger.startupLevel y logger.shutdownLevel permiten anular el nivel de registro durante el inicio y el apagado de ClickHouse, respectivamente. #85967 (Lennard Eijsackers).
  • Añade una forma de definir WORKLOAD y RESOURCE en SQL mediante la sección “resources_and_workloads” de la configuración del servidor. #87430 (Sergei Trifonov).

Comandos del sistema

Keeper

  • Se añaden variantes recursivas de los comandos cp-cpr y mv-mvr en el cliente de Keeper. #88570 (Mikhail Artemenko).

Características experimentales

  • Las funciones searchAll y searchAny ahora también funcionan con columnas no textuales. En esos casos, usan el tokenizador predeterminado. #87722 (Jimmy Aguilar Mena).
  • Se implementó el tipo de dato QBit, que almacena vectores en formato segmentado por bits, y la función L2DistanceTransposed, que permite la búsqueda vectorial aproximada, donde el equilibrio entre precisión y velocidad se controla mediante un parámetro. #87922 (Raufs Dunamalijevs).

Mejoras de rendimiento

Ejecución y optimización de consultas

  • Se mejoró el rendimiento de las consultas al refactorizar el orden y la integración de Query Condition Cache (QCC) con el análisis de índices. El filtrado de QCC ahora se aplica antes del análisis de la clave primaria y de los índices de omisión, lo que reduce cálculos de índices innecesarios. El análisis de índices se amplió para admitir varios filtros de rango, y sus resultados de filtrado ahora se vuelven a almacenar en la QCC. Esto acelera significativamente las consultas en las que el análisis de índices domina el tiempo de ejecución, especialmente las que dependen de índices de omisión (p. ej., índices vectoriales o invertidos). #82380 (Amos Bird).
  • Varias microoptimizaciones para acelerar las consultas pequeñas. #83096 (Raúl Marín).
  • Se comprimen los logs y los eventos de perfil en el protocolo nativo. En clusters con más de 100 réplicas, los eventos de perfil sin comprimir ocupan entre 1 y 10 MB/s, y la barra de progreso se vuelve lenta en conexiones a Internet lentas. Con esto se cierra #82533. #83586 (Alexey Milovidov).
  • Se mejora la optimización de PREWHERE para condiciones como func(primary_column) = 'xx' y column in (xxx). #85529 (李扬).
  • Se evita el escaneo completo de system.tables al filtrar por uuid (puede ser útil si solo tiene el UUID a partir de los logs o de la ruta de ZooKeeper). #88379 (Azat Khuzhin).

Optimizaciones de JOIN

  • Proporciona una lógica para aplicar pushdown a los predicados disyuntivos de JOIN. Ejemplo: en TPC-H Q7, para una condición sobre 2 tablas n1 y n2 como (n1.n_name = 'FRANCE' AND n2.n_name = 'GERMANY') OR (n1.n_name = 'GERMANY' AND n2.n_name = 'FRANCE'), se extraen filtros parciales independientes para cada tabla: n1.n_name = 'FRANCE' OR n1.n_name = 'GERMANY' para n1 y n2.n_name = 'GERMANY' OR n2.n_name = 'FRANCE' para n2. #84735 (Yarik Briukhovetskyi).
  • Se implementó la reescritura de JOIN: 1. Convertir LEFT ANY JOIN y RIGHT ANY JOIN en JOIN SEMI/ANTI si la condición de filtro siempre es falsa para las filas emparejadas o no emparejadas. Esta optimización se controla con la nueva configuración query_plan_convert_any_join_to_semi_or_anti_join. 2. Convertir FULL ALL JOIN en LEFT ALL JOIN o RIGHT ALL JOIN si la condición de filtro siempre es falsa para las filas no emparejadas de uno de los lados. #86028 (Dmitry Novik).
  • Se optimizó ligeramente el rendimiento de HashJoin en el caso de joins LEFT/RIGHT con muchas filas no emparejadas. #86312 (Nikita Taranov).
  • La reordenación de joins ahora utiliza estadísticas. Esta funcionalidad puede habilitarse configurando allow_statistics_optimize = 1 y query_plan_optimize_join_order_limit = 10. #86822 (Han Fei).
  • Se omite el recálculo de las estadísticas de la tabla hash en tiempo de ejecución durante la optimización de joins. Se añadieron nuevos eventos de perfil JoinOptimizeMicroseconds y QueryPlanOptimizeMicroseconds. #87683 (Vladimir Cherkasov).
  • Se integró AddedColumns::appendFromBlock para mejorar ligeramente el rendimiento de joins en algunos casos. #88455 (Nikita Taranov).

Optimizaciones de cadenas y funciones

  • Mejora el rendimiento de la búsqueda en cadenas que distingue entre mayúsculas y minúsculas (operaciones como el filtrado; por ejemplo, WHERE URL LIKE '%google%') mediante la biblioteca StringZilla, con instrucciones SIMD de la CPU cuando están disponibles. #84161 (Raúl Marín).
  • Mejora el rendimiento de LIKE con prefijo o sufijo mediante la nueva configuración predeterminada optimize_rewrite_like_perfect_affix. #85920 (Guang Zhao).
  • Mejora el rendimiento de las funciones tokens, hasAllTokens, hasAnyTokens. #88416 (Anton Popov).

Optimizaciones de MergeTree y almacenamiento

  • Añade la serialización opcional de la subcolumna .size para columnas String de nivel superior en tablas MergeTree, con el fin de mejorar la compresión y habilitar un acceso eficiente a las subcolumnas. Introduce nuevas configuraciones de MergeTree para controlar la versión de serialización y optimizar expresiones para cadenas vacías. #82850 (Amos Bird).
  • Reduce la asignación y la copia de memoria al hacer un SELECT desde una tabla MergeTree agregante con FINAL cuando la tabla tiene columnas de tipo SimpleAggregateFunction(anyLast). #84428 (Duc Canh Le).
  • Mejora el rendimiento de las fusiones verticales después de ejecutar una eliminación ligera. #86169 (Anton Popov).
  • Mejora el rendimiento de las consultas rápidas con muchas partes en la tabla (optimizando MarkRanges mediante el uso de devector en lugar de deque). #86933 (Azat Khuzhin).
  • Mejora el rendimiento al aplicar patch parts en modo join. #87094 (Anton Popov).
  • Habilita el guardado de marks en caché y evita la E/S directa para el lector MergeTreeLazy. #87989 (Nikita Taranov).
  • La consulta SELECT con la cláusula FINAL sobre una tabla ReplacingMergeTree con la columna is_deleted ahora se ejecuta más rápido gracias a una mejor paralelización basada en 2 optimizaciones existentes: 1) la optimización do_not_merge_across_partitions_select_final para las particiones de la tabla que tienen una sola part 2) la división de otros rangos seleccionados de la tabla en intersecting / non-intersecting, de modo que solo los rangos intersecting deben pasar por la transformación de fusión FINAL. #88090 (Shankar Iyer).

Optimizaciones de agregación y GROUP BY

Optimizaciones de índices y de búsqueda de texto

  • Se mejoró el rendimiento de la construcción del índice de texto para documentos que contienen principalmente tokens poco frecuentes. #87546 (Anton Popov).

Optimizaciones para lago de datos

Optimizaciones internas

Mejoras

Optimización y ejecución de consultas

  • mannWhitneyUTest ya no lanza una excepción cuando ambas muestras contienen únicamente valores idénticos. Ahora devuelve un resultado válido, en consonancia con SciPy. Esto cierra: #79814. #80009 (DeanNeaht).
  • Se añadió una optimización experimental del orden de JOIN que puede reordenar automáticamente los JOIN para mejorar el rendimiento (controlada por la configuración query_plan_optimize_join_order_limit). Ten en cuenta que la optimización del orden de JOIN actualmente ofrece compatibilidad limitada con estadísticas y se basa principalmente en estimaciones del número de filas de los motores de almacenamiento; en futuras versiones se añadirán una recopilación de estadísticas y una estimación de cardinalidad más sofisticadas. Si encuentras problemas con consultas JOIN después de actualizar, puedes desactivar temporalmente la nueva implementación estableciendo SET query_plan_use_new_logical_join_step = 0 e informar del problema para su investigación. Nota sobre la resolución de identificadores de la cláusula USING: Se cambió la resolución de la columna coalescente de la cláusula OUTER JOIN ... USING para que sea más coherente: antes, al seleccionar tanto la columna de USING como las columnas calificadas (a, t1.a, t2.a) en un OUTER JOIN, la columna de USING se resolvía incorrectamente como t1.a, mostrando 0/NULL para las filas de la tabla derecha sin coincidencia en la izquierda. Ahora, los identificadores de la cláusula USING siempre se resuelven como la columna coalescente, mientras que los identificadores calificados se resuelven como las columnas no coalescentes, independientemente de qué otros identificadores estén presentes en la consulta. Por ejemplo: ```sql SELECT a, t1.a, t2.a FROM (SELECT 1 as a WHERE 0) t1 FULL JOIN (SELECT 2 as a) t2 USING (a) — Antes: a=0, t1.a=0, t2.a=2 (incorrecto: ‘a’ se resolvía como t1.a) — Después: a=2, t1.a=0, t2.a=2 (correcto: ‘a’ es la columna coalescente). #80848 (Vladimir Cherkasov).
  • Se admite el filtrado de partes de datos mediante skip indexes durante la lectura para reducir lecturas innecesarias de índices. Se controla con la nueva configuración use_skip_indexes_on_data_read (deshabilitada de forma predeterminada). Esto aborda #75774. Esto incluye parte del trabajo previo común con #81021. #81526 (Amos Bird).
  • La reescritura de la transacción de almacenamiento de objetos en disco elimina los blobs remotos anteriores si la transacción de metadatos se ha confirmado. #81787 (Sema Checherinda).
  • Permitir configurar la estrategia de reintento de S3 y que la configuración del disco S3 se recargue en caliente al cambiar el archivo XML de configuración. #82642 (RinChanNOW).
  • Se corrigió la fase de optimización para la expresión de igualdad redundante cuando el LowCardinality del tipo resultante difiere antes y después de la optimización. #82651 (Yakov Olkhovskiy).
  • Se puede utilizar una columna especial para indicar la presencia de una parte de oneof. #82885 (Ilya Golshtein).
  • Ahora los usuarios reciben instrucciones más claras cuando se especifican configuraciones incorrectas para el nuevo motor de tabla Kafka. #83701 (János Benjamin Antal).
  • Cuando los clientes HTTP establecen el encabezado X-ClickHouse-100-Continue: defer además de Expect: 100-continue, ClickHouse no envía una respuesta 100 Continue al cliente hasta después de validar la cuota, lo que evita desperdiciar ancho de banda de red al transmitir cuerpos de solicitud que, de todos modos, acabarían descartándose. Esto es relevante para las consultas INSERT, en las que la consulta puede enviarse en la cadena de consulta de la URL y los datos se envían en el cuerpo de la solicitud. Interrumpir una solicitud sin enviar el cuerpo completo impide reutilizar la conexión con HTTP/1.1, pero la latencia adicional de abrir nuevas conexiones suele ser insignificante en comparación con la duración total de INSERT cuando se manejan grandes volúmenes de datos. #84304 (c-end).
  • Ya no se pueden especificar zonas horarias para el tipo Time. #84689 (Yarik Briukhovetskyi).
  • El autocompletado del cliente es más rápido y consistente al usar system.completions en lugar de realizar múltiples consultas a las tablas del sistema. #84694 (|2ustam).
  • Se simplificó la lógica relacionada con el análisis de Time[64] en el formato best_effort (y se evitaron algunos errores). #84730 (Yarik Briukhovetskyi).
  • Acelera algunas consultas JOIN al construir un filtro bloom a partir del subárbol derecho en tiempo de ejecución y pasar este filtro al escaneo del subárbol izquierdo. Esto puede ser beneficioso para consultas como SELECT avg(o_totalprice) FROM orders, customer, nation WHERE c_custkey = o_custkey AND c_nationkey=n_nationkey AND n_name = 'FRANCE'. #84772 (Alexander Gololobov).
  • Puedes usar parámetros de consulta después de TO al crear una vista materializada, por ejemplo: CREATE MATERIALIZED VIEW mv TO {to_table:Identifier} AS SELECT * FROM src_table. #84899 (Diskein).
  • Enmascarar las credenciales de S3 en los logs al usar DATABASE ENGINE = Backup con almacenamiento S3. #85336 (Kenny Sun).
  • Se actualiza jemalloc a una versión más reciente. Se mejora el perfilado de asignaciones a partir de las herramientas internas de jemalloc. El profiler global de jemalloc ahora puede habilitarse con la configuración jemalloc_enable_global_profiler. Las asignaciones y liberaciones de memoria globales muestreadas pueden almacenarse en system.trace_log con el tipo JemallocSample al habilitar la configuración jemalloc_collect_global_profile_samples_in_trace_log. El perfilado de jemalloc ahora puede habilitarse de forma independiente para cada consulta mediante el ajuste jemalloc_enable_profiler. El almacenamiento de muestras en system.trace_log puede controlarse por consulta mediante el ajuste jemalloc_collect_profile_samples_in_trace_log. #85438 (Antonio Andelic).
  • Se añadieron la función deltaLakeAzureCluster (similar a deltaLakeAzure para clústeres) y la función deltaLakeS3Cluster (alias de deltaLakeCluster). Resuelve #85358. #85547 (Smita Kulkarni).
  • Renombrar InterpreterSystemQuery::dropReplicaImpl a InterpreterSystemQuery::dropStorageReplica - En InterpreterSystemQuery::dropDatabaseReplica: - Al eliminar con base de datos o al eliminar la réplica completa: también se elimina la réplica de cada tabla de la base de datos - Si se proporciona ‘WITH TABLES’, eliminar la réplica de cada almacenamiento - En caso contrario, la lógica no cambia; solo se llama a DatabaseReplicated::dropReplica en las bases de datos - Al eliminar una réplica de base de datos con la ruta de Keeper: - Si se proporciona ‘WITH TABLES’: - Restaurar la base de datos como Atomic - Restaurar las tablas RMT a partir de la sentencia en Keeper - Eliminar la base de datos (las tablas restauradas también se eliminan) - En caso contrario, solo se llama a DatabaseReplicated::dropReplica en la ruta de Keeper proporcionada. #85637 (Tuan Pham Anh).
  • Corrige el formato inconsistente de TTL cuando contiene una función materialize. Cierra #82828. #85749 (Alexey Milovidov).
  • Aplicar la configuración azure_max_single_part_copy_size a las operaciones normales de copia, de la misma manera que para la copia de seguridad. #85767 (Ilya Golshtein).
  • Ralentiza los hilos del cliente de S3 ante errores reintentables en el almacenamiento de objetos S3. Esto amplía la configuración anterior backup_slow_all_threads_after_retryable_s3_error a los discos S3 y la renombra como la más general s3_slow_all_threads_after_retryable_error. #85918 (Julia Kartseva).
  • Se marcan como obsoletas las configuraciones allow_experimental_variant/dynamic/json y enable_variant/dynamic/json. Ahora los tres tipos están habilitados de forma incondicional. #85934 (Pavel Kruglov).
  • Se mejoró el motor de tabla S3(Azure)Queue para que pueda soportar la pérdida de la conexión con ZooKeeper sin riesgo de duplicados. Requiere habilitar la configuración de S3Queue use_persistent_processing_nodes (se puede cambiar con ALTER TABLE MODIFY SETTING). #85995 (Kseniia Sumarokova).
  • El estado de la tabla Iceberg ya no se almacena en un objeto de almacenamiento. Esto debería permitir usar Iceberg en ClickHouse con consultas concurrentes. #86062 (Daniil Ivanik).
  • Se añadió la configuración query_condition_cache_selectivity_threshold (valor predeterminado: 1.0), que excluye de su inserción en la caché de condiciones de consulta los resultados de escaneo de predicados con baja selectividad. Esto permite reducir el consumo de memoria de la caché de condiciones de consulta, a costa de una menor tasa de aciertos de la caché. #86076 (zhongyuankai).
  • Se admite el filtrado por la cadena completa de la URL (directiva full_url) en http_handlers (incluidos el esquema y host:port). #86155 (Azat Khuzhin).
  • Se añade la configuración experimental allow_experimental_delta_lake_writes a la funcionalidad de escritura en Delta Lake, deshabilitada de forma predeterminada. #86180 (Kseniia Sumarokova).
  • Se corrige la detección de systemd en el script de init.d (corrige la comprobación “Install packages”). #86187 (Azat Khuzhin).
  • Añade una nueva métrica dimensional startup_scripts_failure_reason. Esta métrica es necesaria para distinguir entre distintos tipos de errores que provocan el fallo de los scripts de inicio. En particular, a efectos de generar alertas, necesitamos distinguir entre errores transitorios (p. ej., MEMORY_LIMIT_EXCEEDED o KEEPER_EXCEPTION) y errores no transitorios. #86202 (Miсhael Stetsyuk).
  • Varios archivos de datos en las escrituras de Iceberg. #86275 (scanhex12).
  • Más tipos de partición en las operaciones de escritura de Iceberg. Esto cierra #86206. #86298 (scanhex12).
  • Permitir omitir la función identity() en la partición de una tabla Iceberg. #86314 (scanhex12).
  • Se añadió la posibilidad de habilitar el logging JSON solo para un canal específico; para ello, configure logger.formatting.channel con uno de estos valores: syslog/console/errorlog/log. #86331 (Azat Khuzhin).
  • Se agregó un límite de filas/bytes para los archivos de datos insertados en delta lake. Se controla mediante la configuración delta_lake_insert_max_rows_in_data_file y delta_lake_insert_max_bytes_in_data_file. #86357 (Kseniia Sumarokova).
  • Se permite usar números nativos en WHERE. Ya se permite usarlos como argumentos de funciones lógicas. Esto simplifica las optimizaciones de pushdown de filtros y de move-to-prewhere. #86390 (Nikolai Kochetov).
  • Se corrigió un error que se producía al ejecutar SYSTEM DROP REPLICA en un catálogo con metadatos corruptos. #86391 (Nikita Mikhaylov).
  • Añade reintentos adicionales para la comprobación de acceso al disco (skip_access_check=0) en Azure, porque el aprovisionamiento del acceso puede tardar bastante tiempo. #86419 (Alexander Tokmakov).
  • Renombrar la configuración evaluation_time como promql_evaluation_time. #86459 (Vitaly Baranov).
  • Configuración para eliminar archivos al hacer drop en Iceberg. Esto cierra #86211. #86501 (scanhex12).
  • Reduce el uso de memoria en las operaciones de escritura de Iceberg. #86544 (scanhex12).
  • Hacer que la función today() no distinga entre mayúsculas y minúsculas para mantener la coherencia con otras funciones relacionadas con fecha y hora, como NOW(). #86561 (Kaviraj Kanagaraj).
  • Hacer que la ventana de antigüedad en las funciones timeSeries*() sea abierta por la izquierda y cerrada por la derecha. #86588 (Vitaly Baranov).
  • Se añaden eventos de perfil FailedInternal*Query. #86627 (Shane Andrade).
  • Hacer que el bloqueo del bucket en el modo ordenado de S3Queue sea persistente, de forma similar a los nodos de procesamiento cuando use_persistent_processing_nodes = 1. Añadir inyección de fallos en Keeper en las pruebas. #86628 (Kseniia Sumarokova).
  • Corrige el manejo de usuarios cuyos nombres contienen un punto cuando se añaden mediante un archivo de configuración. #86633 (Mikhail Koviazin).
  • Se añade una métrica asíncrona del uso de memoria en las consultas (QueriesMemoryUsage y QueriesPeakMemoryUsage). #86669 (Azat Khuzhin).
  • Puede usar la opción clickhouse-benchmark --precise para obtener informes más precisos de QPS y otras métricas por intervalo. Ayuda a obtener un QPS consistente cuando la duración de las consultas es comparable con el intervalo de informes --delay D. #86684 (Sergei Trifonov).
  • Permitir configurar los valores nice de los hilos de Linux para asignar prioridades más altas o más bajas a algunos hilos (merge/mutate, consulta, vista materializada, cliente de ZooKeeper). #86703 (Miсhael Stetsyuk).
  • Corrige el confuso error “specified upload does not exist”, que se produce cuando la excepción original se pierde durante la carga multiparte debido a una condición de carrera. #86725 (Julia Kartseva).
  • Se limita la descripción del plan de consulta en la consulta EXPLAIN. No se calcula la descripción para consultas distintas de EXPLAIN. Se añadió la configuración query_plan_max_step_description_length. #86741 (Nikolai Kochetov).
  • Se añade la posibilidad de ajustar las señales pendientes para intentar evitar CANNOT_CREATE_TIMER (para los perfiladores de consultas, query_profiler_real_time_period_ns/query_profiler_cpu_time_period_ns). También se recopila SigQ de /proc/self/status para la introspección (si ProcessSignalQueueSize está cerca de ProcessSignalQueueLimit, es probable que se produzcan errores CANNOT_CREATE_TIMER). #86760 (Azat Khuzhin).
  • Inserción/selección distribuida para lagos de datos. #86783 (scanhex12).
  • Mejora del rendimiento de la solicitud RemoveRecursive en Keeper. #86789 (Antonio Andelic).
  • Elimina los espacios en blanco adicionales en PrettyJSONEachRow al generar salida de tipo JSON. #86819 (Pavel Kruglov).
  • Amplía la ventana de deduplicación replicada hasta 10000. #86820 (Sema Checherinda).
  • Ahora escribimos los tamaños de los blobs de prefix.path cuando se elimina un directorio en un disco reescribible simple. #86908 (alesapin).
  • Hacer que la función yesterday() no distinga entre mayúsculas y minúsculas y sea consistente con la función today(). #86914 (Kaviraj Kanagaraj).
  • Admite pruebas de rendimiento de .xml en instancias remotas de ClickHouse, incluido ClickHouse Cloud. Ejemplo de uso: tests/performance/scripts/perf.py tests/performance/math.xml --runs 10 --user <username> --password <password> --host <hostname> --port <port> --secure. #86995 (Raufs Dunamalijevs).
  • Respetar los límites de memoria en algunos puntos en los que se sabe que se asignan cantidades significativas de memoria (>16MiB) (ordenación, inserciones asíncronas y file log). #87035 (Azat Khuzhin).
  • Evita que las configuraciones no booleanas no establezcan ningún valor en las consultas. Mejora de #85800. #87084 (thraeka).
  • Admite sugerencias para nombres de formatos. Cierra #86761. #87092 (flynn).
  • Las réplicas remotas omiten el análisis de índices de omisión cuando no hay proyecciones. #87096 (zoomxi).
  • Genera una excepción si la configuración network_compression_method no es un códec genérico compatible. #87097 (Robert Schulze).
  • La tabla del sistema system.query_cache ahora devuelve todas las entradas de la caché de resultados de consultas, mientras que antes solo devolvía las entradas compartidas o las entradas no compartidas del mismo usuario y rol. Esto es aceptable, ya que se supone que las entradas no compartidas no revelan los resultados de las consultas, mientras que system.query_cache devuelve los textos de las consultas. Esto hace que el comportamiento de la tabla del sistema sea más parecido al de system.query_log. #87104 (Robert Schulze).
  • Se añadió soporte para autenticación y SSL en la función de tabla arrowFlight(). #87120 (Vitaly Baranov).
  • Agregar un nuevo parámetro al motor de tabla S3 y a la función de tabla s3, llamado storage_class_name, que permite especificar el almacenamiento por niveles inteligente compatible con AWS. Se admite tanto en formato key-value como en formato posicional (obsoleto). #87122 (alesapin).
  • Se permite deshabilitar la codificación UTF-8 para la tabla de ytsaurus. #87150 (MikhailBurdukov).
  • Compatibilidad con Azure para discos de lago de datos. #87173 (scanhex12).
  • Se añade el nuevo parámetro del índice de texto dictionary_block_frontcoding_compression para controlar la compresión del diccionario. De forma predeterminada, está habilitado para usar la compresión front-coding. #87175 (Elmi Ahmadov).
  • Habilitar la evaluación con cortocircuito para la función parseDateTime. #87184 (Pavel Kruglov).
  • Se admite alter table ... materialize statistics all, que materializa todas las estadísticas de una tabla. #87197 (Han Fei).
  • Se deshabilita s3_slow_all_threads_after_retryable_error de forma predeterminada. #87198 (Nikita Mikhaylov).
  • Añade una nueva tabla system.aggregated_zookeeper_log. La tabla contiene estadísticas (p. ej., número de operaciones, latencia media y errores) de las operaciones de ZooKeeper agrupadas por ID de sesión, ruta padre y tipo de operación, y que se vuelcan periódicamente a disco. #87208 (Miсhael Stetsyuk).
  • Renombrar la función de tabla arrowflight a arrowFlight. #87249 (Vitaly Baranov).
  • Se actualizó clickhouse-benchmark para que acepte - en lugar de _ en sus opciones de la CLI. #87251 (Ahmed Gouda).
  • Se añadió una configuración de sesión para excluir una lista de skip indexes de la materialización al insertar (exclude_materialize_skip_indexes_on_insert). Se añadió una configuración de tabla de MergeTree para excluir una lista de skip indexes de la materialización durante la fusión (exclude_materialize_skip_indexes_on_merge). #87252 (George Larionov).
  • Hacer que el vaciado en system.crash_log durante el manejo de señales sea síncrono. #87253 (Miсhael Stetsyuk).
  • Añadir una nueva columna statistics a system.parts_columns. #87259 (Han Fei).
  • Se añadió la configuración inject_random_order_for_select_without_order_by, que inserta ORDER BY rand() en las consultas SELECT de nivel superior sin cláusula ORDER BY. #87261 (Rui Zhang).
  • Admite otros formatos (ORC, Avro) en las escrituras de Iceberg. Se cierra #86179. #87277 (scanhex12).
  • Se mejora el mensaje de error de joinGet para que indique correctamente que el número de join_keys no coincide con el número de right_table_keys. #87279 (Isak Ellmer).
  • Compacta los datos de todos los hilos antes de insertarlos en las vistas materializadas, en función de los ajustes min_insert_block_size_rows_for_materialized_views y min_insert_block_size_bytes_for_materialized_views. Anteriormente, si parallel_view_processing estaba habilitado, cada hilo que insertaba en una vista materializada específica compactaba la inserción de forma independiente, lo que podía generar un mayor número de partes. #87280 (Antonio Andelic).
  • Este parche añade la capacidad de comprobar el stat de cualquier nodo de Keeper durante la write tx. Esto puede ayudar a detectar el problema ABA. #87282 (Mikhail Artemenko).
  • Redirigir las solicitudes intensivas de ytsaurus a proxies de alta capacidad. #87342 (MikhailBurdukov).
  • Este parche corrige las reversiones de las operaciones unlink/rename/removeRecursive/removeDirectory/etc., así como el recuento de enlaces físicos en cualquier posible carga de trabajo de metadatos para transacciones en disco, y simplifica las interfaces para hacerlas más genéricas, de modo que puedan reutilizarse en otros almacenes de metadatos. #87358 (Mikhail Artemenko).
  • Se añadió el parámetro de configuración keeper_server.tcp_nodelay, que permite desactivar TCP_NODELAY para Keeper. #87363 (Copilot).
  • Se admite --connection en clickhouse-benchmarks. Es igual que en clickhouse-client: puede especificar conexiones predefinidas en config.xml/config.yaml del cliente, en la ruta connections_credentials, para evitar tener que indicar explícitamente el usuario/la contraseña mediante argumentos de la línea de comandos. Se añade compatibilidad con --accept-invalid-certificate en clickhouse-benchmark. #87370 (Azat Khuzhin).
  • Ahora, la configuración max_insert_threads surtirá efecto en las tablas Iceberg. #87407 (alesapin).
  • Añade histogramas y métricas dimensionales a PrometheusMetricsWriter. De esta forma, el handler PrometheusRequestHandler tendrá todas las métricas esenciales y podrá usarse para una recopilación de métricas fiable y con baja sobrecarga en la nube. #87521 (Miсhael Stetsyuk).
  • La función hasToken ahora devuelve cero coincidencias para el token vacío (mientras que antes generaba una excepción). #87564 (Jimmy Aguilar Mena).
  • Se añade compatibilidad con índices de texto para los valores de Array y Map (mapKeys y mapValues). Las funciones compatibles son mapContainsKey y has. #87602 (Elmi Ahmadov).
  • Se añade una nueva métrica ZooKeeperSessionExpired que indica el número de sesiones globales de ZooKeeper caducadas. #87613 (Miсhael Stetsyuk).
  • Use el cliente de almacenamiento S3 con ajustes específicos para copias de seguridad (por ejemplo, backup_slow_all_threads_after_retryable_s3_error) para la copia del lado del servidor (nativa) hacia un destino de copia de seguridad. Marque s3_slow_all_threads_after_retryable_error como obsoleto. #87660 (Julia Kartseva).
  • Corrige la gestión incorrecta de las configuraciones max_joined_block_size_rows y max_joined_block_size_bytes durante la serialización del plan de consulta con la opción experimental make_distributed_plan. #87675 (Vladimir Cherkasov).
  • La configuración enable_http_compression ahora es la predeterminada. Esto significa que, si un cliente acepta compresión HTTP, el servidor la usará. Sin embargo, este cambio tiene ciertas desventajas. El cliente puede solicitar un método de compresión pesado, como bzip2, lo cual no es razonable, y aumentará el consumo de recursos del servidor (pero esto solo será visible cuando se transfieran resultados grandes). El cliente puede solicitar gzip, que no está tan mal, pero es subóptimo en comparación con zstd. Cierra #71591. #87703 (Alexey Milovidov).
  • Se añadió una nueva configuración, keeper_hosts, que expone la lista de hosts de [Zoo]Keeper a los que ClickHouse puede conectarse. #87718 (Nikita Mikhaylov).
  • Añade ALTER TABLE REWRITE PARTS: reescribe las partes de la tabla desde cero usando toda la nueva configuración (ya que algunas, como use_const_adaptive_granularity, solo se aplicarán a las partes nuevas). #87774 (Azat Khuzhin).
  • Agregar los valores from y to a los dashboards del sistema para facilitar las investigaciones históricas. #87823 (Mikhail f. Shiryaev).
  • Se añade más información para el seguimiento del rendimiento en las consultas SELECT de Iceberg. #87903 (Daniil Ivanik).
  • Añade la nueva configuración joined_block_split_single_row para reducir el uso de memoria en los hash joins con muchas coincidencias por clave. Esto permite dividir en fragmentos los resultados del hash join incluso dentro de las coincidencias de una sola fila de la tabla izquierda, lo que resulta especialmente útil cuando una fila de la tabla izquierda coincide con miles o millones de filas de la tabla derecha. Antes, todas las coincidencias tenían que materializarse de una sola vez en memoria. Esto reduce el uso máximo de memoria, pero puede aumentar el uso de CPU. #87913 (Vladimir Cherkasov).
  • Mejora de la caché del sistema de archivos: reutilización del iterador de prioridad de la caché entre hilos que reservan espacio en la caché de forma concurrente. #87914 (Kseniia Sumarokova).
  • Se añadió la posibilidad de limitar las solicitudes de Keeper (ajuste max_request_size, igual que jute.maxbuffer para ZooKeeper, OFF de forma predeterminada por compatibilidad con versiones anteriores; se activará en próximas versiones). #87952 (Azat Khuzhin).
  • Se corrige clickhouse-benchmark para que no incluya trazas de pila en los mensajes de error de manera predeterminada. #87954 (Ahmed Gouda).
  • Evite usar la carga asíncrona de marks en el thread pool (load_marks_asynchronously=1) cuando los marks estén en caché (ya que el pool puede estar saturado y las consultas sufrirán una penalización por ello, incluso si los marks ya están en caché). #87967 (Azat Khuzhin).
  • Ytsaurus: permitir la creación de tablas/funciones de tabla/diccionarios con un subconjunto de columnas. #87982 (MikhailBurdukov).
  • A partir de ahora, system.zookeeper_connection_log viene habilitado de forma predeterminada y puede usarse para obtener información sobre las sesiones de Keeper. #88011 (János Benjamin Antal).
  • Hacer que el comportamiento de TCP y HTTP sea coherente cuando se pasan tablas externas duplicadas. HTTP permite pasar una tabla temporal varias veces. #88032 (Sema Checherinda).
  • Se eliminan los MemoryPools personalizados para leer Arrow/ORC/Parquet. Este componente parece innecesario después de https://github.com/ClickHouse/ClickHouse/pull/84082 porque ahora rastreamos todas las asignaciones de memoria en cualquier caso. #88035 (Nikita Mikhaylov).
  • Se permite crear una base de datos Replicated sin argumentos. #88044 (Pervakov Grigorii).
  • Se añadió compatibilidad para conectarse al puerto TLS de clickhouse-keeper y se mantuvieron los nombres de las opciones igual que en clickhouse-client. #88065 (Pradeep Chhetri).
  • Se añadió un nuevo evento de perfil para rastrear cuántas veces se rechazó una fusión en segundo plano por superar los límites de memoria. #88084 (Grant Holly).
  • Se añadió el parámetro opcional start_value a la función generateSerialID para especificar valores iniciales personalizados para las nuevas series. #88085 (Manuel).
  • Habilita el analizador para validar las expresiones predeterminadas de columna en CREATE/ALTER TABLE. #88087 (Max Justus Spransy).
  • Mejora interna en la planificación de consultas: uso de JoinStepLogical para CROSS JOIN. #88151 (Vladimir Cherkasov).
  • Compatibilidad total con el operador IS NOT DISTINCT FROM (<=>). #88155 (simonmichal).
  • Activar de forma predeterminada el perfilador global por muestreo: recopilar stacktraces de todos los hilos cada 10 segundos de tiempo de CPU y de tiempo real. #88209 (Alexander Tokmakov).
  • Se corrigió la compatibilidad de las operaciones EXCHANGE TABLES en tablas con el motor Alias. El motor ahora almacena la tabla de destino como nombres de base de datos y de tabla, en lugar de un ID de almacenamiento constante, lo que le permite resolver correctamente la tabla de destino después de los intercambios de tablas. #88233 (Kai Zhu).
  • Añade la configuración temporary_files_buffer_size para controlar el tamaño del búfer de escritura de archivos temporales. * Optimiza el consumo de memoria de la operación scatter (usada, por ejemplo, en grace hash join) para columnas LowCardinality. #88237 (Vladimir Cherkasov).
  • Se añadió compatibilidad para la lectura directa desde índices de texto con réplicas paralelas. Se mejoró el rendimiento de la lectura de índices de texto desde el almacenamiento de objetos. #88262 (Anton Popov).
  • Ahora la función generateSerialID admite un argumento no constante que contiene el nombre de la serie. Cierra #83750. #88270 (Alexey Milovidov).
  • Base de datos de catálogos de data lakes para procesamiento distribuido. #88273 (scanhex12).
  • Actualización del SDK de Azure para incluir la corrección de ‘Content-Length’ observada en las funcionalidades de copia y creación de contenedores. #88278 (Smita Kulkarni).
  • Hacer que la función lag sea insensible a mayúsculas y minúsculas para mantener la compatibilidad con MySQL. #88322 (Lonny Kapelushnik).
  • Se agrega la configuración keeper_server.coordination_settings.check_node_acl_on_remove. Si está habilitada, antes de eliminar un nodo se verificarán las ACL tanto del propio nodo como del nodo padre. De lo contrario, solo se verificará la ACL del nodo padre. #88513 (Antonio Andelic).
  • Las columnas JSON ahora se muestran con un formato más legible al usar el formato Vertical. Cierra #81794. #88524 (Frank Rosner).
  • Almacena los archivos de clickhouse-client (p. ej., el historial de consultas) en las ubicaciones descritas en la especificación XDG Base Directories, en lugar de en la raíz del directorio personal. ~/.clickhouse-client-history se seguirá usando si ya existe. #88538 (Konstantin Bogdanov).
  • Corrige una fuga de memoria provocada por GLOBAL IN (https://github.com/ClickHouse/ClickHouse/issues/88615). #88617 (pranav mehta).
  • Se añadió una sobrecarga a hasAny/hasAllTokens para que acepten una cadena como entrada. #88679 (George Larionov).
  • Después de este parche, la heurística to_remove_small_parts_at_right se ejecutará antes de calcular la puntuación del rango de merge. Antes, el selector de merge elegía el merge wide y luego filtraba por su sufijo. Corrección de: #85374. #88736 (Mikhail Artemenko).
  • Agrega un paso al script de posinstalación para clickhouse-keeper que habilita su inicio al arrancar. #88746 (YenchangChan).
  • Comprobar las credenciales en la interfaz web solo al pegarlas, en lugar de hacerlo con cada pulsación de tecla. Esto evita un problema con servidores LDAP mal configurados. Esto cierra #85777. #88769 (Alexey Milovidov).
  • Limita la longitud del mensaje de excepción cuando se infringe una restricción. En versiones anteriores, podía obtenerse un mensaje de excepción muy largo cuando se insertaba una cadena muy larga, y acababa escribiéndose en el query_log. Cierra #87032. #88801 (Alexey Milovidov).

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

  • Los resultados de las consultas ALTER solo se validan en el nodo iniciador para las bases de datos Replicated y las tablas replicadas internamente. Esto corrige situaciones en las que una consulta ALTER ya confirmada podía quedarse bloqueada en otros nodos. #83849 (János Benjamin Antal).
  • Limita el número de tareas de cada tipo en BackgroundSchedulePool. Evita situaciones en las que todos los slots están ocupados por tareas de un solo tipo, mientras otras tareas sufren inanición. También evita interbloqueos cuando las tareas se esperan entre sí. Esto se controla mediante la configuración del servidor background_schedule_pool_max_parallel_tasks_per_type_ratio. #84008 (Alexander Tokmakov).
  • Se corrigió un problema en GeoParquet que provocaba errores de protocolo en el cliente. #84020 (Michael Kolupaev).
  • Se corrige la resolución de funciones dependientes del host, como shardNum(), en subconsultas en el nodo iniciador. #84409 (Eduard Karacharov).
  • Apague correctamente las tablas al recuperar la réplica de la base de datos. Un apagado incorrecto provocaría un LOGICAL_ERROR en algunos motores de tabla durante la recuperación de la réplica de la base de datos. #84744 (Antonio Andelic).
  • Verificar los derechos de acceso al generar sugerencias de corrección de errores tipográficos para el nombre de la base de datos. #85371 (Dmitry Novik).
  • Se corrigió el manejo incorrecto de fechas anteriores al epoch con fracciones de segundo en varias funciones relacionadas con fecha y hora, como parseDateTime64BestEffort, change{Year,Month,Day} y makeDateTime64. Anteriormente, la parte subsegundo se restaba de los segundos en lugar de sumarse. Por ejemplo, parseDateTime64BestEffort('1969-01-01 00:00:00.468') devolvía 1968-12-31 23:59:59.532 en lugar de 1969-01-01 00:00:00.468. #85396 (xiaohuanlin).
    1. LowCardinality para columnas de hive 2. Completar las columnas de hive antes de las columnas virtuales (necesario para https://github.com/ClickHouse/ClickHouse/pull/81040) 3. LOGICAL_ERROR con un formato vacío para hive #85528 4. Corregir la comprobación de que las columnas de partición de hive sean las únicas columnas 5. Verificar que todas las columnas de hive estén especificadas en el esquema 6. Corrección parcial para parallel_replicas_cluster con hive 7. Usar un contenedor ordenado en extractkeyValuePairs para las utilidades de hive (necesario para https://github.com/ClickHouse/ClickHouse/pull/81040). #85538 (Arthur Passos).
  • Se evita la optimización innecesaria del primer argumento de las funciones IN, que a veces provocaba un error cuando se utilizaba el mapeo de arrays. #85546 (Yakov Olkhovskiy).
  • La correspondencia entre los identificadores de origen de Iceberg y los nombres de Parquet no se ajustó al esquema al escribir el archivo Parquet. Este PR procesa el esquema correspondiente a cada archivo de datos de Iceberg, no el actual. #85829 (Daniil Ivanik).
  • Se corrige la lectura del tamaño del archivo, separándola de su apertura. Está relacionado con https://github.com/ClickHouse/ClickHouse/pull/33372, que se introdujo en respuesta a un error en los kernels de Linux anteriores a la versión 5.10. #85837 (Konstantin Bogdanov).
  • ClickHouse Keeper ya no falla al iniciarse en sistemas donde IPv6 está deshabilitado a nivel del kernel (p. ej., RHEL con ipv6.disable=1). Ahora intenta usar un listener IPv4 como alternativa si falla el listener IPv6 inicial. #85901 (jskong1124).
  • Este PR cierra #77990. Se agregó compatibilidad para TableFunctionRemote con réplicas paralelas en globalJoin. #85929 (zoomxi).
  • Se corrige un puntero nulo en OrcSchemaReader::initializeIfNeeded(). Este PR soluciona el siguiente problema: #85292. #85951 (yanglongwei).
  • Añade una comprobación para permitir subconsultas correlacionadas en la cláusula FROM solo si usan columnas de la consulta externa. Corrige #85469. Corrige #85402. #85966 (Dmitry Novik).
  • Se corrige la actualización mediante ALTER de una columna con una subcolumna usada en la expresión materializada de otra columna. Anteriormente, una columna materializada con una subcolumna en su expresión no se actualizaba correctamente. #85985 (Pavel Kruglov).
  • Prohibir la modificación de columnas cuyas subcolumnas se utilicen en la PK o en la expresión de partición. #86005 (Pavel Kruglov).
  • Se corrige el fallo de los comandos ALTER COLUMN IF EXISTS cuando el estado de una columna cambia dentro de la misma sentencia ALTER. Comandos como DROP COLUMN IF EXISTS, MODIFY COLUMN IF EXISTS, COMMENT COLUMN IF EXISTS y RENAME COLUMN IF EXISTS ahora manejan correctamente los casos en los que una columna es eliminada por un comando previo de la misma sentencia. #86046 (xiaohuanlin).
  • Se corrige la lectura de subcolumnas con un modo de mapeo de columnas distinto del predeterminado en el almacenamiento DeltaLake. #86064 (Kseniia Sumarokova).
  • Se corrigió el uso de valores predeterminados incorrectos para la ruta con una sugerencia de Enum dentro de JSON. #86065 (Pavel Kruglov).
  • Análisis de la URL del catálogo hive de DataLake con saneamiento de la entrada. Cierra #86018. #86092 (rajat mohan).
  • Se corrigió un error lógico durante el redimensionamiento dinámico de la caché del sistema de archivos. Cierra #86122. Cierra https://github.com/ClickHouse/clickhouse-core-incidents/issues/473. #86130 (Kseniia Sumarokova).
  • Utiliza NonZeroUInt64 para logs_to_keep en DatabaseReplicatedSettings. #86142 (Tuan Pham Anh).
  • Una consulta FINAL con índice de salto generaba una excepción si la tabla (p. ej., ReplacingMergeTree) se había creado con la configuración index_granularity_bytes = 0. Ese problema ya se ha corregido. #86147 (Shankar Iyer).
  • Elimina el comportamiento indefinido y corrige problemas en el análisis de la expresión de partición de Iceberg. #86166 (Daniil Ivanik).
  • Se corrigió la inferencia de Date/DateTime/DateTime64 para fechas que están fuera del rango admitido. #86184 (Pavel Kruglov).
  • Se corrige un cierre inesperado cuando hay bloques const y no const en un mismo INSERT. #86230 (Azat Khuzhin).
  • Procesa por defecto las inclusiones de /etc/metrika.xml al crear discos desde SQL. #86232 (alekar).
  • Se corrige accurateCastOrNull/accurateCastOrDefault al convertir de String a JSON. #86240 (Pavel Kruglov).
  • Se admiten directorios sin ’/’ en el motor Iceberg. #86249 (scanhex12).
  • Se corrigió un fallo en replaceRegex con un haystack de tipo FixedString y una needle vacía. #86270 (Raúl Marín).
  • Se corrige un fallo durante ALTER UPDATE Nullable(JSON). #86281 (Pavel Kruglov).
  • Se corrigió la falta del definidor de columna en system.tables. #86295 (Raúl Marín).
  • Se corrige la conversión de tipo de LowCardinality(Nullable(T)) a Dynamic. #86365 (Pavel Kruglov).
  • Se corrige un error lógico durante la escritura en DeltaLake. Cierra #86175. #86367 (Kseniia Sumarokova).
  • Se corrigió 416 The range specified is invalid for the current size of the resource. The range specified is invalid for the current size of the resource al leer blobs vacíos desde Azure blob storage para el disco plain_rewritable. #86400 (Julia Kartseva).
  • Corregido GROUP BY Nullable(JSON). #86410 (Pavel Kruglov).
  • Se corrigió un error en las vistas materializadas: una MV podía dejar de funcionar si se creaba, se eliminaba y luego se volvía a crear con el mismo nombre. #86413 (Alexander Tokmakov).
  • Generar un error si no hay ninguna réplica disponible al leer desde las funciones *cluster. #86414 (Julian Maicher).
  • Se corrige la fuga de MergesMutationsMemoryTracking debida a las tablas Buffer y se corrige query_views_log para el streaming desde Kafka (y otros). #86422 (Azat Khuzhin).
  • Se corrige show tables después de eliminar la tabla de referencia del almacenamiento de alias. #86433 (RinChanNOW).
  • Se corrige la falta del encabezado de fragmento cuando send_chunk_header está habilitado y se invoca una UDF a través del protocolo HTTP. #86469 (Vladimir Cherkasov).
  • Se corrige un posible bloqueo mutuo cuando están habilitados los flushes del perfil de jemalloc. #86473 (Azat Khuzhin).
  • Se corrige la lectura de subcolumnas en el motor de tabla DeltaLake. Cierra #86204. #86477 (Kseniia Sumarokova).
  • Manejo adecuado del ID del host loopback para evitar colisiones al procesar tareas de DDL:. #86479 (Tuan Pham Anh).
  • Se corrigió detach/attach en las tablas del motor de base de datos PostgreSQL con columnas numéricas/decimales. #86480 (Julian Maicher).
  • Se corrige el uso de memoria sin inicializar en getSubcolumnType. #86498 (Raúl Marín).
  • Las funciones searchAny y searchAll, cuando se llaman con patrones vacíos, ahora devuelven true (es decir, “coincide con todo”). Antes, devolvían false. (issue #86300). #86500 (Elmi Ahmadov).
  • Se corrige la función timeSeriesResampleToGridWithStaleness() cuando el primer intervalo no tiene ningún valor. #86507 (Vitaly Baranov).
  • Se corrige el bloqueo causado por establecer merge_tree_min_read_task_size en 0. #86527 (yanglongwei).
  • Durante la lectura, el formato de cada archivo de datos se obtiene de los metadatos de Iceberg (antes se obtenía de los argumentos de la tabla). #86529 (Daniil Ivanik).
  • Corrige un fallo por el que algunos datos válidos enviados por usuarios a una columna AggregateFunction(quantileDD) podían hacer que las fusiones entraran en una recursión infinita. #86560 (Raphaël Thériault).
  • Se corrige que el motor de BD Backup provoque una excepción al ejecutar una consulta con archivos de partes de tamaño cero. #86563 (Max Justus Spransy).
  • Se corrige la ausencia del encabezado de fragmento cuando send_chunk_header está habilitado y la UDF se invoca a través del protocolo HTTP. #86606 (Vladimir Cherkasov).
  • Se corrige el error lógico de S3Queue “Expected current processor to be equal to ”, que se producía por la expiración de la sesión de Keeper. #86615 (Kseniia Sumarokova).
  • Errores relacionados con la nulabilidad en insert y pruning. Esto cierra #86407. #86630 (scanhex12).
  • No desactive la caché del sistema de archivos si la caché de metadatos de Iceberg está desactivada. #86635 (Daniil Ivanik).
  • Se corrigió el error ‘Deadlock in Parquet::ReadManager (single-threaded)’ del lector de Parquet v3. #86644 (Michael Kolupaev).
  • Se corrige el soporte para IPv6 en listen_host para ArrowFlight. #86664 (Vitaly Baranov).
  • Corrige el cierre en el manejador de ArrowFlight. Este PR corrige #86596. #86665 (Vitaly Baranov).
  • Se corrige un problema de las consultas distribuidas con describe_compact_output=1. #86676 (Azat Khuzhin).
  • Se corrigieron el análisis de las definiciones de ventana y la aplicación de los parámetros de consulta. #86720 (Azat Khuzhin).
  • Se corrigió la excepción Partition strategy wildcard can not be used without a '_partition_id' wildcard. al crear una tabla con PARTITION BY, pero sin el comodín de partición, algo que solía funcionar en versiones anteriores a la 25.8. Cierra https://github.com/ClickHouse/clickhouse-private/issues/37567. #86748 (Kseniia Sumarokova).
  • Se corrige LogicalError si las consultas paralelas intentan adquirir un único bloqueo. #86751 (Pervakov Grigorii).
  • Corrige la escritura de NULL en los datos JSON compartidos del formato de entrada RowBinary y añade algunas validaciones adicionales en ColumnObject. #86812 (Pavel Kruglov).
  • Compatibilidad con tipos JSON/Dynamic en tablas creadas con la función de tabla cluster. #86821 (Pavel Kruglov).
  • Se corrige la permutación vacía de Tuple con límite. #86828 (Pavel Kruglov).
  • No use un nodo de Keeper independiente para los nodos de procesamiento persistentes. Corrección de https://github.com/ClickHouse/ClickHouse/pull/85995. Cierra #86406. #86841 (Kseniia Sumarokova).
  • Se corrigió una tabla del motor TimeSeries que impedía la creación de una nueva réplica en una base de datos Replicated. #86845 (Nikolay Degterinsky).
  • Se corrige la consulta a system.distributed_ddl_queue en los casos en que faltan ciertos nodos de Keeper en algunas tareas. #86848 (Antonio Andelic).
  • Se corrigió el reposicionamiento al final del bloque descomprimido. #86906 (Pavel Kruglov).
  • Procesamiento de la excepción que se lanza durante la ejecución asíncrona del iterador de Iceberg. #86932 (Daniil Ivanik).
  • Se corrige el guardado de configuraciones XML preprocesadas de gran tamaño. #86934 (c-end).
  • Se corrige cómo se rellena el campo date en la tabla system.iceberg_metadata_log. #86961 (Daniil Ivanik).
  • Se corrigió la recalculación infinita de TTL con WHERE. #86965 (Anton Popov).
  • Se corrige el hecho de que el resultado de la función calculada en la CTE fuera no determinista en la consulta. #86967 (Yakov Olkhovskiy).
  • Se corrige LOGICAL_ERROR en EXPLAIN con pointInPolygon en columnas de la clave primaria. #86971 (Michael Kolupaev).
  • Se corrigió un posible resultado erróneo de la función uniqExact con los modificadores ROLLUP y CUBE. #87014 (Nikita Taranov).
  • Corrige las tablas de lago de datos cuyo nombre contiene una secuencia codificada en porcentaje. Cierra #86626. #87020 (Anton Ivashkin).
  • Se corrigió la resolución del esquema de la tabla con la table function url() cuando la configuración parallel_replicas_for_cluster_functions está establecida en 1. #87029 (Konstantin Bogdanov).
  • Aplicar correctamente CAST a la salida de PREWHERE tras dividirla en varios pasos. #87040 (Antonio Andelic).
  • Se corrigió el funcionamiento de las actualizaciones ligeras con la cláusula ON CLUSTER. #87043 (Anton Popov).
  • Se corrige la compatibilidad de algunos estados de funciones de agregación con el argumento String. #87049 (Pavel Kruglov).
  • Corrige el comportamiento incorrecto de IS NULL en columnas Nullable en OUTER JOIN con optimize_functions_to_subcolumns; se cierra #78625. #87058 (Vladimir Cherkasov).
  • Soluciona un problema por el que no se transfería el nombre del modelo de OpenAI. #87100 (Kaushik Iska).
  • EmbeddedRocksDB: La ruta debe estar dentro de user_files. #87109 (Raúl Marín).
  • Se corrigió un problema en las tablas KeeperMap creadas antes de la versión 25.1, que dejaban datos en ZooKeeper después de la consulta DROP. #87112 (Nikolay Degterinsky).
  • Corrige la lectura de los ID de campo de maps y arrays al leer Parquet. #87136 (scanhex12).
  • Se corrige la lectura de Array con la subcolumna de tamaños del array durante la materialización diferida. #87139 (Pavel Kruglov).
  • Se corrigió la contabilización incorrecta de la liberación de datos temporales en el seguimiento del límite max_temporary_data_on_disk_size, cierra #87118. #87140 (JIaQi).
  • La función checkHeaders ahora valida correctamente las cabeceras proporcionadas y rechaza las cabeceras prohibidas. Autor original: Michael Anastasakis (@michael-anastasakis). #87172 (Raúl Marín).
  • Iguala el comportamiento de toDate y toDate32 para todos los tipos numéricos. Corrige la comprobación de infraflujo de Date32 durante la conversión desde int16. #87176 (Pervakov Grigorii).
  • Se corrige la función CASE con argumentos de tipo Dynamic. #87177 (Pavel Kruglov).
  • Corrige un error lógico en las réplicas paralelas para consultas con múltiples JOIN, en particular con RIGHT JOIN después de LEFT/INNER JOIN. #87178 (Igor Nikonov).
  • Respetar la configuración input_format_try_infer_variants en la caché de inferencia de esquemas. #87180 (Pavel Kruglov).
  • Hacer que pathStartsWith solo coincida con las rutas bajo el prefijo. #87181 (Raúl Marín).
  • Se corrigió la lectura de un Array vacío desde una cadena vacía en CSV. #87182 (Pavel Kruglov).
  • Corrige un posible resultado incorrecto de EXISTS no correlacionado. Fallaba con execute_exists_as_scalar_subquery=1, que se introdujo en https://github.com/ClickHouse/ClickHouse/pull/85481 y afecta a 25.8. Soluciona #86415. #87207 (Nikolai Kochetov).
  • Se corrigieron errores lógicos en la columna virtual _row_number y en las eliminaciones por posición de Iceberg. #87220 (Michael Kolupaev).
  • Se corrige el LOGICAL_ERROR “Tamaño demasiado grande pasado al asignador de memoria” en JOIN por mezclar bloques const y no const. #87231 (Azat Khuzhin).
  • Genera un error si iceberg_metadata_log no está configurado, pero el usuario intenta obtener información de depuración sobre metadatos de Iceberg. Corrige el acceso a nullptr. #87250 (Daniil Ivanik).
  • Se corrigieron las actualizaciones ligeras con subconsultas que leen de otras tablas MergeTree. #87285 (Anton Popov).
  • Se corrigió la optimización move-to-prewhere, que no funcionaba en presencia de una ROW POLICY. Continuación de #85118. Cierra #69777. Cierra #83748. #87303 (Nikolai Kochetov).
  • Se corrigió la aplicación de parches a columnas con expresión predeterminada que no están presentes en las partes de datos. #87347 (Anton Popov).
  • Se corrige la actualización de EmbeddedRocksDB. #87392 (Raúl Marín).
  • Se corrigió la lectura directa desde el índice de texto en el almacenamiento de objetos. #87399 (Anton Popov).
  • Evita que se pueda crear un privilegio con un motor inexistente. #87419 (Jitendra).
  • Ignorar solo los errores not found para s3_plain_rewritable (lo que puede ocasionar todo tipo de problemas). #87426 (Azat Khuzhin).
  • Corrige los diccionarios con origen YTSaurus y layouts *range_hashed. #87490 (MikhailBurdukov).
  • Se corrige la creación de un array de tuplas vacías. #87520 (Pavel Kruglov).
  • Comprobación de columnas no válidas al crear tablas temporales. #87524 (Pavel Kruglov).
  • Nunca ponga las columnas de partición de Hive en la cabecera del formato. Corrige #87515. #87528 (Arthur Passos).
  • Se corrige la preparación para la lectura desde un formato en DeltaLake cuando se utiliza el formato de texto. #87529 (Pavel Kruglov).
  • Corrige la validación de acceso en las operaciones select e insert de las tablas Buffer. #87545 (pufit).
  • Impedir la creación de índices de omisión de datos en tablas S3. #87554 (Bharat Nallan).
  • Evita la fuga de memoria contabilizada en el logging asíncrono (puede provocar una desviación significativa; en 10 horas, ~100GiB) y en text_log (es posible casi la misma desviación). #87584 (Azat Khuzhin).
  • Se corrigió un error que podía provocar que las configuraciones globales del servidor se sobrescribieran con las configuraciones de SELECT de una vista o una vista materializada, si esa vista se eliminaba de forma asíncrona y el servidor se reiniciaba antes de que finalizara la limpieza en segundo plano. #87603 (Alexander Tokmakov).
  • Excluir los bytes de la caché de páginas en espacio de usuario (si es posible) al calcular el aviso de sobrecarga de memoria. #87610 (Bharat Nallan).
  • Se corrigió un error que hacía que un orden incorrecto de los tipos durante la deserialización de CSV provocara el LOGICAL_ERROR. #87622 (Yarik Briukhovetskyi).
  • Se corrigió el manejo incorrecto de command_read_timeout para los diccionarios ejecutables. #87627 (Azat Khuzhin).
  • Se corrigió el comportamiento incorrecto de SELECT * REPLACE en la cláusula WHERE al usar el nuevo analizador para filtrar columnas reemplazadas. #87630 (xiaohuanlin).
  • Se corrigió la agregación en dos niveles al usar Merge sobre Distributed. #87687 (c-end).
  • Se corrige la generación del bloque de salida en el algoritmo HashJoin cuando no se utiliza la lista de filas del lado derecho. Corrige #87401. #87699 (Dmitry Novik).
  • El modo de lectura de réplicas paralelas podía elegirse incorrectamente si no había datos que leer tras aplicar el análisis de índices. Cierra #87653. #87700 (zoomxi).
  • Se corrigió el manejo de las columnas timestamp y timestamptz en Glue. #87733 (Andrey Zvonov).
  • Con esto se cierra #86587. #87761 (scanhex12).
  • Corregida la escritura de valores booleanos en la interfaz de PostgreSQL. #87762 (Artem Yurov).
  • Se corrige el error de tabla desconocida en la consulta insert select con CTE, #85368. #87789 (Guang Zhao).
  • Se corrigió la lectura de la subcolumna map nula de Variants que no pueden estar dentro de Nullable. #87798 (Pavel Kruglov).
  • Se corrigió el manejo del error cuando no se logra eliminar completamente la base de datos en el clúster en el nodo secundario. #87802 (Tuan Pham Anh).
  • Corrige varios errores en los índices de omisión. #87817 (Raúl Marín).
  • En AzureBlobStorage, se actualizó para intentar primero la copia nativa y recurrir a lectura & escritura en caso de error ‘Unauthroized’ (en AzureBlobStorage, si las cuentas de almacenamiento del origen & el destino son diferentes, obtenemos el error ‘Unauthorized’). Y se corrigió la aplicación de “use_native_copy” cuando el endpoint está definido en la configuración. #87826 (Smita Kulkarni).
  • ClickHouse se bloquea si el archivo ArrowStream contiene un diccionario no único. #87863 (Ilya Golshtein).
  • Se corrige la fusión con proyecciones si el último bloque está vacío. #87928 (Raúl Marín).
  • No eliminar funciones inyectivas de GROUP BY si los tipos de los argumentos no están permitidos en GROUP BY. #87958 (Pavel Kruglov).
  • Corrección del descarte incorrecto de gránulos/particiones para claves basadas en fecha y hora al usar la configuración session_timezone en las consultas. #87987 (Eduard Karacharov).
  • Devuelve el número de filas afectadas tras una consulta en la Interfaz de PostgreSQL. #87990 (Artem Yurov).
  • Restringe el uso de filter pushdown en PASTE JOIN porque puede provocar resultados incorrectos. #88078 (Yarik Briukhovetskyi).
  • Aplica la normalización del URI antes de evaluar la comprobación de grants introducida por https://github.com/ClickHouse/ClickHouse/pull/84503. #88089 (pufit).
  • Se corrigió un error lógico cuando ARRAY JOIN COLUMNS() no encuentra ninguna columna en el nuevo analizador. #88091 (xiaohuanlin).
  • Corregida la advertencia “Uso elevado de memoria de ClickHouse” (sin incluir la caché de páginas). #88092 (Azat Khuzhin).
  • Se corrigió una posible corrupción de datos en tablas MergeTree con TTL establecido en una columna. #88095 (Anton Popov).
  • Se corrigió un fallo en las funciones mortonEncode y hilbertEncode al llamarlas con un argumento de tupla vacío. #88110 (xiaohuanlin).
  • Ahora las consultas ON CLUSTER tardarán menos cuando haya réplicas inactivas en el clúster. #88153 (alesapin).
  • Ahora el worker de DDL elimina los hosts obsoletos del conjunto de réplicas. Esto reducirá la cantidad de metadatos almacenados en ZooKeeper. #88154 (alesapin).
  • Deshacer correctamente la operación de mover el directorio en caso de error. Necesitamos reescribir todos los objetos prefix.path modificados durante la ejecución, no solo el de la raíz. #88198 (Mikhail Artemenko).
  • Se corrigió la propagación del indicador is_shared en ColumnLowCardinality. Puede provocar un resultado incorrecto en group-by si se inserta un valor nuevo en una columna después de que los valores hash ya se hayan calculado previamente y almacenado en caché en ReverseIndex. #88213 (Nikita Taranov).
  • Corrige el ajuste de carga de trabajo max_cpu_share. Ahora puede usarse sin tener configurado el ajuste de carga de trabajo max_cpus. #88217 (Neerav).
  • Se corrigió un error por el que mutaciones muy pesadas con subconsultas podían quedar atascadas en la etapa de preparación. Ahora es posible detener estas mutaciones con SYSTEM STOP MERGES. #88241 (alesapin).
  • Ahora las subconsultas correlacionadas funcionarán con almacenamiento de objetos. #88290 (alesapin).
  • Evita inicializar bases de datos de DataLake al acceder a system.projections y system.data_skipping_indices. #88330 (Azat Khuzhin).
  • Ahora, los catálogos de data lakes solo se mostrarán en las tablas de introspección del sistema si show_data_lake_catalogs_in_system_tables se habilita explícitamente. #88341 (alesapin).
  • Se corrigió DatabaseReplicated para que respete la configuración de interserver_http_host. #88378 (xiaohuanlin).
  • Los argumentos posicionales ahora se han deshabilitado explícitamente al definir proyecciones, ya que no tienen sentido en esta etapa interna de la consulta. Esto corrige #48604. #88380 (Amos Bird).
  • Se corrige la complejidad cuadrática en la función countMatches. Cierra #88400. #88401 (Alexey Milovidov).
  • Hace que los comandos ALTER COLUMN ... COMMENT para las tablas KeeperMap replicadas queden registrados en los metadatos de la base de datos Replicated y se propaguen a todas las réplicas. Cierra #88077. #88408 (Eduard Karacharov).
  • Se corrige un caso de falsa dependencia cíclica con vistas materializadas en Database Replicated, que impedía añadir nuevas réplicas a la base de datos. #88423 (Nikolay Degterinsky).
  • Se corrigió la agregación de columnas dispersas cuando group_by_overflow_mode está configurado como any. #88440 (Eduard Karacharov).
  • Se soluciona el error “columna no encontrada” al usar query_plan_use_logical_join_step=0 con varias cláusulas FULL JOIN USING. Cierra #88103. #88473 (Vladimir Cherkasov).
  • Los clústeres grandes con un número de nodos > 10 tienen una alta probabilidad de que falle la restauración con el error [941] 67c45db4-4df4-4879-87c5-25b8d1e0d414 <Trace>: RestoreCoordinationOnCluster The version of node /clickhouse/backups/restore-7c551a77-bd76-404c-bad0-3213618ac58e/stage/num_hosts changed (attempt #9), will try again. Muchos hosts sobrescriben el nodo num_hosts al mismo tiempo. La corrección hace dinámica la configuración que controla los intentos. Cierra #87721. #88484 (Mikhail f. Shiryaev).
  • Este PR es solo para garantizar la compatibilidad con la versión 23.8 y anteriores. Este problema de compatibilidad se introdujo con este PR: https://github.com/ClickHouse/ClickHouse/pull/54240 Este SQL fallará con enable_analyzer=0 (antes de 23.8, funcionaba correctamente) select * from t1 s final join ( select * from t2 final ) r final on s.key = r.key join ( select * from t3 final ) c final on s.key = c.key Porque JoinToSubqueryTransformVisitor reescribirá este SQL como SELECT `_--s.key` AS `s.key`, `_--s.value` AS `s.value`, `_--r.key` AS `r.key`, `_--r.value` AS `r.value`, `_--c.key` AS `c.key`, `_--c.value` AS `c.value` FROM ( SELECT value AS `_--s.value`, key AS `_--s.key`, r.value AS `_--r.value`, r.key AS `_--r.key` FROM t1 AS s FINAL ALL INNER JOIN ( SELECT key, value FROM t2 FINAL ) AS r FINAL ON `_--s.key` = `_--r.key` ) AS `--.s` ALL INNER JOIN ( SELECT value AS `_--c.value`, key AS `_--c.key` FROM ( SELECT key, value FROM t3 FINAL ) AS c FINAL ) AS `--.t` ON `_--s.key` = `_--c.key` Queremos reescribir este SQL como (solo moviendo el último FINAL) SELECT `_--s.key` AS `s.key`, `_--s.value` AS `s.value`, `_--r.key` AS `r.key`, `_--r.value` AS `r.value`, `_--c.key` AS `c.key`, `_--c.value` AS `c.value` FROM ( SELECT value AS `_--s.value`, key AS `_--s.key`, r.value AS `_--r.value`, r.key AS `_--r.key` FROM t1 AS s FINAL ALL INNER JOIN ( SELECT key, value FROM t2 FINAL ) AS r FINAL ON `_--s.key` = `_--r.key` ) AS `--.s` ALL INNER JOIN ( SELECT value AS `_--c.value`, key AS `_--c.key` FROM ( SELECT key, value FROM t3 FINAL ) AS c ) AS `--.t` FINAL ON `_--s.key` = `_--c.key`. #88491 (JIaQi).
  • Se corrige el desbordamiento de enteros detectado por UBSAN en el mensaje de error de accurateCast al convertir valores grandes a DateTime. #88520 (xiaohuanlin).
  • Se corrige CoalescingMergeTree para tipos Tuple. Esto cierra #88469. #88526 (scanhex12).
  • Se prohíben las eliminaciones para iceberg_format_version=1. Esto cierra #88444. #88532 (scanhex12).
  • Este parche corrige la operación de movimiento de los discos plain-rewritable para carpetas con cualquier nivel de profundidad. #88586 (Mikhail Artemenko).
  • Se corrige SQL SECURITY DEFINER con las funciones *cluster. #88588 (Julian Maicher).
  • Corrige un posible cierre inesperado causado por la mutación concurrente de las columnas const subyacentes de PREWHERE. #88605 (Azat Khuzhin).
  • Se corrigió la lectura del índice de texto y se habilitó la caché de condiciones de consulta (con las opciones use_skip_indexes_on_data_read y use_query_condition_cache habilitadas). #88660 (Anton Popov).
  • Una excepción Poco::TimeoutException lanzada desde Poco::Net::HTTPChunkedStreamBuf::readFromDevice provoca un cierre con SIGABRT. #88668 (Miсhael Stetsyuk).
  • Se corrigió la adición a system.zookeeper_connection_log en caso de que ClickHouse se conectara por primera vez tras recargar la configuración. #88728 (Antonio Andelic).
  • Se corrigió un error por el que la conversión de DateTime64 a Date con date_time_overflow_behavior = 'saturate' podía dar resultados incorrectos para valores fuera de rango al trabajar con zonas horarias. #88737 (Manuel).
  • Enésimo intento de corregir el “error de cero bytes” en el motor de tabla S3 con la caché habilitada. #88740 (Kseniia Sumarokova).
  • Corrige la validación de acceso al hacer select en la función de tabla loop. #88802 (pufit).
  • Capturar excepciones cuando falle el logging asíncrono para evitar que el programa se aborte. #88814 (Raúl Marín).
Última modificación el 10 de junio de 2026