Lanzamiento de ClickHouse 22.12, 2022-12-15. Presentación, Vídeo
Notas de actualización
- Se corrigió una incompatibilidad con versiones anteriores en la (de)serialización de los estados de las funciones de agregación
min,max,any*,argMinyargMaxcon argumentoString. La incompatibilidad afecta a las ramas 22.9, 22.10 y 22.11 (corregido a partir de 22.9.6, 22.10.4 y 22.11.2, respectivamente). Algunas versiones menores de las ramas 22.3, 22.7 y 22.8 también están afectadas: 22.3.13…22.3.14 (corregido a partir de 22.3.15), 22.8.6…22.8.9 (corregido a partir de 22.8.10), 22.7.6 y posteriores (no se corregirá en 22.7; recomendamos actualizar de 22.7.* a 22.8.10 o una versión posterior). Esta nota de versión no afecta a los usuarios que nunca hayan usado las versiones afectadas. Las versiones incompatibles añaden un'\0'adicional a las cadenas al leer estados de las funciones de agregación mencionadas anteriormente. Por ejemplo, si una versión anterior guardó el estado deanyState('foobar')enstate_column, la versión incompatible imprimirá'foobar\0'enanyMerge(state_column). Además, las versiones incompatibles escriben los estados de las funciones de agregación sin el'\0'final. Las versiones más recientes (que incluyen la corrección) pueden leer correctamente los datos escritos por todas las versiones, incluidas las incompatibles, salvo en un caso límite. Si una versión incompatible guardó un estado con una cadena que realmente termina con el carácter nulo, una versión más reciente recortará el'\0'final al leer el estado de la función de agregación afectada. Por ejemplo, si una versión incompatible guardó el estado deanyState('abrac\0dabra\0')enstate_column, las versiones más recientes imprimirán'abrac\0dabra'enanyMerge(state_column). El problema también afecta a las consultas distribuidas cuando una versión incompatible funciona en un clúster junto con versiones anteriores o posteriores. #43038 (Alexander Tokmakov, Raúl Marín). Nota: todas las compilaciones oficiales de ClickHouse ya incluyen los parches. Esto no es necesariamente así en compilaciones no oficiales de terceros, que deben evitarse.
Nueva funcionalidad
- Añade el formato de entrada/salida
BSONEachRow. En este formato, ClickHouse formatea y analiza cada fila como un documento BSON independiente, y cada columna se formatea y analiza como un único campo BSON con el nombre de la columna como clave. #42033 (mark-polokhov). - Se añade el algoritmo JOIN
grace_hash; se puede habilitar conSET join_algorithm = 'grace_hash'. #38191 (BigRedEye, Vladimir C). - Permite configurar reglas de complejidad de contraseñas y comprobaciones para la creación y modificación de usuarios. #43719 (Nikolay Degterinsky).
- Enmascara la información confidencial en los logs; enmascara los fragmentos sensibles en la salida de las consultas
SHOW CREATE TABLEySELECT FROM system.tables. También resuelve #41418. #43227 (Vitaly Baranov). - Se añade la sintaxis
GROUP BY ALL: #37631. #42265 (刘陶峰). - Se añade la sintaxis
FROM table SELECT column. #41095 (Nikolay Degterinsky). - Se añadieron la función
concatWithSeparatoryconcat_wscomo alias para ofrecer compatibilidad con Spark SQL. También se añadió la funciónconcatWithSeparatorAssumeInjectivecomo variante para habilitar la optimización de GROUP BY, de forma similar aconcatAssumeInjective. #43749 (李扬). - Se añadieron las funciones
multiplyDecimalydivideDecimalpara realizar operaciones decimales con precisión fija. #42438 (Andrey Zvonov). - Se añadió la tabla
system.movescon la lista de las partes que se están moviendo en este momento. #42660 (Sergei Trifonov). - Se añade soporte para un endpoint de Prometheus integrado en ClickHouse Keeper. #43087 (Antonio Andelic).
- Se admiten literales numéricos con
_como separador, por ejemplo,1_000_000. #43925 (jh0x). - Se añadió la posibilidad de usar un array como segundo parámetro de la función
cutURLParameter. Permitirá eliminar varios parámetros. Cierra #6827. #43788 (Roman Vasin). - Agregar a la tabla
system.data_skipping_indicesuna columna con la expresión del índice. #43308 (Guillaume Tassery). - Se añade la columna
engine_fulla la tabla del sistemadatabasespara que puedas acceder a la definición completa del motor de una base de datos a través de las tablas del sistema. #43468 (凌涛). - Se añadió una nueva función hash, xxh3. Además, se ha mejorado el rendimiento de
xxHash32yxxHash64en ARM gracias a una actualización de la biblioteca. #43411 (Nikita Taranov). - Se añadió compatibilidad para definir restricciones en la configuración de MergeTree. Por ejemplo, puede impedir que los usuarios sobrescriban
storage_policy. #43903 (Sergei Trifonov). - Se añade un nuevo ajuste
input_format_json_read_objects_as_stringsque permite analizar objetos JSON anidados como Strings en todos los formatos de entrada JSON. Este ajuste está deshabilitado de forma predeterminada. #44052 (Kruglov Pavel).
Funcionalidad experimental
- Se añade compatibilidad con la deduplicación para las inserciones asíncronas. Antes de este cambio, las inserciones asíncronas no admitían deduplicación, porque varias inserciones pequeñas coexistían en un mismo lote insertado. Cierra #38075. #43304 (Han Fei).
- Se añade compatibilidad con la distancia coseno para el índice experimental Annoy (búsqueda de similitud vectorial). #42778 (Filatenkov Artur).
- Se añaden las consultas
CREATE / ALTER / DROP NAMED COLLECTION. #43252 (Kseniia Sumarokova). Esta funcionalidad está en desarrollo y, a partir de la versión 22.12, las consultas aún no son efectivas. Esta entrada del changelog se añade solo para evitar confusiones. Se restringe el acceso predeterminado a las colecciones con nombre al usuario definido en la configuración. Para poder verlas, es necesario establecershow_named_collections = 1. #43325 (Kseniia Sumarokova). Se introduce la tablasystem.named_collections#43147 (Kseniia Sumarokova).
Mejora de rendimiento
- Se añaden los ajustes
max_streams_for_merge_tree_readingyallow_asynchronous_read_from_io_pool_for_merge_tree. El ajustemax_streams_for_merge_tree_readinglimita el número de flujos de lectura para las tablas MergeTree. El ajusteallow_asynchronous_read_from_io_pool_for_merge_treehabilita un pool de E/S en segundo plano para leer desde tablasMergeTree. Esto puede aumentar el rendimiento de las consultas limitadas por E/S si se usa junto conmax_streams_to_max_threads_ratioomax_streams_for_merge_tree_reading. #43260 (Nikolai Kochetov). Esto mejora el rendimiento hasta 100 veces en casos de almacenamiento de alta latencia, con pocas CPU y un gran número de partes de datos. - Los ajustes
merge_tree_min_rows_for_concurrent_read_for_remote_filesystem/merge_tree_min_bytes_for_concurrent_read_for_remote_filesystemno respetaban la granularidad adaptativa. Las filas anchas no reducían el número de filas leídas (como sí ocurría conmerge_tree_min_rows_for_concurrent_read/merge_tree_min_bytes_for_concurrent_read), lo que podía provocar un alto uso de memoria al usar sistemas de archivos remotos. #43965 (Nikolai Kochetov). - Se optimizó el número de solicitudes de listado a ZooKeeper o ClickHouse Keeper al seleccionar una parte para fusionar. Antes, en algunos casos, esto podía generar miles de solicitudes. Corrige #43647. #43675 (Alexander Tokmakov).
- La optimización ahora se omite si
max_size_to_preallocate_for_aggregationtiene un valor demasiado pequeño. El valor predeterminado de este ajuste se incrementó a10^8. #43945 (Nikita Taranov). - Se acelera el apagado del servidor al evitar la limpieza de partes de datos antiguas. Esto es innecesario después de https://github.com/ClickHouse/ClickHouse/pull/41145. #43760 (Sema Checherinda).
- La fusión en el iniciador ahora usa el mismo enfoque limitado por memoria que la fusión de resultados de agregación locales si se establece
enable_memory_bound_merging_of_aggregation_results. #40879 (Nikita Taranov). - Mejora de Keeper: se intenta sincronizar los registros en disco en paralelo con la replicación. #43450 (Antonio Andelic).
- Mejora de Keeper: las solicitudes se agrupan en lotes con más frecuencia. Esta agrupación puede controlarse con el nuevo ajuste
max_requests_quick_batch_size. #43686 (Antonio Andelic).
Mejora
- Implementar dependencias referenciales y usarlas para crear tablas en el orden correcto durante la restauración a partir de una copia de seguridad. #43834 (Vitaly Baranov).
- Se sustituyen las UDF en la consulta
CREATEpara evitar fallos durante la carga al inicio. Además, ahora las UDF se pueden usar como expresionesDEFAULTpara las columnas. #43539 (Antonio Andelic). - Se cambió la forma en que las siguientes consultas eliminan partes: TRUNCATE TABLE, ALTER TABLE DROP PART, ALTER TABLE DROP PARTITION. Ahora, estas consultas crean partes vacías que cubren las partes antiguas. Esto hace que la consulta TRUNCATE funcione sin un bloqueo exclusivo posterior, lo que significa que las lecturas concurrentes no se bloquean. También se logró durabilidad en todas esas consultas. Si la solicitud se completa correctamente, no volverán a aparecer partes eliminadas más adelante. Tenga en cuenta que la atomicidad solo se garantiza dentro del ámbito de una transacción. #41145 (Sema Checherinda).
- La consulta
SET param_xya no requiere serializar manualmente como cadena el valor del parámetro. Por ejemplo, la consultaSET param_a = '[\'a\', \'b\']'ahora puede escribirse comoSET param_a = ['a', 'b']. #41874 (Nikolay Degterinsky). - Mostrar las filas leídas en el indicador de progreso al leer desde STDIN en el cliente. Cierra #43423. #43442 (Kseniia Sumarokova).
- Mostrar la barra de progreso al leer desde la función de tabla / motor de S3. #43454 (Kseniia Sumarokova).
- La barra de progreso mostrará tanto las filas leídas como las filas escritas. #43496 (Ilya Yatsishin).
filesystemAvailabley las funciones relacionadas admiten un argumento opcional con el nombre del disco, yfilesystemFreese cambia porfilesystemUnreserved. Cierra #35076. #42064 (flynn).- Integración con LDAP: se aumentó el valor predeterminado de search_limit a 256 y se añadió una opción de configuración del servidor LDAP para cambiarlo a cualquier valor. Cierra: #42276. #42461 (Vasily Nemkov).
- Permite también eliminar la información sensible (consulta
query_masking_rulesen el archivo de configuración) de los mensajes de excepción. Resuelve #41418. #42940 (filimonov). - Admite consultas como
SHOW FULL TABLES ...para mantener la compatibilidad con MySQL. #43910 (Filatenkov Artur). - Mejora de Keeper: se añadió el comando 4lw
rqld, que permite asignar manualmente un nodo como líder. #43026 (JackyWoo). - Aplica la configuración del tiempo de espera de conexión para async INSERT de Distributed desde la consulta. #43156 (Azat Khuzhin).
- La función
unhexahora admite argumentos de tipoFixedString. issue42369. #43207 (DR). - Se prioriza la eliminación de las partes completamente expiradas de acuerdo con las reglas TTL; consulte #42869. #43222 (zhongyuankai).
- Indicación de la carga de CPU más precisa y con mayor capacidad de respuesta en clickhouse-client. #43307 (Sergei Trifonov).
- Se admite la lectura de subcolumnas de tipos anidados desde el almacenamiento
S3y la table functions3en formatosParquet,ArrowyORC. #43329 (chen). - Agregar la columna
table_uuida la tablasystem.parts. #43404 (Azat Khuzhin). - Se añadió una opción en el cliente para mostrar el número de filas procesadas localmente en modo no interactivo (
--print-num-processed-rows). #43407 (jh0x). - Se implementó la optimización
aggregation-in-ordersobre un plan de consulta. Está habilitada de forma predeterminada (pero solo funciona junto conoptimize_aggregation_in_order, que está deshabilitada de forma predeterminada). Configurequery_plan_aggregation_in_order = 0para usar la versión anterior basada en AST. #43592 (Nikolai Kochetov). - Permite recopilar profile events con
trace_type = 'ProfileEvent'ensystem.trace_logcon cada incremento, junto con la pila actual, el nombre del profile event y el valor del incremento. Se puede habilitar con la opcióntrace_profile_eventsy usarse para investigar el rendimiento de las consultas. #43639 (Anton Popov). - Se añade una nueva opción de configuración
input_format_max_binary_string_sizepara limitar el tamaño de las cadenas en formato RowBinary. #43842 (Kruglov Pavel). - Cuando ClickHouse realiza una solicitud a un servidor HTTP remoto y este devuelve un error, el código HTTP numérico no se mostraba correctamente en el mensaje de excepción. Cierra #43919. #43920 (Alexey Milovidov).
- Informa correctamente los errores en las consultas incluso cuando se está llevando a cabo la optimización de múltiples JOINs. #43583 (Salvatore).
Mejora de compilación/pruebas/empaquetado
- La integración con systemd ahora notifica correctamente a systemd que el servicio se ha iniciado realmente y está listo para atender solicitudes. #43400 (Коренберг Марк).
- Se agregó la opción de compilar ClickHouse con OpenSSL mediante el OpenSSL FIPS Module. Este tipo de compilación no se ha probado para validar su seguridad y no es compatible. #43991 (Boris Kuschel).
- Actualización al nuevo códec de compresión
DeflateQpl, implementado en un PR anterior (detalles: https://github.com/ClickHouse/ClickHouse/pull/39494). Este parche mejora el códec en los siguientes aspectos: 1. Actualización de QPL v0.2.0 a QPL v0.3.0 Intel® Query Processing Library (QPL) 2. Mejora del archivo CMake para corregir problemas de compilación de QPL con QPL v0.3.0. 3. Enlace de la biblioteca QPL con libaccel-config en tiempo de compilación, en lugar de cargarla en tiempo de ejecución en QPL v0.2.0 (dlopen). 4. Se corrigió un problema de impresión de logs en CompressionCodecDeflateQpl.cpp. #44024 (jasperzhu).
Corrección de errores (mal funcionamiento visible para el usuario en una versión oficial estable o preestable)
- Se corrigió un error que podía causar un interbloqueo al usar inserciones asíncronas. #43233 (Anton Popov).
- Se corrige parte de la lógica incorrecta en la optimización a nivel de AST
optimize_normalize_count_variants. #43873 (Duc Canh Le). - Corrige un caso en el que las mutaciones no progresaban cuando las sumas de comprobación no coincidían entre réplicas (p. ej., debido a un cambio en el formato de los datos durante una actualización). #36877 (nvartolomei).
- Se corrigió la optimización
skip_unavailable_shards, que no funcionaba con la función de tablahdfsCluster. #43236 (chen). - Se corrige el soporte de
s3para el comodín?. Cierra #42731. #43253 (chen). - Se corrigen las funciones
arrayFirstOrNullyarrayLastOrNullpara que devuelvannullcuando el array contiene elementosNullable. #43274 (Duc Canh Le). - Corrige el cálculo incorrecto de
UserTimeMicroseconds/SystemTimeMicrosecondsrelacionado con las tablas de Kafka. #42791 (Azat Khuzhin). - No se deben suprimir las excepciones en los discos
web. Se corrigen los reintentos del discoweb. #42800 (Azat Khuzhin). - Se corrigió una condición de carrera (lógica) entre las inserciones y la eliminación de vistas materializadas. Se producía una condición de carrera cuando se eliminaba una vista materializada al mismo tiempo que un INSERT: las MV aparecían como dependencia de la inserción al comienzo de la ejecución, pero la tabla ya se había eliminado cuando la cadena de inserción intentaba acceder a ella, lo que provocaba una excepción
UNKNOWN_TABLEoTABLE_IS_DROPPEDy detenía la inserción. Tras este cambio, evitamos estas excepciones y simplemente continuamos con la inserción si la dependencia ya no existe. #43161 (AlfVII). - Corrige el comportamiento indefinido en la función
quantiles, que podría dar lugar al uso de memoria no inicializada. Detectado por un fuzzer. Esto cierra #44066. #44067 (Alexey Milovidov). - Se añadió una comprobación adicional en
CompressionCodecDeltapara el tamaño sin comprimir igual a cero. #43255 (Nikita Taranov). - Aplanar arrays de Parquet para evitar un problema con datos inconsistentes en arrays. Estos archivos defectuosos pueden ser generados por Apache Iceberg. #43297 (Arthur Passos).
- Se corrige una conversión incorrecta de una columna
LowCardinalityal usar la ejecución de funciones con cortocircuito. #43311 (Kruglov Pavel). - Se corrigieron las consultas con
SAMPLE BYcon la optimizaciónprewhereen tablas que usan el motorMerge. #43315 (Antonio Andelic). - Verificar y comparar el contenido del archivo
format_versionenMergeTreeDatapara que las tablas puedan cargarse incluso aunque se haya cambiado la política de almacenamiento. #43328 (Antonio Andelic). - Corrige el posible error lógico (muy improbable) “No column to rollback” durante INSERT en tablas
Buffer. #43336 (Azat Khuzhin). - Corrige un error que permitía al analizador sintáctico procesar una cantidad ilimitada de paréntesis en una sola función si
allow_function_parametersestá activado. #43350 (Nikolay Degterinsky). MaterializeMySQL(funcionalidad experimental) admite la DDLdrop table t1, t2y es compatible con la mayoría de las sentencias DDLDROPde MySQL. #43366 (zzsmdfj).session_log(función experimental): Se corrigió la imposibilidad de iniciar sesión (debida a un fallo al crear la entrada de session_log) en un caso muy poco frecuente de perfiles de configuración mal definidos. #42641 (Vasily Nemkov).- Corrige el posible error
Cannot create non-empty column with type Nothingen las funcionesif/multiIf. Cierra #43356. #43368 (Kruglov Pavel). - Se corrigió un error cuando un filtro de nivel de fila usaba el valor predeterminado de una columna. #43387 (Alexander Gololobov).
- La consulta con
DISTINCT+LIMIT BY+LIMITpuede devolver menos filas de lo esperado. Corrige #43377. #43410 (Igor Nikonov). - Se corrige
sumMapparaNullable(Decimal(...)). #43414 (Azat Khuzhin). - Se corrige
date_diffpara horas/minutos en macOS. Cierra #42742. #43466 (zzsmdfj). - Se corrigió la contabilización incorrecta de memoria causada por merges/mutations. #43516 (Azat Khuzhin).
- Se corrigió el análisis de la clave primaria con condiciones que incluyen
toString(enum). #43596 (Nikita Taranov). Este error fue detectado por @tisonkun. - Garantiza la consistencia cuando
clickhouse-copieractualiza el estado yattach_is_doneen Keeper después de completar el attach de la partición. #43602 (lzydmxy). - Durante la recuperación de una réplica perdida de una base de datos
Replicated(funcionalidad experimental), podía darse una situación en la que fuera necesario intercambiar atómicamente los nombres de dos tablas (usar EXCHANGE). Antes intentábamos usar dos consultas RENAME, lo que, obviamente, fallaba y, además, hacía fracasar todo el proceso de recuperación de la réplica de la base de datos. #43628 (Nikita Mikhaylov). - Se corrige el caso en que la función
s3Clusterarroja el errorNOT_FOUND_COLUMN_IN_BLOCK. Cierra #43534. #43629 (chen). - Corrige un posible error lógico
Array sizes mismatcheddurante el análisis de un objeto JSON con arrays que tienen los mismos nombres de clave, pero distintos niveles de anidación. Cierra #43569. #43693 (Kruglov Pavel). - Se corrigió una posible excepción en el caso de un
GROUP BYdistribuido con una columnaALIASentre las claves de agregación. #43709 (Nikita Taranov). - Corrige un error que puede provocar proyecciones rotas si la replicación zero-copy (funcionalidad experimental) está habilitada y en uso. #43764 (alesapin).
- Se corrige el uso de carga multiparte para objetos muy grandes en AWS S3. #43824 (ianton-ru).
- Se corrigió
ALTER ... RESET SETTINGconON CLUSTER. Podía haberse aplicado solo a una réplica. Corrige #43843. #43848 (Elena Torró). - Corrige un error lógico en JOIN con el motor de tabla
Joinen el lado derecho cuando se usaUSING. #43963 (Vladimir C). Corrige un error en el orden incorrecto de las claves en el motor de tablaJoin. #44012 (Vladimir C). - Corrección de Keeper: lanzar una excepción si el puerto de interservidor para Raft ya está en uso. #43984 (Antonio Andelic).
- Corrige el argumento posicional de ORDER BY (ejemplo:
ORDER BY 1, 2) cuando se podan columnas innecesarias en las subconsultas. Cierra #43964. #43987 (Kseniia Sumarokova). - Se corrigió la excepción cuando una subconsulta contiene HAVING pero no incluye ninguna agregación real. #44051 (Nikita Taranov).
- Se corrige una condición de carrera en la carga multiparte en S3. Esta condición de carrera podía provocar el error
Part number must be an integer between 1 and 10000, inclusive. (S3_ERROR)al restaurar a partir de una copia de seguridad. #44065 (Vitaly Baranov).
Lanzamiento de ClickHouse 22.11, 2022-11-17. Presentación, Video
Cambio incompatible con versiones anteriores
- La familia de funciones
JSONExtractahora intentará forzar la conversión al tipo solicitado. #41502 (Márcio Martins).
Nueva funcionalidad
- Añade compatibilidad con reintentos durante los INSERT en ReplicatedMergeTree cuando se pierde una sesión con ClickHouse Keeper. Además de mejorar la tolerancia a fallos, su objetivo es ofrecer una mejor experiencia de usuario y evitar que se le devuelva un error durante la inserción si se reinicia Keeper (por ejemplo, debido a una actualización). #42607 (Igor Nikonov).
- Se añaden los motores de tabla
HudiyDeltaLakeen modo de solo lectura, únicamente para tablas en S3. #41054 (Daniil Rubin, Kseniia Sumarokova). - Se agregan las funciones de tabla
hudiydeltaLake. #43080 (flynn). - Compatibilidad con intervalos de tiempo compuestos. 1. Las operaciones de suma, resta y negación ahora están disponibles para los intervalos. En los casos en que los tipos de los intervalos sean diferentes, se transformarán en una Tuple de esos tipos. 2. Se puede sumar o restar una tupla de intervalos a un campo Date/DateTime. 3. Se añadió el análisis de intervalos con distintos tipos, por ejemplo:
INTERVAL '1 HOUR 1 MINUTE 1 SECOND'. #42195 (Nikolay Degterinsky). - Se añadió compatibilidad con el patrón glob
**para recorrer directorios de forma recursiva en el sistema de archivos y en S3. Resuelve #36316. #42376 (SmitaRKulkarni). - Introducir el tipo de disco
s3_plainpara operaciones de escritura única y lectura múltiple. ImplementarATTACHde la tablaMergeTreepara el discos3_plain. #42628 (Azat Khuzhin). - Se añadieron las políticas de nivel de fila aplicadas a
system.query_log. #39819 (Vladimir Chebotaryov). - Se añade el comando de cuatro letras
csnppara crear instantáneas manualmente en ClickHouse Keeper. Además, se añadiólgifpara obtener información de Raft sobre un nodo específico (p. ej., el índice de la última instantánea creada, el último índice de log confirmado). #41766 (JackyWoo). - Se agregó la función
ascii, como en Apache Spark: https://spark.apache.org/docs/latest/api/sql/#ascii. #42670 (李扬). - Se añade la función
pmod, que devuelve un resultado no negativo basado en el operador módulo. #42755 (李扬). - Añadir la función
formatReadableDecimalSize. #42774 (Alejandro). - Se añadió la función
randCanonical, similar a la funciónrandde Apache Spark o Impala. La función genera resultados seudoaleatorios con valores distribuidos uniformemente, independientes e idénticamente distribuidos, en [0, 1). #43124 (李扬). - Se agregó la función
displayName, cierra #36770. #37681 (hongbin). - Se añade la configuración
min_age_to_force_merge_on_partition_onlypara optimizar las partes antiguas solo a nivel de la partición completa. #42659 (Antonio Andelic). - Se añade una implementación genérica para las
named collectionscon estructura arbitraria, el tipo de acceso ysystem.named_collections. #43147 (Kseniia Sumarokova).
mejora de rendimiento
- La función
matchpuede usar el índice si la condición es sobre un prefijo de cadena. Esto cierra #37333. #42458 (clarkcaoliu). - Se aceleran los operadores AND y OR cuando se encadenan. #42214 (Zhiguo Zhou).
- Se admite el parsing en paralelo para el formato de entrada
LineAsString. Esto mejora el rendimiento solo ligeramente. Esto cierra #42502. #42780 (Kruglov Pavel). - Mejora del rendimiento de ClickHouse Keeper: se mejora el rendimiento de confirmación en los casos en que muchos nodos distintos tienen estados no confirmados. Esto debería ayudar en los casos en que un nodo seguidor no puede sincronizarse con la suficiente rapidez. #42926 (Antonio Andelic).
- Una condición como
NOT LIKE 'prefix%'puede usar el índice primario. #42209 (Duc Canh Le).
Funcionalidad experimental
- Se admite el tipo
Objectdentro de otros tipos, por ejemplo,Array(JSON). #36969 (Anton Popov). - Se ignora el evento SAVEPOINT del binlog de MySQL para MaterializedMySQL. #42931 (zzsmdfj). Se manejan (ignoran) las consultas SAVEPOINT en MaterializedMySQL. #43086 (Stig Bakken).
Mejora
- Las consultas triviales con un
LIMITpequeño determinarán correctamente el número estimado de filas que deben leerse, de modo que el umbral se compruebe correctamente. Cierra #7071. #42580 (Han Fei). - Se añade soporte para parámetros interactivos en consultas INSERT VALUES. #43077 (Nikolay Degterinsky).
- Se añadió un nuevo campo
allow_readonlyensystem.table_functionspara permitir el uso de funciones de tabla en modo readonly. Resuelve #42414 Implementación: * Se añadió un nuevo campo allow_readonly a la tabla system.table_functions. * Se actualizó para usar el nuevo campo allow_readonly y permitir el uso de funciones de tabla en modo readonly. Pruebas: * Se añadió una prueba para el sistema de archivos tests/queries/0_stateless/02473_functions_in_readonly_mode.sh Documentación: * Se actualizó la documentación en inglés de Funciones de tabla. #42708 (SmitaRKulkarni). system.asynchronous_metricsahora incluye documentación integrada. Esta documentación también se exporta a Prometheus. Se corrigió un error en las métricas de los discoscache: se calculaban solo para un disco de caché arbitrario en lugar de para todos ellos. Esto cierra #7644. #43194 (Alexey Milovidov).- El algoritmo de throttling cambió a token bucket. #42665 (Sergei Trifonov).
- Se enmascaran las contraseñas y las claves secretas tanto en
system.query_logcomo en/var/log/clickhouse-server/*.log, así como en los mensajes de error. #42484 (Vitaly Baranov). - Eliminar las partes cubiertas de la parte recuperada (para evitar posibles aumentos del retraso de replicación). #39737 (Azat Khuzhin).
- Si
/dev/ttyestá disponible, el progreso en clickhouse-client y clickhouse-local se mostrará directamente en el terminal, sin escribirse en STDERR. Esto permite ver el progreso incluso si STDERR se redirige a un archivo, y evita que el archivo se llene de secuencias de escape del terminal. El progreso puede desactivarse con--progress false. Esto cierra #32238. #42003 (Alexey Milovidov). - Añade compatibilidad con la entrada
FixedStringen las funciones de codificación base64. #42285 (ltrk2). - Añade las columnas
bytes_on_diskypathasystem.detached_parts. Cierra #42264. #42303 (chen). - Se mejora el uso de la estructura de la tabla de inserción en las table functions; ahora, la configuración
use_structure_from_insertion_table_in_table_functionstiene un nuevo valor posible:2, lo que significa que ClickHouse intentará determinar automáticamente si puede usar la estructura de la tabla de inserción o no. Cierra #40028. #42320 (Kruglov Pavel). - Corrige la ausencia de indicación de progreso en INSERT FROM INFILE. Cierra #42548. #42634 (chen).
- Se refactorizó la función
tokenspara permitir establecer el número máximo de tokens devueltos para las funciones relacionadas (desactivado de forma predeterminada). #42673 (李扬). - Se permite usar argumentos
Date32para las funcionesformatDateTimeyFROM_UNIXTIME. #42737 (Roman Vasin). - Actualización de tzdata a 2022f. México dejará de aplicar el horario de verano excepto cerca de la frontera con EE. UU.: https://www.timeanddate.com/news/time/mexico-abolishes-dst-2022.html. Chihuahua pasará a UTC-6 durante todo el año el 2022-10-30. Fiji ya no aplica el horario de verano. Véase https://github.com/google/cctz/pull/235 y https://bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1995209. #42796 (Alexey Milovidov).
- Se añade la métrica de evento
FailedAsyncInsertQuerypara las inserciones asíncronas. #42814 (Krzysztof Góralski). - Se implementó la optimización
read-in-ordersobre el plan de consulta. Está habilitada de forma predeterminada. Establezcaquery_plan_read_in_order = 0para usar la versión anterior basada en AST. #42829 (Nikolai Kochetov). - Aumentar exponencialmente el tamaño de cada parte de la carga en las copias de seguridad a S3 para evitar errores relacionados con el límite máximo de 10 000 partes de la carga multiparte a S3. #42833 (Vitaly Baranov).
- Cuando la tarea de merge está continuamente ocupada y el espacio en disco es insuficiente, no se pueden seleccionar ni eliminar las partes que han expirado por completo, lo que deriva en falta de espacio en disco. Mi idea es que, cuando expira una parte completa, no sea necesario disponer de espacio adicional en disco para garantizar la ejecución normal del TTL. #42869 (zhongyuankai).
- Añade la función
ossy el motor de tablaOSS(esto resulta conveniente para los usuarios). oss es totalmente compatible con s3. #43155 (zzsmdfj). - Mejora la notificación de errores en la recopilación de información relacionada con el sistema operativo para la tabla
system.asynchronous_metrics. #43192 (Alexey Milovidov). - Modificar las tablas
INFORMATION_SCHEMApara que ClickHouse pueda conectarse a sí mismo mediante el protocolo de compatibilidad con MySQL. Añadir columnas en lugar de alias (relacionado con #9769). Esto mejorará la compatibilidad con diversos clientes MySQL. #43198 (Filatenkov Artur). - Se agregaron algunas funciones para mejorar la compatibilidad con PowerBI cuando se conecta mediante el protocolo MySQL #42612 (Filatenkov Artur).
- Mejora de la usabilidad del Dashboard en los cambios #42872 (Vladimir C).
Mejoras de compilación/pruebas/empaquetado
- Ejecutar SQLancer para cada pull request y cada commit en master. SQLancer es un fuzzer de código abierto centrado en la detección automática de errores lógicos. #42397 (Ilya Yatsishin).
- Actualizar a la última versión de zlib-ng. #42463 (Boris Kuschel).
- Añadir soporte para probar ClickHouse server con Jepsen. Por cierto, ya tenemos soporte para probar ClickHouse Keeper con Jepsen. Este pull request lo extiende a las tablas Replicated. #42619 (Antonio Andelic).
- Usar https://github.com/matus-chochlik/ctcache para almacenar en caché los resultados de clang-tidy. #42913 (Mikhail f. Shiryaev).
- Antes de la corrección, RPM conservaba la configuración definida por el usuario en
$file.rpmsave. Este pull request lo corrige y no reemplazará los archivos del usuario por los de los paquetes. #42936 (Mikhail f. Shiryaev). - Eliminar algunas bibliotecas de la imagen Docker de Ubuntu. #42622 (Alexey Milovidov).
corrección de errores (mal funcionamiento visible para el usuario en una versión oficial estable o preestable)
- Se actualizó el normalizador para clonar el AST del alias. Resuelve #42452 Implementación: * Se actualizó QueryNormalizer para clonar el AST del alias cuando se sustituye. Anteriormente, asignar simplemente el mismo provocaba una excepción en LogicalExpressinsOptimizer, ya que se volvía a insertar el mismo nodo padre. * Este error no se observa con el nuevo analizador (allow_experimental_analyzer), por lo que no se realizaron cambios en él. Añadí una prueba para ello. #42827 (SmitaRKulkarni).
- Se corrige una condición de carrera en la copia de seguridad de tablas en bases de datos
Lazy. #43104 (Vitaly Baranov). - Corrección de
skip_unavailable_shards: no funcionaba con la función de tablas3Cluster. #43131 (chen). - Corrección de la inferencia de esquemas en
s3Clustery mejora enhdfsCluster. #41979 (Kruglov Pavel). - Se corrige el manejo de los reintentos al leer desde motores de tabla URL / función de tabla. (los errores reintentables podían volver a intentarse más veces de las necesarias; los errores no reintentables provocaban un fallo de aserción en el código). #42224 (Kseniia Sumarokova).
- Se ha reportado y corregido un fallo de segmentación relacionado con DNS & c-ares. #42234 (Arthur Passos).
- Corrige
LOGICAL_ERRORArguments of 'plus' have incorrect data types, que puede producirse durante el análisis de PK (verificación de monotonicidad). Corrige el análisis incorrecto de PK para funciones binarias monotónicas con el primer argumento constante. #42410 (Nikolai Kochetov). - Corrige el análisis incorrecto de claves cuando los tipos de clave no pueden estar dentro de Nullable. Esto soluciona #42456. #42469 (Amos Bird).
- Se corrige una errata en el nombre de una configuración que provocaba un uso incorrecto de la caché de inferencia de esquema al usar la configuración
input_format_csv_use_best_effort_in_schema_inference. Cierra #41735. #42536 (Kruglov Pavel). - Se corrige la creación de un Set con una cabecera incorrecta cuando el tipo de datos es LowCardinality. Cierra #42460. #42579 (flynn).
- Los valores
(U)Int128y(U)Int256se comprobaron correctamente enPREWHERE. #42605 (Antonio Andelic). - Se corrigió un error en el analizador de funciones que podría haber provocado un fallo de segmentación. #42724 (Nikolay Degterinsky).
- Se corrige el bloqueo de
truncate table. #42728 (flynn). - Se corrigió un posible fallo en los discos
webcuando el archivo no existe (o enOPTIMIZE TABLE FINAL, que con el tiempo también podía provocar el mismo error). #42767 (Azat Khuzhin). - Se corrige la asignación de
auth_typeensystem.session_logpara incluirSSL_CERTIFICATEentre los valores deenum. #42782 (Miel Donkers). - Se corrigió
stack-use-after-returnen la compilación con ASAN del analizador de la consulta CREATE USER. #42804 (Nikolay Degterinsky). - Se corrige
lowerUTF8/upperUTF8cuando había un símbolo entre los límites de 16 bytes (caso muy frecuente si tiene cadenas de más de 16 bytes de longitud). #42812 (Azat Khuzhin). - Se añadió una comprobación adicional de límites a la rutina de descompresión de LZ4 para corregir un comportamiento incorrecto en caso de entrada malformada. #42868 (Nikita Taranov).
- Se corrige un bloqueo poco frecuente que podía producirse al cancelar una consulta. #42874 (Azat Khuzhin).
- Se corrige el comportamiento incorrecto al usar múltiples disyunciones en hash join; se cierra #42832. #42876 (Vladimir C).
- Se generará un puntero nulo al ejecutar select if as en un ‘join de tres tablas’ , por ejemplo, con esta consulta SQL: #42883 (zzsmdfj).
- Se corrige un error detectado por el sanitizador de memoria en Cluster Discovery, se cierra #42763. #42905 (Vladimir C).
- Mejora de la inferencia de esquema para DateTime en caso de cadena vacía. #42911 (Kruglov Pavel).
- Corrige el poco frecuente error NOT_FOUND_COLUMN_IN_BLOCK cuando se puede usar una proyección, pero no hay ninguna disponible. Esto corrige #42771 . El error se introdujo en https://github.com/ClickHouse/ClickHouse/pull/25563. #42938 (Amos Bird).
- Corrige ATTACH TABLE en el motor de base de datos
PostgreSQLcuando la tabla contiene el tipo de datos DATETIME. Cierra #42817. #42960 (Kseniia Sumarokova). - Se corrige el análisis sintáctico de las expresiones lambda. Cierra #41848. #42979 (Nikolay Degterinsky).
- Corregir el análisis incorrecto de claves cuando hay claves Nullable en medio de un hiperrectángulo. Esto corrige #43111 . #43133 (Amos Bird).
- Corrige varias lecturas fuera de los límites del búfer en la deserialización de estados de funciones de agregación especialmente diseñados. #43159 (Raúl Marín).
- Se corrige la función
ifen el caso de argumentos NULL y const Nullable. Cierra #43069. #43178 (Kruglov Pavel). - Se corrige el desbordamiento en la aritmética decimal al analizar DateTime con el algoritmo ‘best effort’. Cierra #43061. #43180 (Kruglov Pavel).
- El campo
indentgenerado por la herramientagit-importse calculó de forma incorrecta. Consulte https://clickhouse.com/docs/getting-started/example-datasets/github/. #43191 (Alexey Milovidov). - Se corrigió el comportamiento inesperado de los tipos
Intervalcon las subconsultas y las conversiones de tipo. #43193 (jh0x).
Lanzamiento de ClickHouse 22.10, 2022-10-25. Presentación, Vídeo
Cambio incompatible con versiones anteriores
- Se renombran los comandos de caché:
show caches->show filesystem caches,describe cache->describe filesystem cache. #41508 (Kseniia Sumarokova). - Se elimina la compatibilidad con la sección
WITH TIMEOUTdeLIVE VIEW. Esto cierra #40557. #42173 (Alexey Milovidov). - Se elimina la compatibilidad con la macro
{database}del prompt del cliente. Se mostraba de forma incorrecta si la base de datos no estaba especificada y no se actualizaba con las sentenciasUSE. Esto cierra #25891. #42508 (Alexey Milovidov).
Nueva funcionalidad
- Se añade la configuración componible de protocolos. Ahora se pueden configurar distintos protocolos con diferentes direcciones de escucha. Los envoltorios de protocolo, como PROXYv1, se pueden configurar para cualquier otro protocolo (TCP, TCP seguro, MySQL, Postgres). #41198 (Yakov Olkhovskiy).
- Añade
S3como un nuevo tipo de destino de las copias de seguridad. Admite BACKUP en S3 con la estructura path/data tal cual. #42333 (Vitaly Baranov), #42232 (Azat Khuzhin). - Se añadieron funciones (
randUniform,randNormal,randLogNormal,randExponential,randChiSquared,randStudentT,randFisherF,randBernoulli,randBinomial,randNegativeBinomial,randPoisson) para generar valores aleatorios de acuerdo con las distribuciones especificadas. Esto resuelve #21834. #42411 (Nikita Mikhaylov). - Una mejora para ClickHouse Keeper: se añade compatibilidad para subir snapshots a S3. La información de S3 puede definirse dentro de
keeper_server.s3_snapshot. #41342 (Antonio Andelic). - Se añadió una función de agregación
analysisOfVariance(anova) para realizar una prueba estadística sobre varios grupos de observaciones con distribución normal a fin de determinar si todos los grupos tienen la misma media o no. PR original #37872. #42131 (Nikita Mikhaylov). - Se permite limitar la cantidad de datos temporales almacenados en disco mediante los ajustes
max_temporary_data_on_disk_size_for_user/max_temporary_data_on_disk_size_for_query. #40893 (Vladimir C). - Añade la configuración
format_json_object_each_row_column_for_object_namepara escribir/parsear el nombre del objeto como valor de la columna en el formato JSONObjectEachRow. #41703 (Kruglov Pavel). - Se agrega la función hash BLAKE3 a SQL. #33435 (BoloniniD).
- La función
javaHashse ha extendido a los enteros. #41131 (JackyWoo). - Añade compatibilidad de OpenTelemetry a DDL ON CLUSTER (requiere que
distributed_ddl_entry_format_versionesté configurado en 4). #41484 (Frank Chen). - Se añadió la tabla del sistema
asynchronous_insert_log. Contiene información sobre las inserciones asíncronas (incluidos los resultados de las consultas en modo fire-and-forget (conwait_for_async_insert=0)), lo que mejora la introspección. #42040 (Anton Popov). - Se añadió compatibilidad con los métodos de compresión
lz4,bz2ysnappyen la cabeceraAccept-Encodingde HTTP, que es una extensión no estándar del protocolo HTTP. #42071 (Nikolay Degterinsky). - Añade funciones de codificación y descodificación de Morton (ZCurve). #41753 (Constantine Peresypkin).
- Se agregó compatibilidad para
SET setting_name = DEFAULT. #42187 (Filatenkov Artur).
Funcionalidad experimental
- Se agregó una nueva infraestructura para el análisis y la planificación de consultas con la configuración
allow_experimental_analyzer. #31796 (Maksim Kita). - Implementación inicial de Kusto Query Language. No la utilice. #37961 (Yong Wang).
Mejora de rendimiento
- Relajar el umbral de “Too many parts”. Esto cierra #6551. Ahora ClickHouse permitirá más partes en una partición si el tamaño medio de las partes es lo bastante grande (al menos 10 GiB). Esto permite tener hasta petabytes de datos en una sola partición de una sola tabla en un solo servidor, algo posible con bandejas de discos o almacenamiento de objetos. #42002 (Alexey Milovidov).
- Implementar un analizador de precedencia de operadores para reducir el tamaño de pila necesario. #34892 (Nikolay Degterinsky).
- La optimización DISTINCT in order aprovecha las propiedades de ordenación de los streams de datos. Esta mejora permitirá la lectura en orden para DISTINCT cuando corresponda (antes era necesario proporcionar ORDER BY para las columnas de DISTINCT). #41014 (Igor Nikonov).
- ColumnVector: optimizar el índice UInt8 con AVX512VBMI. #41247 (Guo Wangyang).
- Optimizar la contención de bloqueos para
ThreadGroupStatus::mutex. Los experimentos de rendimiento de SSB (Star Schema Benchmark) en el dispositivo ICX (CPU Intel Xeon Platinum 8380, 80 núcleos, 160 hilos) muestran que este cambio podría aportar una mejora de 2.95x en la media geométrica del QPS de todos los subcasos. #41675 (Zhiguo Zhou). - Añadir capacidades
ldapra las compilaciones de AArch64. Esto es compatible con instancias de Graviton 2+, Azure y GCP. Solo apareció en clang-15 hace relativamente poco. #41778 (Daniel Kutenin). - Mejorar el rendimiento al comparar cadenas cuando uno de los argumentos es una cadena constante vacía. #41870 (Jiebin Sun).
- Optimizar
insertFromde ColumnAggregateFunction para compartir Aggregate State en algunos casos. #41960 (flynn). - Acelerar la escritura en discos
azure_blob_storage(respetarmax_single_part_upload_sizeen lugar de escribir un bloque por cada tamaño de búfer). La ineficiencia se mencionó en #41754. #42041 (Kseniia Sumarokova). - Hacer que los ID de hilo de la lista de procesos y de query_log sean únicos para evitar desperdicio. #42180 (Alexey Milovidov).
- Permitir omitir por completo la caché (tanto la descarga a la caché como la lectura de datos en caché) si el rango de lectura solicitado supera el umbral definido por la configuración de caché
bypass_cache_threashold; requiere habilitarlo conenable_bypass_cache_with_threshold. #42418 (Han Shukai). Esto ayuda en discos locales lentos.
Mejora
- Se añade la configuración
allow_implicit_no_password: en combinación conallow_no_password, prohíbe crear un usuario sin contraseña a menos que se especifique explícitamenteIDENTIFIED WITH no_password. #41341 (Nikolay Degterinsky). - Keeper integrado siempre se iniciará en segundo plano, lo que permitirá iniciar ClickHouse sin necesidad de alcanzar quorum. #40991 (Antonio Andelic).
- Se hizo más ágil el restablecimiento de una nueva connection a ZooKeeper en caso de que expirara la anterior. Antes había una task que se ejecutaba cada minuto de forma predeterminada y, por lo tanto, una table podía quedar en estado readonly durante aproximadamente ese tiempo. #41092 (Nikita Mikhaylov).
- Ahora las proyecciones pueden usarse con la replicación zero-copy (la replicación zero-copy es una funcionalidad no apta para producción). #41147 (alesapin).
- Se admite la expresión
(EXPLAIN SELECT ...)en una subconsulta. Consultas comoSELECT * FROM (EXPLAIN PIPELINE SELECT col FROM TABLE ORDER BY col)ahora son válidas. #40630 (Vladimir C). - Permite cambiar
async_insert_max_data_sizeoasync_insert_busy_timeout_msen el ámbito de la consulta. Por ejemplo, si un usuario inserta datos con poca frecuencia y no tiene acceso a la configuración del servidor para ajustar las opciones predeterminadas. #40668 (Nikita Mikhaylov). - Mejoras en la lectura desde sistemas de archivos remotos; ahora se puede configurar el tamaño del threadpool para lecturas y escrituras. Cierra #41070. #41011 (Kseniia Sumarokova).
- Compatibilidad con todas las combinaciones de combinadores en el versionado de WindowTransform/arratReduce*/initializeAggregation/funciones de agregación. Anteriormente, combinadores como
ForEach/Resample/Mapno funcionaban en estos casos; usarlos provocaba una excepción comoState function ... inserts results into non-state column. #41107 (Kruglov Pavel). - Se añadió la función
tryDecrypt, que devuelve NULL si el descifrado falla (p. ej., al descifrar con una clave incorrecta) en lugar de lanzar una excepción. #41206 (Duc Canh Le). - Agrega la columna
unreserved_spacea la tablasystem.diskspara comprobar cuánto espacio queda sin reservar en cada disco. #41254 (filimonov). - Compatibilidad con encabezados de autorización de S3 en los argumentos de la función de tabla. #41261 (Kseniia Sumarokova).
- Se añadió compatibilidad con MultiRead en Keeper y en el cliente interno de ZooKeeper (se trata de una extensión del protocolo de ZooKeeper, disponible solo en ClickHouse Keeper). #41410 (Antonio Andelic).
- Se añade compatibilidad para comparar el tipo decimal con un literal de punto flotante en el operador IN. #41544 (liang.huang).
- Permitir valores de tamaño legibles (como
1TB) en la configuración de la caché. #41688 (Kseniia Sumarokova). - ClickHouse podía almacenar en caché entradas DNS desactualizadas durante cierto tiempo (15 segundos de forma predeterminada) hasta que la caché se actualizara de forma asíncrona. Durante esos períodos, ClickHouse podía, no obstante, intentar establecer una conexión y generar errores. Este comportamiento se ha corregido. #41707 (Nikita Mikhaylov).
- Se añadió una búsqueda interactiva en el historial con una utilidad tipo fzf (fzf/sk) para
clickhouse-client/clickhouse-local(ten en cuenta que también puedes usarFZF_DEFAULT_OPTS/SKIM_DEFAULT_OPTIONSpara configurar su comportamiento). #41730 (Azat Khuzhin). - Permitir que los clientes que se conecten a un servidor seguro con un certificado no válido continúen únicamente con la marca ‘—accept-certificate’. #41743 (Yakov Olkhovskiy).
- Se añade la función
tryBase58Decode, similar a la función existentetryBase64Decode. #41824 (Robert Schulze). - Mejora la información proporcionada al reemplazar una partición con una clave primaria distinta. Corrige #34798. #41838 (Salvatore).
- Se corrige el parsing paralelo: el segmentador ahora comprueba
max_block_size. Esto corrige la sobreasignación de memoria en caso de parsing paralelo y con unLIMITpequeño. #41852 (Vitaly Baranov). - No añadir la excepción “TABLE_IS_DROPPED” a
system.errorssi se produjo durante un SELECT en una tabla del sistema y se ignoró. #41908 (AlfVII). - Se mejora la opción
enable_extended_results_for_datetime_functionspara devolver resultados de tipo DateTime64 en las funcionestoStartOfDay,toStartOfHour,toStartOfFifteenMinutes,toStartOfTenMinutes,toStartOfFiveMinutes,toStartOfMinuteytimeSlot. #41910 (Roman Vasin). - Mejora la inferencia del tipo
DateTimepara formatos de texto. Ahora respeta la configuracióndate_time_input_formaty no intenta inferir fechas y horas a partir de números como marcas de tiempo. Cierra #41389 Cierra #42206. #41912 (Kruglov Pavel). - Se eliminó la advertencia confusa al insertar con
perform_ttl_move_on_insert= false. #41980 (Vitaly Baranov). - Permitir que el usuario escriba
countState(*), de forma similar acount(*). Esto cierra #9338. #41983 (Amos Bird). - Se corrige el desbordamiento de tamaño de
rankCorr. #42020 (Duc Canh Le). - Se añadió una opción para especificar cualquier cadena como nombre del entorno en la configuración de Sentry, para obtener informes más prácticos. #42037 (Nikita Mikhaylov).
- Se corrige el análisis de valores Date fuera de rango en CSV. #42044 (Andrey Zvonov).
parseDataTimeBestEffortahora admite el uso de una coma entre la fecha y la hora. Cierra #42038. #42049 (flynn).- Se ha mejorado el proceso de recuperación de réplicas obsoletas para
ReplicatedMergeTree. Si una réplica perdida tiene algunas partes que no están presentes en una réplica sana, pero estas partes deberían aparecer en el futuro según la cola de replicación de la réplica sana, la réplica perdida conservará esas partes en lugar de separarlas. #42134 (Alexander Tokmakov). - Se añade la posibilidad de usar argumentos
Date32para la función date_diff. Se corrige un problema en la función date_diff al usar argumentos DateTime64 con una fecha de inicio anterior a la época Unix y una fecha de finalización posterior a la época Unix. #42308 (Roman Vasin). - Al cargar partes grandes en Minio, ‘Complete Multipart Upload’ puede tardar bastante. Minio envía heartbeats cada 10 segundos (consulta https://github.com/minio/minio/pull/7198). Pero ClickHouse agota el tiempo de espera antes, porque el timeout predeterminado de envío/recepción está configurado en 5 segundos. #42321 (filimonov).
- Corrige un caso poco frecuente de conversión no válida de tipos de estado de agregación con tipos complejos como Decimal. Esto corrige #42408. #42417 (Amos Bird).
- Permitir el uso de argumentos
Date32en la funcióndateName. #42554 (Roman Vasin). - Ahora, los filtros con literales NULL se usarán durante el análisis de índices. #34063. #41842 (Amos Bird).
- Fusionar partes si cada parte del rango es más antigua que un umbral determinado. El umbral puede establecerse mediante
min_age_to_force_merge_seconds. Esto cierra #35836. #42423 (Antonio Andelic). Esto es una continuación de #39550i de @fastio, quien implementó la mayor parte de la lógica. - Se añadió una nueva infraestructura para el análisis y la planificación de consultas, controlada por la configuración
allow_experimental_analyzer. #31796 (Maksim Kita). - Mejora el tiempo de recuperación de las conexiones perdidas con Keeper. #42541 (Raúl Marín).
Mejora de compilación/pruebas/empaquetado
- Se añadió un fuzzer para definiciones de tablas #40096 (Anton Popov). Esto representa el mayor avance en las pruebas de ClickHouse en lo que va de año.
- Se ha lanzado la versión Beta del servicio ClickHouse Cloud: https://console.clickhouse.cloud/. Proporciona la forma más sencilla de usar ClickHouse (incluso algo más fácil que la instalación con un solo comando).
- Se añadió al AST Fuzzer compatibilidad con la generación de cláusulas WHERE, así como la posibilidad de añadir o eliminar ORDER BY y la cláusula WHERE. #38519 (Ilya Yatsishin).
- Los binarios Aarch64 ahora requieren al menos ARMv8.2, introducido en 2016. En particular, esto permite usar ARM LSE, es decir, operaciones atómicas nativas. Además, se ha añadido la opción de compilación de CMake “NO_ARMV81_OR_HIGHER” para permitir compilar binarios para hardware ARMv8.0 más antiguo, por ejemplo, Raspberry Pi 4. #41610 (Robert Schulze).
- Se permite compilar ClickHouse con Musl (pequeños cambios tras haberse añadido compatibilidad previamente, aunque estaba roto). #41987 (Alexey Milovidov).
- Se añadió la comprobación del archivo
$CLICKHOUSE_CRONFILEpara evitar ejecutar el comandosedy encontrarse con el error de archivo no encontrado durante la instalación. #42081 (Chun-Sheng, Li). - Se actualizó cctz a
2022epara admitir los nuevos cambios en las zonas horarias. Las transiciones de Palestina ahora son los sábados a las 02:00. Se simplifican tres zonas de Ucrania en una sola. Jordania y Siria pasan de +02/+03 con DST a +03 durante todo el año. (https://data.iana.org/time-zones/tzdb/NEWS). Con esto se cierra #42252. #42327 (Alexey Milovidov). #42273 (Dom Del Nano). - Se añadió compatibilidad con código Rust en ClickHouse, con la biblioteca de funciones hash BLAKE3 como ejemplo. #33435 (BoloniniD).
Corrección de errores (mal funcionamiento visible para el usuario en una versión oficial estable o prestable)
- Elija el método de agregación adecuado para
LowCardinalitycon tipos enteros grandes. #42342 (Duc Canh Le). - Varias correcciones en el disco
web. #41652 (Kseniia Sumarokova). - Corrige un problema que hace que
docker runfalle sihttps_portno está presente en la configuración. #41693 (Yakov Olkhovskiy). - Las mutaciones no se cancelaban correctamente al apagar el servidor o al ejecutar la consulta
SYSTEM STOP MERGES, y la cancelación podía tardar mucho; ya se ha corregido. #41699 (Alexander Tokmakov). - Se corrige el resultado incorrecto de las consultas con
ORDER BYoGROUP BYsobre columnas del prefijo de la clave de ordenación, envueltas en funciones monotónicas, con la optimización “read in order” habilitada (configuracionesoptimize_read_in_orderyoptimize_aggregation_in_order). #41701 (Anton Popov). - Se corrige un posible fallo en
SELECTdesde una tablaMergecon la opciónoptimize_monotonous_functions_in_order_byhabilitada. Corrige #41269. #41740 (Nikolai Kochetov). - Se corrigió el error “Part … intersects part …” que podía producirse en casos extremadamente raros si una réplica se reiniciaba justo después de separar alguna parte como dañada. #41741 (Alexander Tokmakov).
- No se permite crear ni modificar tablas de MergeTree con el nombre de columna
_row_exists, que está reservado para la eliminación ligera. Corregido en #41716. #41763 (Jianmei Zhang). - Se corrige un error por el que faltaban cabeceras CORS en algunas respuestas HTTP. #41792 (Frank Chen).
- Es posible que 22.9 no inicie una tabla
ReplicatedMergeTreesi esa tabla se creó con la versión 20.3 o anterior y nunca se modificó; ya está corregido. Corrige #41742. #41796 (Alexander Tokmakov). - Cuando el envío de un lote falla por algún motivo, no puede recuperarse automáticamente y, si no se procesa a tiempo, se irá acumulando; además, el mensaje de error impreso será cada vez más largo, lo que acabará bloqueando el hilo HTTP. #41813 (zhongyuankai).
- Corrige las partes compactas con la configuración de marcas comprimidas. Corrige #41783 y #41746. #41823 (alesapin).
- Las versiones antiguas de la base de datos Replicated no tienen un marcador especial en [Zoo]Keeper. Solo hay que comprobar si el nodo contiene ciertos datos poco habituales en lugar de una marca especial. #41875 (Nikita Mikhaylov).
- Corregida una posible excepción en la caché de fs. #41884 (Kseniia Sumarokova).
- Se corrige
use_environment_credentialspara la función de tabla S3. #41970 (Kseniia Sumarokova). - Se corrigió el error “El directorio ya existe y no está vacío” al separar una parte dañada que podía impedir que la tabla
ReplicatedMergeTreeiniciara la replicación. Corrige #40957. #41981 (Alexander Tokmakov). toDateTime64ahora devuelve el mismo resultado con argumentos enteros negativos y de coma flotante. #42025 (Robert Schulze).- Se corrige la escritura en
azure_blob_storage. Soluciona parcialmente #41754. #42034 (Kseniia Sumarokova). - Corrige el problema de decodificación de
bzip2en archivosbzip2específicos. #42046 (Nikolay Degterinsky). - Se corrigió la función SQL
toLastDayOfMonthcon la configuración “enable_extended_results_for_datetime_functions = 1” al inicio del rango extendido (enero de 1900). - Se corrigió la función SQL “toRelativeWeekNum()” con la configuración “enable_extended_results_for_datetime_functions = 1” al final del rango extendido (diciembre de 2299). - Se mejoró el rendimiento de las funciones SQL “toISOYear()”, “toFirstDayNumOfISOYearIndex()” y “toYearWeekOfNewyearMode()” al evitar operaciones aritméticas innecesarias con índices. #42084 (Roman Vasin). - El número máximo de fetches para cada tabla se estableció accidentalmente en 8, mientras que el tamaño del pool podía ser mayor. Ahora, el número máximo de fetches para la tabla es igual al tamaño del pool. #42090 (Nikita Mikhaylov).
- Una tabla podía desactivarse y un Diccionario podía pasar al estado detached antes de comprobar si podían eliminarse sin romper las dependencias; esto se ha corregido. Corrige #41982. #42106 (Alexander Tokmakov).
- Corrige una importante ineficiencia de
remote_filesystem_read_method=readcon la caché del sistema de archivos. Cierra #42125. #42129 (Kseniia Sumarokova). - Se corrige una posible excepción por timeout en consultas distribuidas con use_hedged_requests = 0. #42130 (Azat Khuzhin).
- Se corrigió un error menor en la función
runningDifferenceal usarla con el tipoDate32. Anteriormente se usabaDate, lo que podía provocar algunos errores lógicos comoBad cast from type DB::ColumnVector<int> to DB::ColumnVector<unsigned short>'. #42143 (Alfred Xu). - Se corrigió la reutilización de archivos > 4 GB de la copia de seguridad base. #42146 (Azat Khuzhin).
- DISTINCT in order genera LOGICAL_ERROR si la primera columna de la clave de ordenación contiene una función. #42186 (Igor Nikonov).
- Soluciona un error con las proyecciones y la configuración
aggregate_functions_null_for_empty. Este error es muy poco frecuente y solo aparece si habilitas la configuraciónaggregate_functions_null_for_emptyen la configuración del servidor. Esto cierra #41647. #42198 (Alexey Milovidov). - Se corrigió la lectura desde tablas
Buffercon lectura en orden descendente. #42236 (Duc Canh Le). - Se corrige un error que impedía que ClickHouse se iniciara cuando se establecía
background_pool_size settingen el perfil predeterminado, pero nobackground_merges_mutations_concurrency_ratio. #42315 (nvartolomei). ALTER UPDATEde una parte adjunta (con columnas distintas del esquema de la tabla) podía crear metadatoscolumns.txtno válidos en disco. La lectura de esa parte podía generar errores o devolver datos no válidos. Corrige #42161. #42319 (Nikolai Kochetov).- La configuración
additional_table_filtersno se aplicaba al almacenamientoDistributed. Soluciona #41692. #42322 (Nikolai Kochetov). - Se corrige una condición de carrera al finalizar/cancelar la consulta. Esto cierra #42346. #42362 (Alexey Milovidov).
- Se revierte #40217, que introdujo una regresión en las funciones de fecha/hora. #42367 (Alexey Milovidov).
- Corrige un assert en cast en join con una condición falsa, cierra #42380. #42407 (Vladimir C).
- Corrige un desbordamiento de búfer al procesar tipos de datos Decimal. Esto cierra #42451. #42465 (Alexey Milovidov).
AggregateFunctionQuantileahora funciona correctamente con columnas UInt128. Anteriormente, el estado del cuantíl interpretaba las columnasUInt128comoInt128, lo que podía dar lugar a resultados incorrectos. #42473 (Antonio Andelic).- Se corrige el fallo de aserción bad_cast al hacer INSERT en índices
Annoysobre columnas que no son Float32. Los índicesAnnoyson una funcionalidad experimental. #42485 (Robert Schulze). - El operador aritmético con Date o DateTime y enteros de 128 o 256 bits hacía referencia a memoria sin inicializar. #42453. #42573 (Alexey Milovidov).
- Se corrigió un error inesperado al cargar tablas cuando la clave de partición contiene nombres de funciones alias durante la actualización del servidor. #36379 (Amos Bird).
Lanzamiento de ClickHouse 22.9, 2022-09-22. Presentación, Vídeo
Cambio incompatible con versiones anteriores
- La actualización de la versión 20.3 o anteriores a la 22.9 o posteriores debe realizarse a través de una versión intermedia si hay alguna tabla
ReplicatedMergeTree; de lo contrario, el servidor con la nueva versión no se iniciará. #40641 (Alexander Tokmakov). - Se eliminan las funciones
accurate_Castyaccurate_CastOrNull(se diferencian deaccurateCastyaccurateCastOrNullpor el guion bajo en el nombre y no se ven afectadas por el valor de la configuracióncast_keep_nullable). Estas funciones no estaban documentadas, no se probaban, no se usaban y no eran necesarias. Parecían seguir activas debido a la generalización del código. #40682 (Alexey Milovidov). - Se añade una prueba para garantizar que toda nueva función de tabla quede documentada. Véase #40649. Se cambia el nombre de la función de tabla
MeiliSearchameilisearch. #40709 (Alexey Milovidov). - Se añade una prueba para garantizar que toda nueva función quede documentada. Véase #40649. Las funciones
lemmatize,synonymsystemno distinguían entre mayúsculas y minúsculas por error. Ahora sí las distinguen. #40711 (Alexey Milovidov). - Por motivos de seguridad y estabilidad, los modelos de catboost ya no se evalúan dentro del servidor de ClickHouse. En su lugar, la evaluación ahora se realiza en clickhouse-library-bridge, un proceso independiente que carga la biblioteca de catboost y se comunica con el proceso del servidor mediante HTTP. #40897 (Robert Schulze).
- Se hace más convencional la interpretación de las configuraciones YAML. #41044 (Vitaly Baranov).
Nueva funcionalidad
- Compatibilidad con
insert_quorum = 'auto'para usar el número de la mayoría. #39970 (Sachin). - Añade dashboards integrados a servidor de ClickHouse. Este es un proyecto de demostración sobre cómo lograr el 90 % de los resultados con el 1 % del esfuerzo usando funcionalidades de ClickHouse. #40461 (Alexey Milovidov).
- Se añadió el nuevo tipo de capacidad de escritura para restricciones de settings
changeable_in_readonly. #40631 (Sergei Trifonov). - Añade compatibilidad con
INTERSECT DISTINCTyEXCEPT DISTINCT. #40792 (Duc Canh Le). - Añade un nuevo formato de entrada/salida
JSONObjectEachRow- Compatibilidad con la importación para los formatosJSON/JSONCompact/JSONColumnsWithMetadata. Añade el nuevo ajusteinput_format_json_validate_types_from_metadata, que controla si se debe comprobar que los tipos de datos de los metadatos coincidan con los tipos de datos del encabezado. - Añade el nuevo ajusteinput_format_json_validate_utf8; cuando está habilitado, todos los formatosJSONvalidarán las secuencias UTF-8. Estará deshabilitado de forma predeterminada. Ten en cuenta que este ajuste no influye en los formatos de salidaJSON/JSONCompact/JSONColumnsWithMetadata, que siempre validan las secuencias UTF-8 (esta excepción se hizo por razones de compatibilidad). - Añade el nuevo ajusteinput_format_json_read_numbers_as_strings, que permite interpretar números en una columna String; este ajuste está deshabilitado de forma predeterminada. - Añade el nuevo ajusteoutput_format_json_quote_decimals, que permite generar decimales entre comillas dobles; está deshabilitado de forma predeterminada. - Permite interpretar decimales entre comillas dobles durante la importación de datos. #40910 (Kruglov Pavel). - Se admiten parámetros de consulta en la consulta DESCRIBE TABLE. #40952 (Nikita Taranov).
- Añade compatibilidad con Parquet Time32/64 convirtiéndolo en DateTime64. Parquet time32/64 representa el tiempo transcurrido desde la medianoche, mientras que DateTime32/64 representa una marca de tiempo Unix real. La conversión simplemente aplica un desplazamiento desde
0. #41333 (Arthur Passos). - Implementa operaciones de conjuntos en Apache Datasketches. #39919 (Fangyuan Deng). Nota: no tiene sentido usar Apache Datasketches; son inferiores a ClickHouse y solo tienen sentido para la integración con otros sistemas.
- Permite registrar errores en un archivo especificado mientras se leen formatos de texto (
CSV,TSV). #40516 (zjial).
Funcionalidad experimental
- Se añade un índice ANN (vecino más cercano aproximado) basado en
Annoy. #40818 (Filatenkov Artur). #37215 (VVMak). - Se añade un nuevo motor de almacenamiento,
KeeperMap, que usa ClickHouse Keeper o ZooKeeper como almacén clave-valor. #39976 (Antonio Andelic). Este motor de almacenamiento está pensado para almacenar una pequeña cantidad de metadatos. - Mejora para las partes de datos en memoria: se eliminan los archivos WAL completamente procesados. #40592 (Azat Khuzhin).
Mejora del rendimiento
- Implementación de la compresión de las marcas y de la clave primaria. Cierra #34437. #37693 (zhongyuankai).
- Permite cargar los marks por adelantado mediante un pool de hilos. Se controla con la configuración
load_marks_asynchronously(predeterminado: 0). #40821 (Kseniia Sumarokova). - El sistema de archivos virtual sobre S3 usará nombres aleatorios para los objetos, distribuidos entre varios prefijos de ruta, para mejorar el rendimiento en AWS. #40968 (Alexey Milovidov).
- Considerar el valor de
max_block_sizeal generar resultados de agregación de un solo nivel. Permite ejecutar los pasos posteriores del plan de consulta con más hilos. #39138 (Nikita Taranov). - La precarga por software se usa en la agregación para acelerar las operaciones con tablas hash. Está controlada por la configuración
enable_software_prefetch_in_aggregation, habilitada de forma predeterminada. #39304 (Nikita Taranov). - Mejor soporte para
optimize_read_in_ordercuando algunas de las columnas de la clave de ordenación son siempre constantes tras aplicar la cláusulaWHERE. Por ejemplo, una consulta comoSELECT ... FROM table WHERE a = 'x' ORDER BY a, b, dondetabletiene la definición de almacenamientoMergeTree ORDER BY (a, b). #38715 (Anton Popov). - Filtrar entre sí los flujos combinados para
full_sorting_joinantes de ordenarlos. #39418 (Vladimir C). - Descompresión LZ4 optimizada al omitir el procesamiento de literales vacíos. #40142 (Nikita Taranov).
- Se acelera el proceso de copia de seguridad usando
copynativo cuando es posible, en lugar de copiar a través de la memoria declickhouse-server. #40395 (alesapin). - Evitar obtener una instantánea de almacenamiento para cada bloque de INSERT (mejora ligeramente el rendimiento). #40638 (Azat Khuzhin).
- Se implementa el procesamiento por lotes para funciones de agregación con varios argumentos Nullable. #41058 (Raúl Marín).
- Acelera la lectura de UniquesHashSet (
uniqState, por ejemplo, desde disco). #41089 (Raúl Marín). - Se corrigió el alto consumo de memoria al ejecutar mutaciones de partes compactas en tablas con un gran número de columnas. #41122 (lthaooo).
- Se habilita la biblioteca vectorscan en ARM, lo que acelera la evaluación de expresiones regulares. #41033 (Robert Schulze).
- Se actualiza vectorscan a la versión 5.4.8, que incluye numerosas optimizaciones de rendimiento para acelerar la evaluación de expresiones regulares. #41270 (Robert Schulze).
- Se corrige el fallback incorrecto que hacía que se omitiera la caché local del sistema de archivos para VFS (como S3) y que ocurría con un nivel de concurrencia muy alto. #40420 (Kseniia Sumarokova).
- Si el filtro de ROW POLICY es siempre falso, devuelve de inmediato un resultado vacío sin leer ningún dato. Esto cierra #24012. #40740 (Amos Bird).
- El JOIN hash paralelo para tipos de datos Float podría no ser óptimo. Mejorarlo. #41183 (Alexey Milovidov).
Mejora
- Durante el inicio y la llamada a
ATTACH, las tablasReplicatedMergeTreeestarán en modo readonly hasta que se establezca la conexión con ZooKeeper y finalice la configuración. #40148 (Antonio Andelic). - Se añade la opción
enable_extended_results_for_datetime_functionspara que las funciones toStartOfYear, toStartOfISOYear, toStartOfQuarter, toStartOfMonth, toStartOfWeek, toMonday y toLastDayOfMonth devuelvan resultados de tipo Date32 cuando el argumento sea Date32 o DateTime64; de lo contrario, devuelven resultados de tipo Date. Por motivos de compatibilidad, el valor predeterminado es ‘0’. #41214 (Roman Vasin). - Por motivos de seguridad y estabilidad, los modelos de CatBoost ya no se evalúan dentro del servidor ClickHouse. En su lugar, ahora la evaluación se realiza en clickhouse-library-bridge, un proceso independiente que carga la biblioteca catboost y se comunica con el proceso del servidor a través de HTTP. La función
modelEvaluate()fue sustituida porcatboostEvaluate(). #40897 (Robert Schulze). #39629 (Robert Schulze). - Se agregan más métricas para los datos temporales en disco; se cierra #40206. #40239 (Vladimir C).
- Se añade la opción de configuración
warning_supress_regexp, se cierra #40330. #40548 (Vladimir C). - Añade un ajuste para desactivar el límite de kafka_num_consumers. Cierra #40331. #40670 (Kruglov Pavel).
- Soporte de
SETTINGSen la consultaDELETE .... #41533 (Kseniia Sumarokova). - Eventos de perfil de S3 detallados
DiskS3*, desglosados por llamada a la API de S3 para ObjectStorage. #41532 (Sergei Trifonov). - Dos nuevas métricas en
system.asynchronous_metrics:NumberOfDetachedPartsyNumberOfDetachedByUserParts. #40779 (Sema Checherinda). - Se permiten CONSTRAINTs en las tablas ODBC y JDBC. #34551 (Alexey Milovidov).
- No se imprime
SETTINGSmás de una vez durante el formateo de la consulta si no aparecía varias veces en la consulta original. #38900 (Raúl Marín). - Mejora la propagación del contexto de trazas (OpenTelemetry) entre hilos. #39010 (Frank Chen).
- ClickHouse Keeper: añadir listeners para
interserver_listen_hostsolo en Keeper si se especifica. #39973 (Antonio Andelic). - Mejora la recuperación del almacenamiento Replicated para el acceso de usuarios tras errores. #39977 (Vitaly Baranov).
- Se agregó compatibilidad con TTL en
EmbeddedRocksDB. #39986 (Lloyd-Pottiger). - Añadir la inferencia de esquema a
clickhouse-obfuscator, para que el argumento--structuredeje de ser obligatorio. #40120 (Nikolay Degterinsky). - Mejoras y correcciones en los diccionarios en formato
Arrow. #40173 (Kruglov Pavel). - Conversión más natural de
Date32,DateTime64yDatea tipos más reducidos: cuando queda fuera del rango normal, se toma el valor normal superior o inferior. #40217 (Andrey Zvonov). - Se corrige el caso en el que la tabla
Mergesobre unaViewno puede usar un índice. #40233 (Duc Canh Le). - Nombres de claves personalizados para los logs del servidor en JSON. #40251 (Mallik Hassan).
- Ahora es posible establecer un código de error personalizado para la excepción lanzada por la función
throwIf. #40319 (Robert Schulze). - Mejora de la caché de inferencia de esquemas; se respeta la configuración de formato que puede cambiar el esquema. #40414 (Kruglov Pavel).
- Permitir interpretar
DatecomoDateTimeyDateTime64. Esto implementa la mejora propuesta en #36949. #40474 (Alexey Milovidov). - Se permite la conversión desde
StringconDateTime64, como2022-08-22 01:02:03.456, aDateyDate32. Se permite la conversión desdeStringconDateTime, como2022-08-22 01:02:03, aDate32. Esto cierra #39598. #40475 (Alexey Milovidov). - Mejor compatibilidad con estructuras de datos anidadas en formato Parquet #40485 (Arthur Passos).
- Permite leer Array(Record) en una tabla anidada aplanada en Avro. #40534 (Kruglov Pavel).
- Se añade compatibilidad de solo lectura para
EmbeddedRocksDB. #40543 (Lloyd-Pottiger). - Se valida el parámetro del método de compresión del motor de tabla URL. #40600 (Frank Chen).
- Mejor detección del formato para la función de tabla/motor
urlcuando hay una cadena de consulta después del nombre de archivo. Cierra #40315. #40636 (Kruglov Pavel). - Se deshabilitó la proyección cuando se usa
grouping set. Generaba resultados incorrectos. Esto corrige #40635. #40726 (Amos Bird). - Se corrige el formato incorrecto del transformador de columnas
APPLY, que puede dañar los metadatos si se utiliza en la definición de una tabla. Esto corrige #37590. #40727 (Amos Bird). - Se añadió compatibilidad con el descriptor
%zpara formatear el desfase de la zona horaria enformatDateTime. #40736 (Cory Levy). - El modo interactivo de
clickhouse-clientahora interpreta.y/como “ejecutar el último comando”. #40750 (Robert Schulze). - Se corrige un problema al pasar los tiempos de espera de MySQL para el motor de base de datos MySQL y la función de tabla MySQL. Cierra #34168. #40751 (Kseniia Sumarokova).
- Crear un archivo de estado para el directorio de la caché del sistema de archivos, a fin de garantizar que los directorios de caché no se compartan entre distintos servidores o cachés. #40820 (Kseniia Sumarokova).
- Se añadió compatibilidad con
DELETEyUPDATEen el motor de almacenamientoEmbeddedRocksDB. #40853 (Antonio Andelic). - ClickHouse Keeper: se corrige el cierre durante un commit largo y se aumenta el tamaño de solicitud permitido. #40941 (Antonio Andelic).
- Se corrige una condición de carrera en WriteBufferFromS3 y se añaden anotaciones de TSA. #40950 (Kseniia Sumarokova).
- Los conjuntos de agrupación con group_by_use_nulls solo deben convertir en Nullable las columnas clave. #40997 (Duc Canh Le).
- Mejora la observabilidad de INSERT en una tabla distribuida. #41034 (Frank Chen).
- Más métricas de bajo nivel sobre la interacción con S3. #41039 (mateng915).
- Se admite una ruta relativa en el encabezado Location tras una redirección HTTP. Cierra #40985. #41162 (Kruglov Pavel).
- Aplicar cambios a los manejadores HTTP en caliente sin reiniciar el servidor. #41177 (Azat Khuzhin).
- ClickHouse Keeper: cerrar correctamente las sesiones activas durante el apagado. #41215 (Antonio Andelic). Esto reduce el tiempo durante el que se producen errores de “la tabla es de solo lectura”.
- Se añadió la posibilidad de comentar automáticamente consultas SQL en clickhouse-client/local (con
Alt-#, como en readline). #41224 (Azat Khuzhin). - Se corrigió la incompatibilidad de la caché tras cambiar la configuración
do_no_evict_index_and_mark_filesde 1 a 0 y de 0 a 1. #41330 (Kseniia Sumarokova). - Se añade la configuración
allow_suspicious_fixed_string_typespara evitar que los usuarios creen columnas de tipo FixedString con tamaño > 256. #41495 (Duc Canh Le). - Se añade
has_lightweight_deletea system.parts. #41564 (Kseniia Sumarokova).
Mejoras en compilación, pruebas y empaquetado
- Exigir documentación para cada parámetro de configuración. #40644 (Alexey Milovidov).
- Garantizar la documentación de todas las métricas actuales. #40645 (Alexey Milovidov).
- Exigir documentación para cada contador de eventos de perfil. Redactar la documentación donde faltaba. #40646 (Alexey Milovidov).
- Permite una compilación mínima de
clickhouse-localcorrigiendo algunas dependencias. #40460 (Alexey Milovidov). Ocupa menos de 50 MiB. - Calcular e informar sobre la cobertura de funciones SQL en las pruebas. #40593. #40647 (Alexey Milovidov).
- Hacer obligatoria la documentación de cada configuración de MergeTree. #40648 (Alexey Milovidov).
- Un prototipo de documentación de referencia integrada para componentes uniformes del servidor de alto nivel. #40649 (Alexey Milovidov).
- Comprobaremos todas las consultas de las pruebas de rendimiento modificadas para asegurarnos de que se hayan probado todas las consultas modificadas. #40322 (Nikita Taranov).
- Se corrigen los paquetes TGZ. #40681 (Mikhail f. Shiryaev).
- Se corrigieron los símbolos de depuración. #40873 (Azat Khuzhin).
- Se amplió la configuración de CI para crear una compilación x86 compatible solo con SSE2. Útil para hardware antiguo o embebido. #40999 (Robert Schulze).
- Se cambia a llvm/clang 15. #41046 (Azat Khuzhin).
- Continuación de #40938. Corrige una violación de ODR en la clase
Loggers. Corrige #40398, #40937. #41060 (Dmitry Novik). - Se añaden binarios de macOS a los assets de la versión de GitHub; esto corrige #37718. #41088 (Mikhail f. Shiryaev).
- La biblioteca c-ares ahora viene incluida con el sistema de compilación de ClickHouse. #41239 (Robert Schulze).
- Se eliminó
dlopendel código principal de ClickHouse. Sigue presente en library-bridge y odbc-bridge. #41428 (Alexey Milovidov). - No se debe permitir
dlopenen el binario principal de ClickHouse, porque es perjudicial e inseguro. No lo usamos. Pero algunas bibliotecas pueden usarlo para implementar “plugins”. Desaconsejamos absolutamente la antigua técnica de cargar en el espacio de direcciones del proceso bibliotecas peligrosas y no controladas de terceros, porque es una locura. #41429 (Alexey Milovidov). - Se añade el campo
sourcea los paquetes deb y se actualiza nfpm. #41531 (Mikhail f. Shiryaev). - Compatibilidad con DWARF-5 en el analizador DWARF propio. #40710 (Azat Khuzhin).
- Se añadió inyección de fallos en el cliente de ZooKeeper para pruebas #30498 (Alexander Tokmakov).
- Se añaden pruebas sin estado con almacenamiento S3, con debug y tsan #35262 (Kseniia Sumarokova).
- Pruebas de estrés sobre S3 #36837 (alesapin).
- Se habilita
concurrency-mt-unsafeenclang-tidy#40224 (Alexey Milovidov).
Corrección de errores
- Corrige una posible pérdida de datos debida a un error en AWS SDK. El error solo puede producirse cuando ClickHouse se usa sobre S3. #40506 (alesapin). Este error llevaba 5 años abierto en AWS SDK y se cerró tras nuestro informe.
- Los datos maliciosos en formato Native podrían provocar un fallo. #41441 (Alexey Milovidov).
- La función de agregación
categorialInformationValuetenía propiedades mal definidas, lo que podría provocar una desreferenciación de puntero nulo en tiempo de ejecución. Esto cierra #41443. #41449 (Alexey Milovidov). - Escribir datos en formato Apache
ORCpodría causar un desbordamiento de búfer. #41458 (Alexey Milovidov). - Se corrigen problemas de seguridad de memoria en las funciones
encryptycontingencycuando se usaArraydeNullablecomo argumento. Esto corrige #41004. #40195 (Alexey Milovidov). - Corrige fallos en MergeJoin cuando ‘not_processed’ no es null. #40335 (liql2007).
- Corrige el resultado incorrecto en caso de pérdida de precisión decimal en el operador IN; véase #41125. #41130 (Vladimir C).
- Se corrige el relleno de las columnas
Nestedfaltantes en múltiples niveles. #37152 (Anton Popov). - Corrige la consulta SYSTEM UNFREEZE para la base de datos Ordinary (en desuso). Corrección de https://github.com/ClickHouse/ClickHouse/pull/36424. #38262 (Vadim Volodin).
- Se corrigen las columnas desconocidas no utilizadas introducidas por la sentencia WITH. Esto corrige #37812 . #39131 (Amos Bird).
- Corrige el análisis de consultas con ORDER BY en presencia de funciones de ventana. Soluciona #38741 Soluciona #24892. #39354 (Dmitry Novik).
- Se corrigió la excepción
Unknown identifier (aggregate-function)que se produce cuando un usuario intenta calcular expresiones WINDOW ORDER BY/PARTITION BY sobre funciones de agregación. #39762 (Vladimir Chebotaryov). - Limita la cantidad de análisis para una consulta con la configuración
max_analyze_depth. Evita el crecimiento exponencial del tiempo de análisis en consultas con un número de subconsultas extraordinariamente grande. #40334 (Vladimir C). - Se corrigió un error poco frecuente relacionado con el TTL de columnas en la familia de motores MergeTree: en caso de una fusión vertical repetida, podía producirse el error
Cannot unlink file ColumnName.bin ... No such file or directory.. #40346 (alesapin). - Usa registros DNS tanto para IPv4 como para IPv6 si están presentes. #40353 (Maksim Kita).
- Permite leer archivos comprimidos con Snappy desde Hadoop. #40482 (Kruglov Pavel).
- Se corrigió un fallo al analizar valores del tipo
Object(característica experimental) que contiene arrays de dimensión variable. #40483 (Duc Canh Le). - Se corrigió la opción de configuración
input_format_tsv_skip_first_lines. #40491 (mini4). - Se corrige un fallo (condición de carrera) al iniciar el motor MaterializedPostgreSQL de base de datos o de tabla. #40262. Se corrige el error al alcanzar el límite de slots de relcache_callback_list. #40511 (Maksim Buren).
- Corrige un posible error ‘Desbordamiento aritmético de Decimal’ al analizar DateTime64. #40546 (Kruglov Pavel).
- Corrige la fusión vertical de partes con filas eliminadas con eliminación ligera. #40559 (Alexander Gololobov).
- Se corrige un fallo de segmentación al escribir datos en el motor de tabla URL si la compresión está habilitada. #40565 (Frank Chen).
- Se corrige un posible error lógico
'Invalid Field get from type UInt64 to type String'en la función arrayElement con Map. #40572 (Kruglov Pavel). - Se corrige una posible condición de carrera en la caché del sistema de archivos. #40586 (Kseniia Sumarokova).
- Se dejó de omitir mutaciones en las particiones no afectadas de las tablas
MergeTree, porque esta funcionalidad nunca funcionó correctamente y podría provocar la reaparición de mutaciones ya finalizadas. #40589 (Alexander Tokmakov). - El servidor de ClickHouse fallará si se añade en tiempo de ejecución a la configuración un puerto
grpcque ya está en uso. #40597 (何李夫). - Se corrige el manejo de 0 / ‘1’ al inicio en
base58Encode / base58Decode. #40620 (Andrey Zvonov). - keeper-fix: corrige una condición de carrera al acceder a los logs durante la instalación de la instantánea. #40627 (Antonio Andelic).
- Corrige la evaluación de cortocircuito de la función toFixedString. Resuelve (parcialmente) #40622. #40628 (Kruglov Pavel).
- Corrige la conversión de una columna int8 de SQLite a una columna int64 en ClickHouse. Corrige #40639. #40642 (Barum Rho).
- Se corrige el desbordamiento de pila en tablas
Bufferrecursivas. Esto cierra #40637. #40643 (Alexey Milovidov). - Durante la inserción de una nueva consulta en
ProcessListse realizan asignaciones de memoria. Si alcanzamos el límite de memoria durante estas asignaciones, no podemos usarOvercommitTracker, porqueProcessList::mutexya se ha adquirido. Corrige #40611. #40677 (Dmitry Novik). - Se corrige LOGICAL_ERROR con max_read_buffer_size=0 al leer marks. #40705 (Azat Khuzhin).
- Se corrige una fuga de memoria al enviar datos a MVs sin contexto de consulta (desde Kafka/…). #40732 (Azat Khuzhin).
- Se corrige el posible error “Attempt to read after eof” en la inferencia de esquema de CSV. #40746 (Kruglov Pavel).
- Corrige el error lógico en la caché write-through “Solo el descargador puede completar el segmento de archivo”. Cierra #40748. #40759 (Kseniia Sumarokova).
- Hacer que el resultado de la función GROUPING sea igual que en SQL y otros SGBD. #40762 (Dmitry Novik).
- En #40595 se informó de que la funcionalidad
host_regexpno funcionaba correctamente con la resolución de nombres a direcciones en/etc/hosts. Ya está corregido. #40769 (Arthur Passos). - Se corrigen las copias de seguridad incrementales para la familia Log. #40827 (Vitaly Baranov).
- Se corrigió un error extremadamente raro que puede provocar una posible pérdida de datos en la replicación zero-copy. #40844 (alesapin).
- Se corrigen los fallos al analizar la condición de clave cuando la misma expresión Set se construye a partir de distintas columnas. #40850 (Duc Canh Le).
- Se corrige la inferencia del esquema de objetos JSON anidados. #40851 (Kruglov Pavel).
- Se corrige el problema por el que no se eliminaba el directorio con prefijo de 3 dígitos de los archivos de la caché del sistema de archivos cuando estaba vacío. Cierra #40797. #40867 (Kseniia Sumarokova).
- Se corrige un DNS_ERROR no detectado al fallar la conexión con las réplicas. #40881 (Robert Coelho).
- Se corrige un error al eliminar columnas innecesarias en una subconsulta. #40884 (luocongkai).
- Se corrige la asignación extra de memoria para los búferes de lectura remota. #40896 (Kseniia Sumarokova).
- Se corrigió un comportamiento por el que un usuario al que se le había revocado explícitamente el privilegio para eliminar bases de datos aún podía hacerlo. #40906 (Nikita Mikhaylov).
- Una corrección para ClickHouse Keeper: comparar correctamente los paths de las solicitudes de escritura con los paths de los nodos internos del sistema de Keeper. #40918 (Antonio Andelic).
- Se ha corregido un interbloqueo en WriteBufferFromS3. #40943 (Kseniia Sumarokova).
- Corregir los permisos de acceso de
DESCRIBE TABLE url()y de algunas otrasDESCRIBE TABLE <table_function>(). #40975 (Vitaly Baranov). - Se elimina la lógica incorrecta del analizador sintáctico para
WITH GROUPING SETS, que podría provocar la desreferenciación de unnullptr. #41049 (Duc Canh Le). - Una corrección para ClickHouse Keeper: se corrige un posible fallo de segmentación al cerrar Keeper. #41075 (Antonio Andelic).
- Se corrigen posibles errores de segmentación, use-heap-after-free y fugas de memoria en los combinadores de funciones de agregación. Cierra #40848. #41083 (Kruglov Pavel).
- Se corrige query_views_log con Window views. #41132 (Raúl Marín).
- Desactiva optimize_monotonous_functions_in_order_by de forma predeterminada; mitiga: #40094. #41136 (Denny Crane).
- Se corrigió el error “possible deadlock avoided” durante la conversión automática del motor de base de datos de Ordinary a Atomic. #41146 (Alexander Tokmakov).
- Se corrigió SIGSEGV en SortedBlocksWriter en caso de bloque vacío (puede ocurrir con
optimize_aggregation_in_orderyjoin_algorithm=auto). #41154 (Azat Khuzhin). - Corrige un resultado de consulta incorrecto cuando está activa la optimización de recuento trivial con array join. Esto corrige #39431. #41158 (Denny Crane).
- Se corrige un error de uso de la pila después del retorno en GetPriorityForLoadBalancing::getPriorityFunc(). #41159 (Azat Khuzhin).
- Se corrige la excepción de argumentos posicionales: argumento posicional fuera de rango. Cierra #40634. #41189 (Kseniia Sumarokova).
- Se corrige la limpieza en segundo plano de las partes
detachedcorruptas. #41190 (Kseniia Sumarokova). - Se corrige la reescritura exponencial de consultas cuando hay muchos cross joins con where; cierra #21557. #41223 (Vladimir C).
- Se corrige un posible error lógico en la caché write-through, que se producía porque no se controlaban adecuadamente todos los tipos de excepciones. Cierra #41208. #41232 (Kseniia Sumarokova).
- Corregida la entrada de registro de tipo String en system.filesystem_cache_log. #41233 (jmimbrero).
- Las consultas con la cláusula
OFFSETen una subconsulta y la cláusulaWHEREen la consulta externa podían devolver un resultado incorrecto; ya se corrigió. Soluciona #40416. #41280 (Alexander Tokmakov). - Se corrige un posible resultado incorrecto de una consulta con
query_plan_optimize_primary_keyhabilitado. Corrige #40599. #41281 (Nikolai Kochetov). - No permitir que las secuencias no válidas afecten a otras filas en lowerUTF8/upperUTF8. #41286 (Azat Khuzhin).
- Se corrigen las consultas
ALTER <table> ADD COLUMNal añadir columnas de tipoObject. #41290 (Anton Popov). - Se corrigió el error “No node” al consultar
system.distributed_ddl_queuecuando no hay undistributed_ddl.pathen la configuración. Corrige #41096. #41296 (young scott). - Se corrigió el error lógico incorrecto
Expected relative pathen el almacenamiento de objetos en disco. Relacionado con #41246. #41297 (Kseniia Sumarokova). - Añadir una comprobación del tipo de columna antes de insertar UUID en formato MsgPack. #41309 (Kruglov Pavel).
- Se corrige un posible fallo tras insertar de forma asíncrona (con la configuración
async_inserthabilitada) datos malformados en columnas de tipoObject. Podía ocurrir si los JSON de todos los lotes de async inserts no eran válidos y no podían analizarse. #41336 (Anton Popov). - Se ha corregido un posible interbloqueo con async_socket_for_remote/use_hedged_requests y KILL en paralelo. #41343 (Azat Khuzhin).
- Deshabilita optimize_rewrite_sum_if_to_count_if de forma predeterminada; mitiga: #38605 #38683. #41388 (Denny Crane).
- Desde la versión 22.8, la cláusula
ON CLUSTERse ignora si la base de datos esReplicatedy el nombre del cluster coincide con el de la base de datos. Debido a esto,DROP PARTITION ON CLUSTERfuncionaba de forma inesperada conReplicated. Ya se ha corregido: ahora la cláusulaON CLUSTERse ignora solo en las consultas que se replican a nivel de base de datos. Corrige #41299. #41390 (Alexander Tokmakov). - Corrige un posible bloqueo/interbloqueo al cancelar una consulta (
KILL QUERYo apagado del servidor). #41467 (Azat Khuzhin). - Corrige un posible cierre inesperado del servidor al usar la función JBOD. Esto corrige #41365. #41483 (Amos Bird).
- Se corrigió la conversión de Nullable FixedString a String. #41541 (Duc Canh Le).
- Se evita un fallo al pasar estados de agregación incorrectos a groupBitmap*. #41563 (Raúl Marín).
- Las consultas con
ORDER BYy1500 <= LIMIT <= max_block_sizepodían devolver un resultado incorrecto, sin algunas de las primeras filas. Corrige #41182. #41576 (Nikolai Kochetov). - Corrección de los bytes/filas leídos en X-ClickHouse-Summary con vistas materializadas. #41586 (Raúl Marín).
- Corrige una posible excepción
pipeline stucken consultas conOFFSET. El error se detectó conenable_optimize_predicate_expression = 0y una condición siempre falsa enWHERE. Corrige #41383. #41588 (Nikolai Kochetov).
Lanzamiento de ClickHouse 22.8, 2022-08-18. Presentación, Vídeo
Cambio incompatible con versiones anteriores
- Se amplió el rango de
Date32yDateTime64para admitir fechas desde el año 1900 hasta 2299. En versiones anteriores, el intervalo admitido era solo del año 1925 al 2283. La implementación utiliza el calendario gregoriano proléptico (que cumple con ISO 8601:2004 (clause 3.2.1 The Gregorian calendar)) en lugar de tener en cuenta las transiciones históricas del calendario juliano al gregoriano. Este cambio afecta al comportamiento específico de la implementación para argumentos fuera de rango. Por ejemplo, si en versiones anteriores el valor1899-01-01se ajustaba a1925-01-01, en la nueva versión se ajustará a1900-01-01. También cambia el comportamiento del redondeo contoStartOfIntervalsi se pasaINTERVAL 3 QUARTER, con una diferencia de hasta un trimestre, porque los intervalos se cuentan desde un punto temporal específico de la implementación. Cierra #28216, mejora #38393. #39425 (Roman Vasin). - Ahora, todas las fuentes de diccionario relevantes respetan el ajuste
remote_url_allow_hosts. Esto ya se había hecho para HTTP, Cassandra y Redis. Se añadieron ClickHouse, MongoDB, MySQL y PostgreSQL. El host solo se comprueba para los diccionarios creados a partir de DDL. #39184 (Nikolai Kochetov). - Los binarios x86 precompilados de ClickHouse ahora requieren compatibilidad con instrucciones AVX, es decir, una CPU no anterior a Intel Sandy Bridge / AMD Bulldozer, ambas lanzadas en 2011. #39000 (Robert Schulze).
- La caché remota del sistema de archivos pasa a ser componible, permite no expulsar ciertos archivos (como idx, mrk, ..) y elimina la versión antigua de la caché. Ahora es posible configurar la caché sobre un disco de Azure blob storage, sobre un disco local, sobre un disco StaticWeb, etc. Este PR está marcado como incompatible con versiones anteriores porque cambia la configuración de la caché y, para que la caché funcione, es necesario actualizar el archivo de configuración. La caché antigua seguirá utilizándose con la nueva configuración. El servidor se iniciará correctamente con la configuración antigua de la caché. Cierra https://github.com/ClickHouse/ClickHouse/issues/36140. Cierra https://github.com/ClickHouse/ClickHouse/issues/37889. (Kseniia Sumarokova). #36171)
Nueva funcionalidad
- Compatibilidad con la sintaxis estándar de SQL
DELETE FROMen tablas MergeTree y con la implementación de eliminación ligera para la familia MergeTree. #37893 (Jianmei Zhang) (Alexander Gololobov). Nota: esta nueva funcionalidad no convierte a ClickHouse en un SGBD HTAP. - Los parámetros de consulta pueden establecerse en modo interactivo como
SET param_abc = 'def'y transferirse mediante el protocolo nativo como configuraciones. #39906 (Nikita Taranov). - La clave de cuota puede establecerse en el protocolo nativo (Yakov Olkhovsky).
- Se añadió la configuración
exact_rows_before_limit(0/1). Cuando está habilitada, ClickHouse proporcionará el valor exacto de la estadísticarows_before_limit_at_least, pero a costa de tener que leer por completo los datos previos al límite. Esto cierra #6613. #25333 (kevin wan). - Se añadió compatibilidad con
insert selectdistribuido en paralelo con la función de tablas3Clusteren tablas con motorDistributedyReplicated#34670. #39107 (Nikita Mikhaylov). - Se añaden nuevas configuraciones para controlar la inferencia de esquema a partir de formatos de texto: -
input_format_try_infer_dates- intentar inferir fechas a partir de cadenas. -input_format_try_infer_datetimes- intentar inferir DateTimes a partir de cadenas. -input_format_try_infer_integers- intentar inferirInt64en lugar deFloat64. -input_format_json_try_infer_numbers_from_strings- intentar inferir números a partir de cadenas JSON en formatos JSON. #39186 (Kruglov Pavel). - Una opción para proporcionar salida de logs en formato JSON. El objetivo es facilitar la ingestión y la consulta en herramientas de análisis de logs. #39277 (Mallik Hassan).
- Se añade la función
nowInBlock, que permite obtener la hora actual durante consultas de larga duración y continuas. Cierra #39522. Nota: no existen las funcionesnow64InBlocknitodayInBlock. #39533 (Alexey Milovidov). - Se añade la posibilidad de especificar configuraciones para una función de tabla
executable(). #39681 (Constantine Peresypkin). - Se implementó la conversión automática del database motor de
OrdinaryaAtomic. Cree un archivo vacíoconvert_ordinary_to_atomicen el directorioflagsy todas las bases de datosOrdinaryse convertirán automáticamente en el siguiente inicio del servidor. Resuelve #39546. #39933 (Alexander Tokmakov). - Compatibilidad con
SELECT ... INTO OUTFILE '...' AND STDOUT. #37490. #39054 (SmitaRKulkarni). - Se añaden los formatos
PrettyMonoBlock,PrettyNoEscapesMonoBlock,PrettyCompactNoEscapes,PrettyCompactNoEscapesMonoBlock,PrettySpaceNoEscapes,PrettySpaceMonoBlock,PrettySpaceNoEscapesMonoBlock. #39646 (Kruglov Pavel).
Mejora del rendimiento
- Mejora del uso de memoria durante la fusión de resultados de agregación con uso eficiente de memoria. #39429 (Nikita Taranov).
- Se añadió lógica de control de concurrencia para limitar el número total de hilos concurrentes creados por las consultas. #37558 (Sergei Trifonov). Se añadió el
concurrent_threads_soft_limit parameterpara mejorar el rendimiento cuando el QPS es alto, limitando el número total de hilos de todas las consultas. #37285 (Roman Vasin). - Se añade la política de caché
SLRUpara la caché no comprimida y la caché de marcas. (Kseniia Sumarokova). #34651 (alexX512). Desacoplamiento entre la función de caché local y el algoritmo de caché #38048 (Han Shukai). - Intel® In-Memory Analytics Accelerator (Intel® IAA) es un acelerador de hardware disponible en la próxima generación de procesadores Intel® Xeon® Scalable (“Sapphire Rapids”). Su objetivo es acelerar operaciones habituales de analítica, como la compresión/descompresión de datos y el filtrado. ClickHouse incorporó el nuevo codec de compresión “DeflateQpl”, que utiliza la tecnología de descarga de Intel® IAA para ofrecer una implementación de DEFLATE de alto rendimiento. El codec utiliza la Intel® Query Processing Library (QPL), que abstrae el acceso al acelerador de hardware o, en su defecto, a una alternativa de software cuando el acelerador de hardware no está disponible. En general, DEFLATE proporciona mayores tasas de compresión que el codec predeterminado LZ4 de ClickHouse y, como resultado, reduce la E/S de disco y el consumo de memoria principal. #36654 (jasperzhu). #39494 (Robert Schulze).
DISTINCTen orden conORDER BY: Deducir la forma de ordenar a partir de la descripción de ordenación del flujo de entrada. Omitir la ordenación si el flujo de entrada ya está ordenado. #38719 (Igor Nikonov). Mejorar significativamente el uso de memoria y el tiempo de ejecución de la consulta + usarDistinctSortedChunkTransformpara elDISTINCTfinal cuando las columnas deDISTINCTcoincidan con las deORDER BY, pero renombrarlo aDistinctSortedStreamTransformenEXPLAIN PIPELINE→ esto mejora significativamente el uso de memoria + eliminar asignaciones de memoria innecesarias en el bucle crítico deDistinctSortedChunkTransform. #39432 (Igor Nikonov). UsarDistinctSortedTransformsolo cuando la descripción de ordenación sea aplicable a las columnas deDISTINCT; en caso contrario, recurrir a la implementación habitual deDISTINCT+ esto permite realizar menos comprobaciones durante la ejecución deDistinctSortedTransform. #39528 (Igor Nikonov). Corrección:DistinctSortedTransformno aprovechaba la ordenación. Nunca vaciaba el HashSet porqueclearing_columnsse detectaba incorrectamente (siempre vacío). Así que, en la práctica, funcionaba como unDISTINCTnormal (DistinctTransform). La corrección reduce significativamente el uso de memoria. #39538 (Igor Nikonov).- Use el nodo local como primera opción para obtener la estructura de la tabla remota al ejecutar
clustery funciones de tabla similares. #39440 (Mingliang Pan). - Optimiza el filtrado por columnas numéricas con compress store de AVX512VBMI2. #39633 (Guo Wangyang). Para sistemas con AVX512 VBMI2, este PR mejora el rendimiento en aprox. un 6 % para las consultas 3.1, 3.2 y 3.3 del benchmark SSB (SF=100). Probado en Intel Icelake Xeon 8380 de 2 sockets. #40033 (Robert Schulze).
- Optimización del análisis de índices con expresiones funcionales en escenarios multihilo. #39812 (Guo Wangyang).
- Optimizaciones para consultas complejas: No recorrer el AST de las UDFs si no hay ninguna registrada. #40069 (Raúl Marín). Optimización de alloc y free de CurrentMemoryTracker. #40078 (Raúl Marín).
- Se ha mejorado la codificación/decodificación de Base58. #39292 (Andrey Zvonov).
- Mejora de la transformación de máscara de bytes a bits para SSE/AVX/AVX512. #39586 (Guo Wangyang).
Mejora
- Normalizar los tipos
AggregateFunctiony las representaciones de estado, porque optimizaciones como #35788 trataráncount(not null columns)comocount(), lo que podría hacer que los intérpretes distribuidos muestren el siguiente error:Conversion from AggregateFunction(count) to AggregateFunction(count, Int64) is not supported. #39420 (Amos Bird). Las funciones con estados idénticos pueden usarse indistintamente en vistas materializadas. - Reestructurar y simplificar la tabla
system.backups, eliminar la columnainternal, permitir al usuario establecer el ID de la operación y añadir las columnasnum_files,uncompressed_size,compressed_size,start_time,end_time. #39503 (Vitaly Baranov). - Estructura mejorada de la tabla de resultados de consultas DDL para la base de datos
Replicated(columnas separadas para el nombre del segmento y de la réplica, y un estado más claro): las consultasCREATE TABLE ... ON CLUSTERpueden normalizarse primero en el nodo iniciador sidistributed_ddl_entry_format_versionestá establecido en 3 (valor predeterminado). Esto significa que las consultasON CLUSTERpueden no funcionar si el nodo iniciador no pertenece al clúster especificado en la consulta. Corrige #37318, #39500: ignorar la cláusulaON CLUSTERsi la base de datos esReplicatedy el nombre del clúster coincide con el nombre de la base de datos. Relacionado con #35570: varias correcciones menores para el motor de base de datosReplicated: comprobar la consistencia de los metadatos al iniciar la base de datosReplicatede iniciar la recuperación de la réplica en caso de discrepancia entre los metadatos locales y los metadatos en Keeper. Resuelve #24880. #37198 (Alexander Tokmakov). - Añadir result_rows y result_bytes a los informes de progreso (
X-ClickHouse-Summary). #39567 (Raúl Marín). - Mejora del análisis de la clave primaria en MergeTree. #25563 (Nikolai Kochetov).
timeSlotsahora funciona con DateTime64; la duración con precisión de subsegundos y el tamaño del intervalo están disponibles al trabajar con DateTime64. #37951 (Andrey Zvonov).- Se añadió compatibilidad para
direct joinLEFT SEMIyLEFT ANTIcon tablasEmbeddedRocksDB. #38956 (Vladimir C). - Añadir eventos de perfil para las operaciones
fsync. #39179 (Azat Khuzhin). - Añadido el segundo argumento a la función ordinaria
file(path[, default]), que es el valor que devuelve la función en caso de que el archivo no exista. #39218 (Nikolay Degterinsky). - Algunas correcciones menores para la lectura a través de HTTP permiten reintentar contenido parcial en caso de recibir 200 OK. #39244 (Kseniia Sumarokova).
- Admite consultas
CREATE TEMPORARY TABLE ... (<list of columns>) AS .... #39462 (Kruglov Pavel). - Se añade soporte para
!/*(signo de exclamación/asterisco) en TLD personalizados (cutToFirstSignificantSubdomainCustom()/cutToFirstSignificantSubdomainCustomWithWWW()/firstSignificantSubdomainCustom()). #39496 (Azat Khuzhin). - Se añadió compatibilidad con conexiones TLS a NATS. Implementa #39525. #39527 (Constantine Peresypkin).
clickhouse-obfuscator(una herramienta de ofuscación de bases de datos para pruebas y generación de carga) ahora cuenta con los nuevos parámetros--savey--loadpara trabajar con modelos preentrenados. Esto cierra #39534. #39541 (Alexey Milovidov).- Se corrige el comportamiento incorrecto de la rotación de logs durante el reinicio. #39558 (Nikolay Degterinsky).
- Se corrige la creación de proyecciones agregadas cuando la agregación externa está activada. Se clasifica como una mejora porque este caso es poco frecuente y existe una solución sencilla cambiando la configuración. Esto corrige #39667 . #39671 (Amos Bird).
- Se permite ejecutar funciones hash con argumentos de tipo
Map. #39685 (Anton Popov). - Se añade un parámetro de configuración para ocultar direcciones en las trazas de pila. Puede mejorar ligeramente la seguridad, pero en general es perjudicial y no debe usarse. #39690 (Alexey Milovidov).
- Se cambió el tamaño del prefijo de AggregateFunctionDistinct para garantizar que el segmento de memoria de los datos de la función anidada quede alineado. #39696 (Pxl).
- Escapar correctamente las credenciales proporcionadas a la herramienta
clickhouse-diagnostic. #39707 (Dale McDiarmid). - Mejora de ClickHouse Keeper: crear un snapshot al cerrar. Se puede controlar con la configuración
keeper_server.create_snapshot_on_exit;truede forma predeterminada. #39755 (Antonio Andelic). - Permite el análisis de la clave primaria para
row_policy_filteryadditional_filter. También ayuda a corregir problemas como #37454. #39826 (Amos Bird). - Se corrigen dos problemas de usabilidad en la UI de Play: - no se veía pixel-perfect en iPad debido a bordes redondeados y márgenes parásitos; - la indicación de progreso no se mostraba después de la primera consulta. Esto cierra #39957. Esto cierra #39960. #39961 (Alexey Milovidov).
- UI de Play: añadir numeración de filas; añadir selección de celdas al hacer clic; añadir histéresis en las celdas de la tabla. #39962 (Alexey Milovidov).
- UI de Play: reconocer la tecla Tab en el área de texto, pero sin afectar al mismo tiempo la navegación con Tab. #40053 (Alexey Milovidov).
- El cliente mostrará el tiempo transcurrido en el servidor. Esto es importante para comparar el rendimiento de los servicios de ClickHouse en datacenters remotos. Esto cierra #38070. Consulte también esto para conocer la motivación. #39968 (Alexey Milovidov).
- Se agregan las funciones
parseDateTime64BestEffortUS,parseDateTime64BestEffortUSOrNullyparseDateTime64BestEffortUSOrZero, lo que cierra #37492. #40015 (Tanya Bragin). - Se amplió
system.processors_profile_logcon más información, como las filas de entrada. #40121 (Amos Bird). - Mostrar de forma predeterminada la hora del servidor en
clickhouse-benchmarksi está disponible (desde la versión 22.8 de ClickHouse). Esto es necesario para comparar correctamente el rendimiento de las Clouds. Este comportamiento puede cambiarse con la nueva opción de línea de comandos--client-side-time. Cambiar la opción de línea de comandos--randomizede--randomize 1a la forma sin argumento. #40193 (Alexey Milovidov). - Añadir contadores (ProfileEvents) para los casos en que se haya configurado una limitación de la complejidad de la consulta y se haya alcanzado (un contador independiente para
overflow_mode=breakythrow). Por ejemplo, si ha configuradomax_rows_to_readconread_overflow_mode = 'break', consultar el valor del contadorOverflowBreakpermitirá distinguir los resultados incompletos. #40205 (Alexey Milovidov). - Se corrigió la contabilidad de memoria en caso de errores de “Memory limit exceeded” (anteriormente, el uso de memoria [peak] tenía en cuenta las asignaciones fallidas). #40249 (Azat Khuzhin).
- Se añaden métricas para la caché del sistema de archivos:
FilesystemCacheSizeyFilesystemCacheElements. #40260 (Kseniia Sumarokova). - Se admite la transferencia RPC segura de Hadoop (hadoop.rpc.protection=privacy y hadoop.rpc.protection=integrity). #39411 (michael1589).
- Evita el crecimiento continuo del consumo de memoria de la caché de patrones al usar las funciones multi(Fuzzy)Match(Any|AllIndices|AnyIndex)(). #40264 (Robert Schulze).
mejora en compilación, pruebas y empaquetado
- ClickFiddle: Una nueva herramienta para probar versiones de ClickHouse en modo de lectura/escritura (Igor Baliuk).
- El binario de ClickHouse ahora es autoextraíble #35775 (Yakov Olkhovskiy, Arthur Filatenkov).
- Actualiza tzdata a 2022b para admitir los nuevos cambios de zona horaria. Consulta https://github.com/google/cctz/pull/226. El inicio del horario de verano de Chile en 2022 se retrasa del 4 de septiembre al 11 de septiembre. Irán planea dejar de observar el horario de verano de forma permanente, después de atrasar el reloj el 2022-09-21. Hay correcciones de la zona horaria histórica de Asia/Tehran en el año 1977: Irán adoptó la hora estándar en 1935, no en 1946. En 1977 observó horario de verano desde 03-21 23:00 hasta 10-20 24:00; sus transiciones de 1978 fueron el 03-24 y el 08-05, no el 03-20 y el 10-20; y su transición de primavera de 1979 fue el 05-27, no el 03-21 (https://data.iana.org/time-zones/tzdb/NEWS). (Alexey Milovidov).
- Antes, los paquetes instalaban el archivo systemd.service en
/etc. Los archivos allí se marcan comoconf, no se eliminan ni se actualizan automáticamente. Este PR los elimina. #39323 (Mikhail f. Shiryaev). - Asegúrese de que LSan funcione correctamente. #39430 (Azat Khuzhin).
- TSAN presenta problemas con clang-14 (https://github.com/google/sanitizers/issues/1552, https://github.com/google/sanitizers/issues/1540), por lo que aquí compilamos los binarios de TSAN con clang-15. #39450 (Mikhail f. Shiryaev).
- Se elimina la posibilidad de compilar las herramientas de ClickHouse como programas ejecutables independientes. Esto corrige #37847. #39520 (Alexey Milovidov).
- Ajustes menores para la compilación en s390x (que es big-endian). #39627 (Harry Lee). #39656 (Harry Lee). Se corrigió un problema de endianness en BitHelpers para s390x. #39656 (Harry Lee). Se implementó una parte de código relacionada con SipHash para la arquitectura s390x (no compatible con ClickHouse). #39732 (Harry Lee). Se corrigió un problema de endianness en el código de instantáneas de coordinación para la arquitectura s390x (no compatible con ClickHouse). #39931 (Harry Lee). Se corrigieron problemas de endianness en el código de codec para la arquitectura s390x (no compatible con ClickHouse). #40008 (Harry Lee). Se corrigieron problemas de endianness en la lectura y escritura de datos binarios BigEndian en el código de ReadHelpers y WriteHelpers para la arquitectura s390x (no compatible con ClickHouse). #40179 (Harry Lee).
- Se admite la compilación con
clang-16(trunk). Esto cierra #39949. #40181 (Alexey Milovidov). - Preparación de la compilación de RISC-V 64 para ejecutarse en CI. Esto es para #40141. #40197 (Alexey Milovidov).
- Se simplificó la interfaz de la macro de registro de funciones (
FUNCTION_REGISTER*) para eliminar el paso de agregar y llamar a una funciónexternenregisterFunctions.cpp; además, esto agiliza las compilaciones incrementales de una función nueva. #38615 (Li Yin). - Docker: Ahora
entrypoint.shen la imagen de Docker crea y ejecutachownpara todas las carpetas que encuentra en la configuración de una instalación multidisco #17717. #39121 (Nikita Mikhaylov).
Corrección de errores
- Corrige una posible falla de segmentación en el formato de entrada
CapnProto. Este error fue detectado y reportado por kiojj a través del programa de recompensas por errores de ClickHouse. #40241 (Kruglov Pavel). - Soluciona un caso muy poco frecuente de comportamiento incorrecto del operador de subíndice de arrays. Esto cierra #28720. #40185 (Alexey Milovidov).
- Se corrigió la validación insuficiente de argumentos en las funciones de cifrado (detectada por el fuzzer de consultas). Esto cierra #39987. #40194 (Alexey Milovidov).
- Se corrige un caso en el que el orden de las columnas puede ser incorrecto si el operador
INse usa con una tabla conENGINE = Setque contiene varias columnas. Esto corrige #13014. #40225 (Alexey Milovidov). - Se corrige el reposicionamiento al leer desde un disco cifrado. Este PR corrige #38381. #39687 (Vitaly Baranov).
- Se corrigen las columnas duplicadas en el plan de ejecución de JOIN. Por fin, se resuelve #26809. #40009 (Vladimir C).
- Se corrigió el cuelgue de la consulta para SELECT con ORDER BY WITH FILL con distintos tipos de fecha/hora. #37849 (Yakov Olkhovskiy).
- Corregido el ORDER BY para que coincida con el ORDER BY de las proyecciones (antes simplemente devolvía un resultado sin ordenar). #38725 (Azat Khuzhin).
- No optimice las funciones en las sentencias
GROUP BYsi entran en conflicto con una de las columnas o expresiones de la tabla. Corrige #37032. #39103 (Anton Kozlov). - Se corrigió el nombre de tabla incorrecto en los logs tras RENAME TABLE. Esto corrige #38018. #39227 (Amos Bird).
- Se corrigen los argumentos posicionales en caso de poda de columnas durante la optimización de la consulta. Cierra #38433. #39293 (Kseniia Sumarokova).
- Se corrige un error en la inferencia de esquema en el caso de mensajes vacíos en los formatos Protobuf/CapnProto, que permitía crear una columna con un tipo
Tuplevacío. Cierra #39051 Se añaden 2 nuevas opciones de configuracióninput_format_{protobuf/capnproto}_skip_fields_with_unsupported_types_in_schema_inferenceque permiten omitir campos con tipos no compatibles durante la inferencia de esquema para los formatos Protobuf y CapnProto. #39357 (Kruglov Pavel). - (Window View es una característica experimental) Se corrige un fallo de segmentación en
CREATE WINDOW VIEW .. ON CLUSTER ... INNER. Cierra #39363. #39384 (Kseniia Sumarokova). - Se corrigió la finalización de WriteBuffer al cancelar
insert into function(en versiones anteriores podía provocarstd::terminate). #39458 (Kruglov Pavel). - Se corrige el almacenamiento de las columnas de tipo
Objecten la serialización dispersa. #39464 (Anton Popov). - Corrige la posible excepción “No se encontró la columna en el bloque” al usar proyecciones. Esto cierra #39469. #39470 (小路).
- Se corrige una excepción en una condición de carrera entre DROP e INSERT con vistas materializadas. #39477 (Azat Khuzhin).
- Un error en la biblioteca Apache Avro: se corrige una condición de carrera y un posible desbordamiento de búfer del montón en el formato Avro. Cierra #39094 Cierra #33652. #39498 (Kruglov Pavel).
- Se corrige un error poco frecuente en la lectura asíncrona (con la configuración
local_filesystem_read_method='pread_threadpool') cuandoO_DIRECTestá habilitado (mediante la configuraciónmin_bytes_to_use_direct_io). #39506 (Anton Popov). - (solo en FreeBSD) Corrige “Code: 49. DB::Exception: FunctionFactory: the function name ” is not unique. (LOGICAL_ERROR)”, observado en FreeBSD al iniciar ClickHouse. #39551 (Alexander Gololobov).
- Se corrigió un error en el argumento “maxsplit”, introducido recientemente para
splitByChar, que no funcionaba correctamente. #39552 (filimonov). - Se corrigió un error en ASOF JOIN con
enable_optimize_predicate_expression; se cierra #37813. #39556 (Vladimir C). - Se corrigió la consulta
CREATE/DROP INDEXconON CLUSTERo con una base de datosReplicatedyReplicatedMergeTree. Antes se ejecutaba en todas las réplicas (lo que provocaba errores o que la cola de DDL se quedara atascada). Corrige #39511. #39565 (Alexander Tokmakov). - Corrige el error “column not found” en push down con join, cierra #39505. #39575 (Vladimir C).
- Se corrige el alias incorrecto de
REGEXP_REPLACE. Esto corrige https://github.com/ClickHouse/ClickBench/issues/9. #39592 (Alexey Milovidov). - Se fijó el punto de origen de las window functions de decaimiento exponencial en el último valor de la ventana. Anteriormente, el decaimiento se calculaba con la fórmula
exp((t - curr_row_t) / decay_length), lo que es incorrecto cuando el límite derecho de la ventana no esCURRENT ROW. Se cambió a:exp((t - last_row_t) / decay_length). No hay cambios en los resultados para las ventanas conROWS BETWEEN (smth) AND CURRENT ROW. #39593 (Vladimir Chebotaryov). - Se corrige el desbordamiento en la división de Decimal, que puede detectarse según la escala de los operandos. #39600 (Andrey Zvonov).
- Se corrigió el funcionamiento conjunto de las configuraciones
output_format_arrow_string_as_stringyoutput_format_arrow_low_cardinality_as_dictionary. Cierra #39624. #39647 (Kruglov Pavel). - Se corrigió un error en la resolución de la base de datos predeterminada al leer tablas distribuidas. #39674 (Anton Kozlov).
- (Solo con las bases de datos Ordinary obsoletas) SELECT podría leer datos de una tabla eliminada si se usa la caché de E/S mmap, el motor de base de datos es Ordinary y se crearon tablas nuevas con el mismo nombre que tenía la tabla eliminada. Ya está corregido. #39708 (Alexander Tokmakov).
- Corrige un posible error
Invalid column type for ColumnUnique::insertRangeFrom. Expected String, got ColumnLowCardinality. Resuelve #38460. #39716 (Arthur Passos). - Los nombres de campo en la sección
metadel formato JSON se escapaban por error dos veces. Esto corrige #39693. #39747 (Alexey Milovidov). - Corrige el análisis incorrecto de índices con tuplas y el operador
IN, que podía producir un resultado incorrecto en la consulta. #39752 (Anton Popov). - Se corrige el filtrado de tablas
EmbeddedRocksDBpor clave mediante parámetros. #39757 (Antonio Andelic). - Se corrige el error
Invalid number of columns in chunk pushed to OutputPort, causado por la optimización de ARRAY JOIN. Corrige #39164. #39799 (Nikolai Kochetov). - Una solución alternativa para un error del kernel de Linux. Corrige la excepción
CANNOT_READ_ALL_DATAconlocal_filesystem_read_method=pread_threadpool. Según man, este error solo afectaba a las versiones 5.9 y 5.10 del kernel de Linux. #39800 (Anton Popov). - (Solo en NFS) Se corrigió el
mkdirdefectuoso de NFS para volúmenesroot-squashed. #39898 (Constantine Peresypkin). - Eliminar los diccionarios de las métricas de Prometheus en DETACH/DROP. #39926 (Azat Khuzhin).
- Se corrige la lectura de StorageFile con columnas virtuales. Cierra #39907. #39943 (flynn).
- Corrige el elevado uso de memoria durante los fetches. Corrige #39915. #39990 (Nikolai Kochetov).
- (funcionalidad experimental) Se corrige el fallo de
hashIdy el problema por el que no se usaba el parámetro salt. #40002 (Raúl Marín). - Los operadores
EXCEPTeINTERSECTpueden provocar un fallo cuando se utiliza una combinación específica de columnas constantes y no constantes. #40020 (Duc Canh Le). - Se corrigieron los errores “Part directory doesn’t exist” y “
tmp_<part_name>… No such file or directory” durante unINSERTdemasiado lento o una operación de merge/mutación demasiado prolongada. También se corrigió un problema que podía hacer que algunas entradas de la cola de replicación se quedaran bloqueadas sin ningún error ni advertencia en los logs si había fallado un intento previo de obtener una parte, pero no se había limpiado el directoriotmp-fetch_<part_name>. #40031 (Alexander Tokmakov). - Corrige casos poco frecuentes en el análisis sintáctico de arrays de tuplas en el formato
Values. #40034 (Anton Popov). - Corrige la conversión en el formato ArrowColumn de Dictionary(X) & Dictionary(Nullable(X)) a ClickHouse LowCardinality(X) & LowCardinality(Nullable(X)), respectivamente. #40037 (Arthur Passos).
- Corregir un posible interbloqueo al escribir en S3 durante un fallo al programar tareas. #40070 (Maksim Kita).
- Se corrigió un error en collectFilesToSkip() al añadir la extensión de archivo correcta (.idx o idx2) para los índices que debían recalcularse, evitando enlaces físicos erróneos. Corregido en #39896. #40095 (Jianmei Zhang).
- Una corrección para la resolución inversa de DNS. #40134 (Arthur Passos).
- Se corrigió el resultado inesperado de
arrayDifferencede `Array(UInt32). #40211 (Duc Canh Le).
Lanzamiento de ClickHouse 22.7, 2022-07-21. Presentación, Vídeo
Notas de actualización
- Se habilita la configuración
enable_positional_argumentsde forma predeterminada. Permite consultas comoSELECT ... ORDER BY 1, 2, donde 1 y 2 son referencias a la cláusulaSELECT. Si necesita recuperar el comportamiento anterior, desactive esta configuración. #38204 (Alexey Milovidov). - Se deshabilita
format_csv_allow_single_quotesde forma predeterminada. Consulte #37096. (Kruglov Pavel). - El motor de database
Ordinaryy la sintaxis antigua de definición de almacenamiento para las tablas*MergeTreeestán obsoletos. De forma predeterminada, no es posible crear nuevas databases con el motorOrdinary. Si la databasesystemtiene el motorOrdinary, se convertirá automáticamente aAtomical iniciar el server. Existen configuraciones para mantener el comportamiento anterior (allow_deprecated_database_ordinaryyallow_deprecated_syntax_for_merge_tree), pero pueden eliminarse en futuras versiones. #38335 (Alexander Tokmakov). - Se fuerza de forma predeterminada la reescritura de
comma joinainner(se establece el valor predeterminadocross_to_inner_join_rewrite = 2). Para recuperar el comportamiento anterior, establezcacross_to_inner_join_rewrite = 1. #39326 (Vladimir C). Si encuentra alguna incompatibilidad, puede volver a cambiar esta configuración.
nueva funcionalidad
- Se admiten expresiones con funciones de ventana. Cierra #19857. #37848 (Dmitry Novik).
- Se añadió un nuevo algoritmo de join
directpara las tablasEmbeddedRocksDB; véase #33582. #35363 (Vladimir C). - Se añadió el algoritmo de join por mezcla con ordenación total. #35796 (Vladimir C).
- Implementación del motor de tabla NATS, que permite publicar y suscribirse a NATS. Cierra #32388. #37171 (tchepavel). (Kseniia Sumarokova)
- Implementa la función de tabla
mongodb. Permite escribir en el almacenamiento / función de tablaMongoDB. #37213 (aaapetrenko). (Kseniia Sumarokova) - Se añade el formato de salida
SQLInsert. Cierra #38441. #38477 (Kruglov Pavel). - Se introdujo el ajuste
additional_table_filters. Con este ajuste, puede especificar una condición de filtrado adicional para una tabla, que se aplicará directamente después de la lectura. Ejemplo:select number, x, y from (select number from system.numbers limit 5) f any left join (select x, y from table_1) s on f.number = s.x settings additional_table_filters={'system.numbers : 'number != 3', 'table_1' : 'x != 2'}. Se introdujo el ajusteadditional_result_filter, que especifica una condición de filtrado adicional para el resultado de la consulta. Cierra #37918. #38475 (Nikolai Kochetov). - Se añade la configuración
compatibilityy la tabla del sistemasystem.settings_changes, que contiene información sobre los cambios en la configuración entre versiones de ClickHouse. Cierra #35972. #38957 (Kruglov Pavel). - Añadidas las funciones
translate(string, from_string, to_string)ytranslateUTF8(string, from_string, to_string). Traducen algunos caracteres a otros. #38935 (Nikolay Degterinsky). - Se admite la función
parseTimeDelta. Puede usarse de la siguiente manera:;-+,:se pueden usar como separadores, por ejemplo,1yr-2mo,2m:6s:SELECT parseTimeDelta('1yr-2mo-4w + 12 days, 3 hours : 1 minute ; 33 seconds'). #39071 (jiahui-97). - Se añadió la consulta
CREATE TABLE ... EMPTY AS SELECT. Deduce automáticamente la estructura de la tabla a partir de la consulta SELECT, pero no llena la tabla después de crearla. Resuelve #38049. #38272 (Alexander Tokmakov). - Se añadieron opciones para limitar las operaciones de E/S con almacenamiento remoto:
max_remote_read_network_bandwidth_for_serverymax_remote_write_network_bandwidth_for_server. #39095 (Sergei Trifonov). - Añade la configuración
group_by_use_nullspara que las columnas clave de agregación admitan NULL en el caso de ROLLUP, CUBE y GROUPING SETS. Cierra #37359. #38642 (Dmitry Novik). - Se añadió la posibilidad de especificar el nivel de compresión durante la exportación de datos. #38907 (Nikolay Degterinsky).
- Se añadió una opción para exigir grants explícitos para realizar
SELECTen la base de datossystem. Detalles: #38970 (Vitaly Baranov). - Las funciones
multiMatchAny,multiMatchAnyIndex,multiMatchAllIndicesy sus variantes difusas ahora aceptan un argumento de array de patrones no constante. #38485 (Robert Schulze). La función SQLmultiSearchAllPositionsahora acepta argumentos de búsqueda no constantes. #39167 (Robert Schulze). - Añade la opción de configuración
zstd_window_log_maxpara establecer el uso máximo de memoria durante la decodificación zstd al importar archivos externos. Cierra #35693. #37015 (wuxiaobai24). - Añade la configuración
send_logs_source_regexp. Envía los logs de texto del servidor cuyo nombre de origen coincida con la expresión regular especificada. Vacío significa todos los orígenes. #39161 (Amos Bird). - Soporte para
ALTERen tablasHive. #38214 (lgbo). - Se admite la función
isNullable. Esta función comprueba si su argumento es de tipo Nullable y devuelve 1 o 0. Cierra #38611. #38841 (lokax). - Se añadieron funciones para codificar y decodificar en base58. #38159 (Andrey Zvonov).
- Añadir visualizaciones de gráficos a la UI de Play. #38197 (Alexey Milovidov).
- Se añadieron funciones para calcular la distancia L2 al cuadrado y la norma tanto para arrays como para tuplas. #38545 (Julian Gilyadov).
- Se añade la posibilidad de pasar encabezados HTTP a la función de tabla / almacenamiento
urlmediante SQL. Cierra #37897. #38176 (Kseniia Sumarokova). - Añadir el binario
clickhouse-diagnosticsa los paquetes. #38647 (Mikhail f. Shiryaev).
Funcionalidad experimental
- Añade la nueva configuración
implicit_transactionpara ejecutar consultas independientes dentro de una transacción. Se encarga automáticamente tanto de la creación como del cierre de la transacción (mediante COMMIT si la consulta se ejecuta correctamente o ROLLBACK si no es así). #38344 (Raúl Marín).
Mejora del rendimiento
- Optimización de
distinctpara columnas ordenadas. Use la transformación especializada dedistinctcuando el flujo de entrada esté ordenado por la(s) columna(s) dedistinct. La optimización puede aplicarse a pre-distinct, distinct final o a ambos. Implementación inicial por @dimarub2000. #37803 (Igor Nikonov). - Mejora el rendimiento de
ORDER BY, las fusiones deMergeTreey las funciones de ventana gracias al uso de la versión por lotes deBinaryHeap. #38022 (Maksim Kita). - Mayor paralelismo en la ejecución de consultas con
FINAL#36396 (Nikita Taranov). - Se corrige una regresión importante en el rendimiento de
joinque se introdujo en #35616. Llama la atención que consultasjoincomunes, como las consultas ssb, hayan sido 10 veces más lentas durante casi 3 meses sin que nadie se quejara. #38052 (Amos Bird). - Se migra de la biblioteca Intel hyperscan a vectorscan, lo que acelera muchas operaciones de coincidencia de cadenas en plataformas no x86. #38171 (Robert Schulze).
- Aumento del paralelismo en los pasos del plan de consulta ejecutados después de la agregación. #38295 (Nikita Taranov).
- Mejora el rendimiento de las inserciones en columnas de tipo
JSON. #38320 (Anton Popov). - Se optimizaron la inserción y las búsquedas en la HashTable. #38413 (Nikita Taranov).
- Se corrige la degradación del rendimiento de #32493. #38417 (Alexey Milovidov).
- Mejora el rendimiento de los
joincon columnas numéricas mediante instrucciones SIMD. #37235 (zzachimed). #38565 (Maksim Kita). - Las funciones de norma y distancia para arrays se han acelerado entre 1,2 y 2 veces. #38740 (Alexander Gololobov).
- Se añade
copyOverlap32Shuffleoptimizado con AVX-512 VBMI para la descompresión de LZ4. En otras palabras, mejora el rendimiento de la descompresión de LZ4. #37891 (Guo Wangyang). ORDER BY (a, b)ofrecerá las mismas ventajas queORDER BY a, b. #38873 (Igor Nikonov).- Alinear los saltos dentro de un límite de 32B para que el benchmark sea más estable. #38988 (Guo Wangyang). Mejora el rendimiento entre un 1 y un 2 % de media en Intel.
- Las UDF ejecutables, los diccionarios ejecutables y las tablas ejecutables evitarán perder un segundo mientras esperan a que termine el subproceso. #38929 (Constantine Peresypkin).
- Se optimizan los accesos a la tabla
system.stack_tracesi no se seleccionan todas las columnas. #39177 (Azat Khuzhin). - Mejora del rendimiento de isNullable/isConstant/isNull/isNotNull para el argumento LowCardinality. #39192 (Kruglov Pavel).
- Se optimizó el procesamiento de ORDER BY en las funciones de ventana. #34632 (Vladimir Chebotarev).
- La tabla
system.asynchronous_metric_logestá mejor optimizada en cuanto al espacio de almacenamiento. Esto corrige #38134. Consulte el video de YouTube. #38428 (Alexey Milovidov).
Mejora
- Se admite la sintaxis estándar de SQL para CREATE INDEX y DROP INDEX. #35166 (Jianmei Zhang).
- Enviar eventos de perfil para consultas INSERT (anteriormente, solo se admitía SELECT). #37391 (Azat Khuzhin).
- Implementación de la agregación in order (
optimize_aggregation_in_order) para proyecciones totalmente materializadas. #37469 (Azat Khuzhin). - Se eliminó la llamada a un subproceso para la inicialización de Kerberos. Se añadió una nueva prueba de integración. Cierra #27651. #38105 (Roman Vasin).
-
- Añadir la configuración
multiple_joins_try_to_keep_original_namespara no reescribir el nombre del identificador al reescribir múltiples JOIN, cierra #34697. #38149 (Vladimir C).
- Añadir la configuración
- Se ha mejorado la experiencia de usuario del visualizador de trazas. #38169 (Sergei Trifonov).
- Se habilita la recopilación de trazas de pila y el perfilador de consultas para AArch64. #38181 (Maksim Kita).
- No omitir los enlaces simbólicos del directorio
user_defineddurante la carga de funciones SQL definidas por el usuario. Cierra #38042. #38184 (Maksim Kita). - Se agregó la limpieza en segundo plano de los subdirectorios en
store/. En algunos casos,clickhouse-serverpodía dejar subdirectorios residuales enstore/(por ejemplo, al intentar crear una tabla sin éxito) y esos directorios nunca se eliminaban. Corrige #33710. #38265 (Alexander Tokmakov). - Se añade la consulta
DESCRIBE CACHEpara mostrar la configuración de la caché desde la configuración. Se añade la consultaSHOW CACHESpara mostrar la lista de cachés del sistema de archivos disponibles. #38279 (Kseniia Sumarokova). - Se añade una verificación de acceso para
system drop filesystem cache. Se admite ON CLUSTER. #38319 (Kseniia Sumarokova). - Se corrige la incompatibilidad del motor de base de datos PostgreSQL al actualizar de la versión 21.3 a la 22.3. Cierra #36659. #38369 (Kseniia Sumarokova).
filesystemAvailabley funciones similares ahora funcionan enclickhouse-local. Esto resuelve #38423. #38424 (Alexey Milovidov).- Se añade la función
revision. #38555 (Azat Khuzhin). - Corregido el uso de GCS a través de un túnel proxy. #38726 (Azat Khuzhin).
- Soporte para
\i fileen clickhouse client / local (similar a psql \i). #38813 (Kseniia Sumarokova). - Nueva opción
optimize = 1enEXPLAIN AST. Si está activada, muestra el AST después de su reescritura; de lo contrario, el AST de la consulta original. Desactivada de forma predeterminada. #38910 (Igor Nikonov). - Se permite la coma final en la lista de columnas. Cierra #38425. #38440 (chen).
- Corrección de errores y mejoras de rendimiento del método JOIN
parallel_hash. #37648 (Vladimir C). - Se admite la transferencia RPC segura de Hadoop (hadoop.rpc.protection=privacy y hadoop.rpc.protection=integrity). #37852 (Peng Liu).
- Se añade soporte para el tipo
structenStorageHive. #38118 (lgbo). - Los objetos individuales de S3 ahora se eliminan con
RemoveObjectRequest. Se implementó compatibilidad con GCP, que no permitía usarremoveFileIfExists, lo que en la práctica inutilizaba aproximadamente la mitad de la funcionalidad deremove. Detección automática de la API de S3DeleteObjects, que GCS no admite. Esto permitirá usar GCS sin tener que especificar explícitamentesupport_batch_delete=0en la configuración. #37882 (Vladimir Chebotarev). - Exponer datos básicos de monitoreo de ClickHouse Keeper (a través de ProfileEvents y CurrentMetrics). #38072 (lingpeng0314).
- Se admite la opción
auto_closepara la conexión del motor PostgreSQL. Cierra #31486. #38363 (Kseniia Sumarokova). - Permitir el modificador
NULLen la declaración de columnas de las funciones de tabla. #38816 (Kruglov Pavel). - Desactive
mutations_finalizing_taskantes de apagar para evitar errores benignosTABLE_IS_READ_ONLYdurante el apagado. #38851 (Raúl Marín). - Se elimina la espera innecesaria de las consultas SELECT tras las consultas ALTER cuando hay consultas INSERT si usa bases de datos Ordinary obsoletas. #38864 (Azat Khuzhin).
- Nueva opción
rewriteenEXPLAIN AST. Si está habilitada, muestra el AST tras la reescritura; de lo contrario, muestra el AST de la consulta original. Deshabilitada de forma predeterminada. #38910 (Igor Nikonov). - Dejar de reportar las excepciones de Zookeeper “Node exists” en system.errors cuando son esperadas. #38961 (Raúl Marín).
clickhouse-keeper: se añade compatibilidad con el cálculo y la verificación de resúmenes en tiempo real. Está desactivado por defecto. #37555 (Antonio Andelic).- Se permite especificar globs
* or {expr1, expr2, expr3}dentro de una clave para la herramientaclickhouse-extract-from-config. #38966 (Nikita Mikhaylov). - clearOldLogs: No notificar KEEPER_EXCEPTION en eliminaciones concurrentes. #39016 (Raúl Marín).
- mejora de clickhouse-keeper: persistir la metainformación sobre los servidores de Keeper en disco. #39069 (Antonio Andelic). Esto facilitará la operación si apaga o reinicia todos los nodos de Keeper al mismo tiempo.
- Continuar sin lanzar una excepción cuando se agote el espacio en disco al usar la caché del sistema de archivos. #39106 (Kseniia Sumarokova).
- Manejo de señales SIGTERM en k8s. #39130 (Timur Solodovnikov).
- Añadir la columna
merge_algorithm(Undecided, Horizontal, Vertical) a system.part_log. #39181 (Azat Khuzhin). - No incrementar un contador en
system.errorscuando el disco no sea giratorio. #39216 (Raúl Marín). - La métrica
result_bytespara las consultasINSERTensystem.query_logmuestra el número de bytes insertados. Anteriormente, el valor era incorrecto y almacenaba el mismo valor queresult_rows. #39225 (Ilya Yatsishin). - La métrica de uso de CPU en clickhouse-client se mostrará de forma más clara. Corrige #38756. #39280 (Sergei Trifonov).
- Se vuelve a lanzar la excepción durante la inicialización de la caché del sistema de archivos al iniciar el servidor; se mejora el mensaje de error. #39386 (Kseniia Sumarokova).
- OpenTelemetry ahora recopila trazas sin spans de Processors de forma predeterminada (hay demasiados). Para habilitar la recopilación de spans de Processors, use la configuración
opentelemetry_trace_processors. #39170 (Ilya Yatsishin). - Funciones
multiMatch[Fuzzy](AllIndices/Any/AnyIndex)- no generan un error lógico si el argumento needle está vacío. #39012 (Robert Schulze). - Permite declarar la cola de
RabbitMQsin los argumentos predeterminadosx-max-lengthyx-overflow. #39259 (rnbondarenko).
mejora en compilación, pruebas y empaquetado
- Aplicación de anotaciones de Clang Thread Safety Analysis (TSA) a ClickHouse. #38068 (Robert Schulze).
- Adaptación del script de instalación universal para FreeBSD. #39302 (Alexey Milovidov).
- Preparación para la compilación en la plataforma
s390x. #39193 (Harry Lee). - Corrección de un error en la biblioteca
jemalloc. #38757 (Azat Khuzhin). - El benchmark de hardware ahora admite la carga automática de resultados. #38427 (Alexey Milovidov).
- La tabla del sistema “system.licenses” ahora se completa correctamente en Mac (Darwin). #38294 (Robert Schulze).
- Cambio de los paquetes
all|noarchpara que dependan de la arquitectura - Corrección de parte de la documentación al respecto - Publicación de paquetes aarch64|arm64 en Artifactory y en los recursos de la versión - Corrige #36443. #38580 (Mikhail f. Shiryaev).
Corrección de errores (fallo visible para el usuario en una versión oficial estable o preestable)
- Se corrige el redondeo de
Decimal128/Decimal256con una escala de más de 19 dígitos. #38027 (Igor Nikonov). - Se corrigió un bloqueo causado por una condición de carrera en el almacenamiento
Hive(motor de tabla de integración). #38887 (lgbo). - Se corrige un fallo al ejecutar GRANT ALL ON . con ON CLUSTER. Se introdujo en https://github.com/ClickHouse/ClickHouse/pull/35767. Esto cierra #38618. #38674 (Vitaly Baranov).
- Corrige la expansión de glob en el caso de las formas
{0..10}. Soluciona #38498. La implementación actual es similar a lo que hace el shell, como mencionó @rschu1ze aquí. #38502 (Heena Bansal). - Se corrige un fallo de
mapUpdateymapFilteral usarlas con un argumentomapconstante. Cierra #38547. #38553 (hexiaoting). - Corrige la información sobre la monotonicidad de
toHourpara la optimización de consultas, lo que puede dar lugar a resultados incorrectos en las consultas (análisis de índices incorrecto). Esto corrige #38333. #38675 (Amos Bird). - Se corrigió la comprobación de si el almacenamiento S3 admite escrituras en paralelo. Esto hacía que las escrituras en paralelo en S3 no funcionaran. #38792 (chen).
- Corregir las lecturas con seek en S3 con un búfer de lectura en paralelo. (Afectaba al uso de memoria durante la consulta). Cierra #38258. #38802 (Kseniia Sumarokova).
- Se actualiza
simdjson. Esto corrige #38621: un desbordamiento de búfer en equipos con las CPU Intel más recientes con AVX-512 VBMI. #38838 (Alexey Milovidov). - Se corrigió un posible error lógico en las fusiones verticales. #38859 (Maksim Kita).
- Se corrigió el perfil de configuración con la unidad en segundos. #38896 (Raúl Marín).
- Corrige la poda incorrecta de particiones cuando hay una clave de partición Nullable. Nota: lo más probable es que no uses claves de partición Nullable; es una funcionalidad poco habitual que no deberías usar. Las claves Nullable no tienen sentido y esta funcionalidad solo es necesaria para algunos casos de uso extravagantes. Esto corrige #38941. #38946 (Amos Bird).
- Se mejora
fsync_part_directorypara fetches. #38993 (Azat Khuzhin). - Soluciona un posible interbloqueo en
OvercommitTracker. Corrige #37794. #39030 (Dmitry Novik). - Se corrige un error en la caché del sistema de archivos que podía producirse en ciertos casos límite, cuando la capacidad de la caché alcanzaba su límite. Cierra #39066. #39070 (Kseniia Sumarokova).
- Corrige algunos casos límite en la interpretación de los argumentos de las expresiones de ventana. Corrige #38538 Permite usar funciones de orden superior en las expresiones de ventana. #39112 (Dmitry Novik).
- Mantiene el tipo
LowCardinalityen la funcióntuple. Anteriormente, se descartaba el tipoLowCardinalityy los elementos de la tupla creada pasaban a tener el tipo subyacente deLowCardinality. #39113 (Anton Popov). - Se corrigió el error
Block structure mismatch, que podía producirse al hacer INSERT en una tabla con MATERIALIZED VIEW adjunta y la opciónextremes = 1habilitada. Cierra #29759 y #38729. #39125 (Nikolai Kochetov). - Corrige un resultado inesperado de la consulta cuando tanto
optimize_trivial_count_querycomoempty_result_for_aggregation_by_empty_setse establecen en true. Esto corrige #39140. #39155 (Amos Bird). - Se corrigió el error
Not found column Type in blocken consultas conPREWHEREy optimizaciones de lectura en orden. #39157 (Yakov Olkhovskiy). - Corregida una condición de carrera extremadamente rara durante la creación de enlaces físicos en el sistema de archivos remoto. La única forma de reproducirla es mediante la ejecución concurrente de copias de seguridad. #39190 (alesapin).
- (la replicación zero-copy es una funcionalidad experimental que no debe usarse en producción) Se corrige la recuperación de una parte en memoria con
allow_remote_fs_zero_copy_replication. #39214 (Azat Khuzhin). - (MaterializedPostgreSQL - característica experimental). Se corrige un fallo de segmentación en el motor de base de datos MaterializedPostgreSQL, que podía producirse si ocurría alguna excepción durante la inicialización de la replicación. Cierra #36939. #39272 (Kseniia Sumarokova).
- Corrige la recuperación incorrecta de los metadatos de la tabla desde el motor de base de datos PostgreSQL. Cierra #33502. #39283 (Kseniia Sumarokova).
- Se corrige la excepción de proyección cuando las claves de agregación están encapsuladas en otras funciones. Esto corrige #37151. #37155 (Amos Bird).
- Se corrige un posible error lógico
... with argument with type Nothing and default implementation for Nothing is expected to return result with type Nothing, got ...en algunas funciones. Cierra: #37610 Cierra: #37741. #37759 (Kruglov Pavel). - Se corrige el orden incorrecto de las columnas en las subconsultas de UNION (en caso de columnas duplicadas en las subselecciones, puede producirse un resultado incorrecto). #37887 (Azat Khuzhin).
- Se corrige el funcionamiento incorrecto de MODIFY ALTER Column cuando los nombres de columna contienen puntos. Cierra #37907. #37971 (Kruglov Pavel).
- Se ha corregido la lectura de columnas dispersas de tablas
MergeTreeque almacenan sus datos en S3. #37978 (Anton Popov). - Corrige un posible fallo de
Distributedasync insert al eliminar una réplica de la configuración. #38029 (Nikolai Kochetov). - Se corrigió “Faltan columnas” para GLOBAL JOIN con CTE sin alias. #38056 (Azat Khuzhin).
- Reescribir las funciones de tupla como literales en el modo de compatibilidad retroactiva. #38096 (Anton Kozlov).
- Se corrige la reserva redundante de memoria para el bloque de salida durante
ORDER BY. #38127 (iyupeng). - Se corrige un posible error lógico
Bad cast from type DB::IColumn* to DB::ColumnNullable*en funciones de mapeo de arrays. Cierra #38006. #38132 (Kruglov Pavel). - Se corrige una colisión temporal de nombres en partial merge join, se cierra #37928. #38135 (Vladimir C).
- Un pequeño problema con consultas como
CREATE TABLE nested_name_tuples (aTuple(x String, y Tuple(i Int32, j String))) ENGINE = Memory;#38136 (lgbo). - Se corrige un error en las funciones anidadas con cortocircuito que provocaba la ejecución de argumentos incluso cuando la condición era falsa. Cierra #38040. #38173 (Kruglov Pavel).
- (Window View es una función experimental) Se corrige LOGICAL_ERROR en WINDOW VIEW con una estructura incorrecta. #38205 (Azat Khuzhin).
- Actualizar el submódulo librdkafka para corregir un fallo cuando se configura un callback de actualización de OAUTHBEARER. #38225 (Rafael Acevedo).
- Se corrigió un bloqueo de INSERT en Distributed debido a ProfileEvents. #38307 (Azat Khuzhin).
- Se corrigen los reintentos en el motor PostgreSQL. #38310 (Kseniia Sumarokova).
- Se corrige una optimización en PartialSortingTransform (SIGSEGV y posible resultado incorrecto). #38324 (Azat Khuzhin).
- Se corrige RabbitMQ con formatos basados en PeekableReadBuffer. Cierra #38061. #38356 (Kseniia Sumarokova).
- MaterializedPostgreSQL: característica experimental. Corrige un posible error
Invalid number of rows in Chunken MaterializedPostgreSQL. Cierra #37323. #38360 (Kseniia Sumarokova). - Se corrige la configuración de RabbitMQ con el ajuste de cadena de conexión. Cierra #36531. #38365 (Kseniia Sumarokova).
- Se corrige el motor PostgreSQL, que no usaba el esquema de PostgreSQL al obtener el tamaño de la dimensión de Array. Cierra #36755. Cierra #36772. #38366 (Kseniia Sumarokova).
- Corrige posibles resultados incorrectos en consultas distribuidas con
DISTINCTyLIMIT. Corrige #38282. #38371 (Anton Popov). - Corrige resultados incorrectos de countSubstrings() y position() en patrones con bytes nulos. #38589 (Robert Schulze).
- Ahora es posible iniciar un clickhouse-server y hacer attach/detach de tablas, incluso de tablas con valores incorrectos en la representación de IPv4/IPv6. Corrección definitiva del problema #35156. #38590 (alesapin).
- La función
rankCorrfuncionará correctamente aunque algunos argumentos sean NaN. Esto corrige #38396. #38722 (Alexey Milovidov). - Se corrige
parallel_view_processing=1conoptimize_trivial_insert_select=1. Se corrigemax_insert_threadsal insertar en vistas. #38731 (Azat Khuzhin). - Se corrige un error de uso de memoria ya liberada en funciones de agregación con el combinador
Map, que provocaba resultados incorrectos. #38748 (Azat Khuzhin).
Lanzamiento de ClickHouse 22.6, 2022-06-16. Presentación, Vídeo
Cambio incompatible con versiones anteriores
- Se elimina la compatibilidad con los literales numéricos octales en SQL. En versiones anteriores, se interpretaban como Float64. #37765 (Yakov Olkhovskiy).
- Cambia la forma de interpretar las configuraciones que usan
secondscomo tipo para admitir valores de coma flotante (por ejemplo,max_execution_time=0.5). Los valores Infinity o NaN provocarán una excepción. #37187 (Raúl Marín). - Se ha cambiado el formato de la serialización binaria de las columnas del tipo experimental
Object. El nuevo formato es más fácil de implementar en clientes de terceros. #37482 (Anton Popov). - La configuración
output_format_json_named_tuples_as_objectsahora está activada de forma predeterminada. Permite serializar tuplas con nombre como objetos JSON en formatos JSON. #37756 (Anton Popov). - Los patrones LIKE con un símbolo de escape al final (’') ya no están permitidos (como exige el estándar SQL). #37764 (Robert Schulze).
- Si ejecuta distintas versiones de ClickHouse en un cluster con CPU AArch64, o mezcla AArch64 y amd64 en un cluster, y usa consultas distribuidas con GROUP BY sobre varias claves de tipo de tamaño fijo que caben en 256 bits pero no en 64 bits, y el tamaño del resultado es enorme, los datos no se agregarán completamente en el resultado de estas consultas durante la actualización. Solución temporal: actualice con tiempo de inactividad en lugar de realizar una actualización gradual.
funcionalidad
- Añade la función
GROUPING. Permite desambiguar los registros en las consultas conROLLUP,CUBEoGROUPING SETS. Cierra #19426. #37163 (Dmitry Novik). - Un nuevo algoritmo
codecFPC para la compresión de datos de punto flotante. #37553 (Mikhail Guzov). - Se añaden nuevos formatos JSON columnares:
JSONColumns,JSONCompactColumns,JSONColumnsWithMetadata. Cierra #36338 Cierra #34509. #36975 (Kruglov Pavel). - Se agregó una herramienta para visualizar trazas de OpenTelemetry basada en d3js. #37810 (Sergei Trifonov).
- Se admiten INSERTs en la tabla
system.zookeeper. Cierra #22130. #37596 (Han Fei). - Admite argumentos
patternno constantes para las funcionesLIKE,ILIKEymatch. #37251 (Robert Schulze). - Las funciones ejecutables definidas por el usuario ahora admiten parámetros. Ejemplo:
SELECT test_function(parameters)(arguments). Se cierra #37578. #37720 (Maksim Kita). - Añadir la columna
merge_reasona la tablasystem.part_log. #36912 (Sema Checherinda). - Se añade compatibilidad con Maps y Records en formato Avro. Se añade la nueva configuración
input_format_avro_null_as_default, que permite insertar null como valor predeterminado en formato Avro. Cierra #18925 Cierra #37378 Cierra #32899. #37525 (Kruglov Pavel). - Se añade la herramienta
clickhouse-diskspara inspeccionar y trabajar con sistemas de archivos virtuales configurados para ClickHouse. #36060 (Artyom Yurkov). - Añade funciones para aristas unidireccionales de H3. #36843 (Bharat Nallan).
- Se añadió soporte para calcular hashids a partir de enteros sin signo. #37013 (Michael Nutt).
- Se permite especificar explícitamente
SALTparaCREATE USER <user> IDENTIFIED WITH sha256_hash. #37377 (Yakov Olkhovskiy). - Se añaden dos nuevas opciones de configuración
input_format_csv_skip_first_lines/input_format_tsv_skip_first_linespara permitir omitir un número determinado de líneas al inicio del archivo en formatos CSV/TSV. #37537 (Kruglov Pavel). - La función
showCertificatemuestra el certificado SSL actual del servidor. #37540 (Yakov Olkhovskiy). - Se admite un origen HTTP para Dictionaries en named collections. #37581 (Yakov Olkhovskiy).
- Se agregó una nueva window function
nonNegativeDerivative(metric_column, timestamp_column[, INTERVAL x SECOND]). #37628 (Andrey Zvonov). - Se implementó la posibilidad de cambiar el comentario de las tablas
ReplicatedMergeTree. #37416 (Vasily Nemkov). - Se añadió la consulta
SYSTEM UNFREEZE, que elimina toda la copia de seguridad independientemente de que la tabla correspondiente se haya eliminado o no. #36424 (Vadim Volodin).
Funcionalidad experimental
- Habilita
POPULATEparaWINDOW VIEW. #36945 (vxider). - Se añade compatibilidad con
ALTER TABLE ... MODIFY QUERYparaWINDOW VIEW. #37188 (vxider). - Este PR cambia el comportamiento de la sintaxis
ENGINEenWINDOW VIEWpara que sea igual que enMATERIALIZED VIEW. #37214 (vxider).
Mejora del rendimiento
- Se añadieron numerosas optimizaciones para ARM NEON #38093(Daniel Kutenin), (Alexandra Pilipyuk) Nota: si ejecuta distintas versiones de ClickHouse en un clúster con CPU ARM y utiliza consultas distribuidas con GROUP BY de varias claves de tamaño fijo que caben en 256 bits, pero no en 64 bits, el resultado de la consulta de agregación será incorrecto durante la actualización. Solución alternativa: actualice con tiempo de inactividad en lugar de realizar una actualización gradual.
- Mejora el rendimiento y el uso de memoria al hacer
selectde un subconjunto de columnas en los formatos Native, Protobuf, CapnProto, JSONEachRow, TSKV y en todos los formatos con sufijos WithNames/WithNamesAndTypes. Anteriormente, al seleccionar solo un subconjunto de columnas de archivos en estos formatos, se leían todas las columnas y se almacenaban en memoria. Ahora solo se leen las columnas necesarias. Este PR habilita la opcióninput_format_skip_unknown_fieldsde forma predeterminada, ya que, de lo contrario, al hacerselectde un subconjunto de columnas, se lanzará una excepción. #37192 (Kruglov Pavel). - Ahora se pueden aplicar más filtros en el join. #37472 (Amos Bird).
- Cargar marcas solo para las columnas necesarias al leer partes en formato wide. #36879 (Anton Kozlov).
- Mejora del rendimiento de la agregación cuando se usan columnas dispersas (que pueden habilitarse con la configuración experimental
ratio_of_defaults_for_sparse_serializationen tablasMergeTree) como argumentos de funciones de agregado. #37617 (Anton Popov). - Optimizada la función
COALESCEcon dos argumentos. #37666 (Anton Popov). - Sustituir
multiIfporifcuandomultiIftenga solo una condición, ya que la funciónifofrece mejor rendimiento. #37695 (Anton Popov). - Mejora el rendimiento de las funciones
dictGetDescendantsydictGetChildren: crea un índice jerárquico temporal de padre a hijos por consulta, en lugar de por cada llamada a función dentro de la consulta. Permite especificarBIDIRECTIONALpara atributosHIERARHICAL; el diccionario mantendrá en memoria el índice de padre a hijos, de modo que las funcionesdictGetDescendantsydictGetChildrenno creen un índice temporal por consulta. Cierra #32481. #37148 (Maksim Kita). - La destrucción del estado de los agregados ahora puede enviarse a un pool de hilos. Para las consultas con LIMIT y un estado grande, esto supone una mejora significativa del rendimiento; por ejemplo,
select uniq(number) from numbers_mt(1e7) group by number limit 100pasó a ser aproximadamente 2,5 veces más rápida. #37855 (Nikita Taranov). - Mejora del rendimiento al ordenar por una sola columna. #37195 (Maksim Kita).
- Mejora del rendimiento de la ordenación por una sola columna mediante especializaciones de la cola de ordenación. #37990 (Maksim Kita).
- Mejora del rendimiento de 2x a 4x en las funciones de norma y distancia de arrays. #37394 (Alexander Gololobov).
- Mejora el rendimiento de las funciones de comparación numérica mediante despacho dinámico. #37399 (Maksim Kita).
- Mejora el rendimiento de ORDER BY con LIMIT. #37481 (Maksim Kita).
- Mejora el rendimiento de la función
hasAllcon la infraestructura de despacho dinámico. #37484 (Maksim Kita). - Mejora del rendimiento de las funciones
greatCircleAngle,greatCircleDistanceygeoDistance. #37524 (Maksim Kita). - Mejora el rendimiento de
inserten MergeTree si hay varias columnas en ORDER BY. #35762 (Maksim Kita). - Se corrige el uso excesivo de CPU en segundo plano cuando hay muchas tablas. #38028 (Maksim Kita).
- Mejora del rendimiento de la función
notmediante despacho dinámico. #38058 (Maksim Kita). - Se optimizó el almacenamiento en caché interno de los patrones de re2 que aparecen, por ejemplo, en las funciones LIKE y MATCH. #37544 (Robert Schulze).
- Mejora de la función todo en uno para generar máscaras de bits de filtro con instrucciones AVX-512. #37588 (yaqi-zhao).
- Se aplica el método de lectura
threadpoolal motor de integración de Hive. Esto acelerará significativamente la lectura. #36328 (李扬). - Cuando todas las columnas que se van a leer son claves de partición, construye las columnas a partir del número de fila del archivo sin leer realmente el archivo de Hive. #37103 (lgbo).
- Compatibilidad con varios discos para la caché de archivos de Hive. #37279 (lgbo).
- Limitar el uso máximo de caché por consulta puede prevenir eficazmente la contaminación del pool de caché. Incidencias relacionadas. #37859 (Han Shukai).
- Actualmente, ClickHouse descarga directamente todos los archivos remotos a la caché local (incluso si solo se leen una vez), lo que con frecuencia provoca E/S en el disco local. En algunos casos, estas E/S pueden no ser necesarias y pueden causar fácilmente una degradación del rendimiento. Como se muestra en la figura siguiente, al ejecutar SSB Q1-Q4, el uso de la caché ha provocado una degradación del rendimiento. #37516 (Han Shukai).
- Permite filtrar la lista de archivos mediante columnas virtuales como
_filey_pathal leer desde S3. Relacionado con #37174, #23494. #37356 (Amos Bird). - En la función: CompressedWriteBuffer::nextImpl(), hay un paso innecesario de copia en escritura que ocurría con frecuencia durante la inserción de datos. A continuación se muestra la diferencia con este parche: - Antes: 1. Comprimir “working_buffer” en “compressed_buffer” 2. copiar al escribir en “out” - Después: Comprimir directamente “working_buffer” en “out”. #37242 (jasperzhu).
Mejora
- Se admiten tipos con valores predeterminados no estándar en ROLLUP, CUBE y GROUPING SETS. Cierra #37360. #37667 (Dmitry Novik).
- Corrige la recopilación de stack traces en ARM. Cierra #37044. Cierra #15638. #37797 (Maksim Kita).
- El cliente probará cada dirección IP devuelta por la resolución DNS hasta establecer correctamente la conexión. #37273 (Yakov Olkhovskiy).
- Permite usar el tipo String en lugar de Binary en los formatos Arrow/Parquet/ORC. Este PR introduce 3 nuevos ajustes para ello:
output_format_arrow_string_as_string,output_format_parquet_string_as_string,output_format_orc_string_as_string. El valor predeterminado de todos ellos esfalse. #37327 (Kruglov Pavel). - Aplicar la configuración
input_format_max_rows_to_read_for_schema_inferenceal total de filas leídas de todos los archivos incluidos en los globs. Anteriormente, la configuracióninput_format_max_rows_to_read_for_schema_inferencese aplicaba por separado a cada archivo del glob y, en caso de haber una gran cantidad de valores nulos, podíamos leer las primerasinput_format_max_rows_to_read_for_schema_inferencefilas de cada archivo y no obtener nada. Además, aumentar el valor predeterminado de esta configuración a 25000. #37332 (Kruglov Pavel). - Añadir un privilegio
CLUSTERindependiente (y la directiva de configuraciónaccess_control_improvements.on_cluster_queries_require_cluster_grant, para mantener la compatibilidad con versiones anteriores, con valor predeterminadofalse). #35767 (Azat Khuzhin). - Se añadió compatibilidad con la inferencia de esquemas en
hdfsCluster. #35812 (Nikita Mikhaylov). - Se implementó el algoritmo de balanceo de carga
least_usedpara discos dentro de un volumen (configuración multidisco). #36686 (Azat Khuzhin). - Modificar el endpoint HTTP para que devuelva las estadísticas completas en la cabecera
X-ClickHouse-Summarycuandosend_progress_in_http_headers=0(antes devolvía solo ceros). - Modificar el endpoint HTTP para que devuelva la cabeceraX-ClickHouse-Exception-Codecuando ya se haya enviado el progreso (send_progress_in_http_headers=1) - Modificar el endpoint HTTP para que devuelvaHTTP_REQUEST_TIMEOUT(408) en lugar deHTTP_INTERNAL_SERVER_ERROR(500) en caso de erroresTIMEOUT_EXCEEDED. #36884 (Raúl Marín). - Permitir a un usuario inspeccionar los grants de los roles concedidos. #36941 (nvartolomei).
- No calcule una integral numéricamente; use funciones CDF en su lugar. Esto acelerará la ejecución y aumentará la precisión. Esto corrige #36714. #36953 (Nikita Mikhaylov).
- Se agregó la implementación predeterminada para Nothing en las funciones. Ahora, la mayoría de las funciones devolverán una columna de tipo Nothing si uno de sus argumentos es Nothing. Esto también resuelve el problema con funciones como arrayMap/arrayFilter y similares cuando reciben un array vacío como argumento. Anteriormente, consultas como
select arrayMap(x -> 2 * x, []);fallaban porque la función dentro de la lambda no podía trabajar con el tipoNothing; ahora, dichas consultas devuelven un array vacío de tipoArray(Nothing). También se agregó compatibilidad con arrays de tipos Nullable en funciones como arrayFilter/arrayFill. Anteriormente, consultas comoselect arrayFilter(x -> x % 2, [1, NULL])fallaban; ahora funcionan (si el resultado de la lambda es NULL, este valor no se incluirá en el resultado). Cierra #37000. #37048 (Kruglov Pavel). - Ahora, si un segmento tiene una réplica local, creamos un plan local y otro para leer de todas las réplicas remotas. Comparten un iniciador que coordina la lectura. #37204 (Nikita Mikhaylov).
- Ya no se aborta el inicio del servidor si la opción de configuración “mark_cache_size” no está establecida explícitamente. #37326 (Robert Schulze).
- Permite indicar
NULL/NOT NULLinmediatamente después del tipo en la declaración de una columna. #37337 (Igor Nikonov). - optimiza la obtención del búfer de lectura para el segmento de archivo PARTIALLY_DOWNLOADED. #37338 (xiedeyantu).
- Se intentó mejorar el procesamiento de las funciones de cortocircuito para corregir problemas en las pruebas de estrés. #37384 (Kruglov Pavel).
- Cierra #37395. #37415 (Memo).
- Se corrige un bloqueo mutuo extremadamente raro durante la recuperación de partes en la replicación zero-copy. Corrige #37423. #37424 (metahys).
- No permitir la creación de almacenamiento con un formato de datos desconocido. #37450 (Kruglov Pavel).
- Se establece el valor predeterminado de
global_memory_usage_overcommit_max_wait_microsecondsen 5 segundos. Se añade información sobreOvercommitTrackeral mensaje de excepción OOM. Se añade el evento de profileMemoryOvercommitWaitTimeMicroseconds. #37460 (Dmitry Novik). - No mostrar
-0.0como tiempo de CPU en clickhouse-client. Puede aparecer debido a errores de redondeo. Esto cierra #38003. Esto cierra #38038. #38064 (Alexey Milovidov). - UI de Play: mantener los controles en su lugar cuando la página se desplaza horizontalmente. Esto hace que la edición sea cómoda incluso si la tabla es ancha y se ha desplazado mucho hacia la derecha. La función fue propuesta por Maksym Tereshchenko, de CaspianDB. #37470 (Alexey Milovidov).
- Modificar el
divde consulta en play.html para que pueda ampliarse más allá del 20% de altura. En el caso de consultas muy largas, resulta útil ampliar el elementotextarea; actualmente, como eldivtiene una altura fija, eltextareaampliado oculta eldivde datos que está debajo. Con esta corrección, al ampliar el elementotextarea, eldivde datos se desplazará hacia abajo o hacia arriba, de modo que eltextareaampliado no lo oculte. Además, mantiene el ancho del cuadro de consulta al 100 % incluso cuando el usuario ajusta el tamaño deltextareade la consulta. #37488 (guyco87). - Se añadieron
ProfileEventspara la introspección del tipo de partes escritas (insertadas o fusionadas) (Inserted{Wide/Compact/InMemory}Parts,MergedInto{Wide/Compact/InMemory}Parts. Se añadió la columnapart_typeasystem.part_log. Resuelve #37495. #37536 (Anton Popov). - mejora de ClickHouse Keeper: mover los logs dañados a una carpeta con marca temporal. #37565 (Antonio Andelic).
- No escribir columnas expiradas por TTL en fusiones posteriores (antes, solo la primera fusión/optimización de la parte no escribía las columnas expiradas por TTL; todas las demás sí lo hacían). #37570 (Azat Khuzhin).
- Resultado más preciso de la función miscelánea
dumpColumnStructurecuando hay columnas LowCardinality o Sparse. En versiones anteriores, estas funciones convertían el argumento en una columna completa antes de devolver el resultado. Esto es necesario para dar una respuesta en #6935. #37633 (Alexey Milovidov). - clickhouse-keeper: almacenar solo IDs de sesión únicos para los watches. #37641 (Azat Khuzhin).
- Se corrige el posible error “Cannot write to finalized buffer”. #37645 (Azat Khuzhin).
- Agregar la configuración
support_batch_deleteparaDiskS3a fin de deshabilitar las llamadas para eliminar varios objetos, que Google Cloud Storage no admite. #37659 (Fred Wulff). - Se añadió una opción para desactivar el pool de conexiones en ODBC bridge. #37705 (Anton Kozlov).
- Las funciones
dictGetHierarchy,dictIsIn,dictGetChildren,dictGetDescendantsañadieron compatibilidad con el atributoHIERARCHICALde tipo Nullable en los diccionarios. Cierra #35521. #37805 (Maksim Kita). - Se añadió información relacionada con la versión de BoringSSL en la tabla
system.build_options. #37850 (Bharat Nallan). - Ahora, clickhouse-server elimina los directorios
delete_tmpal iniciar el servidor. Corrige #26503. #37906 (alesapin). - Limpia las partes detached dañadas tras un timeout. Cierra #25195. #37975 (Kseniia Sumarokova).
- Ahora, en la familia de motores de tablas MergeTree, las partes que no se hayan podido mover se eliminarán de inmediato. #37994 (alesapin).
- Ahora, si está habilitada la configuración
always_fetch_merged_partpara ReplicatedMergeTree, los merges intentarán buscar partes en otras réplicas con menos frecuencia, reduciendo la carga en [Zoo]Keeper. #37995 (alesapin). - Se añaden también privilegios implícitos con opción de concesión. Por ejemplo,
GRANT CREATE TABLE ON test.* TO A WITH GRANT OPTIONahora permite queAejecuteGRANT CREATE VIEW ON test.* TO B. #38017 (Vitaly Baranov).
Mejoras de compilación/pruebas/empaquetado
- Usar
clang-14y la versión 14 de la infraestructura LLVM para las compilaciones. Esto cierra #34681. #34754 (Alexey Milovidov). Nota:clang-14tiene un error en ThreadSanitizer que empeora el funcionamiento de nuestro CI. - Permitir reducir privilegios al inicio. Esto simplifica las imágenes de Docker. Cierra #36293. #36341 (Alexey Milovidov).
- Añadir al CI la comprobación ortográfica de la documentación. #37790 (Vladimir C).
- Corregir un proceso de stripping demasiado agresivo que eliminaba el hash integrado necesario para verificar la consistencia del ejecutable. #37993 (Robert Schulze).
Corrección de errores
- Se corrigen las sentencias
SELECT ... INTERSECTyEXCEPT SELECTcon tipos String constantes. #37738 (Antonio Andelic). - Se corrigió
GROUP BYconAggregateFunction(es decir, se haceGROUP BYsobre la columna que tiene el tipoAggregateFunction). #37093 (Azat Khuzhin). - (WINDOW VIEW experimental) Se corrigió
addDependencyen WindowView. Este error se puede reproducir igual que en #37237. #37224 (vxider). - Se corrige una inconsistencia en la funcionalidad ORDER BY … WITH FILL. Una consulta que contiene ORDER BY … WITH FILL puede generar filas adicionales cuando hay varias columnas WITH FILL. #38074 (Yakov Olkhovskiy).
- Este PR mueve
addDependencydel constructor astartup()para evitar añadir una dependencia a una tabla eliminada; corrige #37237. #37243 (vxider). - Se corrigió la inserción de valores predeterminados para valores ausentes en formatos columnares. Antes, las columnas ausentes se rellenaban con los valores predeterminados de los tipos, no con los de las columnas. #37253 (Kruglov Pavel).
- (tipo
Objectexperimental) Se corrigen algunos casos de inserción de arrays anidados en columnas de tipoObject. #37305 (Anton Popov). - Corrige errores inesperados debidos a conflictos entre cadenas constantes en funciones de agregación, prewhere y join. Cierra #36891. #37336 (Vladimir C).
- Se corrigieron las proyecciones con GROUP/ORDER BY en la consulta y optimize_aggregation_in_order (antes el resultado era incorrecto, ya que solo se realizaba la ordenación final). #37342 (Azat Khuzhin).
- Se corrigió un error relacionado con símbolos en el nombre de la clave en S3. Soluciona #33009. #37344 (Vladimir Chebotarev).
- Generar una excepción cuando GROUPING SETS se utilice con ROLLUP o CUBE. #37367 (Dmitry Novik).
- Corregido LOGICAL_ERROR en getMaxSourcePartsSizeForMerge durante los merges (en caso de que se hayan especificado en
config.xml(la forma nueva), y no enusers.xml(la forma obsoleta), valores no estándar más altos debackground_pool_size/background_merges_mutations_concurrency_ratio). #37413 (Azat Khuzhin). - Se deja de eliminar la BOM UTF-8 en el formato RowBinary. #37428 (Paul Loyd). #37428 (Paul Loyd).
- corrección de clickhouse-keeper: corrige la recuperación forzada en clústeres de un solo nodo. #37440 (Antonio Andelic).
- Se corrige el error lógico en las funciones normalizeUTF8. Cierra #37298. #37443 (Maksim Kita).
- Se corrigió el cast lowcard de Nullable en JoinSwitcher, se cierra #37385. #37453 (Vladimir C).
- Se corrigió la salida de tuplas con nombre en los formatos ORC/Arrow/Parquet. #37458 (Kruglov Pavel).
- Se corrige la optimización de funciones monótonas en la cláusula ORDER BY en presencia de GROUPING SETS. Corrige #37401. #37493 (Dmitry Novik).
- Corrige un error al hacer join con un diccionario en determinadas condiciones. Cierra #37386. #37530 (Vladimir C).
- Se prohíbe
optimize_aggregation_in_orderconGROUPING SETS(corrigeLOGICAL_ERROR). #37542 (Azat Khuzhin). - Corrige la información errónea del volcado de ActionsDAG. #37587 (zhanglistar).
- Se corrige la conversión de tipos para consultas UNION (puede producir LOGICAL_ERROR). #37593 (Azat Khuzhin).
- Se corrige el modificador
WITH FILLcon intervalos negativos en la cláusulaSTEP. Corrige #37514. #37600 (Anton Popov). - Se corrige el uso no válido de arrays en joinGet cuando
join_use_nulls = 1. Esto corrige #37562. #37650 (Amos Bird). - Corrige el desajuste en el número de columnas en cross join, cierra #37561. #37653 (Vladimir C).
- Corrige un fallo de segmentación en
show create tablede una base de datos MySQL cuando está configurada con named collections. Cierra #37683. #37690 (Kseniia Sumarokova). - Se corrigió un problema por el que RabbitMQ Storage no podía iniciarse tras reiniciar el servidor si el almacenamiento se había creado sin la cláusula SETTINGS. Cierra #37463. #37691 (Kseniia Sumarokova).
- Las funciones definidas por el usuario en SQL deshabilitan CREATE/DROP en modo readonly. Cierra #37280. #37699 (Maksim Kita).
- Corrige el formato de los argumentos Nullable de las funciones ejecutables definidas por el usuario. Cierra #35897. #37711 (Maksim Kita).
- Se corrige la optimización habilitada al establecer
optimize_monotonous_functions_in_order_byen las consultas distribuidas. Corrige #36037. #37724 (Anton Popov). - Corrige un posible error lógico:
Invalid Field get from type UInt64 to type Float64en la table functionvalues. Cierra #37602. #37754 (Kruglov Pavel). - Se corrige un posible segfault durante la inferencia del esquema en caso de una excepción en el constructor de SchemaReader. Cierra #37680. #37760 (Kruglov Pavel).
- Se corrige la configuración cast_ipv4_ipv6_default_on_conversion_error de la función interna cast. Cierra #35156. #37761 (Maksim Kita).
- Se corrige el error de toString en DatatypeDate32. #37775 (LiuNeng).
- La configuración
dead_session_check_period_msde clickhouse-keeper se convirtió a microsegundos (se multiplicó por 1000), lo que provocó que las sesiones inactivas solo se limpiaran al cabo de varios minutos (en lugar de 500 ms). #37824 (Michael Lex). - Soluciona el posible error “No more packets are available” en las consultas distribuidas (en caso de que
async_socket_for_remote/use_hedged_requestsesté deshabilitado). #37826 (Azat Khuzhin). - (WINDOW VIEW experimental) No se elimina la tabla de destino interna al ejecutar
ALTER TABLE ... MODIFY QUERYen WindowView. #37879 (vxider). - Se corrige el propietario del directorio de coordinación en la imagen de Docker de clickhouse-keeper. Corrige #37914. #37915 (James Maidment).
- Dictionaries corrige una consulta personalizada con el campo de actualización y
{condition}. Cierra #33746. #37947 (Maksim Kita). - Corrige un posible resultado incorrecto de
SELECT ... WITH FILLcuandoORDER BYdebe aplicarse después del resultado deWITH FILL(p. ej., en una consulta externa). El resultado incorrecto se debía a una optimización de las expresiones deORDER BY(#35623). Cierra #37904. #37959 (Yakov Olkhovskiy). - (WINDOW VIEW experimental) Añade las columnas predeterminadas que faltan al insertar en la tabla de destino en WindowView, corrige #37815. #37965 (vxider).
- Se corrigió un marco de pila demasiado grande que provocaba un error de compilación. #37996 (Han Shukai).
- Al activar enable_filesystem_query_cache_limit, se lanza la excepción Reserved cache size exceeds the remaining cache size. #38004 (xiedeyantu).
- Corregida la conversión de tipos en consultas UNION (puede producir LOGICAL_ERROR). #34775 (Azat Khuzhin).
- Es posible que la fusión TTL no se vuelva a programar si BackgroundExecutor está ocupado. —merges_with_ttl_counter se incrementa en selectPartsToMerge() — la tarea —merge se ignorará si BackgroundExecutor está ocupado — merges_with_ttl_counter no disminuirá. #36387 (lthaooo).
- Se corrigió el valor sobrescrito de la configuración
normalize_function_names. #36937 (李扬). - Corrección de las funciones de ventana con decaimiento temporal exponencial. Ahora se respetan los límites de la ventana. #36944 (Vladimir Chebotarev).
- Se corrige un posible error de uso de memoria tras su liberación al leer system.projection_parts y system.projection_parts_columns . Esto corrige #37184. #37185 (Amos Bird).
- Se corrigió el comportamiento de los segundos fraccionarios de
DateTime64antes de la época de Unix. #37697 (Andrey Zvonov). #37039 (李扬).
Lanzamiento de ClickHouse 22.5, 2022-05-19. Presentación, Vídeo
Notas de actualización
- Ahora, las background merges, las mutations y
OPTIMIZEya no incrementarán las métricasSelectedRowsySelectedBytes. Seguirán incrementandoMergedRowsyMergedUncompressedBytes, como antes. Esto solo afecta a los valores de las métricas y los mejora. Este cambio no introduce ninguna incompatibilidad, pero como puede llamar la atención el cambio en las métricas, lo incluimos en esta categoría. #37040 (Nikolai Kochetov). - Se actualizó el módulo BoringSSL a la versión oficial compatible con FIPS. Esto hace que ClickHouse cumpla con FIPS. #35914 (Meena-Renganathan). Se eliminaron los cifrados
aes-192-cfb128yaes-256-cfb128porque no están incluidos en la versión de BoringSSL certificada para FIPS. - La configuración
max_memory_usagese eliminó del perfil de usuario predeterminado enusers.xml. Esto permite límites de memoria flexibles para las consultas, en lugar del antiguo límite rígido de 10 GB. - La configuración
log_query_threadsse desactiva de forma predeterminada. Controla el registro de estadísticas sobre cada hilo que participa en la ejecución de consultas. Tras añadir compatibilidad con lecturas asíncronas, el número total de identificadores de hilo distintos pasó a ser demasiado grande, y el registro enquery_thread_logse volvió demasiado costoso. #37077 (Alexey Milovidov). - Se elimina la función
groupArraySorted, que tiene un error. #36822 (Alexey Milovidov).
Nueva funcionalidad
- Habilita memory overcommit de forma predeterminada. #35921 (Dmitry Novik).
- Añade compatibilidad con GROUPING SETS en la cláusula GROUP BY. Esta implementación admite el procesamiento en paralelo de los conjuntos de agrupación. #33631 (Dmitry Novik).
- Añade la tabla
system.certificates. #37142 (Yakov Olkhovskiy). - Añade las funciones
h3Line,h3Distanceyh3HexRing. #37030 (Bharat Nallan). - Nueva herramienta de diagnóstico basada en un único binary (clickhouse-diagnostics). #36705 (Dale McDiarmid).
- Añade el formato de salida
Prometheus#36051. #36206 (Vladimir C). - Añade el formato de entrada
MySQLDump. Lee todos los datos de las consultas INSERT que pertenecen a una tabla del dump. Si hay más de una tabla, de forma predeterminada lee los datos de la primera. #36667 (Kruglov Pavel). - Muestra los campos
total_rowsytotal_bytesensystem.tablespara las tablas temporales. #36401. #36439 (xiedeyantu). - Permite sobrescribir
parts_to_delay_insertyparts_to_throw_insertcon configuraciones a nivel de consulta. Si están definidas, prevalecerán sobre las configuraciones a nivel de tabla. #36371 (Memo).
Funcionalidad experimental
- Se implementaron funciones de distancia L1, L2, Linf y coseno para arrays, y funciones de norma L1, L2 y Linf para arrays. #37033 (qieqieplus). Advertencia: estas funciones se renombrarán.
- Se mejoró la consulta
WATCHen WindowView: 1. Reduce la latencia de entrega de resultados de la consulta al llamar a la señalfire_condition. 2. Hace más rápida la operación de cancelación de consultas (ctrl-c) al comprobarisCancelled()con más frecuencia. #37226 (vxider). - Introspección para la eliminación de la caché del sistema de archivos. #36802 (Han Shukai).
- Se añadió una nueva función hash
wyHash64para SQL. #36467 (olevino). - Mejora para bases de datos replicadas: se añadió la consulta
SYSTEM SYNC DATABASE REPLICA, que permite sincronizar los metadatos de las tablas dentro de una base de datos Replicated, ya que actualmente la sincronización es asíncrona. #35944 (Nikita Mikhaylov). - Mejora para la caché remota del sistema de archivos: mejor lectura desde la caché. #37054 (Kseniia Sumarokova). Mejora de la consulta
SYSTEM DROP FILESYSTEM CACHE: opción<path>y opciónFORCE. #36639 (Kseniia Sumarokova). - Mejora para datos semiestructurados: permite convertir columnas de tipo
Object(...)aObject(Nullable(...)). #36564 (awakeljw). - Mejora para réplicas paralelas: creamos un intérprete local si queremos ejecutar una consulta en la réplica localhost. Pero, al ejecutar una consulta en varias réplicas, dependemos de que exista una conexión para que las réplicas puedan comunicarse con el coordinador. Ahora esto se ha mejorado y la réplica localhost puede comunicarse con el coordinador directamente dentro del mismo proceso. #36281 (Nikita Mikhaylov).
Mejora del rendimiento
- Mejora el rendimiento de las funciones de agregación
avgysumcuando se usan sin una expresión GROUP BY. #37257 (Maksim Kita). - Mejora el rendimiento de las funciones aritméticas unarias (
bitCount,bitNot,abs,intExp2,intExp10,negate,roundAge,roundDuration,roundToExp2,sign) mediante despacho dinámico. #37289 (Maksim Kita). - Mejora el rendimiento de ORDER BY, MergeJoin y la inserción en MergeTree mediante compilación JIT del comparador de columnas de ordenación. #34469 (Maksim Kita).
- Cambia la estructura de
system.asynchronous_metric_log. Ocupará unas 10 veces menos espacio. Esto cierra #36357. Se eliminó el campoevent_time_microsecondsporque es inútil. #36360 (Alexey Milovidov). - Carga marks solo para las columnas necesarias al leer partes wide. #36879 (Anton Kozlov).
- Mejora el rendimiento de la caché de descriptores de archivo al reducir el alcance de los mutex. #36682 (Anton Kozlov).
- Mejora el rendimiento de la lectura desde el motor de almacenamiento
Filey las table functionsfilecuando la path tiene globs y el directory coincidente contiene una gran cantidad de files. #36647 (Anton Popov). - Aplica parsing en paralelo al input format
HiveText, lo que puede acelerar 2x el parsing de HiveText al leer un file local. #36650 (李扬). HashJoinpredeterminado no es seguro para subprocesos al insertar filas de la tabla derecha, por lo que se ejecuta en un solo thread. Cuando la tabla derecha es grande, el proceso de join es demasiado lento y aprovecha poco la CPU. #36415 (lgbo).- Permite reescribir
select countDistinct(a) from tcomoselect count(1) from (select a from t groupBy a). #35993 (zhanglistar). - Transforma una chain de OR LIKE en multiMatchAny. Se habilitará cuando tengamos más confianza en que funciona correctamente. #34932 (Daniel Kutenin).
- Mejora el rendimiento de algunas funciones mediante inlining. #34544 (Daniel Kutenin).
- Añade una rama para evitar memcpy innecesarios en readBig. Esto mejora algo el rendimiento. #36095 (jasperzhu).
- Implementa una clave GROUP BY parcial para optimize_aggregation_in_order. #35111 (Azat Khuzhin).
Mejora
- Mostrar los nombres de los archivos con errores en caso de errores de análisis al ejecutar las funciones de tabla
file,s3yurl. #36314 (Anton Popov). - Se permitió aumentar en tiempo de ejecución el número de hilos para ejecutar operaciones en segundo plano (merges, mutations, moves y fetches) si este se especifica en la configuración de nivel superior. #36425 (Nikita Mikhaylov).
- Ahora, las funciones de conversión de fecha y hora que generan una hora anterior a 1970-01-01 00:00:00 con zonas horarias con desfases parciales de horas/minutos se saturarán a cero en lugar de provocar un desbordamiento. Esto da continuidad a https://github.com/ClickHouse/ClickHouse/pull/29953, que aborda https://github.com/ClickHouse/ClickHouse/pull/29953#discussion_r800550280 . Se marca como mejora porque es un comportamiento definido por la implementación (y un caso muy poco frecuente) y está permitido cambiarlo. #36656 (Amos Bird).
- Añadir una advertencia si alguien ejecuta clickhouse-server con el nivel de log “test”. El nivel de log “test” se añadió recientemente y no puede usarse en producción debido a una degradación del rendimiento inevitable, irreparable, fatal y potencialmente mortal. #36824 (Alexey Milovidov).
- Analizar colaciones en CREATE TABLE, lanzar una excepción o ignorarlas. Cierra #35892. #36271 (yuuch).
- La opción
compatibility_ignore_auto_increment_in_create_tablepermite ignorar la palabra claveAUTO_INCREMENTen la definición de una columna para facilitar la migración desde MySQL. #37178 (Igor Nikonov). - Se añaden los alias
JSONLinesyNDJSONparaJSONEachRow. Cierra #36303. #36327 (flynn). - Se limita el número máximo de particiones que se pueden consultar para cada tabla de Hive. Evita el consumo excesivo de recursos. #37281 (lgbo).
- Se añadió un CAST implícito al segundo argumento de la función
h3kRingpara mejorar su usabilidad. Cierra #35432. #37189 (Maksim Kita). - Se corrige la indicación de progreso de
INSERT SELECTenclickhouse-localpara cualquier consulta y la del progreso de archivos en el cliente; ahora el progreso de archivos es más preciso. #37075 (Kseniia Sumarokova). - Corrige un error que puede hacer que algunas partes obsoletas de la familia de motores de tabla MergeTree queden olvidadas en caso de fallos del sistema de archivos durante la eliminación de partes. Antes de esta corrección, solo se eliminaban tras el primer reinicio del servidor. #37014 (alesapin).
- Se implementó un nuevo modo de gestión de las políticas de fila que puede habilitarse en la configuración principal y permite a los usuarios sin políticas de fila permisivas leer filas. #36997 (Vitaly Baranov).
- UI de Play: los números Nullable se alinearán a la derecha en las celdas de la tabla. Con esto se cierra #36982. #36988 (Alexey Milovidov).
- UI de Play: Si hay una fila en el resultado y más de unas cuantas columnas, se muestra el resultado en vertical. Continuación de #36811. #36842 (Alexey Milovidov).
- Se limpió el CSS de la UI de Play. Los píxeles están distribuidos de manera más uniforme. Mejor usabilidad para contenido largo en las celdas de tabla. #36569 (Alexey Milovidov).
- Finalizar los búferes de escritura en caso de excepción para evitar hacerlo en los destructores. Se espera que esto corrija: #36907. #36979 (Kruglov Pavel).
- Después de #36425, ajustes como
background_fetches_pool_sizequedaron obsoletos y pueden aparecer en la configuración de nivel superior, pero ClickHouse lanza una excepción comoError updating configuration from '/etc/clickhouse-server/config.xml' config.: Code: 137. DB::Exception: A setting 'background_fetches_pool_size' appeared at top level in config /etc/clickhouse-server/config.xml.Esto se ha corregido. #36917 (Nikita Mikhaylov). - Añadir información de diagnóstico adicional (si procede) al enviar una excepción a otro servidor. #36872 (tavplubix).
- Se permite ejecutar funciones hash con argumentos de tipo
Array(Tuple(..)). #36812 (Anton Popov). - Se añadió la opción de configuración
user_defined_path. #36753 (Maksim Kita). - Permitir el uso de la macro de clúster en la función de tabla
s3Cluster. #36726 (Vadim Volodin). - Cancelar correctamente las consultas INSERT en
clickhouse-client/clickhouse-local. #36710 (Azat Khuzhin). - Permite cancelar una consulta y seguir manteniendo un id de consulta adecuado en
MySQLHandler. #36699 (Amos Bird). - Añadir la columna
is_all_data_sentasystem.processesy mejorar la comprobación de robustez de las pruebas internas basada en ella. #36649 (Azat Khuzhin). - Las métricas sobre el tiempo dedicado a la lectura desde S3 ahora se calculan correctamente. Cierra #35483. #36572 (Alexey Milovidov).
- Permitir descriptores de archivo en la table function file si se ejecuta en clickhouse-local. #36562 (wuxiaobai24).
- Permitir nombres de elementos de tupla que comiencen por dígitos. #36544 (Anton Popov).
- Ahora, clickhouse-benchmark puede leer la información de autenticación de variables de entorno. #36497 (Anton Kozlov).
- Mejora de
clickhouse-keeper: se añade compatibilidad con la recuperación forzada, lo que permite reconfigurar el cluster sin quorum. #36258 (Antonio Andelic). - Mejora de la inferencia de esquemas para objetos JSON. #36207 (Kruglov Pavel).
- Refactorización del código relacionado con la inferencia de esquemas con globs. Probar el siguiente archivo del glob solo si tiene sentido (antes se probaba el siguiente archivo ante cualquier error). Además, corrige #36317. #36205 (Kruglov Pavel).
- Agregar un privilegio
CLUSTERseparado (y la directiva de configuraciónaccess_control_improvements.on_cluster_queries_require_cluster_grant, para mantener la compatibilidad con versiones anteriores, con el valor predeterminadofalse). #35767 (Azat Khuzhin). - Si la cantidad necesaria de memoria está disponible antes de que se detenga la consulta seleccionada, todas las consultas en espera continúan ejecutándose. Ahora no detenemos ninguna consulta si la memoria se libera antes de que la consulta seleccionada tenga conocimiento de la cancelación. #35637 (Dmitry Novik).
- Detección de Nullable en Protobuf. En proto3, los valores predeterminados no se envían en la codificación wire. Esto hace que no sea trivial distinguir entre valores null y valores predeterminados en columnas Nullable. Una forma estándar de abordar este problema es usar wrappers de Google para anidar el valor de destino dentro de un mensaje interno (consulte https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/wrappers.proto). En este caso, un campo ausente se interpreta como valor null, un campo presente con el valor ausente se interpreta como valor predeterminado y un campo con un valor normal se interpreta como un valor normal. Sin embargo, ClickHouse interpreta los wrappers de Google como columnas anidadas. Proponemos introducir un comportamiento especial para detectar los wrappers de Google e interpretarlos como se describe arriba. Por ejemplo, para serializar valores de una columna Nullable
test, usaríamosgoogle.protobuf.StringValue testen nuestro esquema .proto. Tenga en cuenta que estos tipos son los llamados “tipos bien conocidos” en Protobuf, implementados en la propia biblioteca. #35149 (Jakub Kuklis). - Se añadió compatibilidad con la especificación de
content_typeen la configuración predefinida y estática del controlador HTTP. #34916 (Roman Nikonov). - Advertir adecuadamente si se usa clickhouse-client —file sin un —external previo. Cierra #34747. #34765 (李扬).
- Se mejoró el motor de base de datos MySQL para que sea compatible con el tipo de dato binary(0). #37232 (zzsmdfj).
- Mejora del informe en JSON de clickhouse-benchmark. #36473 (Tian Xinhui).
- El servidor podría negarse a arrancar si no puede resolver el hostname de un diccionario externo de ClickHouse. Corregido. Corrige #36451. #36463 (tavplubix).
Mejoras de compilación/pruebas/empaquetado
- Ahora
clickhouse-keeperpara la arquitecturax86_64está enlazado de forma estática con musl y no depende de ninguna biblioteca del sistema. #31833 (Alexey Milovidov). - Las builds de ClickHouse para la arquitectura
PowerPC64LEya están disponibles en el script de instalación universalcurl https://clickhouse.com/ | shy mediante enlace directohttps://builds.clickhouse.com/master/powerpc64le/clickhouse. #37095 (Alexey Milovidov). - Limitar la generación de código PowerPC a Power8 para mejorar la compatibilidad. Esto cierra #36025. #36529 (Alexey Milovidov).
- Simplificar la prueba de rendimiento. Esto nos permitirá usarla. #36769 (Alexey Milovidov).
- Hacer que la comparación de rendimiento falle si hay errores en el informe. #34797 (Mikhail f. Shiryaev).
- Añadir compatibilidad con ZSTD en Arrow. Esto corrige #35283. #35486 (Sean Lafferty).
Corrección de errores
- Extrae el ID de versión del URI, si está presente, y añade una solicitud al URI HTTP de AWS. Cierra #31221. - [x] Extraer el
Version IDdel URI, si está presente, y reconstruirlo sin él. - [x] Configurar el objetoAWS HTTP URIcon la solicitud. - [x] Pruebas unitarias:gtest_s3_uri- [x] Se eliminó el commit de instrumentación. #34571 (Saad Ur Rahman). - Se corrigió el alias attribute.values de system.opentelemetry_span_log para que use values en lugar de keys. #37275 (Aleksandr Razumov).
- Se corrige la conversión de Nullable(String) a Nullable(Bool/IPv4/IPv6). Cierra #37221. #37270 (Kruglov Pavel).
- Funcionalidad experimental: Se corrige la ejecución de mutaciones en tablas en las que existen columnas de tipo
Object. Ahora también se permite usar subcolumnas de tipoObjecten la expresiónWHEREde consultasUPDATEoDELETE, así como manipular (DROP,MODIFY) subcolumnas individuales. Corrige #37205. #37266 (Anton Popov). - Kafka no necesita
group.iden la etapa del productor. En el registro de la consola puede encontrar una advertencia que describe este problema:2022.05.15 17:59:13.270227 [ 137 ] {} <Warning> StorageKafka (topic-name): [rdk:CONFWARN] [thrd:app]: Configuration property group.id is a consumer property and will be ignored by this producer instance. #37228 (Mark Andreev). - Función experimental (WindowView): Actualiza
max_fired_watermarkdespués de que los bloques se hayan emitido realmente, en caso de eliminar datos que aún no se hayan emitido. #37225 (vxider). - Se corrige “No se puede crear una columna de tipo Set” en consultas distribuidas con LIMIT BY. #37193 (Azat Khuzhin).
- Funcionalidad experimental: Ahora la consulta
WATCH EVENTSde WindowView ya no se interrumpirá debido al fragmento no vacío creado enWindowViewSource.h:58. #37182 (vxider). - Se habilita
enable_global_with_statementpara las subconsultas, se cierra #37141. #37166 (Vladimir C). - Se corrigió la conversión implícita en optimize_skip_unused_shards_rewrite_in. #37153 (Azat Khuzhin).
- La función ILIKE en columnas FixedString podría haber devuelto resultados incorrectos (es decir, encontrar menos coincidencias de las debidas). #37117 (Robert Schulze).
- Corregido
GROUP BYconAggregateFunction(es decir, se haceGROUP BYpor la columna de tipoAggregateFunction). #37093 (Azat Khuzhin). - Funcionalidad experimental: Se corrige optimize_aggregation_in_order con GROUP BY por prefijo y funciones de agregación *Array. #37050 (Azat Khuzhin).
- Se corrigió la degradación del rendimiento en algunas consultas INSERT SELECT con agregación implícita. Soluciona #36792. #37047 (tavplubix).
- Funcionalidad experimental: corrección de
GROUP BYen orden (optimize_aggregation_in_order=1) con funciones de agregación*Array(groupArrayArray/…). #37046 (Azat Khuzhin). - Se corrige la salida inválida de LowCardinality->ArrowDictionary cuando el tipo de los índices no es UInt8. Cierra #36832. #37043 (Kruglov Pavel).
- Se corrigió el problema con los valores
infenquantileTDigest. Corrige #32107. #37021 (Vladimir Chebotarev). - Se corrige el envío de datos de tablas externas en HedgedConnections cuando max_parallel_replicas != 1. #36981 (Kruglov Pavel).
- Se corrigió un error lógico en la consulta
TRUNCATEde la base de datosReplicated. Corrige #33747. #36976 (tavplubix). - Característica experimental: Se corrige un bloqueo al eliminar la tabla de origen en WindowView. Cierra #35678. #36967 (vxider).
- Función experimental (caché de rocksdb): se corrigió el problema: #36671. #36929 (李扬).
- Función experimental: Se corrigen errores al usar varias columnas en WindowView, añadiendo acciones de conversión para poder llamar a
writeIntoWindowViewcon un esquema ligeramente diferente. #36928 (vxider). - Se corrige un error en clickhouse-keeper que puede provocar la corrupción de archivos de registro comprimidos en caso de baja carga y reinicios. #36910 (alesapin).
- Corrige un resultado incorrecto de una consulta al realizar una agregación constante. Esto corrige #36728 . #36888 (Amos Bird).
- Funcionalidad experimental: Se corrigió el recuento de
current_sizeen la memoria caché. #36887 (Kseniia Sumarokova). - Función experimental: Se corrigió el disparo en la window view con hop window #34044. #36861 (vxider).
- Función experimental: Corrige un cast incorrecto en el búfer en caché del sistema de archivos remoto. #36809 (Kseniia Sumarokova).
- Se corrigió la creación de tablas con
flatten_nested = 0. Antes, las columnasNestedsin aplanar podían aplanarse tras reiniciar el servidor. #36803 (Anton Popov). - Corrige algunos problemas con las lecturas asíncronas desde sistemas de archivos remotos que se producían al leer datos de baja cardinalidad. #36763 (Kseniia Sumarokova).
- Característica experimental: Se corrige la inserción en columnas de tipo
Objecta partir de varios archivos, p. ej., mediante la función de tablafilecon globs. #36762 (Anton Popov). - Se corrigen los tiempos de espera en las solicitudes hedged. Un bloqueo de la conexión justo después de enviar una consulta remota podía provocar una espera indefinida. #36749 (Kruglov Pavel).
- Característica experimental: Se corrige un error de
groupBitmapAndState/groupBitmapOrState/groupBitmapXorStateen una tabla distribuida. #36739 (Zhang Yifan). - Funcionalidad experimental: Durante la prueba en la PR, descubrí que una clase de caché se inicializaba dos veces, lo que provocaba una excepción. Aunque la causa de este problema no está clara, parece haber en ClickHouse una lógica de código que carga el disco repetidamente, por lo que debemos realizar una comprobación especial para esta situación. #36737 (Han Shukai).
- Corregidas las fusiones verticales en las partes wide. Antes, durante la fusión, podía lanzarse la excepción
There is no column. #36707 (Anton Popov). - Se corrigió la recarga del servidor al cambiar el puerto (sin esperar a las conexiones actuales del contexto de consulta). #36700 (Azat Khuzhin).
- Función experimental: En el PR anterior, descubrí que las pruebas (stateless tests, comprobación flaky (address, actions)) terminan agotando el tiempo de espera. Además, las pruebas en local también pueden desencadenar interbloqueos inestables del sistema. Este problema sigue existiendo al usar el código fuente más reciente de master. #36697 (Han Shukai).
- Característica experimental: Se corrige el reinicio del servidor si cambia la configuración de la caché. #36685 (Kseniia Sumarokova).
- Corrige un posible acceso a memoria del heap después de liberarla en la inferencia de esquemas. Cierra #36661. #36679 (Kruglov Pavel).
- Se corrigió el análisis de la configuración en la consulta
CREATEcuando no se especifica el motor. Corrige https://github.com/ClickHouse/ClickHouse/pull/34187#issuecomment-1103812419. #36642 (tavplubix). - Funcionalidad experimental: Corregidas las fusiones de partes en formato
widecon tipoObject. #36637 (Anton Popov). - Corregido el fallo del formato cuando la expresión por defecto que sigue a EPHEMERAL no es un literal. Cierra #36618. #36633 (flynn).
- Se corrige la excepción
Missing column, que podía producirse al usarINTERPOLATEcon una tablaENGINE = MergeTree. #36549 (Yakov Olkhovskiy). - Se corrige un posible error con literales en
WHEREen consultas con JOIN. Cierra #36279. #36542 (Vladimir C). - Se corrigió la actualización del desplazamiento en ReadBufferFromEncryptedFile, que podía provocar un comportamiento indefinido. #36493 (Kseniia Sumarokova).
- Se corrigen las comprobaciones de validez del hostname en la configuración del clúster de Keeper. Se añade la configuración
keeper_server.host_checks_enabledpara activar/desactivar dichas comprobaciones. #36492 (Antonio Andelic). - Se corrige el uso de las funciones ejecutables definidas por el usuario en GROUP BY. Antes, las funciones ejecutables definidas por el usuario no se podían usar como expresiones en GROUP BY. Cierra #36448. #36486 (Maksim Kita).
- Se corrigió una posible excepción causada por un paquete desconocido del servidor en el cliente. #36481 (Kseniia Sumarokova).
- Característica experimental (por favor, no use nunca
system.session_log, se va a eliminar): Añade los valoresenumque faltan en la tabla system.session_log. Cierra #36474. #36480 (Memo). - Se corrigió un error en la inferencia de esquema de s3Cluster que provocaba que no se leyeran todos los datos en el
selectdesde s3Cluster. El error se introdujo en https://github.com/ClickHouse/ClickHouse/pull/35544. #36434 (Kruglov Pavel). - Corrige la desreferenciación de nullptr en el comparador de JOIN y COLUMNS. Esto corrige #36416. Corresponde a https://github.com/ClickHouse/ClickHouse/pull/36417. #36430 (Amos Bird).
- Se corrige la recarga del Diccionario de
ClickHouseDictionarySourcesi contiene subconsultas escalares. #36390 (lthaooo). - Se corrige una aserción en JOIN, se cierra #36199. #36201 (Vladimir C).
- Las consultas con alias dentro de operadores especiales devolvían un error de análisis sintáctico (no funcionaba en la versión 22.1). Ejemplo:
SELECT substring('test' AS t, 1, 1). #36167 (Maksim Kita). - Funcionalidad experimental: Se corrige la inserción de JSON complejos con arrays anidados en columnas de tipo
Object. #36077 (Anton Popov). - Corrige
ALTER DROP COLUMNen una columna anidada con partes compactas (es decir,ALTER TABLE x DROP COLUMN n, cuando existe la columnan.d). #35797 (Azat Khuzhin). - Se corrigió el error de longitud fuera de rango de la función substring cuando
offsetylengthson constantes negativas ysno es constante. #33861 (RogerYK).
Lanzamiento de ClickHouse 22.4, 2022-04-19. Presentación, Video
Cambio incompatible con versiones anteriores
- Ya no se permite usar SETTINGS después de FORMAT en las consultas INSERT (existe la configuración de compatibilidad
allow_settings_after_format_in_insertpara aceptar estas consultas, pero está desactivada de forma predeterminada). #35883 (Azat Khuzhin). - La función
yandexConsistentHash(algoritmo de hash consistente de Konstantin “kostik” Oblakov) pasa a llamarsekostikConsistentHash. El nombre anterior se mantiene como alias por compatibilidad. Aunque este cambio es compatible con versiones anteriores, es posible que eliminemos el alias en versiones futuras, por lo que se recomienda actualizar el uso de esta función en sus aplicaciones. #35553 (Alexey Milovidov).
funcionalidad
- Se añadió la extensión INTERPOLATE a ORDER BY … WITH FILL. Se cierra #34903. #35349 (Yakov Olkhovskiy).
- Perfilado a nivel de processors (con la configuración
log_processors_profiles, ClickHouse escribirá en la tablasystem.processors_profile_logel tiempo que cada processor dedicó a la ejecución/a la espera de datos). #34355 (Azat Khuzhin). - Se añadieron las funciones makeDate(year, month, day) y makeDate32(year, month, day). #35628 (Alexander Gololobov). Se implementaron makeDateTime() y makeDateTIme64(). #35934 (Alexander Gololobov).
- Se admite un nuevo tipo de cuota
WRITTEN BYTESpara limitar la cantidad de bytes escritos durante las consultas deinsert. #35736 (Anton Popov). - Se añadió la función
flattenTuple. Recibe como argumento unTupleanidado con elementos con nombre y devuelve unTupleaplanado cuyos elementos son las rutas delTupleoriginal. P. ej.:Tuple(a Int, Tuple(b Int, c Int)) -> Tuple(a Int, b Int, c Int).flattenTuplepuede usarse para seleccionar todas las rutas del tipoObjectcomo columnas independientes. #35690 (Anton Popov). - Se añadieron las funciones
arrayFirstOrNullyarrayLastOrNull. Cierra #35238. #35414 (Maksim Kita). - Se añadieron las funciones
minSampleSizeContinousyminSampleSizeConversion. Autor: achimbab. #35360 (Maksim Kita). - Nuevas funciones minSampleSizeContinous y minSampleSizeConversion. #34354 (achimbab).
- Se introduce el formato
ProtobufList(todos los registros como mensajes repetidos en la salida Protobuf). Cierra #16436. #35152 (Nikolai Kochetov). - Se añaden las funciones
h3PointDistM,h3PointDistKm,h3PointDistRads,h3GetRes0Indexesyh3GetPentagonIndexes. #34568 (Bharat Nallan). - Se añade la función
toLastDayOfMonth, que redondea hacia arriba una fecha o una fecha con hora al último día del mes. #33501. #34394 (Habibullah Oladepo). - Se añadió una opción de balanceo de carga para el cliente de [Zoo]Keeper. Cierra #29617. #30325 (小路).
- Añade un nuevo tipo de políticas de fila llamado
simple. Antes de este PR teníamos dos tipos de políticas de fila:permissiveyrestrictive. Una política de filasimpleañade un nuevo filtro a una tabla sin efectos secundarios, a diferencia de lo que ocurría con las políticaspermissiveyrestrictive. #35345 (Vitaly Baranov). - Se añadió la posibilidad de especificar el secreto del clúster en una base de datos Replicated. #35333 (Nikita Mikhaylov).
- Se añadieron comprobaciones básicas al iniciar el servidor (memoria disponible y espacio en disco, número máximo de hilos, etc.). #34566 (Sergei Trifonov).
- Mejora de INTERVAL: ahora puede usarse con
[MILLI|MICRO|NANO]SECOND. Se añadieron las funcionestoStartOf[Milli|Micro|Nano]second(). Se añadieron[add|subtract][Milli|Micro|Nano]seconds(). #34353 (Andrey Zvonov).
Funcionalidad experimental
- Se añadió compatibilidad con transacciones para tablas
MergeTreesimples. Esta funcionalidad es muy experimental y no se recomienda para producción. Parte de #22086. #24258 (tavplubix). - Se añadió compatibilidad con la inferencia de esquema para el tipo
Objecten el formatoJSONEachRow. Permite convertir columnas de tipoMapen columnas de tipoObject. #35629 (Anton Popov). - Se permite escribir en la caché del sistema de archivos remoto en todas las operaciones de escritura. Se añade la tabla
system.remote_filesystem_cache. Se añade la consultadrop remote filesystem cache. Se añade introspección para los metadatos de S3 con la tablasystem.remote_data_paths. Cierra #34021. Se añade una opción de caché para merges al incorporar el modoread_from_filesystem_cache_if_exists_otherwise_bypass_cache(activado de forma predeterminada para merges y que también puede activarse mediante una configuración de consulta con el mismo nombre). Se cambian de nombre las configuraciones relacionadas con la caché (remote_fs_enable_cache -> enable_filesystem_cache, etc.). #35475 (Kseniia Sumarokova). - Se añade una opción para almacenar los metadatos de las partes en RocksDB. Acelera la carga de partes de MergeTree para reducir el tiempo de arranque de clickhouse-server. Con esta mejora, clickhouse-server pudo reducir el tiempo de arranque de 75 minutos a 20 segundos, con 700k partes de MergeTree. #32928 (李扬).
mejora del rendimiento
- Nueva optimización del plan de consulta. Evalúa las funciones después de
ORDER BYcuando es posible. Por ejemplo, en la consultaSELECT sipHash64(number) FROM numbers(1e8) ORDER BY number LIMIT 5, la funciónsipHash64se evaluaría después deORDER BYyLIMIT, lo que proporciona una aceleración de ~20x. #35623 (Nikita Taranov). - Los tamaños de las tablas hash usadas durante la agregación ahora se recopilan y se reutilizan en consultas posteriores para evitar redimensionamientos de las tablas hash. #33439 (Nikita Taranov).
- Mejora de la función hasAll mediante instrucciones SIMD (SSE y AVX2). #27653 (youennL-cs). #35723 (Maksim Kita).
- Múltiples cambios para mejorar el rendimiento de ASOF JOIN (entre 1,2 y 1,6 veces más rápido). También añade compatibilidad con enteros grandes. #34733 (Raúl Marín).
- Mejora el rendimiento de ASOF JOIN si la clave es un entero nativo. #35525 (Maksim Kita).
- Paralelización de la carga multiparte en almacenamiento S3. #35343 (Sergei Trifonov).
- El motor de almacenamiento URL ahora descarga varios fragmentos en paralelo si el endpoint admite HTTP Range. Se añadieron dos ajustes adicionales,
max_download_threadsymax_download_buffer_size, que controlan el número máximo de hilos que una sola consulta puede usar para descargar el archivo y el número máximo de bytes que cada hilo puede procesar. #35150 (Antonio Andelic). - Usa varios hilos para descargar objetos desde S3. La descarga se puede controlar mediante los ajustes
max_download_threadsymax_download_buffer_size. #35571 (Antonio Andelic). - Reduce el alcance del mutex al interactuar con HDFS. Relacionado con #35292. #35646 (shuchaome).
- Requiere mutations para el TTL por tabla solo cuando este se haya modificado. #35953 (Azat Khuzhin).
Mejora
- Múltiples mejoras en la inferencia de esquema. Se usan algunos ajustes y heurísticas para determinar números, cadenas, arrays, tuples y maps en los formatos de datos CSV, TSV y TSVRaw. Se añade la configuración
input_format_csv_use_best_effort_in_schema_inferencepara el formato CSV, que habilita o deshabilita el uso de estas heurísticas; si está deshabilitada, todo se trata como string. Se añade una configuración similar,input_format_tsv_use_best_effort_in_schema_inference, para el formato TSV/TSVRaw. Estas configuraciones están habilitadas de forma predeterminada. - Se añade compatibilidad con Maps en la inferencia de esquema del formato Values. - Se corrige un posible segfault en la inferencia de esquema del formato Values. - Se permite omitir columnas con tipos no compatibles en los formatos Arrow/ORC/Parquet. Se añaden las configuraciones correspondientes para ello:input_format_{parquet|orc|arrow}_skip_columns_with_unsupported_types_in_schema_inference. Estas configuraciones están deshabilitadas de forma predeterminada. - Se permite convertir una columna de tipo Null en una columna Nullable con todos los valores NULL en los formatos Arrow/Parquet. - Se permite especificar nombres de columna en la inferencia de esquema mediante la configuracióncolumn_names_for_schema_inferencepara formatos que no contienen nombres de columna (como CSV, TSV, JSONCompactEachRow, etc.). - Se corrige la inferencia de esquema en los formatos ORC/Arrow/Parquet en lo relativo al uso de columnas Nullable. Anteriormente, ninguno de los tipos inferidos era Nullable, lo que impedía leer columnas Nullable a partir de los datos; ahora está corregido y todos los tipos inferidos son siempre Nullable (porque no podemos determinar si una columna es Nullable o no leyendo el esquema). - Se corrige la inferencia de esquema en el formato Template con reglas de escape de CSV. #35582 (Kruglov Pavel). - Se añaden el análisis en paralelo y la inferencia de esquema para el formato
JSONAsObject. #35592 (Anton Popov). - Se añadió soporte para la inferencia automática de esquema a la función de tabla
s3Cluster. Se sincronizaron las firmas des3ys3Cluster. #35544 (Nikita Mikhaylov). - Se añadió compatibilidad con la inferencia de esquema para
hdfsCluster. #35602 (Nikita Mikhaylov). - Se añade la nueva configuración
input_format_json_read_bools_as_numbers, que permite inferir e interpretar los valores booleanos como números en formatos de entrada JSON. Está activada de forma predeterminada. Propuesta por @alexey-milovidov. #35735 (Kruglov Pavel). - Se mejora el orden de las columnas en la inferencia de esquemas para los formatos TSKV y JSONEachRow, cierra #35640. La inferencia de esquemas ya no se detiene al leer una fila vacía en los formatos TSKV y JSONEachRow. #35724 (Kruglov Pavel).
- Se agregan las configuraciones
input_format_orc_case_insensitive_column_matching,input_format_arrow_case_insensitive_column_matchingeinput_format_parquet_case_insensitive_column_matching, que permiten a ClickHouse hacer coincidir columnas sin distinguir entre mayúsculas y minúsculas al leer datos de archivos ORC, Arrow o Parquet. #35459 (Antonio Andelic). - Se añadió la columna
is_secureasystem.query_log, que indica si el cliente utiliza una conexión segura a través de TCP o HTTP. #35705 (Antonio Andelic). - Ahora
kafka_num_consumerspuede ser mayor que el número de núcleos físicos en el caso de una máquina con pocos recursos (menos de 16 núcleos). #35926 (alesapin). - Añadir algunas métricas básicas para monitorizar las tablas con engine=Kafka. #35916 (filimonov).
- Ahora ya no se permite usar
ALTER TABLE ... RESET SETTINGcon configuraciones inexistentes en la familia de motores MergeTree. Corrige #35816. #35884 (alesapin). - Ahora, algunas consultas
ALTER MODIFY COLUMNpara los tiposArraysyNullablepueden realizarse a nivel de metadatos sin necesidad de mutaciones. Por ejemplo, cambiar deArray(Enum8('Option1'=1))aArray(Enum8('Option1'=1, 'Option2'=2)). #35882 (alesapin). - Se añadió una animación al icono del reloj de arena para indicar al usuario que se está ejecutando una consulta. #35860 (peledni).
- Se admite ALTER TABLE t DETACH PARTITION (ALL). #35794 (awakeljw).
- Mejorar el análisis de proyecciones para optimizar consultas simples como
count(). #35788 (Amos Bird). - Se admite la inferencia de esquema para insert select con la función de tabla
input. Obtiene el esquema de la tabla de inserción en lugar de inferirlo a partir de los datos en el caso de insert select desde funciones de tabla que admiten inferencia de esquema. Cierra #35639. #35760 (Kruglov Pavel). - Se respeta
remote_url_allow_hostspara las tablas de Hive. #35743 (李扬). - Se implementa
send_logs_levelpara clickhouse-local. Cierra #35653. #35716 (Kseniia Sumarokova). - Cierra #35641 Permite columnas
EPHEMERALsin una expresión predeterminada explícita. #35706 (Yakov Olkhovskiy). - Se añade el contador de eventos de perfil
AsyncInsertBytespara el tamaño de losINSERTasíncronos. #35644 (Alexey Milovidov). - Mejora la descripción del pipeline de JOIN. #35612 (何李夫).
- Inferir la ruta absoluta de configuración de HDFS. #35572 (李扬).
- Mejora el rendimiento al pegar y la compatibilidad de clickhouse-client. Esto ayuda con #35501. #35541 (Amos Bird).
- Podía producirse un desbordamiento de pila en consultas distribuidas si estaba habilitada alguna de las opciones de configuración
async_socket_for_remoteyuse_hedged_requestsal analizar un tipo de dato con un nivel de anidamiento muy profundo (al menos en una compilación de depuración). Cierra #35509. #35524 (Kruglov Pavel). - Añadir los tamaños de las subcolumnas a la tabla
system.parts_columns. #35488 (Anton Popov). - Añade información explícita sobre la tabla al nodo de escaneo del plan de consulta y del pipeline. #35460 (何李夫).
- Permitir que el servidor escuche en puertos con números bajos (p. ej., 443). El script de instalación de ClickHouse establecerá
cap_net_bind_serviceen el binario. #35451 (Alexey Milovidov). - Se corrigió INSERT INTO table FROM INFILE: no mostraba la barra de progreso. #35429 (xiedeyantu).
- Se añaden los argumentos
--user,--password,--host,--porta la herramientaclickhouse-diagnostics. #35422 (李扬). - Se admite uuid para motores Postgres. Cierra #35384. #35403 (Kseniia Sumarokova).
- Para la table function
s3cluster,HDFSClusterohive, no podemos obtener elAccessTypecorrecto conStorageFactory::instance().getSourceAccessType(getStorageTypeName()). Este PR lo corrige. #35365 (李扬). - Se elimina la opción
--testmodepara clickhouse-client y se habilita de forma incondicional. #35354 (Kseniia Sumarokova). - No permitir la operación
wchc(comando de cuatro letras) en clickhouse-keeper. #35320 (zhangyuli1). - Se añade la función
getTypeSerializationStreams. Para un tipo especificado (que se detecta a partir de la columna), devuelve un array con todas las rutas de los subflujos de serialización. Esta función resulta útil principalmente para desarrolladores. #35290 (李扬). - Si no se especifica
porten la configuración del clúster, se usará el puerto predeterminado del servidor. Con esto se cierra #34769. #34772 (Alexey Milovidov). - Use el índice
minmaxpara archivos orc/parquet en Hive Engine. PR relacionada: https://github.com/ClickHouse/arrow/pull/10. #34631 (李扬). - Las tablas de registro del sistema ahora permiten especificar COMMENT en la declaración de ENGINE. Cierra #33768. #34536 (Maksim Kita).
- Compatibilidad adecuada con la configuración
max_rows_to_readal leer según el orden de la clave de ordenación y con un límite especificado. Anteriormente, podía lanzarse la excepciónLimit for rows or bytes to read exceededincluso si la consulta en realidad requería leer una cantidad menor de filas. #33230 (Anton Popov). - Respetar solo quota & period de cgroups e ignorar shares (que en realidad no limitan la cantidad de núcleos que se pueden usar). #35815 (filimonov).
Mejoras de compilación/pruebas/empaquetado
- Añadir el siguiente lote de configuraciones de aleatorización en las pruebas funcionales. #35047 (Kruglov Pavel).
- Añadir una comprobación de compatibilidad con versiones anteriores en la prueba de estrés. Cierra #25088. #27928 (Kruglov Pavel).
- Migrar la compilación de paquetes a
nfpm- Dejar obsoleto el scriptreleaseen favor depackages/build- Compilar todo en la imagen clickhouse/binary-builder (limpieza: clickhouse/deb-builder) - Añadir el stripping de símbolos a cmake (pendiente: usar bin_dir/clickhouse/$binary.debug) - Corregir el problema con los símbolos DWARF - Añadir paquetes APK de Alpine - Renombraralienaadditional_pkgs. #33664 (Mikhail f. Shiryaev). - Añadir un escaneo nocturno y la carga de resultados para Coverity. #34895 (Boris Kuschel).
- Un paquete pequeño específico para
clickhouse-keeper. #35308 (Mikhail f. Shiryaev). - La ejecución con podman estaba fallando: se queja de que el mismo volumen se especifica dos veces. #35978 (Roman Nikonov).
- Mejora menor en la configuración de compilación de contrib/krb5. #35832 (Anton Kozlov).
- Añadir una etiqueta para identificar una tarea de compilación para cada imagen. #35583 (Mikhail f. Shiryaev).
- Aplicar el formateador
blackal código Python y añadir una comprobación por commit. #35466 (Mikhail f. Shiryaev). - Rehacer la imagen de Alpine para usar un Dockerfile limpio. Crear un script en tests/ci para compilar imágenes tanto de Ubuntu como de Alpine. Añadir la imagen de clickhouse-keeper (cc @nikitamikhaylov). Añadir una comprobación de compilación a PullRequestCI. Añadir un job a ReleaseCI. Añadir un job a MasterCI para compilar y publicar las imágenes
clickhouse/clickhouse-server:headyclickhouse/clickhouse-keeper:headpara cada PR fusionada. #35211 (Mikhail f. Shiryaev). - Corregir el informe de la prueba de estrés en CI; ahora cargamos el runlog con información sobre las pruebas de estrés iniciadas una sola vez. #35093 (Mikhail f. Shiryaev).
- Cambiar a libcxx / libcxxabi de LLVM 14. #34906 (Raúl Marín).
- Actualizar unixodbc para mitigar CVE-2018-7485. Nota: este CVE no es relevante para ClickHouse, ya que implementa su propia capa de aislamiento para ODBC. #35943 (Mikhail f. Shiryaev).
Corrección de errores
- Se añadieron las configuraciones
input_format_ipv4_default_on_conversion_error,input_format_ipv6_default_on_conversion_errorpara permitir insertar en las tablas, como valores predeterminados, direcciones IP no válidas. Cierra #35726. #35733 (Maksim Kita). - Evitar borrar columnas de un bloque si no existen al leer datos de Hive. #35393 (lgbo).
- Añadir comprobación de tipos al crear una vista materializada. Cierra: #23684. #24896 (hexiaoting).
- Se corrigió el formato de las consultas INSERT INFILE (faltaban comillas). #35886 (Azat Khuzhin).
- Se deshabilita
session_logporque se detectó un problema de seguridad de memoria mediante fuzzing. Véase #35714. #35873 (Alexey Milovidov). - Evita procesar varias veces el TTL por columna. #35820 (Azat Khuzhin).
- Se corrigen las inserciones en columnas de tipo
Objectcuando hay datos correspondientes a varias particiones en la consulta de inserción. #35806 (Anton Popov). - Se corrige un error en los índices de columnas no incluidas en los formatos -WithNames que provocaba el error
INCORRECT_NUMBER_OF_COLUMNScuando el número de columnas supera las 256. Cierra #35793. #35803 (Kruglov Pavel). - Soluciona #35751. #35799 (Nikolay Degterinsky).
- Corrección para leer desde HDFS en formato Snappy. #35771 (shuchaome).
- Corrige un error en la conversión de tipos personalizados a String que podía provocar un segfault o mensajes de error inesperados. Cierra #35752. #35755 (Kruglov Pavel).
- Se corrigió la implementación de any/all (subconsulta). Cierra #35489. #35727 (Kseniia Sumarokova).
- Se corrige la eliminación de una base de datos no vacía en clickhouse-local. Cierra #35692. #35711 (Kseniia Sumarokova).
- Se corrige un error al crear una vista materializada con una subconsulta tras reiniciar el servidor. La vista materializada no se actualizaba después de insertar datos en la tabla subyacente tras reiniciar el servidor. Cierra #35511. #35691 (Kruglov Pavel).
- Se corrige la posible excepción
Can't adjust last granuleal leer subcolumnas del tipo experimentalObject. #35687 (Anton Popov). - Se habilita de forma predeterminada la compilación con JIT. #35683 (Maksim Kita).
- Corrige una posible pérdida de subcolumnas en el tipo experimental
Object. #35682 (Anton Popov). - Se corrige la comprobación de nulabilidad de la clave de ASOF JOIN, cierra #35565. #35674 (Vladimir C).
- Corrige la lógica de comprobación para partes con proyecciones. Se producía un error cuando la proyección y la parte principal tenían tipos diferentes. Es similar a https://github.com/ClickHouse/ClickHouse/pull/33774 . El error fue corregido por @caoyang10. #35667 (Amos Bird).
- Corrige el fallo del servidor al pasar un gran número de argumentos a la función
format. Consulta el archivo de prueba para ver cómo reproducir el fallo. #35651 (Amos Bird). - Se corrigió el uso de las cuotas con inserciones asíncronas. #35645 (Anton Popov).
- Corrige los argumentos posicionales con alias. Cierra #35600. #35620 (Kseniia Sumarokova).
- Comprobar
remote_url_allow_hostsantes de la inferencia de esquema en el motor URL. Cierra #35064. #35619 (Kruglov Pavel). - Se corrige
HashJoincuando se usan columnas de tipoLowCardinality. Esto cierra #35548. #35616 (Antonio Andelic). - Corrige un posible fallo de segmentación en MaterializedPostgreSQL que se producía si ocurría una excepción al sincronizar los datos recopilados en memoria con las tablas subyacentes. Cierra #35611. #35614 (Kseniia Sumarokova).
- La configuración
database_atomic_wait_for_drop_and_detach_synchronouslyfuncionaba de forma incorrecta para la consultaATTACH TABLEcuando una tabla previamente desasociada seguía en uso. Esto ya se ha corregido. #35594 (tavplubix). - Corrige las cabeceras HTTP con colecciones nombradas, añade compression_method. Cierra #35273. Cierra #35269. #35593 (Kseniia Sumarokova).
- Se corrige la obtención de columnas virtuales por parte del motor S3. Cierra #35411. #35586 (Kseniia Sumarokova).
- Se corrigió la deducción del tipo de retorno de
caseWithExpression. Ahora se tiene correctamente en cuenta el tipo de la rama ELSE. #35576 (Antonio Andelic). - Se corrige el análisis de direcciones IPv6 con más de 39 caracteres. Cierra #34022. #35539 (Maksim Kita).
- Se corrige CAST a direcciones IPv4 e IPv6 en la sección IN. Corrige #35528. #35534 (Maksim Kita).
- Se corrige el fallo durante la evaluación de funciones con cortocircuito cuando uno de los argumentos es una constante Nullable. Cierra #35497. Cierra #35496. #35502 (Maksim Kita).
- Se corrige un bloqueo de la función
throwIfcon argumentos constantes. #35500 (Maksim Kita). - Se corrige un error en Keeper que puede provocar inestabilidad en las conexiones de los clientes. Introducido en #35031. #35498 (alesapin).
- Se corrige un error en la función
ifcuando el tipo de la columna resultante difería del tipo de dato resultante, lo que daba lugar a errores lógicos comoLogical error: 'Bad cast from type DB::ColumnVector<int> to DB::ColumnVector<long>'.. Cierra #35367. #35476 (Kruglov Pavel). - Corrige el exceso de registros al usar S3 como backend de MergeTree o como motor de tabla o función independientes. Corrige #30559. #35434 (alesapin).
- Ahora, las operaciones de merge ejecutadas con replicación zero copy (experimental) ya no llenarán los logs con el mensaje
Found parts with the same min block and with the same max block as the missing part _ on replica _. Hoping that it will eventually appear as a result of a merge.. #35430 (alesapin). - Se evita una posible excepción si aparecen fragmentos vacíos en GroupingAggregatedTransform. #35417 (Nikita Taranov).
- Se corrige el manejo de columnas que no son necesarias en la consulta en los formatos Arrow/Parquet/ORC; esto evita posibles errores como
Unsupported <format> type <type> of an input column <column_name>cuando el archivo contiene una columna con un tipo no compatible y no se usa en la consulta. #35406 (Kruglov Pavel). - Corrección de la caché local para el sistema de archivos remoto (funcionalidad experimental) en casos límite con alta concurrencia. #35381 (Kseniia Sumarokova). Se corrige un posible interbloqueo en la caché. #35378 (Kseniia Sumarokova).
- Se corrige la poda de particiones al comparar con una constante en
WHERE. Si la columna y la constante tenían tipos distintos, podía producirse un desbordamiento. La consulta podía devolver incorrectamente un resultado vacío. Esto corrige #35304. #35334 (Amos Bird). - Se corrige la inferencia de esquema para el formato TSKV al usar un
max_read_buffer_sizepequeño. #35332 (Kruglov Pavel). - Se corrigen las mutaciones en tablas con columnas dispersas habilitadas. #35284 (Anton Popov).
- No retrasar por defecto la escritura de la parte final (corrige un posible
Memory limit exceededduranteINSERTal añadirmax_insert_delayed_streams_for_parallel_write, con valor predeterminado de 1000 para escrituras en S3 y deshabilitado, como antes, en los demás casos). #34780 (Azat Khuzhin).
Lanzamiento de ClickHouse v22.3-lts, 2022-03-17. Presentación, Vídeo
Cambio incompatible con versiones anteriores
- Hacer que la función
arrayCompactse comporte como otras funciones de orden superior: realizar la compactación no sobre los resultados de la función lambda, sino sobre el array original. Si usas funciones lambda no triviales enarrayCompact, puedes restaurar el comportamiento anterior envolviendo los argumentos dearrayCompactenarrayMap. Cierra #34010 #18535 #14778. #34795 (Alexandre Snarskii). - Cambiar el comportamiento específico de la implementación en caso de overflow de la función
toDatetime. Ahora se saturará al instante mínimo o máximo compatible más cercano de datetime en lugar de hacer wraparound. Este cambio se destaca como “incompatible con versiones anteriores” porque alguien podría depender involuntariamente del comportamiento anterior. #32898 (HaiBo Li). - Hacer que las funciones
cast(value, 'IPv4')ycast(value, 'IPv6')se comporten igual que las funcionestoIPv4ytoIPv6. Se cambió el comportamiento para las direcciones IP incorrectas pasadas a las funcionestoIPv4,toIPv6; ahora, si se pasa una dirección IP no válida a estas funciones, se lanzará una excepción; antes, estas funciones devolvían el valor predeterminado. Se añadieron las funcionesIPv4StringToNumOrDefault,IPv4StringToNumOrNull,IPv6StringToNumOrDefault,IPv6StringOrNulltoIPv4OrDefault,toIPv4OrNull,toIPv6OrDefault,toIPv6OrNull. Las funcionesIPv4StringToNumOrDefault,toIPv4OrDefault,toIPv6OrDefaultdeben usarse si la lógica anterior dependía de queIPv4StringToNum,toIPv4,toIPv6devolvieran el valor predeterminado para una dirección no válida. Se añadió la configuracióncast_ipv4_ipv6_default_on_conversion_error; si esta configuración está habilitada, las funciones de conversión de direcciones IP se comportarán como antes. Cierra #22825. Cierra #5799. Cierra #35156. #35240 (Maksim Kita).
Nueva funcionalidad
- Soporte para el almacenamiento en caché local de datos para sistemas de archivos remotos. Se puede habilitar para discos
s3. Cierra #28961. #33717 (Kseniia Sumarokova). Mientras tanto, habilitamos la suite de pruebas en el sistema de archivos s3 y ya no hay problemas conocidos, por lo que está empezando a estar lista para producción. - Se añade la nueva función de tabla
hive. Se puede usar de la siguiente manera:hive('<hive metastore url>', '<hive database>', '<hive table name>', '<columns definition>', '<partition columns>'), por ejemploSELECT * FROM hive('thrift://hivetest:9083', 'test', 'demo', 'id Nullable(String), score Nullable(Int32), day Nullable(String)', 'day'). #34946 (lgbo). - Soporte para la autenticación de usuarios conectados mediante SSL a través de su certificado X.509. #31484 (eungenue).
- Soporte para la inferencia de esquema al insertar en las funciones de tabla
file/hdfs/s3/url. #34732 (Kruglov Pavel). - Ahora puede leer la tabla
system.zookeepersin restricciones de ruta ni usando la expresiónlike. Estas lecturas pueden generar una carga bastante alta en ZooKeeper, por lo que, para habilitar esta capacidad, debe activar el ajusteallow_unrestricted_reads_from_keeper. #34609 (Sergei Trifonov). - Muestra métricas de CPU y memoria en clickhouse-local. Cierra #34545. #34605 (李扬).
- Implementa las funciones
startsWithyendsWithpara arrays, cierra #33982. #34368 (usurai). - Se añaden tres funciones para el tipo de datos Map: 1.
mapReplace(map1, map2)- reemplaza los valores de las claves de map1 por los valores de las claves correspondientes de map2; añade las claves de map2 que no existen en map1. 2.mapFilter3.mapMap. mapFilter y mapMap son funciones de orden superior que aceptan dos argumentos: el primer argumento es una función lambda con el par k, v como argumentos; el segundo argumento es una columna de tipo Map. #33698 (hexiaoting). - Permite obtener el usuario y la contraseña predeterminados para clickhouse-client a partir de las variables de entorno
CLICKHOUSE_USERyCLICKHOUSE_PASSWORD. Cierra #34538. #34947 (DR).
Funcionalidad experimental
- Nuevo tipo de datos
Object(<schema_format>), que permite almacenar datos semiestructurados (por ahora, solo JSON). Los datos se escriben en estos tipos como una cadena. Luego, todas las rutas se extraen según el formato de los datos semiestructurados y se escriben como columnas independientes en los tipos más adecuados que puedan almacenar todos sus valores. Estas columnas pueden consultarse mediante nombres que coincidan con las rutas de los datos de origen. Por ejemplo,data.key1.key2o con el operador CASTdata.key1.key2::Int64. - Se añadió la configuración
database_replicated_allow_only_replicated_engine. Cuando está habilitada, solo se permite crear tablasReplicatedo tablas con motores sin estado en bases de datosReplicated. #35214 (Nikolai Kochetov). Tenga en cuenta que la base de datosReplicatedsigue siendo una funcionalidad experimental.
Mejora del rendimiento
- Se mejora el rendimiento de la inserción en tablas
MergeTreeoptimizando la ordenación. Se observa una mejora de hasta 2x en benchmarks realistas. #34750 (Maksim Kita). - Poda de columnas al leer archivos Parquet, ORC y Arrow desde URL y S3. Cierra #34163. #34849 (Kseniia Sumarokova).
- Poda de columnas al leer archivos Parquet, ORC y Arrow desde Hive. #34954 (lgbo).
- Varias optimizaciones de rendimiento de un superhéroe del rendimiento. Mejora del rendimiento al procesar consultas con cláusulas
INgrandes. Mejora del rendimiento del diccionariodirectsi su fuente esClickHouse. Mejora del rendimiento de las funcionesdetectCharsetydetectLanguageUnknown. #34888 (Maksim Kita). - Se mejora el rendimiento de la función de agregación
anymediante un mayor procesamiento por lotes. #34760 (Raúl Marín). - Múltiples mejoras en el rendimiento de
clickhouse-keeper: menos bloqueos #35010 (zhanglistar), menor uso de memoria mediante lectura y escritura en streaming de snapshot en lugar de una copia completa #34584 (zhanglistar), optimización de la compactación del almacén de logs en la implementación de RAFT #34534 (zhanglistar), versionado de la estructura de datos interna #34486 (zhanglistar).
Mejora
- Permite inserciones asíncronas en funciones de tabla. Corrige #34864. #34866 (Anton Popov).
- Conversión implícita de tipo del argumento key en las funciones
dictGetHierarchy,dictIsIn,dictGetChildren,dictGetDescendants. Cierra #34970. #35027 (Maksim Kita). - La consulta
EXPLAIN ASTpuede mostrar el AST en forma de gráfico en formato Graphviz:EXPLAIN AST graph = 1 SELECT * FROM system.parts. #35173 (李扬). - Al escribir archivos grandes con la función de tabla
s3o el motor de tabla, el tipo de contenido de los archivos se establecía por error comoapplication/xmldebido a un fallo en el SDK de AWS. Esto resuelve #33964. #34433 (Alexey Milovidov). - Ajustar ligeramente las row policies restrictivas para que sean una alternativa más sencilla a las políticas permisivas en los casos simples. Si para una tabla concreta solo existen políticas restrictivas (sin políticas permisivas), los usuarios podrán ver algunas filas. Además,
SHOW CREATE ROW POLICYsiempre mostraráAS permissiveoAS restrictiveen la definición de la row policy. #34596 (Vitaly Baranov). - Mejora la inferencia de esquema con globs en los motores File/S3/HDFS/URL. Intenta usar la ruta siguiente para la inferencia de esquema en caso de error. #34465 (Kruglov Pavel).
- La UI de Play ahora detecta correctamente el tema claro u oscuro preferido del sistema operativo. #35068 (peledni).
- Se añadió
date_time_input_format = 'best_effort_us'. Cierra #34799. #34982 (WenYao). - Se agregan en la configuración del servidor nuevos ajustes llamados
allow_plaintext_passwordyallow_no_password, que activan o desactivan tipos de autenticación que pueden ser potencialmente inseguros en algunos entornos. Están permitidos de forma predeterminada. #34738 (Heena Bansal). - Soporte para el tipo de dato
DateTime64en el formatoArrow; cierra #8280 y #28574. #34561 (李扬). - Recargar
remote_url_allow_hosts(filtrado de las conexiones salientes) al actualizar la configuración. #35294 (Nikolai Kochetov). - Se añadió compatibilidad con el parámetro
--testmodeparaclickhouse-local. Este parámetro permite interpretar las indicaciones de prueba que usamos en las pruebas funcionales. #35264 (Kseniia Sumarokova). - Se añade
distributed_depthal registro de consultas. Es una variante más detallada deis_initial_query#35207 (李扬). - Se respeta
remote_url_allow_hostspara las funciones de tablaMySQLyPostgreSQL. #35191 (Heena Bansal). - Se añadió el campo
disk_nameasystem.part_log. #35178 (Artyom Yurkov). - No reintente errores no reintentables al consultar URL remotas. Cierra #35161. #35172 (Kseniia Sumarokova).
- Admite consultas INSERT SELECT distribuidas (configuración
parallel_distributed_insert_select) para la función de tablaview(). #35132 (Azat Khuzhin). - Seguimiento de memoria más preciso al realizar
INSERTenBufferconAggregateFunction. #35072 (Azat Khuzhin). - Evita la división por cero en el Query Profiler si el kernel de Linux tiene un fallo. Cierra #34787. #35032 (Alexey Milovidov).
- Añade más comprobaciones de coherencia para la configuración de Keeper: ahora no se permite mezclar localhost y servidores no locales; además, se añaden comprobaciones para verificar que el puerto interno de raft y el puerto cliente de Keeper no tengan el mismo valor. #35004 (alesapin).
- Actualmente, si el usuario cambia la configuración de las system tables, se generarán muchísimos logs y ClickHouse cambiará el nombre de las tablas cada minuto. Esto corrige #34929. #34949 (Nikita Mikhaylov).
- Usar un pool de conexiones para el cliente del metastore de Hive. #34940 (lgbo).
- Ignorar el
TTLpor columna enCREATE TABLE ASsi el nuevo motor de tabla no lo admite (es decir, si el motor no pertenece a la familiaMergeTree). #34938 (Azat Khuzhin). - Permitir cadenas
LowCardinalityen los índicesngrambf_v1/tokenbf_v1. Cierra #21865. #34911 (Lars Hiller Eidnes). - Permitir abrir una base de datos SQLite vacía si el archivo no existe. Cierra #33367. #34907 (Kseniia Sumarokova).
- Implementar estadísticas de memoria para FreeBSD; esto es necesario para que
max_server_memory_usagefuncione correctamente. #34902 (Alexandre Snarskii). - En versiones anteriores, la barra de progreso de clickhouse-client puede dar un salto hacia adelante cerca del 50 % sin motivo alguno. Esto resuelve #34324. #34801 (Alexey Milovidov).
- Ahora, las consultas
ALTER TABLE DROP COLUMN columnXpara los motores de tablaMergeTreefuncionarán de forma instantánea cuandocolumnXsea una columnaALIAS. Corrige #34660. #34786 (alesapin). - Mostrar sugerencias cuando el usuario escriba mal el nombre de un índice de omisión de datos. Cierra #29698. #34764 (flynn).
- Compatibilidad con las funciones de tabla
remote()/cluster()paraparallel_distributed_insert_select. #34728 (Azat Khuzhin). - No restablecer el logging configurado mediante las opciones de línea de comandos
--log-file/--errorlog-filecuando haya una configuración vacía en el archivo de configuración. #34718 (Amos Bird). - Extraer el schema solo una vez al crear la table y evitar leer de archivos locales/fuentes externas para extraer el schema en cada inicio del server. #34684 (Kruglov Pavel).
- Permite especificar nombres para los argumentos de UDF ejecutables. Esto es necesario en formatos en los que el nombre del argumento forma parte de la serialización, como
NativeyJSONEachRow. Cierra #34604. #34653 (Maksim Kita). MaterializedMySQL(funcionalidad experimental) ahora admitematerialized_mysql_tables_list(una lista de tablas de la base de datos MySQL separadas por comas, que serán replicadas por el engine de base de datos MaterializedMySQL. Valor predeterminado: lista vacía; significa que se replicarán todas las tablas), mencionado en #32977. #34487 (zzsmdfj).- Mejorar los logs de spans de OpenTelemetry para la operación INSERT en tabla distribuida. #34480 (Frank Chen).
- Hacer que
ctimeymtimedel znode sean consistentes entre los servidores de ClickHouse Keeper. #33441 (小路).
Mejoras de compilación/pruebas/empaquetado
- Migración del repositorio de paquetes a JFrog Artifactory (Mikhail f. Shiryaev).
- Se aleatorizan algunos ajustes en las pruebas funcionales para probar más combinaciones posibles. Este es otro método de fuzzing para mejorar la cobertura de las pruebas. Esto cierra #32268. #34092 (Kruglov Pavel).
- Eliminar PVS-Studio de nuestro CI. #34680 (Mikhail f. Shiryaev).
- Añadir la capacidad de compilar binarios sin símbolos con CMake. En versiones anteriores esto lo realizaba dh-tools. #35196 (alesapin).
- Versión más ligera “sin extras” de
clickhouse-keeper. #35031 (alesapin). - Usar @robot-clickhouse como autor y committer para PR como https://github.com/ClickHouse/ClickHouse/pull/34685. #34793 (Mikhail f. Shiryaev).
- Limitar a 4 como máximo la versión de DWARF para la información de depuración, porque nuestro simbolizador interno de trazas de pila no puede interpretar DWARF versión 5. Esto tiene sentido si compilas ClickHouse con clang-15. #34777 (Alexey Milovidov).
- Eliminar el paquete Debian
clickhouse-testpor ser una complicación innecesaria. El CI usa pruebas del repositorio y ya no se admiten pruebas independientes mediante el paquete deb. #34606 (Ilya Yatsishin).
Corrección de errores (comportamiento incorrecto perceptible para el usuario en una versión oficial estable o preestable)
- Una corrección para la integración de HDFS: cuando el tamaño del búfer interno es demasiado pequeño, NEED_MORE_INPUT en
HadoopSnappyDecoderse ejecuta varias veces (>=3) para un mismo bloque comprimido. Esto hace que los datos de entrada se copien en una ubicación incorrecta dentro deHadoopSnappyDecoder::buffer. #35116 (lgbo). - Ignora los privilegios obsoletos en las sentencias ATTACH GRANT. Este PR corrige #34815. #34855 (Vitaly Baranov).
- Se corrige un segfault en la base de datos Postgres al obtener la consulta CREATE TABLE si la base de datos se había creado mediante named collections. Cierra #35312. #35313 (Kseniia Sumarokova).
- Corrige un error que provocaba filas duplicadas en partial merge join, cierra #31009. #35311 (Vladimir C).
- Se corrigió el posible error
Assertion 'position() != working_buffer.end()' failedal usar compresión bzip2 con un valor pequeño del ajustemax_read_buffer_size. El error se encontró en https://github.com/ClickHouse/ClickHouse/pull/35047. #35300 (Kruglov Pavel). Al usar compresión lz4 con un valor pequeño del ajuste max_read_buffer_size. #35296 (Kruglov Pavel). Al usar compresión lzma con un valor pequeño del ajustemax_read_buffer_size. #35295 (Kruglov Pavel). Al usar compresiónbrotlicon un valor pequeño del ajustemax_read_buffer_size. El error se encontró en https://github.com/ClickHouse/ClickHouse/pull/35047. #35281 (Kruglov Pavel). - Corrige un posible segfault en la inferencia del esquema de
JSONEachRow. #35291 (Kruglov Pavel). - Corregida la consulta
CHECK TABLEcuando la tabla tiene habilitadas columnas dispersas. #35274 (Anton Popov). - Evita
std::terminateen caso de excepción al leer desde el VFS remoto. #35257 (Azat Khuzhin). - Corregida la lectura del puerto desde la configuración; cierra #34776. #35193 (Vladimir C).
- Se corrige un error en una consulta con
WITH TOTALSen caso de queHAVINGdevolviera un resultado vacío. Esto soluciona #33711. #35186 (Amos Bird). - Se corrige un caso extremo de
replaceRegexpAlly se cierra #35117. #35182 (Vladimir C). - La inferencia de esquemas no funcionaba correctamente en el caso de
INSERT INTO FUNCTION s3(...) FROM ...: intentaba leer el esquema desde el archivo de S3 en lugar de hacerlo desde la consulta SELECT. #35176 (Kruglov Pavel). - Corrige las
table overridesde MaterializedPostgreSQL (característica experimental) para partition by, etc. Cierra #35048. #35162 (Kseniia Sumarokova). - Se corrige MaterializedPostgreSQL (funcionalidad experimental) al añadir una nueva tabla a la replicación (ATTACH TABLE) después de eliminarla manualmente (DETACH TABLE). Cierra #33800. Cierra #34922. Cierra #34315. #35158 (Kseniia Sumarokova).
- Se corrige el error de poda de particiones cuando se usa una función no monótona con el operador IN. Esto corrige #35136. #35146 (Amos Bird).
- Se corrigió una traducción a XML ligeramente incorrecta de las configuraciones YAML. #35135 (Miel Donkers).
- Se corrigió
optimize_skip_unused_shards_rewrite_inpara columnas con signo y valores negativos. #35134 (Azat Khuzhin). - La opción
update_lagde la configuración del diccionario externo no se podía utilizar y mostraba el mensaje de errorUnexpected key `update_lag` in dictionary source configuration. #35089 (Jason Chu). - Evita un posible bloqueo mutuo al apagar el servidor. #35081 (Azat Khuzhin).
- Se corrige la ausencia de alias después de que la función se optimiza a una subcolumna cuando la configuración
optimize_functions_to_subcolumnsestá habilitada. Cierra #33798. #35079 (qieqieplus). - Se corrige la lectura de la tabla
system.asynchronous_insertssi existe una inserción asíncrona en una table function. #35050 (Anton Popov). - Corrige una posible excepción
Reading for MergeTree family tables must be done with last position boundary(relevante para operaciones en VFS remotos). Cierra #34979. #35001 (Kseniia Sumarokova). - Se corrige el resultado inesperado al usar una aggregate function de tipo -State en el frame de una ventana. #34999 (metahys).
- Corregido un posible fallo de segmentación en FileLog (característica experimental). Cierra #30749. #34996 (Kseniia Sumarokova).
- Se corrige un posible error poco frecuente
Cannot push block to port which already has data. #34993 (Nikolai Kochetov). - Corrige una inferencia de esquema errónea para fechas sin comillas en CSV. Cierra #34768. #34961 (Kruglov Pavel).
- Integración con Hive: Se corrige un resultado inesperado al usar
inenwhereen una consulta de Hive. #34945 (lgbo). - Evitar el sondeo activo en ClickHouse Keeper al buscar archivos de changelog que deben eliminarse. #34931 (Azat Khuzhin).
- Corregida la conversión de DateTime64 desde PostgreSQL. Cierra #33364. #34910 (Kseniia Sumarokova).
- Se corrigió un posible “El directorio de la parte no existe” durante
INSERTen una tabla MergeTree basada en VFS sobre S3. #34876 (Azat Khuzhin). - Permitir que DDLs como CREATE USER se ejecuten en un clúster con replicación cruzada. #34860 (Jianmei Zhang).
- Corrige errores en el
group byde múltiples columnas enWindowView(funcionalidad experimental). #34859 (vxider). - Corrige posibles fallos en las funciones S2 cuando las consultas incluyen columnas constantes. #34745 (Bharat Nallan).
- Se corrigió un error en las funciones H3 que contienen columnas
consty provocaba que las consultas fallaran. #34743 (Bharat Nallan). - Se corrige
No such file or directoryconfsync_part_directoryhabilitado y la fusión vertical. #34739 (Azat Khuzhin). - Se corrige la serialización/visualización de las consultas del sistema
RELOAD MODEL,RELOAD FUNCTION,RESTART DISKcuando se usaON CLUSTER. Cierra #34514. #34696 (Maksim Kita). - Se corrige
allow_experimental_projection_optimizationconenable_global_with_statement(antes podía provocar el errorStack size too largeen caso de varias expresiones en la cláusulaWITH, y además ejecutaba las subconsultas escalares una y otra vez, por lo que ahora será más eficiente). #34650 (Azat Khuzhin). - Dejar de seleccionar una parte para una mutación cuando la otra réplica ya haya actualizado el registro de transacciones del motor
ReplatedMergeTree. #34633 (Jianmei Zhang). - Corrige el resultado incorrecto de una consulta
counttrivial al usar la funcionalidad de movimiento de partes #34089. #34385 (nvartolomei). - Corrige la inconsistencia del límite de
max_query_sizeen las subconsultas distribuidas. #34078 (Chao Ma).
Lanzamiento de ClickHouse v22.2, 2022-02-17. Presentación, Video
Notas de actualización
- Aplicar índices de omisión de datos en consultas con FINAL puede producir resultados incorrectos. En esta versión, los índices de omisión de datos están deshabilitados de forma predeterminada para las consultas con FINAL (se introduce una nueva configuración,
use_skip_indexes_if_final, deshabilitada de forma predeterminada). #34243 (Azat Khuzhin).
Nueva funcionalidad
- Las proyecciones ya están listas para producción.
allow_experimental_projection_optimizationse establece de forma predeterminada y esta configuración queda obsoleta. #34456 (Nikolai Kochetov). - Una opción para crear archivos nuevos al insertar en los motores
File/S3/HDFS. Permite sobrescribir un archivo enHDFS. De forma predeterminada, lanza una excepción al intentar sobrescribir un archivo enS3. Lanza una excepción al intentar añadir datos a un archivo en formatos que tienen un sufijo (y, por lo tanto, no admiten anexos, comoParquet,ORC). Cierra #31640 Cierra #31622 Cierra #23862 Cierra #15022 Cierra #16674. #33302 (Kruglov Pavel). - Añade una configuración que permite al usuario proporcionar su propia semántica de deduplicación en
MergeTree/ReplicatedMergeTree. Si se proporciona, se utiliza en lugar del resumen de datos para generar el ID de bloque. Así, por ejemplo, al proporcionar un valor único para la configuración en cada sentencia INSERT, el usuario puede evitar que los mismos datos insertados se deduplicen. Esto cierra: #7461. #32304 (Igor Nikonov). - Se añade compatibilidad con la palabra clave
DEFAULTen las sentencias INSERT. Cierra #6331. #33141 (Andrii Buriachevskyi). - Se añadió el especificador de columna
EPHEMERALa la consultaCREATE TABLE. Cierra #9436. #34424 (yakov-olkhovskiy). - Se añade compatibilidad con la cláusula
IF EXISTSpara la funcionalidadTTL expr TO [DISK|VOLUME] [IF EXISTS] 'xxx'. Las partes se moverán al disco o volumen solo si existen en la réplica, por lo que las reglas deMOVE TTLpodrán comportarse de forma distinta en las réplicas según las políticas de almacenamiento existentes. Resuelve #34455. #34504 (Anton Popov). - Permite establecer un motor de tabla predeterminado y crear tablas sin especificar ENGINE. #34187 (Ilya Yatsishin).
- Se añadió la función de tabla
format(format_name, data). #34125 (Kruglov Pavel). - Detectar el formato en
clickhouse-locala partir del nombre del archivo incluso cuando se pasa mediante stdin. #33829 (Kruglov Pavel). - Se añadió la inferencia de esquema para la función de tabla
values. Cierra #33811. #34017 (Kruglov Pavel). - Recarga dinámica de los certificados TLS del servidor al recargar la configuración. Corrige #15764. #15765 (johnskopis). #31257 (Filatenkov Artur).
- Ahora ReplicatedMergeTree puede recuperar los datos cuando algunos de sus discos se dañan. #13544 (Amos Bird).
- Conexiones con tolerancia a fallos en clickhouse-client:
clickhouse-client ... --host host1 --host host2 --port port2 --host host3 --port port --host host4. #34490 (Kruglov Pavel). #33824 (Filippov Denis). - Se añaden las funciones
DEGREESyRADIANSpara garantizar la compatibilidad con MySQL. #33769 (Bharat Nallan). - Se añadió la función
h3ToCenterChild. #33313 (Bharat Nallan). Se añadieron nuevas funciones varias de H3:edgeLengthKm,exactEdgeLengthKm,exactEdgeLengthM,exactEdgeLengthRads,numHexagons. #33621 (Bharat Nallan). - Se añade la función
bitSlicepara extraer subsecuencias de bits de String/FixedString. #33360 (RogerYK). - Se implementó la función de agregación
meanZTest. #33354 (achimbab). - Se añaden intervalos de confianza a las funciones de agregación de pruebas t. #33260 (achimbab).
- Se agrega la función
addressToLineWithInlines. Cierra #26211. #33467 (SuperDJY). - Se añadieron
#!y#como inicios reconocidos de un comentario de una sola línea. Cierra #34138. #34230 (Aaron Katz).
Funcionalidad experimental
- Funciones para la clasificación de texto: detección de idioma y de juego de caracteres. Véase #23271. #33314 (Nikolay Degterinsky).
- Se añadió memory overcommit a
MemoryTracker. Se añadieron ajustesguaranteedpara los límites de memoria, que representan límites de memoria suaves. En caso de que se alcance el límite estricto de memoria,MemoryTrackerintenta cancelar la consulta con mayor overcommit. El nuevo ajustememory_usage_overcommit_max_wait_microsecondsespecifica cuánto tiempo pueden esperar las consultas a que se detenga otra consulta. Cierra #28375. #31182 (Dmitry Novik). - Se habilita el join entre stream y tabla en WindowView. #33729 (vxider).
- Se añade compatibilidad con los tipos de datos
SET,YEAR,TIMEyGEOMETRYenMaterializedMySQL(característica experimental). Corrige #18091, #21536, #26361. #33429 (zzsmdfj). - Se corrigen varios problemas cuando las proyecciones están habilitadas de forma predeterminada. Cada problema se describe en un commit independiente. Esto corresponde a #33678. Esto corrige #34273. #34305 (Amos Bird).
Mejora del rendimiento
- Se admite
optimize_read_in_ordersi el prefijo de la clave de ordenación ya está ordenado. Por ejemplo, si tenemos la clave de ordenaciónORDER BY (a, b)en una tabla y una consulta con las cláusulasWHERE a = const ORDER BY b, ahora se aplicará leyendo en el orden de la clave de ordenación en lugar de realizar una ordenación completa. #32748 (Anton Popov). - Mejora el rendimiento de las inserciones particionadas en las funciones de tabla
URL,S3,File,HDFS. Cierra #34348. #34510 (Maksim Kita). - Múltiples mejoras de rendimiento en clickhouse-keeper. #34484 #34587 (zhanglistar).
FlatDictionarymejora el rendimiento de la carga de datos en diccionarios. #33871 (Maksim Kita).- Mejora el rendimiento de la función
mapPopulateSeries. Cierra #33944. #34318 (Maksim Kita). _filey_path, columnas virtuales (en motores de tabla de tipo archivo), pasan a serLowCardinality; esto hará que las consultas sobre varios archivos sean más rápidas. Cierra #34300. #34317 (flynn).- Se acelera la carga de las partes de datos. Antes no se paralelizaba: la configuración
part_loading_threadsno surtía efecto. Consulta #4699. #34310 (alexey-milovidov). - Mejora el rendimiento del formato
LineAsString. Esto cierra #34303. #34306 (alexey-milovidov). - Se optimiza
quantilesExact{Low,High}para usarnth_elementen lugar desort. #34287 (Danila Kutenin). - Ligera mejora del rendimiento del formato
Regexp. #34202 (alexey-milovidov). - Mejora menor en el análisis de subconsultas escalares. #34128 (Federico Rodriguez).
- Hacer que ORDER BY de tupla sea casi tan rápido como ORDER BY de columnas. Tenemos optimizaciones especiales para ORDER BY de varias columnas: https://github.com/ClickHouse/ClickHouse/pull/10831 . También resulta beneficioso aplicarlas a las columnas de tupla. #34060 (Amos Bird).
- Rediseño y reintroducción de la caché de subconsultas escalares para la ejecución de vistas materializadas. #33958 (Raúl Marín).
- Mejora ligeramente el rendimiento de
ORDER BYal añadir compatibilidad con x86-64 AVX-512 para las funcionesmemcmpSmall, con el fin de acelerar la comparación en memoria. Solo funciona si compilas ClickHouse por tu cuenta. #33706 (hanqf-git). - Mejora el rendimiento del diccionario
range_hashedcuando una clave tiene muchos intervalos. Corrige #23821. #33516 (Maksim Kita). - Para las inserciones y fusiones en S3, escriba archivos en paralelo siempre que sea posible (TODO: comprobar si se ha fusionado). #33291 (Nikolai Kochetov).
- Se mejora el rendimiento de
clickhouse-keepery se corrigen varias fugas de memoria en la biblioteca NuRaft. #33329 (alesapin).
Mejora
- Se admiten las inserciones asíncronas en
clickhouse-clientpara consultas con datos embebidos. #34267 (Anton Popov). - Las funciones
dictGet,dictHasconvierten implícitamente el argumento de clave a la estructura de clave del diccionario si son diferentes. #33672 (Maksim Kita). - Mejoras en los diccionarios
range_hashed. Se mejoró el rendimiento del tiempo de carga cuando hay varios atributos. Se permite CREATE un diccionario sin atributos. Se añadió una opción para especificar la estrategia cuando los intervalosstartyendtienen el tipoNullable;convert_null_range_bound_to_openestruede forma predeterminada. Cierra #29791. Se permite especificarFloat,Decimal,DateTime64,Int128,Int256,UInt128,UInt256como tipos de rango. Se añadió soporte enRangeHashedDictionarypara valores de rango que superan el tipoInt64. Cierra #28322. Se añadió la opciónrange_lookup_strategypara especificar el tipo de lookup de rangomin,max;mines el valor predeterminado. Cierra #21647. Se corrigieron los cálculos de bytes asignados. Se corrigió el type name ensystem.dictionariesen el caso deComplexKeyHashedDictionary. #33927 (Maksim Kita). - Los diccionarios
flat,hashedyhashed_arrayahora permiten crearse con atributos vacíos, con soporte para leer las claves y usardictHas. Corrige #33820. #33918 (Maksim Kita). - Se añadió compatibilidad con el tipo de datos
DateTime64en los diccionarios. #33914 (Maksim Kita). - Permite usar
s3(url, access_key_id, secret_access_key)(detección automática del formato de los datos y de la estructura de la tabla, pero con credenciales explícitas). #34503 (Kruglov Pavel). - Se añadió el envío del formato de salida al cliente, tal como se hace en el protocolo HTTP, según lo sugerido en #34362. Cierra #34362. #34499 (Vitaly Baranov).
- Enviar estadísticas de ProfileEvents en el caso de consultas INSERT SELECT (para mostrar métricas de consulta en
clickhouse-clienten este tipo de consultas). #34498 (Dmitry Novik). - Se reconoce la extensión
.jsonlpara el formato JSONEachRow. #34496 (Kruglov Pavel). - Mejora la inferencia de esquema en clickhouse-local. Permite escribir simplemente
clickhouse-local -q "select * from table" < data.format. #34495 (Kruglov Pavel). - Los privilegios CREATE/ALTER/DROP ROW POLICY ahora también se pueden conceder sobre una tabla o sobre
database.*, así como globalmente sobre*.*. #34489 (Vitaly Baranov). - Permite exportar archivos de tamaño arbitrario a
s3. Añade dos nuevas configuraciones:s3_upload_part_size_multiply_factorys3_upload_part_size_multiply_parts_count_threshold. Ahora, cada vez que desde una sola consulta se suben a S3s3_upload_part_size_multiply_parts_count_thresholdpartes,s3_min_upload_part_sizese multiplica pors3_upload_part_size_multiply_factor. Corrige #34244. #34422 (alesapin). - Se permite omitir las URL no encontradas (404) en
globsal usar el almacenamiento URL / función de tabla. También cierra #34359. #34392 (Kseniia Sumarokova). - Formatos predeterminados de entrada y salida para
clickhouse-localque se pueden anular con —input-format y —output-format. Cierra #30631. #34352 (李扬). - Agregar opciones para
clickhouse-format. Esto cierra #30528:max_query_size-max_parser_depth. #34349 (李扬). - Mejor gestión de las entradas previas al inicio del cliente. Esto es para #34308. #34336 (Amos Bird).
- Alias de las funciones
REGEXP_MATCHESyREGEXP_REPLACEpara compatibilidad con PostgreSQL. Cierra #30885. #34334 (李扬). - Algunos servidores esperan una cabecera
User-Agenten sus solicitudes HTTP. Se ha añadido una cabeceraUser-Agenta las solicitudes HTTP con el formato: User-Agent: ClickHouse/VERSION_STRING. #34330 (Saad Ur Rahman). - Cancelar las fusiones antes de adquirir el bloqueo de la tabla para la consulta
TRUNCATEevita el errorDEADLOCK_AVOIDEDen algunos casos. Corrige #34302. #34304 (tavplubix). - Cambiar la severidad del mensaje “Se canceló la fusión de partes” en los logs, porque no es un error. Esto cierra #34148. #34232 (alexey-milovidov).
- Se añadió la capacidad de combinar el operador de conversión de tipo
::de estilo PostgreSQL con expresiones que usan los operadores[]y.(indexación de arrays y tuplas). #34229 (Nikolay Degterinsky). - Se reconoce el formato
YYYYMMDD-hhmmssen la funciónparseDateTimeBestEffort. Con esto se cierra #34206. #34208 (alexey-milovidov). - Se permite el retorno de carro en medio de la línea durante el análisis con el formato
Regexp. Esto cierra #34200. #34205 (alexey-milovidov). - Permite analizar la
PRIMARY KEYdel Diccionario comoPRIMARY KEY (id, value); anteriormente solo se admitíaPRIMARY KEY id, value. Cierra #34135. #34141 (Maksim Kita). - Un argumento opcional para
splitByCharque limita el número de elementos resultantes. Cierra #34081. #34140 (李扬). - Se ha mejorado la experiencia de edición de varias líneas en clickhouse-client. Se trata de una continuación de #31123. #34114 (Amos Bird).
- Se agregó compatibilidad con
UUIDen el formato de entrada/salidaMsgPack. #34065 (Kruglov Pavel). - El contexto de tracing (para OpenTelemetry) ahora se propaga a partir de los metadatos del cliente GRPC (este cambio afecta al protocolo cliente-servidor de GRPC). #34064 (andremarianiello).
- Admite todo tipo de consultas
SYSTEMcon la cláusulaON CLUSTER. #34005 (小路). - Mejora la contabilización de memoria para las consultas que usan menos de
max_untracker_memory. #34001 (Azat Khuzhin). - Se corrigió la búsqueda sin distinción entre mayúsculas y minúsculas en cadenas UTF-8 cuando los caracteres en minúscula y mayúscula se representan con un número diferente de bytes. Un ejemplo es
ẞyß. Esto cierra #7334. #33992 (Harry Lee). - Detectar el formato y el esquema a partir de stdin en
clickhouse-local. #33960 (Kruglov Pavel). - Gestiona correctamente el caso de una configuración incorrecta cuando varios discos usan la misma ruta en el sistema de archivos. #29072. #33905 (zhongyuankai).
- Probar todas las direcciones IP resueltas al obtener un proxy de S3. Los proxies de S3 rara vez se usan, principalmente en Yandex Cloud. #33862 (Nikolai Kochetov).
- Se admite la consulta EXPLAIN AST CREATE FUNCTION:
EXPLAIN AST CREATE FUNCTION mycast AS (n) -> cast(n as String)devolveráEXPLAIN AST CREATE FUNCTION mycast AS n -> CAST(n, 'String'). #33819 (李扬). - Se añadió compatibilidad con la conversión de
Map(Key, Value)aArray(Tuple(Key, Value)). #33794 (Maksim Kita). - Se añaden algunas mejoras y correcciones para el tipo de datos
Bool. Corrige #33244. #33737 (Kruglov Pavel). - Analiza y almacena el trace-id de OpenTelemetry en orden big-endian. #33723 (Frank Chen).
- Mejora en las funciones de la familia
fromUnixTimestamp64.. Ahora aceptan cualquier valor entero que pueda convertirse enInt64. Esto cierra: #14648. #33505 (Andrey Zvonov). - Volver a implementar
_shard_numa partir de constantes (véase #7624) mediante la funciónshardNum()(véase #27020), para evitar posibles problemas (como los detectados en #16947). #33392 (Azat Khuzhin). - Habilita las operaciones aritméticas binarias (suma, resta, multiplicación, división, mínimo, máximo) entre Decimal y Float. #33355 (flynn).
- Se respetan los límites de cgroups en la autodetección de max_threads. #33342 (JaySon).
- Se añade la nueva configuración de clickhouse-keeper
min_session_timeout_ms. Ahora clickhouse-keeper determinará el timeout de sesión del cliente según la configuraciónmin_session_timeout_msysession_timeout_ms. #33288 (JackyWoo). - Se añadió compatibilidad con el tipo de datos
UUIDen las funcioneshexybin. #32170 (Frank Chen). - Se corrige la lectura de subcolumnas con puntos en sus nombres. En particular, se corrigió la lectura de las columnas
Nestedcuando los nombres de sus elementos contienen puntos (p. ej.,Nested(`keys.name` String, `keys.id` UInt64, values UInt64)). #34228 (Anton Popov). - Corrige un problema por el que
parallel_view_processing = 0no funcionaba al insertar en una tabla medianteVALUES. - Corrige queview_duration_msenquery_views_logno se estableciera correctamente para las vistas materializadas. #34067 (Raúl Marín). - Se corrige el análisis de la estructura de las tablas desde ZooKeeper: ahora los metadatos de ZooKeeper se comparan con los metadatos locales en su forma canónica. Esto ayuda cuando los nombres canónicos de las funciones pueden cambiar entre versiones de ClickHouse. #33933 (sunny).
- Escapar correctamente ciertos caracteres al interactuar con LDAP. #33401 (IlyaTsoi).
Mejoras de compilación/pruebas/empaquetado
- Eliminar la compatibilidad con compilaciones no incluidas en el paquete. #33690 (Azat Khuzhin).
- Garantizar que las pruebas no dependan del resultado de una ordenación no estable de elementos iguales. Se añadió la aleatorización de rangos de elementos iguales en modo debug después de ordenar para evitar problemas cuando se depende del orden de clasificación de elementos iguales. #34393 (Maksim Kita).
- Añadir más detalle a una comprobación de estilo. #34289 (Mikhail f. Shiryaev).
- Eliminar el paquete Debian
clickhouse-testporque está obsoleto. #33948 (Ilya Yatsishin). - Varias mejoras en el sistema de compilación para eliminar la posibilidad de usar ocasionalmente paquetes del sistema operativo y garantizar compilaciones herméticas. #33695 (Amos Bird).
Corrección de errores (comportamiento incorrecto perceptible para el usuario en una versión oficial estable o preestable)
- Se corrigió la aserción al usar
allow_experimental_parallel_reading_from_replicasconmax_parallel_replicasigual a 1. Esto corrige #34525. #34613 (Nikita Mikhaylov). - Se corrigió un error poco frecuente al leer arrays vacíos, que podía provocar el error
Data compressed with different methods. Puede reproducirse si hay mayormente arrays vacíos, aunque no siempre. Además, la lectura debe realizarse en dirección inversa con ORDER BY … DESC. Es extremadamente improbable que este error llegue a producirse. #34327 (Anton Popov). - Corrige el resultado erróneo de
round/roundBankersal redondear valores enteros de tipos pequeños. Cierra #33267. #34562 (李扬). - A veces, la cancelación de consultas no surtía efecto de inmediato al leer varios archivos de S3 o HDFS. Corrige #34301. Relacionado con #34397. #34539 (Dmitry Novik).
- Soluciona la excepción
Chunk should have AggregatedChunkInfo in MergingAggregatedTransform(en caso deoptimize_aggregation_in_order = 1ydistributed_aggregation_memory_efficient = 0). Soluciona #34526. #34532 (Anton Popov). - Se corrige la comparación entre enteros y números de coma flotante en el análisis de índices. Anteriormente, esto podía provocar que se omitieran por error algunos gránulos durante la lectura. Corrige #34493. #34528 (Anton Popov).
- Se corrige la compatibilidad con la compresión en el motor URL. #34524 (Frank Chen).
- Corrige el posible error ‘file_size: Operation not supported’ en la detección automática del esquema de los archivos. #34479 (Kruglov Pavel).
- Corrige una posible condición de carrera al eliminar tablas. #34416 (Kseniia Sumarokova).
- Se corrige un posible error
Cannot convert column Function to masken la evaluación de funciones con cortocircuito. Cierra #34171. #34415 (Kruglov Pavel). - Corrige un posible cierre inesperado al realizar la inferencia de esquema a partir de una URL. Cierra #34147. #34405 (Kruglov Pavel).
- En los UDFs, los permisos de acceso se comprobaron a nivel de base de datos en lugar de a nivel global, como debería haber sido. Cierra #34281. #34404 (Maksim Kita).
- Corrige la sintaxis incorrecta del motor en el resultado de la consulta
SHOW CREATE DATABASEpara las bases de datos con el motorMemory. Esto cierra #34335. #34345 (alexey-milovidov). - Se corrigieron un par de condiciones de carrera extremadamente raras que podrían provocar un estado inconsistente de la cola de replicación y el error de “partes superpuestas”. #34297 (tavplubix).
- Se corrigió el ancho de la barra de progreso. Se redondeaba incorrectamente a un número entero de caracteres. #34275 (alexey-milovidov).
- Se corrigieron los campos de información del cliente current_user/current_address para la comunicación entre servidores (antes de este parche, current_user/current_address se conservaban de la consulta anterior). #34263 (Azat Khuzhin).
- Se corrigió una fuga de memoria en caso de alguna excepción durante el procesamiento de consultas con
optimize_aggregation_in_order=1. #34234 (Azat Khuzhin). - Se corrige la métrica
Query, que muestra el número de consultas en ejecución. En las últimas versiones, siempre era 0. #34224 (Anton Popov). - Se corrigió la inferencia de esquemas para la función de tabla
s3. #34186 (Kruglov Pavel). - Se corrige una condición de carrera poco frecuente e inocua en los motores de almacenamiento
HDFS,S3yURL, que puede provocar conexiones adicionales. #34172 (alesapin). - Corrige un error que, en raras ocasiones, puede provocar el error “Cannot read all data” al leer columnas LowCardinality de la familia de motores de tabla MergeTree que almacenan datos en un sistema de archivos remoto como S3 (el sistema de archivos virtual sobre S3 es una funcionalidad experimental que no está lista para producción). #34139 (alesapin).
- Se corrigen las inserciones en tablas distribuidas en caso de que cambie el protocolo nativo. El último cambio se produjo en la versión 22.1, por lo que puede haber fallos en las inserciones en tablas distribuidas después de actualizar a esa versión. #34132 (Anton Popov).
- Corrige una posible condición de carrera en el motor de tabla
Fileque se introdujo en #33960. Cierra #34111. #34113 (Kruglov Pavel). - Se corrigió una condición de carrera menor que, en casos extremadamente raros, podía provocar el error de “partes superpuestas” tras perderse la conexión con ZooKeeper. #34096 (tavplubix).
- Se corrigieron las inserciones asíncronas con el formato
Native. #34068 (Anton Popov). - Se corrige un error que impedía que el servidor se iniciara cuando se usaban tanto el almacenamiento de accesos replicados como Keeper (integrado en clickhouse-server). Se introducen dos ajustes para el tiempo de espera del socket de Keeper, en lugar de usar los ajustes del usuario predeterminado:
keeper_server.socket_receive_timeout_secykeeper_server.socket_send_timeout_sec. Corrige #33973. #33988 (alesapin). - Corrige un fallo de segmentación al analizar un archivo ORC con el footer dañado. Cierra #33797. #33984 (Kruglov Pavel).
- Corrige el análisis de IPv6 en un parámetro de consulta (sentencias preparadas) y la conversión de IPv6 a cadena. Cierra #33928. #33971 (Kruglov Pavel).
- Se corrige un bloqueo al leer tuplas anidadas. Corrige #33838. #33956 (Anton Popov).
- Corrige el uso de las funciones
arrayytuplecon argumentos literales en consultas distribuidas. Anteriormente, esto podía provocar la excepciónNot found columns. #33938 (Anton Popov). - El combinador de funciones de agregado
-Ifno procesaba correctamente el argumento de filtroNullable. Esto cierra #27073. #33920 (alexey-milovidov). - Corrige una posible condición de carrera durante la lectura desde un disco remoto (el sistema de archivos virtual sobre S3 es una funcionalidad experimental que no está lista para producción). #33912 (Amos Bird).
- Se corrige un fallo al crear una UDF SQL con una lambda cuyos argumentos no son identificadores. Cierra #33866. #33868 (Maksim Kita).
- Se corrigió el uso de columnas dispersas (que pueden habilitarse con la configuración experimental
ratio_of_defaults_for_sparse_serialization). #33849 (Anton Popov). - Se corrigió el error lógico
replica is not readonlyen la consultaSYSTEM RESTORE REPLICAcuando la réplica estaba realmente en modo readonly. Corrige #33806. #33847 (tavplubix). - Se corrige una fuga de memoria en
clickhouse-keepercuando se usa compresión (por defecto). #33840 (Azat Khuzhin). - Se corrigió el análisis de índices cuando no había tipos comunes disponibles. #33833 (Amos Bird).
- Se corrigió la inferencia de esquema para
JSONEachRowyJSONCompactEachRow. #33830 (Kruglov Pavel). - Se corrigió el uso de diccionarios externos con la fuente
redisy una gran cantidad de claves. #33804 (Anton Popov). - Se corrige un error en el cliente que provocaba ‘Connection reset by peer’ en el servidor. Cierra #33309. #33790 (Kruglov Pavel).
- Se corrige el análisis sintáctico de la consulta INSERT INTO … VALUES SETTINGS … (…), … #33776 (Kruglov Pavel).
- Se corrige un error en la comprobación de la tabla al crear una parte de datos con formato ancho y proyección. #33774 (李扬).
- Se corrige una pequeña condición de carrera entre count() e INSERT/merges/… en MergeTree (es posible que se devuelva un número incorrecto de filas para SELECT con optimize_trivial_count_query). #33753 (Azat Khuzhin).
- Generar una excepción cuando falle la solicitud de listado de directorio en el almacenamiento HDFS. #33724 (LiuNeng).
- Se corrige la mutación cuando la tabla contiene proyecciones. Esto corrige #33010. Esto corrige #33275. #33679 (Amos Bird).
- Determina correctamente la base de datos actual si
CREATE TEMPORARY TABLE AS SELECTse ejecuta dentro de una sesión HTTP con nombre. Este es un caso de uso muy poco frecuente. Esto cierra #8340. #33676 (alexey-milovidov). - Permite ciertas consultas con ordenación, LIMIT BY, ARRAY JOIN y funciones lambda. Esto cierra #7462. #33675 (alexey-milovidov).
- Corrige un error en “zero copy replication” (una funcionalidad que está en desarrollo y no debe usarse en producción) que provocaba la duplicación de datos en casos de TTL move. Corrige #33643. #33642 (alesapin).
- Se corrigió
Chunk should have AggregatedChunkInfo in GroupingAggregatedTransform(en caso deoptimize_aggregation_in_order = 1). #33637 (Azat Khuzhin). - Se corrige el error
Bad cast from type ... to DB::DataTypeArray, que puede producirse cuando una tabla tiene una columnaNestedcon puntos en el nombre y se le genera un valor predeterminado (por ejemplo, duranteinsert, cuando la columna no se incluye en la lista). Continuación de #28762. #33588 (Alexey Pavlenko). - Se ha corregido la exportación a archivos
lz4. Cierra #31421. #31862 (Kruglov Pavel). - Se corrige un posible fallo si
group_by_overflow_modeestaba configurado comoany(GROUP BY aproximado) y la agregación se realizaba sobre una única columna de tipoLowCardinality. #34506 (DR). - Se corrige la inserción en tablas temporales a través del protocolo cliente-servidor gRPC. Corrige #34347, problema
#2. #34364 (Vitaly Baranov). - Se corrige el problema #19429. #34225 (Vitaly Baranov).
- Se corrigió el problema #18206. #33977 (Vitaly Baranov).
- Este PR permite usar varios almacenamientos LDAP en la misma lista de directorios de usuarios. Antes funcionaba, pero se rompió porque las pruebas de LDAP están deshabilitadas (forman parte de las pruebas de testflows). #33574 (Vitaly Baranov).
Lanzamiento de ClickHouse v22.1, 2022-01-18. Presentación, Video
Notas de actualización
- Las funciones
leftyrightantes estaban implementadas en el analizador y ahora tienen funcionalidad completa. Las consultas distribuidas con funcionesleftorightsin alias pueden lanzar una excepción si el clúster contiene distintas versiones de clickhouse-server. Si está actualizando su clúster y encuentra este error, debe completar la actualización del clúster para asegurarse de que todos los nodos tengan la misma versión. También puede añadir alias (AS something) a las columnas de sus consultas para evitar este problema. #33407 (alexey-milovidov). - El uso de recursos de las subconsultas escalares se contabiliza por completo a partir de esta versión. Con este cambio, las filas leídas en las subconsultas escalares ahora se registran en el
query_log. Si la subconsulta escalar está almacenada en caché (se repite o se llama para varias filas), las filas leídas solo se cuentan una vez. Este cambio permite finalizar consultas con KILL e informar del progreso mientras ejecutan subconsultas escalares. #32271 (Raúl Marín).
Nueva funcionalidad
- Implementar la inferencia de esquemas de datos para los formatos de entrada. Permitir omitir la estructura (o escribir solo
auto) en las funciones de tablafile,url,s3,hdfsy en los parámetros declickhouse-local. Permitir omitir la estructura en la consulta CREATE para los motores de tablaFile,HDFS,S3,URL,Merge,Buffer,DistributedyReplicatedMergeTree(si añadimos nuevas réplicas). #32455 (Kruglov Pavel). - Detectar el formato a partir de la extensión del archivo en las funciones de tabla
file/hdfs/s3/urly en los motores de tablaHDFS/S3/URL, así como enSELECT INTO OUTFILEeINSERT FROM INFILE#33565 (Kruglov Pavel). Cierra #30918. #33443 (OnePiece). - Una herramienta para recopilar datos de diagnóstico si necesita asistencia técnica. #33175 (Alexander Burmak).
- Descubrimiento automático del clúster mediante Zoo/Keeper. Permite añadir réplicas al clúster sin cambiar la configuración en cada servidor. #31442 (vdimir).
- Implementa el motor de tabla Hive para acceder a Apache Hive desde ClickHouse. Esto implementa: #29245. #31104 (taiyang-li).
- Se añaden las funciones de agregación
cramersV,cramersVBiasCorrected,theilsUycontingency. Estas funciones calculan la dependencia (una medida de asociación) entre valores categóricos. Todas ellas usan una tabla cruzada (un histograma de pares) para su implementación. Puede entenderse como un coeficiente de correlación, pero para cualquier valor discreto (no necesariamente numérico). #33366 (alexey-milovidov). Implementación inicial de Vanyok-All-is-OK y antikvist. - Se añadió la función de tabla
hdfsCluster, que permite procesar en paralelo archivos de HDFS desde varios nodos de un clúster especificado, de forma similar as3Cluster. #32400 (Zhichang Yu). - Se añade compatibilidad con discos basados en Azure Blob Storage, de forma similar a como se ha hecho con los discos basados en S3 de AWS. #31505 (Jakub Kuklis).
- Se permite
COMMENTenCREATE VIEW(para todos los tipos de VIEW). #31062 (Vasily Nemkov). - Reinicializa dinámicamente los puertos y protocolos de escucha cuando cambia la configuración. #30549 (Kevin Michel).
- Se añadieron las funciones
left,right,leftUTF8,rightUTF8. Se corrigió un error en la implementación de la funciónsubstringUTF8con un offset negativo (desplazamiento desde el final de la cadena). #33407 (alexey-milovidov). - Se añaden nuevas funciones para el sistema de coordenadas
H3:h3HexAreaKm2,h3CellAreaM2,h3CellAreaRads2. #33479 (Bharat Nallan). - Se añade la función
MONTHNAME. #33436 (usurai). - Se añadió la función
arrayLast. Cierra #33390. #33415 Se añadió la funciónarrayLastIndex. #33465 (Maksim Kita). - Se añade la función
decodeURLFormComponent, ligeramente distinta dedecodeURLComponent. Cierra #10298. #33451 (SuperDJY). - Permite separar las reglas de rollup de
GraphiteMergeTreepara métricas simples y etiquetadas (campo rule_type opcional). #33494 (Michail Safronov).
Mejora del rendimiento
- Se admite mover condiciones a
PREWHERE(configuraciónoptimize_move_to_prewhere) para tablas con motorMergesi todas sus tablas subyacentes admitenPREWHERE. #33300 (Anton Popov). - Manejo más eficiente de globs para el almacenamiento URL. Ahora puede consultar fácilmente un millón de URL en paralelo con reintentos. Cierra #32866. #32907 (Kseniia Sumarokova).
- Evita el backtracking exponencial en el parser. Esto cierra #20158. #33481 (alexey-milovidov).
- El uso indebido de la función
untupleprovocaba una complejidad exponencial en el análisis de consultas (detectado por un fuzzer). Esto cierra #33297. #33445 (alexey-milovidov). - Reduce la memoria asignada a diccionarios con atributos de tipo cadena. #33466 (Maksim Kita).
- Ligera mejora del rendimiento de la función
reinterpret. #32587 (alexey-milovidov). - Cambio poco significativo. En casos extremadamente raros en los que se pierde una parte de datos en cada réplica, después de fusionar algunas partes de datos, las consultas posteriores pueden omitir menos particiones durante la poda de particiones. Esto prácticamente no afecta a nada. #32220 (Azat Khuzhin).
- Mejora el rendimiento de escritura de
clickhouse-keeperal optimizar la lógica de cálculo del tamaño. #32366 (zhanglistar). - Optimiza la materialización de proyecciones de una sola parte. Esto cierra #31669. #31885 (Amos Bird).
- Mejora el rendimiento de las consultas en las tablas del sistema. #33312 (OnePiece).
- Optimiza la selección de partes de MergeTree que pueden moverse entre volúmenes. #33225 (OnePiece).
- Corrige el rendimiento del diccionario
sparse_hashedcon claves secuenciales (función hash incorrecta). #32536 (Azat Khuzhin).
Funcionalidad experimental
- Lectura paralela desde múltiples réplicas dentro de un segmento durante una consulta distribuida sin usar una clave de muestreo. Para habilitar esto, establezca
allow_experimental_parallel_reading_from_replicas = 1ymax_parallel_replicasen cualquier valor numérico. Esto cierra #26748. #29279 (Nikita Mikhaylov). - Se implementó la serialización dispersa. Puede reducir el uso de espacio en disco y mejorar el rendimiento de algunas consultas en columnas que contienen muchos valores predeterminados (cero). Puede habilitarse configurando
ratio_for_sparse_serialization. La serialización dispersa se elegirá dinámicamente para una columna si la proporción entre la cantidad de valores predeterminados y la cantidad total de valores supera ese umbral. La serialización (predeterminada o dispersa) será fija para cada columna en una parte, pero puede variar entre partes. #22535 (Anton Popov). - Se añadió la funcionalidad “TABLE OVERRIDE” para personalizar los esquemas de tabla de MaterializedMySQL. #32325 (Stig Bakken).
- Se añadió la consulta
EXPLAIN TABLE OVERRIDE. #32836 (Stig Bakken). - Se añadió compatibilidad con la cláusula TABLE OVERRIDE para MaterializedPostgreSQL. RFC: #31480. #32749 (Kseniia Sumarokova).
- Se cambió la ruta de ZooKeeper para las marks de zero-copy de shared data. Tenga en cuenta que “zero-copy replication” es una funcionalidad no apta para producción (en una fase temprana de desarrollo) que, en cualquier caso, no debería usar. Pero, si la ha usado, tenga presente este cambio. #32061 (ianton-ru).
- Se añadió compatibilidad con la cláusula Events para la consulta watch de WINDOW VIEW. #32607 (vxider).
- Se corrigió la ACL con hash numérico explícito en
clickhouse-keeper: ahora el comportamiento es consistente con ZooKeeper y el digest generado siempre se acepta. #33249 (小路). #33246. - Se corrigió la eliminación inesperada de una proyección al desacoplar partes. #32067 (Amos Bird).
Mejora
- Ahora, las funciones de conversión de fecha y hora que generen una fecha anterior a
1970-01-01 00:00:00se saturarán a cero en lugar de provocar un desbordamiento. #29953 (Amos Bird). También corrige un error en el análisis de índices cuando la función de truncado de fecha producía un resultado anterior a la época Unix. - Mostrar siempre en el cliente el uso de recursos (uso total de CPU, uso total de RAM y uso máximo de RAM por host). #33271 (alexey-milovidov).
- Se mejora la serialización y deserialización del tipo
Booly se comprueba el rango de valores. #32984 (Kruglov Pavel). - Si se define una configuración no válida mediante la consulta
SETo mediante los parámetros de consulta de la solicitud HTTP, el mensaje de error incluirá sugerencias similares a la cadena de configuración no válida (si existe alguna). #32946 (Antonio Andelic). - Compatibilidad con sugerencias para nombres de configuración mal escritos en clickhouse-client y clickhouse-local. Cierra #32237. #32841 (凌涛).
- Se permite usar columnas virtuales en las vistas materializadas. Cierra #11210. #33482 (OnePiece).
- Se añade una configuración para deshabilitar IPv6 en clickhouse-keeper si es necesario. Esto cierra #33381. #33450 (Wu Xueyang).
- Se añadió más información a
system.build_optionssobre la revisión actual de git. #33431 (taiyang-li). clickhouse-local: seguimiento de la memoria con la opción--max_memory_usage_in_client. #33341 (Azat Khuzhin).- Permitir intervalos negativos en la función
intervalLengthSum. Su duración también se sumará. Esto cierra #33323. #33335 (alexey-milovidov). LineAsStringse puede usar como formato de salida. Esto cierra #30919. #33331 (Sergei Trifonov).- Se admite
<secure/>en la configuración del clúster, como forma alternativa de<secure>1</secure>. Cierra #33270. #33330 (SuperDJY). - Al pulsar Ctrl+C dos veces,
clickhouse-benchmarkse terminará de inmediato sin esperar a las consultas en curso. Esto cierra #32586. #33303 (alexey-milovidov). - Se admite timestamp de Unix con milisegundos en la función
parseDateTimeBestEffort. #33276 (Ben). - Permite cancelar la consulta mientras se leen datos de una tabla externa en los formatos
Arrow/Parquet/ORC; antes no se podía cancelar en el caso de archivos grandes cuando input_format_allow_seeks estaba establecido en false. Cierra #29678. #33238 (Kseniia Sumarokova). - Si el motor de la tabla admite la cláusula
SETTINGS, se permite pasar la configuración como pares clave-valor o mediante la configuración. Se añade esta compatibilidad para MySQL. #33231 (Kseniia Sumarokova). - Impedir correctamente las claves primarias Nullable cuando sea necesario. Esto es para #32780. #33218 (Amos Bird).
- Añadir reintentos para las conexiones de
PostgreSQLen caso de que aún no se haya obtenido nada. Cierra #33199. #33209 (Kseniia Sumarokova). - Validar las claves de configuración de los diccionarios externos. #33095. #33130 (Kseniia Sumarokova).
- Enviar información de perfil desde
clickhouse-local. Cierra #33093. #33097 (Kseniia Sumarokova). - Evaluación de cortocircuito: compatibilidad con la función
throwIf. Cierra #32969. #32973 (Maksim Kita). - (Esto solo ocurre en compilaciones no oficiales). Se corrigió un segfault al insertar datos en columnas comprimidas de tipo Decimal, String, FixedString y Array. Esto resuelve #32939. #32940 (N. Kolotov).
- Se añadió compatibilidad para especificar una subconsulta como una función definida por el usuario en SQL. Ejemplo:
CREATE FUNCTION test AS () -> (SELECT 1). Cierra #30755. #32758 (Maksim Kita). - Mejora la compatibilidad con la compresión de gRPC para #28671. #32747 (Vitaly Baranov).
- Volcar todas las partes de datos en memoria cuando WAL no está habilitado al apagar el servidor o desacoplar la tabla. #32742 (nauta).
- Permite controlar los tiempos de espera de conexión para MySQL (anteriormente, esto solo era compatible con el origen del Diccionario). Cierra #16669. Antes, el valor predeterminado de connect_timeout era bastante bajo; ahora es configurable. #32734 (Kseniia Sumarokova).
- Se admite la opción
authSourcepara el almacenamientoMongoDB. Cierra #32594. #32702 (Kseniia Sumarokova). - Se admite el tipo
Date32en la función de tablagenarateRandom. #32643 (nauta). - Se añaden las configuraciones
max_concurrent_select_queriesymax_concurrent_insert_queriespara controlar las consultas concurrentes según el tipo de consulta. Cierra #3575. #32609 (SuperDJY). - Mejora en el manejo de estructuras anidadas con columnas faltantes al leer datos en formato
Protobuf. Como continuación de https://github.com/ClickHouse/ClickHouse/pull/31988. #32531 (Vitaly Baranov). - Permitir credenciales vacías para el motor
MongoDB. Cierra #26267. #32460 (Kseniia Sumarokova). - Deshabilita algunas optimizaciones de las funciones de ventana que pueden provocar excepciones. Cierra #31535. Cierra #31620. #32453 (Kseniia Sumarokova).
- Permite la conexión a MongoDB 5.0. Cierra #31483. #32416 (Kseniia Sumarokova).
- Se habilita la comparación entre
DecimalyFloat. Cierra #22626. #31966 (flynn). - Se agregaron las configuraciones
command_read_timeoutycommand_write_timeoutparaStorageExecutable,StorageExecutablePool,ExecutableDictionary,ExecutablePoolDictionaryyExecutableUserDefinedFunctions. La configuracióncommand_read_timeoutcontrola el tiempo de espera para leer datos desde la salida estándar (stdout) del comando, en milisegundos. La configuracióncommand_write_timeoutcontrola el tiempo de espera para escribir datos en la entrada estándar (stdin) del comando, en milisegundos. Se agregó la configuracióncommand_termination_timeoutparaExecutableUserDefinedFunction,ExecutableDictionaryyStorageExecutable. Se agregó la configuraciónexecute_directparaExecutableUserDefinedFunction; su valor predeterminado es true. Se agregó la configuraciónexecute_directparaExecutableDictionaryyExecutablePoolDictionary; su valor predeterminado es false. #30957 (Maksim Kita). - Las funciones de agregación de bitmap devolverán el resultado correcto para argumentos fuera de rango, en lugar de hacer wraparound. #33127 (DR).
- Se corrige el análisis sintáctico de consultas incorrectas con la sentencia
FROM INFILE. #33521 (Kruglov Pavel). - No se permite escribir en
S3si la ruta contiene globs. #33142 (Kruglov Pavel). - La opción
--echono se usaba enclickhouse-clienten modo por lotes con una sola consulta. #32843 (N. Kolotov). - Usa la opción
--databasecon clickhouse-local. #32797 (Kseniia Sumarokova). - Se corrigió un código sorprendentemente deficiente en la función SQL ordinaria
file. Ahora admite enlaces simbólicos. #32640 (alexey-milovidov). - Actualización de
modification_timede la parte de datos ensystem.partstras mover la parte #32964. #32965 (save-my-heart). - Posible problema, no es explotable: puede producirse un desbordamiento de enteros al redimensionar un array. #33024 (varadarajkumar).
Mejoras de compilación/pruebas/empaquetado
- Se añadieron paquetes, pruebas funcionales y compilaciones de Docker para la versión AArch64 (ARM) de ClickHouse. #32911 (Mikhail f. Shiryaev). #32415
- Se preparó ClickHouse para compilarse con musl-libc. No está habilitado de forma predeterminada. #33134 (alexey-milovidov).
- Se hizo que el script de instalación funcionara en FreeBSD. Esto cierra #33384. #33418 (alexey-milovidov).
- Se añadió
actionlintpara los flujos de trabajo de GitHub Actions y se verificaron los archivos del flujo de trabajo conact --listpara comprobar que la sintaxis fuera correcta. #33612 (Mikhail f. Shiryaev). - Se añadieron más pruebas para la funcionalidad de clave primaria Nullable. También se añadieron más pruebas con distintos types y tipos de MergeTree, además de datos generados aleatoriamente. #33228 (Amos Bird).
- Se añadió una herramienta sencilla para visualizar pruebas inestables en el navegador web. #33185 (alexey-milovidov).
- Se habilitó la compilación hermética para las builds compartidas. Esto es principalmente para desarrolladores. #32968 (Amos Bird).
- Se actualizaron
libc++ylibc++abia la versión más reciente. #32484 (Raúl Marín). - Se añadió una prueba de integración para el cliente externo de .NET (ClickHouse.Client). #23230 (Oleg V. Kozlyuk).
- Se inyectó información de git en el archivo binary de clickhouse. Así, podemos obtener fácilmente la revisión del código fuente a partir del archivo binary de clickhouse. #33124 (taiyang-li).
- Se eliminó código obsoleto de ConfigProcessor. El código específico de Yandex ya no se usa. Contenía un defecto menor. Este defecto fue reportado por Mallik Hassan en #33032. Esto cierra #33032. #33026 (alexey-milovidov).
Corrección de errores (fallo visible para el usuario en una versión oficial estable o preestable)
- Varias correcciones en el análisis de formatos. Esto es relevante si un adversario tiene acceso de escritura a
clickhouse-server. Los datos de entrada específicamente diseñados para el formatoNativepueden provocar la lectura de memoria no inicializada o un fallo. Esto es relevante si un adversario tiene acceso de escritura aclickhouse-server. #33050 (Heena Bansal). Se corrigió un problema de índice fuera de rango en el tipo Union de Apache Avro en el formato binario de Apache Avro. #33022 (Harry Lee). Se corrigió una desreferenciación de puntero nulo en datosLowCardinalityal deserializar datosLowCardinalityen el formato Native. #33021 (Harry Lee). - El manejador de ClickHouse Keeper eliminará correctamente la operación una vez enviada la respuesta. #32988 (JackyWoo).
- Posible error de cálculo por desfase de una unidad en las cuotas: no se alcanzó el límite de la cuota, pero aun así se excedió. Esto corrige #31174. #31656 (sunny).
- Se corrigió la conversión mediante CAST de String a IPv4 o IPv6, y viceversa. Se corrigió el mensaje de error en caso de que la conversión fallara. #29224 (Dmitry Novik) #27914 (Vasily Nemkov).
- Se corrigió una excepción del tipo
Unknown aggregate function nothingdurante la ejecución en un servidor remoto. Esto corrige #16689. #26074 (hexiaoting). - Se corrigió la base de datos incorrecta para JOIN sin una base de datos explícita en consultas distribuidas (Corrige: #10471). #33611 (Azat Khuzhin).
- Se corrige un segfault en el formato Apache
Avroque aparece después de la segunda inserción en un archivo. #33566 (Kruglov Pavel). - Se corrigió un segfault en el formato Apache
Arrowsi el esquema contiene el tipoDictionary. Cierra #33507. #33529 (Kruglov Pavel). - La configuración de
offsetylimitfuera de banda puede aplicarse de forma incorrecta a las vistas. Cierra #33289 #33518 (hexiaoting). - Se corrige una excepción,
Block structure mismatch, que puede producirse durante la inserción en una tabla con una columna anidadaLowCardinalitypredeterminada. Corrige #33028. #33504 (Nikolai Kochetov). - Se corrigen las expresiones del Diccionario para los atributos de rango mínimo y máximo de
range_hashedcuando se crean mediante DDL. Cierra #30809. #33478 (Maksim Kita). - Se corrige un posible uso de memoria después de liberarla en
INSERTsobre una vista materializada conDROPconcurrente (Azat Khuzhin). - No intente leer más allá de EOF (como solución temporal para un error del kernel de Linux); este error puede reproducirse en kernels (3.14..5.9) y requiere
index_granularity_bytes=0(es decir, desactivar la granularidad adaptativa del índice). #33372 (Azat Khuzhin). - Los comandos
SYSTEM SUSPENDySYSTEM ... THREAD FUZZERno tenían control de acceso. Se ha corregido. Autor: Kevin Michel. #33333 (alexey-milovidov). - Se corrige un problema por el que
COMMENTde los diccionarios no aparece ensystem.tablesni ensystem.dictionaries. Se permite modificar el comentario del motorDictionary. Cierra #33251. #33261 (Maksim Kita). - Se agregan las inserciones asíncronas (con la opción
async_inserthabilitada) al registro de consultas. Antes, estas consultas no aparecían en el registro de consultas. #33239 (Anton Popov). - Se corrige el envío de expresiones
WHERE 1 = 0en consultas a bases de datos externas. Cierra #33152. #33214 (Kseniia Sumarokova). - Corrige la validación de DDL para MaterializedPostgreSQL. Corrige el ajuste
materialized_postgresql_allow_automatic_update. Cierra #29535. #33200 (Kseniia Sumarokova). Garantiza que los slots de replicación no utilizados se eliminen siempre. Detectado en #26952. #33187 (Kseniia Sumarokova). Corrige detach/attach de MaterializedPostreSQL (eliminación/adición a la replicación) para tablas con un esquema distinto del predeterminado. Detectado en #29535. #33179 (Kseniia Sumarokova). Corrige DROP de la base de datos MaterializedPostgreSQL. #33468 (Kseniia Sumarokova). - La métrica
StorageBufferBytesa veces se calculó incorrectamente. #33159 (xuyatian). - Corregido el error
Invalid version for SerializationLowCardinality key columnal leer una columnaLowCardinalityconlocal_filesystem_read_prefetchoremote_filesystem_read_prefetchhabilitado. #33046 (Nikolai Kochetov). - Se corrige la
table functions3al leer archivos vacíos. Cierra #33008. #33037 (Kseniia Sumarokova). - Se corrige una fuga de Context en el caso de cancel_http_readonly_queries_on_client_close (es decir, la fuga de tablas externas que se habían subido al servidor y de otros recursos). #32982 (Azat Khuzhin).
- Corrige la salida incorrecta de tuplas en formato
CSVcuando se usa un delimitador CSV personalizado. #32981 (Kruglov Pavel). - Se corrige la comprobación de la URL de HDFS, que no permitía usar la dirección del namenode de alta disponibilidad. El error se introdujo en https://github.com/ClickHouse/ClickHouse/pull/31042. #32976 (Kruglov Pavel).
- Se corrige una excepción del tipo
positional argument out of boundsque se producía con argumentos no posicionales. Cierra #31173#event-5789668239. #32961 (Kseniia Sumarokova). - Corregir UB en caso de EOF inesperado durante el llenado de un Set desde una consulta por HTTP (es decir, si el cliente interrumpe a mitad del proceso; por ejemplo,
timeout 0.15s curl -Ss -F 's=@t.csv;' 'http://127.0.0.1:8123/?s_structure=key+Int&query=SELECT+dummy+IN+s'y con unt.csvlo bastante grande). #32955 (Azat Khuzhin). - Corrige una regresión en la función
replaceRegexpAll. La función se comportaba incorrectamente cuando la subcadena coincidente estaba vacía. Esto cierra #32777. Esto cierra #30245. #32945 (alexey-milovidov). - Se corrige la lectura de
stripeen el formatoORC. #32929 (kreuzerkrieg). topKWeightedStatefalló con algunos tipos de entrada. #32487. #32914 (vdimir).- Se corrige la excepción
Single chunk is expected from view inner query (LOGICAL_ERROR)en una vista materializada. Corrige #31419. #32862 (Nikolai Kochetov). - Corrige la optimización con seek diferido para lecturas asíncronas desde sistemas de archivos remotos. Cierra #32803. #32835 (Kseniia Sumarokova).
- El motor de tabla
MergeTreepodría omitir silenciosamente algunas mutaciones si hay demasiadas mutaciones en ejecución o en caso de alto consumo de memoria; ya se ha corregido. Corrige #17882. #32814 (tavplubix). - Se evita reutilizar la caché de subconsultas escalares al procesar bloques de MV. Esto corrige un error que se producía cuando la consulta escalar hacía referencia a la tabla de origen, pero implica que todas las subconsultas escalares de la definición de la MV se calcularán para cada bloque. #32811 (Raúl Marín).
- Es posible que el servidor no pudiera iniciarse si una base de datos con motor
MySQLno podía conectarse al servidor MySQL; esto ya se ha corregido. Corrige #14441. #32802 (tavplubix). - Se corrige el bloqueo al usar la función
fuzzBits; se cierra #32737. #32755 (SuperDJY). - Se corrige el error
Column is not under aggregate functionen el caso de una MV conGROUP BY (list of columns)(que se interpreta comoGROUP BY tuple(...)) sobreKafka/RabbitMQ. Corrige #32668 y #32744. #32751 (Nikolai Kochetov). - Se corrige la consulta
ALTER TABLE ... MATERIALIZE TTLen los modosTTL ... DELETE WHERE ...yTTL ... GROUP BY .... #32695 (Anton Popov). - Se corrige la optimización
optimize_read_in_orderen los casos en que el motor de tabla seaDistributedoMergey las tablasMergeTreesubyacentes tengan una función monótona en el prefijo de la clave de ordenación. #32670 (Anton Popov). - Se corrige la excepción LOGICAL_ERROR cuando el destino de una vista materializada es una tabla JOIN o SET. #32669 (Raúl Marín).
- La inserción en S3 con carga multiparte en Google Cloud Storage puede desencadenar una cancelación. #32504. #32649 (vdimir).
- Se corrige una posible excepción al iniciar el almacenamiento
RabbitMQretrasando la creación del canal. #32584 (Kseniia Sumarokova). - Corregido el ciclo de vida de la tabla (es decir, un posible uso de memoria ya liberada) en caso de DROP TABLE e INSERT en paralelo. #32572 (Azat Khuzhin).
- Se corrigen las inserciones asíncronas con los formatos
CustomSeparated,Template,Regexp,MsgPackyJSONAsString. Anteriormente, las inserciones asíncronas con estos formatos no leían datos. #32530 (Kruglov Pavel). - Se corrige la función
groupBitmapAnden tabla distribuida. #32529 (minhthucdao). - Se corrige un fallo en JOIN detectado por el fuzzer; cierra #32458. #32508 (vdimir).
- Corrección del manejo de casos con duplicación de columnas en Apache Arrow. #32507 (Dmitriy Mokhnatkin).
- Se corrigió un problema de formato ambiguo en consultas distribuidas que provocaba errores cuando algunas columnas de la tabla se llamaban
ALLoDISTINCT. Esto cierra #32391. #32490 (alexey-milovidov). - Corrige fallos en las consultas que intentan usar índices de omisión que aún no se han materializado. Corrige #32292 y #30343. #32359 (Anton Popov).
- Se corrige una consulta
selectque fallaba cuando hay más de 2 políticas de fila en la misma columna, a partir de la segunda consulta de la misma sesión. #31606. #32291 (SuperDJY). - Se corrige la conversión de marcas de tiempo Unix fraccionarias a
DateTime64; la parte fraccionaria estaba invertida para las marcas de tiempo Unix negativas (anteriores a 1970-01-01). #32240 (Ben). - Algunas entradas de la cola de replicación podrían quedarse bloqueadas durante
temporary_directories_lifetime(1 día de forma predeterminada) conDirectory tmp_merge_<part_name>oPart ... (state Deleting) already exists, but it will be deleted soonu otro error similar. Se ha corregido. Soluciona #29616. #32201 (tavplubix). - Se corrige el análisis del transformador de columnas
APPLY lambda, que podía provocar un bloqueo del cliente o del servidor. #32138 (Kruglov Pavel). - Se corrige un problema por el que
base64Encodeagregaba bytes finales en cadenas pequeñas. #31797 (Kevin Michel). - Se corrige un posible fallo (o un resultado incorrecto) en el caso de argumentos
LowCardinalityen una función de ventana. Corrige #31114. #31888 (Nikolai Kochetov). - Se corrige el cuelgue con el comando
DROP TABLE system.query_log sync. #33293 (zhanghuajie).