Saltar al contenido principal

Etiqueta de la versión de ClickHouse: 24.2.2.15987

Cambio incompatible con versiones anteriores

  • Validar tipos sospechosos o experimentales en tipos anidados. Anteriormente no validábamos esos tipos (salvo JSON) en tipos anidados como Array/Tuple/Map. #59385 (Kruglov Pavel).
  • La cláusula de ordenación ORDER BY ALL (introducida en la versión 23.12) se sustituye por ORDER BY *. La sintaxis anterior era demasiado propensa a errores en tablas con una columna all. #59450 (Robert Schulze).
  • Se añade una comprobación básica del número de hilos y de los tamaños de bloque. #60138 (Raúl Marín).
  • Rechazar las consultas INSERT entrantes cuando las configuraciones a nivel de consulta async_insert y deduplicate_blocks_in_dependent_materialized_views estén habilitadas simultáneamente. Este comportamiento se controla mediante la configuración throw_if_deduplication_in_dependent_materialized_views_enabled_with_async_insert y está habilitado de forma predeterminada. Esto da continuidad a https://github.com/ClickHouse/ClickHouse/pull/59699 y es necesario para desbloquear https://github.com/ClickHouse/ClickHouse/pull/59915. #60888 (Nikita Mikhaylov).
  • La utilidad clickhouse-copier se ha trasladado a un repositorio independiente en GitHub: https://github.com/ClickHouse/copier. Ya no se incluye en el paquete, pero sigue disponible como descarga independiente. Esto cierra: #60734 Esto cierra: #60540 Esto cierra: #60250 Esto cierra: #52917 Esto cierra: #51140 Esto cierra: #47517 Esto cierra: #47189 Esto cierra: #46598 Esto cierra: #40257 Esto cierra: #36504 Esto cierra: #35485 Esto cierra: #33702 Esto cierra: #26702 ### Entrada de documentación sobre cambios visibles para el usuario. #61058 (Nikita Mikhaylov).
  • Para mejorar la compatibilidad con MySQL, la función locate ahora acepta de forma predeterminada los argumentos (needle, haystack[, start_pos]). El comportamiento anterior (haystack, needle, [, start_pos]) se puede restaurar estableciendo function_locate_has_mysql_compatible_argument_order = 0. #61092 (Robert Schulze).
  • Las partes de datos en memoria obsoletas quedaron en desuso desde la versión 23.5 y dejaron de ser compatibles a partir de la versión 23.10. Ahora se elimina el código restante. Continuación de #55186 y #45409. Es poco probable que haya usado partes de datos en memoria, porque solo estaban disponibles antes de la versión 23.5 y únicamente cuando se habilitaban manualmente especificando las SETTINGS correspondientes para una tabla MergeTree. Para comprobar si tiene partes de datos en memoria, ejecute la siguiente consulta: SELECT part_type, count() FROM system.parts GROUP BY part_type ORDER BY part_type. Para deshabilitar el uso de partes de datos en memoria, ejecute ALTER TABLE ... MODIFY SETTING min_bytes_for_compact_part = DEFAULT, min_rows_for_compact_part = DEFAULT. Antes de actualizar desde versiones antiguas de ClickHouse, compruebe primero que no tenga partes de datos en memoria. Si hay partes de datos en memoria, deshabilítelas primero; después, espere hasta que ya no haya partes de datos en memoria y continúe con la actualización. #61127 (Alexey Milovidov).
  • Prohibir por defecto SimpleAggregateFunction en el ORDER BY de las tablas MergeTree (igual que AggregateFunction, se prohíben porque no son comparables) (use allow_suspicious_primary_key para permitirlas). #61399 (Azat Khuzhin).
  • ClickHouse permite datos binarios arbitrarios en el tipo de datos String, que normalmente es UTF-8. Las cadenas de Parquet/ORC/Arrow solo admiten UTF-8. Por eso, puede elegir qué tipo de datos de Arrow usar para el tipo de datos String de ClickHouse: String o Binary. Esto se controla mediante las opciones de configuración output_format_parquet_string_as_string, output_format_orc_string_as_string y output_format_arrow_string_as_string. Aunque Binary sería más correcto y compatible, usar String de forma predeterminada se ajusta a las expectativas de los usuarios en la mayoría de los casos. Parquet/ORC/Arrow admite muchos métodos de compresión, incluidos lz4 y zstd. ClickHouse admite todos y cada uno de los métodos de compresión. Algunas herramientas menos completas no admiten el método de compresión lz4, que es más rápido, por eso establecemos zstd como valor predeterminado. Esto se controla mediante las opciones de configuración output_format_parquet_compression_method, output_format_orc_compression_method y output_format_arrow_compression_method. Cambiamos el valor predeterminado a zstd para Parquet y ORC, pero no para Arrow (ya que se usa principalmente en casos de bajo nivel). #61817 (Alexey Milovidov).
  • Corrección del problema de seguridad de la vista materializada, que permitía a un usuario insertar en una tabla sin los privilegios necesarios. La corrección valida que el usuario tenga permiso para insertar no solo en una vista materializada, sino también en todas las tablas subyacentes. Esto significa que algunas consultas que antes funcionaban ahora pueden fallar con Not enough privileges. Para solucionar este problema, la versión introduce una nueva funcionalidad de SQL security para las vistas https://clickhouse.com/docs/sql-reference/statements/create/view#sql_security. #54901 (pufit)

