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 porORDER BY *. La sintaxis anterior era demasiado propensa a errores en tablas con una columnaall. #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_insertydeduplicate_blocks_in_dependent_materialized_viewsestén habilitadas simultáneamente. Este comportamiento se controla mediante la configuraciónthrow_if_deduplication_in_dependent_materialized_views_enabled_with_async_inserty 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-copierse 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
locateahora acepta de forma predeterminada los argumentos(needle, haystack[, start_pos]). El comportamiento anterior(haystack, needle, [, start_pos])se puede restaurar estableciendofunction_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, ejecuteALTER 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
SimpleAggregateFunctionen elORDER BYde las tablasMergeTree(igual queAggregateFunction, se prohíben porque no son comparables) (useallow_suspicious_primary_keypara 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_stringyoutput_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ónlz4, que es más rápido, por eso establecemoszstdcomo valor predeterminado. Esto se controla mediante las opciones de configuraciónoutput_format_parquet_compression_method,output_format_orc_compression_methodyoutput_format_arrow_compression_method. Cambiamos el valor predeterminado azstdpara 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_replicateden 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 tablasMergeTree. Puede usarse para tareas de introspección. Sintaxis:mergeTreeIndex(database, table, [with_marks = true]), dondedatabase.tablees una tabla existente con el motorMergeTree. #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 partitionque 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
LZ4HCaceptará 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 queLZ4HC(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 tipoDateTimeoDateTime64. #60281 (Shaun Struwig). - Se admite la versión de un solo argumento de la table function
merge, comomerge(['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_keepymax_rows_to_keep- Se añaden pruebas para reflejar los nuevos cambios - Se actualiza la documentación dememory.md- Se añade la propiedadcontextde la tabla aMemorySinkpara 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 tipoDateTimeoDateTime64. #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 aasync_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/avgparabiginty tiposdecimalgrandes al reducir los fallos de predicción de saltos. #59504 (李扬). - Mejora el rendimiento de las consultas
SELECTcon 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 es0.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.
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
dotProductpara 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
memcpyintegrada. 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
enumen la estructura de una tabla externa. #57857 (Duc Canh Le). - Al ejecutar
ALTER COLUMN MATERIALIZEen una columna con una expresiónDEFAULToMATERIALIZED, 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_priorityenstorage_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_thresholdycommit_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 cno puede analizarse correctamente con la sintaxis anterior. Con la nueva sintaxis, la consultaALTER 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 seaQPL_STS_BEING_PROCESSEDy, en ese caso, recurrir al códec SW. #59551 (jasperzhu). - Se añade
preadposicional 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_depthcon 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_versionpara las tablas ReplicatedMergeTree en la tabla del sistemasystem.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
StorageBuffertiene 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 Errorcon el código de error HTTPGATEWAY_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
Variantcon tipos Variant similares de forma predeterminada (se permite con la configuraciónallow_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 consultaDESCRIBE, con la configuracióndescribe_include_virtual_columnshabilitada. #60205 (Anton Popov). - Ejecución con cortocircuito para
ULIDStringToDateTime. #60211 (Juan Madurga). - Se añadió la columna
query_ida las tablassystem.backupsysystem.backup_log. Se añadió el stacktrace del error a la columnaerror. #60220 (Maksim Kita). - Volcado en paralelo de bloques INSERT pendientes del motor Distributed al ejecutar
DETACH, al apagar el servidor y conSYSTEM 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
joinRightColumnsSwitchNullabilityes 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_activea la configuracióndistributed_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 = 1para ofrecer compatibilidad con QuickSight sin configuración adicional. Además, las configuracionesmysql_map_string_to_text_in_show_columnsymysql_map_fixed_string_to_text_in_show_columnsahora 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_depthcon un valor muy alto. Esto cierra #59622. #60434 (Alexey Milovidov). - La función
substringtiene ahora un nuevo alias,byteSlice. #60494 (Robert Schulze). - Se renombró la configuración del servidor
dns_cache_max_sizeadns_cache_max_entriespara reducir la ambigüedad. #60500 (Kirill Nikiforov). SHOW INDEX | INDEXES | INDICES | KEYSya 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_msen 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 ajusteinput_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-clientyclickhouse-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 compatibilidadFROM_UNIXTIMEyDATE_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
breakpara garantizar que la primera columna filtrada tenga el tamaño mínimo cc @jsc0218. #61145 (李扬). - Se corrige la función
has()con una columnaNullable(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_codecen 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 JOINpartial_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_levelause_legacy_max_level. #61545 (William Schoeffel). - Eliminar algunas entradas duplicadas de blob_storage_log. #61622 (YenchangChan).
- Se agregó la función
current_usercomo 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-clientaceptará la opción--output-formatcomo 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-clienty herramientas similares usaránPrettyCompactde forma predeterminada, igual que en el modo interactivo.clickhouse-clientyclickhouse-localmanejará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)
- Se corrige un error de
intDivcon argumentos Decimal #59243 (Yarik Briukhovetskyi). - Corregir_el_problema_de_kql_detectado_por_wingfuzz #59626 (Yong Wang).
- Soluciona el error “Read beyond last offset” de AsynchronousBoundedReadBuffer #59630 (Vitaly Baranov).
- rabbitmq: corregido el problema de no tener mensajes ni confirmados ni rechazados #59775 (Kseniia Sumarokova).
- Corrige la ejecución de funciones en const y LowCardinality con GROUP BY const en analyzer #59986 (Azat Khuzhin).
- Corrige la conversión de la escala para DateTime64 #60004 (Yarik Briukhovetskyi).
- Corregir INSERT en SQLite con comillas simples (escapando las comillas simples con otra comilla en lugar de una barra invertida) #60015 (Azat Khuzhin).
- Se corrigió
optimize_uniq_to_count, que eliminaba el alias de la columna #60026 (Raúl Marín). - Se corrige finished_mutations_to_keep=0 en MergeTree (como indica la documentación, 0 significa conservarlo todo) #60031 (Azat Khuzhin).
- Se corrigió una posible excepción en la tabla s3queue al eliminarla #60036 (Kseniia Sumarokova).
- PartsSplitter: rangos no válidos para una misma parte #60041 (Maksim Kita).
- Usar max_query_size del contexto en DDLLogEntry en lugar del valor fijo 4096 #60083 (Kruglov Pavel).
- Corrección del formato inconsistente de las consultas #60095 (Alexey Milovidov).
- Corrige el formato incoherente de EXPLAIN en las subconsultas #60102 (Alexey Milovidov).
- Se corrige el cierre inesperado de
cosineDistancecon Nullable #60150 (Raúl Marín). - Permitir la conversión de bools en representación de cadena a bools reales #60160 (Robert Schulze).
- Se corrige system.s3queue_log #60166 (Kseniia Sumarokova).
- Se corrige
arrayReduceal usar un nombre de función de agregado Nullable #60188 (Raúl Marín). - Corregir la ejecución de acciones durante el filtrado preliminar (PK, poda de particiones) #60196 (Azat Khuzhin).
- Ocultar información sensible en s3queue #60233 (Kseniia Sumarokova).
- Se revierte “Replace
ORDER BY ALLbyORDER BY *” #60248 (Robert Schulze). - Azure Blob Storage : corrige problemas con el endpoint y el prefijo #60251 (SmitaRKulkarni).
- Corrige los códigos de excepción HTTP. #60252 (Austin Kothig).
- corrige un error en la caché LRUResource (caché de Hive) #60262 (shanfengp).
- s3queue: corrección de un error (también corrige la prueba inestable test_storage_s3_queue/test.py::test_shards_distributed) #60282 (Kseniia Sumarokova).
- Corrige el uso de valores sin inicializar y los resultados no válidos en las funciones hash con IPv6 #60359 (Kruglov Pavel).
- Forzar el reanálisis si cambiaron las réplicas paralelas #60362 (Raúl Marín).
- Se corrige el uso del tipo de metadatos plain con la nueva opción de configuración de disks #60396 (Kseniia Sumarokova).
- No permitir establecer max_parallel_replicas a 0, ya que no tiene sentido #60430 (Kruglov Pavel).
- Se intenta corregir el error lógico ‘No se puede capturar la columna porque tiene un tipo incompatible’ en mapContainsKeyLike #60451 (Kruglov Pavel).
- Se corrige OptimizeDateOrDateTimeConverterWithPreimageVisitor con argumentos NULL #60453 (Raúl Marín).
- Intentar evitar el cálculo de subconsultas escalares en CREATE TABLE. #60464 (Nikolai Kochetov).
- Fusión #59674. #60470 (Alexey Milovidov).
- Verificar correctamente las claves en s3Cluster #60477 (Antonio Andelic).
- Se corrige un interbloqueo en el análisis en paralelo cuando se omiten muchas filas debido a errores #60516 (Kruglov Pavel).
- Fix_max_query_size_for_kql_compound_operator: #60534 (Yong Wang).
- Corrección de Keeper: se añaden tiempos de espera durante la espera de los logs de commit #60544 (Antonio Andelic).
- Reducir el número de filas leídas desde
system.numbers#60546 (JackyWoo). - No generar sugerencias numéricas para tipos Date #60577 (Raúl Marín).
- Se corrigió la lectura de MergeTree con funciones no deterministas en el filtro #60586 (Kruglov Pavel).
- Se corrigió un error lógico relacionado con un tipo de valor no válido en la configuración de compatibilidad #60596 (Kruglov Pavel).
- Se corrigieron los estados incoherentes de las funciones de agregación en clústeres mixtos x86-64 / ARM #60610 (Harry Lee).
- corrección(prql): Manejador robusto de pánico #60615 (Maximilian Roos).
- Corrige
intDivpara argumentos de tipo Decimal y de fecha #60672 (Yarik Briukhovetskyi). - Corrección: ampliar la CTE en la consulta ALTER MODIFY #60682 (Yakov Olkhovskiy).
- Corrección de system.parts para el motor de base de datos no Atomic/Ordinary (es decir, Memory) #60689 (Azat Khuzhin).
- Se corrige “Definición de almacenamiento no válida en el archivo de metadatos” en vistas parametrizadas #60708 (Azat Khuzhin).
- Corrige el desbordamiento de búfer en CompressionCodecMultiple #60731 (Alexey Milovidov).
- Eliminar incoherencias en SQL/JSON #60738 (Alexey Milovidov).
- Se elimina una comprobación incorrecta de sanitización en la función de agregado quantileGK #60740 (李扬).
- Se corrige un error de insert-select + insert_deduplication_token al establecer streams en 1 #60745 (Jordi Villar).
- Impide establecer encabezados de metadatos personalizados en operaciones de subida multiparte no compatibles #60748 (Francisco J. Jurado Moreno).
- Se corrige toStartOfInterval #60763 (Andrey Zvonov).
- Se corrige un bloqueo en arrayEnumerateRanked #60764 (Raúl Marín).
- Se corrige un cierre inesperado al usar input() en INSERT SELECT JOIN #60765 (Kruglov Pavel).
- Se corrige un bloqueo con un valor distinto de allow_experimental_analyzer en las subconsultas #60770 (Dmitry Novik).
- Eliminar la recursividad al leer desde S3 #60849 (Antonio Andelic).
- Corrige un posible bloqueo en caso de error en HashedDictionaryParallelLoader #60926 (vdimir).
- Se corrige el RESTORE asíncrono con Replicated database #60934 (Antonio Andelic).
- Se corrige un interbloqueo en async inserts en tablas
Loga través del protocolo nativo #61055 (Anton Popov). - Corregir la evaluación diferida del argumento predeterminado en dictGetOrDefault para RangeHashedDictionary #61196 (Kruglov Pavel).
- Se corrigen varios errores en groupArraySorted #61203 (Raúl Marín).
- Corrige la reconfiguración de Keeper para el binario autónomo #61233 (Antonio Andelic).
- Corrige el uso de session_token en el motor S3 #61234 (Kruglov Pavel).
- Se corrige un posible resultado incorrecto de la función de agregación
uniqExact#61257 (Anton Popov). - Soluciona errores en show database #61269 (Raúl Marín).
- Corregido un error lógico en el almacenamiento de RabbitMQ con columnas MATERIALIZED #61320 (vdimir).
- Se corrige CREATE OR REPLACE DICTIONARY #61356 (Vitaly Baranov).
- Se corrigió la consulta ATTACH con ON CLUSTER externo #61365 (Nikolay Degterinsky).
- corrige un problema en actions dag split #61458 (Raúl Marín).
- Se corrige la finalización de un RESTORE fallido #61466 (Vitaly Baranov).
- Desactiva correctamente async_insert_use_adaptive_busy_timeout con la configuración de compatibilidad #61468 (Raúl Marín).
- Permitir el encolado en el pool de restauración #61475 (Nikita Taranov).
- Se corrige un error al leer system.parts con UUID (incidencia 61220). #61479 (Dan Wu).
- Corrige un fallo en window view #61526 (Alexey Milovidov).
- Corrige
repeatcon enteros de tipo no nativo #61527 (Antonio Andelic). - Se corrige el argumento
-sdel cliente #61530 (Mikhail f. Shiryaev). - Corrige un fallo en arrayPartialReverseSort #61539 (Raúl Marín).
- Corregida la búsqueda de cadenas con posición constante #61547 (Antonio Andelic).
- Se corrige un error en
addDaysal usardatetime64#61561 (Shuai li). - Se corrige
system.part_logparaasync insertcon deduplicación #61620 (Antonio Andelic). - Se corrigió el conjunto no preparado en system.parts. #61666 (Nikolai Kochetov).