Saltar al contenido principal

Cambios incompatibles con versiones anteriores

  • El formato de salida Parquet convierte las columnas Date y DateTime en tipos de fecha/hora compatibles con Parquet, en lugar de escribirlas como números en bruto. DateTime pasa a ser DateTime64(3) (antes: UInt32); la configuración output_format_parquet_datetime_as_uint32 restaura el comportamiento anterior. Date pasa a ser Date32 (antes: UInt16). #70950 (Michael Kolupaev).
  • No permitir por defecto tipos comparables (como JSON/Object/AggregateFunction) en ORDER BY ni en las funciones de comparación less/greater/equal/etc. #73276 (Pavel Kruglov).
  • JSONEachRowWithProgress escribirá el progreso cada vez que se produzca. En versiones anteriores, el progreso solo se mostraba después de cada bloque del resultado, lo que lo hacía inútil. Se ha cambiado la forma en que se muestra el progreso: ya no mostrará valores cero. Tenga en cuenta que el progreso se envía incluso cuando se produce con frecuencia. Esto puede generar un volumen significativo de tráfico. Tenga en cuenta que el progreso no se vacía cuando la salida está comprimida. Esto cierra #70800. #73834 (Alexey Milovidov).
  • El origen del diccionario mysql ya no realiza la consulta SHOW TABLE STATUS, porque no aporta ningún valor para las tablas InnoDB ni para ninguna versión reciente de MySQL. Esto cierra #72636. Este cambio es retrocompatible, pero se incluye en esta categoría para que pueda advertirlo. #73914 (Alexey Milovidov).
  • Las tablas Merge unificarán la estructura de las tablas subyacentes tomando la unión de sus columnas y deduciendo tipos comunes. Esto resuelve #64864. Esto resuelve #35307. En determinados casos, este cambio podría no ser compatible con versiones anteriores. Un ejemplo es cuando no existe un tipo común entre las tablas, pero aún es posible convertir al tipo de la primera tabla, como en el caso de UInt64 e Int64, o de cualquier tipo numérico y String. Si desea volver al comportamiento anterior, establezca merge_table_max_tables_to_look_for_schema_inference en 1 o compatibility en 24.12 o una versión anterior. #73956 (Alexey Milovidov).
  • Las consultas CHECK TABLE ahora requieren un privilegio CHECK independiente. En versiones anteriores, bastaba con contar con el privilegio SHOW TABLES para ejecutar estas consultas. Pero una consulta CHECK TABLE puede ser costosa, y los límites habituales de complejidad de las consultas SELECT no se le aplican. Esto podía dar lugar a un posible DoS. #74471 (Alexey Milovidov).
  • Compruebe que todas las columnas de una vista materializada coincidan con las de la tabla de destino si allow_materialized_view_with_bad_select es false. #74481 (Christoph Wurm).
  • La función h3ToGeo() ahora devuelve los resultados en el orden (lat, lon) (que es el orden estándar de las funciones geométricas). Los usuarios que deseen mantener el orden heredado de los resultados (lon, lat) pueden establecer la configuración h3togeo_lon_lat_result_order = true. #74719 (Manish Gill).
  • Se añaden los formatos JSONCompactEachRowWithProgress y JSONCompactStringsEachRowWithProgress. Continuación de #69989. JSONCompactWithNames y JSONCompactWithNamesAndTypes ya no muestran “totals”; al parecer, se trataba de un error de implementación. #75037 (Alexey Milovidov).
  • Cambie el valor predeterminado de format_alter_operations_with_parentheses a true para que la lista de comandos ALTER no sea ambigua (consulte https://github.com/ClickHouse/ClickHouse/pull/59532). Esto rompe la replicación con clústeres anteriores a la versión 24.3. Si está actualizando un clúster que usa versiones anteriores, desactive esta configuración en la configuración del servidor o actualice primero a 24.3. #75302 (Raúl Marín).
  • Se prohíbe TRUNCATE DATABASE en bases de datos Replicated. #76651 (Bharat Nallan).
  • Las réplicas paralelas se deshabilitan de forma predeterminada cuando el analizador está deshabilitado, independientemente de la configuración de compatibility. Aun así, es posible cambiar este comportamiento estableciendo explícitamente parallel_replicas_only_with_analyzer en false. #77115 (Igor Nikonov).
  • Ya no es posible usar NaN o inf como valores de coma flotante en los parámetros de configuración. #77546 (Yarik Briukhovetskyi).
  • Corrige los casos en que dateTrunc se usa con argumentos negativos de fecha/fecha y hora. #77622 (Yarik Briukhovetskyi).
  • Se ha eliminado la integración heredada con MongoDB. La configuración del servidor use_legacy_mongodb_integration ha quedado obsoleta y ahora ya no hace nada. #77895 (Robert Schulze).
  • Mejora la validación de SummingMergeTree para omitir la agregación de las columnas usadas en las claves de partición o de ordenación. #78022 (Pervakov Grigorii).

Nuevas características

  • Se añadió una caché en memoria para los gránulos deserializados de índices de omisión. Esto debería acelerar las consultas repetidas que usan índices de omisión. El tamaño de la nueva caché se controla con las configuraciones del servidor skipping_index_cache_size y skipping_index_cache_max_entries. La motivación original de esta caché fueron los índices de similitud vectorial, que ahora son mucho más rápidos. #70102 (Robert Schulze).
  • Una nueva implementación de la caché de páginas en espacio de usuario, que permite almacenar los datos en la memoria del propio proceso en lugar de depender de la caché de páginas del sistema operativo. Resulta útil cuando los datos se almacenan en un sistema de archivos virtual remoto sin el respaldo de la caché del sistema de archivos local. #70509 (Michael Kolupaev).
  • Se añade una configuración para consultar tablas Iceberg en una marca de tiempo específica. #71072 (Brett Hoerner).
  • Implementar la poda de particiones en tablas Iceberg para operaciones de particionado por transformación relacionadas con el tiempo en Iceberg. #72044 (Daniil Ivanik).
  • Se añadió la posibilidad de crear índices min-max (skipping) de forma predeterminada para las columnas gestionadas por MergeTree mediante las opciones de configuración enable_minmax_index_for_all_numeric_columns (para columnas numéricas) y enable_minmax_index_for_all_string_columns (para columnas de tipo cadena). Por ahora, ambas opciones de configuración están deshabilitadas, por lo que todavía no hay cambios en el comportamiento. #72090 (Smita Kulkarni).
  • Se añadió la función de agregación sequenceMatchEvents, que devuelve las marcas de tiempo de los eventos coincidentes de la cadena de eventos más larga del patrón. #72349 (UnamedRus).
  • Las sentencias SELECT y VIEW ahora admiten aliases; por ejemplo, SELECT b FROM (SELECT number, number*2 FROM numbers(2)) AS x (a, b);. Esto permite ejecutar la consulta 15 de TPC-H sin modificaciones. #72480 (Yarik Briukhovetskyi).
  • Se añadió una nueva configuración enable_adaptive_memory_spill_scheduler que permite que varios grace JOINs en la misma consulta supervisen su huella de memoria combinada y activen de forma adaptativa el volcado a almacenamiento externo para evitar MEMORY_LIMIT_EXCEEDED. #72728 (lgbo).
  • Se agregó la función arrayNormalizedGini. #72823 (flynn).
  • Se admiten tipos de datos Decimal de baja cardinalidad; se corrige #72256. #72833 (zhanglistar).
  • Cuando min_age_to_force_merge_seconds y min_age_to_force_merge_on_partition_only están habilitados, la fusión de partes ignorará el límite máximo de bytes. #73656 (Kai Zhu).
  • Se admite la lectura de valores HALF_FLOAT desde Apache Arrow/Parquet/ORC (se leen como Float32). Esto cierra #72960. Tenga en cuenta que el half float IEEE-754 no es lo mismo que BFloat16. Cierra #73835. #73836 (Alexey Milovidov).
  • La tabla system.trace_log contendrá dos columnas nuevas, symbols y lines, que contienen la traza de pila simbolizada. Esto permite recopilar y exportar fácilmente información de perfiles. Esto se controla mediante el valor de configuración del servidor symbolize dentro de trace_log y está habilitado de forma predeterminada. #73896 (Alexey Milovidov).
  • Añade una nueva función, generateSerialID, que puede utilizarse para generar números autoincrementales en tablas. Continuación de #64310 por kazalika. Esto cierra #62485. #73950 (Alexey Milovidov).
  • Se añade la sintaxis query1 PARALLEL WITH query2 PARALLEL WITH query3 ... PARALLEL WITH queryN. Esto significa que las subconsultas {query1, query2, ... queryN} pueden ejecutarse en paralelo entre sí (y es preferible). #73983 (Vitaly Baranov).
  • Ahora, la UI de Play tiene una barra de progreso durante la ejecución de la consulta. Permite cancelar consultas. Muestra el número total de registros e información detallada sobre la velocidad. La tabla puede renderizarse de forma incremental en cuanto llegan los datos. Se habilita la compresión HTTP. El renderizado de la tabla ahora es más rápido. El encabezado de la tabla queda fijo. Permite seleccionar celdas y navegar entre ellas con las teclas de dirección. Se corrige el problema por el que el contorno de la celda seleccionada la hacía más pequeña. Las celdas ya no se expanden al pasar el ratón por encima, sino solo al seleccionarlas. El momento para detener el renderizado de los datos entrantes se decide en el client en lugar de en el servidor. Resalta los grupos de dígitos en los números. El diseño general se renovó y ahora es más marcado. Comprueba si el servidor es accesible y si las credenciales son correctas, y muestra la versión del servidor y el tiempo de actividad. El icono de la nube se muestra con contorno en todas las fuentes, incluso en Safari. Los enteros grandes dentro de tipos de datos anidados se representarán mejor. Mostrará inf/nan correctamente. Mostrará los tipos de datos al pasar el ratón sobre el encabezado de una columna. #74204 (Alexey Milovidov).
  • Se añade la posibilidad de crear índices min-max (de omisión) de forma predeterminada para las columnas gestionadas por MergeTree mediante las configuraciones add_minmax_index_for_numeric_columns (para columnas numéricas) y add_minmax_index_for_string_columns (para columnas de cadena). Por ahora, ambas configuraciones están deshabilitadas, por lo que todavía no hay cambios de comportamiento. #74266 (Smita Kulkarni).
  • Añade los campos script_query_number y script_line_number a system.query_log, a ClientInfo del protocolo nativo y a los logs del servidor. Esto cierra #67542. Agradecimientos a pinsvin00 por haber impulsado esta funcionalidad anteriormente en #68133. #74477 (Alexey Milovidov).
  • Añade compatibilidad con el operador de resta para DateTime64, lo que permite la resta entre valores de DateTime64, así como con DateTime. #74482 (Li Yin).
  • Se añade compatibilidad con el motor de tabla DeltaLake para AzureBlobStorage. Corrige #68043. #74541 (Smita Kulkarni).
  • Agregar la configuración bind_host para definir la dirección IP de origen de las conexiones del clickhouse client. #74741 (Todd Yocum).
  • Se añadió la posibilidad de aplicar mutaciones no finalizadas (no materializadas por un proceso en segundo plano) durante la ejecución de consultas SELECT, inmediatamente después de su envío. Puede habilitarse estableciendo apply_mutations_on_fly. #74877 (Anton Popov).
  • Se corrigieron algunos casos inesperados que se producían cuando los argumentos de fecha y hora de toStartOfInterval son negativos. Para ello, se implementó una nueva función llamada toStartOfIntervalAllowNegative, que hace prácticamente lo mismo, pero solo devuelve Date32/DateTime64. #74933 (Yarik Briukhovetskyi).
  • Se ha añadido una nueva función initialQueryStartTime. Devuelve la hora de inicio de la consulta actual. El valor es el mismo en todos los segmentos durante una consulta distribuida. #75087 (Roman Lomonosov).
  • Se introducen parametrized_view_parameters en system.tables. Cierra https://github.com/clickhouse/clickhouse/issues/66756. #75112 (NamNguyenHoai).
  • Permite modificar el comentario de una base de datos. Cierra #73351 ### Entrada de documentación para cambios visibles para el usuario. #75622 (NamNguyenHoai).
  • Se añadió la posibilidad de ATTACH a tablas sin la capa de base de datos (evita el hack de UUID). #75788 (Azat Khuzhin).
  • Se añadió la configuración del servidor concurrent_threads_scheduler, que determina cómo se distribuyen los slots de CPU entre las consultas concurrentes. Puede establecerse en round_robin (comportamiento anterior) o en fair_round_robin para resolver el problema de la distribución desigual de CPU entre las consultas INSERT y SELECT. #75949 (Sergei Trifonov).
  • Se vuelve a incorporar el códec QPL, que se había eliminado en la versión 24.10 por problemas de licencia. #76021 (Konstantin Bogdanov).
  • Se agregó la función arraySymmetricDifference. Devuelve todos los elementos de varios argumentos de tipo array que no aparecen en todos los argumentos. Ejemplo: SELECT arraySymmetricDifference([1, 2], [2, 3]) devuelve [1, 3]. (issue #61673). #76231 (Filipp Abapolov).
  • Se añade la función de agregación estimatecompressionratio; consulta #70801. #76661 (Tariq Almawash).
  • Los eventos de perfil FilterTransformPassedRows y FilterTransformPassedBytes mostrarán la cantidad de filas y bytes filtrados durante la ejecución de la consulta. #76662 (Onkar Deshpande).
  • Se añadió la función hash keccak256, de uso habitual en implementaciones de blockchain, especialmente en sistemas basados en EVM. #76669 (Arnaud Briche).
  • Scram SHA256 y actualización de la autenticación wire de Postgres. #76839 (scanhex12).
  • Esta funcionalidad añade la posibilidad de definir una lista de encabezados que se reenvían desde los encabezados de la solicitud del client al autenticador HTTP externo. #77054 (inv2004).
  • Compatibilidad con IcebergMetadataFilesCache, que almacenará los archivos manifest/list y metadata.json en una sola caché. #77156 (Han Fei).
  • Se añaden las funciones arrayLevenshteinDistance, arrayLevenshteinDistanceWeighted y arraySimilarity. #77187 (Mikhail f. Shiryaev).
  • Añade tres funciones nuevas: icebergTruncate, según la especificación https://iceberg.apache.org/spec/#truncate-transform-details, toYearNumSinceEpoch y toMonthNumSinceEpoch. Añade compatibilidad con la transformación truncate en la poda de particiones para el motor Iceberg. #77403 (alesapin).
  • Permite a un usuario consultar el estado de una tabla Iceberg tal como existía en un punto anterior en el tiempo. #77439 (Daniil Ivanik).
  • Se añadió la planificación de slots de CPU para cargas de trabajo; consulta https://clickhouse.com/docs/operations/workload-scheduling#cpu_scheduling para más detalles. #77595 (Sergei Trifonov).
  • La función hasAll() ahora puede aprovechar los índices de omisión para texto completo tokenbf_v1 y ngrambf_v1. #77662 (UnamedRus).
  • El tipo de datos JSON está listo para producción. Consulte https://jsonbench.com/. Los tipos de datos Dynamic y Varaint están listos para producción. #77785 (Alexey Milovidov).
  • Se añadió una caché en memoria para índices de similitud vectorial deserializados. Esto debería acelerar las consultas repetidas de búsqueda aproximada de vecinos más cercanos (ANN). El tamaño de la nueva caché está controlado por las configuraciones del servidor vector_similarity_index_cache_size y vector_similarity_index_cache_max_entries. Esta funcionalidad sustituye la función de caché para índices de omisión de datos de versiones anteriores. #77905 (Shankar Iyer).
  • Se añadieron las funciones sparseGrams y sparseGramsHashes, junto con sus versiones UTF-8. Autor: scanhex12. #78176 (Pervakov Grigorii).
  • Se añade la función toInterval. Esta función acepta 2 argumentos (valor y unidad) y convierte el valor en un tipo Interval específico. #78723 (Andrew Davis).

Características experimentales

  • Permitir merges automáticos de limpieza de particiones completas tras un timeout configurable con un nuevo ajuste enable_replacing_merge_with_cleanup_for_min_age_to_force_merge. #76440 (Christoph Wurm).
  • Añadir compatibilidad con Unity Catalog para tablas DeltaLake sobre AWS S3 y el sistema de archivos local. #76988 (alesapin).
  • Introducir una integración experimental con el catálogo de servicios de AWS Glue para tablas Iceberg. #77257 (alesapin).

Mejoras del rendimiento

  • Optimiza el rendimiento con proyección diferida para evitar leer las columnas no utilizadas. #55518 (Xiaozhe Yu).
  • Empezar a comparar filas por las columnas con más probabilidades de ser distintas. #63780 (UnamedRus).
  • Optimización del formato de entrada RowBinary. Cierra #63805. #65059 (Pavel Kruglov).
  • Se acelera la deserialización de cadenas mediante algunas optimizaciones de bajo nivel. #65948 (Nikita Taranov).
  • Aplicar el atributo preserve_most en algunas partes del código. #67778 (Nikita Taranov).
  • Se implementa la caché de condiciones de consulta para mejorar el rendimiento de las consultas mediante condiciones repetidas. El intervalo de la porción de datos que no cumple la condición se recuerda como un índice temporal en memoria. Las consultas posteriores usarán este índice. cierra #67768 ### Entrada de documentación para cambios visibles para el usuario. #69236 (zhongyuankai).
  • Se añadió soporte para la precarga asíncrona de IO en NativeORCBlockInputFormat, lo que mejora el rendimiento general al ocultar la latencia remota de IO. El aumento de velocidad podría alcanzar 1.47x en mi caso de prueba. #70534 (李扬).
  • Mejora el rendimiento de grace hash join al reorganizar por rangos la tabla del lado derecho del join según las claves. #72237 (kevinyhzou).
  • Se vuelve a respetar ttl_only_drop_parts en materialize ttl; solo se leen las columnas necesarias para recalcular el TTL y eliminar las partes al reemplazarlas por una vacía. #72751 (Andrey Zvonov).
  • Permitir que arrayROCAUC y arrayAUCPR calculen el área parcial de la curva completa, de modo que su cálculo pueda paralelizarse en conjuntos de datos enormes. #72904 (Emmanuel).
  • Se evita crear demasiados hilos inactivos. #72920 (Guo Wangyang).
  • Se eliminó de la fase de probe del algoritmo JOIN parallel_hash la división por hash de los bloques de la tabla izquierda. #73089 (Nikita Taranov).
  • No enumeres las claves del almacenamiento de blobs si en la función de tabla solo hay expansión con llaves. Cierra #73333. #73518 (Konstantin Bogdanov).
  • Sustituir Int256 y UInt256 por el builtin i256 de clang en los cálculos aritméticos según las pruebas de #70502. #73658 (李扬).
  • Añade una vía rápida para funciones cuyos tipos de argumentos son todos numéricos. Corrige problemas de rendimiento en https://github.com/ClickHouse/ClickHouse/pull/72258. #73820 (李扬).
  • No aplicar maskedExecute a columnas que no sean funciones; mejorar el rendimiento de la ejecución de cortocircuito. #73965 (lgbo).
  • Se desactiva la detección de cabeceras para Kafka/NATS/RabbitMQ/FileLog para mejorar el rendimiento. #74006 (Azat Khuzhin).
  • Use wrappers de log por valor y no los asigne en el heap. #74034 (Mikhail Artemenko).
  • Ejecute un pipeline con un mayor grado de paralelismo después de la agregación con grouping sets. #74082 (Nikita Taranov).
  • Se reduce la sección crítica en MergeTreeReadPool. #74202 (Guo Wangyang).
  • Se optimizó la función indexHint. Ahora, las columnas que solo se utilizan como argumentos de la función indexHint no se leen de la tabla. #74314 (Anton Popov).
  • Mejora del rendimiento de las réplicas paralelas. La deserialización de paquetes en el iniciador de la consulta, para los paquetes no relacionados con el protocolo de réplicas paralelas, ahora siempre se realiza en el hilo del pipeline. Antes, podía realizarse en un hilo encargado de la planificación del pipeline, lo que podía reducir la capacidad de respuesta del iniciador y retrasar la ejecución del pipeline. #74398 (Igor Nikonov).
  • Se corrigió el cálculo del tamaño en memoria para las columnas LowCardinality. #74688 (Nikita Taranov).
  • Mejora el rendimiento de la lectura de la columna JSON completa en partes Wide desde S3. Esto se logra mediante la incorporación de prefetches para la deserialización de prefijos de subcolumnas, una caché de prefijos deserializados y la deserialización paralela de prefijos de subcolumnas. Mejora la lectura de la columna JSON desde S3 en 4 veces en consultas como SELECT data FROM table y en unas 10 veces en consultas como SELECT data FROM table LIMIT 10. #74827 (Pavel Kruglov).
  • Preasignar la memoria utilizada por las async inserts para mejorar el rendimiento. #74945 (Ilya Golshtein).
  • Se corrigió la doble preasignación en ConcurrentHashJoin si el optimizador invierte los lados del join. #75149 (Nikita Taranov).
  • Se corrigió la contención innecesaria en parallel_hash cuando max_rows_in_join = max_bytes_in_join = 0. #75155 (Nikita Taranov).
  • Ligera mejora en algunos casos de join: se precalcula el número de filas de salida y se reserva memoria para ellas. #75376 (Alexander Gololobov).
  • Los archivos de metadatos plain_rewritable son pequeños y no necesitan un búfer predeterminado grande. Use un búfer de escritura del tamaño adecuado para ajustarse a la ruta indicada, lo que mejora el aprovechamiento de la memoria cuando hay una gran cantidad de partes activas. ### Entrada de documentación para cambios de cara al usuario. #75758 (Julia Kartseva).
  • En algunos casos (p. ej., en una columna Array vacía), las partes de datos pueden contener archivos vacíos. Podemos omitir la escritura de blobs vacíos en ObjectStorage y almacenar solo los metadatos de esos archivos cuando la tabla reside en un disco con el almacenamiento de metadatos y el de objetos separados. #75860 (Alexander Gololobov).
  • Se descubrió que el control de concurrencia podía provocar una distribución injusta de la CPU entre los INSERT y los SELECT: todos los slots de CPU se asignaban incondicionalmente (sin competencia) a los INSERT con max_threads = 1, mientras que los SELECT con valores altos de max_threads sufrían un rendimiento deficiente porque solo usaban un único hilo. #75941 (Sergei Trifonov).
  • Optimización trivial de wrapInNullable para evitar la asignación innecesaria del mapa de nulos. #76489 (李扬).
  • Mejora el rendimiento de min/max para Decimal32/Decimal64/DateTime64. #76570 (李扬).
  • Expulsa activamente los datos de la caché cuando se eliminan partes. Evita que la caché crezca hasta el tamaño máximo si la cantidad de datos es menor. #76641 (Alexey Milovidov).
  • La compilación de consultas (configuración compile_expressions) ahora tiene en cuenta el tipo de máquina. Esto acelera considerablemente este tipo de consultas. #76753 (Robert Schulze).
  • Optimiza arraySort. #76850 (李扬).
  • Acelera la generación del resultado de JOIN mediante la desvirtualización de las llamadas a col->insertFrom(). #77350 (Alexander Gololobov).
  • Fusionar las marcas de una misma parte y escribirlas en la caché de condiciones de consulta de una sola vez para reducir el uso de bloqueos. #77377 (zhongyuankai).
  • Optimiza ORDER BY para columnas Nullable individuales o de baja cardinalidad. #77789 (李扬).
  • Deshabilitar filesystem_cache_prefer_bigger_buffer_size cuando la caché se utiliza de forma pasiva, por ejemplo durante las fusiones. #77898 (Kseniia Sumarokova).
  • Se implementa la optimización trivial de conteo para Iceberg. Ahora, las consultas con count() y sin ningún filtro deberían ser más rápidas. Cierra #77639. #78090 (alesapin).
  • Se añade compatibilidad con la poda de datos de Iceberg en función de los valores lower_bound y uppert_bound de las columnas. Corrige #77638. #78242 (alesapin).
  • Optimización del uso de memoria de NativeReader. #78442 (Azat Khuzhin).
  • Optimización trivial: no reescribir count(if()) como countIf si se requiere CAST. Se cierra #78564. #78565 (李扬).

Mejoras

  • Se redujo la cantidad de solicitudes a Keeper al eliminar el uso de solicitudes get individuales, que podrían haber provocado una carga significativa en Keeper con el aumento del número de réplicas, en los lugares donde multiRead está disponible. #56862 (Nikolay Degterinsky).
  • Se añade compatibilidad con la autenticación SSL mediante colecciones con nombre para MySQL. Cierra #59111. #59452 (Nikolay Degterinsky).
  • Mejora el rendimiento de la infraestructura del nuevo analizador al almacenar ColumnPtr en lugar de Field en ConstantNode. Relacionado con #62245. #63198 (Dmitry Novik).
  • Rechazar consultas cuando el servidor esté sobrecargado. La decisión se toma en función de la proporción entre el tiempo de espera (OSCPUWaitMicroseconds) y el tiempo de CPU ocupado (OSCPUVirtualTimeMicroseconds). La consulta se descarta con cierta probabilidad cuando esta proporción está entre min_os_cpu_wait_time_ratio_to_throw y max_os_cpu_wait_time_ratio_to_throw (estas son configuraciones a nivel de consulta). #63206 (Alexey Katsman).
  • Descartar los bloques lo antes posible para reducir el uso de memoria. #65647 (lgbo).
  • La tabla processors_profile_log ahora tiene una configuración predeterminada con un TTL de 30 días. #66139 (Ilya Yatsishin).
  • Permite crear un índice bloom_filter en columnas con el tipo de datos DateTime64. #66416 (Yutong Xiao).
  • Se introducen intervalos de latencia y se usan para hacer seguimiento de los tiempos de conexión y de la primera lectura/escritura de bytes en las solicitudes de S3. De este modo, más adelante se podrán usar los datos recopilados para calcular percentiles aproximados y ajustar los tiempos de espera. #69783 (Alexey Katsman).
  • Las consultas enviadas al almacenamiento Executable ya no están limitadas a una ejecución de un solo hilo. #70084 (yawnt).
  • Se añadieron cabeceras HTTP a la tabla de logs de spans de OpenTelemetry para mejorar la trazabilidad. #70516 (jonymohajanGmail).
  • Admite la escritura de archivos ORC con una zona horaria personalizada, no siempre con la zona horaria GMT. #70615 (kevinyhzou).
  • Sustituye las funciones de tabla por sus alternativas -Cluster si están habilitadas las réplicas paralelas. Corrige #65024. #70659 (Konstantin Bogdanov).
  • Se respeta la configuración de programación de IO al escribir copias de seguridad entre nubes. #71093 (János Benjamin Antal).
  • Restablecer la conexión con las réplicas de diccionarios de MySQL y Postgres en segundo plano para no retrasar las solicitudes a los diccionarios correspondientes. #71101 (Yakov Olkhovskiy).
  • Añadir el alias de la métrica a system.asynchronous_metrics. #71164 (megao).
  • Las actualizaciones de las vistas materializadas actualizables ahora se muestran en system.query_log. #71333 (Michael Kolupaev).
  • Evaluar conjuntamente los bloom filters de Parquet y los índices min/max. Necesario para dar soporte correcto a: x = 3 or x > 5 donde data = [1, 2, 4, 5]. #71383 (Arthur Passos).
  • Mejoras en las métricas interactivas. Se corrige un problema por el que las métricas de las réplicas paralelas no se mostraban por completo. Las métricas se muestran en orden de actualización más reciente y, después, lexicográficamente por nombre. No se muestran métricas obsoletas. #71631 (Julia Kartseva).
  • Históricamente, por alguna razón, la consulta ALTER TABLE MOVE PARTITION TO TABLE comprobaba los permisos SELECT y ALTER DELETE en lugar del permiso específico ALTER_MOVE_PARTITION. Este PR utiliza este tipo de acceso. Por compatibilidad, este permiso también se concederá implícitamente si se han concedido SELECT y ALTER DELETE, pero este comportamiento se eliminará en futuras versiones. Cierra #16403. #71632 (pufit).
  • Activa use_hive_partitioning de forma predeterminada. #71636 (Yarik Briukhovetskyi).
  • Lanzar una excepción al intentar materializar una columna en la clave de ordenación, en lugar de permitir que altere el orden de clasificación. Sin embargo, esto no resuelve #71777. #71891 (Peter Nguyen).
  • Permitir una planificación de join más general cuando está habilitado el algoritmo de hash join. #71926 (János Benjamin Antal).
  • Ocultar los secretos en EXPLAIN QUERY TREE. #72025 (Yakov Olkhovskiy).
  • Permite usar un disco configurable para almacenar los archivos de metadatos de bases de datos y tablas. El nombre del disco puede establecerse mediante el parámetro de configuración database_disk.disk. #72027 (Tuan Pham Anh).
  • Soporte para tipos lógicos enteros de Parquet en el lector nativo. #72105 (Arthur Passos).
  • Hacer que el formato de salida JSON sea Pretty de forma predeterminada. Añadir la nueva configuración output_format_json_pretty_print para controlarlo y activarla de forma predeterminada. #72148 (Pavel Kruglov).
  • Solicita credenciales de forma interactiva en el navegador si el usuario default requiere una contraseña. En versiones anteriores, el servidor devolvía HTTP 403; ahora devuelve HTTP 401. #72198 (Alexey Milovidov).
  • Este PR convierte los tipos de acceso CREATE_USER, ALTER_USER, DROP_USER, CREATE_ROLE, ALTER_ROLE, DROP_ROLE de globales a parametrizados. Esto significa que ahora puedes otorgar permisos de gestión de acceso con mayor precisión:. #72246 (pufit).
  • Permitir nombres de segmentos en la configuración del clúster. #72276 (MikhailBurdukov).
  • Se admite CAST y ALTER entre tipos JSON con parámetros diferentes. #72303 (Pavel Kruglov).
  • Añadir la columna latest_fail_error_code_name a system.mutations. Necesitamos esta columna para introducir una nueva métrica sobre mutaciones atascadas y usarla para crear gráficos de los errores detectados en Cloud y, opcionalmente, añadir una nueva alerta menos ruidosa. #72398 (Miсhael Stetsyuk).
  • Reduce la cantidad de memoria asignada al adjuntar particiones. #72583 (Konstantin Morozov).
  • Hacer que el límite de max_bytes_before_external_sort dependa del consumo total de memoria de la consulta (anteriormente era el número de bytes del bloque de ordenación para un único hilo de ordenación; ahora tiene el mismo significado que max_bytes_before_external_group_by: es el límite total de memoria de toda la consulta para todos los hilos). Además, se añadió otra configuración para controlar el tamaño del bloque en disco: min_external_sort_block_bytes. #72598 (Azat Khuzhin).
  • Ignorar las restricciones de memoria en el collector de trazas. #72606 (Azat Khuzhin).
  • Se admiten subcolumnas en la clave de ordenación de MergeTree y en los índices de omisión. #72644 (Pavel Kruglov).
  • Añade las opciones de configuración del servidor dictionaries_lazy_load y wait_dictionaries_load_at_startup a system.server_settings. #72664 (Christoph Wurm).
  • Añade el ajuste max_backup_bandwidth a la lista de ajustes que pueden especificarse como parte de las consultas BACKUP/RESTORE. #72665 (Christoph Wurm).
  • Las réplicas paralelas usaban información histórica sobre la disponibilidad de las réplicas para mejorar su selección, pero no actualizaban el recuento de errores de la réplica cuando la conexión no estaba disponible. Este PR actualiza el recuento de errores de la réplica cuando no está disponible. #72666 (zoomxi).
  • Reducción del nivel de log para las partes replicadas recién aparecidas en el motor ReplicatedMergeTree, para ayudar a minimizar el volumen de logs generado en un clúster replicado. #72876 (mor-akamai).
  • Muchas nuevas funcionalidades requerirán una mejor encapsulación del código (en lo relativo a los metadatos de Iceberg) y mejores abstracciones de código. #72941 (Daniil Ivanik).
  • Se admite la comparación por igualdad para los valores de una columna JSON. #72991 (Pavel Kruglov).
  • Mejora del formato de los identificadores con subcolumnas JSON para evitar comillas graves innecesarias. #73085 (Pavel Kruglov).
  • Registrar las condiciones PREWHERE con el nivel Test. #73116 (Vladimir Cherkasov).
  • Admite SETTINGS con ENGINE implícito y la combinación de la configuración del engine y de la consulta. #73120 (Raúl Marín).
  • Escribe partes de nivel 1 si optimize_on_insert está activado. Permite usar varias optimizaciones de consultas con FINAL para las partes escritas recientemente. #73132 (Anton Popov).
  • Para una consulta como WHERE a<b AND b<c AND c<5, se pueden generar nuevas condiciones de comparación (a<5 and b<5) para mejorar la capacidad de filtrado. #73164 (Shichao Jin).
  • Mejora la extracción de expresiones comunes en las disyunciones. Permite simplificar la expresión de filtro resultante incluso si no hay una subexpresión común para todas las disyunciones. Continuación de #71537. #73271 (Dmitry Novik).
  • En Storage S3(Azure)Queue, se permite agregar configuraciones a tablas creadas sin ellas. #73283 (Kseniia Sumarokova).
  • Clickhouse-client admite Ctrl+D para finalizar la consulta. Permite usar Ctrl+D en lugar de escribir un punto y coma y pulsar Enter. Además, hace que Ctrl+D funcione como Enter en el modo de una sola línea. #73293 (Xiaozhe Yu).
  • Se introduce una configuración least_greatest_legacy_null_behavior (valor predeterminado: false) que controla si las funciones least y greatest tratan los argumentos NULL devolviendo NULL incondicionalmente (si es true) o ignorándolos (si es false). #73344 (Robert Schulze).
  • Usar solicitudes múltiples a Keeper en el hilo de limpieza de ObjectStorageQueueMetadata. #73357 (Antonio Andelic).
  • Un nuevo driver de MongoDB ahora es el predeterminado. Los usuarios que prefieran seguir usando el driver heredado pueden establecer la configuración del servidor use_legacy_mongodb_integration en true. #73359 (Robert Schulze).
  • Cuando ClickHouse se ejecuta en cgroup, seguiremos recopilando métricas asíncronas de todo el sistema relacionadas con la carga del sistema, la planificación de procesos, la memoria, etc. Pueden aportar señales útiles cuando ClickHouse es el único proceso del host con un alto consumo de recursos. #73369 (Nikita Taranov).
  • En el almacenamiento S3Queue, ahora se pueden transferir tablas ordenadas antiguas creadas antes de la versión 24.6 a la nueva estructura con buckets. #73467 (Kseniia Sumarokova).
  • Se agrega system.azure_queue, similar a system.s3queue ya existente. #73477 (Kseniia Sumarokova).
  • Se corrigió una regresión que provocaba un error al usar configuraciones regionales de intercalación con modificadores. Como ejemplo, SELECT arrayJoin(['kk 50', 'KK 01', ' KK 2', ' KK 3', 'kk 1', 'x9y99', 'x9y100']) item ORDER BY item ASC COLLATE 'tr-u-kn-true-ka-shifted ahora funciona. #73544 (Robert Schulze).
  • Admite el tipo Nullable(JSON). #73556 (Pavel Kruglov).
  • La función parseDateTime64 (y sus variantes) ahora devuelve resultados correctos para fechas de entrada anteriores a 1970 o posteriores a 2106. Ejemplo: SELECT parseDateTime64InJodaSyntax('2200-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS'). #73594 (zhanglistar).
  • Soluciona algunos problemas de usabilidad de clickhouse-disks reportados por los usuarios. Cierra #67136. #73616 (Daniil Ivanik).
  • Se permite modificar los ajustes de commit en el almacenamiento S3(Azure)Queue. (Los ajustes de commit son: max_processed_files_before_commit, max_processed_rows_before_commit, max_processed_bytes_before_commit, max_processing_time_sec_before_commit). #73635 (Kseniia Sumarokova).
  • En el almacenamiento S3(Azure)Queue, se agrega de forma acumulada el progreso entre orígenes para compararlo con la configuración del límite de commit. #73641 (Kseniia Sumarokova).
  • Admite las opciones de configuración básicas en la consulta BACKUP/RESTORE. #73650 (Vitaly Baranov).
  • Lectura de output_format_compression_level en la salida Parquet. #73651 (Arthur Passos).
  • Añade la lectura de arrow fixed_size_list como Array en lugar de tratarlo como un tipo no compatible. #73654 (Julian Meyers).
  • Este PR agrega dos motores de backup: Memory (guarda los backups en la sesión actual del usuario) y Null (no guarda los backups en ningún sitio):. #73690 (Vitaly Baranov).
  • concurrent_threads_soft_limit_num y concurrent_threads_soft_limit_num_ratio_to_cores ahora se pueden cambiar sin reiniciar el servidor. #73713 (Sergei Trifonov).
  • Se añadió compatibilidad con tipos numéricos extendidos (Decimal, enteros de gran tamaño) en las funciones formatReadable. #73765 (Raúl Marín).
  • Se respeta la coincidencia de columnas sin distinción entre mayúsculas y minúsculas para los campos de columnas de tuplas. Cierra https://github.com/apache/incubator-gluten/issues/8324. #73780 (李扬).
  • Compatibilidad con TLS para el protocolo wire de Postgres. #73812 (scanhex12).
  • Permitir LowCardinality(UUID) de forma predeterminada. Esto ha resultado práctico para los clientes de ClickHouse Cloud. #73826 (Alexey Milovidov).
  • Mejor mensaje durante la instalación. #73827 (Alexey Milovidov).
  • Mensaje mejorado sobre el restablecimiento de contraseña para ClickHouse Cloud. #73831 (Alexey Milovidov).
  • Mejora del mensaje de error para una tabla File que no puede añadir datos a un archivo. #73832 (Alexey Milovidov).
  • Solicitar confirmación cuando un usuario pida accidentalmente mostrar un formato binario (como Native, Parquet, Avro) en la terminal. Esto cierra #59524. #73833 (Alexey Milovidov).
  • El tipo de dato BFloat16 ya es apto para producción. #73840 (Alexey Milovidov).
  • Resalta los espacios finales en los formatos Pretty y Vertical en la terminal para mejorar la claridad. Esto se controla con la configuración output_format_pretty_highlight_trailing_spaces. Implementación inicial de Braden Burns en #72996. Cierra #71590. #73847 (Alexey Milovidov).
  • clickhouse-client y clickhouse-local detectarán automáticamente la compresión de stdin cuando este se redirija desde un archivo. Esto corrige #70865. #73848 (Alexey Milovidov).
  • Recorta por defecto los nombres de columna demasiado largos en los formatos Pretty. Esto se controla mediante los ajustes output_format_pretty_max_column_name_width_cut_to y output_format_pretty_max_column_name_width_min_chars_to_cut. Esto continúa el trabajo de tanmaydatta en #66502. Esto cierra #65968. #73851 (Alexey Milovidov).
  • Haga que los formatos Pretty se vean mejor: combine bloques si no ha pasado mucho tiempo desde la salida del bloque anterior. Esto se controla mediante las nuevas opciones de configuración output_format_pretty_squash_consecutive_ms (50 ms de forma predeterminada) y output_format_pretty_squash_max_wait_ms (1000 ms de forma predeterminada). Continuación de #49537. Esto cierra #49153. #73852 (Alexey Milovidov).
  • Se corrige la correspondencia de tipos para SQLite (los tipos enteros pasan a int64 y los de coma flotante a float64). #73853 (Joanna Hulboj).
  • Añade una métrica sobre el número de partes de origen que se están fusionando actualmente. Esto cierra #70809. #73868 (Alexey Milovidov).
  • Resalta las columnas en el formato Vertical si la salida se envía a un terminal. Esto puede desactivarse con la opción output_format_pretty_color. #73898 (Alexey Milovidov).
  • Se mejoró la compatibilidad con MySQL hasta el punto de que ahora mysqlsh (un completo cliente de línea de comandos de MySQL de Oracle) puede conectarse a ClickHouse. Esto es necesario para facilitar las pruebas. #73912 (Alexey Milovidov).
  • Si el número de registros de salida es mayor que N = output_format_pretty_max_rows, en lugar de mostrar solo las primeras N filas, recortaremos la tabla de salida por la mitad y mostraremos las primeras N/2 filas y las últimas N/2 filas. Continuación de #64200. Esto cierra #59502. #73929 (Alexey Milovidov).
  • La función isIPv4String devolvía true si una dirección IPv4 válida iba seguida de un byte nulo, cuando en este caso debería devolver false. Continuación de #65387. #73946 (Alexey Milovidov).
  • Hacer que el código de error del MySQL wire protocol sea compatible con MySQL. Continuación de #56831. Cierra #50957. #73948 (Alexey Milovidov).
  • Se añade la configuración validate_enum_literals_in_opearators para validar literales de enum en operadores como IN y NOT IN con respecto al tipo enum, y lanzar una excepción si el literal no es un valor enum válido. #73985 (Vladimir Cherkasov).
  • En Storage S3(Azure)Queue, hacer commit de todos los archivos (en un único lote definido por la configuración de commit) en una única transacción de Keeper. #73991 (Kseniia Sumarokova).
  • Deshabilitar la detección de header para UDFs ejecutables y diccionarios (podría provocar Function ‘X’: resultado incorrecto; se esperaban Y filas, se obtuvo Y-1). #73992 (Azat Khuzhin).
  • Se añade la opción distributed a EXPLAIN PLAN. Ahora, EXPLAIN distributed=1 ... agrega el plan remoto a los pasos ReadFromParallelRemote*. #73994 (Nikolai Kochetov).
  • Usa el tipo de retorno correcto para not/xor con argumentos Dynamic. #74013 (Pavel Kruglov).
  • Permite cambiar add_implicit_sign_column_constraint_for_collapsing_engine después de crear la tabla. #74014 (Christoph Wurm).
  • Soporte para subcolumnas en la consulta select de una vista materializada. #74030 (Pavel Kruglov).
  • Los formatos Pretty pueden mostrar campos multilínea dentro de una celda de tabla, lo que mejora la legibilidad. Esto está habilitado de forma predeterminada y se puede controlar mediante la configuración output_format_pretty_multiline_fields. Continuación del trabajo de Volodyachan en #64094. Esto cierra #56912. #74032 (Alexey Milovidov).
  • Se admite la optimización predicate-push-down a nivel del plan de consulta para el paso MergingAggregated. Mejora el rendimiento de algunas consultas con el nuevo analizador. #74073 (Nikolai Kochetov).
  • Ahora hay tres formas sencillas de definir un prompt personalizado en clickhouse-client: 1. mediante el parámetro de línea de comandos --prompt, 2. en el archivo de configuración, mediante la opción <prompt>[...]</prompt>, y 3. también en el archivo de configuración, mediante la opción específica por conexión <connections_credentials><prompt>[...]</prompt></connection_credentials>. #74168 (Christoph Wurm).
  • Cambiar el código de estado de éxito de la respuesta de escritura remota de Prometheus de 200/OK a 204/NoContent. #74170 (Michael Dempsey).
  • Exponer los encabezados HTTP X-ClickHouse a JavaScript en el navegador. Facilita el desarrollo de aplicaciones. #74180 (Alexey Milovidov).
  • El formato JSONEachRowWithProgress incluirá eventos con metadatos, así como totales y extremos. También incluye rows_before_limit_at_least y rows_before_aggregation. El formato muestra correctamente la excepción si llega después de resultados parciales. El progreso ahora incluye los nanosegundos transcurridos. Al final se emite un último evento de progreso. El progreso durante el tiempo de ejecución de la consulta no se imprimirá con una frecuencia mayor que el valor de la configuración interactive_delay. #74181 (Alexey Milovidov).
  • El reloj de arena girará suavemente en la interfaz de usuario de Play. #74182 (Alexey Milovidov).
  • Aunque la respuesta HTTP esté comprimida, envía los paquetes en cuanto se reciban. Esto permite que el navegador reciba paquetes de progreso y datos comprimidos. #74201 (Alexey Milovidov).
  • Se añadió la posibilidad de recargar max_remote_read_network_bandwidth_for_serve y max_remote_write_network_bandwidth_for_server en caliente, sin reiniciar el servidor. #74206 (Kai Zhu).
  • Detectar automáticamente una conexión segura al conectarse al puerto 9440 en ClickHouse Client. #74212 (Christoph Wurm).
  • Autenticar a los usuarios solo con username para http_handlers (antes también se requería que el usuario introdujera la password). #74221 (Azat Khuzhin).
  • La compatibilidad con los lenguajes de consulta alternativos PRQL y KQL se marcó como experimental. Para usarlos, especifique las opciones de configuración allow_experimental_prql_dialect = 1 y allow_experimental_kusto_dialect = 1. #74224 (Robert Schulze).
  • Se admite la devolución del tipo Enum predeterminado en más funciones de agregación. #74272 (Raúl Marín).
  • En OPTIMIZE TABLE, ahora es posible usar la palabra clave FORCE como alternativa a la palabra clave FINAL existente. #74342 (Robert Schulze).
  • Se añadió una configuración de MergeTree, materialize_skip_indexes_on_merge, que evita la creación de índices de omisión durante la fusión. Esto permite controlar explícitamente (mediante ALTER TABLE [..] MATERIALIZE INDEX [...]) cuándo se crean los índices de omisión. Esto puede ser útil si los índices de omisión son costosos de generar (p. ej., índices de similitud vectorial). #74401 (Robert Schulze).
  • Admite subcolumnas en expresiones predeterminadas y materializadas. #74403 (Pavel Kruglov).
  • Optimizar las peticiones de Keeper en Storage(S3/Azure)Queue. #74410 (Kseniia Sumarokova).
  • Se añade la métrica IsServerShuttingDown, necesaria para activar una alerta cuando el apagado del servidor tarda demasiado. #74429 (Miсhael Stetsyuk).
  • Se añadieron los nombres de las tablas Iceberg a EXPLAIN. #74485 (alekseev-maksim).
  • Usa hasta 1000 réplicas paralelas de forma predeterminada. #74504 (Konstantin Bogdanov).
  • Se proporciona un mensaje de error más claro al usar RECURSIVE CTE con el analizador antiguo. #74523 (Raúl Marín).
  • Optimizar las solicitudes a Keeper en Storage(S3/Azure)Queue. #74538 (Kseniia Sumarokova).
  • Mejora la reutilización de sesiones HTTP al leer desde un disco S3 (#72401). #74548 (Julian Maicher).
  • Muestra mensajes de error detallados en system.errors. #74574 (Vitaly Baranov).
  • Se habilitó una lógica de backoff para todos los tipos de tareas replicadas. Esto permitirá reducir el uso de CPU, el uso de memoria y el tamaño de los archivos de registro. Se añadieron las nuevas configuraciones max_postpone_time_for_failed_replicated_fetches_ms, max_postpone_time_for_failed_replicated_merges_ms y max_postpone_time_for_failed_replicated_tasks_ms, que son similares a max_postpone_time_for_failed_mutations_ms. #74576 (MikhailBurdukov).
  • Cálculo más preciso para la configuración max_joined_block_size_rows del algoritmo JOIN parallel_hash. Ayuda a evitar un mayor consumo de memoria en comparación con el algoritmo hash. #74630 (Nikita Taranov).
  • Se añadió soporte para la opción de configuración dfs.client.use.datanode.hostname de libhdfs3. #74635 (Mikhail Tiukavkin).
  • Corrige Invalid: el códec ‘snappy’ no permite establecer un nivel de compresión. #74659 (Arthur Passos).
  • Permite usar una contraseña para la comunicación del cliente con clickhouse-keeper. Esta funcionalidad no es muy útil si se especifica una configuración SSL adecuada para el servidor y el cliente, pero aun así puede resultar útil en algunos casos. La contraseña no puede tener más de 16 caracteres. No está relacionado con el modelo de autenticación de Keeper. #74673 (alesapin).
  • Permite usar rutas de blobs para calcular sumas de comprobación al crear una copia de seguridad. #74729 (Vitaly Baranov).
  • Use el sharding dinámico para JOIN si la clave de JOIN es un prefijo de la PK en ambas partes. Esta optimización se activa con la configuración query_plan_join_shard_by_pk_ranges (deshabilitada de forma predeterminada). #74733 (Nikolai Kochetov).
  • Se agregó un código de error para el recargador de configuración. #74746 (Garrett Thomas).
  • Se añadió compatibilidad con direcciones IPv6 en las funciones de tabla y los motores de MySQL y PostgreSQL. #74796 (Mikhail Koviazin).
  • Los parámetros del códec Gorilla ahora siempre se guardarán en los metadatos de la tabla, en el archivo .sql. Esto cierra: #70072. #74814 (Nikita Mikhaylov).
  • Implementa la optimización de cortocircuito para divideDecimal. Soluciona #74280. #74843 (Kevin Mingtarja).
  • Mejora del rendimiento de solicitudes múltiples de mayor tamaño en Keeper. #74849 (Antonio Andelic).
  • Ahora se pueden especificar usuarios en los scripts de inicio. #74894 (pufit).
  • Recuperar partes en paralelo con ALTER TABLE FETCH PARTITION (el tamaño del grupo de hilos se controla con max_fetch_partition_thread_pool_size). #74978 (Azat Khuzhin).
  • Se añadió una columna de identificador de consulta a system.query_cache (incidencia #68205). #74982 (NamNguyenHoai).
  • Se volvió a habilitar el protocolo SSH. Se corrigieron algunas vulnerabilidades críticas, por lo que ya no es posible usar un paginador personalizado ni especificar server-logs-file. De forma predeterminada, se deshabilitó la posibilidad de pasar opciones de client mediante variables de entorno (sigue siendo posible mediante ssh-server.enable_client_options_passing en config.xml). Se añadió compatibilidad con la tabla de progreso, la cancelación de consultas, el autocompletado, el progreso de los eventos de perfil, stdin y la opción send_logs_level. Esto cierra: #74340. #74989 (Nikita Mikhaylov).
  • Se corrige el formateo de las excepciones mediante un formato personalizado si aparecen durante la interpretación de la consulta. En versiones anteriores, las excepciones se formateaban con el formato predeterminado en lugar del formato especificado en la consulta. Esto soluciona #55422. #74994 (Alexey Milovidov).
  • Se implementaron mejoras en el análisis sintáctico (análisis del ID de secuencia: se añadió la capacidad de analizar identificadores de secuencia en archivos de manifiesto; y análisis de metadatos de Avro: se rediseñó el analizador de metadatos de Avro para que sea fácilmente extensible de cara a futuras mejoras). #75010 (Daniil Ivanik).
  • Se permite cancelar consultas ALTER TABLE ... FREEZE ... con KILL QUERY y por tiempo de espera (max_execution_time). #75016 (Kirill).
  • Añadir compatibilidad con groupUniqArrayArrayMap como SimpleAggregateFunction. #75034 (Miel Donkers).
  • Añade compatibilidad con sentencias preparadas en el protocolo wire de Postgres. #75035 (scanhex12).
  • Oculta la configuración de las credenciales del catálogo en el motor de base de datos Iceberg. Cierra #74559. #75080 (Kseniia Sumarokova).
  • Se añadieron a BuzzHouse algunas funcionalidades que faltaban: los operadores ILIKE y REGEXP, <=> e IS NOT DISTINCT FROM. #75168 (Pedro Ferreira).
  • La configuración min_chunk_bytes_for_parallel_parsing ya no puede establecerse en cero. Esto corrige: #71110. #75239 (Nikita Mikhaylov).
  • intExp2 / intExp10: Se define el comportamiento en casos no definidos: devuelven 0 para un argumento demasiado pequeño, 18446744073709551615 para un argumento demasiado grande, y lanzan una excepción si es nan. #75312 (Vitaly Baranov).
  • Compatibilidad nativa con s3.endpoint desde la configuración del catálogo en DatabaseIceberg. Cierra #74558. #75375 (Kseniia Sumarokova).
  • No fallar en silencio si el usuario que ejecuta SYSTEM DROP REPLICA no tiene permisos suficientes. #75377 (Bharat Nallan).
  • Se añade un ProfileEvent sobre la cantidad de veces que alguno de los logs del sistema falló al vaciarse. #75466 (Alexey Milovidov).
  • Se añade comprobación y logging para el descifrado y la descompresión. #75471 (Vitaly Baranov).
  • Se añadió compatibilidad con el signo micro (U+00B5) en la función parseTimeDelta. Ahora, tanto el signo micro (U+00B5) como la letra griega mu (U+03BC) se reconocen como representaciones válidas de microsegundos, lo que hace que el comportamiento de ClickHouse coincida con la implementación de Go (ver time.go y time/format.go). #75472 (Vitaly Orlov).
  • Sustituye la configuración del servidor (send_settings_to_client) por la configuración de cliente (apply_settings_from_server), que controla si el código del lado del cliente (p. ej., el análisis de datos de INSERT y el formateo de la salida de la consulta) debe usar la configuración del archivo users.xml del servidor y del perfil de usuario. De lo contrario, solo se usan la configuración de la línea de comandos del cliente, la sesión y la consulta. Ten en cuenta que esto solo se aplica al cliente nativo (no, por ejemplo, a HTTP) y no afecta a la mayor parte del procesamiento de consultas (que ocurre en el servidor). #75478 (Michael Kolupaev).
  • Mejora de Keeper: se desactiva el cálculo del digest al hacer commit en el almacenamiento en memoria para mejorar el rendimiento. Puede habilitarse con la configuración keeper_server.digest_enabled_on_commit. El digest se sigue calculando durante el preprocesamiento de solicitudes. #75490 (Antonio Andelic).
  • Realizar push down de la expresión de filtro de JOIN ON cuando sea posible. #75536 (Vladimir Cherkasov).
  • Mejores mensajes de error para errores de sintaxis. Anteriormente, si la consulta era demasiado grande y el token cuya longitud superaba el límite era un literal de cadena muy largo, el mensaje con la causa se perdía entre dos ejemplos de ese token larguísimo. Se corrige el problema por el que una consulta con UTF-8 se cortaba incorrectamente en el mensaje de error. Se corrige el uso excesivo de comillas en fragmentos de consultas. Esto cierra #75473. #75561 (Alexey Milovidov).
  • Añadir eventos de perfil al almacenamiento S3(Azure)Queue. #75618 (Kseniia Sumarokova).
  • Deshabilitar el envío de ajustes del servidor al client (send_settings_to_client=false) por motivos de compatibilidad (Esta funcionalidad se volverá a implementar más adelante como configuración de cliente para mejorar la usabilidad). #75648 (Michael Kolupaev).
  • Agrega una configuración memory_worker_correct_memory_tracker para permitir la corrección del monitor interno de memoria con información de una fuente distinta, leída periódicamente en el hilo en segundo plano. #75714 (Antonio Andelic).
  • Usar el analizador en PrometheusRemoteReadProtocol. #75729 (Dmitry Novik).
  • Tenemos soporte para los tipos de métricas gauge/counter. Sin embargo, no bastan para algunas métricas (p. ej., los tiempos de respuesta de las solicitudes a Keeper), por lo que es necesario añadir soporte para el tipo de métrica de histograma. La interfaz sigue de cerca la del client de Prometheus: solo hay que llamar a observe(value) para incrementar el contador del bucket correspondiente al valor. Las métricas de histograma se exponen a través de system.histogram_metrics. #75736 (Miсhael Stetsyuk).
  • Añadir la columna normalized_query_hash en system.processes. Nota: aunque puede calcularse fácilmente en el momento con la función normalizedQueryHash, esto es necesario para preparar cambios posteriores. #75756 (Alexey Milovidov).
  • Consultar system.tables no provocará una excepción, incluso si existe una tabla Merge creada en una base de datos que ya no existe. Se elimina el método getTotalRows de las tablas Hive, porque no permitimos que realice tareas complejas. #75772 (Alexey Milovidov).
  • La interfaz web ahora cuenta con navegación interactiva por las bases de datos. #75777 (Alexey Milovidov).
  • Permite combinar discos de solo lectura y de lectura-escritura en una política de almacenamiento (como varios volúmenes o varios discos). Esto permite leer datos de todo el volumen, mientras que las inserciones priorizarán el disco escribible (es decir, una política de almacenamiento Copy-on-Write). #75862 (Azat Khuzhin).
  • Eliminar trace_id del ORDER BY por defecto para system.opentelemetry_span_log. #75907 (Azat Khuzhin).
  • El cifrado (atributo XML encrypted_by) ahora puede aplicarse a cualquier archivo de configuración (config.xml, users.xml, archivos de configuración anidados). Anteriormente, solo funcionaba en el archivo config.xml de nivel superior. #75911 (Mikhail Gorshkov).
  • Se almacenan start_time/end_time de las copias de seguridad con precisión de microsegundos. #75929 (Aleksandr Musorin).
  • Se añade la métrica MemoryTrackingUncorrected, que muestra el valor del rastreador interno de memoria global sin corregir por RSS. #75935 (Antonio Andelic).
  • Calcular de forma diferida el tamaño de las columnas y los índices en MergeTree. #75938 (Pavel Kruglov).
  • Convierte join en una subconsulta in si la columna de salida está asociada a la tabla de la izquierda; primero hace falta un paso de unicidad, por lo que está deshabilitado de forma predeterminada hasta que ese paso se añada más adelante. #75942 (Shichao Jin).
  • Se añadió un ajuste del servidor throw_on_unknown_workload que permite elegir el comportamiento ante una consulta con la configuración workload establecida en un valor desconocido: permitir un acceso ilimitado (predeterminado) o generar un error RESOURCE_ACCESS_DENIED. Es útil para obligar a que todas las consultas usen la planificación de cargas de trabajo. #75999 (Sergei Trifonov).
  • El nuevo motor de tabla Kafka experimental ahora respeta por completo las feature flags de Keeper. #76004 (János Benjamin Antal).
  • No reescriba las subcolumnas como getSubcolumn en ARRAY JOIN si no es necesario. #76018 (Pavel Kruglov).
  • Reintento de errores de coordinación al cargar tablas. #76020 (Alexander Tokmakov).
  • Se mejora la tabla system.warnings y se añaden algunos mensajes de advertencia dinámicos que pueden agregarse, actualizarse o eliminarse. #76029 (Bharat Nallan).
  • Se admite el vaciado de logs individuales en SYSTEM FLUSH LOGS. #76132 (Raúl Marín).
  • Se mejoró la página del servidor /binary. Ahora se usa la curva de Hilbert en lugar de la curva de Morton. Se muestran 512 MB de direcciones en el cuadrado, lo que lo aprovecha mejor (en versiones anteriores, las direcciones solo ocupaban la mitad del cuadrado). Las direcciones se colorean según el nombre de la biblioteca más cercana, en lugar del nombre de la función. Se permite desplazarse un poco más fuera del área. #76192 (Alexey Milovidov).
  • Este PR impide ejecutar una consulta ALTER USER user1 ADD PROFILES a, DROP ALL PROFILES porque, en el orden establecido, todas las operaciones DROP deben ir primero. #76242 (pufit).
  • Varias mejoras para SYNC REPLICA (mejores mensajes de error, mejores pruebas, comprobaciones básicas). #76307 (Azat Khuzhin).
  • Reintento de consultas ON CLUSTER en caso de TOO_MANY_SIMULTANEOUS_QUERIES. #76352 (Patrick Galbraith).
  • Se cambió el valor predeterminado de output_format_pretty_max_rows de 10000 a 1000. Creo que así es más fácil de usar. #76407 (Alexey Milovidov).
  • Compatibilidad con la actualización en tablas MergeTree de solo lectura. #76467 (Alexey Milovidov).
  • Usar el fallback correcto cuando la copia multiparte en S3 falle durante la copia de seguridad con Access Denied. La copia multiparte puede generar el error Access Denied cuando la copia de seguridad se realiza entre buckets con credenciales diferentes. #76515 (Antonio Andelic).
  • Apagado más rápido de los servidores de ClickHouse (se elimina el retraso de 2,5 s). #76550 (Azat Khuzhin).
  • Se añade query_id a system.errors. Incidencia relacionada #75815. #76581 (Vladimir Baikov).
  • Se actualizó librdkafka a la versión 2.8.0 y se mejoró la secuencia de apagado de las tablas de Kafka, lo que reduce los retrasos al eliminar tablas y reiniciar el servidor. engine=Kafka ya no sale explícitamente del grupo de consumidores cuando se elimina una tabla. En su lugar, el consumidor permanece en el grupo hasta que se elimina automáticamente tras session_timeout_ms (valor predeterminado: 45 segundos) de inactividad. #76621 (filimonov).
  • Se corrige la validación de la configuración de las solicitudes a S3. #76658 (Vitaly Baranov).
  • Se evita la asignación excesiva en ReadBufferFromS3 y otros búferes de lectura remota, y su consumo de memoria se reduce a la mitad. #76692 (Sema Checherinda).
  • Se admite leer el tipo JSON y las subcolumnas desde View. #76903 (Pavel Kruglov).
  • Se añade compatibilidad para convertir UInt128 a IPv6. Esto permite la operación bitAnd y las operaciones aritméticas con IPv6, así como la conversión de vuelta a IPv6. Cierra #76752. Esto también permite convertir de vuelta a IPv6 el resultado de la operación bitAnd sobre IPv6. Véase: https://github.com/ClickHouse/ClickHouse/pull/57707. #76928 (Muzammil Abdul Rehman).
  • Las system tables como server_settings o settings tienen una columna de valor default, lo cual es conveniente. Solo merge_tree_settings y replicated_merge_tree_settings no tienen esa columna habilitada. #76942 (Diego Nieto).
  • De forma predeterminada, no se analizan los valores especiales de Bool en formatos de texto dentro del tipo Variant. Puede habilitarse mediante la configuración allow_special_bool_values_inside_variant. #76974 (Pavel Kruglov).
  • Se admite la configuración del tiempo de espera por tarea para consultas de baja prioridad tanto a nivel de sesión como de servidor. #77013 (VicoWu).
  • Se agregó ProfileEvents::QueryPreempted, que sigue la misma lógica que CurrentMetrics::QueryPreempted. #77015 (VicoWu).
  • Anteriormente, una base de datos replicada podía registrar en los logs las credenciales especificadas en una consulta. Este comportamiento se ha corregido. Esto cierra: #77123. #77133 (Nikita Mikhaylov).
  • Actualiza zstd de la versión 1.5.5 a la 1.5.7, que aporta bastantes mejoras de rendimiento. #77137 (Pradeep Chhetri).
  • Se permite ALTER TABLE DROP PARTITION para el disco plain_rewritable. #77138 (Julia Kartseva).
  • Se añade la posibilidad de introducir una espera aleatoria de hasta 500 ms, independientemente del tamaño de las partes, antes de ejecutar merges/mutations en caso de replicación zero-copy. #77165 (Alexey Katsman).
  • Se admite el renombrado atómico al usar TRUNCATE con INTO OUTFILE. Resuelve #70323. #77181 (Onkar Deshpande).
  • Usa FixedString para los tipos CHARACTER, CHAR y BPCHAR de PostgreSQL. #77304 (Pablo Marcos).
  • Permite especificar explícitamente el archivo de metadatos que se leerá para Iceberg con la opción de storage/table function iceberg_metadata_file_path . Corrige #47412. #77318 (alesapin).
  • Se admite el uso de un disco remoto para que las bases de datos almacenen los archivos de metadatos. #77365 (Tuan Pham Anh).
  • Se implementa la comparación para valores del tipo de datos JSON. Ahora los objetos JSON pueden compararse igual que los Map. #77397 (Pavel Kruglov).
  • Se revirtió el cambio. #77399 (Yarik Briukhovetskyi).
  • La configuración de copia de seguridad/restauración allow_s3_native_copy ahora admite tres valores posibles: - False - no se usará la copia nativa de S3; - True (valor predeterminado anterior) - ClickHouse intentará primero la copia nativa de S3; si falla, recurrirá al enfoque de lectura+escritura; - 'auto' (nuevo valor predeterminado) - ClickHouse comparará primero las credenciales del origen y el destino. Si son las mismas, ClickHouse intentará la copia nativa de S3 y, si es necesario, recurrirá al enfoque de lectura+escritura. Si son diferentes, ClickHouse irá directamente al enfoque de lectura+escritura. #77401 (Vitaly Baranov).
  • Se admite ALTER TABLE … ATTACH|DETACH|MOVE|REPLACE PARTITION para el disco plain_rewritable. #77406 (Julia Kartseva).
  • Se revierte la caché del índice de omisión. #77447 (Nikita Mikhaylov).
  • Reduce el uso de memoria durante el prefetch de la columna JSON en partes Wide. #77640 (Pavel Kruglov).
  • Se admite el uso de tokens de sesión de AWS y credenciales de entorno en delta kernel para el motor de tabla DeltaLake. #77661 (Kseniia Sumarokova).
  • Compatibilidad con parámetros de consulta en la configuración additional_table_filters. Después del cambio, la siguiente consulta se ejecutaría correctamente:. #77680 (wxybear).
  • Las funciones definidas por el usuario (UDFs) ahora pueden marcarse como deterministas mediante una nueva etiqueta en su definición XML. Además, la caché de consultas ahora comprueba si las UDFs llamadas dentro de una consulta son deterministas. Si es así, almacena en caché el resultado de la consulta. (Issue #59988). #77769 (Jimmy Aguilar Mena).
  • Se añadió la validación de los parámetros del motor de tabla Buffer. #77840 (Pervakov Grigorii).
  • Se añade la configuración enable_hdfs_pread para activar o desactivar pread en HDFS. #77885 (kevinyhzou).
  • Se añaden eventos de perfil para el número de solicitudes ‘multi’ de lectura y escritura de ZooKeeper. #77888 (JackyWoo).
  • Permitir crear e insertar en una tabla temporal cuando disable_insertion_and_mutation está activado. #77901 (Xu Jia).
  • Reducir max_insert_delayed_streams_for_parallel_write (hasta 100). #77919 (Azat Khuzhin).
  • Se añade la posibilidad de configurar el número de columnas que las fusiones pueden volcar en paralelo mediante max_merge_delayed_streams_for_parallel_write (esto debería reducir aproximadamente 25 veces el uso de memoria de las fusiones verticales a S3). #77922 (Azat Khuzhin).
  • Se corrige el análisis del año en la sintaxis Joda en casos como ‘yyy’. #77973 (李扬).
  • La incorporación de partes de tablas MergeTree se realizará en el orden de sus bloques, lo que es importante para algoritmos especiales de fusión, como ReplacingMergeTree. Esto cierra #71009. #77976 (Alexey Milovidov).
  • Las reglas de enmascaramiento de consultas ahora pueden lanzar un LOGICAL_ERROR si se produce una coincidencia. Esto ayudará a comprobar si una contraseña predefinida se está filtrando en algún punto de los logs. #78094 (Nikita Mikhaylov).
  • Se añadió la columna index_length_column a information_schema.tables para mejorar la compatibilidad con MySQL. #78119 (Paweł Zakrzewski).
  • Se introducen dos nuevas métricas: TotalMergeFailures y NonAbortedMergeFailures. Estas métricas son necesarias para detectar los casos en que fallan demasiadas operaciones de merge en un período corto. #78150 (Miсhael Stetsyuk).
  • Corrige el análisis incorrecto de la URI de S3 cuando no se especifica la clave en path-style. #78185 (Arthur Passos).
  • Se corrigieron los valores incorrectos de las métricas asíncronas BlockActiveTime, BlockDiscardTime, BlockWriteTime, BlockQueueTime y BlockReadTime (antes del cambio, se informaba incorrectamente 1 segundo como 0,001). #78211 (filimonov).
  • Se respeta el límite de loading_retries para los errores durante el envío a la vista materializada de StorageS3(Azure)Queue. Antes, esos errores se reintentaban indefinidamente. #78313 (Kseniia Sumarokova).
  • En StorageDeltaLake con la implementación de delta-kernel-rs, se mejora el rendimiento y la barra de progreso. #78368 (Kseniia Sumarokova).
  • El índice de similitud vectorial podía asignar hasta 2 veces más memoria principal de la necesaria. Esta corrección replantea la estrategia de asignación de memoria, reduce el consumo de memoria y mejora la eficacia de la caché del índice de similitud vectorial. (issue #78056). #78394 (Shankar Iyer).
  • Se introduce la configuración schema_type para la tabla system.metric_log con el tipo de esquema. Hay tres esquemas permitidos: wide — el esquema actual, con cada métrica/evento en una columna independiente (más eficaz para leer columnas por separado); transposed — similar a system.asynchronous_metric_log, donde las métricas/eventos se almacenan como filas; y, el más interesante, transposed_with_wide_view — crea una tabla subyacente con esquema transposed, pero también introduce una vista con esquema wide que traduce las consultas a la tabla subyacente. En transposed_with_wide_view, la vista no admite resolución inferior a un segundo; event_time_microseconds es solo un alias para mantener la compatibilidad con versiones anteriores. #78412 (alesapin).
  • Admite include, from_env y from_zk para discos del runtime. Cierra #78177. #78470 (Kseniia Sumarokova).
  • Añade varias formas prácticas de resolver el archivo metadata.json en la raíz en la función de tabla y el motor de Iceberg. Cierra #78455. #78475 (Daniil Ivanik).
  • Compatibilidad con la poda de particiones en Delta Lake. #78486 (Kseniia Sumarokova).
  • Se admite la autenticación basada en contraseña en el protocolo SSH de ClickHouse. #78586 (Nikita Mikhaylov).
  • Añadir una advertencia dinámica a la tabla system.warnings para mutaciones de larga ejecución. #78658 (Bharat Nallan).
  • Descarta conexiones si la CPU está muy sobrecargada. La decisión se toma en función de la relación entre el tiempo de espera (OSCPUWaitMicroseconds) y el tiempo de actividad (OSCPUVirtualTimeMicroseconds). La consulta se descarta con cierta probabilidad cuando esta relación se encuentra entre min_os_cpu_wait_time_ratio_to_drop_connection y max_os_cpu_wait_time_ratio_to_drop_connection. #78778 (Alexey Katsman).
  • Permitir un valor vacío en el particionado de Hive. #78816 (Arthur Passos).
  • Se corrige la coerción de tipos de la cláusula IN para BFloat16 (es decir, SELECT toBFloat16(1) IN [1, 2, 3]; ahora devuelve 1). Resuelve #78754. #78839 (Raufs Dunamalijevs).
  • No comprobar las partes en otros discos de MergeTree si se ha establecido disk=. #78855 (Azat Khuzhin).
  • Convertir en canónicos los tipos de datos de used_data_type_families en system.query_log. #78972 (Kseniia Sumarokova).

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

  • Se corrige un problema que impedía crear un nodo SEQUENTIAL con keeper-client. #64177 (Duc Canh Le).
  • Corrige la resolución de identificadores desde ámbitos externos. Permite usar alias para expresiones en la cláusula WITH. Corrige #58994. Corrige #62946. Corrige #63239. Corrige #65233. Corrige #71659. Corrige #71828. Corrige #68749. #66143 (Dmitry Novik).
  • Se corrigió el recuento incorrecto de caracteres en PositionImpl::vectorVector. #71003 (思维).
  • Se corrige la monotonicidad de la función negate. En versiones anteriores, la consulta select * from a where -x = -42;, cuando x es la clave primaria, podía devolver un resultado incorrecto. #71440 (Michael Kolupaev).
  • Las operaciones RESTORE para las entidades de acceso requerían más permisos de los necesarios debido a revocaciones parciales que no se tenían en cuenta. Este PR corrige el problema. Cierra #71853. #71958 (pufit).
  • Evita que se produzca una pausa después de ALTER TABLE REPLACE/MOVE PARTITION FROM/TO TABLE. Obtiene la configuración correcta para la programación de tareas en segundo plano. #72024 (Aleksei Filatov).
  • Se corrige el manejo de las tuplas vacías en arrayIntersect. Esto corrige #72578. #72581 (Amos Bird).
  • Se corrigió el manejo de las tuplas vacías en algunos formatos de entrada y salida (p. ej., Parquet, Arrow). #72616 (Michael Kolupaev).
  • Las sentencias GRANT SELECT/INSERT a nivel de columna sobre bases de datos o tablas con comodines ahora arrojan un error. #72646 (Johann Gan).
  • Se corrige el problema por el que un usuario no puede ejecutar REVOKE ALL ON *.* debido a privilegios implícitos en la entidad de acceso de destino. #72872 (pufit).
  • Se corrige un atasco al procesar el lote pendiente para INSERT distribuido asíncrono (debido, por ejemplo, a No such file or directory). #72939 (Azat Khuzhin).
  • Se añade compatibilidad con tokens SAS de Azure. #72959 (Azat Khuzhin).
  • Corrige el formato de las zonas horarias positivas en la función escalar formatDateTime. #73091 (ollidraese).
  • Se corrige para reflejar correctamente el puerto de origen cuando la conexión se realiza a través de PROXYv1 y auth_use_forwarded_address está habilitado; anteriormente se usaba incorrectamente el puerto del proxy. Se añade la función currentQueryID(). #73095 (Yakov Olkhovskiy).
  • Propagar la configuración de formato a NativeWriter en TCPHandler para que ajustes como output_format_native_write_json_as_string se apliquen correctamente. #73179 (Pavel Kruglov).
  • Se corrige la lectura de las subcolumnas de subobjetos JSON con un prefijo incorrecto. #73182 (Pavel Kruglov).
  • Se corrige un bloqueo en StorageObjectStorageQueue. #73274 (Kseniia Sumarokova).
  • Se corrige un fallo poco frecuente en una vista materializada actualizable durante el apagado del servidor. #73323 (Michael Kolupaev).
  • El placeholder %f de la función formatDateTime ahora genera invariablemente seis dígitos (de subsegundos). Esto hace que el comportamiento sea compatible con la función DATE_FORMAT de MySQL. El comportamiento anterior se puede restaurar usando la configuración formatdatetime_f_prints_scale_number_of_digits = 1. #73324 (ollidraese).
  • Se mejoró la conversión de fecha y hora durante el análisis de índices al aplicar un comportamiento saturado a las conversiones implícitas de Date a DateTime. Esto resuelve posibles imprecisiones en el análisis de índices causadas por las limitaciones del rango de fecha y hora. Corrige #73307. También corrige la conversión explícita toDateTime cuando date_time_overflow_behavior = 'ignore', que es el valor predeterminado. #73326 (Amos Bird).
  • Se corrigió el filtrado por la columna _etag al leer del almacenamiento s3 y de la función de tabla. #73353 (Anton Popov).
  • Se corrigió el error Not-ready Set is passed as the second argument for function 'in' cuando se usa IN (subquery) en la expresión JOIN ON, con el analizador antiguo. #73382 (Nikolai Kochetov).
  • Corrección en la preparación para squashin de las columnas Dynamic y JSON. Anteriormente, en algunos casos se podían insertar nuevos tipos en el variant compartido o en los datos compartidos incluso cuando no se alcanzaba el límite de tipos/rutas. #73388 (Pavel Kruglov).
  • Comprobar tamaños corruptos al decodificar tipos en binario para evitar asignaciones excesivamente grandes. #73390 (Pavel Kruglov).
  • Se corrigió un error lógico al leer de un clúster con una sola réplica y las réplicas paralelas habilitadas. #73403 (Michael Kolupaev).
  • Se corrigió ObjectStorageQueue con ZooKeeper y versiones anteriores de Keeper. #73420 (Antonio Andelic).
  • Implementa una corrección necesaria para habilitar de forma predeterminada el particionado de Hive. #73479 (Yarik Briukhovetskyi).
  • Se corrige una condición de carrera al crear un índice vectorial de similitud. #73517 (Antonio Andelic).
  • Corrige un segfault cuando el origen del diccionario contiene una función con datos erróneos. #73535 (Yarik Briukhovetskyi).
  • Corrige los reintentos de una operación insert fallida en el almacenamiento S3(Azure)Queue. Cierra #70951. #73546 (Kseniia Sumarokova).
  • Se corrigió un error en la función tupleElement que puede aparecer en algunos casos en tuplas con elementos LowCardinality y con la configuración optimize_functions_to_subcolumns habilitada. #73548 (Anton Popov).
  • Se corrige el análisis de un enum glob seguido de uno de rango. Corrige #73473. #73569 (Konstantin Bogdanov).
  • Se corrigió un problema por el que parallel_replicas_for_non_replicated_merge_tree se ignoraba en las subconsultas de tablas no replicadas. #73584 (Igor Nikonov).
  • Corrección para std::logical_error lanzado cuando no se puede programar una tarea. Detectado en pruebas de estrés. Ejemplo de stacktrace: 2024.12.19 02:05:46.171833 [ 18190 ] {01f0daba-d3cc-4898-9e0e-c2c263306427} <Fatal> : Logical error: 'std::exception. Code: 1001, type: std::__1::future_error, e.what() = The associated promise has been destructed prior to the associated state becoming ready. (version 25.1.1.18724), Stack trace:. #73629 (Alexander Gololobov).
  • No se interpretan las consultas en EXPLAIN SYNTAX para evitar errores lógicos debidos a una etapa de procesamiento incorrecta en las consultas distribuidas. Corrige #65205. #73634 (Dmitry Novik).
  • Corrige una posible inconsistencia de datos en la columna Dynamic. Soluciona un posible error lógico: Nested columns sizes are inconsistent with local_discriminators column size. #73644 (Pavel Kruglov).
  • Se corrigió NOT_FOUND_COLUMN_IN_BLOCK en consultas con FINAL y SAMPLE. Se corrigió un resultado incorrecto en consultas SELECT con FINAL de CollapsingMergeTree, y se habilitaron las optimizaciones de FINAL. #73682 (Anton Popov).
  • Se corrige un bloqueo en LIMIT BY COLUMNS. #73686 (Raúl Marín).
  • Se corrige el error que se producía al forzar el uso de la proyección normal cuando la consulta era exactamente igual a la proyección definida, pero la proyección no se seleccionaba y, por tanto, se mostraba un error. #73700 (Shichao Jin).
  • Se corrigió la deserialización de la estructura de Dynamic/Object. Podía provocar excepciones CANNOT_READ_ALL_DATA. #73767 (Pavel Kruglov).
  • Omitir metadata_version.txt durante la restauración de partes desde una copia de seguridad. #73768 (Vitaly Baranov).
  • Se corrige #73737. #73775 (zhanglistar).
  • Corrige #72078 ( se había roto la compatibilidad con S3 Express ). #73777 (Sameer Tamsekar).
  • Permitir la combinación de filas con valores no válidos en la columna de signo de las tablas CollapsingMergeTree. #73864 (Christoph Wurm).
  • Se corrige el siguiente error Row 1: ────── hostname: c-test-wy-37-server-nlkyjyb-0.c-test-wy-37-server-headless.ns-test-wy-37.svc.cluster.local type: ExceptionWhileProcessing event_date: 2024-12-23 event_time: 2024-12-23 16:21:19 event_time_microseconds: 2024-12-23 16:21:19.824624 query_start_time: 2024-12-23 16:21:19 query_start_time_microseconds: 2024-12-23 16:21:19.747142 query_duration_ms: 77 read_rows: 1 read_bytes: 134 written_rows: 0 written_bytes: 0 result_rows: 0 result_bytes: 0 memory_usage: 7824 current_database: default query: CREATE DATABASE db0 formatted_query: normalized_query_hash: 7820917191074023511 -- 7.82 quintillion query_kind: Create databases: ['db0'] tables: [] columns: [] partitions: [] projections: [] views: [] exception_code: 170 exception: Code: 170. DB::Exception: Bad get: has Null, requested Int64: While executing DDLOnClusterQueryStatus. (BAD_GET) (version 25.1.1.19134 (official build)) stack_trace: 0. ./build_docker/./src/Common/Exception.cpp:107: DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x000000000da5e53b 1. DB::Exception::Exception(PreformattedMessage&&, int) @ 0x00000000088aca4c 2. DB::Exception::Exception<std::basic_string_view<char, std::char_traits<char>>, std::basic_string_view<char, std::char_traits<char>>>(int, FormatStringHelperImpl<std::type_identity<std::basic_string_view<char, std::char_traits<char>>>::type, std::type_identity<std::basic_string_view<char, std::char_traits<char>>>::type>, std::basic_string_view<char, std::char_traits<char>>&&, std::basic_string_view<char, std::char_traits<char>>&&) @ 0x00000000088bae8b 3. auto& DB::Field::safeGet<long>() & @ 0x0000000008a3c748 4. ./src/Core/Field.h:484: DB::ColumnVector<long>::insert(DB::Field const&) @ 0x0000000012e44c0f 5. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:53: DB::DDLOnClusterQueryStatusSource::generateChunkWithUnfinishedHosts() const @ 0x0000000012a40214 6. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:104: DB::DDLOnClusterQueryStatusSource::handleTimeoutExceeded() @ 0x0000000012a41640 7. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:109: DB::DDLOnClusterQueryStatusSource::stopWaitingOfflineHosts() @ 0x0000000012a41be9 8. ./build_docker/./src/Interpreters/DistributedQueryStatusSource.cpp:182: DB::DistributedQueryStatusSource::generate() @ 0x0000000011feb3bf 9. ./build_docker/./src/Processors/ISource.cpp:139: DB::ISource::tryGenerate() @ 0x0000000014148f5b 10. ./build_docker/./src/Processors/ISource.cpp:108: DB::ISource::work() @ 0x0000000014148c47 11. ./build_docker/./src/Processors/Executors/ExecutionThreadContext.cpp:49: DB::ExecutionThreadContext::executeTask() @ 0x0000000014164fc7 12. ./build_docker/./src/Processors/Executors/PipelineExecutor.cpp:290: DB::PipelineExecutor::executeStepImpl(unsigned long, std::atomic<bool>*) @ 0x00000000141577e5. #73876 (Tuan Pham Anh).
  • Corrige fallos ocasionales al comparar tipos map() debido a la posibilidad de crear Map sin los nombres explícitos (‘keys’,‘values’) de su tupla anidada. #73878 (Yakov Olkhovskiy).
  • Se ignoran las funciones de ventana durante la resolución de la cláusula GROUP BY ALL. Se corrige #73501. #73916 (Dmitry Novik).
  • Propagar correctamente la configuración del Native format en la comunicación client-server. #73924 (Pavel Kruglov).
  • Corregir los privilegios implícitos (antes funcionaban como un comodín). #73932 (Azat Khuzhin).
  • Se corrige el uso elevado de memoria durante la creación de Maps anidados. #73982 (Pavel Kruglov).
  • Se corrige el análisis de JSON anidado con claves vacías. #73993 (Pavel Kruglov).
  • Corrección: puede que no se añada un alias a la proyección si otro alias hace referencia a él y se selecciona en orden inverso. #74033 (Yakov Olkhovskiy).
  • Un disco que usa los metadatos plain_rewritable puede compartirse entre varias instancias del servidor. Es normal que una instancia lea un objeto de metadatos mientras otra lo modifica. Los errores de objeto no encontrado se ignoran durante la inicialización de plain_rewritable con Azure Storage, de forma similar al comportamiento implementado para S3. #74059 (Julia Kartseva).
  • Se corrigió el comportamiento de any y anyLast con tipos enum y una tabla vacía. #74061 (Joanna Hulboj).
  • Corrige el caso en el que el usuario especifica argumentos con nombre en el motor de tabla Kafka. #74064 (Yarik Briukhovetskyi).
  • Se corrigió la modificación de la configuración del Storage S3Queue para pasar de usar el prefijo “s3queue_” a no usarlo, y viceversa. #74075 (Kseniia Sumarokova).
  • Añade una configuración allow_push_predicate_ast_for_distributed_subqueries. Esto añade push-down de predicados basado en AST para consultas distribuidas con el analizador. Esta es una solución temporal que usamos hasta que se admitan las consultas distribuidas con serialización del plan de consulta. Cierra #66878 #69472 #65638 #68030 #73718. #74085 (Nikolai Kochetov).
  • Corrige un problema por el que, después de #73095, puede haber un puerto en el campo forwarded_for, lo que impide resolver el nombre de host cuando incluye el puerto. #74116 (Yakov Olkhovskiy).
  • Se corrigió el formato incorrecto en ALTER TABLE (DROP STATISTICS ...) (DROP STATISTICS ...). #74126 (Han Fei).
  • Corrección del error #66112. #74128 (Anton Ivashkin).
  • Ya no es posible usar Loop como motor de tabla en CREATE TABLE. Antes, esta combinación provocaba fallos de segmentación. #74137 (Yarik Briukhovetskyi).
  • Corrige un problema de seguridad para evitar la inyección de SQL en las funciones de tabla de PostgreSQL y SQLite. #74144 (Pablo Marcos).
  • Se corrige un fallo al leer una subcolumna de una tabla comprimida del motor Memory. Corrige #74009. #74161 (Nikita Taranov).
  • Se corrigió un bucle infinito que se producía en las consultas a system.detached_tables. #74190 (Konstantin Morozov).
  • Se corrigió un error lógico en s3queue al marcar el archivo como fallido. #74216 (Kseniia Sumarokova).
  • Comprobación de tipos no compatibles en algunos almacenamientos. #74218 (Pavel Kruglov).
  • Se corrige un fallo que provocaba un cierre inesperado al ejecutar la consulta INSERT INTO SELECT a través de la Interfaz de PostgreSQL en macOS (incidencia #72938). #74231 (Artem Yurov).
  • Se corrigen los ajustes de copia nativa (allow_s3_native_copy/allow_azure_native_copy) para RESTORE desde una copia de seguridad base. #74286 (Azat Khuzhin).
  • Se corrigió un problema que ocurría cuando el número de tablas desvinculadas en la base de datos era un múltiplo de max_block_size. #74289 (Konstantin Morozov).
  • Se corrigió la copia mediante ObjectStorage (es decir, S3) cuando las credenciales de origen y de destino son distintas. #74331 (Azat Khuzhin).
  • Se corrigió la falta de inicialización de max_log_ptr en la base de datos replicada. #74336 (Konstantin Morozov).
  • Se corrigió la detección de “use the Rewrite method in the JSON API” en la copia nativa en GCS. #74338 (Azat Khuzhin).
  • Se corrige el bloqueo al insertar interval (incidencia #74299). #74478 (NamNguyenHoai).
  • Corrige el análisis incorrecto de las proyecciones cuando se usa count(nullable) en proyecciones agregadas. Esto corrige #74495. Este PR también añade algunos logs relacionados con el análisis de proyecciones para aclarar por qué se usa una proyección o por qué no. #74498 (Amos Bird).
  • Corregir el cálculo incorrecto de BackgroundMergesAndMutationsPoolSize (era el doble del valor real). #74509 (alesapin).
  • Se corrige un error que provocaba fugas de watches de Keeper al habilitar Cluster Discovery. #74521 (RinChanNOW).
  • Se corrigió el formato de los literales JSON constantes. Anteriormente, esto podía provocar errores de sintaxis al enviar la consulta a otro servidor. #74533 (Pavel Kruglov).
  • Corrige un problema de alineación de memoria detectado por UBSan #74512. #74534 (Arthur Passos).
  • Se corrige la limpieza concurrente de KeeperMap durante la creación de tablas. #74568 (Antonio Andelic).
  • No elimine las columnas no utilizadas de la proyección en las subconsultas cuando haya EXCEPT o INTERSECT, para preservar el resultado correcto de la consulta. Corrige #73930. Corrige #66465. #74577 (Dmitry Novik).
  • Se corrige la consulta CREATE que fallaba al usar expresiones de partición constantes con proyecciones implícitas habilitadas. Esto corrige #74596 . #74634 (Amos Bird).
  • Se corrigieron las consultas INSERT SELECT entre tablas con columnas Tuple y serialización dispersa habilitada. #74698 (Anton Popov).
  • La función right no funciona correctamente con un desplazamiento negativo constante. #74701 (Daniil Ivanik).
  • Se corrige un problema por el que la inserción de datos comprimidos con gzip a veces fallaba debido a una descompresión defectuosa del lado del client. #74707 (siyuan).
  • Evita dejar la conexión en un estado erróneo después de que INSERT finalice con una excepción. #74740 (Azat Khuzhin).
  • Evita reutilizar conexiones que se habían dejado en un estado intermedio. #74749 (Azat Khuzhin).
  • Las revocaciones parciales de privilegios con comodines podían eliminar más privilegios de los previstos. Cierra #74263. #74751 (pufit).
  • Se corrige un cierre inesperado durante el análisis de la declaración del tipo JSON cuando el nombre del tipo no está en mayúsculas. #74784 (Pavel Kruglov).
  • Corrección en Keeper: se corrige la lectura de entradas del log desde disco. #74785 (Antonio Andelic).
  • Se corrigió la comprobación de permisos para SYSTEM REFRESH/START/STOP VIEW; ahora no es necesario tener este permiso sobre *.* para ejecutar una consulta sobre una vista específica; solo se requieren permisos para esa vista. #74789 (Alexander Tokmakov).
  • La función hasColumnInTable no tiene en cuenta las columnas con alias. Corrígela para que también funcione con columnas con alias. #74841 (Bharat Nallan).
  • Keeper: corrige logical_error cuando la conexión se había cerrado antes de establecerse. #74844 (Michael Kolupaev).
  • Se corrige un problema por el que el servidor no podía iniciarse cuando había una tabla que usaba AzureBlobStorage. Las tablas se cargan sin realizar solicitudes a Azure. #74880 (Alexey Katsman).
  • Se corrigen los campos used_privileges y missing_privileges que faltaban en query_log para las operaciones BACKUP y RESTORE. #74887 (Alexey Katsman).
  • Corregido el error FILE_DOESNT_EXIST que se producía al fusionar partes de datos de una tabla con una columna vacía en Azure Blob Storage. #74892 (Julia Kartseva).
  • Corrige el nombre de la columna de proyección al unir tablas temporales, cierra #68872. #74897 (Vladimir Cherkasov).
  • Renueva el ticket krb de HDFS si se produce un error de SASL durante una solicitud SELECT de HDFS. #74930 (inv2004).
  • Corregidas las consultas de la base de datos Replicated en startup_scripts. #74942 (Azat Khuzhin).
  • Corrige problemas con expresiones con alias en la cláusula JOIN ON cuando se usa una comparación null-safe. #74970 (Vladimir Cherkasov).
  • Restaurar el estado de la parte de deleting a outdated cuando falle la operación de eliminación. #74985 (Sema Checherinda).
  • En versiones anteriores, cuando había una subconsulta escalar, empezábamos a escribir el progreso (acumulado durante el procesamiento de la subconsulta) al inicializar el formato de datos, antes de que se escribieran los encabezados HTTP. Esto provocaba la pérdida de encabezados HTTP, como X-ClickHouse-QueryId y X-ClickHouse-Format, así como de Content-Type. #74991 (Alexey Milovidov).
  • Se corrigen las consultas CREATE TABLE AS... con database_replicated_allow_replicated_engine_arguments=0. #75000 (Bharat Nallan).
  • Se corrige un problema que dejaba la conexión en un estado incorrecto en el client tras excepciones de INSERT. #75030 (Azat Khuzhin).
  • Se corrige un bloqueo debido a una excepción no controlada en la replicación de PSQL. #75062 (Azat Khuzhin).
  • SASL puede hacer que falle cualquier llamada RPC; esta corrección permite repetir la llamada en caso de que el ticket de krb5 haya expirado. #75063 (inv2004).
  • Se corrigió el uso de los índices (primario y secundario) para las columnas Array, Map y Nullable(..) con la configuración optimize_function_to_subcolumns habilitada. Anteriormente, los índices de estas columnas podían ser ignorados. #75081 (Anton Popov).
  • Deshabilita flatten_nested al crear vistas materializadas con tablas internas, ya que no será posible usar esas columnas aplanadas. #75085 (Christoph Wurm).
  • Se corrigió un problema por el que algunas direcciones IPv6 (como ::ffff:1.1.1.1) en el campo forwarded_for se interpretaban erróneamente, lo que provocaba la desconexión del client con una excepción. #75133 (Yakov Olkhovskiy).
  • Corrige el manejo de JOIN nullsafe para el tipo de dato Nullable de LowCardinality. Anteriormente, JOIN ON con comparación nullsafe, como IS NOT DISTINCT FROM, <=> , a IS NULL AND b IS NULL OR a == b, no funcionaba correctamente con columnas LowCardinality. #75143 (Vladimir Cherkasov).
  • Corrige consultas con interpolación sin usar con el nuevo analizador. #75173 (János Benjamin Antal).
  • Corregido el fallo que provocaba un cierre inesperado de CTE con Insert. #75188 (Shichao Jin).
  • Corrección de Keeper: evita escribir en changelogs corruptos al revertir logs. #75197 (Antonio Andelic).
  • Usa BFloat16 como supertipo cuando corresponda. Con esto se cierra: #74404. #75236 (Nikita Mikhaylov).
  • Se corrigieron los valores predeterminados inesperados en el resultado de JOIN con any_join_distinct_right_table_keys y OR en JOIN ON. #75262 (Vladimir Cherkasov).
  • Enmascarar las credenciales del motor de tabla azureblobstorage. #75319 (Garrett Thomas).
  • Se corrigió el comportamiento por el cual ClickHouse podía aplicar erróneamente un filter pushdown a una base de datos externa como PostgreSQL, MySQL o SQLite. Esto cierra: #71423. #75320 (Nikita Mikhaylov).
  • Se corrige un fallo en la caché de esquemas de Protobuf que puede producirse al generar salida en formato Protobuf y ejecutar en paralelo la consulta SYSTEM DROP FORMAT SCHEMA CACHE. #75357 (Pavel Kruglov).
  • Corrige un posible error lógico o un problema de memoria sin inicializar cuando se hace pushdown de un filtro de HAVING con réplicas paralelas. #75363 (Vladimir Cherkasov).
  • Oculta información sensible en las funciones de tabla y los motores de tabla icebergS3 e icebergAzure. #75378 (Kseniia Sumarokova).
  • La función TRIM ahora maneja correctamente los caracteres de recorte vacíos calculados. Ejemplo: SELECT TRIM(LEADING concat('') FROM 'foo') (incidencia #69922). #75399 (Manish Gill).
  • Se corrige una race condition en IOutputFormat. #75448 (Pavel Kruglov).
  • Corrige un posible error Elements ... and ... of Nested data structure ... (Array columns) have different array sizes al usar subcolumnas JSON de tipo Array en JOIN sobre tablas distribuidas. #75512 (Pavel Kruglov).
  • Corrige un cálculo incorrecto del tamaño del búfer de resultados. Cierra #70031. #75548 (Konstantin Bogdanov).
  • Corrige la interacción entre allow_feature_tier y la configuración compatibility de MergeTree. #75635 (Raúl Marín).
  • Corregir el valor incorrecto de processed_rows en system.s3queue_log si se reintentó el archivo. #75666 (Kseniia Sumarokova).
  • Se respeta materialized_views_ignore_errors cuando una vista materializada escribe en un motor URL y hay un problema de conectividad. #75679 (Christoph Wurm).
  • Se corrigieron fallos poco frecuentes al leer de una tabla MergeTree tras múltiples consultas RENAME asíncronas (con alter_sync = 0) entre columnas de distintos tipos. #75693 (Anton Popov).
  • Se corrige el error Block structure mismatch in QueryPipeline stream en algunas consultas con UNION ALL. #75715 (Nikolai Kochetov).
  • Reconstruir la proyección al ejecutar alter modify en su columna de PK. Anteriormente, esto podía provocar errores CANNOT_READ_ALL_DATA durante los SELECT después de ejecutar alter modify en la columna usada en la PK de la proyección. #75720 (Pavel Kruglov).
  • Corrige el resultado incorrecto de ARRAY JOIN en subconsultas escalares (con analizador). #75732 (Nikolai Kochetov).
  • Se corrigió una desreferenciación de puntero nulo en DistinctSortedStreamTransform. #75734 (Nikita Taranov).
  • Se corrigió el comportamiento de allow_suspicious_ttl_expressions. #75771 (Aleksei Filatov).
  • Corrige una lectura de memoria no inicializada en la función translate. Esto cierra #75592. #75794 (Alexey Milovidov).
  • Se propaga la configuración de formato a JSON como formateo de cadenas en Native format. #75832 (Pavel Kruglov).
  • Se registró en el historial de cambios de configuración que parallel hash pasó a estar habilitado de forma predeterminada como algoritmo de join en la v24.12. Esto significa que ClickHouse seguirá realizando el join con non-parallel hash si se configura un nivel de compatibilidad anterior a la v24.12. #75870 (Robert Schulze).
  • Se corrigió un error que impedía copiar a una nueva tabla las tablas con índices min-max añadidos implícitamente (incidencia #75677). #75877 (Smita Kulkarni).
  • clickhouse-library-bridge permite abrir bibliotecas arbitrarias desde el filesystem, por lo que solo es seguro ejecutarlo dentro de un entorno aislado. Para evitar una vulnerabilidad cuando se ejecuta junto a clickhouse-server, limitaremos las rutas de las bibliotecas a una ubicación especificada en la configuración. Esta vulnerabilidad fue обнаружена con el ClickHouse Bug Bounty Program por Arseniy Dugin. #75954 (Alexey Milovidov).
  • Terminamos usando la serialización JSON para algunos metadatos, y eso fue un error, porque JSON no admite datos binarios dentro de cadenas literales, incluidos los bytes nulos. Las consultas SQL pueden contener datos binarios y UTF-8 no válido, por lo que también tenemos que admitirlo en nuestros archivos de metadatos. Al mismo tiempo, JSONEachRow de ClickHouse y formatos similares eluden ese problema apartándose del estándar JSON para permitir una ida y vuelta perfecta de los datos binarios. Consulta la motivación aquí: https://github.com/ClickHouse/ClickHouse/pull/73668#issuecomment-2560501790. La solución es hacer que la biblioteca Poco::JSON sea coherente con la serialización en formato JSON de ClickHouse. Esto cierra #73668. #75963 (Alexey Milovidov).
  • Se corrige Part <...> does not contain in snapshot of previous virtual parts. (PART_IS_TEMPORARILY_LOCKED) al ejecutar DETACH PART. #76039 (Aleksei Filatov).
  • Se corrige la comprobación de los límites de commit en el almacenamiento S3Queue. #76104 (Kseniia Sumarokova).
  • Se corrige el problema al adjuntar tablas MergeTree con índices automáticos (add_minmax_index_for_numeric_columns/add_minmax_index_for_string_columns). #76139 (Azat Khuzhin).
  • Se corrigió un problema por el que no se imprimían las trazas de pila de los hilos padre de un trabajo (configuración enable_job_stack_trace). Se corrigió un problema por el que la configuración enable_job_stack_trace no se propagaba correctamente a los hilos, por lo que el contenido resultante de la traza de pila no siempre respetaba esta configuración. #76191 (Yakov Olkhovskiy).
  • Se corrigió reinterpretAs con FixedString en arquitecturas big-endian. #76253 (Azat Khuzhin).
  • Corrige todo tipo de errores debidos a condiciones de carrera entre UUID y nombres de tabla (por ejemplo, corrige la condición de carrera entre RENAME y RESTART REPLICA; en caso de un RENAME concurrente con SYSTEM RESTART REPLICA, puede que termines reiniciando la réplica incorrecta o incluso dejando una de las tablas en el estado Table X is being restarted). #76308 (Azat Khuzhin).
  • Se eliminó la asignación en el manejador de señales. #76446 (Nikita Taranov).
  • Se corrigen errores inesperados durante el desalojo al gestionar el redimensionamiento dinámico de la caché del sistema de archivos. #76466 (Kseniia Sumarokova).
  • Se corrigió la inicialización de used_flag en el hash en paralelo. Podría provocar una caída del servidor. #76580 (Nikita Taranov).
  • Se corrige un error lógico al llamar a la función defaultProfiles() dentro de una proyección. #76627 (pufit).
  • No solicitar autenticación básica interactiva del navegador en la web UI. Cierra #76319. #76637 (Alexey Milovidov).
  • Se corrigió la excepción THERE_IS_NO_COLUMN al seleccionar un literal booleano desde tablas distribuidas. #76656 (Yakov Olkhovskiy).
  • La subruta dentro del directorio de la tabla se elige de una forma más precisa. #76681 (Daniil Ivanik).
  • Corrige un error Not found column in block después de modificar una tabla con una subcolumna en la PK. Tras https://github.com/ClickHouse/ClickHouse/pull/72644, también requiere https://github.com/ClickHouse/ClickHouse/pull/74403. #76686 (Nikolai Kochetov).
  • Se añaden pruebas de rendimiento para los cortocircuitos con NULL y se corrigen errores. #76708 (李扬).
  • Vacía los búferes de escritura de salida antes de finalizarlos. Corrige el LOGICAL_ERROR que se generaba durante la finalización de algunos formatos de salida, p. ej., JSONEachRowWithProgressRowOutputFormat. #76726 (Antonio Andelic).
  • Se añadió compatibilidad con el UUID binario de MongoDB (#74452) - Se corrigió el pushdown de WHERE a MongoDB al usar la función de tabla (#72210) - Se modificó la correspondencia de tipos entre MongoDB y ClickHouse para que el UUID binario de MongoDB solo pueda analizarse como UUID de ClickHouse. Esto debería evitar ambigüedades y comportamientos inesperados en el futuro. - Se corrigió la correspondencia de OID, preservando la compatibilidad con versiones anteriores. #76762 (Kirill Nikiforov).
  • Se corrige el manejo de excepciones en la deserialización en paralelo de prefijos de subcolumnas JSON. #76809 (Pavel Kruglov).
  • Se corrige el comportamiento de la función lgamma para enteros negativos. #76840 (Ilya Kataev).
  • Se corrigió el análisis inverso de claves para claves primarias definidas explícitamente. Similar a #76654. #76846 (Amos Bird).
  • Se corrige la impresión formateada de los valores Bool en formato JSON. #76905 (Pavel Kruglov).
  • Se corrige un posible cierre inesperado debido a una reversión incorrecta de la columna JSON cuando se produce un error durante las inserciones asíncronas. #76908 (Pavel Kruglov).
  • Anteriormente, multi_if podía devolver columnas de distintos tipos durante la planificación y la ejecución principal. Esto provocaba que el código generara un comportamiento indefinido desde la perspectiva de C++. #76914 (Nikita Taranov).
  • Se corrigió la serialización incorrecta de claves constantes de tipo Nullable en MergeTree. Esto corrige #76939. #76985 (Amos Bird).
  • Corrige la ordenación de los valores BFloat16. Esto cierra #75487. Esto cierra #75669. #77000 (Alexey Milovidov).
  • Se corrige JSON con una subcolumna Variant añadiendo una comprobación para omitir las subcolumnas efímeras en la comprobación de consistencia de las partes. #72187. #77034 (Smita Kulkarni).
  • Corregido un cierre inesperado al analizar plantillas en el formato Values en caso de incompatibilidad de tipos. #77071 (Pavel Kruglov).
  • No permitir crear tablas EmbeddedRocksDB con una subcolumna en la clave primaria. Anteriormente, se podían crear tablas de este tipo, pero las consultas SELECT fallaban. #77074 (Pavel Kruglov).
  • Corrige la comparación no válida en las consultas distribuidas, porque la propagación de predicados al nodo remoto no respeta los tipos de los literales. #77093 (Duc Canh Le).
  • Se corrige un cierre inesperado durante la creación de tablas de Kafka cuando se producía una excepción. #77121 (Pavel Kruglov).
  • Se añade compatibilidad con JSON y subcolumnas nuevos en los motores Kafka y RabbitMQ. #77122 (Pavel Kruglov).
  • Se corrige el desenrollado de la pila de excepciones en MacOS. #77126 (Eduard Karacharov).
  • Corrige la lectura de la subcolumna ‘null’ en la función getSubcolumn. #77163 (Pavel Kruglov).
  • Se corrigen los índices de omisión que no funcionaban con expresiones que contienen literales en el analizador, y se eliminan las conversiones de tipo triviales durante el análisis de índices. #77229 (Pavel Kruglov).
  • Corrige el índice bloom filter con Array y funciones no admitidas. #77271 (Pavel Kruglov).
  • Solo deberíamos comprobar la restricción del número de tablas durante la consulta CREATE inicial. #77274 (Nikolay Degterinsky).
  • SELECT toBFloat16(-0.0) == toBFloat16(0.0) ahora devuelve correctamente true (antes devolvía false). Esto hace que el comportamiento sea consistente con Float32 y Float64. #77290 (Shankar Iyer).
  • Corrige una posible referencia incorrecta a la variable key_index sin inicializar, lo que puede provocar un fallo en compilaciones de depuración (esta referencia sin inicializar no causará problemas en compilaciones release porque es probable que el código posterior arroje errores). ### entrada de documentación para cambios visibles para el usuario. #77305 (wxybear).
  • Se revirtió. #77307 (Nikolai Kochetov).
  • Se corrigió el nombre de la partición para un valor Bool. Se había roto en https://github.com/ClickHouse/ClickHouse/pull/74533. #77319 (Pavel Kruglov).
  • Corrige la comparación entre tuplas con elementos Nullable y cadenas. Por ejemplo, antes de este cambio, la comparación entre una Tuple (1, null) y un String '(1,null)' producía un error. Otro caso sería la comparación entre una Tuple (1, a), donde a es una columna Nullable, y un String '(1, 2)'. Este cambio soluciona estos problemas. #77323 (Alexey Katsman).
  • Soluciona un fallo en ObjectStorageQueueSource. Se introdujo en https://github.com/ClickHouse/ClickHouse/pull/76358. #77325 (Pavel Kruglov).
  • Se corrigió un error por el que el parámetro de consulta close_session no tenía ningún efecto, por lo que las sesiones con nombre solo se cerraban después de session_timeout. #77336 (Alexey Katsman).
  • Se corrige async_insert con input(). #77340 (Azat Khuzhin).
  • Corrección: WITH FILL puede fallar con NOT_FOUND_COLUMN_IN_BLOCK cuando el planificador elimina la columna de ordenación. Problema similar relacionado con el cálculo inconsistente de un DAG para la expresión INTERPOLATE. #77343 (Yakov Olkhovskiy).
  • Se revirtió. #77390 (Vladimir Cherkasov).
  • Se corrigió la recepción de mensajes desde el servidor NATS sin una mv asociada. #77392 (Dmitry Novikov).
  • Se corrige un error lógico al leer desde FileLog vacío mediante la función de tabla merge, cierra #75575. #77441 (Vladimir Cherkasov).
  • Se solucionan varios LOGICAL_ERROR al asignar un alias a nodos AST no válidos. #77445 (Raúl Marín).
  • En la implementación de la caché del sistema de archivos, se corrigió el manejo de errores durante la escritura de segmentos de archivo. #77471 (Kseniia Sumarokova).
  • Hace que DatabaseIceberg utilice el archivo de metadatos correcto proporcionado por el catálogo. Cierra #75187. #77486 (Kseniia Sumarokova).
  • Usar la configuración predeterminada de formato en la serialización de Dynamic desde una variante compartida. #77572 (Pavel Kruglov).
  • Se revierte ‘Evitar toAST() en la ejecución de subconsultas escalares’. #77584 (Raúl Marín).
  • Se corrige la comprobación de la existencia de la ruta de datos de la tabla en el disco local. #77608 (Tuan Pham Anh).
  • La caché de consultas ahora asume que las UDF no son deterministas. En consecuencia, los resultados de las consultas con UDF ya no se almacenan en caché. Anteriormente, los usuarios podían definir UDF no deterministas cuyos resultados se almacenaban erróneamente en caché (incidencia #77553). #77633 (Jimmy Aguilar Mena).
  • Se corrigió el envío de valores constantes al servidor remoto para algunos tipos. #77634 (Pavel Kruglov).
  • Se corrigió system.filesystem_cache_log, que solo funcionaba con la configuración enable_filesystem_cache_log. #77650 (Kseniia Sumarokova).
  • Soluciona un error lógico al llamar a la función defaultRoles() dentro de una proyección. Como seguimiento de #76627. #77667 (pufit).
  • Se corrige un fallo causado por un contexto caducado en StorageS3(Azure)Queue. #77720 (Kseniia Sumarokova).
  • Los segundos argumentos de tipo Nullable para la función arrayResize ya no se permiten. Anteriormente, usar Nullable como segundo argumento podía provocar desde errores hasta resultados incorrectos. (issue #48398). #77724 (Manish Gill).
  • Ocultar credenciales en los motores de tabla RabbitMQ, Nats, Redis y AzureQueue. #77755 (Kseniia Sumarokova).
  • Corrige el comportamiento indefinido al comparar NaN en ArgMin/ArgMax. #77756 (Raúl Marín).
  • Comprobar periódicamente si las fusiones y las mutaciones se han cancelado, incluso cuando la operación no produce ningún bloque para escribir. #77766 (János Benjamin Antal).
  • Se revirtió. #77843 (Vladimir Cherkasov).
  • Se corrige un posible cierre inesperado cuando se produce el error NOT_FOUND_COLUMN_IN_BLOCK. #77854 (Vladimir Cherkasov).
  • Se corrige un fallo que se produce en StorageSystemObjectStorageQueueSettings al completar los datos. #77878 (Bharat Nallan).
  • Se deshabilitó la búsqueda difusa en el historial del servidor SSH (ya que requiere skim). #78002 (Azat Khuzhin).
  • Corrige un error por el que una consulta de búsqueda vectorial en una columna no indexada devolvía resultados incorrectos si había otra columna vectorial en la tabla con un índice de similitud vectorial definido. (Issue #77978). #78069 (Shankar Iyer).
  • Corrige el mensaje The requested output format {} is binary... Do you want to output it anyway? [y/N]. #78095 (Azat Khuzhin).
  • Corrección de un error en toStartOfInterval cuando el argumento de origen es cero. #78096 (Yarik Briukhovetskyi).
  • Impedir especificar un parámetro de consulta session_id vacío en la interfaz HTTP. #78098 (Alexey Katsman).
  • Se corrigió la sobrescritura de metadatos en Database Replicated, que podía producirse debido a una consulta RENAME ejecutada justo después de una consulta ALTER. #78107 (Nikolay Degterinsky).
  • Se corrigió un fallo en el motor NATS. #78108 (Dmitry Novikov).
  • No intente crear un history_file en un client integrado para SSH. #78112 (Azat Khuzhin).
  • Se corrige que system.detached_tables muestre información incorrecta después de las sentencias RENAME DATABASE o DROP TABLE. #78126 (Nikolay Degterinsky).
  • Corrección de las comprobaciones cuando hay demasiadas tablas con Database Replicated después de https://github.com/ClickHouse/ClickHouse/pull/77274. Además, la comprobación ahora se realiza antes de crear el almacenamiento para evitar crear nodos no contabilizados en ZooKeeper en el caso de RMT o KeeperMap. #78127 (Nikolay Degterinsky).
  • Se corrige un posible fallo debido a la inicialización concurrente de los metadatos de S3Queue. #78131 (Azat Khuzhin).
  • Las funciones groupArray* ahora generan el error BAD_ARGUMENTS cuando el argumento max_size tiene el valor 0 de tipo Int, igual que ya ocurría con UInt, en lugar de intentar ejecutarse con él. #78140 (Eduard Karacharov).
  • Evita un fallo en recoverLostReplica si la tabla local se elimina antes de pasar a detached. #78173 (Raúl Marín).
  • Se corrige el problema de la columna “alterable” en system.s3_queue_settings, que siempre devolvía false. #78187 (Kseniia Sumarokova).
  • Ocultar la firma de acceso de Azure para que no sea visible para el usuario ni en los logs. #78189 (Kseniia Sumarokova).
  • Se corrige la precarga de subflujos con prefijos en partes Wide. #78205 (Pavel Kruglov).
  • Se corrigieron bloqueos / resultados incorrectos de mapFromArrays en el caso de arrays de claves de tipo LowCardinality(Nullable). #78240 (Eduard Karacharov).
  • Se corrigen las opciones de autenticación de delta-kernel. #78255 (Kseniia Sumarokova).
  • No programar la tarea de RefreshMV si disable_insertion_and_mutation de una réplica es true. Una tarea corresponde a alguna inserción y fallará si disable_insertion_and_mutation es true. #78277 (Xu Jia).
  • Validar el acceso a las tablas subyacentes del motor Merge. #78339 (Pervakov Grigorii).
  • El modificador FINAL puede perderse en tablas con motor Distributed. #78428 (Yakov Olkhovskiy).
  • Bitmapmin devuelve uint32_max cuando el bitmap es empty(uint64_max when input type >= 8bits), lo que coincide con el comportamiento de minimum() de un roaring_bitmap vacío. #78444 (wxybear).
  • Se revierte “Aplicar el atributo preserve_most en algunos puntos del código” porque puede provocar fallos. #78449 (Azat Khuzhin).
  • Usar columnas de inserción para inferir el esquema de INFILE. #78490 (Pervakov Grigorii).
  • Deshabilita el procesamiento paralelo de consultas inmediatamente después de leer FROM cuando distributed_aggregation_memory_efficient está habilitado, ya que puede provocar un error lógico. Cierra #76934. #78500 (flynn).
  • Se establece al menos un flujo de lectura en caso de que haya cero flujos planificados después de aplicar la configuración max_streams_to_max_threads_ratio. #78505 (Eduard Karacharov).
  • En el almacenamiento S3Queue se corrige el error lógico “No se puede desregistrar: el UUID de la tabla no está registrado”. Cierra #78285. #78541 (Kseniia Sumarokova).
  • ClickHouse ahora puede determinar su cgroup v2 en sistemas en los que están habilitados tanto cgroups v1 como v2. #78566 (Grigory Korolev).
  • Las funciones de tabla de clúster de ObjectStorage fallaban al usarse con ajustes a nivel de tabla. #78587 (Daniil Ivanik).
  • ReplicatedMergeTree no admite comprobaciones de transacciones mejoradas en los INSERT. #78633 (Azat Khuzhin).
  • Aplicar la configuración de la consulta durante ATTACH. #78637 (Raúl Marín).
  • Corrige un cierre inesperado al especificar una ruta no válida en iceberg_metadata_file_path. #78688 (alesapin).
  • En el motor de tabla DeltaLake con implementación delta-kernel, se corrige el caso en que el esquema leído difiere del esquema de la tabla y, además, hay columnas de partición, lo que provocaba un error de columna no encontrada. #78690 (Kseniia Sumarokova).
  • Esta actualización corrige un error por el que una nueva sesión con nombre se cerraba inadvertidamente en el momento programado para una sesión anterior si ambas sesiones compartían el mismo nombre y la nueva se creaba antes de que expirara el timeout de la anterior. #78698 (Alexey Katsman).
  • No bloquear el cierre de la tabla mientras se ejecuta CHECK TABLE. #78782 (Raúl Marín).
  • Corrección de Keeper: se corrige el recuento de nodos efímeros en todos los casos. #78799 (Antonio Andelic).
  • Se corrigió un cast incorrecto en StorageDistributed al usar funciones de tabla distintas de view(). Cierra #78464. #78828 (Konstantin Bogdanov).
  • Corrige el formateo de tupleElement(*, 1). Cierra #78639. #78832 (Konstantin Bogdanov).
  • Los diccionarios de tipo ssd_cache ahora rechazan los parámetros block_size y write_buffer_size cuando su valor es cero o negativo (incidencia #78314). #78854 (Elmi Ahmadov).
  • Se corrige un fallo en REFRESHABLE MV en caso de ejecutar ALTER tras un cierre incorrecto. #78858 (Azat Khuzhin).
  • Se corrige el análisis de valores de DateTime incorrectos en formato CSV. #78919 (Pavel Kruglov).

Mejora en compilación/pruebas/empaquetado

  • La dependencia interna LLVM pasa de la versión 16 a la 18. #66053 (Nikita Mikhaylov).
  • Se restauraron las pruebas de integración eliminadas de nats y se corrigieron errores. - se corrigieron algunas condiciones de carrera en el motor nats - se corrigió la pérdida de datos al transmitir datos a nats en caso de pérdida de conexión - se corrigió el bloqueo al recibir el último fragmento de datos cuando finalizaba la transmisión desde nats - nats_max_reconnect está en desuso y no tiene efecto; la reconexión se realiza permanentemente con el tiempo de espera nats_reconnect_wait. #69772 (Dmitry Novikov).
  • Se corrigió el problema que impedía generar los archivos asm de contrib openssl. #72622 (RinChanNOW).
  • Mejorar la estabilidad de la prueba 03210_variant_with_aggregate_function_type. #74012 (Anton Ivashkin).
  • Se admite la compilación de HDFS tanto en Mac con ARM como en Mac Intel. #74244 (Yan Xin).
  • El script de instalación universal ofrecerá la instalación incluso en macOS. #74339 (Alexey Milovidov).
  • Corregir la compilación cuando Kerberos no está habilitado. #74771 (flynn).
  • Actualización al LLVM 19 integrado. #75148 (Konstantin Bogdanov).
  • Posible cambio incompatible: Mejora para establecer valores predeterminados aún más restrictivos. Los valores predeterminados actuales ya son seguros. El usuario debe especificar explícitamente una opción para publicar puertos. Pero cuando el usuario default no tiene una contraseña establecida mediante la variable de entorno CLICKHOUSE_PASSWORD y/o un nombre de usuario cambiado mediante CLICKHOUSE_USER, solo debería estar disponible desde el sistema local como nivel adicional de protección. #75259 (Mikhail f. Shiryaev).
  • Las pruebas de integración tienen un timeout de 1 hora para un solo lote de pruebas paralelas en ejecución. Cuando se alcanza este timeout, pytest finaliza sin generar algunos logs. El timeout interno de pytest está configurado en 55 minutos para imprimir los resultados de una sesión y no activar la señal de timeout externa. Cierra #75532. #75533 (Ilya Yatsishin).
  • Convertir todas las acciones relacionadas con clickhouse-server en una función y ejecutarlas solo al iniciar el binary predeterminado desde entrypoint.sh. En #50724 se propuso una mejora largamente aplazada. Se añadió la opción --users a clickhouse-extract-from-config para obtener valores de users.xml. #75643 (Mikhail f. Shiryaev).
  • Para las pruebas de estrés, si el servidor no se cerró mientras recopilábamos stacktraces con gdb, se añade un tiempo de espera adicional para que la detección de Possible deadlock on shutdown (see gdb.log) genere menos ruido. Solo añade retraso en los casos en que la prueba no haya finalizado correctamente. #75668 (Ilya Yatsishin).
  • Se restauraron las pruebas de integración de nats eliminadas y se corrigieron errores. - se corrigieron algunas condiciones de carrera en el motor nats - se corrigió la pérdida de datos al transmitir datos a nats en caso de pérdida de conexión - se corrigió el bloqueo al recibir el último fragmento de datos cuando finalizaba la transmisión desde nats - nats_max_reconnect está obsoleto y no tiene efecto; la reconexión se realiza de forma permanente con el tiempo de espera nats_reconnect_wait. #75850 (Dmitry Novikov).
  • Habilitar ICU y GRPC en la compilación cruzada para Darwin. #75922 (Raúl Marín).
  • Se corrige la salida de la prueba de splitting debido a sleep durante la finalización del grupo de procesos. #76090 (Mikhail f. Shiryaev).
  • No recopile los logs de docker-compose al final de la ejecución, ya que el script suele detenerse. En su lugar, recopílelos en segundo plano. #76140 (Mikhail f. Shiryaev).
  • Se dividieron las pruebas del almacenamiento de Kafka en varios archivos. Corrige #69452. #76208 (Mikhail f. Shiryaev).
  • clickhouse-odbc-bridge y clickhouse-library-bridge se han trasladado a un repositorio independiente, https://github.com/ClickHouse/odbc-bridge/. #76225 (Alexey Milovidov).
  • Se eliminan unos 20 MB de código muerto del binario. #76226 (Alexey Milovidov).
  • Se aumenta la versión mínima requerida de CMake a 3.25 debido a la introducción de block(). #76316 (Konstantin Bogdanov).
  • Actualizar fmt a la versión 11.1.3. #76547 (Raúl Marín).
  • Se actualiza lz4 a 1.10.0. #76571 (Konstantin Bogdanov).
  • Aumenta curl a 8.12.1. #76572 (Konstantin Bogdanov).
  • Actualizar libcpuid a la versión 0.7.1. #76573 (Konstantin Bogdanov).
  • Use un formato legible por máquina para analizar los resultados de pytest. #76910 (Mikhail f. Shiryaev).
  • Se corrige la compilación cruzada de Rust y se permite deshabilitar Rust por completo. #76921 (Raúl Marín).
  • Se requiere clang 19 para compilar el proyecto. #76945 (Raúl Marín).
  • La prueba se ejecuta durante más de 10 segundos en modo secuencial. Es demasiado larga para las pruebas rápidas. #76948 (Mikhail f. Shiryaev).
  • Se actualiza sccache a 0.10.0. #77580 (Konstantin Bogdanov).
  • Respetar las características de la CPU de destino en Rust y habilitar LTO en todos los crates. #78590 (Raúl Marín).
  • Actualiza minizip-ng a 4.0.9. #78917 (Konstantin Bogdanov).
Última modificación el 10 de junio de 2026