Nueva funcionalidad

  • Modo de compatibilidad con Topk/topkweighed, que devuelve el recuento de valores y su error. #54508 (UnamedRus).
  • Se añadió una nueva sintaxis que permite especificar el usuario que define una vista/vista materializada. Esto permite ejecutar consultas e inserciones desde vistas sin privilegios explícitos sobre las tablas subyacentes. #54901 (pufit).
  • Se implementó la conversión automática de tablas MergeTree de distintos tipos al motor replicado. Cree un archivo vacío convert_to_replicated en el directorio de datos de la tabla (/clickhouse/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/) y la tabla se convertirá automáticamente la próxima vez que se inicie el servidor. #57798 (Kirill).
  • Se añadió la función de tabla mergeTreeIndex. Representa el contenido de los archivos de índice y de marcas de las tablas MergeTree. Puede usarse para tareas de introspección. Sintaxis: mergeTreeIndex(database, table, [with_marks = true]), donde database.table es una tabla existente con el motor MergeTree. #58140 (Anton Popov).
  • Intenta detectar automáticamente el formato de archivo durante la inferencia del esquema cuando se desconozca en los motores file/s3/hdfs/url/azureBlobStorage. Cierra #50576. #59092 (Kruglov Pavel).
  • Se añade generate_series como table function. Esta función genera una tabla con una progresión aritmética de números naturales. #59390 (divanik).
  • Se añadió la consulta ALTER TABLE table FORGET PARTITION partition que elimina los nodos de ZooKeeper asociados a una partición vacía. #59507 (Sergei Trifonov).
  • Admite la lectura y escritura de copias de seguridad en archivos tar. #59535 (josh-hildred).
  • Añade la nueva función de agregación ‘groupArrayIntersect’. Continúa: #49862. #59598 (Yarik Briukhovetskyi).
  • Se ha implementado la tabla system.dns_cache, que puede resultar útil para depurar problemas de DNS. #59856 (Kirill Nikiforov).
  • Se añadió compatibilidad con buckets de S3Express. #59965 (Nikita Taranov).
  • El códec LZ4HC aceptará ahora un nuevo nivel 2, más rápido que el nivel mínimo anterior, 3, a costa de una menor compresión. En versiones anteriores, LZ4HC(2) y valores inferiores eran lo mismo que LZ4HC(3). Autor: Cyan4973. #60090 (Alexey Milovidov).
  • Se implementó la tabla system.dns_cache, que puede ser útil para depurar problemas de DNS. Nuevo ajuste del servidor dns_cache_max_size. #60257 (Kirill Nikiforov).
  • Se agregó la función toMillisecond, que devuelve el componente de milisegundo para valores de tipo DateTime o DateTime64. #60281 (Shaun Struwig).
  • Se admite la versión de un solo argumento de la table function merge, como merge(['db_name', ] 'tables_regexp'). #60372 (豪肥肥).
  • Hacer que todos los nombres de formato no distingan entre mayúsculas y minúsculas, como Tsv, o TSV, o tsv, o incluso rowbinary. #60420 (豪肥肥).
  • Se añadió una nueva sintaxis que permite especificar el usuario definidor en una vista/vista materializada. Esto permite ejecutar operaciones SELECT/INSERT desde vistas sin permisos explícitos sobre las tablas subyacentes. #60439 (pufit).
  • Se añaden cuatro propiedades a StorageMemory (motor de memoria): min_bytes_to_keep, max_bytes_to_keep, min_rows_to_keep y max_rows_to_keep - Se añaden pruebas para reflejar los nuevos cambios - Se actualiza la documentación de memory.md - Se añade la propiedad context de la tabla a MemorySink para permitir el acceso a los límites de los parámetros de la tabla. #60612 (Jake Bamrah).
  • Se añadió la función toMillisecond, que devuelve el componente de milisegundo para valores de tipo DateTime o DateTime64. #60649 (Robert Schulze).
  • Límites separados para el número de consultas en espera y en ejecución. Se añadió la nueva configuración del servidor max_waiting_queries, que limita el número de consultas que quedan en espera debido a async_load_databases. Los límites existentes del número de consultas en ejecución ya no cuentan las consultas en espera. #61053 (Sergei Trifonov).
  • Se agregó compatibilidad con ATTACH PARTITION ALL. #61107 (Kirill Nikiforov).

Mejora del rendimiento

  • Elimina las funciones de agregación min/max/any/anyLast sobre las claves de GROUP BY en la sección SELECT. #52230 (JackyWoo).
  • Mejora el rendimiento del método de agregación serializado cuando hay varias columnas [nullable]. Esta es una versión general de #51399 que no compromete la integridad de la abstracción. #55809 (Amos Bird).
  • Salida diferida de la fase build del join para mejorar el rendimiento del join ALL. #58278 (LiuNeng).
  • Mejoras en las funciones de agregación ArgMin / ArgMax / any / anyLast / anyHeavy, así como en las consultas ORDER BY {u8/u16/u32/u64/i8/i16/u32/i64) LIMIT 1. #58640 (Raúl Marín).
  • Optimiza el rendimiento condicional de sum/avg para bigint y tipos decimal grandes al reducir los fallos de predicción de saltos. #59504 (李扬).
  • Mejora el rendimiento de las consultas SELECT con mutaciones activas. #59531 (Azat Khuzhin).
  • Optimización trivial del filtro de columnas. Se evitan las columnas de filtro cuyo tipo de dato subyacente no es numérico al filtrarlas con result_size_hint = -1. La memoria pico puede reducirse al 44 % de la original en algunos casos. #59698 (李扬).
  • La clave primaria usará menos memoria. #60049 (Alexey Milovidov).
  • Se reduce el uso de memoria de la clave primaria y de algunas otras operaciones. #60050 (Alexey Milovidov).
  • Las claves primarias de las tablas se cargarán en memoria de forma diferida en el primer acceso. Esto está controlado por el nuevo ajuste de MergeTree primary_key_lazy_load, que está activado de forma predeterminada. Esto ofrece varias ventajas: - no se cargará para las tablas que no se utilicen; - si no hay suficiente memoria, se lanzará una excepción en el primer uso en lugar de al iniciar el servidor. Esto también presenta varias desventajas: - el coste en latencia de cargar la clave primaria se asumirá en la primera consulta en lugar de antes de aceptar conexiones; en teoría, esto podría introducir un problema de tipo thundering herd. Esto cierra #11188. #60093 (Alexey Milovidov).
  • Función vectorizada dotProduct, útil para la búsqueda vectorial. #60202 (Robert Schulze).
  • Si la clave primaria de la tabla contiene sobre todo columnas poco útiles, no las mantengas en memoria. Esto se controla con una nueva configuración primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columns, cuyo valor predeterminado es 0.9, lo que significa lo siguiente: en una clave primaria compuesta, si una columna cambia de valor al menos en 0.9 de todas las ocasiones, no se cargarán las columnas posteriores. #60255 (Alexey Milovidov).
  • Ejecutar la función multiIf de manera columnar cuando el tipo subyacente de result_type sea numérico. #60384 (李扬).
  • Como se muestra en la Fig. 1, sustituir ”&&” por ”&” podría generar código SIMD. imagen Fig. 1. Código compilado a partir de ’&&’ (izquierda) y ’&’ (derecha). #60498 (Zhiguo Zhou).
  • Mutexes más rápidos (casi el doble) (antes eran más lentos por ThreadFuzzer). #60823 (Azat Khuzhin).
  • Mover el drenaje de conexiones de prepare a work y drenar varias conexiones en paralelo. #60845 (lizhuoyu5).
  • Optimiza insertManyFrom para números Nullable o cadenas Nullable. #60846 (李扬).
  • Se optimizó la función dotProduct para evitar copias de memoria innecesarias y costosas. #60928 (Robert Schulze).
  • Las operaciones con la caché del sistema de archivos se verán menos afectadas por la contención de bloqueos. #61066 (Alexey Milovidov).
  • Optimiza ColumnString::replicate y evita que memcpySmallAllowReadWriteOverflow15Impl se optimice como la memcpy integrada. Cierra #61074. ColumnString::replicate es 2,46 veces más rápido en x86-64. #61075 (李扬).
  • Impresión 30 veces más rápida para enteros de 256 bits. #61100 (Raúl Marín).
  • Si una consulta con un error de sintaxis contenía un matcher COLUMNS con una expresión regular, la expresión regular se compilaba cada vez durante el backtracking del parser, en lugar de compilarse una sola vez. Esto era un error fundamental. La expresión regular compilada se almacenaba en el AST. Pero la letra A de AST significa “abstracto”, lo que implica que no debería contener objetos pesados. Algunas partes del AST pueden crearse y descartarse durante el parsing, incluso durante un gran número de retrocesos. Esto provoca lentitud en la fase de análisis y, en consecuencia, permite un DoS por parte de un usuario readonly. Pero el problema principal es que impide avanzar en los fuzzers. #61543 (Alexey Milovidov).

Mejora

  • Al ejecutar la consulta MODIFY COLUMN para vistas materializadas, compruebe la estructura de la tabla interna para asegurarse de que existan todas las columnas. #47427 (sunny).
  • Se añadió la tabla system.keywords, que contiene todas las palabras clave del parser. Se necesita principalmente y se utilizará para mejorar las pruebas de fuzzing y el resaltado de sintaxis. #51808 (Nikita Mikhaylov).
  • Se añadió compatibilidad de vistas parametrizadas con el analizador para que no analice CREATE PARAMETERIZED VIEW. Se refactorizó la lógica existente de vistas parametrizadas para que no analice CREATE PARAMETERIZED VIEW. #54211 (SmitaRKulkarni).
  • El motor de base de datos Ordinary está obsoleto. Recibirá una advertencia en clickhouse-client si su servidor lo está usando. Esto cierra #52229. #56942 (shabroo).
  • Todos los bloqueos de zero copy asociados a una tabla deben eliminarse al eliminar la tabla. También debe eliminarse el directorio que contiene estos bloqueos. #57575 (Sema Checherinda).
  • Se añade compatibilidad con cortocircuito para la función dictGetOrDefault. Cierra #52098. #57767 (jsc0218).
  • Permitir declarar enum en la estructura de una tabla externa. #57857 (Duc Canh Le).
  • Al ejecutar ALTER COLUMN MATERIALIZE en una columna con una expresión DEFAULT o MATERIALIZED, ahora se escriben los valores correctos: el valor predeterminado para las partes existentes con valor predeterminado, o el valor no predeterminado para las partes existentes con valor no predeterminado. Anteriormente, se escribía el valor predeterminado en todas las partes existentes. #58023 (Duc Canh Le).
  • Se habilitó una lógica de backoff (p. ej., exponencial). Permitirá reducir el uso de CPU, el uso de memoria y el tamaño de los archivos de registro. #58036 (MikhailBurdukov).
  • Tener en cuenta las filas eliminadas con eliminación ligera al seleccionar las partes que se van a fusionar. #58223 (Zhuo Qiu).
  • Permite definir volume_priority en storage_configuration. #58533 (Andrey Zvonov).
  • Se añadió soporte para el tipo Date32 en el códec T64. #58738 (Hongbin Ma).
  • Este PR hace que las conexiones http/https sean reutilizables en todos los casos de uso, incluso cuando la respuesta es 3xx o 4xx. #58845 (Sema Checherinda).
  • Se añadieron comentarios para las columnas de más tablas del sistema. Continuación de https://github.com/ClickHouse/ClickHouse/pull/58356. #59016 (Nikita Mikhaylov).
  • Ahora podemos usar columnas virtuales en PREWHERE. Resulta útil para columnas virtuales no constantes, como _part_offset. #59033 (Amos Bird).
  • Ahora se pueden especificar ajustes para el motor de tabla Distributed en el archivo de configuración del servidor (de forma similar a la configuración de MergeTree), p. ej. <distributed> <flush_on_detach>false</flush_on_detach> </distributed>. #59291 (Azat Khuzhin).
  • Mejora en Keeper: almacenar en caché en memoria solo una cantidad determinada de logs, controlada por latest_logs_cache_size_threshold y commit_logs_cache_size_threshold. #59460 (Antonio Andelic).
  • En lugar de usar una clave constante, ahora el almacenamiento de objetos genera una clave para determinar la capacidad de eliminar objetos. #59495 (Sema Checherinda).
  • No inferir de forma predeterminada los valores de coma flotante en notación exponencial. Se añade la configuración input_format_try_infer_exponent_floats, que restaura el comportamiento anterior (deshabilitada de forma predeterminada). Cierra #59476. #59500 (Kruglov Pavel).
  • Permitir que las operaciones ALTER vayan entre paréntesis. La inclusión de paréntesis puede controlarse con la configuración format_alter_operations_with_parentheses. De forma predeterminada, en las consultas con formato se incluyen los paréntesis, ya que almacenamos las operaciones ALTER formateadas en algunos lugares como metadatos (por ejemplo: mutations). La nueva sintaxis aclara algunas consultas en las que las operaciones ALTER terminan en una lista. Por ejemplo: ALTER TABLE x MODIFY TTL date GROUP BY a, b, DROP COLUMN c no puede analizarse correctamente con la sintaxis anterior. Con la nueva sintaxis, la consulta ALTER TABLE x (MODIFY TTL date GROUP BY a, b), (DROP COLUMN c) queda clara. Las versiones anteriores no pueden leer la nueva sintaxis; por lo tanto, usarla podría causar problemas si se mezclan versiones más nuevas y más antiguas de ClickHouse en un solo clúster. #59532 (János Benjamin Antal).
  • Se actualizó Intel QPL (usado por el códec DEFLATE_QPL) de la versión 1.3.1 a la 1.4.0. También se corrigió un error en el mecanismo de timeout del sondeo, ya que observamos que en algunos casos el timeout no funcionaba correctamente; si se producía, IAA y la CPU podían procesar el búfer de forma concurrente. Por ahora, es mejor asegurarse de que el estado del códec IAA no sea QPL&#95;STS&#95;BEING&#95;PROCESSED y, en ese caso, recurrir al códec SW. #59551 (jasperzhu).
  • Se añade pread posicional en libhdfs3. Si quieres llamar a la lectura posicional en libhdfs3, usa la función hdfsPread de hdfs.h de la siguiente forma: tSize hdfsPread(hdfsFS fs, hdfsFile file, void * buffer, tSize length, tOffset position);. #59624 (M1eyu).
  • Comprobación de desbordamiento de pila en los analizadores, incluso si el usuario configuró incorrectamente el ajuste max_parser_depth con un valor muy alto. Esto cierra #59622. #59697 (Alexey Milovidov).
  • Se unifica el comportamiento de las colecciones con nombre creadas con XML y SQL en el motor de almacenamiento Kafka. #59710 (Pervakov Grigorii).
  • Permitir uuid en replica_path si CREATE TABLE lo especifica explícitamente. #59908 (Azat Khuzhin).
  • Agregar la columna metadata_version para las tablas ReplicatedMergeTree en la tabla del sistema system.tables. #59942 (Maksim Kita).
  • Mejora de Keeper: se añaden reintentos ante fallos en operaciones relacionadas con el disco. #59980 (Antonio Andelic).
  • Se añadió una nueva opción de configuración backups.remove_backup_files_after_failure: <clickhouse> <backups> <remove_backup_files_after_failure>true</remove_backup_files_after_failure> </backups> </clickhouse>. #60002 (Vitaly Baranov).
  • Usar varios hilos al leer los metadatos de las tablas desde una copia de seguridad al ejecutar el comando RESTORE. #60040 (Vitaly Baranov).
  • Ahora, si StorageBuffer tiene más de 1 segmento (num_layers > 1), el vaciado en segundo plano se realizará simultáneamente para todos los segmentos en varios hilos. #60111 (alesapin).
  • Se añade compatibilidad para especificar usuarios para configuraciones específicas de S3 en la configuración mediante la clave user. #60144 (Antonio Andelic).
  • Copiar el archivo S3 de respaldo de GCP en la copia en búfer en caso de que GCP devolviera Internal Error con el código de error HTTP GATEWAY_TIMEOUT. #60164 (Maksim Kita).
  • Permitir “local” como tipo de almacenamiento de objetos en lugar de “local_blob_storage”. #60165 (Kseniia Sumarokova).
  • Implementa el operador de comparación para valores Variant y la inserción correcta de Field en una columna Variant. No permite crear el tipo Variant con tipos Variant similares de forma predeterminada (se permite con la configuración allow_suspicious_variant_types) Cierra #59996. Cierra #59850. #60198 (Kruglov Pavel).
  • Se mejoró la usabilidad general de las columnas virtuales. Ahora se permite usar columnas virtuales en PREWHERE (merece la pena para columnas virtuales no constantes como _part_offset). Ahora hay documentación incorporada para las columnas virtuales como comentario de la columna en la consulta DESCRIBE, con la configuración describe_include_virtual_columns habilitada. #60205 (Anton Popov).
  • Ejecución con cortocircuito para ULIDStringToDateTime. #60211 (Juan Madurga).
  • Se añadió la columna query_id a las tablas system.backups y system.backup_log. Se añadió el stacktrace del error a la columna error. #60220 (Maksim Kita).
  • Volcado en paralelo de bloques INSERT pendientes del motor Distributed al ejecutar DETACH, al apagar el servidor y con SYSTEM FLUSH DISTRIBUTED (El paralelismo solo funcionará si tiene una política de varios discos para la tabla, como todo en el motor Distributed en este momento). #60225 (Azat Khuzhin).
  • La configuración del filtro en joinRightColumnsSwitchNullability es incorrecta; se corrige en #59625. #60259 (lgbo).
  • Se añade una configuración para forzar el uso de la caché read-through en las fusiones. #60308 (Kseniia Sumarokova).
  • La incidencia #57598 menciona un comportamiento distinto con respecto a la gestión de transacciones. Emitir un COMMIT/ROLLBACK cuando no hay ninguna transacción activa se informa como un error, a diferencia del comportamiento de MySQL. #60338 (PapaToemmsn).
  • Se añadió el modo none_only_active a la configuración distributed_ddl_output_mode. #60340 (Alexander Tokmakov).
  • Las conexiones a través del puerto de MySQL ahora usan automáticamente la configuración prefer_column_name_to_alias = 1 para ofrecer compatibilidad con QuickSight sin configuración adicional. Además, las configuraciones mysql_map_string_to_text_in_show_columns y mysql_map_fixed_string_to_text_in_show_columns ahora están habilitadas de forma predeterminada, lo que también afecta únicamente a las conexiones MySQL. Esto aumenta la compatibilidad con más herramientas de BI. #60365 (Robert Schulze).
  • Cuando el formato de salida es Pretty format y un bloque consta de un único valor numérico superior a un millón, se imprimirá un número legible a la derecha de la tabla. p. ej., ┌──────count()─┐ │ 233765663884 │ -- 233.77 billion └──────────────┘. #60379 (rogeryk).
  • Permite configurar manejadores de redirección HTTP para clickhouse-server. Por ejemplo, puedes hacer que / redirija a la UI de Play. #60390 (Alexey Milovidov).
  • El panel avanzado tiene una paleta de colores ligeramente mejor para gráficos con varias líneas. #60391 (Alexey Milovidov).
  • Se corrige una condición de carrera en el código JavaScript que hacía que los gráficos se duplicaran y quedaran superpuestos. #60392 (Alexey Milovidov).
  • Se comprueba si hay desbordamiento de pila en los analizadores sintácticos incluso si el usuario configuró incorrectamente el ajuste max_parser_depth con un valor muy alto. Esto cierra #59622. #60434 (Alexey Milovidov).
  • La función substring tiene ahora un nuevo alias, byteSlice. #60494 (Robert Schulze).
  • Se renombró la configuración del servidor dns_cache_max_size a dns_cache_max_entries para reducir la ambigüedad. #60500 (Kirill Nikiforov).
  • SHOW INDEX | INDEXES | INDICES | KEYS ya no ordena por las columnas de la clave primaria (algo que no resultaba intuitivo). #60514 (Robert Schulze).
  • Mejora de Keeper: interrumpir el arranque si se detecta un snapshot no válido para evitar la pérdida de datos. #60537 (Antonio Andelic).
  • Se añadió la inyección de fallos para dividir los rangos de lectura de MergeTree en rangos que se intersecan y rangos que no, mediante la configuración merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_fault_probability. #60548 (Maksim Kita).
  • El dashboard Advanced ahora mantiene los controles siempre visibles al desplazarse. Esto permite añadir un nuevo gráfico sin tener que desplazarse hacia arriba. #60692 (Alexey Milovidov).
  • Los tipos String y enum se pueden usar en el mismo contexto, como arrays, consultas UNION y expresiones condicionales. Esto cierra #60726. #60727 (Alexey Milovidov).
  • Se actualiza tzdata a 2024a. #60768 (Raúl Marín).
  • Compatibilidad con archivos sin extensión de formato en la base de datos Filesystem. #60795 (Kruglov Pavel).
  • Mejora de Keeper: admite leadership_expiry_ms en la configuración de Keeper. #60806 (Brokenice0415).
  • Inferir siempre los números en notación exponencial en formatos JSON, independientemente del ajuste input_format_try_infer_exponent_floats. Se añade el ajuste input_format_json_use_string_type_for_ambiguous_paths_in_named_tuples_inference_from_objects, que permite usar el tipo String para rutas ambiguas en lugar de generar una excepción durante la inferencia de Tuples con nombre a partir de objetos JSON. #60808 (Kruglov Pavel).
  • Se añadió una opción para que SMJ trate los valores NULL como los mayores o los menores. Así, el comportamiento puede ser compatible con otros sistemas SQL, como Apache Spark. #60896 (loudongfeng).
  • Se ha añadido la versión de ClickHouse a las etiquetas de Docker. Cierra #54224. #60949 (Nikolay Monkov).
  • Se añade la configuración parallel_replicas_allow_in_with_subquery = 1, que permite que las subconsultas de IN funcionen con réplicas paralelas. #60950 (Nikolai Kochetov).
  • DNSResolver baraja las IP resueltas. #60965 (Sema Checherinda).
  • Se admite detectar el formato de salida por la extensión del archivo en clickhouse-client y clickhouse-local. #61036 (豪肥肥).
  • Comprobar periódicamente las actualizaciones del límite de memoria. #61049 (Han Fei).
  • Habilitar el perfilado de procesadores (tiempo empleado y bytes de entrada/salida para ordenación, agregación, …) de forma predeterminada. #61096 (Azat Khuzhin).
  • Se ha añadido la función toUInt128OrZero, que se había omitido por error (este error está relacionado con https://github.com/ClickHouse/ClickHouse/pull/945). Los alias de compatibilidad FROM_UNIXTIME y DATE_FORMAT (no son nativos de ClickHouse y solo existen por compatibilidad con MySQL) ahora no distinguen entre mayúsculas y minúsculas, como cabe esperar de los alias de compatibilidad con SQL. #61114 (Alexey Milovidov).
  • Mejoras en las comprobaciones de acceso, que permiten revocar derechos no poseídos incluso cuando el usuario de destino tampoco tiene los privilegios para revocar. Ejemplo: ```sql GRANT SELECT ON . TO user1; REVOKE SELECT ON system.* FROM user1;. #61115 (pufit).
  • Corregir un error en la optimización anterior: https://github.com/ClickHouse/ClickHouse/pull/59698: eliminar break para garantizar que la primera columna filtrada tenga el tamaño mínimo cc @jsc0218. #61145 (李扬).
  • Se corrige la función has() con una columna Nullable (corrige #60214). #61249 (Mikhail Koviazin).
  • Ahora es posible especificar el atributo merge="true" en las sustituciones de configuración para subárboles <include from_zk="/path" merge="true">. Si se especifica este atributo, ClickHouse fusionará el subárbol con la configuración existente; de lo contrario, el comportamiento predeterminado es añadir contenido nuevo a la configuración. #61299 (alesapin).
  • Se añaden métricas asíncronas para los mapeos de memoria virtual: VMMaxMapCount & VMNumMaps. Cierra #60662. #61354 (Tuan Pham Anh).
  • Usar la opción temporary_files_codec en todos los lugares donde se crean datos temporales, por ejemplo, en la ordenación en memoria externa y en el GROUP BY en memoria externa. Antes solo funcionaba con el algoritmo JOIN partial_merge. #61456 (Maksim Kita).
  • Se elimina la comprobación duplicada containing_part.empty(), ya que aquí ya se comprueba: https://github.com/ClickHouse/ClickHouse/blob/1296dac3c7e47670872c15e3f5e58f869e0bd2f2/src/Storages/MergeTree/MergeTreeData.cpp#L6141. #61467 (William Schoeffel).
  • Se añade una nueva configuración, max_parser_backtracks, que permite limitar la complejidad del análisis sintáctico de las consultas. #61502 (Alexey Milovidov).
  • Menor contención durante el redimensionamiento dinámico de la caché del sistema de archivos. #61524 (Kseniia Sumarokova).
  • Se prohíbe el modo segmentado de la cola de StorageS3, ya que se reescribirá. #61537 (Kseniia Sumarokova).
  • Se corrigió una errata: de use_leagcy_max_level a use_legacy_max_level. #61545 (William Schoeffel).
  • Eliminar algunas entradas duplicadas de blob_storage_log. #61622 (YenchangChan).
  • Se agregó la función current_user como alias de compatibilidad con MySQL. #61770 (Yarik Briukhovetskyi).
  • Usar identidad administrada para las operaciones de IO de las copias de seguridad al usar Azure Blob Storage. Se añadió una configuración para evitar que ClickHouse intente crear un contenedor que no existe, lo que requiere permisos a nivel de la cuenta de almacenamiento. #61785 (Daniel Pozo Escalona).
  • En la versión anterior, algunos números en los formatos Pretty no quedaban lo bastante bien. #61794 (Alexey Milovidov).
  • Un valor largo en los formatos Pretty no se cortará si es el único valor del conjunto de resultados, como en el resultado de la consulta SHOW CREATE TABLE. #61795 (Alexey Milovidov).
  • Al igual que clickhouse-local, clickhouse-client aceptará la opción --output-format como sinónimo de la opción --format. Esto resuelve #59848. #61797 (Alexey Milovidov).
  • Si stdout es un terminal y no se especifica el formato de salida, clickhouse-client y herramientas similares usarán PrettyCompact de forma predeterminada, igual que en el modo interactivo. clickhouse-client y clickhouse-local manejarán de forma unificada los argumentos de línea de comandos para los formatos de entrada y salida. Esto cierra #61272. #61800 (Alexey Milovidov).
  • Agrupación de dígitos con guiones bajos en los formatos Pretty para mejorar la legibilidad. Esto se controla con una nueva configuración, output_format_pretty_highlight_digit_groups. #61802 (Alexey Milovidov).

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

Última modificación el 10 de junio de 2026