lanzamiento de ClickHouse 20.12
Lanzamiento de ClickHouse v20.12.5.14-stable, 2020-12-28
Corrección de errores
- Se deshabilita la escritura con AIO durante las merges porque puede provocar, en casos extremadamente raros, corrupción de datos en las columnas de la primary key durante la merge. #18481 (alesapin).
- Se corrigió el error
value is too shortal ejecutar funcionestoType(...)(toDate,toUInt32, etc.) con un argumento de tipoNullable(String). Ahora estas funciones devuelvenNULLen caso de parsing error en lugar de lanzar una excepción. Corrige #7673. #18445 (tavplubix). - Se restringen las merges de partes wide a compact. En el caso de vertical merge, esto provocaba que la parte resultante quedara dañada. #18381 (Anton Popov).
- Se corrige el llenado de la tabla
system.settings_profile_elements. Este PR corrige #18231. #18379 (Vitaly Baranov). - Se corrigen posibles fallos en función de agregación con el combinator
Distinctal usar two-level aggregation. Corrige #17682. #18365 (Anton Popov). - Se corrige el error por el que la consulta
MODIFY COLUMN ... REMOVE TTLen realidad no elimina el TTL de la columna. #18130 (alesapin).
mejora de compilación/pruebas/empaquetado
Lanzamiento de ClickHouse v20.12.4.5-stable, 2020-12-24
Corrección de errores
- Se corrigió un problema por el que el proceso
clickhouse-odbc-bridgeno era accesible para el servidor en máquinas con pila dual IPv4/IPv6; - Se corrigió un problema por el que las actualizaciones del Diccionario ODBC se realizaban con consultas malformadas y/o provocaban fallos; Posiblemente cierra #14489. #18278 (Denis Glazachev). - Se corrigió la comparación de claves entre los tipos Enum e Int. Esto corrige #17989. #18214 (Amos Bird).
- Se corrigió un fallo en la conversión de claves únicas en el motor de base de datos
MaterializeMySQL. Esto corrige #18186 y #16372 #18211 (Winter Zhang). - Se corrigió
std::out_of_range: basic_stringen el análisis de URL de S3. #18059 (Vladimir Chebotarev). - Se corrigió un problema por el que algunas tablas no se sincronizaban desde MySQL a ClickHouse debido a que la conversión de índices de prefijo de MySQL no era compatible con MaterializeMySQL. Esto corrige #15187 y #17912 #17944 (Winter Zhang).
- Se corrigió un problema por el que la optimización de consultas producía resultados incorrectos si la consulta contenía
ARRAY JOIN. #17887 (sundyli). - Se corrigió un posible segfault en la función de agregado
topK. Esto cierra #17404. #17845 (Maksim Kita). - Se corrigió que la tabla
system.stack_traceapareciera vacía cuando el servidor se ejecutaba en modo daemon. #17630 (Amos Bird).
Lanzamiento de ClickHouse v20.12.3.3-estable, 2020-12-13
Cambio incompatible con versiones anteriores
- Se habilita
use_compact_format_in_distributed_parts_namesde forma predeterminada (consulta la documentación de referencia). #16728 (Azat Khuzhin). - Se aceptan configuraciones de usuario relacionadas con los formatos de archivo (p. ej.,
format_csv_delimiter) en la cláusulaSETTINGSal crear una tabla que utiliza el motorFile, y estas configuraciones se usan en todos losINSERTySELECT. Los cambios en la configuración del formato de archivo realizados en la sesión actual del usuario, o en la cláusulaSETTINGSde una consulta DML, ya no afectan a la consulta. #16591 (Alexander Kuzmenkov).
Nueva funcionalidad
- Se añade compatibilidad con la compresión/descompresión
*.xz. Permite usar*.xzen la funciónfile(). Esto cierra #8828. #16578 (Abi Palagashvili). - Se introduce la consulta
ALTER TABLE ... DROP|DETACH PART 'part_name'. #15511 (nvartolomei). - Se añadió una nueva sintaxis
ALTER UPDATE/DELETE IN PARTITION. #13403 (Vladimir Chebotarev). - Permite formatear tuplas con nombre como JSON objects al usar formatos JSON de entrada/salida, controlado por la configuración
output_format_json_named_tuples_as_objects, desactivada de forma predeterminada. #17175 (Alexander Kuzmenkov). - Añade la posibilidad de introducir el valor de un enum como su id en los formatos TSV y CSV de forma predeterminada. #16834 (Kruglov Pavel).
- Añade compatibilidad con COLLATE para Nullable, LowCardinality, Array y Tuple, cuando el tipo anidado es String. También refactoriza el código asociado con collations en ColumnString.cpp. #16273 (Kruglov Pavel).
- La nueva función
tcpPortdevuelve el puerto TCP en el que escucha este server. #17134 (Ivan). - Añade nuevas funciones matemáticas:
acosh,asinh,atan2,atanh,cosh,hypot,log1p,sinh. #16636 (Konstantin Malanchev). - Posibilidad de distribuir las merges entre distintas réplicas. Introduce la configuración de MergeTree
execute_merges_on_single_replica_time_threshold. #16424 (filimonov). - Añade la configuración
aggregate_functions_null_for_emptypara compatibilidad con el estándar SQL. Esta opción reescribirá todas las función de agregación de una consulta, añadiéndoles el sufijo -OrNull. Implementa 10273. #16123 (flynn). - Se actualizó el parsing de DateTime y DateTime64 para aceptar el formato literal de fecha como cadena. #16040 (Maksim Kita).
- Permite cambiar la ruta al archivo de history en
clickhouse-clientmediante el parámetro--history_file. #15960 (Maksim Kita).
Corrección de errores
- Corrige el problema por el que el servidor puede dejar de aceptar conexiones en casos muy raros. #17542 (Amos Bird).
- Se corrigió el error
Function not implementedal ejecutar la consultaRENAMEen la base de datosAtomiccuando ClickHouse se ejecutaba en Windows Subsystem for Linux. Corrige #17661. #17664 (tavplubix). - No restaurar las partes desde WAL si
in_memory_parts_enable_walestá deshabilitado. #17802 (detailyang). - se corrige la inicialización incorrecta de
max_compress_block_sizeen MergeTreeWriterSettings conmin_compress_block_size. #17833 (flynn). - El mensaje de excepción sobre el tamaño máximo de la tabla que se podía eliminar se mostraba de forma incorrecta. #17764 (alexey-milovidov).
- Se corrigió un posible fallo de segmentación cuando no había suficiente espacio al insertar en la tabla
Distributed. #17737 (tavplubix). - Se solucionó un problema por el que ClickHouse no podía reanudar la conexión con los servidores MySQL. #17681 (Alexander Kazakov).
- Podía determinarse de forma incorrecta si el clúster tenía replicación circular (cruzada) o no al ejecutar una consulta
ON CLUSTER, debido a una condición de carrera cuandopool_size> 1. Se ha corregido. #17640 (tavplubix). - La excepción
fmt::v7::format_errorpuede registrarse en segundo plano para las tablas MergeTree. Esto corrige #17613. #17615 (alexey-milovidov). - Cuando
clickhouse-clientse usaba en modo interactivo con consultas de varias líneas, el comentario de una sola línea se extendía por error hasta el final de la consulta. Esto corrige #13654. #17565 (alexey-milovidov). - Se corrige el bloqueo de la consulta ALTER cuando la mutación correspondiente se cancelaba en una réplica diferente. Corrige #16953. #17499 (alesapin).
- Se corrige un problema por el que ClickHouse subestimaba el tamaño de la caché de marcas. Esto puede ocurrir cuando hay muchos archivos muy pequeños con marcas. #17496 (alesapin).
- Se corrige
ORDER BYcon la configuraciónoptimize_redundant_functions_in_order_byhabilitada. #17471 (Anton Popov). - Corrige los duplicados después de
DISTINCT, que podían producirse debido a una optimización incorrecta. Soluciona #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov). - Se corrige un bloqueo al leer de la tabla
JOINcon tiposLowCardinality. Corrige #17228. #17397 (Nikolai Kochetov). - Se corrigió el desbordamiento de pila en
toInt256(inf). Int256 es una funcionalidad experimental. Se cerró #17235. #17257 (flynn). - Se corrige un posible error
Unexpected packet Data received from clientregistrado en consultas de Distributed conLIMIT. #17254 (Azat Khuzhin). - Corrige la invalidación del índice Set cuando hay columnas constantes en la subconsulta. Esto corrige #17246. #17249 (Amos Bird).
- Se corrige un posible análisis incorrecto del índice cuando los tipos de la comparación del índice son distintos. Esto corrige #17122. #17145 (Amos Bird).
- Se corrige la comparación de ColumnConst que provocaba un fallo. Esto corrige #17088 . #17135 (Amos Bird).
- Varias correcciones en MaterializeMySQL (característica experimental). Corrige #16923 Corrige #15883 Corrige el fallo de SYNC de MaterializeMySQL al modificar el binlog_checksum de MySQL. #17091 (Winter Zhang).
- Se corrige un error por el que las consultas
ON CLUSTERpodían quedarse bloqueadas indefinidamente en tablas ReplicatedMergeTree no líderes. #17089 (alesapin). - Se corrigió un cierre inesperado en la consulta
CREATE TABLE ... AS some_tablecuandosome_tablese había creado conAS table_function(). Corrige #16944. #17072 (tavplubix). - Corrección de un error en la implementación incompleta de la función fuzzBits, problema relacionado: #16980. #17051 (hexiaoting).
- Se corrige
libunwindde LLVM en el caso en que el registro CFA es RAX. Este es el error delibunwindde LLVM. Ya tenemos soluciones alternativas para este error. #17046 (alexey-milovidov). - Evitar errores de red innecesarios en consultas remotas que pueden cancelarse durante la ejecución, como las consultas con
LIMIT. #17006 (Azat Khuzhin). - Se corrigió la configuración
optimize_distributed_group_by_sharding_key(deshabilitada de forma predeterminada) para consultas con solo OFFSET. #16996 (Azat Khuzhin). - Corrección para las tablas Merge sobre tablas Distributed con JOIN. #16993 (Azat Khuzhin).
- Se corrigió un resultado incorrecto en enteros grandes (128 y 256 bits) al hacer CAST desde double. La compatibilidad con enteros grandes es experimental. #16986 (Mike).
- Se corrige un posible fallo del servidor tras
ALTER TABLE ... MODIFY COLUMN ... NewTypecuandoSELECTtiene una expresiónWHEREsobre la columna que se está modificando y la operaciónALTERaún no ha finalizado. #16968 (Amos Bird). - La información de autoría no se calculó correctamente en
clickhouse-git-import. #16959 (alexey-milovidov). - Se corrigió la optimización de ORDER BY con funciones monótonas. Corrige #16107. #16956 (Anton Popov).
- Se corrigió la optimización de
group bycon la opciónoptimize_aggregators_of_group_by_keyshabilitada y joins. Corrige #12604. #16951 (Anton Popov). - Corrige el posible error
Illegal type of argumenten consultas conORDER BY. Corrige #16580. #16928 (Nikolai Kochetov). - Se corrige código inusual en InterpreterShowAccessQuery. #16866 (tavplubix).
- Se evitan bloqueos del servidor de ClickHouse al usar la función
timeSeriesGroupSum. La función se eliminó de las versiones más recientes de ClickHouse. #16865 (filimonov). - Se corrigen cierres inesperados silenciosos poco frecuentes cuando el perfilador de consultas está activado y ClickHouse está instalado en un sistema operativo con una versión de glibc que tiene (supuestamente) tablas de desenrollado asíncrono defectuosas para algunas funciones. Esto corrige #15301. Esto corrige #13098. #16846 (alexey-milovidov).
- Se corrige un bloqueo al usar
anysin argumentos. Esto corresponde a #16803 . cc @azat. #16826 (Amos Bird). - Si no se puede asignar memoria al escribir los metadatos de la tabla en disco, se puede generar un archivo de metadatos corrupto. #16772 (alexey-milovidov).
- Se corrige una optimización trivial de consultas con predicado de partición. #16767 (Azat Khuzhin).
- Corrige el operador
INen varias columnas y tuplas con la configuracióntransform_null_inactivada. Soluciona #15310. #16722 (Anton Popov). - Devuelve el número de filas afectadas para las consultas INSERT a través del protocolo MySQL. Antes, ClickHouse siempre devolvía 0; esto ya se ha corregido. Corrige #16605. #16715 (Winter Zhang).
- Se corrige el fallo en la consulta remota al usar la función de agregación con el sufijo ‘if’. Corrige #16574 Corrige #16231 #16610 (Winter Zhang).
- Corrige el comportamiento incoherente causado por
select_sequential_consistencyen la consultacounttrivial optimizada y en system.tables. #16309 (Hao Chen).
Mejora
- Elimina las partes vacías después de que TTL, una mutación o el algoritmo de fusión collapsing las hayan depurado. #16895 (Anton Popov).
- Se habilita el formato compacto de directorios para los envíos asíncronos en tablas Distributed:
use_compact_format_in_distributed_parts_namesestá establecido en 1 de forma predeterminada. #16788 (Azat Khuzhin). - Abortar la carga multiparte si no se escribió ningún dato en S3. #16840 (Pavel Kovalenko).
- Resolver de nuevo la IP de
format_avro_schema_registry_urlen caso de errores. #16985 (filimonov). - Enmascarar la contraseña en data_path de system.distribution_queue. #16727 (Azat Khuzhin).
- Generar un error cuando el transformador de columnas intente reemplazar una columna inexistente. #16183 (hexiaoting).
- Desactive el análisis en paralelo cuando no haya suficiente memoria para que todos los hilos trabajen simultáneamente. También pueden producirse excepciones como “Memory limit exceeded” cuando alguien intente insertar filas extremadamente grandes (> min_chunk_bytes_for_parallel_parsing), porque cada fragmento que se analiza debe ser un conjunto independiente de cadenas (una o más). #16721 (Nikita Mikhaylov).
- El script de instalación siempre debe crear subdirectorios en los directorios de configuración. Esto solo es relevante para el build de Docker con una configuración personalizada. #16936 (filimonov).
- Se corrige la gramática del mensaje de error en los formatos de entrada JSONEachRow, JSONCompactEachRow y RegexpRow. #17205 (nico piderman).
- Establecer los parámetros predeterminados
hostyportdeSOURCE(CLICKHOUSE(...))en la instancia actual y el valor predeterminado deuseren'default'. #16997 (vdimir). - Mostrar un mensaje de error descriptivo al ejecutar
ATTACH/DETACH TABLE <DICTIONARY>. Antes de este PR,detach table <dict>funcionaba, pero generaba metadatos en memoria malformados. #16885 (Amos Bird). - Se agregó cutToFirstSignificantSubdomainWithWWW(). #16845 (Azat Khuzhin).
- El servidor se negaba a iniciarse y mostraba un mensaje de excepción si se proporcionaba una configuración incorrecta (
metric_log.collect_interval_millisecondsis missing). #16815 (Ivan). - Mejor mensaje de excepción cuando falta la configuración de DDL distribuido. Esto corrige #5075. #16769 (Nikita Mikhaylov).
- Mejora de usabilidad: mejores sugerencias en el mensaje de error de sintaxis cuando la expresión
CODECestá colocada incorrectamente en la consultaCREATE TABLE. Esto corrige #12493. #16768 (alexey-milovidov). - Eliminar los directorios vacíos de async INSERT al iniciar el motor Distributed. #16729 (Azat Khuzhin).
- Solución alternativa para usar S3 con un servidor nginx como proxy. Actualmente, Nginx no acepta URL con una ruta vacía, como
http://domain.com?delete, pero la versión estándar de aws-sdk-cpp genera este tipo de URL. Este commit usa una versión parcheada de aws-sdk-cpp, que en estos casos genera URL con ”/” como ruta, comohttp://domain.com/?delete. #16709 (ianton-ru). - Permite que las funciones
reinterpretAs*funcionen con enteros y números de coma flotante del mismo tamaño. Implementa 16640. #16657 (flynn). - Ahora, la configuración de
<auxiliary_zookeepers>se puede cambiar enconfig.xmly recargar sin reiniciar el servidor. #16627 (Amos Bird). - Soporte para SNI en conexiones HTTPS a recursos remotos. Esto permitirá conectarse a servidores de Cloudflare que requieren SNI. Esto corrige #10055. #16252 (alexey-milovidov).
- Hace posible conectarse al endpoint seguro de
clickhouse-server, que requiere SNI. Esto es posible cuandoclickhouse-serverestá alojado detrás de un proxy TLS. #16938 (filimonov). - Se corrige un posible desbordamiento de pila si se crea un ciclo de vistas materializadas. Esto cierra #15732. #16048 (alexey-milovidov).
- Simplifica la implementación del procesamiento de tareas en segundo plano para la familia de motores de tabla MergeTree. No debería haber cambios visibles para el usuario. #15983 (alesapin).
- Mejora para MaterializeMySQL (característica experimental). Lanza una excepción sobre los privilegios de sincronización necesarios cuando el usuario de sincronización de MySQL tiene privilegios incorrectos. #15977 (TCeason).
- Se modificó
indexOf()para que usara BloomFilter. #14977 (achimbab).
Mejora del rendimiento
- Se utiliza el algoritmo Floyd-Rivest; es el mejor para el caso de uso de ordenación parcial en ClickHouse. Los benchmarks están en https://github.com/danlark1/miniselect y aquí. #16825 (Danila Kutenin).
- Ahora la familia de motores
ReplicatedMergeTreeutiliza un thread pool independiente para los fetches replicados. El tamaño del pool está limitado por la configuraciónbackground_fetches_pool_size, que puede ajustarse reiniciando el servidor. El valor predeterminado de esta configuración es 3, lo que significa que el número máximo de fetches en paralelo es 3 (y permite aprovechar una red de 10G). Corrige #520. #16390 (alesapin). - Se corrigió el crecimiento descontrolado del estado de
quantileTDigest. #16680 (hrissan). - Se añadió la descripción de la subconsulta
VIEWaEXPLAIN. Se limitó la optimización push down paraVIEW. Se añadieron réplicas locales deDistributedal plan de consulta. #14936 (Nikolai Kochetov). - Se corrigió
optimize_read_in_order/optimize_aggregation_in_ordercon max_threads > 0 y una expression en ORDER BY. #16637 (Azat Khuzhin). - Se corrigió el rendimiento de lectura desde tablas
Mergesobre una gran cantidad de tablasMergeTree. Corrige #7748. #16988 (Anton Popov). - Ahora podemos descartar particiones de forma segura con coincidencia exacta. Caso útil: supongamos que la tabla está particionada por
intHash64(x) % 100y que la consulta tiene una condición sobreintHash64(x) % 100literalmente, no sobre x. #16253 (Amos Bird).
Funcionalidad experimental
mejora de compilación/pruebas/empaquetado
- Mejoras en la cobertura de pruebas para la compilación de imágenes. #17233 (alesapin).
- Actualización de los datos de zona horaria integrados a la versión 2020d (también se actualiza cctz a la versión más reciente de la rama master). #17204 (filimonov).
- Se corrige un reporte de UBSan en Poco. Esto cierra #12719. #16765 (alexey-milovidov).
- No instrumentar bibliotecas de terceros con UBSan. #16764 (alexey-milovidov).
- Se corrige un reporte de UBSan en diccionarios de tipo cache. Esto cierra #12641. #16763 (alexey-milovidov).
- Se corrige un reporte de UBSan al intentar convertir un número de punto flotante infinito en un entero. Esto cierra #14190. #16677 (alexey-milovidov).
Lanzamiento de ClickHouse 20.11
lanzamiento de ClickHouse v20.11.7.16-stable, 2021-03-02
Mejora
- Se fijaron explícitamente los uid / gid del usuario y del grupo de ClickHouse en las imágenes de clickhouse-server con los valores fijos (101). #19096 (filimonov).
Corrección de errores
- Corrección de un fallo del índice BloomFilter. Corrige #19757. #19884 (Maksim Kita).
- Era posible que se produjera un interbloqueo si system.text_log estaba habilitado. Esto corrige #19874. #19875 (alexey-milovidov).
- En versiones anteriores, argumentos inusuales para la función arrayEnumerateUniq podían provocar un bloqueo o un bucle infinito. Esto cierra #19787. #19788 (alexey-milovidov).
- Se corrigió un desbordamiento de pila al usar la comparación exacta entre un tipo aritmético y el tipo String. #19773 (tavplubix).
- Se ha corregido un fallo de segmentación en la función
bitmapAndnot. Corrige #19668. #19713 (Maksim Kita). - Algunas funciones con enteros grandes pueden causar un segfault. Los enteros grandes son una característica experimental. Esto cierra #19667. #19672 (alexey-milovidov).
- Se corrige el resultado incorrecto de la función
neighborpara el argumentoLowCardinality. Soluciona #10333. #19617 (Nikolai Kochetov). - Se corrige el uso después de liberar de CompressedWriteBuffer en Connection tras la desconexión. #19599 (Azat Khuzhin).
- La consulta
DROP/DETACH TABLE table ON CLUSTER cluster SYNCpodía bloquearse; ya se ha solucionado. Corrige #19568. #19572 (tavplubix). - Corrección de la expresión id en la consulta CREATE DICTIONARY. #19571 (Maksim Kita).
- Se corrige SIGSEGV con merge_tree_min_rows_for_concurrent_read/merge_tree_min_bytes_for_concurrent_read=0/UINT64_MAX. #19528 (Azat Khuzhin).
- Era posible un desbordamiento de búfer (durante la lectura de memoria) si se llamaba a la función
addMonthcon argumentos especialmente diseñados. Esto corrige #19441. Esto corrige #19413. #19472 (alexey-milovidov). - Marcar el lote distribuido como dañado si hay un bloque de datos vacío en uno de los archivos. #19449 (Azat Khuzhin).
- Se corrige un posible desbordamiento de búfer en la biblioteca Uber H3. Véase https://github.com/uber/h3/issues/392. Esto cierra #19219. #19383 (alexey-milovidov).
- Se corrigió la columna _state de system.parts (LOGICAL_ERROR al consultar esta columna debido a un orden incorrecto). #19346 (Azat Khuzhin).
- Se corrige el error
Cannot convert column now64() because it is constant but values of constants are different in source and result. Continuación de #7156. #19316 (Nikolai Kochetov). - Se corrige un error por el que las consultas
ALTERyDROPejecutadas de forma concurrente podían quedarse bloqueadas al procesar una tabla ReplicatedMergeTree. #19237 (alesapin). - Se corrige la lectura infinita desde un archivo en formato
ORC(introducida en #10580). Corrige #19095. #19134 (Nikolai Kochetov). - Se corrige un error de arranque cuando ClickHouse no podía leer el códec de compresión de
LowCardinality(Nullable(...))y lanzaba la excepciónAttempt to read after EOF. Corrige #18340. #19101 (alesapin). - Se corrigió el error
There is no checkpointal insertar datos a través de la interfaz HTTP con el formatoTemplateoCustomSeparated. Corrige #19021. #19072 (tavplubix). - Restringir las consultas
MODIFY TTLpara las tablasMergeTreecreadas con la sintaxis anterior. Antes, la consulta se ejecutaba correctamente, pero en realidad no tenía ningún efecto. #19064 (Anton Popov). - Asegúrese de que
groupUniqArraydevuelva el tipo correcto para un argumento de tipo Enum. Esto cierra #17875. #19019 (alexey-milovidov). - Corrige el posible error
Expected single dictionary argument for functional usar la funciónignorecon el argumentoLowCardinality. Corrige #14275. #19016 (Nikolai Kochetov). - Se corrige la inserción de una columna
LowCardinalityen una tabla con el motorTinyLog. Corrige #18629. #19010 (Nikolai Kochetov). - Deshabilite
optimize_move_functions_out_of_anyporque la optimización no siempre es correcta. Esto resuelve #18051. Esto resuelve #18973. #18981 (alexey-milovidov). - Se corrigió un interbloqueo muy poco frecuente durante el cierre. #18977 (tavplubix).
- Se corrige un error por el que una mutación con texto con caracteres de escape (como
ALTER ... UPDATE e = CAST('foo', 'Enum8(\'foo\' = 1')) se serializaba incorrectamente. Corrige #18878. #18944 (alesapin). - Attach partition debería restablecer la mutación. #18804. #18935 (fastio).
- Se corrige un posible bloqueo al apagar clickhouse-local. Esto corrige #18891. #18893 (alexey-milovidov).
- Se corrigió el combinador *If con función unaria y tipos Nullable. #18806 (Azat Khuzhin).
- Los
INSERTdistribuidos asíncronos pueden ser rechazados por el servidor si la configuraciónnetwork_compression_methodse establece globalmente en un valor distinto del predeterminado. Esto corrige #18741. #18776 (alexey-milovidov). - Se corrigió el error
Attempt to read after eofal intentar hacerCASTdeNULLdeNullable(String)aNullable(Decimal(P, S)). Ahora la funciónCASTdevuelveNULLcuando no puede analizar un valor decimal a partir de una cadena Nullable. Corrige #7690. #18718 (Winter Zhang). - Se corrigió Logger cuando el tamaño de los argumentos no coincidía. #18717 (sundyli).
- Se añade compatibilidad con el tipo de dato FixedString. Se obtiene esta excepción “Code: 50, e.displayText() = DB::Exception: Unsupported type FixedString(1)” al replicar datos de MySQL a ClickHouse. Este parche corrige el error #18450. También corrige #6556. #18553 (awesomeleo).
- Se corrigió un posible error
Pipeline stuckal usarORDER BYdespués de una subconsulta con un joinRIGHToFULL. #18550 (Nikolai Kochetov). - Se corrige un error que podía hacer que las consultas
ALTERquedaran bloqueadas tras cancelar la mutación correspondiente. Detectado por thread fuzzer. #18518 (alesapin). - Se deshabilita la escritura con AIO durante las operaciones de merge porque, en casos extremadamente raros, puede provocar corrupción de datos en las columnas de la clave primaria durante el proceso. #18481 (alesapin).
- Deshabilitar el plegado de constantes en las subconsultas durante la etapa de análisis cuando no se pueda calcular el resultado. #18446 (Azat Khuzhin).
- Se corrigió el error
value is too shortal ejecutar las funcionestoType(...)(toDate,toUInt32, etc.) con un argumento de tipoNullable(String). Ahora, estas funciones devuelvenNULLen caso de error de análisis en lugar de generar una excepción. Corrige #7673. #18445 (tavplubix). - Restringir las fusiones de partes wide a compact. En caso de fusión vertical, esto producía una parte de resultado corrupta. #18381 (Anton Popov).
- Se corrige el llenado de la tabla
system.settings_profile_elements. Este PR corrige #18231. #18379 (Vitaly Baranov). - Se corrige el análisis de índices en funciones binarias con un argumento constante, que provocaba resultados de consulta incorrectos. Esto corrige #18364. #18373 (Amos Bird).
- Corrige posibles fallos en funciones de agregación con el combinador
Distinctal usar agregación en dos niveles. Corrige #17682. #18365 (Anton Popov). SELECT count() FROM tableahora puede ejecutarse si se puede seleccionar cualquier columna de latable. Este PR corrige #10639. #18233 (Vitaly Baranov).SELECT JOINahora requiere el privilegioSELECTsobre cada una de las tablas del JOIN. Este PR corrige #17654. #18232 (Vitaly Baranov).- Corrige un posible resultado incompleto en la consulta al leer desde
MergeTree*en caso de backoff en la lectura (mensaje<Debug> MergeTreeReadPool: Will lower number of threadsen los logs). Se introdujo en #16423. Corrige #18137. #18216 (Nikolai Kochetov). - Se corrige el error por el que la consulta
MODIFY COLUMN ... REMOVE TTLen realidad no eliminaba el TTL de la columna. #18130 (alesapin). - Corrige las funciones no deterministas en el optimizador de predicados. Esto corrige #17244. #17273 (Winter Zhang).
- La mutación podía quedar bloqueada esperando una parte inexistente después de
MOVEoREPLACE PARTITIONo, en casos excepcionales, después deDETACHoDROP PARTITION. Se ha corregido. #15537 (tavplubix).
Mejora de compilación/pruebas/empaquetado
Lanzamiento de ClickHouse v20.11.6.6-stable, 2020-12-24
Corrección de errores
- Se corrigió un problema por el que el proceso
clickhouse-odbc-bridgeno era accesible para el servidor en máquinas conpila dual IPv4/IPv6, y otro problema por el que las actualizaciones del Diccionario ODBC se realizaban mediante consultas mal formadas y/o provocaban fallos. Esto posiblemente resuelva #14489. #18278 (Denis Glazachev). - Se corrigió la comparación de claves entre los tipos Enum e Int. Con esto se corrige #17989. #18214 (Amos Bird).
- Se corrigió el fallo al convertir la clave única en el engine de base de datos
MaterializeMySQL. Esto corrige #18186 y #16372 #18211 (Winter Zhang). - Se corrigió
std::out_of_range: basic_stringal analizar la URL de S3. #18059 (Vladimir Chebotarev). - Se solucionó el problema por el que algunas tablas no se sincronizaban con ClickHouse desde MySQL debido a que MaterializeMySQL no admitía la conversión de índices de prefijo de MySQL. Esto corrige #15187 y #17912 #17944 (Winter Zhang).
- Se corrigió el problema por el que la optimización de consultas producía resultados incorrectos si la consulta contenía
ARRAY JOIN. #17887 (sundyli). - Corrige un posible fallo de segmentación en la función de agregación
topK. Esto cierra #17404. #17845 (Maksim Kita). - No restaurar las partes desde WAL si
in_memory_parts_enable_walestá deshabilitado. #17802 (detailyang). - Se corrigió un problema que se producía cuando ClickHouse no conseguía reanudar la conexión con servidores MySQL. #17681 (Alexander Kazakov).
- Se corrigió el comportamiento inconsistente de
optimize_trivial_count_queryal usar un predicado de partición. #17644 (Azat Khuzhin). - Se corrigió el problema de que la tabla
system.stack_traceapareciera vacía cuando el servidor se ejecutaba en modo daemon. #17630 (Amos Bird). - Se corrigió el comportamiento por el que la excepción
fmt::v7::format_errorpodía registrarse en segundo plano para las tablas MergeTree. Esto corrige #17613. #17615 (alexey-milovidov). - Se corrigió el comportamiento de
clickhouse-cliental usarse en modo interactivo con consultas de varias líneas, cuando un comentario de una sola línea se extendía erróneamente hasta el final de la consulta. Esto corrige #13654. #17565 (alexey-milovidov). - Se corrigió el problema que, en casos muy poco frecuentes, podía hacer que el servidor dejara de aceptar conexiones. #17542 (alexey-milovidov).
- Se corrigió el bloqueo de la consulta
ALTERcuando la mutación correspondiente se cancelaba en otra réplica. Esto corrige #16953. #17499 (alesapin). - Se corrigió un error por el que ClickHouse subestimaba el tamaño de la caché de marcas. Esto puede ocurrir cuando hay muchos archivos muy pequeños con marcas. #17496 (alesapin).
- Se corrigió
ORDER BYcuando está habilitada la configuraciónoptimize_redundant_functions_in_order_by. #17471 (Anton Popov). - Se corrigieron los duplicados después de
DISTINCT, que podían producirse debido a una optimización incorrecta. Esto corrige #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov). - Se corrigió un fallo al leer una tabla
JOINcon tiposLowCardinality. Esto corrige #17228. #17397 (Nikolai Kochetov). - Se corrigió la invalidación del índice Set cuando hay columnas const en la subconsulta. Esto corrige #17246 . #17249 (Amos Bird).
- Se corrigió un posible análisis incorrecto de índices cuando los tipos en la comparación del índice son diferentes. Esto corrige #17122. #17145 (Amos Bird).
- Se corrigió la comparación de
ColumnConstque provocaba un bloqueo. Esto corrige #17088 . #17135 (Amos Bird). - Se corrigió un error por el que las consultas
ON CLUSTERpodían quedar bloqueadas indefinidamente enReplicatedMergeTreeTablesno líderes. #17089 (alesapin). - Se corrigió un error detectado por el fuzzer en la función
fuzzBits. Esto corrige #16980. #17051 (hexiaoting). - Evita errores de red innecesarios en consultas remotas que pueden cancelarse durante la ejecución, como las consultas con
LIMIT. #17006 (Azat Khuzhin). - Se corrigió un resultado incorrecto en enteros grandes (128 y 256 bits) al convertir desde double. #16986 (Mike).
- Resolver de nuevo la IP de
format_avro_schema_registry_urlen caso de errores. #16985 (filimonov). - Se corrigió un posible cierre inesperado del servidor después de
ALTER TABLE ... MODIFY COLUMN ... NewTypecuandoSELECTtiene una expresiónWHEREsobre la columna que se está modificando y la alteración todavía no ha terminado. #16968 (Amos Bird). - La información de
blameno se calculó correctamente enclickhouse-git-import. #16959 (alexey-milovidov). - Se corrigió la optimización de ORDER BY con funciones monótonas. Soluciona #16107. #16956 (Anton Popov).
- Se corrigió la optimización de
group bycon la configuraciónoptimize_aggregators_of_group_by_keyshabilitada y en consultas con JOIN. Esto corrige #12604. #16951 (Anton Popov). - El script de instalación siempre debe crear subdirectorios en las carpetas de configuración. Esto solo es relevante para la build de Docker con configuración personalizada. #16936 (filimonov).
- Se corrigió un posible error de
Illegal type of argumenten consultas conORDER BY. Esto corrige #16580. #16928 (Nikolai Kochetov). - Cancelar la carga multiparte si no se escribieron datos en WriteBufferFromS3. #16840 (Pavel Kovalenko).
- Se corrigió un cierre inesperado al usar
anysin argumentos. Esto corrige #16803. #16826 (Amos Bird). - Se corrigió el comportamiento por el que ClickHouse siempre devolvía 0 en lugar del número de filas afectadas en las consultas
INSERTa través del protocolo MySQL. Esto corrige #16605. #16715 (Winter Zhang). - Se solucionó el crecimiento descontrolado de TDigest. #16680 (hrissan).
- Se corrigió el fallo de la consulta remota al usar el sufijo
ifen una función de agregación. Esto corrige #16574, #16231 y #16610 (Winter Zhang). - Se corrigió el comportamiento inconsistente provocado por
select_sequential_consistencyen la consulta optimizada de conteo trivial y en system.tables. #16309 (Hao Chen). - Generar un error al usar ColumnTransformer replace con una columna inexistente. #16183 (hexiaoting).
Lanzamiento de ClickHouse v20.11.3.3-stable, 2020-11-13
Corrección de errores
- Se corrigen fallos silenciosos poco frecuentes cuando el perfilador de consultas está activado y ClickHouse está instalado en un sistema operativo con una versión de glibc que tiene tablas de desenrollado asíncrono (supuestamente) defectuosas para algunas funciones. Esto corrige #15301. Esto corrige #13098. #16846 (alexey-milovidov).
lanzamiento de ClickHouse v20.11.2.1, 2020-11-11
Cambio incompatible con versiones anteriores
- Si se especificaba algún
profileen la sección de configuracióndistributed_ddl, este perfil podía sobrescribir la configuración del perfildefaultal iniciar el servidor. Esto se ha corregido; ahora la configuración de las consultas DDL distribuidas no debería afectar a la configuración global del servidor. #16635 (tavplubix). - Se restringe el uso de tipos de datos no comparables (como
AggregateFunction) en claves (clave de ordenación, clave primaria, clave de partición, etc.). #16601 (alesapin). - Se eliminan las consultas
ANALYZEyAST, y la configuraciónenable_debug_queriespasa a estar obsoleta, ya que ahora forma parte de la consultaEXPLAIN, que ofrece toda esa funcionalidad. #16536 (Ivan). - Las funciones de agregación
boundingRatio,rankCorr,retention,timeSeriesGroupSum,timeSeriesGroupRateSum,windowFunnelpasaron por error a no distinguir entre mayúsculas y minúsculas. Ahora sus nombres vuelven a distinguir entre mayúsculas y minúsculas, como estaba previsto. Solo las funciones definidas en el estándar SQL, o creadas para compatibilidad con otros DBMS, así como funciones similares a estas, deberían no distinguir entre mayúsculas y minúsculas. #16407 (alexey-milovidov). - La función
rankCorrahora devuelve nan cuando no hay datos suficientes #16124. #16135 (hexiaoting). - Al actualizar desde versiones anteriores a la 20.5, si se realiza una actualización gradual y el cluster contiene tanto versiones 20.5 o posteriores como versiones anteriores a la 20.5, reiniciar nodos de ClickHouse con versiones antiguas mientras hay versiones más nuevas en ejecución puede provocar errores
Part ... intersects previous part. Para evitar este error, primero instale los paquetes más recientes de clickhouse-server en todos los nodos del cluster y después reinícielos (de este modo, cuando se reinicie clickhouse-server, se iniciará con la nueva versión).
funcionalidad nueva
- Se añadió compatibilidad con LDAP como directorio de usuarios para usuarios que no existen localmente. #12736 (Denis Glazachev).
- Se añade la tabla
system.replicated_fetches, que muestra las operaciones de fetch en segundo plano que se están ejecutando actualmente. #16428 (alesapin). - Se añadió la configuración
date_time_output_format. #15845 (Maksim Kita). - Se añadió una interfaz web mínima a ClickHouse. #16158 (alexey-milovidov).
- Permite leer o escribir un único mensaje protobuf de una sola vez (sin delimitadores de longitud). #15199 (filimonov).
- Se añadió compatibilidad inicial con OpenTelemetry. ClickHouse ahora acepta cabeceras
traceparentde OpenTelemetry a través de los protocolos Native y HTTP, y en algunos casos las propaga a servicios downstream. Los spans de traza de las consultas ejecutadas se guardan en la tablasystem.opentelemetry_span_log. #14195 (Alexander Kuzmenkov). - Permite especificar la clave primaria en la lista de columnas de la consulta
CREATE TABLE. Esto es necesario para mantener la compatibilidad con otros dialectos SQL. #15823 (Maksim Kita). - Implementar
OFFSET offset_row_count {ROW | ROWS} FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} {ONLY | WITH TIES}en la consulta SELECT con ORDER BY. Esta es la forma estándar de SQL para especificarLIMIT. #15855 (hexiaoting). - La función
errorCodeToName: devuelve el nombre de la variable del error (útil para analizarquery_logy similares). La tablasystem.errors: muestra cuántas veces se han producido errores (respetasystem_events_show_zero_values). #16438 (Azat Khuzhin). - Se añadió la función
untuple, una función especial que puede introducir nuevas columnas en la lista SELECT al expandir una tupla nombrada. #16242 (Nikolai Kochetov, Amos Bird). - Ahora podemos pasar identificadores mediante parámetros de consulta. Estos parámetros también pueden usarse como objetos de tabla o columnas. #16594 (Amos Bird).
- Se añadió compatibilidad con enteros grandes (UInt256, Int128, Int256) y con el tipo de dato UUID para el índice BloomFilter de MergeTree. Los enteros grandes son una funcionalidad experimental. #16642 (Maksim Kita).
- Se añade la función
farmFingerprint64(hash no criptográfico de cadenas). #16570 (Jacob Hayes). - Se añade
log_queries_min_query_duration_ms; solo las consultas más lentas que el valor establecido en esta configuración irán aquery_log/query_thread_log(es decir, algo comoslow_query_logen MySQL). #16529 (Azat Khuzhin). - Posibilidad de crear una imagen de Docker a partir de
Alpine. Usa un binario precompilado y componentes de glibc de Ubuntu 20.04. #16479 (filimonov). - Se añadieron las funciones CAST
toUUIDOrNullytoUUIDOrZero. #16337 (Maksim Kita). - Se añade la configuración
max_concurrent_queries_for_all_users; consulta #6636 para ver casos de uso. #16154 (nvartolomei). - Se añade una nueva opción
print_query_ida clickhouse-client. Permite generar cadenas arbitrarias con el id de consulta actual generado por el cliente. Además, el id de consulta ahora se imprime en clickhouse-client de forma predeterminada. #15809 (Amos Bird). - Se añaden las funciones
tidylogTrace. Esto cierra #9434. #15803 (flynn). - Añade la función
formatReadableTimeDelta, que da formato a un intervalo de tiempo como una cadena legible … #15497 (Filipe Caixeta). - Se añadió la opción
disable_mergespara volúmenes en una configuración multidisco. #13956 (Vladimir Chebotarev).
Funcionalidad experimental
- Nuevas funciones
encrypt,aes_encrypt_mysql,decrypt,aes_decrypt_mysql. Estas funciones son lentas, por lo que las consideramos una funcionalidad experimental. #11844 (Vasily Nemkov).
Corrección de errores
- Enmascarar la contraseña en
data_pathdesystem.distribution_queue. #16727 (Azat Khuzhin). - Se corrige el operador
INen varias columnas y tuplas con la configuracióntransform_null_inactivada. Corrige #15310. #16722 (Anton Popov). - La configuración
max_parallel_replicasfuncionaba incorrectamente si la tabla consultada no tenía muestreo. Esto corrige #5733. #16675 (alexey-milovidov). - Se corrigen optimize_read_in_order/optimize_aggregation_in_order con max_threads > 0 y una expresión en ORDER BY. #16637 (Azat Khuzhin).
- El cálculo de las expresiones
DEFAULTimplicaba posibles colisiones de nombres (aunque era muy poco probable encontrarse con ello). Esto corrige #9359. #16612 (alexey-milovidov). - Se corrige la unidad de
query_thread_log.query_duration_ms. #16563 (Azat Khuzhin). - Se corrige un error al usar MySQL Master -> MySQL Slave -> el motor MaterializeMySQL de ClickHouse.
MaterializeMySQLes una característica experimental. #16504 (TCeason). - Un argumento especialmente diseñado de la función
roundconDecimalprovocaba una división entera por cero. Esto corrige #13338. #16451 (alexey-milovidov). - Se corrige DROP TABLE en Distributed (condición de carrera con INSERT). #16409 (Azat Khuzhin).
- Se corrige el procesamiento de elementos muy grandes en la cola de replicación. Pueden aparecer elementos muy grandes en las consultas
ALTERsi la estructura de la tabla es extremadamente grande (cerca de 1 MB). Esto corrige #16307. #16332 (alexey-milovidov). - Se corrigió el comportamiento incoherente por el que una parte de los datos devueltos podía descartarse porque no se había creado el Set para filtrarlos. #16308 (Nikita Mikhaylov).
- Corregir
dictGetensharding_key(y en lugares similares, es decir, cuando el contexto de la función se almacena permanentemente). #16205 (Azat Khuzhin). - Se corrige la excepción que se producía en
clickhouse-localal intentar ejecutar el comandoOPTIMIZE. Corrige #16076. #16192 (filimonov). - Corrige la regresión de #15780; por ejemplo,
indexOf([1, 2, 3], toLowCardinality(1))ahora se prohíbe, pero no debería ser así. #16038 (Mike). - Corrige un error con la base de datos MySQL. Cuando el servidor MySQL usado como motor de base de datos está caído, algunas consultas generan Exception porque intentan obtener tablas de un servidor no disponible, aunque no es necesario. Por ejemplo, la consulta
SELECT ... FROM system.partsdebería funcionar solo con tablas MergeTree y no acceder en absoluto a la base de datos MySQL. #16032 (Kruglov Pavel). - Ahora se generará una excepción cuando
ALTER MODIFY COLUMN ... DEFAULT ...tenga un valor predeterminado incompatible con el tipo de columna. Corrige #15854. #15858 (alesapin). - Se corrigieron las funciones IPv4CIDRToRange/IPv6CIDRToRange para que acepten valores const de columnas IP. #15856 (vladimir-golovchenko).
Mejora
- Trate
INTERVAL '1 hour'como equivalente aINTERVAL 1 HOUR, para que sea compatible con Postgres y sistemas similares. Esto corrige #15637. #15978 (flynn). - Permite interpretar los valores enum por sus identificadores numéricos en los formatos de entrada CSV, TSV y JSON. #15685 (vivarum).
- Mejor planificación de las tareas de lectura para la arquitectura JBOD y el almacenamiento
MergeTree. Nueva configuraciónread_backoff_min_concurrency, que actúa como límite inferior del número de hilos de lectura. #16423 (Amos Bird). - Se añade la compatibilidad faltante con
LowCardinalityen el formatoAvro. #16521 (Mike). - Solución alternativa para usar
S3con un servidor nginx como proxy. Actualmente, Nginx no acepta URL con una ruta vacía, comohttp://domain.com?delete, pero la versión estándar de aws-sdk-cpp genera este tipo de URL. Este commit usa una versión parcheada de aws-sdk-cpp, que en estos casos genera URL con ”/” como ruta, comohttp://domain.com/?delete. #16814 (ianton-ru). - Mejoras en el diagnóstico de errores de análisis en los datos de entrada. Ahora se proporciona el número de fila en los errores
Cannot read all data. #16644 (alexey-milovidov). - Se mejora el comportamiento de
minMapymaxMap. No se omitirán los valores cero en el resultado. Corrige #16087. #16631 (Ildus Kurbangaliev). - Mejora de la actualización de la configuración de ZooKeeper en tiempo de ejecución. #16630 (sundyli).
- Aplique la cláusula SETTINGS lo antes posible. Esto permite modificar más ajustes en la consulta. Cierra #3178. #16619 (alexey-milovidov).
- Ahora, el campo
event_time_microsecondsse almacena como Decimal64, no como UInt64. #16617 (Nikita Mikhaylov). - Ahora se pueden usar funciones parametrizadas en el transformador de columnas
APPLY. #16589 (Amos Bird). - Mejora la planificación de la tarea en segundo plano que elimina los datos de las tablas eliminadas en bases de datos
Atomic. Las bases de datosAtomicno crean un enlace simbólico roto al directorio de datos de la tabla si esta en realidad no tiene directorio de datos. #16584 (tavplubix). - Las subconsultas en la sección
WITH(CTE) pueden hacer referencia a subconsultas previas de la secciónWITHpor su nombre. #16575 (Amos Bird). - Se añadió current_database a
system.query_thread_log. #16558 (Azat Khuzhin). - Permite recuperar partes ya confirmadas o desactualizadas en la instancia actual y colocarlas en el directorio detached. Es útil al migrar tablas desde otro cluster y tener una correspondencia de N a 1 entre segmentos. También es coherente con la implementación actual de fetchPartition. #16538 (Amos Bird).
- Múltiples mejoras para
RabbitMQ: se corrigió el error de #16263. También se redujo la duración del bucle de eventos. Se añadió una configuración de colas más eficiente. #16426 (Kseniia Sumarokova). - Corrige la aserción de depuración en la función
quantileDeterministic. En la versión anterior, también podía transferir por la red hasta el doble de datos. Aunque no había ningún error. Esto corrige #15683. #16410 (alexey-milovidov). - Se añade la métrica
TablesToDropQueueSize. Es igual al número de tablas eliminadas que están pendientes de la eliminación de datos en segundo plano. #16364 (tavplubix). - Mejores diagnósticos cuando el cliente ha perdido la conexión. En versiones anteriores, las excepciones
Attempt to read after EOFyBroken pipese registraban en el servidor. En la nueva versión, el mensaje informativo esClient has dropped the connection, cancel the query.. #16329 (alexey-milovidov). - Se añadió compatibilidad con total_rows/total_bytes (de system.tables) para los motores de tabla Set/Join. #16306 (Azat Khuzhin).
- Ahora es posible especificar
PRIMARY KEYsinORDER BYpara los motores de tabla de la familia MergeTree. Cierra #15591. #16284 (alesapin). - Si el sistema no tiene una carpeta tmp (chroot, configuración incorrecta, etc.),
clickhouse-localcreará una subcarpeta temporal en el directorio actual. #16280 (filimonov). - Se añadió compatibilidad con tipos de datos anidados (como la tupla nombrada) como subtipos. Corrige #15587. #16262 (Ivan).
- Soporte para
database_atomic_wait_for_drop_and_detach_synchronously/NO DELAY/SYNCenDROP DATABASE. #16127 (Azat Khuzhin). - Se añade
allow_nondeterministic_optimize_skip_unused_shards(para permitir funciones no deterministas comorand()odictGet()en la clave de segmentación). #16105 (Azat Khuzhin). - Corregir
memory_profiler_step/max_untracked_memorypara consultas vía HTTP (prueba incluida). Corregir el problema de que ajustar este valor globalmente en la configuración XML tampoco ayuda, ya que esos ajustes no se aplican de todos modos y solo se usa el valor predeterminado (4 MB). Corregirquery_idpara el ThreadStatus raíz de la consulta HTTP (inicializando QueryScope después de leer query_id). #16101 (Azat Khuzhin). - Ahora se permite ejecutar consultas
ALTER ... ON CLUSTERindependientemente del ajuste<internal_replication>en la configuración del clúster. #16075 (alesapin). - Se corrige un problema poco frecuente por el que
clickhouse-clientpodía cerrarse de forma abrupta al salir debido a la carga de sugerencias. Esto corrige #16035. #16047 (alexey-milovidov). - Se añadió compatibilidad con la disposición
cachepara diccionarios deRediscon clave compleja. #15985 (Anton Popov). - Se corrige el bloqueo de la consulta (bucle infinito) en caso de una mala configuración (
connections_with_failover_max_triesconfigurado en 0). #15876 (Azat Khuzhin). - Cambiar el nivel de algunos mensajes del registro de información a depuración para que los mensajes informativos no aparezcan en cada consulta. Esto cierra #5293. #15816 (alexey-milovidov).
- Elimina las métricas
MemoryTrackingInBackground*para evitar resultados que podrían ser engañosos. Esto corrige #15684. #15813 (alexey-milovidov). - Se añaden reintentos de reconexión a la herramienta
zookeeper-dump-tree. #15711 (alexey-milovidov). - Permite especificar de forma explícita la lista de columnas en la consulta
CREATE TABLE table AS table_function(...). Corrige #9249 Corrige #14214. #14295 (tavplubix).
Mejora del rendimiento
- No fusionar partes entre particiones en SELECT FINAL. #15938 (Kruglov Pavel).
- Mejorar el rendimiento de las funciones de agregación
-OrNully-OrDefault. #16661 (alexey-milovidov). - Mejorar el rendimiento de
quantileMerge. En versiones anteriores era exageradamente lento. Esto cierra #1463. #16643 (alexey-milovidov). - Mejorar un poco el rendimiento de las funciones lógicas. #16347 (alexey-milovidov).
- Se mejoró el rendimiento de la asignación de merges en los motores de tabla MergeTree. No debería ser perceptible para el usuario. #16191 (alesapin).
- Acelerar la carga de los diccionarios hashed/sparse_hashed preasignando la tabla hash. #15454 (Azat Khuzhin).
- Ahora la optimización trivial de
countpasa a ser ligeramente no trivial. Los predicados que contienen la expresión exacta de partición también pueden optimizarse. Esto también corrige #11092, que devuelve uncountincorrecto cuandomax_parallel_replicas > 1. #15074 (Amos Bird).
Mejora de compilación/pruebas/empaquetado
- Añade una comprobación de inestabilidad para las pruebas sin estado. Detectará por adelantado pruebas funcionales potencialmente inestables antes de que se integren. #16238 (alesapin).
- Usa la versión correcta de
croaringen lugar de la amalgamación. #16285 (sundyli). - Mejora la generación de archivos de compilación para el sistema de compilación
ya.make(Arcadia). #16700 (alexey-milovidov). - Añade una herramienta para comprobar archivos binlog de MySQL para el motor de base de datos
MaterializeMySQL.MaterializeMySQLes una funcionalidad experimental. #16223 (Winter Zhang). - Comprueba el bit de ejecutable en archivos no ejecutables. A menudo se suben por error archivos ejecutables desde Windows. #15843 (alexey-milovidov).
- Comprueba
#pragma onceen los archivos de cabecera. #15818 (alexey-milovidov). - Corrige el estilo de código no válido
&vector[idx]en libhdfs3. Esto corrige la compilación de depuración de libcxx. Véase también https://github.com/ClickHouse-Extras/libhdfs3/pull/8 . #15815 (Amos Bird). - Corrige la compilación de una herramienta de ejemplo auxiliar en Mac OS. Ten en cuenta que no compilamos ejemplos en Mac OS en nuestro CI (solo compilamos el binario de ClickHouse), así que es casi seguro que vuelva a romperse. Esto corrige #15804. #15808 (alexey-milovidov).
- Simplifica el script de inicio de SysV. #14135 (alexey-milovidov).
- Se añadió
boost::program_optionsadb_generatorpara mejorar su usabilidad. Esto cierra #15940. #15973 (Nikita Mikhaylov).
Lanzamiento de ClickHouse 20.10
Lanzamiento de ClickHouse v20.10.7.4-stable, 2020-12-24
Corrección de errores
- Se corrigió un problema por el que el proceso
clickhouse-odbc-bridgeno era accesible para el servidor en máquinas con pila dualIPv4/IPv6, y otro por el que las actualizaciones del Diccionario ODBC se realizaban mediante consultas malformadas y/o provocaban fallos. Esto posiblemente cierre #14489. #18278 (Denis Glazachev). - Corrige la comparación de claves entre tipos Enum e Int. Esto corrige #17989. #18214 (Amos Bird).
- Se corrigió un fallo al convertir claves únicas en el motor de base de datos
MaterializeMySQL. Esto corrige #18186 y #16372 #18211 (Winter Zhang). - Se corrigió
std::out_of_range: basic_stringal analizar URL de S3. #18059 (Vladimir Chebotarev). - Se corrigió el problema por el que algunas tablas no se sincronizaban desde MySQL con ClickHouse debido a que MaterializeMySQL no admitía la conversión de índices de prefijo de MySQL. Esto corrige #15187 y #17912 #17944 (Winter Zhang).
- Corrige un posible fallo de segmentación en la función de agregación
topK. Esto cierra #17404. #17845 (Maksim Kita). - No restaurar las partes desde
WALsiin_memory_parts_enable_walestá deshabilitado. #17802 (detailyang). - Se corrigió un problema por el que ClickHouse no podía restablecer la conexión con servidores MySQL. #17681 (Alexander Kazakov).
- Se corrigió la tabla
system.stack_tracevacía cuando el servidor se ejecutaba en modo daemon. #17630 (Amos Bird). - Se corrigió el comportamiento cuando
clickhouse-clientse usa en modo interactivo con consultas de varias líneas y un comentario de una línea se extendía erróneamente hasta el final de la consulta. Esto corrige #13654. #17565 (alexey-milovidov). - Se solucionó el problema por el que, en casos muy poco frecuentes, el servidor podía dejar de aceptar conexiones. #17542 (alexey-milovidov).
- Se corrigió el bloqueo de la consulta
ALTERcuando la mutación correspondiente se cancelaba en otra réplica. Esto corrige #16953. #17499 (alesapin). - Se corrigió un error por el que se subestimaba el tamaño de la caché de marcas en ClickHouse. Esto puede ocurrir cuando hay muchos archivos muy pequeños con marcas. #17496 (alesapin).
- Se corrigió
ORDER BYcuando está habilitada la configuraciónoptimize_redundant_functions_in_order_by. #17471 (Anton Popov). - Se corrigieron los duplicados después de
DISTINCT, que podían producirse debido a una optimización incorrecta. Corrige #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov). - Se corrigió un fallo al leer de la tabla
JOINcon tiposLowCardinality. Esto corrige #17228. #17397 (Nikolai Kochetov). - Se corrigió la invalidación del índice Set cuando hay columnas const en la subconsulta. Esto corrige #17246 . #17249 (Amos Bird).
- Se corrigió la comparación de
ColumnConst, que provocaba un cierre inesperado. Esto corrige #17088. #17135 (Amos Bird). - Se corrigió un error por el que las consultas
ON CLUSTERpodían quedar bloqueadas indefinidamente enReplicatedMergeTreeTablesque no son líder. #17089 (alesapin). - Se corrigió un error encontrado por el fuzzer en la función
fuzzBits. Esto corrige #16980. #17051 (hexiaoting). - Evita errores de red innecesarios en las consultas remotas que pueden cancelarse durante la ejecución, como las consultas con
LIMIT. #17006 (Azat Khuzhin). - Se corrigió un resultado incorrecto en enteros grandes (128 y 256 bits) al convertir desde double. #16986 (Mike).
- Volver a resolver la IP de
format_avro_schema_registry_urlen caso de error. #16985 (filimonov). - Se corrigió un posible cierre inesperado del servidor después de
ALTER TABLE ... MODIFY COLUMN ... NewTypecuandoSELECTtiene una expresiónWHEREsobre la columna que se está modificando y la operaciónALTERaún no ha finalizado. #16968 (Amos Bird). - La información de blame no se calculó correctamente en
clickhouse-git-import. #16959 (alexey-milovidov). - Se corrigió la optimización de ORDER BY con funciones monótonas. Esto soluciona #16107. #16956 (Anton Popov).
- Se corrigió la optimización de GROUP BY con la configuración
optimize_aggregators_of_group_by_keyshabilitada y las operaciones JOIN. Esto corrige #12604. #16951 (Anton Popov). - El script de instalación siempre debe crear subdirectorios en los directorios de configuración. Esto solo es relevante para la build de Docker con configuración personalizada. #16936 (filimonov).
- Se corrige un posible error
Illegal type of argumenten consultas conORDER BY. Esto corrige #16580. #16928 (Nikolai Kochetov). - Abortar la carga en varias partes si no se escribieron datos en
WriteBufferFromS3. #16840 (Pavel Kovalenko). - Se corrigió un bloqueo al usar
anysin argumentos. Esto corrige #16803. #16826 (Amos Bird). - Se corrigió el comportamiento por el cual ClickHouse siempre devolvía 0 en lugar del número de filas afectadas en las consultas
INSERTa través del protocolo MySQL. Esto corrige #16605. #16715 (Winter Zhang). - Se corrigió el crecimiento no controlado de
TDigest. #16680 (hrissan). - Se corrigió un fallo en las consultas remotas al usar el sufijo
ifen una función de agregación. Esto corrige #16574, #16231 #16610 (Winter Zhang).
Lanzamiento de ClickHouse v20.10.4.1-stable, 2020-11-13
Corrección de errores
- Corrige fallos silenciosos poco frecuentes cuando el perfilador de consultas está activado y ClickHouse está instalado en un sistema operativo con una versión de glibc que tiene tablas de desenrollado asíncrono (supuestamente) defectuosas para algunas funciones. Esto corrige #15301. Esto corrige #13098. #16846 (alexey-milovidov).
- Corrige el operador
INen varias columnas y tuplas con la configuracióntransform_null_inhabilitada. Corrige #15310. #16722 (Anton Popov). - Esto corregirá optimize_read_in_order/optimize_aggregation_in_order con max_threads>0 y una expresión en ORDER BY. #16637 (Azat Khuzhin).
- Ahora, al analizar AVRO en la entrada, se elimina LowCardinality del tipo. Corrige #16188. #16521 (Mike).
- Corrige el rápido crecimiento de los metadatos al usar MySQL Master -> MySQL Slave -> ClickHouse MaterializeMySQL Engine, con
slave_parallel_workerhabilitado en MySQL Slave, reduciendo correctamente los conjuntos GTID. Esto corrige #15951. #16504 (TCeason). - Corrige DROP TABLE para Distributed (condición de carrera con INSERT). #16409 (Azat Khuzhin).
- Corrige el procesamiento de entradas muy grandes en la cola de replicación. Estas entradas pueden aparecer en consultas ALTER si la estructura de la tabla es extremadamente grande (cerca de 1 MB). Esto corrige #16307. #16332 (alexey-milovidov).
- Corrige un error con una base de datos MySQL. Cuando el MySQL server usado como database engine no está disponible, algunas consultas generan una Exception porque intentan obtener tablas de un server deshabilitado, aunque no es necesario. Por ejemplo, la consulta
SELECT ... FROM system.partsdebería funcionar solo con tablas MergeTree y no acceder en absoluto a la base de datos MySQL. #16032 (Kruglov Pavel).
Mejora
- Solución alternativa para usar S3 con un servidor nginx como proxy. Actualmente, Nginx no acepta URL con una ruta vacía como http://domain.com?delete, pero la versión estándar de aws-sdk-cpp genera este tipo de URL. Este commit usa una versión parcheada de aws-sdk-cpp, que en estos casos genera URL con ”/” como ruta, como http://domain.com/?delete. #16813 (ianton-ru).
Lanzamiento de ClickHouse v20.10.3.30, 2020-10-28
Cambio incompatible con versiones anteriores
- Marcar
multiple_joins_rewriter_versioncomo obsoleto. Eliminar la primera versión del reescritor de joins. #15472 (Artem Zuikov). - Cambiar el valor predeterminado de la configuración
format_regexp_escaping_rule(está relacionada con el formatoRegexp) aRaw(es decir, leer el subpatrón completo como un valor) para que el comportamiento se ajuste más a lo que esperan los usuarios. #15426 (alexey-milovidov). - Añadir compatibilidad con comentarios multilínea anidados
/* comment /* comment */ */en SQL. Esto se ajusta al estándar SQL. #14655 (alexey-milovidov). - Se añadieron ajustes de MergeTree (
max_replicated_merges_with_ttl_in_queueymax_number_of_merges_with_ttl_in_pool) para controlar la cantidad de merges con TTL en el background pool y en la cola de replicación. Este cambio rompe la compatibilidad con versiones anteriores solo si usa TTL de eliminación. En caso contrario, la replicación seguirá siendo compatible. Puede evitar problemas de incompatibilidad si actualiza todas las réplicas del segmento a la vez o ejecutaSYSTEM STOP TTL MERGEShasta completar la actualización de todas las réplicas. Si aparece una entrada incompatible en la cola de replicación, primero ejecuteSYSTEM STOP TTL MERGESy despuésALTER TABLE ... DETACH PARTITION ...en la partición donde se asignó el merge de TTL incompatible. Vuelva a adjuntarla en una sola réplica. #14490 (alesapin). - Al actualizar desde versiones anteriores a la 20.5, si se realiza una actualización progresiva y el clúster contiene tanto versiones 20.5 o posteriores como versiones anteriores a 20.5, reiniciar nodos de ClickHouse con versiones antiguas, cuando esas versiones antiguas arrancan en presencia de versiones más recientes, puede provocar errores
Part ... intersects previous part. Para evitar este error, primero instale paquetes más recientes de clickhouse-server en todos los nodos del clúster y luego realice los reinicios (de este modo, cuando se reinicie clickhouse-server, arrancará con la nueva versión).
Nueva funcionalidad
- Recompresión de datos en segundo plano. Se añade la posibilidad de especificar
TTL ... RECOMPRESS codec_namepara la familia de motores de tabla MergeTree. #14494 (alesapin). - Se añaden inserciones paralelas con quórum. Esto cierra #15601. #15601 (Latysheva Alexandra).
- Ajustes para reforzar aún más la durabilidad de los datos. Útiles para configuraciones no replicadas. #11948 (Anton Popov).
- Cuando se escribe un bloque duplicado en una réplica en la que no existe localmente (no se ha obtenido de las réplicas), no ignorarlo y escribirlo localmente para conseguir el mismo efecto que si se hubiera replicado correctamente. #11684 (alexey-milovidov).
- Ahora se admite
WITH <identifier> AS (subquery) ...para introducir subconsultas con nombre en el contexto de la consulta. Esto cierra #2416. Esto cierra #4967. #14771 (Amos Bird). - Se introduce la configuración
enable_global_with_statement, que propaga las sentenciasWITHdel primerselecta otras consultasselectdel mismo nivel y hace visibles para las subconsultas los alias de las sentenciasWITH. #15451 (Amos Bird). - Ejecución segura de consultas entre clústeres (con initial_user como usuario de la consulta actual). #13156 (Azat Khuzhin). #15551 (Azat Khuzhin).
- Se añadió la capacidad de eliminar propiedades de columnas y TTL de tabla. Se introdujeron las consultas
ALTER TABLE MODIFY COLUMN col_name REMOVE what_to_removeyALTER TABLE REMOVE TTL. Ambas operaciones son ligeras y se ejecutan a nivel de metadatos. #14742 (alesapin). - Se añadió el formato
RawBLOB. Está pensado para la entrada o salida de un único valor sin ningún tipo de escape ni delimitadores. Esto cierra #15349. #15364 (alexey-milovidov). - Se agregó la función
reinterpretAsUUID, que permite convertir una secuencia de bytes en orden big-endian a UUID. #15480 (Alexander Kuzmenkov). - Se implementa la opción de configuración
force_data_skipping_indices. #15642 (Azat Khuzhin). - Se añadió la configuración
output_format_pretty_row_numberspara numerar las filas del resultado en los formatos Pretty. Esto cierra #15350. #15443 (flynn). - Se añadió una herramienta de ofuscación de consultas. Permite compartir más consultas para mejorar las pruebas. Esto cierra #15268. #15321 (alexey-milovidov).
- Se añadió la función de tabla
null('structure'). #14797 (vxider). - Se añadió la función
formatReadableQuantity. Es útil para facilitar la lectura de números grandes. #14725 (Artem Hnilov). - Se añade el formato
LineAsString, que acepta una secuencia de líneas separadas por saltos de línea; cada línea se interpreta íntegramente como un único campo String. #14703 (Nikita Mikhaylov), #13846 (hexiaoting). - Se añadió el formato
JSONStrings, que genera datos en matrices de cadenas. #14333 (hcz). - Se añade compatibilidad con el formato de columna “Raw” para el formato
Regexp. Permite extraer directamente los subpatrones completos sin aplicar ninguna regla de escape. #15363 (alexey-milovidov). - Permitir una representación configurable de
NULLpara el formato de salidaTSV. Se controla mediante la configuraciónoutput_format_tsv_null_representation, cuyo valor predeterminado es\N. Esto resuelve #9375. Tenga en cuenta que la configuración solo controla el formato de salida y que\Nes la única representación deNULLadmitida para el formato de entradaTSV. #14586 (Kruglov Pavel). - Se admite el tipo de dato Decimal para
MaterializeMySQL.MaterializeMySQLes una característica experimental. #14535 (Winter Zhang). - Se añadió una nueva función:
SHOW DATABASES LIKE 'xxx'. #14521 (hexiaoting). - Se añadió un script para importar un repositorio de Git arbitrario a ClickHouse como conjunto de datos de muestra. #14471 (alexey-milovidov).
- Ahora, las sentencias
insertpueden incluir un asterisco (o variantes) con transformadores de columnas en la lista de columnas. #14453 (Amos Bird). - Nuevas opciones de límite de complejidad de las consultas
max_rows_to_read_leaf,max_bytes_to_read_leafpara consultas distribuidas, con el fin de limitar la cantidad máxima de filas/bytes leídos en los nodos hoja. El límite se aplica solo a las lecturas locales, excluyendo la etapa final de combinación en el nodo raíz. #14221 (Roman Khavronenko). - Permite al usuario especificar ajustes para el almacenamiento
ReplicatedMergeTree*en la sección<replicated_merge_tree>del archivo de configuración. Funciona de forma similar a la sección<merge_tree>. Para los almacenamientosReplicatedMergeTree*, los ajustes de<merge_tree>y<replicated_merge_tree>se aplican conjuntamente, pero los de<replicated_merge_tree>tienen mayor prioridad. Se añadió la tablasystem.replicated_merge_tree_settings. #13573 (Amos Bird). - Se agregó la función
mapPopulateSeries. #13166 (Ildus Kurbangaliev). - Compatibilidad con los tipos de MySQL:
decimal(comoDecimalde ClickHouse) ydatetimecon precisión de subsegundos (comoDateTime64). #11512 (Vasily Nemkov). - Se añade el campo
event_time_microsecondsa las tablassystem.text_log,system.trace_log,system.query_logysystem.query_thread_log. #14760 (Bharat Nallan). - Agregar
event_time_microsecondsa las tablassystem.asynchronous_metric_logysystem.metric_log. #14514 (Bharat Nallan). - Añade el campo
query_start_time_microsecondsa las tablassystem.query_logysystem.query_thread_log. #14252 (Bharat Nallan).
Corrección de errores
- Se corrige el caso en el que se puede asignar memoria en exceso sin tener en cuenta el límite. Esto cierra #14560. #16206 (alexey-milovidov).
- Se corrige el bloqueo del origen de diccionario
executable. En versiones anteriores, al usar algunos formatos (p. ej.,JSONEachRow), los datos no se enviaban a un proceso hijo hasta que este generara al menos alguna salida. Esto cierra #1697. Esto cierra #2455. #14525 (alexey-milovidov). - Se corrigió la doble liberación en caso de excepción en la función
dictGet. Podía ocurrir si el diccionario se cargaba con errores. #16429 (Nikolai Kochetov). - Se corrige el uso de
group bycon los modificadores totals/rollup/cube y de las funciones min/max sobre las claves degroup by. Corrige #16393. #16397 (Anton Popov). - Se corrige el INSERT asíncrono en Distributed con prefer_localhost_replica=0 e internal_replication. #16358 (Azat Khuzhin).
- Se corrige un error grave en la implementación de
TwoLevelStringHashTable, que podría provocar una fuga de memoria. #16264 (Amos Bird). - Se corrige un fallo de segmentación en algunos casos de agregación incorrecta en expresiones lambda. #16082 (Anton Popov).
- Se corrige el cuelgue de la consulta
ALTER MODIFY ... ORDER BYenReplicatedVersionedCollapsingMergeTree. Esto corrige #15980. #16011 (alesapin). MaterializeMySQL(función experimental): Se corrigió el analizador de nombres de cotejamiento y de conjuntos de caracteres, y ahora admitelength = 0para el tipo String. #16008 (Winter Zhang).- Se permite usar el layout
directpara diccionarios con claves complejas. #16007 (Anton Popov). - Evita que la réplica se bloquee durante 5-10 minutos cuando se produce un error de replicación tras un período de inactividad. #15987 (filimonov).
- Corrige fallos de segmentación poco frecuentes al insertar en MaterializedView o consultar desde ella y eliminar simultáneamente la tabla de destino (para el motor de base de datos Atomic). #15984 (tavplubix).
- Corrige la ambigüedad al interpretar los perfiles de configuración:
CREATE USER ... SETTINGS profile readonlyahora se considera como el uso de un perfil llamadoreadonly, no de una configuración llamadaprofilecon la restricciónreadonly. Esto corrige #15628. #15982 (Vitaly Baranov). MaterializeMySQL(función experimental): Corrige el cierre inesperado por un fallo al crear la base de datos. #15954 (Winter Zhang).- Se corrigió el fallo de
DROP TABLE IF EXISTScon el errorTable ... does not existcuando el nombre de la tabla se cambia de forma concurrente (para el motor de base de datos Atomic). Se corrigió un interbloqueo poco frecuente al ejecutar de forma concurrente algunas consultas DDL con varias tablas (comoDROP DATABASEyRENAME TABLE) - Se corrigió el fallo deDROP/DETACH DATABASEconTable ... does not existal ejecutar de forma concurrenteDROP/DETACH TABLE. #15934 (tavplubix). - Corrige el resultado vacío incorrecto de una consulta sobre una tabla
Distributedsi la consulta tieneWHERE,PREWHEREyGLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov). - Corrige #12513: expresiones de diferencia con el mismo alias cuando se vuelve a analizar la consulta. #15886 (Winter Zhang).
- Se corrigen posibles bloqueos mutuos, aunque muy poco frecuentes, en la implementación de RBAC. #15875 (Vitaly Baranov).
- Se corrige la excepción
Block structure mismatchen las consultasSELECT ... ORDER BY DESCejecutadas después de la consultaALTER MODIFY COLUMN. Corrige #15800. #15852 (alesapin). MaterializeMySQL(función experimental): se corrige la falta de precisión deselect count(). #15767 (tavplubix).- Corrige algunos casos de consultas en los que solo se seleccionan columnas virtuales. Anteriormente, podía producirse la excepción
Not found column _nothing in block. Corrige #12298. #15756 (Anton Popov). - Se corrige la eliminación de la vista materializada con tabla interna en la base de datos Atomic (dejaba bloqueados todos los DROP TABLE posteriores debido al bloqueo del hilo de trabajo, causado por el DROP TABLE recursivo de la tabla interna de la MV). #15743 (Azat Khuzhin).
- Posibilidad de mover una parte a otro disco/volumen si falló el primer intento. #15723 (Pavel Kovalenko).
- Se corrigió el error
Cannot find column, que puede producirse al insertar enMATERIALIZED VIEWsi la consulta deMVcontieneARRAY JOIN. #15717 (Nikolai Kochetov). - Se corrigió el valor predeterminado demasiado bajo del ajuste
max_replicated_logs_to_keep, que podía hacer que las réplicas se perdieran con demasiada frecuencia. Se mejoró el proceso de recuperación de réplicas perdidas eligiendo para la clonación la réplica más actualizada. Además, las partes antiguas de una réplica perdida ya no se eliminan, sino que se desacoplan. #15701 (tavplubix). - Corrige una condición de carrera poco frecuente en diccionarios y tablas de MySQL. #15686 (alesapin).
- Se corrige una condición de carrera (inofensiva) en AMQP-CPP. #15667 (alesapin).
- Se corrige el error
Cannot add simple transform to empty Pipe, que se producía al leer desde la tablaBuffer, cuya estructura es distinta de la tabla de destino. Esto podía ocurrir si la tabla de destino devolvía un resultado vacío para la consulta. Corrige #15529. #15662 (Nikolai Kochetov). - Manejo adecuado de errores al insertar en MergeTree con S3. MergeTree sobre S3 es una funcionalidad experimental. #15657 (Pavel Kovalenko).
- Se corrigió un error en la función de tabla de S3: la región de la URL no se aplicaba a la configuración del cliente de S3. #15646 (Vladimir Chebotarev).
- Se corrige el orden de destrucción de los recursos en el paso
ReadFromStoragedel plan de consulta. En casos poco frecuentes, esto puede provocar fallos. Posiblemente esté relacionado con #15610. #15645 (Nikolai Kochetov). - Restar la métrica
ReadonlyReplicaal desadjuntar tablas de solo lectura. #15592 (sundyli). - Se corrigió el error
Element ... is not a constant expressional usar el resultado de la funciónJSON*enVALUES,LIMITo en la parte derecha del operadorIN. #15589 (tavplubix). - La consulta finalizará más rápido en caso de excepción. Se cancela la ejecución en las réplicas remotas si se produce una excepción. #15578 (Azat Khuzhin).
- Evita que pueda aparecer el mensaje de error
Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call. Esto corrige #15541. #15557 (alexey-milovidov). - Se corrige
Database <db> does not exist.en consultas con IN y tabla distribuida cuando no hay ninguna base de datos en el iniciador. #15538 (Artem Zuikov). - La mutación podría quedarse bloqueada esperando una parte inexistente después de
MOVEoREPLACE PARTITIONo, en casos excepcionales, después deDETACHoDROP PARTITION. Se ha corregido. #15537 (tavplubix). - Se corrige un error por el que el operador
ILIKEdejaba de distinguir entre mayúsculas y minúsculas si se había ejecutadoLIKEcon el mismo patrón. #15536 (alesapin). - Se corrigen los errores
Missing columnsal seleccionar columnas ausentes en los datos, pero que dependen de otras columnas que también están ausentes. Corrige #15530. #15532 (alesapin). - Generar un error cuando se pasa un solo parámetro a ReplicatedMergeTree en lugar de ignorarlo. #15516 (nvartolomei).
- Se corrigió un error en la suscripción a eventos en DDLWorker que, en raras ocasiones, podía hacer que las consultas en
ON CLUSTERse quedaran colgadas. Introducido en #13450. #15477 (alesapin). - Mostrar un error adecuado cuando el segundo argumento de la función de agregación
boundingRatiotenga un tipo incorrecto. #15407 (detailyang). - Corrige #15365: al adjuntar una base de datos con el motor MySQL se produce una excepción (sin contexto de consulta). #15384 (Winter Zhang).
- Se corrigió el problema con múltiples apariciones de transformadores de columnas en una consulta select. #15378 (Amos Bird).
- Se corrigió la compresión en el almacenamiento
S3. #15376 (Vladimir Chebotarev). - Corrige un error por el que consultas como
SELECT toStartOfDay(today())fallan y muestran un argumento time_zone vacío. #15319 (Bharat Nallan). - Se corrigió una condición de carrera durante el cambio de nombre de una tabla MergeTree y la limpieza en segundo plano. #15304 (alesapin).
- Se corrige una condición de carrera poco frecuente al iniciar el servidor cuando los logs del sistema están habilitados. #15300 (alesapin).
- Se corrige el bloqueo de las consultas con muchas subconsultas a la misma tabla del motor
MySQL. Anteriormente, si había más de 16 subconsultas a la misma tablaMySQLen una consulta, esta se quedaba bloqueada indefinidamente. #15299 (Anton Popov). - Corrige el informe de MSan en QueryLog. Se puede usar memoria no inicializada para el campo
memory_usage. #15258 (alexey-milovidov). - Se corrigió ‘Unknown identifier’ en GROUP BY cuando la consulta tiene un JOIN sobre una tabla Merge. #15242 (Artem Zuikov).
- Se corrige el bloqueo de la instancia al usar
joinGetcon tiposLowCardinality. Esto corrige #15214. #15220 (Amos Bird). - Se corrige un error en el motor de tabla
Bufferque impedía insertar datos con una estructura nueva enBufferdespués de una consultaALTER. Corrige #15117. #15192 (alesapin). - Ajustar el tamaño del campo Decimal en el paquete de definición de columnas de MySQL. #15152 (maqroll).
- Corrige
Data compressed with different methodsenjoin_algorithm='auto'. Conserva LowCardinality como tipo de la clave de unión de la tabla izquierda enjoin_algorithm='partial_merge'. #15088 (Artem Zuikov). - Se actualizó
jemallocpara corregirpercpu_arenacon máscara de afinidad. #15035 (Azat Khuzhin). #14957 (Azat Khuzhin). - Ya usamos la comparación con relleno entre String y FixedString (https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/FunctionsComparison.h#L333). Este PR aplica la misma lógica a la comparación de campos y corrige así el uso de FixedString como claves primarias. Esto corrige #14908. #15033 (Amos Bird).
- Si se llamaba a la función
barcon argumentos especialmente manipulados, podía producirse un desbordamiento de búfer. Con esto se cierra #13926. #15028 (alexey-milovidov). - Se corrigió el error
Cannot rename ... errno: 22, strerror: Invalid argumental ejecutar consultas DDL en la base de datos Atomic al ejecutar clickhouse-server en Docker en Mac OS. #15024 (tavplubix). - Corrige un bloqueo en RIGHT o FULL JOIN con join_algorith=‘auto’ cuando se supera el límite de memoria y debe cambiarse HashJoin por MergeJoin. #15002 (Artem Zuikov).
- Ahora, las configuraciones
number_of_free_entries_in_pool_to_execute_mutationynumber_of_free_entries_in_pool_to_lower_max_size_of_mergepueden ser iguales abackground_pool_size. #14975 (alesapin). - Corrección para que el
push downde predicados funcione cuando la subconsulta contiene la funciónfinalizeAggregation. Corrige #14847. #14937 (filimonov). - Se publican las frecuencias de CPU por núcleo lógico en
system.asynchronous_metrics. Esto corrige #14923. #14924 (Alexander Kuzmenkov). MaterializeMySQL(característica experimental): Se corrigió el error.metadata.tmp File exists. #14898 (Winter Zhang).- Corrige el problema por el que algunas invocaciones de la función
extractAllGroupspueden provocar el error “Memory limit exceeded”. Esto corrige #13383. #14889 (alexey-milovidov). - Se corrige un SIGSEGV al intentar hacer INSERT en StorageFile con descriptor de archivo. #14887 (Azat Khuzhin).
- Se solucionó un fallo de segmentación en el diccionario
cache#14837. #14879 (Nikita Mikhaylov). MaterializeMySQL(función experimental): Se corrigió un error al analizar eventos del binlog de MySQL, que provocabaAttempt to read after eofyPacket payload is not fully readen el motor de base de datosMaterializeMySQL. #14852 (Winter Zhang).- Se corrige un error poco frecuente en consultas
SELECTcuando la columna consultada tiene una expresiónDEFAULTque depende de otra columna que también tieneDEFAULT, no está presente en la consultaSELECTy no existe en disco. Corrige parcialmente #14531. #14845 (alesapin). - Soluciona un problema por el cual el servidor podía quedarse bloqueado durante el arranque mientras se comunicaba con ZooKeeper, si los archivos de configuración debían recuperarse desde ZK (mediante la opción de inclusión
from_zk). Esto corrige #14814. #14843 (Alexander Kuzmenkov). - Corrige la detección errónea de monotonicidad para la conversión reducida
Int -> Intde tipos con signo. Podría dar lugar a un resultado de consulta incorrecto. Este error se puso de manifiesto en #14513. #14783 (Amos Bird). - El transformador de columnas
Replacedebe sustituir los identificadores por AST clonados. Esto corrige #14695 . #14734 (Amos Bird). - Se corrigió la ausencia del nombre predeterminado de la base de datos en los metadatos de la vista materializada al ejecutar
ALTER ... MODIFY QUERY. #14664 (tavplubix). - Se corrige un error por el que una mutación
ALTER UPDATEcon una columnaNullableen la expresión de asignación y un valor constante (comoUPDATE x = 42) podía provocar un valor incorrecto en la columna o un fallo de segmentación. Corrige #13634, #14045. #14646 (alesapin). - Se corrigió un resultado incorrecto en la multiplicación de Decimal causado por una escala decimal errónea en la columna de resultado. #14603 (Artem Zuikov).
- Se corrigió la función
hasconLowCardinalitydeNullable. #14591 (Mike). - Limpieza del directorio de datos tras excepciones de ZooKeeper durante CreateQuery para el motor StorageReplicatedMergeTree. #14563 (Bharat Nallan).
- Se corrigen fallos de segmentación poco frecuentes en funciones con el combinador
-Resample, que podían aparecer como resultado de un desbordamiento con parámetros muy grandes. #14562 (Anton Popov). - Se corrige un error al convertir
Nullable(String)a Enum. Introducido por #12745. Esto corrige #14435. #14530 (Amos Bird). - Se corrigió el orden de clasificación incorrecto de la columna
Nullable. Esto soluciona #14344. #14495 (Nikita Mikhaylov). - Se corrige el problema por el que la función
currentDatabase()no podía usarse en una consulta DDLON CLUSTER. #14211 (Winter Zhang). MaterializeMySQL(característica experimental): Se corrigió el errorPacket payload is not fully readen el motor de base de datosMaterializeMySQL. #14696 (BohuTANG).
Mejora
- Habilitar de forma predeterminada el motor de base de datos
Atomicpara las bases de datos recién creadas. #15003 (tavplubix). - Se añadió la posibilidad de especificar códecs especializados como
Delta,T64, etc. para columnas con subtipos. Implementa #12551, corrige #11397, corrige #4609. #15089 (alesapin). - Recarga dinámica de la configuración de ZooKeeper. #14678 (sundyli).
- Ahora se permite ejecutar consultas
ALTER ... ON CLUSTERindependientemente del ajuste<internal_replication>en la configuración del clúster. #16075 (alesapin). - Ahora
joinGetadmite búsquedas por múltiples claves. Continuación de #12418. #13015 (Amos Bird). - Esperar a que
DROP/DETACH TABLErealmente se complete si se especificaNO DELAYoSYNCpara la base de datosAtomic. #15448 (tavplubix). - Ahora es posible cambiar el tipo de la columna de versión de
VersionedCollapsingMergeTreemediante la consultaALTER. #15442 (alesapin). - Expandir las macros
{database},{table}y{uuid}enzookeeper_pathal crear una tabla replicada. No permitirRENAME TABLEsi esto puede romperzookeeper_pathtras reiniciar el servidor. Corrige #6917. #15348 (tavplubix). - La función
nowadmite un argumento de zona horaria. Con esto se cierra 15264. #15285 (flynn). - No permita conexiones al servidor de ClickHouse hasta que se hayan ejecutado todos los scripts de
/docker-entrypoint-initdb.d/. #15244 (Aleksei Kozharin). - Se añadió la opción
optimizea la consultaEXPLAIN PLAN. Si está habilitada, se aplican optimizaciones a nivel del plan de consulta. Está habilitada de forma predeterminada. #15201 (Nikolai Kochetov). - Mensaje de excepción adecuado cuando CAST recibe un número incorrecto de argumentos. Esto cierra #13992. #15029 (alexey-milovidov).
- Se añadió la opción para deshabilitar TTL move al insertar un data part. #15000 (Pavel Kovalenko).
- Ignorar las restricciones de clave al realizar mutaciones. Sin este pull request, no es posible realizar mutaciones cuando
force_index_by_date = 1oforce_primary_key = 1. #14973 (Amos Bird). - Permite eliminar una tabla Replicated si el intento anterior de eliminación falló debido a la expiración de la sesión de ZooKeeper. Esto corrige #11891. #14926 (alexey-milovidov).
- Se corrigió una violación excesiva de las restricciones de configuración al ejecutar SELECT con SETTINGS en una tabla distribuida. #14876 (Amos Bird).
- Añade una configuración de consulta
load_balancing_first_offsetpara indicar explícitamente cuál es la primera réplica. Se usa junto con la estrategia de balanceo de cargaFIRST_OR_RANDOM, lo que permite controlar la carga de trabajo de las réplicas. #14867 (Amos Bird). - Mostrar las subconsultas de
SETyJOINen el resultado deEXPLAIN. #14856 (Nikolai Kochetov). - Se permite usar una configuración de almacenamiento de varios volúmenes en el almacenamiento
Distributed. #14839 (Pavel Kovalenko). - Construir
query_start_timeyquery_start_time_microsecondsusando la misma timespec. #14831 (Bharat Nallan). - Se añadió compatibilidad para desactivar la persistencia de
StorageJoinyStorageSet; esta funcionalidad se controla mediante la opcióndisable_set_and_join_persistency. Además, este PR resolvió el problema #6318. #14776 (vxider). - Ahora se puede usar
COLUMNSpara abarcar una lista de columnas y aplicar después transformadores de columnas. #14775 (Amos Bird). - Se añade
merge_algorithma la tablasystem.mergespara mejorar la inspección de las fusiones. #14705 (Amos Bird). - Corrige una posible fuga de memoria causada por el watch exists de ZooKeeper. #14693 (hustnn).
- Se permite la ejecución en paralelo del DDL distribuido. #14684 (Azat Khuzhin).
- Se añade el contador de eventos
QueryMemoryLimitExceeded. Esto cierra #14589. #14647 (fastio). - Se corrigieron algunos espacios en blanco al final en el formato de las consultas. #14595 (Azat Khuzhin).
- ClickHouse trata
partition exprykey exprde forma diferente.partition exprse utiliza para construir un índice minmax que contiene las columnas relacionadas, mientras queprimary key exprse almacena como una expr. A veces, el usuario puede particionar una tabla en niveles más amplios, comopartition by i / 1000. Sin embargo, los operadores binarios no son monótonos y este PR intenta corregirlo. También podría beneficiar otros casos de uso. #14513 (Amos Bird). - Se añade una opción para omitir las comprobaciones de acceso de
DiskS3. El discos3es una característica experimental. #14497 (Pavel Kovalenko). - Se acelera el proceso de apagado del servidor si hay solicitudes de S3 en curso. #14496 (Pavel Kovalenko).
SYSTEM RELOAD CONFIGahora lanza una excepción si no se puede recargar y sigue usando elusers.xmlanterior. La recarga periódica en segundo plano también sigue usando elusers.xmlanterior si no se puede recargar. #14492 (Vitaly Baranov).- Para las sentencias INSERT con datos en línea en formato VALUES en el modo script de
clickhouse-client, se admite el punto y coma como terminador de los datos, además del salto de línea. Cierra #12288. #13192 (Alexander Kuzmenkov). - Se admiten codecs personalizados en partes compactas. #12183 (Anton Popov).
Mejora del rendimiento
- Se habilitan las partes compactas de forma predeterminada para las partes pequeñas. Esto permite procesar inserts frecuentes con algo más de eficiencia (4..100 veces). #11913 (alexey-milovidov).
- Se mejora el rendimiento de
quantileTDigest. Esto corrige #2668. #15542 (Kruglov Pavel). - Se reduce significativamente el uso de memoria en AggregatingInOrderTransform/optimize_aggregation_in_order. #15543 (Azat Khuzhin).
- Multiplicación de 256 bits más rápida. #15418 (Artem Zuikov).
- Se mejora el rendimiento de los tipos de 256 bits usando (u)int64_t como tipo base para enteros anchos. Los enteros anchos originales usan tipos de 8 bits como base. #14859 (Artem Zuikov).
- Se usa explícitamente un disco temporal para almacenar los datos temporales de la fusión vertical. #15639 (Grigory Pervakov).
- Se usa una única solicitud S3 DeleteObjects en lugar de varias DeleteObject en un bucle. No hay cambios de funcionalidad, por lo que queda cubierto por pruebas existentes como integration/test_log_family_s3. #15238 (ianton-ru).
- Se corrige que
DateTime <op> DateTimeeligiera por error la implementación genérica lenta. Esto corrige #15153. #15178 (Amos Bird). - Se mejora el rendimiento de la clave de GROUP BY de tipo
FixedString. #15034 (Amos Bird). - Al iniciar clickhouse-server, solo se aplica
mlockal segmento de código. En versiones anteriores, todas las regiones mapeadas se bloqueaban en memoria, incluida la información de depuración. La información de depuración suele estar dividida en un archivo independiente, pero si no era así, provocaba un uso de memoria de +2..3 GiB. #14929 (alexey-milovidov). - El binario de ClickHouse se ha reducido gracias a la optimización en tiempo de enlace.
Mejora de compilación/pruebas/empaquetado
- Ahora usamos clang-11 para la build de producción de ClickHouse. #15239 (alesapin).
- Ahora, en CI, usamos clang-11 para compilar ClickHouse. #14846 (alesapin).
- Se cambian las compilaciones de binarios (Linux, Darwin, AArch64, FreeDSD) a clang-11. #15622 (Ilya Yatsishin).
- Ahora, todas las imágenes de prueba usan
llvm-symbolizer-11. #15069 (alesapin). - Permite compilar con llvm-11. #15366 (alexey-milovidov).
- Se cambió de
clang-tidy-10aclang-tidy-11. #14922 (alexey-milovidov). - Usar de forma predeterminada el administrador de pases experimental de LLVM. #15608 (Danila Kutenin).
- No permita que ninguna unidad de traducción de C++ tarde más de 10 minutos en compilarse ni utilice más de 10 GB de memoria. Esto corrige #14925. #15060 (alexey-milovidov).
- Lograr que la prueba de rendimiento sea más estable y representativa dividiendo las ejecuciones de prueba y de perfil. #15027 (alexey-milovidov).
- Se intentó hacer más fiables las pruebas de rendimiento. Esto se consigue reasignando sobre la marcha la memoria ejecutable del proceso con
madvisepara usar páginas gigantes transparentes; esto puede reducir la cantidad de fallos de iTLB, que son la principal fuente de inestabilidad en las pruebas de rendimiento. #14685 (alexey-milovidov). - Migrado a Python 3. Esto cierra #14886. #15007 (Azat Khuzhin).
- Hacer que las pruebas funcionales fallen antes si el servidor no responde. Esto cierra #15262. #15267 (alexey-milovidov).
- Permite ejecutar la versión AArch64 de clickhouse-server sin configuración. Esto facilita #15174. #15266 (alexey-milovidov).
- Mejoras en las imágenes de Docker para CI: se elimina ZooKeeper y se utiliza un único script para instalar las configuraciones de prueba. #15215 (alesapin).
- Corrige el reenvío de las opciones de CMake en el script de fast test. Corrige un error en #14711. #15155 (alesapin).
- Se añadió un script para realizar un benchmark de hardware con un solo comando. #15115 (alexey-milovidov).
- Se dividió la enorme prueba
test_dictionaries_all_layouts_and_sourcesen pruebas más pequeñas. #15110 (Nikita Mikhaylov). - Posible corrección del reporte de MSan en base64 (en servidores con AVX-512). Esto corrige #14006. #15030 (alexey-milovidov).
- Reformateo y limpieza del código en todos los archivos *.py de pruebas de integración. #14864 (Bharat Nallan).
- Se corrigió el caso de prueba inestable de transacción vacía en MaterializeMySQL detectado en CI. #14854 (Winter Zhang).
- Se intenta acelerar un poco la compilación. #14808 (alexey-milovidov).
- Se acelera un poco la compilación al eliminar cabeceras no utilizadas. #14714 (alexey-milovidov).
- Corrige un fallo de compilación en OSX. #14761 (Winter Zhang).
- Activar
ccachede forma predeterminada encmakesi se encuentra en el sistema operativo. #14575 (alesapin). - Control de la configuración de las compilaciones de CI desde el repositorio de ClickHouse. #14547 (alesapin).
- En los archivos de CMake: - Se trasladaron a comentarios encima algunas partes de las descripciones de las opciones. - Se sustituyeron 0 ->
OFFy 1 ->ONen los valores predeterminados deoption. - Se añadieron algunas descripciones y enlaces a la documentación de las opciones. - Se sustituyó la opciónFUZZER(hay otra opción,ENABLE_FUZZING, que también habilita la misma funcionalidad). - Se eliminó la opciónENABLE_GTEST_LIBRARY, ya que existeENABLE_TESTS. Consulte la descripción completa en el PR: #14711 (Mike). - Reducir un poco el tamaño del binario (~50 Mb para la versión de depuración). #14555 (Artem Zuikov).
- Usar std::filesystem::path en ConfigProcessor para concatenar rutas de archivos. #14558 (Bharat Nallan).
- Se corrige una aserción de depuración en
bitShiftLeft()al llamarse con un entero grande negativo. #14697 (Artem Zuikov).
Lanzamiento de ClickHouse 20.9
Lanzamiento de ClickHouse v20.9.7.11-stable, 2020-12-07
Mejora del rendimiento
- Se mejora el rendimiento de lectura de las tablas
Mergesobre una gran cantidad de tablasMergeTree. Corrige #7748. #16988 (Anton Popov).
Corrección de errores
- No restaurar partes desde WAL si
in_memory_parts_enable_walestá deshabilitado. #17802 (detailyang). - Se corrigió un segfault cuando no había suficiente espacio al insertar en la tabla
Distributed. #17737 (tavplubix). - Se solucionó un problema que provocaba que ClickHouse no pudiera reanudar la conexión con servidores MySQL. #17681 (Alexander Kazakov).
- Se corrigió el error
Function not implementedal ejecutar la consultaRENAMEen la base de datosAtomiccuando ClickHouse se ejecuta en Windows Subsystem for Linux. Corrige #17661. #17664 (tavplubix). - Cuando se usaba clickhouse-client en modo interactivo con consultas de varias líneas, el comentario de una sola línea se extendía por error hasta el final de la consulta. Esto corrige #13654. #17565 (alexey-milovidov).
- Se corrige el problema por el que el servidor, en casos muy excepcionales, puede dejar de aceptar conexiones. #17542 (alexey-milovidov).
- Se corrige el cuelgue de la consulta ALTER cuando la mutación correspondiente se canceló en otra réplica. Corrige #16953. #17499 (alesapin).
- Se corrigió un error por el que ClickHouse subestimaba el tamaño de la caché de marcas. Esto puede ocurrir cuando hay muchos archivos pequeños con marcas. #17496 (alesapin).
- Se corrigió
ORDER BYcon la configuraciónoptimize_redundant_functions_in_order_byhabilitada. #17471 (Anton Popov). - Corrige los duplicados después de
DISTINCT, que podían producirse debido a una optimización incorrecta. Corrige #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov). - Se corrige un fallo al leer de la tabla
JOINcon tiposLowCardinality. Corrige #17228. #17397 (Nikolai Kochetov). - Se corrige la invalidación del índice Set cuando hay columnas const en la subconsulta. Esto corrige #17246 . #17249 (Amos Bird).
- Se corrige la comparación de ColumnConst que provoca un fallo. Corrige #17088 . #17135 (Amos Bird).
- Se corrigió un cierre inesperado en la consulta
CREATE TABLE ... AS some_tablecuandosome_tablese había creado comoAS table_function(). Corrige #16944. #17072 (tavplubix). - Corrección de error en la función fuzzBits, incidencia relacionada: #16980. #17051 (hexiaoting).
- Evita errores de red innecesarios en consultas remotas que pueden cancelarse durante la ejecución, como las consultas con
LIMIT. #17006 (Azat Khuzhin). - Mejora menor. #16866 (tavplubix).
- Devuelve el número de filas afectadas por las consultas INSERT a través del protocolo MySQL. Antes, ClickHouse siempre devolvía 0; esto ya se ha corregido. Corrige #16605. #16715 (Winter Zhang).
Mejora de compilación/pruebas/empaquetado
- Actualización de los datos integrados de zona horaria a la versión 2020d (también se actualiza cctz a la última versión de
master). #17204 (filimonov).
Lanzamiento de ClickHouse v20.9.6.14-stable, 2020-11-20
Mejora
- Hacer posible la conexión al endpoint seguro de
clickhouse-serverque requiere SNI. Esto es posible cuandoclickhouse-serverestá alojado detrás de un proxy TLS. #16938 (filimonov). - Las funciones de agregación condicionales (por ejemplo:
avgIf,sumIf,maxIf) deben devolverNULLcuando faltan filas y usar argumentos Nullable. #13964 (Winter Zhang).
Corrección de errores
- Se corrige un error por el que las consultas
ON CLUSTERpodían quedarse bloqueadas indefinidamente en ReplicatedMergeTreeTables que no son líderes. #17089 (alesapin). - Se vuelve a resolver la IP de
format_avro_schema_registry_urlen caso de error. #16985 (filimonov). - Se corrige un posible cierre inesperado del servidor después de
ALTER TABLE ... MODIFY COLUMN ... NewTypecuandoSELECTtiene una expresiónWHEREsobre la columna que se está modificando y la alteración aún no ha terminado. #16968 (Amos Bird). - El script de instalación debe crear siempre subdirectorios en las carpetas de configuración. Esto solo es relevante para compilaciones de Docker con configuración personalizada. #16936 (filimonov).
- Se corrige un posible error
Illegal type of argumenten consultas conORDER BY. Corrige #16580. #16928 (Nikolai Kochetov). - Se aborta la carga multiparte si no se escribió ningún dato en WriteBufferFromS3. #16840 (Pavel Kovalenko).
- Se corrige un cierre inesperado al usar
anysin argumentos. Esto corresponde a #16803. cc @azat. #16826 (Amos Bird). - Se corrige el operador
INsobre varias columnas y tuplas con la configuracióntransform_null_inhabilitada. Corrige #15310. #16722 (Anton Popov). - Esto corrige optimize_read_in_order/optimize_aggregation_in_order con max_threads>0 y una expresión en
ORDER BY. #16637 (Azat Khuzhin). - Corrige #16574 y #16231: se corrige el fallo de la consulta remota al usar la función de agregación con sufijo ‘if’. #16610 (Winter Zhang).
- La consulta finaliza más rápido en caso de excepción. Se cancela la ejecución en réplicas remotas si se produce una excepción. #15578 (Azat Khuzhin).
Lanzamiento de ClickHouse v20.9.5.5-stable, 2020-11-13
Corrección de errores
- Se corrigen cierres inesperados silenciosos poco frecuentes cuando el perfilador de consultas está activado y ClickHouse está instalado en un sistema operativo con una versión de glibc que tiene (supuestamente) tablas de desenrollado asíncrono defectuosas para algunas funciones. Esto corrige #15301. Esto corrige #13098. #16846 (alexey-milovidov).
- Ahora, al procesar AVRO de entrada, se elimina LowCardinality del tipo. Corrige #16188. #16521 (Mike).
- Se corrige el rápido crecimiento de los metadatos al usar MySQL Master -> MySQL Slave -> ClickHouse MaterializeMySQL Engine, con
slave_parallel_workeractivado en MySQL Slave, reduciendo correctamente los conjuntos GTID. Esto corrige #15951. #16504 (TCeason). - Se corrige DROP TABLE para Distributed (condición de carrera con INSERT). #16409 (Azat Khuzhin).
- Se corrige el procesamiento de entradas muy grandes en la cola de replicación. Pueden aparecer entradas muy grandes en consultas ALTER si la estructura de la tabla es extremadamente grande (cerca de 1 MB). Esto corrige #16307. #16332 (alexey-milovidov).
- Se corrige el comportamiento incoherente por el que podía descartarse una parte de los datos devueltos porque no se había creado el conjunto para su filtrado. #16308 (Nikita Mikhaylov).
- Se corrige un error con la base de datos MySQL. Cuando el servidor MySQL usado como motor de base de datos no está disponible, algunas consultas generan una Exception porque intentan obtener tablas del servidor deshabilitado, aunque no es necesario. Por ejemplo, la consulta
SELECT ... FROM system.partsdebería funcionar solo con tablas MergeTree y no acceder en absoluto a la base de datos MySQL. #16032 (Kruglov Pavel).
Lanzamiento de ClickHouse v20.9.4.76-stable (2020-10-29)
Corrección de errores
- Se corrigió la doble liberación en caso de excepción en la función
dictGet. Podía haber ocurrido si el Diccionario se había cargado con error. #16429 (Nikolai Kochetov). - Corrige
group bycon los modificadorestotals/rollup/cubey las funcionesmin/maxen las claves degroup by. Corrige #16393. #16397 (Anton Popov). - Se corrigió el INSERT asíncrono de Distributed con prefer_localhost_replica=0 e internal_replication. #16358 (Azat Khuzhin).
- Se corrige un error grave en el código de la implementación de TwoLevelStringHashTable, que podría provocar una fuga de memoria. Me sorprende cómo este error pudo pasar desapercibido durante tanto tiempo… #16264 (Amos Bird).
- Corrige el caso en el que la memoria puede sobreasignarse sin respetar el límite. Esto cierra #14560. #16206 (alexey-milovidov).
- Se corrige el cuelgue de la consulta
ALTER MODIFY ... ORDER BYparaReplicatedVersionedCollapsingMergeTree. Esto corrige #15980. #16011 (alesapin). - Se corrigió el analizador de nombres de colación y de juego de caracteres, y se añadió compatibilidad con
length = 0para el tipo String. #16008 (Winter Zhang). - Se permite usar el layout directo para diccionarios con claves complejas. #16007 (Anton Popov).
- Evitar que la réplica se quede bloqueada durante 5-10 min cuando se produzca un error de replicación después de un período de inactividad. #15987 (filimonov).
- Corrige errores de segmentación poco frecuentes al insertar en MaterializedView o al seleccionar de ella mientras se elimina simultáneamente la tabla de destino (para el motor de base de datos Atomic). #15984 (tavplubix).
- Se corrige la ambigüedad en el análisis sintáctico de los perfiles de configuración:
CREATE USER ... SETTINGS profile readonlyahora se considera que usa un perfil llamadoreadonly, y no una configuración llamadaprofilecon la restricciónreadonly. Esto corrige #15628. #15982 (Vitaly Baranov). - Corrige un fallo cuando falla la creación de la base de datos. #15954 (Winter Zhang).
- Se corrigió el fallo de
DROP TABLE IF EXISTScon el errorTable ... does not existcuando se renombra una tabla de forma concurrente (para el motor de base de datos Atomic). Se corrigió un interbloqueo poco frecuente al ejecutar de forma concurrente algunas consultas DDL con varias tablas (comoDROP DATABASEyRENAME TABLE) Se corrigió el fallo deDROP/DETACH DATABASEconTable ... does not existal ejecutar de forma concurrenteDROP/DETACH TABLE. #15934 (tavplubix). - Corrige el resultado vacío incorrecto de una consulta en una tabla
Distributedsi la consulta tieneWHERE,PREWHEREyGLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov). - Se corrigen posibles bloqueos mutuos en RBAC. #15875 (Vitaly Baranov).
- Corrige la excepción
Block structure mismatchen las consultasSELECT ... ORDER BY DESCejecutadas después de la consultaALTER MODIFY COLUMN. Corrige #15800. #15852 (alesapin). - Se corrigió la imprecisión de
select count()en MaterializeMySQL. #15767 (tavplubix). - Se corrigen algunos casos de consultas en los que solo se seleccionan columnas virtuales. Anteriormente, podía lanzarse la excepción
Not found column _nothing in block. Soluciona #12298. #15756 (Anton Popov). - Se corrigió el valor predeterminado demasiado bajo de la configuración
max_replicated_logs_to_keep, que podía hacer que las réplicas se perdieran con demasiada frecuencia. Se mejoró el proceso de recuperación de réplicas perdidas al elegir la réplica más actualizada para clonar. Además, las partes antiguas de la réplica perdida no se eliminan, sino que se desacoplan. #15701 (tavplubix). - Se corrige el error
Cannot add simple transform to empty Pipe, que se producía al leer de la tablaBuffer, cuya estructura es diferente de la de la tabla de destino. Esto podía ocurrir si la tabla de destino devolvía un resultado vacío para la consulta. Corrige #15529. #15662 (Nikolai Kochetov). - Se corrigió un error en los globs de la función de tabla S3; la región de la URL no se aplicaba a la configuración del cliente S3. #15646 (Vladimir Chebotarev).
- Disminuye la métrica
ReadonlyReplicaal desvincular tablas de solo lectura. Esto corrige #15598. #15592 (sundyli). - Genera un error cuando se pasa un único parámetro a ReplicatedMergeTree en lugar de ignorarlo. #15516 (nvartolomei).
Mejora
- Ahora se permite ejecutar consultas
ALTER ... ON CLUSTERindependientemente del ajuste<internal_replication>en la configuración del clúster. #16075 (alesapin). - Se expanden las macros
{database},{table}y{uuid}en los argumentos deReplicatedMergeTreeal crear la tabla. #16160 (tavplubix).
Lanzamiento de ClickHouse v20.9.3.45-stable (2020-10-09)
Corrección de errores
- Se corrige el error
Cannot find column, que puede producirse al insertar enMATERIALIZED VIEWen caso de que la consulta deMVcontengaARRAY JOIN. #15717 (Nikolai Kochetov). - Se corrigió una condición de carrera en AMQP-CPP. #15667 (alesapin).
- Corrige el orden de destrucción de los recursos en el paso
ReadFromStoragedel plan de consulta. En casos poco frecuentes, podría provocar fallos. Posiblemente relacionado con #15610. #15645 (Nikolai Kochetov). - Se corrigió el error
Element ... is not a constant expressional usar el resultado de la funciónJSON*enVALUES,LIMITo en la parte derecha del operadorIN. #15589 (tavplubix). - Evita que aparezca el mensaje de error
Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call. Esto corrige #15541. #15557 (alexey-milovidov). - Se redujo significativamente el uso de memoria en AggregatingInOrderTransform/optimize_aggregation_in_order. #15543 (Azat Khuzhin).
- La mutación podía quedarse bloqueada esperando una parte inexistente después de
MOVEoREPLACE PARTITIONo, en casos poco frecuentes, después deDETACHoDROP PARTITION. Ya se ha corregido. #15537 (tavplubix). - Se corrigió un error por el que el operador
ILIKEdejaba de ser insensible a mayúsculas y minúsculas si se había ejecutadoLIKEcon el mismo patrón. #15536 (alesapin). - Corrige los errores de
Missing columnsal seleccionar columnas ausentes en los datos, pero que dependen de otras columnas también ausentes en los datos. Corrige #15530. #15532 (alesapin). - Se corrigió un error en la suscripción a eventos de DDLWorker que, en raras ocasiones, podía hacer que las consultas se quedaran colgadas en
ON CLUSTER. Introducido en #13450. #15477 (alesapin). - Informar correctamente de un error cuando el segundo argumento de la aggregate function
boundingRatioes de un tipo incorrecto. #15407 (detailyang). - Se corrige un error por el que las consultas como
SELECT toStartOfDay(today())fallaban con un mensaje de argumento time_zone vacío. #15319 (Bharat Nallan). - Se corrigió una condición de carrera al cambiar el nombre de una tabla MergeTree y durante la limpieza en segundo plano. #15304 (alesapin).
- Se corrige una condición de carrera poco frecuente al iniciar el servidor cuando system.logs está habilitado. #15300 (alesapin).
- Corrige el aviso de MSan en QueryLog. Se puede usar memoria sin inicializar en el campo
memory_usage. #15258 (alexey-milovidov). - Se corrige el cierre inesperado de la instancia al usar
joinGetcon tipos LowCardinality. Esto corrige #15214. #15220 (Amos Bird). - Corrige un error en el motor de tabla
Bufferque no permite insertar datos con la nueva estructura enBufferdespués de una consultaALTER. Corrige #15117. #15192 (alesapin). - Se ajustó el tamaño del campo decimals en el paquete de definición de columna de MySQL. #15152 (maqroll).
- Se corrigió el error
Cannot rename ... errno: 22, strerror: Invalid argumentdurante la ejecución de una consulta DDL en la base de datos Atomic al ejecutar clickhouse-server en Docker sobre Mac OS. #15024 (tavplubix). - Se corrige el funcionamiento del push down de predicados cuando la subconsulta contiene la función finalizeAggregation. Corrige #14847. #14937 (filimonov).
- Soluciona un problema por el que el servidor puede quedarse bloqueado durante el arranque mientras se comunica con ZooKeeper, si los archivos de configuración tienen que obtenerse de ZK (mediante la opción de inclusión
from_zk). Esto corrige #14814. #14843 (Alexander Kuzmenkov).
Mejora
- Ahora es posible cambiar el tipo de la columna de versión de
VersionedCollapsingMergeTreemediante la consultaALTER. #15442 (alesapin).
Versión de ClickHouse v20.9.2.20, 2020-09-22
Cambio incompatible con versiones anteriores
- Al actualizar desde versiones anteriores a la 20.5, si se realiza una actualización gradual y el clúster contiene tanto versiones 20.5 o posteriores como versiones anteriores a la 20.5, reiniciar nodos de ClickHouse con versiones antiguas puede provocar errores
Part ... intersects previous partsi una versión antigua se inicia en presencia de versiones más nuevas. Para evitar este error, primero instale paquetes más recientes de clickhouse-server en todos los nodos del clúster y después realice los reinicios (de este modo, cuando se reinicie clickhouse-server, se iniciará con la nueva versión).
Nueva funcionalidad
- Se añadieron los transformadores de columnas
EXCEPT,REPLACEyAPPLY, que pueden aplicarse a la lista de columnas seleccionadas (después de*oCOLUMNS(...)). Por ejemplo, puede escribirSELECT * EXCEPT(URL) REPLACE(number + 1 AS number). Otro ejemplo:select * apply(length) apply(max) from wide_string_tablepara averiguar la longitud máxima de todas las columnas de cadena. #14233 (Amos Bird). - Se añadió una función de agregación
rankCorrque calcula un coeficiente de correlación de rangos. #11769 (antikvist) #14411 (Nikita Mikhaylov). - Se añadió la table function
view, que convierte una subconsulta en un objeto de tabla. Esto facilita pasar consultas. Por ejemplo, puede usarse en las table functions remote/cluster. #12567 (Amos Bird).
Corrección de errores
- Se corrige un error por el que una mutación
ALTER UPDATEcon una columna Nullable en una expresión de asignación y un valor constante (comoUPDATE x = 42) podía provocar un valor incorrecto en la columna o un fallo de segmentación. Corrige #13634, #14045. #14646 (alesapin). - Se corrigió un resultado incorrecto en la multiplicación de Decimal causado por una escala decimal incorrecta en la columna de resultado. #14603 (Artem Zuikov).
- Se corrigió el orden de clasificación incorrecto de la columna
Nullable. Esto corrige #14344. #14495 (Nikita Mikhaylov). - Se corrigió una comparación inconsistente con una clave primaria de tipo
FixedStringdurante el análisis de índices cuando se comparaba con una cadena de menor longitud. Esto corrige #14908. #15033 (Amos Bird). - Se corrige un error que provoca una asignación incorrecta de las fusiones si la tabla tiene particiones con una sola parte. #14444 (alesapin).
- Si se llamaba a la función
barcon argumentos especialmente diseñados, podía producirse un desbordamiento de búfer. Esto cierra #13926. #15028 (alexey-milovidov). - Se publican las frecuencias de CPU por núcleo lógico en
system.asynchronous_metrics. Esto corrige #14923. #14924 (Alexander Kuzmenkov). - Se corrigió el error
.metadata.tmp File existsal usar el motor de base de datosMaterializeMySQL. #14898 (Winter Zhang). - Corrige el problema por el que algunas invocaciones de la función
extractAllGroupspueden provocar el error “Memory limit exceeded”. Esto corrige #13383. #14889 (alexey-milovidov). - Se corrige SIGSEGV al intentar hacer INSERT en StorageFile(fd). #14887 (Azat Khuzhin).
- Se corrige un error poco frecuente en las consultas
SELECTcuando la columna consultada tiene una expresiónDEFAULTque depende de otra columna que también tieneDEFAULTy que no está presente en la consulta ni existe en el disco. Corrige parcialmente #14531. #14845 (alesapin). - Se corrige la detección errónea de la monotonicidad en la conversión
Int -> Intreducida de tipos con signo. Podría provocar resultados de consulta incorrectos. Este error se pone de manifiesto en #14513. #14783 (Amos Bird). - Se corrigió la omisión del nombre predeterminado de la base de datos en los metadatos de la vista materializada al ejecutar
ALTER ... MODIFY QUERY. #14664 (tavplubix). - Corrige un posible resultado incorrecto de la función
hascuando intervienen los tipos LowCardinality y Nullable. #14591 (Mike). - Limpieza del directorio de datos tras excepciones de ZooKeeper durante la consulta CREATE para tablas con motor ReplicatedMergeTree. #14563 (Bharat Nallan).
- Corrige fallos de segmentación poco frecuentes en funciones con el combinador
-Resample, que podían producirse como resultado de un desbordamiento con parámetros muy grandes. #14562 (Anton Popov). - Comprobación del desbordamiento del tamaño del array en la función de agregado
topK. Sin esta comprobación, el usuario podría enviar una consulta con parámetros especialmente diseñados que provocarían una caída del servidor. Esto cierra #14452. #14467 (alexey-milovidov). - Se delegan en systemd las acciones de reinicio/inicio/detención/recarga del proxy de SysVinit (si se usa). #14460 (Azat Khuzhin).
- Detener la ejecución de la consulta si se produce una excepción en el propio
PipelineExecutor. Esto podría evitar que, en raras ocasiones, la consulta se quede bloqueada. #14334 #14402 (Nikolai Kochetov). - Se corrige un fallo durante una consulta
ALTERen una tabla creadaAS table_function. Corrige #14212. #14326 (alesapin). - Se corrige una excepción al ejecutar la consulta ALTER LIVE VIEW con el comando REFRESH. LIVE VIEW es una funcionalidad experimental. #14320 (Bharat Nallan).
- Se corrigió el tiempo de vida de QueryPlan (para EXPLAIN PIPELINE graph=1) en consultas con intérprete anidado. #14315 (Azat Khuzhin).
- Mejora en la comprobación del tamaño de la tupla en los diccionarios externos con clave compleja y caché SSD. Esto corrige #13981. #14313 (alexey-milovidov).
- No se permite
CODECen columnas de tipoALIAS. Corrige #13911. #14263 (Bharat Nallan). - Se corrige la sentencia GRANT ALL cuando se ejecuta en un nivel no global. #13987 (Vitaly Baranov).
- Se corrigió la captura de arrayJoin() en una lambda (se producía una excepción con un mensaje de error lógico). #13792 (Azat Khuzhin).
Característica experimental
- Se añadió la herramienta
db-generatorpara generar bases de datos aleatorias a partir de consultas SELECT proporcionadas. Puede facilitar la reproducción de problemas cuando solo se dispone de un reporte de errores incompleto del usuario. #14442 (Nikita Mikhaylov) #10973 (ZeDRoman).
Mejora
- Se permite usar una configuración de almacenamiento multivolumen en el almacenamiento Distributed. #14839 (Pavel Kovalenko).
- Se prohíbe usar un argumento
time_zonevacío en funciones del tipotoStartOf*. #14509 (Bharat Nallan). - El handler de MySQL devuelve
OKpara consultas comoSET @@var = value. Esa instrucción se ignora. Esto es necesario porque algunos drivers de MySQL envían la consultaSET @@para su configuración después del handshake: https://github.com/ClickHouse/ClickHouse/issues/9336#issuecomment-686222422. #14469 (BohuTANG). - Ahora los TTL se aplicarán durante la merge si no se habían materializado previamente. #14438 (alesapin).
- Ahora
clickhouse-obfuscatoradmite el tipo UUID, tal como se propuso en #13163. #14409 (dimarub2000). - Se añadió la nueva opción de configuración
system_events_show_zero_values, tal como se propuso en #11384. #14404 (dimarub2000). - La clave primaria se convierte implícitamente en no nula en
MaterializeMySQL(igual que enMySQL). Corrige #14114. #14397 (Winter Zhang). - Se reemplazan los enteros de gran tamaño (256 bits) de Boost.Multiprecision por la implementación de https://github.com/cerevra/int. Los enteros de 256 bits son experimentales. #14229 (Artem Zuikov).
- Se añade el codec de compresión predeterminado para las partes de
system.part_logcon el nombredefault_compression_codec. #14116 (alesapin). - Se añade un argumento de precisión para el tipo
DateTime. Esto permite usar el nombreDateTimeen lugar deDateTime64. #13761 (Winter Zhang). - Se añadió la autorización
requirepasspara el Diccionario externoRedis. #13688 (Ivan Torgashov). - Mejoras en el engine
RabbitMQ: se añadió el manejo de fallos de conexión y de canales, commits correctos, manejo de fallos en insert, mejores exchanges, durabilidad de colas y posibilidad de reanudar colas, así como nueva configuración de colas. Se corrigieron las pruebas. #12761 (Kseniia Sumarokova). - Se admiten codecs personalizados en partes compactas. #12183 (Anton Popov).
Mejora del rendimiento
- Optimización de consultas con LIMIT/LIMIT BY/ORDER BY para Distributed con GROUP BY sharding_key (con
optimize_skip_unused_shardsyoptimize_distributed_group_by_sharding_key). #10373 (Azat Khuzhin). - Creación de conjuntos para múltiples
JOINeINen paralelo. Puede mejorar ligeramente el rendimiento de las consultas con varias expresionesIN subquerydistintas. #14412 (Nikolai Kochetov). - Mejora del rendimiento del motor Kafka al proporcionar un hilo independiente para cada consumidor. Pool de hilos independiente para motores de streaming (como Kafka). #13939 (fastio).
Mejoras de compilación/pruebas/empaquetado
- Reducir el tamaño del binario en la compilación de depuración eliminando la información de depuración de
Functions. Esto solo es necesario para un proyecto interno de Yandex que utiliza un enlazador muy antiguo. #14549 (alexey-milovidov). - Preparar la compilación con clang 11. #14455 (alexey-milovidov).
- Corregir la lógica del script de backport. En versiones anteriores, se activaba para cualquier etiqueta de color rojo al 100 %. Era extraño. #14433 (alexey-milovidov).
- Las pruebas de integración usan la configuración base predeterminada. Todos los cambios de configuración se especifican explícitamente mediante los parámetros
main_configs,user_configsydictionariesde la instancia. #13647 (Ilya Yatsishin).
Versión de ClickHouse 20.8
Versión de ClickHouse v20.8.12.2-lts, 2021-01-16
Corrección de errores
- Se corrigió el combinador *If con una función unaria y tipos Nullable. #18806 (Azat Khuzhin).
- Se restringieron las merges de wide a partes compactas. En caso de vertical merge, esto producía una parte de resultado corrupta. #18381 (Anton Popov).
Versión de ClickHouse v20.8.11.17-lts, 2020-12-25
Corrección de errores
- Se deshabilitó la escritura con AIO durante los merges, ya que puede provocar, en casos extremadamente raros, corrupción de datos en las columnas de la clave primaria durante el merge. #18481 (alesapin).
- Se corrigió el error
value is too shortal ejecutar funcionestoType(...)(toDate,toUInt32, etc.) con un argumento de tipoNullable(String). Ahora, estas funciones devuelvenNULLen caso de errores de análisis en lugar de lanzar una excepción. Corrige #7673. #18445 (tavplubix). - Se corrigieron posibles fallos en funciones de agregación con el combinador
Distinctal usar agregación en dos niveles. Corrige #17682. #18365 (Anton Popov).
Versión de ClickHouse v20.8.10.13-lts, 2020-12-24
Corrección de errores
- Cuando la rotación de logs del servidor se configuraba mediante el parámetro
logger.sizecon un valor numérico superior a 2^32, los logs no rotaban correctamente. #17905 (Alexander Kuzmenkov). - Se corrigió la inicialización incorrecta de
max_compress_block_sizeen MergeTreeWriterSettings pormin_compress_block_size. #17833 (flynn). - Se corrigió un problema por el que ClickHouse no podía restablecer la conexión con servidores MySQL. #17681 (Alexander Kazakov).
- Se corrigió el bloqueo de la consulta
ALTERcuando se cancelaba la mutación correspondiente en otra réplica. Esto corrige #16953. #17499 (alesapin). - Se corrigió un error por el que ClickHouse subestimaba el tamaño de la caché de marcas. Esto puede ocurrir cuando hay muchos archivos muy pequeños con marcas. #17496 (alesapin).
- Se corrigió
ORDER BYcon la configuraciónoptimize_redundant_functions_in_order_byactivada. #17471 (Anton Popov). - Se corrigió la comparación de
ColumnConst, que provocaba un cierre inesperado. Con esto se corrigió #17088 . #17135 (Amos Bird). - Se corrigió un error por el que las consultas
ON CLUSTERpodían quedar bloqueadas indefinidamente en las tablas ReplicatedMergeTree sin líder. #17089 (alesapin). - Evita errores de red innecesarios en consultas remotas que pueden cancelarse durante la ejecución, como las consultas con
LIMIT. #17006 (Azat Khuzhin). - Volver a resolver la IP de
format_avro_schema_registry_urlen caso de error. #16985 (filimonov). - Se corrigió un posible bloqueo del servidor después de
ALTER TABLE ... MODIFY COLUMN ... NewTypecuandoSELECTtiene una expresiónWHEREsobre la columna que se está modificando y la operaciónALTERaún no ha finalizado. #16968 (Amos Bird). - El script de instalación siempre debe crear subdirectorios en los directorios de configuración. Esto solo es relevante para la compilación de Docker con una configuración personalizada. #16936 (filimonov).
- Se corrigió un posible error
Illegal type of argumenten consultas conORDER BY. Soluciona #16580. #16928 (Nikolai Kochetov). - Abortar la carga multiparte si no se escribió ningún dato en WriteBufferFromS3. #16840 (Pavel Kovalenko).
- Se corrigió un bloqueo al usar
anysin argumentos. Esto corrige #16803. #16826 (Amos Bird). - Se corrigió el operador
INpara varias columnas y tuplas con la configuracióntransform_null_inhabilitada. Corrige #15310. #16722 (Anton Popov). - Se corrigió el comportamiento incoherente de
optimize_read_in_order/optimize_aggregation_in_ordercon max_threads > 0 y una expresión en ORDER BY. #16637 (Azat Khuzhin). - Se corrigió el problema que provocaba que la optimización de consultas produjera un resultado incorrecto si la consulta contenía
ARRAY JOIN. #17887 (sundyli). - La consulta finaliza más rápido en caso de excepción. Se cancela la ejecución en las réplicas remotas si se produce una excepción. #15578 (Azat Khuzhin).
Versión de ClickHouse v20.8.6.6-lts, 2020-11-13
Corrección de errores
- Corrige cierres silenciosos poco frecuentes cuando el perfilador de consultas está activado y ClickHouse está instalado en un sistema operativo con una versión de glibc que tiene tablas de desenrollado asíncrono (supuestamente) defectuosas para algunas funciones. Esto corrige #15301. Esto corrige #13098. #16846 (alexey-milovidov).
- Ahora, al procesar AVRO de entrada, se elimina LowCardinality del tipo. Corrige #16188. #16521 (Mike).
- Corrige el rápido crecimiento de los metadatos al usar MySQL Master -> MySQL Slave -> ClickHouse MaterializeMySQL Engine, con
slave_parallel_workeractivado en MySQL Slave, reduciendo correctamente los conjuntos GTID. Esto corrige #15951. #16504 (TCeason). - Corrige DROP TABLE para Distributed (condición de carrera con INSERT). #16409 (Azat Khuzhin).
- Corrige el procesamiento de entradas muy grandes en la cola de replicación. Pueden aparecer entradas muy grandes en consultas ALTER si la estructura de la tabla es extremadamente grande (cerca de 1 MB). Esto corrige #16307. #16332 (alexey-milovidov).
- Se corrigió el comportamiento inconsistente por el que una parte de los datos devueltos podía descartarse porque no se había creado el conjunto para su filtrado. #16308 (Nikita Mikhaylov).
- Corrige un error con MySQL database. Cuando el MySQL server usado como database engine no está disponible, algunas consultas generan Exception porque intentan obtener tablas de un server deshabilitado, aunque no es necesario. Por ejemplo, la consulta
SELECT ... FROM system.partsdebería funcionar solo con tablas MergeTree y no acceder a MySQL database en absoluto. #16032 (Kruglov Pavel).
Versión de ClickHouse v20.8.5.45-lts, 2020-10-29
Corrección de errores
- Se corrige la doble liberación en caso de excepción en la función
dictGet. Podía producirse si el diccionario se había cargado con error. #16429 (Nikolai Kochetov). - Se corrigen los modificadores totals/rollup/cube de group by y las funciones min/max sobre las claves de group by. Corrige #16393. #16397 (Anton Popov).
- Se corrige el INSERT asíncrono de Distributed con prefer_localhost_replica=0 e internal_replication. #16358 (Azat Khuzhin).
- Corrige una posible fuga de memoria al ejecutar
GROUP BYcon claves de cadena, causada por un error en la implementación deTwoLevelStringHashTable. #16264 (Amos Bird). - Corrige el caso en que la memoria puede asignarse en exceso sin respetar el límite. Esto cierra #14560. #16206 (alexey-milovidov).
- Se corrige el bloqueo de la consulta
ALTER MODIFY ... ORDER BYenReplicatedVersionedCollapsingMergeTree. Esto corrige #15980. #16011 (alesapin). - Corrige el analizador de nombres de colación y de conjuntos de caracteres, y añade compatibilidad con
length = 0para el tipo String. #16008 (Winter Zhang). - Se permite usar el layout direct para diccionarios con claves complejas. #16007 (Anton Popov).
- Evita que la réplica quede bloqueada durante 5-10 min cuando se produce un error de replicación tras un período de inactividad. #15987 (filimonov).
- Corrige errores de segmentación poco frecuentes al insertar en MaterializedView o seleccionar de ella mientras se elimina de forma concurrente la tabla de destino (para el motor de base de datos Atomic). #15984 (tavplubix).
- Se corrige la ambigüedad en el análisis sintáctico de los perfiles de configuración:
CREATE USER ... SETTINGS profile readonlyahora se considera el uso de un perfil llamadoreadonly, y no de una configuración llamadaprofilecon la restricción de solo lectura. Esto corrige #15628. #15982 (Vitaly Baranov). - Se corrigió un cierre inesperado cuando fallaba la creación de la base de datos. #15954 (Winter Zhang).
- Se corrigió el fallo de
DROP TABLE IF EXISTScon el errorTable ... does not existcuando la tabla se renombra de forma concurrente (para el engine de base de datos Atomic). Se corrigió un interbloqueo poco frecuente al ejecutar de forma concurrente algunas consultas DDL con varias tablas (comoDROP DATABASEyRENAME TABLE) Se corrigió el fallo deDROP/DETACH DATABASEconTable ... does not existal ejecutar de forma concurrenteDROP/DETACH TABLE. #15934 (tavplubix). - Corrige el resultado vacío incorrecto de una consulta sobre una tabla
Distributedsi la consulta tieneWHERE,PREWHEREyGLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov). - Se corrigen posibles interbloqueos en RBAC. #15875 (Vitaly Baranov).
- Se corrigió la excepción
Block structure mismatchen consultasSELECT ... ORDER BY DESCejecutadas después de la consultaALTER MODIFY COLUMN. Corrige #15800. #15852 (alesapin). - Se corrigen algunos casos de consultas en los que solo se seleccionan columnas virtuales. Anteriormente, podía lanzarse la excepción
Not found column _nothing in block. Corrige #12298. #15756 (Anton Popov). - Se corrige el error
Cannot find column, que puede producirse al insertar enMATERIALIZED VIEWen caso de que la consulta paraMVcontengaARRAY JOIN. #15717 (Nikolai Kochetov). - Se corrigió el valor predeterminado demasiado bajo de la configuración
max_replicated_logs_to_keep, que podía hacer que las réplicas se perdieran con demasiada frecuencia. Se mejoró el proceso de recuperación de réplicas perdidas eligiendo la réplica más actualizada para clonar. Además, las partes antiguas de la réplica perdida no se eliminan, sino que se desacoplan. #15701 (tavplubix). - Se corrige el error
Cannot add simple transform to empty Pipe, que se producía al leer desde la tablaBuffer, cuya estructura es distinta de la de la tabla de destino. Esto podía ocurrir si la tabla de destino devolvía un resultado vacío para la consulta. Corrige #15529. #15662 (Nikolai Kochetov). - Se corrigió un error con los globs en la función de tabla S3; la región extraída de la URL no se aplicaba a la configuración del cliente S3. #15646 (Vladimir Chebotarev).
- Disminuye la métrica
ReadonlyReplicaal desacoplar tablas de solo lectura. Esto corrige #15598. #15592 (sundyli). - Lanzar un error cuando se pase un único parámetro a ReplicatedMergeTree en lugar de ignorarlo. #15516 (nvartolomei).
Mejora
- Ahora se permite ejecutar consultas
ALTER ... ON CLUSTERindependientemente del parámetro<internal_replication>en la configuración del clúster. #16075 (alesapin). - Se expanden las macros
{database},{table}y{uuid}en los argumentos deReplicatedMergeTreeal crear la tabla. #16159 (tavplubix).
versión de ClickHouse v20.8.4.11-lts, 2020-10-09
Corrección de errores
- Corrige el orden de destrucción de los recursos en el paso
ReadFromStoragedel plan de consulta. En casos poco frecuentes, podría provocar cierres inesperados. Posiblemente relacionado con #15610. #15645 (Nikolai Kochetov). - Se corrigió el error
Element ... is not a constant expressional usar el resultado de la funciónJSON*enVALUES,LIMITo en el lado derecho del operadorIN. #15589 (tavplubix). - Evita que aparezca el mensaje de error
Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call. Esto corrige #15541. #15557 (alexey-milovidov). - Se redujo significativamente el consumo de memoria en AggregatingInOrderTransform/optimize_aggregation_in_order. #15543 (Azat Khuzhin).
- La mutación podía quedarse bloqueada esperando alguna parte inexistente después de
MOVEoREPLACE PARTITIONo, en casos excepcionales, después deDETACHoDROP PARTITION. Se ha corregido. #15537 (tavplubix). - Se corrigió un error por el que el operador
ILIKEdejaba de ignorar las diferencias entre mayúsculas y minúsculas si se había ejecutadoLIKEcon el mismo patrón. #15536 (alesapin). - Corrige errores de
Missing columnsal seleccionar columnas ausentes en los datos, pero que dependen de otras columnas también ausentes en los datos. Corrige #15530. #15532 (alesapin). - Se corrige un error en la suscripción a eventos de DDLWorker que, en raras ocasiones, puede hacer que las consultas queden colgadas en
ON CLUSTER. Introducido en #13450. #15477 (alesapin). - Informar correctamente del error cuando el segundo argumento de la función de agregación
boundingRatiotiene un tipo incorrecto. #15407 (detailyang). - Se corrigió una condición de carrera al cambiar el nombre de una tabla MergeTree y durante la limpieza en segundo plano. #15304 (alesapin).
- Se corrigió una rara condición de carrera al iniciar el servidor cuando system.logs está habilitado. #15300 (alesapin).
- Se corrigió el informe de MSan en QueryLog. Se podía usar memoria no inicializada para el campo
memory_usage. #15258 (alexey-milovidov). - Corrige el cierre inesperado de la instancia al usar joinGet con tipos LowCardinality. Esto corrige #15214. #15220 (Amos Bird).
- Se corrige un error en el motor de tabla
Bufferque no permitía insertar datos con una estructura nueva enBufferdespués de una consultaALTER. Corrige #15117. #15192 (alesapin). - Ajuste del tamaño del campo
decimalsen el paquete de definición de columnas de MySQL. #15152 (maqroll). - Ya usamos la comparación con relleno entre String y FixedString (https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/FunctionsComparison.h#L333). Este PR aplica la misma lógica a la comparación de field, lo que corrige el uso de FixedString como claves primarias. Esto corrige #14908. #15033 (Amos Bird).
- Si se llamaba a la función
barcon argumentos especialmente manipulados, era posible un desbordamiento de búfer. Esto cierra #13926. #15028 (alexey-milovidov). - Se corrigió el error
Cannot rename ... errno: 22, strerror: Invalid argumentdurante la ejecución de consultas DDL en la base de datos Atomic al ejecutar clickhouse-server en Docker sobre Mac OS. #15024 (tavplubix). - Ahora, los parámetros de configuración
number_of_free_entries_in_pool_to_execute_mutationynumber_of_free_entries_in_pool_to_lower_max_size_of_mergepueden ser iguales abackground_pool_size. #14975 (alesapin). - Corrección para que el push down de predicados funcione cuando la subconsulta contiene la función finalizeAggregation. Corrige #14847. #14937 (filimonov).
- Se publican las frecuencias de CPU por núcleo lógico en
system.asynchronous_metrics. Esto corrige #14923. #14924 (Alexander Kuzmenkov). - Se solucionó el error
.metadata.tmp File existsal usar el motor de base de datosMaterializeMySQL. #14898 (Winter Zhang). - Soluciona un problema por el que el servidor podía quedarse bloqueado durante el arranque al comunicarse con ZooKeeper, si era necesario obtener los archivos de configuración desde ZK (usando la opción de inclusión
from_zk). Esto corrige #14814. #14843 (Alexander Kuzmenkov). - Corrige la detección errónea de monotonía en la conversión
Int -> Intreducida de tipos con signo. Esto podría provocar un resultado de consulta incorrecto. Este error queda de manifiesto en #14513. #14783 (Amos Bird). - Se corrigió el orden incorrecto al ordenar la columna
Nullable. Esto corrige #14344. #14495 (Nikita Mikhaylov).
Mejora
- Ahora es posible cambiar el tipo de la columna de versión de
VersionedCollapsingMergeTreemediante la consultaALTER. #15442 (alesapin).
Versión de ClickHouse v20.8.3.18-stable, 2020-09-18
Corrección de errores
- Soluciona el problema por el que algunas invocaciones de la función
extractAllGroupspueden provocar el error “Memory limit exceeded”. Esto corrige #13383. #14889 (alexey-milovidov). - Soluciona un SIGSEGV al intentar hacer
INSERTen StorageFile(fd). #14887 (Azat Khuzhin). - Soluciona un error poco frecuente en consultas
SELECTcuando la columna consultada tiene una expresiónDEFAULTque depende de otra columna que también tieneDEFAULT, no está presente en la consulta y no existe en disco. Corrige parcialmente #14531. #14845 (alesapin). - Se corrigió la ausencia del nombre predeterminado de la base de datos en los metadatos de la vista materializada al ejecutar
ALTER ... MODIFY QUERY. #14664 (tavplubix). - Soluciona un error por el que una mutation
ALTER UPDATEcon una columna Nullable en la expresión de asignación y un valor constante (comoUPDATE x = 42) producía un valor incorrecto en la columna o un segfault. Corrige #13634, #14045. #14646 (alesapin). - Soluciona un resultado incorrecto en la multiplicación de Decimal causado por una escala decimal incorrecta en la columna de resultado. #14603 (Artem Zuikov).
- Se añadió la comprobación, ya que ni
lc->isNullable()nils->getDictionaryPtr()->isNullable()devolvían el resultado correcto. #14591 (myrrc). - Limpia el directorio de datos tras excepciones de ZooKeeper durante CreateQuery para el engine StorageReplicatedMergeTree. #14563 (Bharat Nallan).
- Soluciona segfaults poco frecuentes en funciones con el combinator -Resample, que podían aparecer como resultado de un overflow con parámetros muy grandes. #14562 (Anton Popov).
Mejoras
- Acelera el proceso de apagado del servidor si hay solicitudes de S3 en curso. #14858 (Pavel Kovalenko).
- Permite usar una configuración de almacenamiento multivolumen en Distributed. #14839 (Pavel Kovalenko).
- Acelera el proceso de apagado del servidor si hay solicitudes de S3 en curso. #14496 (Pavel Kovalenko).
- Añade soporte para códecs personalizados en las partes compactas. #12183 (Anton Popov).
versión de ClickHouse v20.8.2.3-stable, 2020-09-08
Cambio incompatible con versiones anteriores
- Ahora, la consulta
OPTIMIZE FINALno recalcula el TTL de las partes que se añadieron antes de que se creara el TTL. UseALTER TABLE ... MATERIALIZE TTLuna vez para calcularlo; después de eso,OPTIMIZE FINALevaluará el TTL correctamente. Este comportamiento nunca funcionó para las tablas replicadas. #14220 (alesapin). - Se amplía la configuración
parallel_distributed_insert_selectcon una opción para ejecutarINSERTen la tabla local. La configuración cambia de tipo, deBoolaUInt64, por lo que los valoresfalseytruedejan de ser compatibles. Si tiene estos valores en la configuración del servidor, el servidor no se iniciará. Sustitúyalos por0y1, respectivamente. #14060 (Azat Khuzhin). - Se elimina la compatibilidad con el formato de entrada/salida
ODBCDriver. Era un formato obsoleto que en su día se usó para la comunicación con el driver ODBC de ClickHouse y que hace tiempo fue reemplazado por el formatoODBCDriver2. Resuelve #13629. #13847 (hexiaoting). - Al actualizar desde versiones anteriores a la 20.5, si se realiza una actualización gradual y el clúster contiene tanto versiones 20.5 o posteriores como versiones anteriores a la 20.5, reiniciar nodos de ClickHouse con versiones antiguas después de que una versión antigua se haya iniciado en presencia de versiones más recientes puede provocar errores
Part ... intersects previous part. Para evitar este error, primero instale los paquetes más recientes de clickhouse-server en todos los nodos del clúster y después reinícielos (de este modo, cuando se reinicie clickhouse-server, se iniciará con la nueva versión).
Nueva funcionalidad
- Se añade la posibilidad de especificar el códec de compresión
Defaultpara las columnas que corresponden a configuraciones especificadas enconfig.xml. Implementa: #9074. #14049 (alesapin). - Se admite autenticación Kerberos en Kafka mediante las bibliotecas
krb5ycyrus-sasl. #12771 (Ilya Golshtein). - Se añade la función
normalizeQuery, que reemplaza literales, secuencias de literales y alias complejos por marcadores de posición. Se añade la funciónnormalizedQueryHash, que devuelve valores hash de 64 bits idénticos para consultas similares. Esto ayuda a analizar el log de consultas. Esto cierra #11271. #13816 (alexey-milovidov). - Se añade la tabla
time_zones. #13880 (Bharat Nallan). - Se añade la función
defaultValueOfTypeName, que devuelve el valor predeterminado de un tipo dado. #13877 (hcz). - Se añade la función
countDigits(x), que cuenta el número de dígitos decimales de una columna entera o decimal. Se añade la funciónisDecimalOverflow(d, [p]), que comprueba si el valor de una columna Decimal está fuera de su precisión (o de la especificada). #14151 (Artem Zuikov). - Se añaden implementaciones de
quantileExactLowyquantileExactHighcon sus alias correspondientes paramedianExactLowymedianExactHigh. #13818 (Bharat Nallan). - Se añadió la función
date_trunc, que trunca un valor de fecha/hora a una parte de fecha/hora especificada. #13888 (Vladimir Golovchenko). - Se añade una nueva sección opcional
<user_directories>a la configuración principal. #13425 (Vitaly Baranov). - Se añade la instrucción
ALTER SAMPLE BY, que permite cambiar la cláusula SAMPLE de una tabla. #13280 (Amos Bird). - La función
positionahora admite el argumento opcionalstart_pos. #13237 (vdimir).
Corrección de errores
- Corrige la sobrescritura visible de datos causada por la barra de progreso en el cliente en modo interactivo. Esto corrige #12562, #13369, #13584 y #12964. #13691 (alexey-milovidov).
- Se corrigió el orden incorrecto de una columna
LowCardinalityal ordenar por varias columnas. Esto corrige #13958. #14223 (Nikita Mikhaylov). - Comprobación de desbordamiento del tamaño del array en la función de agregado
topK. Sin esta comprobación, el usuario puede enviar una consulta con parámetros cuidadosamente elaborados que provoquen el fallo del servidor. Esto cierra #14452. #14467 (alexey-milovidov). - Se corrigió un error que puede dar lugar a una asignación incorrecta de fusiones si la tabla tiene particiones con una única parte. #14444 (alesapin).
- Detener la ejecución de la consulta si se produce una excepción en el propio
PipelineExecutor. Esto podría evitar, en casos excepcionales, que la consulta se quede bloqueada. Continuación de #14334. #14402 #14334 (Nikolai Kochetov). - Se corrige un fallo en la consulta
ALTERde una tabla creadaAS table_function. Corrige #14212. #14326 (alesapin). - Se corrige una excepción al ejecutar la consulta ALTER LIVE VIEW con el comando REFRESH. Live view es una función experimental. #14320 (Bharat Nallan).
- Se corrige el tiempo de vida de QueryPlan (para EXPLAIN PIPELINE graph=1) para consultas con intérprete anidado. #14315 (Azat Khuzhin).
- Corrige un fallo de segmentación en
clickhouse-odbc-bridgeal obtener el esquema desde algunas fuentes externas. Este PR corrige #13861. #14267 (Vitaly Baranov). - Se corrigió un cierre inesperado en la búsqueda de inclusión de marcas introducido en #12277. #14225 (Amos Bird).
- Se corrige la creación de tablas con tuplas nombradas. Esto soluciona #13027. #14143 (alexey-milovidov).
- Se corrige el formateo de los valores decimales negativos mínimos. Esto corrige #14111. #14119 (Alexander Kuzmenkov).
- Corregida la métrica
DistributedFilesToInsert(quedaba en cero cuando no debía). #14095 (Azat Khuzhin). - Se corrigió
pointInPolygonal usar un array 2d constante como polígono. #14079 (Alexey Ilyukhov). - Se corrigió el punto de montaje erróneo en la información adicional de
Poco::Exception: no space left on device. #14050 (tavplubix). - Se corrige la instrucción GRANT ALL cuando se ejecuta en un ámbito no global. #13987 (Vitaly Baranov).
- Se corrigió el analizador sintáctico para que rechace create table como función de tabla con motor. #13940 (hcz).
- Corrige resultados erróneos en consultas
SELECTcon la palabra claveDISTINCTy en subconsultas con UNION ALL cuando la configuraciónoptimize_duplicate_order_by_and_distinctestá habilitada. #13925 (Artem Zuikov). - Se corrigió un posible interbloqueo al renombrar la tabla
Distributed. #13922 (tavplubix). - Corrige la ordenación incorrecta de las columnas
FixedStringal ordenar por varias columnas. Corrige #13182. #13887 (Nikolai Kochetov). - Se corrige el resultado potencialmente impreciso de la fusión de
topK/topKWeighted(con parámetros distintos de los predeterminados). #13817 (Azat Khuzhin). - Se corrige un error en la lectura de una tabla MergeTree con INDEX de tipo SET al comparar con NULL. Esto soluciona #13686. #13793 (Amos Bird).
- Se corrigió la captura de
arrayJoinen lambda (LOGICAL_ERROR). #13792 (Azat Khuzhin). - Se añadió la comprobación de desbordamiento del parámetro step en la función
range. #13790 (Azat Khuzhin). - Se corrigió el error
Directory not emptyal ejecutar de forma concurrenteDROP DATABASEyCREATE TABLE. #13756 (alexey-milovidov). - Se añadió una comprobación de rango para la función
h3KRing. Esto corrige #13633. #13752 (alexey-milovidov). - Se corrige una condición de carrera entre DETACH y las fusiones en segundo plano. Las partes pueden volver a aparecer tras un DETACH. Es la continuación de #8602, que no solucionó el problema, pero introdujo una prueba que empezó a fallar en casos muy poco frecuentes, lo que demostró el problema. #13746 (alexey-milovidov).
- Se corrige el registro en Settings.Names/Values cuando log_queries_min_type > QUERY_START. #13737 (Azat Khuzhin).
- Corrige el código de estado de la respuesta del endpoint
/replicas_statuscuando verbose=1. #13722 (javi santana). - Se corrigió el mensaje incorrecto en
clickhouse-server.inital comprobar el usuario y el grupo. #13711 (ylchou). - No optimizar any(arrayJoin()) -> arrayJoin() con la configuración
optimize_move_functions_out_of_any. #13681 (Azat Khuzhin). - Se corrige un bloqueo en JOIN con StorageMerge y
set enable_optimize_predicate_expression=1. #13679 (Artem Zuikov). - Se corrige una errata en el mensaje de error sobre la configuración
The value of 'number_of_free_entries_in_pool_to_lower_max_size_of_merge' setting. #13678 (alexey-milovidov). - Las consultas concurrentes
ALTER ... REPLACE/MOVE PARTITION ...podían provocar un interbloqueo. Ya se ha corregido. #13626 (tavplubix). - Se corrigió el comportamiento por el que, en ocasiones, el diccionario de caché devolvía el valor predeterminado en lugar del valor existente en el origen. #13624 (Nikita Mikhaylov).
- Se corrige la corrupción de los índices secundarios en las partes compactas. Las partes compactas son una característica experimental. #13538 (Anton Popov).
- Corrige timeouts prematuros de
ON CLUSTERen consultas que deben ejecutarse en una sola réplica. Corrige #6704, #7228, #13361, #11884. #13450 (alesapin). - Corrige el código incorrecto en la función
netloc. Esto corrige #13335. #13446 (alexey-milovidov). - Se corrige una posible condición de carrera en
StorageMemory. #13416 (Nikolai Kochetov). - Se corrigen los encabezados faltantes o de más en los formatos
TSV/CSVWithNamesdel protocolo HTTP. Esto corrige #12504. #13343 (Azat Khuzhin). - Se corrigió el análisis de las políticas de fila de users.xml cuando los nombres de las bases de datos o de las tablas contienen puntos. Esto corrige #5779, #12527. #13199 (Vitaly Baranov).
- Se corrigió el acceso al diccionario
redisdespués de que la conexión se interrumpiera una vez. Esto puede ocurrir con las disposiciones de diccionariocacheydirect. #13082 (Anton Popov). - Se eliminó la comprobación incorrecta de permisos de acceso al usar ClickHouseDictionarySource para consultar tablas remotas. #12756 (sundyli).
- Distinguir adecuadamente las subconsultas en algunos casos para la eliminación de subexpresiones comunes. #8333. #8367 (Amos Bird).
Mejora
- No se permite
CODECen columnas de tipoALIAS. Corrige #13911. #14263 (Bharat Nallan). - Al esperar a que se complete una actualización de diccionario, use el tiempo de espera especificado en la configuración
query_wait_timeout_millisecondsen lugar de un valor fijo. #14105 (Nikita Mikhaylov). - Añade la configuración
min_index_granularity_bytes, que protege contra la creación accidental de una tabla con una configuraciónindex_granularity_bytesdemasiado baja. #14139 (Bharat Nallan). - Ahora es posible obtener particiones de clústeres que usan un ZooKeeper distinto:
ALTER TABLE table_name FETCH PARTITION partition_expr FROM 'zk-name:/path-in-zookeeper'. Esto resulta útil para mover datos a clústeres nuevos. #14155 (Amos Bird). - Rendimiento ligeramente mejor de la tabla Memory cuando se construye a partir de una enorme cantidad de bloques muy pequeños (algo poco probable). Autor de la idea: Mark Papadakis. Cierra #14043. #14056 (alexey-milovidov).
- Las funciones de agregación condicionales (por ejemplo:
avgIf,sumIf,maxIf) deben devolverNULLcuando falten filas y usar argumentos Nullable. #13964 (Winter Zhang). - Se aumenta el límite del combinador -Resample a 1M. #13947 (Mikhail f. Shiryaev).
- Se corrigió un error en el formato AvroConfluent que hacía que el motor de tabla de Kafka dejara de procesar mensajes al recibir un mensaje malformado y anormalmente pequeño. #13941 (Gervasio Varela).
- Se corrige un error incorrecto para consultas largas. Era posible obtener un error de sintaxis distinto de
Max query size exceededpara una consulta correcta. #13928 (Nikolai Kochetov). - Mejor mensaje de error para el valor NULL del formato
TabSeparated. #13906 (jiang tao). - La función
arrayCompactcomparará los NaN bit a bit si el tipo de los elementos del array es Float32/Float64. En versiones anteriores, los NaN nunca eran iguales si el tipo de los elementos del array era Float32/Float64, y siempre eran iguales si el tipo era más complejo, como Nullable(Float64). Esto resuelve #13857. #13868 (alexey-milovidov). - Se corrige una condición de carrera de datos en la función
lgamma. Esta condición de carrera se detectó solo entsany, en realidad, no se produjo ningún efecto secundario. #13842 (Nikolai Kochetov). - Se evitan consultas demasiado lentas cuando los arrays se manipulan como campos. En su lugar, se lanza una excepción. #13753 (alexey-milovidov).
- Se añadió la autenticación
requirepassde Redis (para la fuente de diccionario de Redis). #13688 (Ivan Torgashov). - Se añadió una herramienta de volcado del Write-Ahead Log (WAL) de MergeTree. WAL es una funcionalidad experimental. #13640 (BohuTANG).
- En versiones anteriores, la función
lcmpodía provocar un fallo de aserción en una compilación de depuración si se llamaba con argumentos especialmente diseñados. Esto corrige #13368. #13510 (alexey-milovidov). - Se añade monotonicidad para las funciones
toDate/toDateTimeen más casos. La información de monotonicidad se utiliza para el análisis de índices (las consultas más complejas podrán usar índices). Ahora los argumentos de entrada se saturan de forma más natural, lo que proporciona una mejor monotonicidad. #13497 (Amos Bird). - Compatibilidad con identificadores compuestos para ajustes personalizados. Los ajustes personalizados son un punto de integración entre la base de código de ClickHouse y otras bases de código (sin aportar beneficios al propio ClickHouse) #13496 (Vitaly Baranov).
- Mueva partes de DiskLocal a DiskS3 en paralelo.
DiskS3es una funcionalidad experimental. #13459 (Pavel Kovalenko). - Se habilitan por defecto las partes con granularidad mixta. #13449 (alesapin).
- Comprobación adecuada del host remoto en las redirecciones de S3 (aspecto relacionado con la seguridad). #13404 (Vladimir Chebotarev).
- Se añaden
QueryTimeMicroseconds,SelectQueryTimeMicrosecondseInsertQueryTimeMicrosecondsa system.events. #13336 (ianton-ru). - Corrige una aserción de depuración cuando Decimal tiene un exponente negativo demasiado grande. Soluciona #13188. #13228 (alexey-milovidov).
- Se añadió una capa de caché para DiskS3 (caché en disco local para marcas y archivos de índice).
DiskS3es una característica experimental. #13076 (Pavel Kovalenko). - Se corrige readline para que ahora guarde el historial en un archivo. #13600 (Amos Bird).
- Crear la base de datos
systemcon el motorAtomicde forma predeterminada (como preparación para habilitar por defecto el motor de base de datosAtomicen todas partes). #13680 (tavplubix).
Mejora de rendimiento
- Optimiza ligeramente las consultas muy cortas con
LowCardinality. #14129 (Anton Popov). - Habilita
INSERTparalelos para los motores de tablaNull,Memory,DistributedyBuffercuandomax_insert_threadsestá configurado. #14120 (alexey-milovidov). - Falla de inmediato si se supera el límite
max_rows_to_readdurante el escaneo de partes. El objetivo de este cambio es omitir el escaneo de rangos para todas las partes seleccionadas si está claro quemax_rows_to_readya se ha superado. El cambio es bastante perceptible en consultas sobre un gran número de partes. #13677 (Roman Khavronenko). - Mejora ligeramente el rendimiento de la agregación con claves UInt8/UInt16. #13099 (alexey-milovidov).
- Optimiza las funciones
has(),indexOf()ycountEqual()paraArray(LowCardinality(T))y argumentos constantes del lado derecho. #12550 (myrrc). - Al realizar consultas
INSERT SELECTtriviales, establece automáticamentemax_threadsen 1 omax_insert_threads, ymax_block_sizeenmin_insert_block_size_rows. Relacionado con #5907. #12195 (flynn).
Funcionalidad experimental
- ClickHouse puede funcionar como réplica de MySQL; esto se implementa mediante el motor de database
MaterializeMySQL. Implementa #4006. #10851 (Winter Zhang). - Se añaden los types
Int128,Int256,UInt256y las funciones relacionadas. Se amplían los Decimal con Decimal256 (precision de hasta 76 dígitos). Los nuevos types están bajo el settingallow_experimental_bigint_types. Funciona de forma extremadamente lenta y deficiente. La implementación está incompleta. Por favor, no use esta funcionalidad. #13097 (Artem Zuikov).
Mejora de la compilación, las pruebas y el empaquetado
- Se añadió el script
clickhouse install, que resulta útil si solo tienes un único binario. #13528 (alexey-milovidov). - Se permite ejecutar el binario
clickhousesin configuración. #13515 (alexey-milovidov). - Se habilitó la comprobación de errores tipográficos en el código con
codespell. #13513 #13511 (alexey-milovidov). - Se habilita Shellcheck en CI como linter para las pruebas
.sh. Esto cierra #13168. #13530 #13529 (alexey-milovidov). - Se añade una opción de CMake para hacer que falle la configuración en lugar de realizar una reconfiguración automática, habilitada de forma predeterminada. #13687 (Konstantin).
- Se expone la versión de
tzdataintegrada mediante TZDATA_VERSION en system.build_options. #13648 (filimonov). - Se mejora la generación de la tabla system.time_zones durante la compilación. Cierra #14209. #14215 (filimonov).
- Compilar ClickHouse con la versión más reciente de
tzdatadel repositorio de paquetes. #13623 (alexey-milovidov). - Se añadió la posibilidad de escribir comentarios de estilo JS en skip_list.json. #14159 (alesapin).
- Asegúrese de que no se haya copiado ni pegado código GPL. #13514 (alexey-milovidov).
- Se cambiaron las imágenes de Docker de prueba para que usen la imagen base
test-base. #14167 (Ilya Yatsishin). - Se añadió lógica de reintento al iniciar el clúster de docker-compose; se aumentó COMPOSE_HTTP_TIMEOUT. #14112 (vzakaznikov).
- Se habilitó
system.text_logen el test de estrés para encontrar más fallos. #13855 (Nikita Mikhaylov). - Módulo LDAP de Testflows: se agregan los certificados que faltaban y dhparam.pem para openldap4. #13780 (vzakaznikov).
- ZooKeeper no puede funcionar de forma fiable en las pruebas unitarias de la infraestructura de CI. Usar pruebas unitarias para la interacción de ZooKeeper con un ZooKeeper real es mala idea desde el principio (no se supone que las pruebas unitarias deban verificar sistemas distribuidos complejos). Ya usamos pruebas de integración para este fin, y se ajustan mejor a este caso. #13745 (alexey-milovidov).
- Se añadió una imagen de Docker para la comprobación de estilo. También se añadió una comprobación de estilo para verificar que todos los archivos de Docker y Docker Compose estén ubicados en el directorio docker. #13724 (Ilya Yatsishin).
- Se corrige la compilación de Cassandra en Mac OS. #13708 (Ilya Yatsishin).
- Se corrige un error del enlazador en la compilación compartida. #13700 (Amos Bird).
- Actualización del conjunto de pruebas de autenticación de usuarios LDAP para verificar que funciona con RBAC. #13656 (vzakaznikov).
- Se eliminó
-DENABLE_CURL_CLIENTdecontrib/aws. #13628 (Vladimir Chebotarev). - Aumento de los tiempos de espera de las comprobaciones de estado para los nodos de ClickHouse y adición de compatibilidad para volcar los logs de docker-compose si se detectan contenedores con estado no saludable. #13612 (vzakaznikov).
- Se asegura de que #10977 sea inválido. #13539 (Amos Bird).
- Omitir las PR de robot-clickhouse. #13489 (Nikita Mikhaylov).
- Se movieron los Dockerfiles de las pruebas de integración al directorio
docker/test. Los archivos docker_compose están disponibles en el contenedor de Dockerrunner. Las imágenes de Docker se compilan en CI y no en las pruebas de integración. #13448 (Ilya Yatsishin).
Versión de ClickHouse 20.7
Versión de ClickHouse v20.7.2.30-stable, 2020-08-31
Cambio incompatible con versiones anteriores
- La función
modulo(operador%), cuando recibe al menos un número de punto flotante como argumento, calculará el resto de la división directamente sobre números de punto flotante sin convertir ambos argumentos en enteros. Esto hace que el comportamiento sea compatible con la mayoría de los SGBD. Esto también se aplica a los tipos de datos Date y DateTime. Se añadió el aliasmod. Esto cierra #7323. #12585 (alexey-milovidov). - Se depreca la representación especial de los valores cero de Date/DateTime como
0000-00-00y0000-00-00 00:00:00. #12442 (alexey-milovidov). - La función
groupArrayMoving*no funcionaba con consultas distribuidas. Su resultado se calculaba con un tipo de datos incorrecto (sin promoción al tipo más grande). La funcióngroupArrayMovingAvgdevolvía un número entero, lo que no era consistente con la funciónavg. Esto corrige #12568. #12622 (alexey-milovidov). - Se añade una comprobación de coherencia para la configuración de MergeTree. Si la configuración es incorrecta, el servidor se negará a iniciarse o a crear una tabla, y mostrará una explicación detallada al usuario. #13153 (alexey-milovidov).
- Protege frente a los casos en que el usuario puede establecer
background_pool_sizecon un valor inferior anumber_of_free_entries_in_pool_to_execute_mutationonumber_of_free_entries_in_pool_to_lower_max_size_of_merge. En estos casos, las sentencias ALTER no funcionarán o el tamaño máximo de merge quedará demasiado limitado. Se lanzará una excepción explicando qué hacer. Esto cierra #10897. #12728 (alexey-milovidov). - Al actualizar desde versiones anteriores a la 20.5, si se realiza una actualización gradual y el clúster contiene tanto versiones 20.5 o superiores como versiones anteriores a la 20.5, reiniciar nodos de ClickHouse con versiones antiguas —si esa versión antigua se inicia en presencia de versiones más nuevas— puede provocar errores
Part ... intersects previous part. Para evitar este error, primero instale paquetes más recientes declickhouse-serveren todos los nodos del clúster y luego realice los reinicios (de este modo, cuando se reinicieclickhouse-server, arrancará con la nueva versión).
Nueva funcionalidad
- Tipo de diccionario Polygon que proporciona búsquedas eficientes de “geocodificación inversa” para encontrar la región a partir de coordenadas en un Diccionario con muchos polígonos (mapa del mundo). Utiliza un algoritmo cuidadosamente optimizado con cuadrículas recursivas para mantener un bajo uso de CPU y memoria. #9278 (achulkov2).
- Se añadió compatibilidad con autenticación LDAP para usuarios preconfigurados (método “Simple Bind”). #11234 (Denis Glazachev).
- Se introduce la configuración
alter_partition_verbose_result, que muestra información sobre las partes afectadas para algunos tipos de consultasALTER TABLE ... PARTITION ...(actualmenteATTACHyFREEZE). Cierra #8076. #13017 (alesapin). - Se añade la función
bayesABpara pruebas A/B bayesianas. #12327 (achimbab). - Se añadió la tabla
system.crash_log, en la que se recopilan trazas de pila de errores fatales. Esta tabla debería estar vacía. #12316 (alexey-milovidov). - Se añadieron los encabezados HTTP
X-ClickHouse-DatabaseyX-ClickHouse-Format, que pueden usarse para establecer la base de datos predeterminada y el formato de salida. #12981 (hcz). - Se añade compatibilidad con las funciones
minMapymaxMapenSimpleAggregateFunction. #12662 (Ildus Kurbangaliev). - Se añade la configuración
allow_non_metadata_alters, que restringe la ejecución de consultasALTERque modifican datos en disco. Deshabilitada de forma predeterminada. Cierra #11547. #12635 (alesapin). - Se añade la función
formatRowpara convertir expresiones arbitrarias en una cadena mediante un formato dado. Es útil para manipular salidas SQL y resulta muy versátil en combinación con la funcióncolumns. #12574 (Amos Bird). - Se añade la función
FROM_UNIXTIMEpara compatibilidad con MySQL, relacionada con 12149. #12484 (flynn). - Se permiten tipos Nullable como claves en tablas MergeTree si la configuración de tabla
allow_nullable_keyestá habilitada. Cierra #5319. #12433 (Amos Bird). - Integración con COS. #12386 (fastio).
- Se añaden las funciones
mapAddymapSubtractpara sumar/restar valores asociados a claves. #11735 (Ildus Kurbangaliev).
Corrección de errores
- Corrige los
timeoutprematuros deON CLUSTERen consultas que deben ejecutarse en una sola réplica. Corrige #6704, #7228, #13361, #11884. #13450 (alesapin). - Se corrigió un fallo en la búsqueda de inclusión de marcas introducido en #12277. #14225 (Amos Bird).
- Corrige una condición de carrera en diccionarios externos con layout
cacheque puede provocar una caída del servidor. #12566 (alesapin). - Se corrige que la barra de progreso sobrescriba visiblemente los datos en el cliente en modo interactivo. Esto corrige #12562, #13369 y #13584, y también corrige #12964. #13691 (alexey-milovidov).
- Se corrigió el orden de clasificación incorrecto de las columnas
LowCardinalityal usar ORDER BY en varias columnas. Esto corrige #13958. #14223 (Nikita Mikhaylov). - Se eliminó el tiempo de espera codificado de forma fija, que sobrescribía incorrectamente la configuración
query_wait_timeout_millisecondspara el diccionario de caché. #14105 (Nikita Mikhaylov). - Se corrigió el punto de montaje erróneo en la información adicional de
Poco::Exception: no space left on device. #14050 (tavplubix). - Corrige la optimización incorrecta de consultas SELECT con la palabra clave
DISTINCTcuando las subconsultas también usanDISTINCT, en caso de que esté habilitada la configuraciónoptimize_duplicate_order_by_and_distinct. #13925 (Artem Zuikov). - Se corrigió un posible bloqueo mutuo al renombrar la tabla
Distributed. #13922 (tavplubix). - Se corrige la ordenación incorrecta de las columnas
FixedStringcuando se utiliza ORDER BY con varias columnas. Soluciona #13182. #13887 (Nikolai Kochetov). - Corrige la posible menor precisión de las agregaciones
topK/topKWeighted(con parámetros no predeterminados). #13817 (Azat Khuzhin). - Se corrige un fallo al leer desde una tabla MergeTree con INDEX de tipo SET cuando se compara con NULL. Esto corrige #13686. #13793 (Amos Bird).
- Se corrigió el desbordamiento en el parámetro step de la función
range(). #13790 (Azat Khuzhin). - Se corrigió el error
Directory not emptyal ejecutar simultáneamenteDROP DATABASEyCREATE TABLE. #13756 (alexey-milovidov). - Se añade una comprobación de rango para la función
h3KRing. Esto corrige #13633. #13752 (alexey-milovidov). - Se corrige la condición de carrera entre DETACH y las fusiones en segundo plano. Las partes pueden reaparecer después de DETACH. Esto continúa #8602, que no solucionó el problema, pero introdujo una prueba que empezó a fallar en casos muy poco frecuentes, lo que demostró el problema. #13746 (alexey-milovidov).
- Corregido el registro de Settings.Names/Values cuando
log_queries_min_typees mayor queQUERY_START. #13737 (Azat Khuzhin). - Corrige el mensaje erróneo en
clickhouse-server.inital comprobar el usuario y el grupo. #13711 (ylchou). - No optimice
any(arrayJoin())comoarrayJoin()conoptimize_move_functions_out_of_any. #13681 (Azat Khuzhin). - Se corrigió un posible interbloqueo en las consultas concurrentes
ALTER ... REPLACE/MOVE PARTITION .... #13626 (tavplubix). - Se corrigió un comportamiento por el que, en ocasiones, el diccionario de caché devolvía el valor predeterminado en lugar del valor presente en el origen. #13624 (Nikita Mikhaylov).
- Corrige la corrupción de los índices secundarios en las partes compactas (las partes compactas son una función experimental). #13538 (Anton Popov).
- Se corrige el código incorrecto de la función
netloc. Esto corrige #13335. #13446 (alexey-milovidov). - Corrige un error en la función
parseDateTimeBestEffortal pasar un timestamp Unix como argumento. Esto corrige #13362. #13441 (alexey-milovidov). - Se corrige el tipo de retorno no válido en la comparación de tuplas con elementos
NULL. Corrige #12461. #13420 (Nikolai Kochetov). - Se corrige una optimización incorrecta que provocaba el error
aggregate function any(x) is found inside another aggregate function in queryconSET optimize_move_functions_out_of_any = 1y alias dentro deany(). #13419 (Artem Zuikov). - Se corrige una posible condición de carrera en
StorageMemory. #13416 (Nikolai Kochetov). - Se corrige la salida vacía de los formatos
ArrowyParqueten caso de que la consulta devuelva cero filas, ya que una salida vacía no es válida para estos formatos. #13399 (hcz). - Se corrigen las consultas SELECT con columnas constantes y con un prefijo de la clave primaria en la cláusula
ORDER BY. #13396 (Anton Popov). - Corrige
PrettyCompactMonoBlockpara clickhouse-local. Corrige extremes/totals conPrettyCompactMonoBlock. Soluciona #7746. #13394 (Azat Khuzhin). - Se corrigió un interbloqueo en system.text_log. #12452 (alexey-milovidov). Esto forma parte de #12339. Esto corrige #12325. #13386 (Nikita Mikhaylov).
- Se corrigió
File(TSVWithNames*)(el encabezado se escribía varias veces), se corrigióclickhouse-local --format CSVWithNames*(no incluye encabezado, quedó roto tras #12197) y se corrigióclickhouse-local --format CSVWithNames*con cero filas (no incluye encabezado). #13343 (Azat Khuzhin). - Se corrige un fallo de segmentación cuando la función
groupArrayMovingSumdeserializa un estado vacío. Corrige #13339. #13341 (alesapin). - Lanza un error en la función
arrayJoin()en la secciónJOIN ON. #13330 (Artem Zuikov). - Se corrige un bloqueo en
LEFT ASOF JOINconjoin_use_nulls=1. #13291 (Artem Zuikov). - Se corrigió un posible error
Totals having transform was already added to pipelineen caso de una consulta desde una réplica retrasada. #13290 (Nikolai Kochetov). - El servidor puede bloquearse si el usuario pasa argumentos especialmente diseñados a la función
h3ToChildren. Esto corrige #13275. #13277 (alexey-milovidov). - Se corrigen un posible bajo rendimiento y resultados ligeramente incorrectos en
uniqExact,topK,sumDistincty funciones de agregación similares llamadas sobre tipos Float con valoresNaN. Esto también provocaba una aserción en la compilación de depuración. Esto corrige #12491. #13254 (alexey-milovidov). - Se corrige una aserción en KeyCondition cuando la clave primaria contiene una expresión con una función monótona y la consulta contiene una comparación con una constante de un tipo distinto. Esto corrige #12465. #13251 (alexey-milovidov).
- Devuelve el número proporcionado para los números con el MSB activado en la función
roundUpToPowerOfTwoOrZero(). Esto evita posibles errores en caso de desbordamiento del tamaño de los arrays. #13234 (Azat Khuzhin). - Corrige la función if con un constexpr Nullable como cond que no es un NULL literal. Corrige #12463. #13226 (alexey-milovidov).
- Se corrige la aserción en la función
arrayElementcuando los elementos del array son Nullable y el subíndice del array también es Nullable. Esto corrige #12172. #13224 (alexey-milovidov). - Se corrigen las funciones de conversión de DateTime64 con argumento constante. #13205 (Azat Khuzhin).
- Se corrige el análisis de las políticas de fila en users.xml cuando los nombres de las bases de datos o de las tablas contienen puntos. Esto corrige #5779, #12527. #13199 (Vitaly Baranov).
- Se corrigió el acceso al diccionario
redisdespués de que se perdiera la conexión una vez. Puede ocurrir con las disposiciones de diccionariocacheydirect. #13082 (Anton Popov). - Corrige un análisis incorrecto de índices con funciones. Podía hacer que se omitieran algunas partes de datos al leer tablas
MergeTree. Corrige #13060. Corrige #12406. #13081 (Anton Popov). - Corrige el error
Cannot convert column because it is constant but values of constants are different in source and resulten consultas remotas que usan funciones que son deterministas dentro de una consulta, pero no entre consultas, comonow(),now64(),randConstant(). Corrige #11327. #13075 (Nikolai Kochetov). - Corrige un fallo que podía producirse en consultas con
ORDER BYpor tupla y unLIMITpequeño. Corrige #12623. #13009 (Nikolai Kochetov). - Se corrige el error
Block structure mismatchen consultas conUNIONyJOIN. Corrige #12602. #12989 (Nikolai Kochetov). - Se corrigió la lógica de
merge_with_ttl_timeout, que no funcionaba bien cuando la expiración afectaba a más de una partición en un mismo intervalo de tiempo. (Autor: @excitoon). #12982 (Alexander Kazakov). - Soluciona la duplicación de columnas en un diccionario hash de rango creado a partir de una consulta DDL. Esto corrige #10605. #12857 (alesapin).
- Se corrige la limitación innecesaria del número de hilos para las consultas SELECT desde la réplica local. #12840 (Nikolai Kochetov).
- Se corrige un error poco frecuente cuando las consultas
ALTER DELETEyALTER MODIFY COLUMNse ejecutan simultáneamente como una única mutación. Este error provoca un número incorrecto de filas encount.txty, como consecuencia, datos incorrectos en la parte. Además, se corrige un pequeño error cuandoALTER RENAME COLUMNyALTER ADD COLUMNse ejecutan simultáneamente. #12760 (alesapin). - Se usaban credenciales incorrectas al utilizar la fuente de diccionario
clickhousepara consultar tablas remotas. #12756 (sundyli). - Se corrige
CAST(Nullable(String), Enum()). #12745 (Azat Khuzhin). - Se mejora el rendimiento con tuplas grandes, que se interpretan como funciones en la cláusula
IN. En el caso de que el usuario escribaWHERE x IN tuple(1, 2, ...)en lugar deWHERE x IN (1, 2, ...)por alguna extraña razón. #12700 (Anton Popov). - Corregido el seguimiento de memoria de input_format_parallel_parsing (al asociar el hilo al grupo). #12672 (Azat Khuzhin).
- Se corrige una optimización incorrecta:
optimize_move_functions_out_of_any=1, en el caso deany(func(<lambda>)). #12664 (Artem Zuikov). - Se corrigió #10572: corrección del índice bloom filter con una expresión constante. #12659 (Winter Zhang).
- Se corrigió SIGSEGV en StorageKafka cuando el broker no está disponible (y no solo en ese caso). #12658 (Azat Khuzhin).
- Se añadió compatibilidad con la función
ifcon argumentosArray(UUID). Esto corrige #11066. #12648 (alexey-milovidov). - CREATE USER IF NOT EXISTS ahora ya no lanza una excepción si el usuario existe. Esto corrige #12507. #12646 (Vitaly Baranov).
- La excepción
There is no supertype...puede lanzarse duranteALTER ... UPDATEen casos inesperados (p. ej., al restar de una columna UInt64). Esto corrige #7306. Esto corrige #4165. #12633 (alexey-milovidov). - Soluciona un posible error
Pipeline stucken consultas con ordenación externa. Corrige #12617. #12618 (Nikolai Kochetov). - Soluciona el error
Output of TreeExecutor is not sortedenOPTIMIZE DEDUPLICATE. Soluciona #11572. #12613 (Nikolai Kochetov). - Se corrige el problema por el que el alias del resultado de la función
anypuede perderse durante la optimización de consultas. #12593 (Anton Popov). - Eliminar los datos de las tablas Distributed (bloques de INSERTs asíncronos) al ejecutar DROP TABLE. #12556 (Azat Khuzhin).
- Ahora ClickHouse recalculará las sumas de comprobación de las partes cuando no esté presente el archivo
checksums.txt. No funcionaba desde #9827. #12545 (alesapin). - Corrige un error que hacía que las partes antiguas quedaran dañadas después de la consulta
ALTER DELETEcuandoenable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin). - Se corrige una condición de carrera en las tablas de live view que podía provocar la duplicación de datos. LIVE VIEW es una funcionalidad experimental. #12519 (vzakaznikov).
- Se corrige la compatibilidad con versiones anteriores en el formato binario de los valores de
AggregateFunction(avg, ...). Esto corrige #12342. #12486 (alexey-milovidov). - Se corrige un fallo en JOIN con un diccionario al hacer join sobre una expresión de la clave del diccionario:
t JOIN dict ON expr(dict.id) = t.id. Se deshabilita la optimización de join con diccionario en este caso. #12458 (Artem Zuikov). - Corrige el desbordamiento si se especifica un LIMIT u OFFSET muy grande. Esto corrige #10470. Esto corrige #11372. #12427 (alexey-milovidov).
- kafka: corrige un SIGSEGV si hay un mensaje con error en mitad del batch. #12302 (Azat Khuzhin).
Mejora
- Mantiene menos logs en ZooKeeper. Evita el crecimiento excesivo de los nodos de ZooKeeper en caso de réplicas fuera de línea cuando hay muchos servidores, tablas e inserciones. #13100 (alexey-milovidov).
- Ahora, si se produce un error durante ALTER o una mutación, las excepciones se reenvían al cliente. Cierra #11329. #12666 (alesapin).
- Añade
QueryTimeMicroseconds,SelectQueryTimeMicrosecondsyInsertQueryTimeMicrosecondsasystem.events, así como a system.metrics, processes, query_log, etc. #13028 (ianton-ru). - Se añadieron
SelectedRowsySelectedBytesasystem.events, así como a system.metrics, processes, query_log, etc. #12638 (ianton-ru). - Se añadió la información de
current_databaseasystem.query_log. #12652 (Amos Bird). - Se permite
TabSeparatedRawcomo formato de entrada. #12009 (hcz). - Ahora
joinGetadmite búsquedas por múltiples claves. #12418 (Amos Bird). - Permite que las funciones de agregación
*Mapfuncionen con Arrays con valores NULL. Corrige #13157. #13225 (alexey-milovidov). - Evita el desbordamiento al analizar valores
DateTimeque, de otro modo, darían lugar a una marca de tiempo Unix negativa en su zona horaria (por ejemplo,1970-01-01 00:00:00en Moscú). En su lugar, se saturan a cero. Esto corrige #3470. Esto corrige #4172. #12443 (alexey-milovidov). - AvroConfluent: Omitir registros tombstone de Kafka - Compatibilidad para omitir registros dañados #13203 (Andrew Onyshchuk).
- Se corrige el mensaje de error incorrecto para consultas largas. Era posible obtener un error de sintaxis distinto de
Max query size exceededpara una consulta correcta. #13928 (Nikolai Kochetov). - Se corrigió una condición de carrera en la función
lgamma. Esta condición solo se detectó entsan; en la práctica, no tuvo efectos secundarios. #13842 (Nikolai Kochetov). - Se corrige el formato del intervalo ‘Week’ en las sentencias ATTACH/ALTER/CREATE QUOTA. #13417 (vladimir-golovchenko).
- Ahora también se notifican las partes dañadas cuando se detectan durante el procesamiento de partes compactas. Las partes compactas son una característica experimental. #13282 (Amos Bird).
- Se corrige una aserción en
geohashesInBox. Esto corrige #12554. #13229 (alexey-milovidov). - Se corrige el
assertenparseDateTimeBestEffort. Esto corrige #12649. #13227 (alexey-milovidov). - Optimización menor en Processors/PipelineExecutor: salir de un bucle cuando tiene sentido. #13058 (Mark Papadakis).
- Se admite TRUNCATE table sin la palabra clave TABLE. #12653 (Winter Zhang).
- Se corrige la sobrescritura predeterminada del formato de la consulta EXPLAIN. Esto corrige #12541. #12541 (BohuTANG).
- Permite especificar la clase y el tipo de JOIN de una forma más estándar:
LEFT SEMI JOINen lugar deSEMI LEFT JOIN. Por ahora, ambos son correctos. #12520 (Artem Zuikov). - Cambia el valor predeterminado de
multiple_joins_rewriter_versiona 2. Habilita el nuevo reescritor de múltiples joins, que reconoce los nombres de las columnas. #12469 (Artem Zuikov). - Se añaden varias métricas para las solicitudes a sistemas de almacenamiento S3. #12464 (ianton-ru).
- Se usa el puerto seguro predeterminado correcto para clickhouse-benchmark con el argumento
--secure. Esto corrige #11044. #12440 (alexey-milovidov). - Reversión en caso de errores de inserción en los motores
Log,TinyLogyStripeLog. En versiones anteriores, un error de inserción podía dejar la tabla en un estado inconsistente (esto funciona según lo documentado y es normal para estos motores de tabla). Esto corrige #12402. #12426 (alexey-milovidov). - Implementa
RENAME DATABASEyRENAME DICTIONARYpara el engine de base de datosAtomic- Añade la macro implícita{uuid}, que puede usarse en la ruta de ZooKeeper paraReplicatedMergeTree. Funciona con consultasCREATE ... ON CLUSTER .... Estableceshow_table_uuid_in_table_create_query_if_not_nilentruepara usarla. - Hace opcionales los argumentos del engineReplicatedMergeTree;/clickhouse/tables/{uuid}/{shard}/y{replica}se usan de forma predeterminada. Cierra #12135. - Correcciones menores. - Estos cambios rompen la compatibilidad con versiones anteriores del engine de base de datosAtomic. Las bases de datosAtomiccreadas anteriormente deben convertirse manualmente al nuevo formato. La base de datos Atomic es una característica experimental. #12343 (tavplubix). - Se separó
AWSAuthV4Signeren un logger independiente y se eliminó la repetición excesiva deAWSClient: AWSClienten los mensajes de registro. #12320 (Vladimir Chebotarev). - Mejor mensaje de excepción en el almacenamiento con acceso a disco. #12625 (alesapin).
- Excepción mejorada para la función
incon un número no válido de argumentos. #12529 (Anton Popov). - Se corrigió el mensaje de error relacionado con la granularidad adaptativa. #12624 (alesapin).
- Se corrige el procesamiento de SETTINGS después de FORMAT. #12480 (Azat Khuzhin).
- Si la tabla MergeTree no contiene ORDER BY ni PARTITION BY, era posible ejecutar ALTER para CLEAR todas las columnas, y ALTER se quedaba bloqueado. Corregido en #7941. #12382 (alexey-milovidov).
- Evita volver a cargar el autocompletado desde el archivo de historial después de cada consulta (para evitar solapamientos en el historial con otras sesiones del cliente). #13086 (Azat Khuzhin).
Mejora de rendimiento
- Reduce hasta 2 veces el uso de memoria en algunas operaciones. #12424 (alexey-milovidov).
- Optimiza la búsqueda por PK para consultas que coinciden con un rango exacto de PK. #12277 (Ivan Babrou).
- Optimiza ligeramente las consultas muy cortas con
LowCardinality. #14129 (Anton Popov). - Mejora ligeramente el rendimiento de la agregación por claves UInt8/UInt16. #13091 y #13055 (alexey-milovidov).
- Aplica pushdown al paso
LIMITdel plan de consulta (dentro de subconsultas). #13016 (Nikolai Kochetov). - Paraleliza las etapas de búsqueda por clave primaria y de índice de omisión en las partes, como se describe en #11564. #12589 (Ivan Babrou).
- Convierte en enum los argumentos de tipo String de las funciones “if” y “transform” si
set optimize_if_transform_strings_to_enum = 1. #12515 (Artem Zuikov). - Sustituye las funciones monotónicas por su argumento en
ORDER BYsiset optimize_monotonous_functions_in_order_by=1. #12467 (Artem Zuikov). - Añade una optimización de
ORDER BYque reescribeORDER BY x, f(x)comoORDER BY xsiset optimize_redundant_functions_in_order_by = 1. #12404 (Artem Zuikov). - Permite el pushdown de predicados cuando una subconsulta contiene la cláusula
WITH. Esto corrige #12293 #12663 (Winter Zhang). - Mejora el rendimiento de lectura de partes compactas. Las partes compactas son una funcionalidad experimental. #12492 (Anton Popov).
- Intenta implementar una optimización de streaming en
DiskS3.DiskS3es una funcionalidad experimental. #12434 (Vladimir Chebotarev).
Mejora de compilación/pruebas/empaquetado
- Usar
shellcheckpara el análisis de linting de las pruebas sh. #13200 #13207 (alexey-milovidov). - Se añadió un script que establece etiquetas para las pull requests en el hook de GitHub. #13183 (alesapin).
- Elimina algunos submódulos recursivos. Consulta #13378. #13379 (alexey-milovidov).
- Asegúrese de que todos los submódulos sean de las URL correctas. Continuación de #13379. Esto corrige #13378. #13397 (alexey-milovidov).
- Se añadió compatibilidad con ajustes declarados por el usuario, a los que se puede acceder desde las propias consultas. Esto es necesario cuando el motor de ClickHouse se utiliza como componente de otro sistema. #13013 (Vitaly Baranov).
- Se añadieron pruebas para la funcionalidad de RBAC del privilegio INSERT en TestFlows. Se ampliaron las tablas sobre las que se prueba SELECT. Se añadieron Requirements para ajustarlos a las nuevas pruebas de motores de tabla. #13340 (MyroTk).
- Se corrige un error de timeout durante el reinicio del servidor en la prueba de estrés. #13321 (alesapin).
- Ahora, Fast test esperará al servidor con reintentos. #13284 (alesapin).
- La función
materialize()(la función para pruebas de ClickHouse) funcionará con NULL como se espera, transformándolo en una columna no constante. #13212 (alexey-milovidov). - Se corrige la compilación de libunwind en AArch64. Esto corrige #13204. #13208 (alexey-milovidov).
- Aún más reintentos en zkutil gtest para evitar la intermitencia de las pruebas. #13165 (alexey-milovidov).
- Pequeñas correcciones en los TestFlows de RBAC. #13152 (vzakaznikov).
- Se corrigió la prueba
00960_live_view_watch_events_live.py. #13108 (vzakaznikov). - Mejora de la purga de caché del script de despliegue de la documentación. #13107 (alesapin).
- Se reescribieron algunas pruebas aisladas en gtest. Se eliminaron includes innecesarios de las pruebas. #13073 (Nikita Mikhaylov).
- Se añadieron pruebas para la funcionalidad RBAC del privilegio
SELECTen TestFlows. #13061 (Ritaank Tiwari). - Se volvieron a ejecutar algunas pruebas en la comprobación Fast test. #12992 (alesapin).
- Se corrigió el error de MSan en la biblioteca “rdkafka”. Esto cierra #12990. Se actualizó
rdkafkaa la versión 1.5 (master). #12991 (alexey-milovidov). - Se corrige el informe de UBSan en base64 si las pruebas se ejecutaron en un servidor con AVX-512. Esto corrige #12318. Autor: @qoega. #12441 (alexey-milovidov).
- Se corrige el informe de UBSan en la biblioteca HDFS. Con esto se cierra #12330. #12453 (alexey-milovidov).
- Comprueba que es posible restaurar la copia de seguridad desde una versión antigua a una versión nueva. Esto cierra #8979. #12959 (alesapin).
- No compilar la imagen helper_container dentro de las pruebas de integración. Compilar el contenedor de Docker en CI y usar el helper_container precompilado en las pruebas de integración. #12953 (Ilya Yatsishin).
- Se agregó una prueba para la consulta
ALTER TABLE CLEAR COLUMNen columnas de clave primaria. #12951 (alesapin). - Se ampliaron los tiempos de espera en las pruebas de testflows. #12949 (vzakaznikov).
- Se corrige la compilación de una prueba en Mac OS X. Esto cierra #12767. #12772 (alexey-milovidov).
- Connector-ODBC actualizado a la versión mysql-connector-odbc-8.0.21. #12739 (Ilya Yatsishin).
- Incorporación de pruebas de sintaxis de RBAC en TestFlows. #12642 (vzakaznikov).
- Mejora el rendimiento de TestKeeper. Esto acelerará las pruebas con un uso intensivo de tablas Replicated. #12505 (alexey-milovidov).
- Ahora verificamos que el servidor pueda iniciarse tras ejecutar las pruebas de estrés. Esto corrige #12473. #12496 (alesapin).
- Se actualiza fmtlib a master (7.0.1). #12446 (alexey-milovidov).
- Agregar imagen de Docker para pruebas rápidas. #12294 (alesapin).
- Revisión de las rutas de configuración para las pruebas de integración. #12285 (Ilya Yatsishin).
- Agregar una opción del compilador para evitar que los marcos de pila sean demasiado grandes. Esto ayudará a ejecutar el código en fibras con un tamaño de pila reducido. #11524 (alexey-milovidov).
- Actualizar archivos .gitignore. #13447 (vladimir-golovchenko).
Versión 20.6 de ClickHouse
Versión de ClickHouse v20.6.3.28-stable
Cambio incompatible con versiones anteriores
- Al actualizar desde versiones anteriores a la 20.5, si se realiza una actualización gradual y el clúster contiene tanto versiones 20.5 o posteriores como versiones anteriores a la 20.5, reiniciar nodos de ClickHouse con versiones antiguas y arrancar una versión antigua en presencia de versiones más recientes puede provocar errores
Part ... intersects previous part. Para evitar este error, primero instale las versiones más recientes de los paquetesclickhouse-serveren todos los nodos del clúster y después reinícielos (de este modo, cuando se reinicieclickhouse-server, arrancará con la nueva versión).
Nueva funcionalidad
- Se añadió una implementación inicial de la consulta
EXPLAIN. Sintaxis:EXPLAIN SELECT .... Esto corrige #1118. #11873 (Nikolai Kochetov). - Se añadió el motor de almacenamiento
RabbitMQ. #11069 (Kseniia Sumarokova). - Se implementó el operador
ILIKE, similar al de PostgreSQL, para #11710. #12125 (Mike). - Se admiten RIGHT y FULL JOIN con
SET join_algorithm = 'partial_merge'. Solo se permite strictness ALL (ANY, SEMI, ANTI y ASOF no). #12118 (Artem Zuikov). - Se añadió la función
initializeAggregationpara inicializar una agregación a partir de un único valor. #12109 (Guillaume Tassery). - Se añadió compatibilidad con
ALTER TABLE ... [ADD|MODIFY] COLUMN ... FIRST#4006. #12073 (Winter Zhang). - Se añadió la función
parseDateTimeBestEffortUS. #12028 (flynn). - Se añadió compatibilidad con el formato
ORCpara la salida (antes solo se admitía para la entrada). #11662 (Kruglov Pavel).
Corrección de errores
- Se corrigió el error
aggregate function any(x) is found inside another aggregate function in querymedianteSET optimize_move_functions_out_of_any = 1y alias dentro deany(). #13419 (Artem Zuikov). - Se corrigió
PrettyCompactMonoBlocken clickhouse-local. Se corrigieron extremes/totals conPrettyCompactMonoBlock. Esto corrige #7746. #13394 (Azat Khuzhin). - Se corrigió un posible error
Totals having transform was already added to pipelineen caso de una consulta desde una réplica con retraso. #13290 (Nikolai Kochetov). - El servidor puede bloquearse si el usuario pasa argumentos especialmente diseñados a la función
h3ToChildren. Esto corrige #13275. #13277 (alexey-milovidov). - Se corrigieron el posible bajo rendimiento y el resultado ligeramente incorrecto de
uniqExact,topK,sumDistincty funciones de agregación similares aplicadas a tipos Float con valores NaN. Esto también provocaba una aserción en una compilación de depuración. Esto corrige #12491. #13254 (alexey-milovidov). - Se corrigió la función if cuando
condes unconstexprNullable que no es un NULL literal. Corrige #12463. #13226 (alexey-milovidov). - Se corrigió un assert en la función
arrayElementen el caso de que los elementos del array sean Nullable y el subíndice del array también sea Nullable. Esto corrige #12172. #13224 (alexey-milovidov). - Se corrigieron las funciones de conversión de
DateTime64con un argumento constante. #13205 (Azat Khuzhin). - Se corrigió un análisis incorrecto de índices con funciones. Podía provocar que se descartaran partes incorrectas al leer tablas
MergeTree. Corrige #13060. Corrige #12406. #13081 (Anton Popov). - Se corrigió el error
Cannot convert column because it is constant but values of constants are different in source and resulten consultas remotas que usan funciones deterministas dentro del ámbito de una consulta, pero que no son deterministas entre consultas, comonow(),now64(),randConstant(). Corrige #11327. #13075 (Nikolai Kochetov). - Se corrigió la limitación innecesaria del número de hilos para las consultas SELECT desde la réplica local. #12840 (Nikolai Kochetov).
- Se corrigió un error poco frecuente cuando las consultas
ALTER DELETEyALTER MODIFY COLUMNse ejecutaban simultáneamente como una sola mutación. Este error provoca una cantidad incorrecta de filas encount.txty, como consecuencia, datos incorrectos en la parte de datos. Además, se corrigió un pequeño error cuandoALTER RENAME COLUMNyALTER ADD COLUMNse ejecutaban simultáneamente. #12760 (alesapin). - Se corrigió
CAST(Nullable(String), Enum()). #12745 (Azat Khuzhin). - Se corrigió un problema de rendimiento con las tuplas grandes, que se interpretaban como funciones en la cláusula
IN. Se trata del caso en que el usuario escribeWHERE x IN tuple(1, 2, ...)en lugar deWHERE x IN (1, 2, ...)por alguna razón poco clara. #12700 (Anton Popov). - Se corrigió el seguimiento de memoria para
input_format_parallel_parsing(asociando el hilo al grupo). #12672 (Azat Khuzhin). - Se corrigió el índice de filtro de Bloom con una expresión constante. Esto corrige #10572. #12659 (Winter Zhang).
- Se corrigió
SIGSEGVenStorageKafkacuando el broker no está disponible (y no solo en ese caso). #12658 (Azat Khuzhin). - Se añadió compatibilidad con la función
ifpara argumentosArray(UUID). Esto corrige #11066. #12648 (alexey-milovidov). CREATE USER IF NOT EXISTSahora ya no lanza una excepción si el usuario existe. Esto corrige #12507. #12646 (Vitaly Baranov).- Mejor mensaje de excepción en el almacenamiento con acceso a disco. #12625 (alesapin).
- La función
groupArrayMoving*no funcionaba con consultas distribuidas. Su resultado se calculaba con un tipo de datos incorrecto (sin promoverlo al tipo más grande). La funcióngroupArrayMovingAvgdevolvía un número entero, lo que no era coherente con la funciónavg. Esto corrige #12568. #12622 (alexey-milovidov). - Se corrigió la ausencia de alias en la función
any. #12593 (Anton Popov). - Se corrigió una condición de carrera en diccionarios externos con layout de caché que puede provocar un fallo del servidor. #12566 (alesapin).
- Elimina los datos de las tablas Distributed (bloques de los async INSERTs) al ejecutar DROP TABLE. #12556 (Azat Khuzhin).
- Se corrigió un error que provocaba la corrupción de las partes antiguas después de la consulta
ALTER DELETEcuandoenable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin). - Se ha mejorado la excepción para la función
incuando el número de argumentos no es válido. #12529 (Anton Popov). - Se corrigió una condición de carrera en las tablas de live view que podía causar duplicación de datos. #12519 (vzakaznikov).
- Se corrigió un problema de rendimiento al leer partes compactas. #12492 (Anton Popov).
- Se corrigió la compatibilidad retroactiva del formato binario de los valores
AggregateFunction(avg, ...). Esto corrige #12342. #12486 (alexey-milovidov). - Se corrigió el análisis de SETTINGS después de FORMAT. #12480 (Azat Khuzhin).
- Se corrigió el interbloqueo cuando
text_logestá habilitado. #12452 (alexey-milovidov). - Se corrigió un desbordamiento al especificar un
LIMIToOFFSETmuy grande. Esto corrige #10470. Esto corrige #11372. #12427 (alexey-milovidov). - Se corrigió un posible segfault en
StorageMerge. Esto corrige #12054. #12401 (tavplubix). - Se revirtió el cambio introducido en #11079 para resolver #12098. #12397 (Mike).
- Comprobación adicional de los argumentos del índice bloom filter. Esto corrige #11408. #12388 (alexey-milovidov).
- Evita que se produzca una excepción cuando se usa una constante negativa o de coma flotante en la condición WHERE de tablas con índices. Esto corrige #11905. #12384 (alexey-milovidov).
- Se permitió
CLEARen una columna incluso si hay expresionesDEFAULTque dependen de ella. Esto corrige #12333. #12378 (alexey-milovidov). - Se corrigen
TOTALS/ROLLUP/CUBEen las funciones de agregación con argumentos-StateyNullable. Esto corrige #12163. #12376 (alexey-milovidov). - Se corrigieron el mensaje de error y los códigos de salida de las consultas
ALTER RENAME COLUMNcuandoRENAMEno está permitido. Corrige #12301 y #12303. #12335 (alesapin). - Se corrigió una condición de carrera muy rara en
ReplicatedMergeTreeQueue. #12315 (alexey-milovidov). - Al usar el codec
DeltaoDoubleDeltacon tipos de ancho variable, se devolvía una excepción con el códigoLOGICAL_ERRORen lugar de una excepción con el códigoBAD_ARGUMENTS(garantizamos que nunca se produzcan excepciones con el código logical error). Esto corrige #12110. #12308 (alexey-milovidov). - Se corrigió el orden de las columnas en el modificador
WITH FILL. Anteriormente, no se respetaba el orden de las columnas de la cláusulaORDER BY. #12306 (Anton Popov). - Se evita la excepción “bad cast” cuando hay una expresión que filtra datos por columnas virtuales (como
_tableen las tablasMerge) o por columnas de “índice” en tablas del sistema, por ejemplo al filtrar por el nombre de la base de datos al consultarsystem.tables, y esa expresión devuelve el tipoNullable. Esto corrige #12166. #12305 (alexey-milovidov). - Se corrigió
TTLtras renombrar la columna de la que depende la expresión TTL. #12304 (Anton Popov). - Se corrigió un SIGSEGV cuando había un mensaje con error en medio del lote en el motor
Kafka. #12302 (Azat Khuzhin). - Se corrigió la situación en la que algunos hilos podían quedarse bloqueados aleatoriamente durante unos segundos al actualizar la caché de
DNS. #12296 (tavplubix). - Se corrigió un error tipográfico en el nombre del ajuste. #12292 (alexey-milovidov).
- Mostrar un error cuando no se pudo cargar
TrieDictionary. #12290 (Vitaly Baranov). - La función
arrayFillfuncionaba de forma incorrecta con arrays vacíos, lo que podía provocar un fallo. Esto corrige #12263. #12279 (alexey-milovidov). - Se implementaron conversiones al tipo común para los tipos
LowCardinality. Esto permite ejecutar UNION ALL de tablas con columnas LowCardinality y otras columnas. Esto corrige #8212. Esto corrige #4342. #12275 (alexey-milovidov). - Se corrigió el comportamiento al alcanzar el límite de redirecciones en una solicitud al almacenamiento
S3. #12256 (ianton-ru). - Se corrigió el problema por el que, durante múltiples inserciones secuenciales en
StorageFile, la cabecera de algunos tipos especiales se escribía más de una vez. Esto soluciona #6155. #12197 (Nikita Mikhaylov). - Se corrigieron las funciones lógicas para valores UInt8 distintos de 0 o 1. #12196 (Alexander Kazakov).
- Se limita max_memory_usage* a la memoria residente del proceso. #12182 (Azat Khuzhin).
- Se corrigió la comprobación de los argumentos de dictGet durante la eliminación de funciones inyectivas en
GROUP BY. #12179 (Azat Khuzhin). - Se corrigió el comportamiento del motor
SummingMergeTreeal sumar columnas de la clave de partición. Se añadió una excepción en caso de que la definición explícita de las columnas que se van a sumar se cruce con las columnas de la clave de partición. Esto corrige #7867. #12173 (Nikita Mikhaylov). - No divida el nombre de la tabla de la fuente del diccionario en esquema y nombre de la tabla si la conexión ODBC no admite esquemas. #12165 (Vitaly Baranov).
- Se corrigió una lógica errónea en
ALTER DELETEque provoca la eliminación de registros cuando la condición se evalúa como NULL. Esto corrige #9088. Esto cierra #12106. #12153 (alexey-milovidov). - Se corrigió la transformación de la consulta que se envía a un SGBD externo (p. ej., MySQL, ODBC) cuando hay alias. Esto corrige #12032. #12151 (alexey-milovidov).
- Se corrigió un código defectuoso en la optimización redundante de ORDER BY. El error se había introducido en #10067. #12148 (alexey-milovidov).
- Se corrigió un posible desbordamiento en la división de enteros. Esto soluciona #12119. #12140 (alexey-milovidov).
- Se corrigió un posible bucle infinito en
greatCircleDistanceygeoDistance. Con esto se corrige #12117. #12137 (alexey-milovidov). - Se normaliza la gestión del archivo “pid”. En versiones anteriores, el servidor podía negarse a iniciarse si se cerraba sin apagarse correctamente y si había otro proceso con el mismo pid que el servidor ejecutado anteriormente. Además, el archivo pid podía eliminarse durante un arranque fallido del servidor incluso si había otro servidor en ejecución. Esto corrige #3501. #12133 (alexey-milovidov).
- Se corrigió un error que provocaba metadatos de tabla incorrectos en ZooKeeper para las tablas ReplicatedVersionedCollapsingMergeTree. Corrige #12093. #12121 (alesapin).
- Evita la excepción “There is no query” en vistas materializadas con JOIN o con subconsultas adjuntas a los logs del sistema (system.query_log, metric_log, etc.) o a la tabla subyacente de engine=Buffer. #12120 (filimonov).
- Se corrigió la gestión de la dependencia de la tabla con ENGINE=Dictionary sobre el diccionario. Esto corrige #10994. Esto corrige #10397. #12116 (Vitaly Baranov).
- El formato
Parquetahora funciona correctamente con los tiposLowCardinalityyLowCardinality(Nullable). Se corrigen #12086 y #8406. #12108 (Nikolai Kochetov). - Se corrigió el problema de rendimiento en las consultas con
UNIONcausado por un límite incorrecto del número total de hilos. Corrige #12030. #12103 (Nikolai Kochetov). - Se corrigió un error de segmentación con los combinadores
-StateResample. #12092 (Anton Popov). - Se corrigieron las métricas vacías
result_rowsyresult_bytesensystem.quey_logpara las consultas SELECT. Corrige #11595. #12089 (Nikolai Kochetov). - Se corrigió la limitación innecesaria del número de hilos para las consultas SELECT desde
VIEW. Corrige #11937. #12085 (Nikolai Kochetov). - Se corrigió un SIGSEGV en StorageKafka al ejecutar DROP TABLE. #12075 (Azat Khuzhin).
- Se corrigió un posible bloqueo al usar un tipo incorrecto para
PREWHERE. Corrige #12053, #12060. #12060 (Nikolai Kochetov). - Se corrigió el error
Cannot capture columnen las funciones de orden superior con argumentoTuple(LowCardinality). Corrige #9766. #12055 (Nikolai Kochetov). - Se corrigió la comprobación de restricciones cuando la restricción es una expresión constante. Esto corrige #11360. #12042 (alexey-milovidov).
- Se corrigieron un resultado incorrecto y un posible cierre inesperado al invocar la función
ifcon argumentos de tipoFixedStringde distintos tamaños. Esto corrige #11362. #12021 (alexey-milovidov).
Mejora
- Ahora se puede especificar la clase y el tipo de
JOINde una forma más estándar:LEFT SEMI JOINen lugar deSEMI LEFT JOIN. Por ahora, ambas formas son correctas. #12520 (Artem Zuikov). lifetime_rows/lifetime_bytespara el motor Buffer. #12421 (Azat Khuzhin).- Se escribe en el cliente el mensaje detallado de la excepción en lugar de ‘MySQL server has gone away’. #12383 (BohuTANG).
- Permite cambiar el juego de caracteres que se usa para imprimir los bordes de las tablas. Los juegos de caracteres disponibles son los siguientes: UTF-8, ASCII. La configuración
output_format_pretty_grid_charsethabilita esta función. #12372 (Sabyanin Maxim). - Se añadió compatibilidad con MySQL ‘SELECT DATABASE()’ #9336 2. Se añadió una prueba de integración para la consulta de reemplazo de MySQL. #12314 (BohuTANG).
- Se añadió
KILL QUERY [connection_id]para que el cliente/driver de MySQL pueda cancelar consultas largas, problema #12038. #12152 (BohuTANG). - Se añadió compatibilidad con las substitutions
%g(año ISO de dos dígitos) y%G(año ISO de cuatro dígitos) en la funciónformatDateTime. #12136 (vivarum). - Se añadió la columna ‘type’ en system.disks. #12115 (ianton-ru).
- Se mejoró el comando
REVOKE: ahora requiere la opción grant/admin solo para el acceso que se va a revocar. Por ejemplo, para ejecutarREVOKE ALL ON *.* FROM user1ya no es necesario tener todos los access rights concedidos con la opción grant. Se añadió el comandoREVOKE ALL FROM user1: revoca todos los roles concedidos auser1. #12083 (Vitaly Baranov). - Se añadió prioridad de réplica para
load_balancing(para la priorización manual del balanceo de carga). #11995 (Azat Khuzhin). - Las rutas de los metadatos de S3 pasaron a ser relativas, lo que permite manejar más fácilmente los blobs de S3. #11892 (Vladimir Chebotarev).
Mejora del rendimiento
- Se mejoró el rendimiento de
ORDER BYyGROUP BYmediante el prefijo de la clave de ordenación (habilitado con la configuraciónoptimize_aggregation_in_order, deshabilitado de forma predeterminada). #11696 (Anton Popov). - Se eliminaron las funciones inyectivas dentro de
uniq*()si se estableceset optimize_injective_functions_inside_uniq=1. #12337 (Ruslan Kamalov). - No se usaba el índice para el operador IN con literales, una regresión del rendimiento introducida en torno a la v19.3. Esto corrige #10574. #12062 (nvartolomei).
- Se implementaron subidas de una sola parte para DiskS3 (funcionalidad experimental). #12026 (Vladimir Chebotarev).
Funcionalidad experimental
- Se agregó un nuevo formato en memoria para las partes en tablas de la familia
MergeTree, que almacena los datos en memoria. Las partes se escriben en disco en la primera combinación. La parte se creará en formato en memoria si su tamaño en filas o bytes está por debajo de los umbralesmin_rows_for_compact_partymin_bytes_for_compact_part. También hay compatibilidad opcional con Write-Ahead-Log, que está habilitada de forma predeterminada y se controla mediante la configuraciónin_memory_parts_enable_wal. #10697 (Anton Popov).
Mejora de compilación/pruebas/empaquetado
- Implementado el modo de fuzzing de consultas basado en AST para clickhouse-client. Consulta esta etiqueta para ver la lista de incidencias que encontramos recientemente mediante fuzzing. La mayoría se detectaron con esta herramienta, y un par con SQLancer y
00746_sql_fuzzy.pl. #12111 (Alexander Kuzmenkov). - Añadido un nuevo tipo de pruebas basadas en el framework Testflows. #12090 (vzakaznikov).
- Añadida una prueba de integración HTTPS para S3. #12412 (Pavel Kovalenko).
- Registrar los mensajes de traza del sanitizador desde un hilo independiente. Esto evitará un posible interbloqueo con Thread sanitizer. #12313 (alexey-milovidov).
- Ahora las pruebas funcionales y de estrés podrán ejecutarse con la versión anterior del script
clickhouse-test. #12287 (alesapin). - Eliminar la extraña creación de archivos durante la compilación en
orc. #12258 (Nikita Mikhaylov). - Colocar los archivos comunes de docker compose en el contenedor Docker de integración. #12168 (Ilya Yatsishin).
- Corregidas las advertencias de CodeQL.
CodeQLes otro analizador estático que utilizaremos junto conclang-tidyyPVS-Studio, que ya usamos. #12138 (alexey-milovidov). - Correcciones menores de CMake para la compilación UNBUNDLED. #12131 (Matwey V. Kornilov).
- Añadida una demostración de la imagen mínima de Docker sin usar ninguna distribución de Linux. #12126 (alexey-milovidov).
- Actualizar los paquetes del sistema en la imagen de Docker de
clickhouse-server. #12124 (Ivan Blinkov). - Añadida la bandera
UNBUNDLEDa la tablasystem.build_options. Movidas las listas de omisión declickhouse-testal repositorio de ClickHouse. #12107 (alesapin). - Comprobación periódica con la herramienta de análisis de seguridad Anchore Container Analysis, que busca CVE en la imagen de Docker de
clickhouse-server. También confirma queDockerfilese puede compilar. Se ejecuta a diario enmastery en las pull requests deDockerfile. #12102 (Ivan Blinkov). - Comprobación diaria con la herramienta de análisis de seguridad GitHub CodeQL, que busca CWE. #12101 (Ivan Blinkov).
- Instalar
ca-certificatesantes del primerapt-get updateen Dockerfile. #12095 (Ivan Blinkov).
Versión de ClickHouse 20.5
Versión de ClickHouse v20.5.4.40-stable 2020-08-10
Corrección de errores
- Se corrigió un análisis incorrecto de índices con funciones. Podía provocar el descarte de partes incorrectas al leer de tablas
MergeTree. Corrige #13060. Corrige #12406. #13081 (Anton Popov). - Se corrigió el límite innecesario del número de hilos para las consultas SELECT desde la réplica local. #12840 (Nikolai Kochetov).
- Se corrigió el rendimiento con tuplas grandes, que se interpretaban como funciones en la sección
IN. Es el caso en que el usuario escribeWHERE x IN tuple(1, 2, ...)en lugar deWHERE x IN (1, 2, ...)por alguna razón poco clara. #12700 (Anton Popov). - Se corrigió el seguimiento de memoria para input_format_parallel_parsing (asociando el hilo al grupo). #12672 (Azat Khuzhin).
- Se corrigió el índice bloom filter con una expresión const. Esto soluciona #10572. #12659 (Winter Zhang).
- Se corrigió
SIGSEGVenStorageKafkacuando el broker no está disponible (y no solo en ese caso). #12658 (Azat Khuzhin). - Se añadió compatibilidad para la función
ifcon argumentosArray(UUID). Esto corrige #11066. #12648 (alexey-milovidov). - Se corrigió la ausencia de alias en la función
any. #12593 (Anton Popov). - Se corrigió una condición de carrera en diccionarios externos con layout cache que puede provocar que el servidor se bloquee. #12566 (alesapin).
- Eliminar los datos de las tablas Distributed (bloques de async INSERTs) al ejecutar DROP TABLE. #12556 (Azat Khuzhin).
- Se corrigió un error que dejaba dañadas las partes antiguas tras una consulta
ALTER DELETEcuandoenable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin). - Excepción mejorada para la función
incuando el número de argumentos no es válido. #12529 (Anton Popov). - Se corrigió una condición de carrera en las tablas de live view que podía provocar la duplicación de datos. #12519 (vzakaznikov).
- Se corrigió un problema de rendimiento al leer partes compactas. #12492 (Anton Popov).
- Se corrigió un problema de compatibilidad con versiones anteriores en el formato binario de los valores de
AggregateFunction(avg, ...). Esto corrige #12342. #12486 (alexey-milovidov). - Se corrigió el interbloqueo cuando
text_logestá habilitado. #12452 (alexey-milovidov). - Se corrigió el desbordamiento al especificar un LIMIT u OFFSET muy grande. Esto corrige #10470. Esto corrige #11372. #12427 (alexey-milovidov).
- Se corrigió un posible segfault en StorageMerge. Cierra #12054. #12401 (tavplubix).
- Revierte el cambio introducido en #11079 para resolver #12098. #12397 (Mike).
- Se evita una excepción cuando se usa una constante negativa o de punto flotante en la condición WHERE para tablas con índice. Esto corrige #11905. #12384 (alexey-milovidov).
- Permitir hacer CLEAR de la columna incluso si hay expresiones DEFAULT que dependen de ella. Esto corrige #12333. #12378 (alexey-milovidov).
- Se corrigió TOTALS/ROLLUP/CUBE en las funciones de agregación con argumentos
-StateyNullable. Esto corrige #12163. #12376 (alexey-milovidov). - Se corrigió un SIGSEGV cuando había un mensaje con error en medio del lote en el motor
Kafka. #12302 (Azat Khuzhin). - Se corrigió el comportamiento del motor
SummingMergeTreeal sumar columnas de la clave de partición. Se añadió una excepción en caso de una definición explícita de las columnas que se van a sumar que se solapa con las columnas de la clave de partición. Esto corrige #7867. #12173 (Nikita Mikhaylov). - Se corrigió la transformación de la consulta que se envía a un SGBD externo (p. ej., MySQL, ODBC) en presencia de alias. Esto corrige #12032. #12151 (alexey-milovidov).
- Se corrigió un error que provocaba metadatos incorrectos de la tabla en ZooKeepeer para las tablas ReplicatedVersionedCollapsingMergeTree. Corrige #12093. #12121 (alesapin).
- Se corrigió la limitación innecesaria del número de hilos en las consultas
SELECTsobreVIEW. Corrige #11937. #12085 (Nikolai Kochetov). - Se corrigió un fallo en un JOIN con el tipo LowCardinality y
join_algorithm=partial_merge. #12035 (Artem Zuikov). - Se corrigió un resultado incorrecto de
if()con valores NULL en la condición. #11807 (Artem Zuikov).
Mejora de rendimiento
- El índice no se usaba para el operador IN con literales; se trata de una regresión de rendimiento introducida en torno a la v19.3. Esto corrige #10574. #12062 (nvartolomei).
Mejora de compilación/pruebas/empaquetado
- Instalar
ca-certificatesantes del primerapt-get updateen el Dockerfile. #12095 (Ivan Blinkov).
Versión de ClickHouse v20.5.2.7-stable 2020-07-02
Cambio incompatible con versiones anteriores
- COUNT(DISTINCT) y la familia de funciones de agregado
uniqahora devuelven un resultado noNullable. Si todos los valores pasados son NULL, devuelven cero en su lugar. Esto mejora la compatibilidad con SQL. #11661 (alexey-milovidov). - Se añadió una comprobación para los casos en que una configuración de usuario se especifica en un lugar incorrecto. Las configuraciones de usuario deben especificarse en
users.xml, dentro de la sección<profile>del perfil de usuario correspondiente (o en<default>para la configuración predeterminada). El servidor no se iniciará y mostrará un mensaje de excepción en el log. Esto corrige #9051. Si quieres omitir la comprobación, puedes mover la configuración al lugar adecuado o añadir<skip_check_for_incorrect_settings>1</skip_check_for_incorrect_settings>a config.xml. #11449 (alexey-milovidov). - La configuración
input_format_with_names_use_headerestá habilitada de forma predeterminada. Esto afectará al análisis de los formatos de entrada-WithNamesy-WithNamesAndTypes. #10937 (alexey-milovidov). - Se elimina la configuración
experimental_use_processors. Está habilitada de forma predeterminada. #10924 (Nikolai Kochetov). - Se actualiza
zstda la versión 1.4.4. Incluye pequeñas mejoras de rendimiento y en la relación de compresión. Si ejecutas réplicas con distintas versiones de ClickHouse, es posible que veas mensajes de error razonables comoData after merge is not byte-identical to data on another replicas., junto con una explicación. Estos mensajes son normales y no debes preocuparte. Este cambio es compatible con versiones anteriores, pero lo incluimos aquí en el changelog por si te preguntas por estos mensajes. #10663 (alexey-milovidov). - Se añadió una comprobación para codecs sin sentido y la configuración
allow_suspicious_codecspara controlar esta comprobación. Esto cierra #4966. #10645 (alexey-milovidov). - Varios cambio de configuración de Kafka modifican sus valores predeterminados. Consulta #11388.
- Al actualizar desde versiones anteriores a la 20.5, si se realiza una actualización gradual y el cluster contiene tanto versiones 20.5 o posteriores como versiones anteriores a 20.5, reiniciar nodos de ClickHouse con versiones antiguas mientras hay versiones más nuevas en ejecución puede provocar errores
Part ... intersects previous part. Para evitar este error, instala primero las versiones más recientes de los paquetesclickhouse-serveren todos los nodos del cluster y luego reinícialos (así, cuando se reinicieclickhouse-server, arrancará con la nueva versión).
Nueva funcionalidad
TTL DELETE WHEREyTTL GROUP BYpara la reducción automática de la granularidad de los datos y el rollup en tablas. #10537 (expl0si0nn).- Implementación del protocolo wire de PostgreSQL. #10242 (Movses).
- Se añadieron tablas del sistema para usuarios, roles, privilegios, perfiles de configuración, cuotas y políticas por fila; también se añadieron los comandos SHOW USER, SHOW [CURRENT|ENABLED] ROLES, SHOW SETTINGS PROFILES. #10387 (Vitaly Baranov).
- Se admiten escrituras en la función de tabla ODBC #10554 (ageraab). #10901 (tavplubix).
- Se añaden métricas de rendimiento de consultas basadas en
perf_eventsde Linux (estas métricas se calculan con contadores de hardware de la CPU y contadores del SO). Es opcional y requiere queCAP_SYS_ADMINesté establecido en el binario de ClickHouse. #9545 Andrey Skobtsov. #11226 (Alexander Kuzmenkov). - Ahora se admiten los modificadores
NULLyNOT NULLpara tipos de datos en la consultaCREATE. #11057 (Павел Потемкин). - Se añade el formato de entrada y de salida
ArrowStream. #11088 (hcz). - Se admite Cassandra como fuente externa para diccionarios. #4978 (favstovol).
- Se agregó un nuevo layout
directque carga todos los datos directamente desde el origen para cada consulta, sin almacenar los datos ni mantenerlos en caché. #10622 (Artem Streltsov). - Se añadió el nuevo layout
complex_key_directa los diccionarios, que no almacena nada localmente durante la ejecución de la consulta. #10850 (Artem Streltsov). - Se añadió compatibilidad con la sintaxis de variables globales de estilo MySQL (stub). Esto es necesario para que el protocolo de MySQL sea compatible. #11832 (alexey-milovidov).
- Se añadió resaltado de sintaxis en
clickhouse-clientmediantereplxx. #11422 (Tagir Kuskarov). - Se agregaron las funciones
minMapymaxMap. #11603 (Ildus Kurbangaliev). - Se añade la tabla
system.asynchronous_metric_log, que registra métricas históricas desystem.asynchronous_metrics. #11588 (Alexander Kuzmenkov). - Se agregan las funciones
extractAllGroupsHorizontal(haystack, re)yextractAllGroupsVertical(haystack, re). #11554 (Vasily Nemkov). - Se agregan las consultas SHOW CLUSTER(S). #11467 (hexiaoting).
- Se añade la función
netlocpara extraer la ubicación de red, similar anetlocdeurlparse(url)en Python. #11356 (Guillaume Tassery). - Se agregan 2 columnas virtuales más para engine=Kafka para acceder a las cabeceras de los mensajes. #11283 (filimonov).
- Se añadió la columna virtual
_timestamp_msal motor Kafka (el tipo esNullable(DateTime64(3))). #11260 (filimonov). - Se añade la función
randomFixedString. #10866 (Andrei Nekrashevich). - Se añade la función
fuzzBits, que invierte bits aleatoriamente en una cadena con una probabilidad determinada. #11237 (Andrei Nekrashevich). - Permitir comparar números con cadenas constantes en los operadores de comparación y en las secciones IN y VALUES. #11647 (alexey-milovidov).
- Se añade el modo de balanceo de carga
round_robin. #11645 (Azat Khuzhin). - Se agregó la configuración
cast_keep_nullable. Si se establece,CAST(something_nullable AS Type)devuelveNullable(Type). #11733 (Artem Zuikov). - Se añadió la columna
positiona la tablasystem.columnsycolumn_positiona la tablasystem.parts_columns. Contiene la posición ordinal de una columna en una tabla, empezando por 1. Esto resuelve #7744. #11655 (alexey-milovidov). - Compatibilidad con ON CLUSTER para SYSTEM
{FLUSH DISTRIBUTED,STOP/START DISTRIBUTED SEND}. #11415 (Azat Khuzhin). - Se añade la tabla system.distribution_queue. #11394 (Azat Khuzhin).
- Compatibilidad con todas las opciones de formato en Kafka, exposición de algunos ajustes a nivel de tabla y ajuste de los valores predeterminados para mejorar el rendimiento. #11388 (filimonov).
- Se agregó la función
port(para extraer el puerto de una URL). #11120 (Azat Khuzhin). - Ahora las funciones
dictGet*aceptan nombres de tablas. #11050 (Vitaly Baranov). - La herramienta
clickhouse-formatahora puede dar formato a varias consultas cuando se utiliza el argumento-n. #10852 (Darío). - Posibilidad de configurar proxy-resolver para DiskS3. #10744 (Pavel Kovalenko).
- Permitir que
pointInPolygonfuncione con un polígono no constante.pointInPolygonahora puede aceptar Array(Array(Tuple(…, …))) como segundo argumento, un array con el polígono y los huecos. #10623 (Alexey Ilyukhov) #11421 (Alexey Ilyukhov). - Se añadió
move_ttl_infoasystem.partspara permitir la introspección de la funcionalidad de move TTL. #10591 (Vladimir Chebotarev). - Posibilidad de trabajar con S3 a través de proxies. #10576 (Pavel Kovalenko).
- Se añaden
NCHARyNVARCHARcomo sinónimos de tipos de datos. #11025 (alexey-milovidov). - Resuelto #7224: se agregaron las métricas
FailedQuery,FailedSelectQueryyFailedInsertQuerya la tablasystem.events. #11151 (Nikita Orlov). - Añade más estadísticas de
jemallocasystem.asynchronous_metricsy asegúrate de que muestren valores actualizados. #11748 (Alexander Kuzmenkov). - Permite especificar las credenciales predeterminadas de S3 y encabezados de autenticación personalizados. #11134 (Grigory Pervakov).
- Se añadieron nuevas funciones para importar/exportar DateTime64 como Int64 con distintas precisiones:
to-/fromUnixTimestamp64Milli/-Micro/-Nano. #10923 (Vasily Nemkov). - Se permite especificar la URI
mongodb://para los diccionarios de MongoDB. #10915 (Alexander Kuzmenkov). - La palabra clave OFFSET ahora puede usarse sin una cláusula LIMIT vinculada. #10802 (Guillaume Tassery).
- Se añadió la tabla
system.licenses. Esta tabla contiene las licencias de las bibliotecas de terceros ubicadas en el directoriocontrib. Con esto se cierra #2890. #10795 (alexey-milovidov). - Nueva función function toStartOfSecond(DateTime64) -> DateTime64 que pone a cero la fracción de segundo del valor DateTime64. #10722 (Vasily Nemkov).
- Se añade un nuevo formato de entrada
JSONAsStringque acepta una secuencia de objetos JSON separados por saltos de línea, espacios o comas. #10607 (Kruglov Pavel). - Ahora se permite perfilar la memoria con una granularidad más fina que 4 MiB. Se añadió un perfilador de memoria por muestreo para capturar asignaciones y liberaciones de memoria aleatorias. #10598 (alexey-milovidov).
SimpleAggregateFunctionahora también es compatible consumMap. #10000 (Ildus Kurbangaliev).- Compatibilidad con
ALTER RENAME COLUMNpara el motor de tabla Distributed. Continuación de #10727. Corrige #10747. #10887 (alesapin).
Corrección de errores
- Se corrige el informe de UBSan al analizar Decimal. Esto corrige #7540. #10512 (alexey-milovidov).
- Corrige una posible excepción de punto flotante al analizar DateTime64. Esto corrige #11374. #11875 (alexey-milovidov).
- Corrige un error poco frecuente causado por el uso de una columna
Nullableen una condiciónprewhere. #11895 #11608 #11869 (Nikolai Kochetov). - No se permite
arrayJoindentro de funciones de orden superior. Esto provocaba una desincronización del protocolo. Con esto se cierra #3933. #11846 (alexey-milovidov). - Corrige el resultado erróneo de la comparación de FixedString con una String constante. Esto corrige #11393. Este error apareció en la versión 20.4. #11828 (alexey-milovidov).
- Corrige el resultado incorrecto de
ifcuando la condición contiene NULL. #11807 (Artem Zuikov). - Se corrige el uso de demasiados hilos en las consultas. #11788 (Nikolai Kochetov).
- Se corrigió la excepción
Scalar does not existal usarWITH <subconsulta escalar> ...enSELECT ... FROM merge_tree_table ...#11621. #11767 (Amos Bird). - Se corrige el comportamiento inesperado de consultas como
SELECT *, xyz.*, que se ejecutaban correctamente cuando se esperaba un error. #11753 (hexiaoting). - Ahora, las operaciones de fetch replicadas se cancelarán durante un ALTER de metadatos. #11744 (alesapin).
- Interpretar los metadatos almacenados en ZooKeeper antes de comprobar su igualdad. #11739 (Azat Khuzhin).
- Se corrigió LOGICAL_ERROR causado por una inferencia incorrecta de tipos en literales complejos en el formato de entrada Values. #11732 (tavplubix).
- Se corrige
ORDER BY ... WITH FILLen columnas constantes. #11697 (Anton Popov). - Corrige una condición de carrera muy poco frecuente en SYSTEM SYNC REPLICA. Si se crea una tabla replicada y, al mismo tiempo, desde otra conexión un cliente distinto ejecuta el comando
SYSTEM SYNC REPLICAsobre esa tabla (esto es poco probable, porque ese otro cliente debería saber que la tabla se acaba de crear), puede producirse una desreferenciación de nullptr. #11691 (alexey-milovidov). - Use tiempos de espera adecuados al comunicarse con XDBC bridge. Recientemente, no se respetaban los tiempos de espera al comprobar si el bridge estaba activo y al recibir metainformación. #11690 (alexey-milovidov).
- Se corrige el uso de
LIMIT n WITH TIESjunto con la cláusulaORDER BY, que contiene alias. #11689 (Anton Popov). - Corrige un posible
Pipeline stucken consultas conFINALen paralelo. Corrige #11636. #11682 (Nikolai Kochetov). - Se corrige un error que provoca un estado incorrecto de
system.mutations. Puede indicar que toda la mutación ya se ha completado, pero el servidor aún tiene tareasMUTATE_PARTen la cola de replicación e intenta ejecutarlas. Esto corrige #11611. #11681 (alesapin). - Se corrigió el resaltado de sintaxis en la consulta CREATE USER. #11664 (alexey-milovidov).
- Se añadió compatibilidad con expresiones regulares con indicadores que no distinguen entre mayúsculas y minúsculas. Esto corrige #11101 y #11506. #11649 (alexey-milovidov).
- Eliminar la optimización de consultas de conteo trivial si está configurada la seguridad a nivel de fila. En versiones anteriores, el usuario obtenía el conteo total de registros de una tabla en lugar del conteo filtrado. Esto corrige #11352. #11644 (alexey-milovidov).
- Se corrigen los bloom filters para String (índices de omisión de datos). #11638 (Azat Khuzhin).
- Sin la opción
-q, la base de datos no se crea al iniciar. #11604 (giordyb). - Se corrige el error
Block structure mismatchen consultas con muestreo que leen desde la tablaBuffer. #11602 (Nikolai Kochetov). - Corrige el código de salida erróneo de clickhouse-client cuando
exception.code() % 256 == 0. #11601 (filimonov). - Se corrigieron las condiciones de carrera en CREATE/DROP de distintas réplicas de ReplicatedMergeTree. Sigue funcionando aunque la tabla no se haya eliminado completamente de ZooKeeper o no se haya creado correctamente. Esto corrige #11432. #11592 (alexey-milovidov).
- Se corrigió un error menor en el mensaje de registro sobre “Mark cache size was lowered” al arrancar el servidor. Esto cierra #11399. #11589 (alexey-milovidov).
- Se corrigió el error
Size of offsets does not match size of columnen consultas conPREWHERE column in (subquery)yARRAY JOIN. #11580 (Nikolai Kochetov). - Se corrigió un fallo de segmentación poco frecuente en
SHOW CREATE TABLE. Corrige #11490. #11579 (tavplubix). - Todas las consultas de una sesión HTTP tenían el mismo query_id. Se ha corregido. #11578 (tavplubix).
- Ahora, el contenedor Docker de clickhouse-server preferirá IPv6 al comprobar si el servidor sigue activo. #11550 (Ivan Starkov).
- Corrige el error
Data compressed with different methodsque puede producirse simin_bytes_to_use_direct_ioestá habilitado, PREWHERE está activo y se usa SAMPLE o un número elevado de hilos. Esto corrige #11539. #11540 (alexey-milovidov). - Se corrige shard_num/replica_num para
<node>(rompía use_compact_format_in_distributed_parts_names). #11528 (Azat Khuzhin). - Se corrige el async INSERT en Distributed con prefer_localhost_replica=0 y sin internal_replication. #11527 (Azat Khuzhin).
- Se corrige una fuga de memoria cuando se lanza una excepción en medio de la agregación con funciones
-State. Esto soluciona #8995. #11496 (alexey-milovidov). - Se corrige la excepción
Pipeline stuckenINSERT SELECT FINALcuandoSELECT(max_threads>1) tiene varios streams, peroINSERTsolo tiene uno (max_insert_threads==0). #11455 (Azat Khuzhin). - Corrige resultados incorrectos en consultas como
select count() from t, u. #11454 (Artem Zuikov). - Corregido el tamaño comprimido devuelto para los codecs. #11448 (Nikolai Kochetov).
- Se corrige un fallo del servidor cuando una columna tiene un códec de compresión con argumentos no literales. Soluciona #11365. #11431 (alesapin).
- Se corrige una posible lectura de memoria sin inicializar durante el apagado de MergeTree si la tabla no se creó correctamente. #11420 (alexey-milovidov).
- Se corrige un cierre inesperado en JOIN con
LowCarinality(T)yNullable(T). #11380. #11414 (Artem Zuikov). - Corrige el código de error al usar una clave
USINGincorrecta. #11373. #11404 (Artem Zuikov). - Se corrigió
geohashesInBoxpara argumentos fuera del rango de latitud/longitud. #11403 (Vasily Nemkov). - Mejores mensajes de error para las funciones
joinGet(). #11389 (Artem Zuikov). - Corrige un posible error
Pipeline stucken consultas con ordenación externa y LIMIT. Soluciona #11359. #11366 (Nikolai Kochetov). - Se elimina el bloqueo redundante durante el envío de partes en ReplicatedMergeTree. #11354 (alesapin).
- Se corrigió el soporte de
\G(salida vertical) en clickhouse-client en modo multilínea. Esto cierra #9933. #11350 (alexey-milovidov). - Corrige un posible error de segmentación al usar la base de datos
Lazy. #11348 (alexey-milovidov). - Se corrige un fallo en las selecciones directas del motor de tabla
Join(sin JOIN) y la nulabilidad incorrecta. #11340 (Artem Zuikov). - Se ha corregido un fallo en
quantilesExactWeightedArray. #11337 (Nikolai Kochetov). - Ahora las fusiones se detienen antes de modificar los metadatos en las consultas
ALTER. #11335 (alesapin). - Vuelve a permitir la escritura en paralelo en
MATERIALIZED VIEWcon la configuraciónparallel_view_processing = 1. Corrige #10241. #11330 (Nikolai Kochetov). - Se corrigió
visitParamExtractRawcuando el JSON extraído contiene cadenas con { o [ desbalanceados. #11318 (Ewout). - Soluciona una condición de carrera muy poco frecuente en ThreadPool. #11314 (alexey-milovidov).
- Se corrigió una condición de carrera de datos menor en
clickhouse-copier. Detectada por las pruebas de integración. #11313 (alexey-milovidov). - Corrige un posible problema de memoria sin inicializar en la conversión. Ejemplo:
SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov). - Se corrige el problema por el que el análisis de índices no puede funcionar si una tabla tiene una columna Array en la clave primaria y una consulta filtra por esta columna con las funciones
emptyonotEmpty. Esto corrige #11286. #11303 (alexey-milovidov). - Se corrige un error por el que la estimación de la velocidad de la consulta podía ser incorrecta y el límite de
min_execution_speedpodía no funcionar o funcionar incorrectamente si la consulta estaba limitada por los ajustesmax_network_bandwidth,max_execution_speedopriority. Se cambia el valor predeterminado detimeout_before_checking_execution_speeda un valor distinto de cero, porque de lo contrario los ajustesmin_execution_speedymax_execution_speedno tienen efecto. Esto corrige #11297. Esto corrige #5732. Esto corrige #6228. Mejora de usabilidad: evitar la concatenación del mensaje de excepción con la barra de progreso enclickhouse-client. #11296 (alexey-milovidov). - Se corrige el fallo que se producía al llamar a
SET DEFAULT ROLEcon argumentos incorrectos. Esto corrige #10586. #11278 (Vitaly Baranov). - Corrige un fallo al leer datos malformados en formato
Protobuf. Se corrigen #5957 y #11203. #11258 (Vitaly Baranov). - Se corrigió un error por el que el diccionario
cachepodía devolver el valor predeterminado en lugar del valor normal (cuando solo hay claves caducadas). Esto afecta únicamente a los campos String. #11233 (Nikita Mikhaylov). - Corrige el error
Block structure mismatch in QueryPipelineal leer deVIEWcon constantes en la consulta interna. Soluciona #11181. #11205 (Nikolai Kochetov). - Se corrige una posible excepción
Invalid status for associated output. #11200 (Nikolai Kochetov). - Ahora se comprobará si
primary.idxestá definido en la consultaCREATE. #11199 (alesapin). - Se soluciona el posible error
Cannot capture columnen funciones de orden superior con el argumento capturadoArray(Array(LowCardinality)). #11185 (Nikolai Kochetov). - Se corrigió el
globbingdeS3, que podía fallar cuando había más de 1000 claves y en algunos backends. #11179 (Vladimir Chebotarev). - Si el índice de omisión de datos depende de columnas que se van a modificar durante el merge en segundo plano (para SummingMergeTree, AggregatingMergeTree, así como para TTL GROUP BY), se calculaba incorrectamente. Este problema se ha corregido moviendo el cálculo del índice después del merge, de modo que el índice se calcule sobre los datos ya fusionados. #11162 (Azat Khuzhin).
- Corrección del bloqueo que a veces se producía durante el DROP de una tabla con engine=Kafka (o durante los reinicios del servidor). #11145 (filimonov).
- Corrige la reserva excesiva de hilos para consultas simples (optimización para reducir el número de hilos, que se rompió parcialmente tras cambios en el pipeline). #11114 (Azat Khuzhin).
- Eliminar el logging de la tarea de finalización de mutation cuando no se finaliza nada. #11109 (alesapin).
- Se corrigió un bloqueo mutuo durante el inicio del servidor después de una actualización con cambios en la estructura de las tablas de registro del sistema. #11106 (alesapin).
- Se solucionó una fuga de memoria en registerDiskS3. #11074 (Pavel Kovalenko).
- Se corrigió el error
No such name in Block::erase()cuando JOIN aparece con PREWHERE o cuandooptimize_move_to_prewheregenera PREWHERE a partir de WHERE. #11051 (Artem Zuikov). - Corrige la posible omisión de datos al finalizar una tabla con motor Kafka. #11048 (filimonov).
- Se corrigieron errores en la resolución de argumentos de parseDateTime64BestEffort. #10925. #11038 (Vasily Nemkov).
- Ahora es posible
ADD/DROPyRENAMEsobre una misma columna en una sola consultaALTER. El mensaje de excepción paraMODIFYyRENAMEsimultáneos es ahora más claro. Corrige parcialmente #10669. #11037 (alesapin). - Se corrigió el análisis sintáctico de las URL de S3. #11036 (Vladimir Chebotarev).
- Se corrige la contabilización de memoria para
GROUP BYde dos niveles cuando hay unLIMIT. #11022 (Azat Khuzhin). - Se corrige un error potencial de use-after-free, muy poco frecuente, en MergeTree si la tabla no se creó correctamente. #10986 (alexey-milovidov).
- Se corrigió la gestión de los metadatos (ruta relativa para
rename) y de los datos (ruta relativa parasymlink) para la base de datos Atomic. #10980 (Azat Khuzhin). - Se corrige el fallo del servidor al ejecutar consultas concurrentes
ALTERyDROP DATABASEcon el motor de base de datosAtomic. #10968 (tavplubix). - Corrige el tamaño incorrecto de los datos en bruto en el método getRawData(). #10964 (Igr).
- Se corrige la incompatibilidad de la agregación en dos niveles entre la versión 20.1 y las versiones anteriores. Esta incompatibilidad se produce cuando se usan versiones distintas de ClickHouse en el nodo iniciador y en los nodos remotos, el resultado de
GROUP BYes grande y la agregación se realiza sobre un único campo String. Esto da lugar a varias filas sin fusionar para una misma clave en el resultado. #10952 (alexey-milovidov). - Evitar que
DistributedBlockOutputStreamenvíe archivos parcialmente escritos. #10940 (Azat Khuzhin). - Se corrige un cierre inesperado en
SELECT count(notNullIn(NULL, [])). #10920 (Nikolai Kochetov). - Corrección de un bloqueo que se producía ocasionalmente durante el DROP de una tabla con engine=Kafka (o durante los reinicios del servidor). #10910 (filimonov).
- Ahora es posible ejecutar varios
ALTER RENAME, comoa TO b, c TO a. #10895 (alesapin). - Se corrige una posible condición de carrera que podía producirse al obtener el resultado a partir del estado de una función de agregación desde varios hilos para la misma columna. La única forma (que he encontrado) en la que esto puede ocurrir es al usar la función
finalizeAggregationmientras se lee de una tabla con el motorMemory, que almacena el estado deAggregateFunctionpara la funciónquanite*. #10890 (Nikolai Kochetov). - Se corrigió la compatibilidad con versiones anteriores de las tuplas en las tablas distribuidas. #10889 (Anton Popov).
- Se corrige SIGSEGV en StringHashTable (si dicha clave no existe). #10870 (Azat Khuzhin).
- Se corrigieron los cuelgues de
WATCHdespués de eliminar la tablaLiveViewde la base de datos con el motorAtomic. #10859 (tavplubix). - Se corrigió un error en
ReplicatedMergeTreeque podía hacer que algunosALTERsobre la consultaOPTIMIZEquedaran bloqueados esperando a alguna réplica después de que esta pasara a estar inactiva. #10849 (tavplubix). - Ahora las restricciones se actualizan si se ha cambiado el nombre de la columna que participa en la expresión
CONSTRAINT. Corrige #10844. #10847 (alesapin). - Se corrige una posible lectura de memoria no inicializada en el diccionario de caché. #10834 (alexey-milovidov).
- Se corrige el orden de las columnas después de Block::sortColumns() (también se añade una prueba que muestra que esto afecta a un caso de uso real: el motor Buffer). #10826 (Azat Khuzhin).
- Soluciona el problema con ODBC bridge cuando no se solicita el uso de comillas en los identificadores. Esto corrige #7984. #10821 (alexey-milovidov).
- Se corrigieron los informes de UBSan y MSan en DateLUT. #10798 (alexey-milovidov).
- Utiliza
src_typepara convertir correctamente los tipos en las condiciones de clave. Corrige #6287. #10791 (Andrew Onyshchuk). - Eliminar los parches obsoletos de libunwind. https://github.com/ClickHouse-Extras/libunwind/commit/500aa227911bd185a94bfc071d68f4d3b03cb3b1#r39048012 Esto permite desactivar
-fno-omit-frame-pointeren las compilaciones declang, lo que mejora el rendimiento al menos en un 1% de media. #10761 (Amos Bird). - Se corrige
avgWeightedal usar un peso de punto flotante en varios segmentos. #10758 (Baudouin Giard). - Corregido el comportamiento de
parallel_view_processing. Ahora, todas las inserciones enMATERIALIZED VIEWdeben completarse, incluso si se produce una excepción. Corrige #10241. #10757 (Nikolai Kochetov). - Se corrigió el combinador -OrNull y -OrDefault cuando se combina con -State. #10741 (hcz).
- Se corrige un fallo en
generateRandomcon tipos anidados. Corrige #10583. #10734 (Nikolai Kochetov). - Se corrige la corrupción de datos en la columna clave
LowCardinality(FixedString)deSummingMergeTree, que podría haberse producido después de una fusión. Corrige #10489. #10721 (Nikolai Kochetov). - Se corrigió el uso de la clave primaria dentro de una función con el modificador ‘FINAL’ y la optimización ‘ORDER BY’. #10715 (Anton Popov).
- Se corrigió un posible desbordamiento de búfer en la función
h3EdgeAngle. #10711 (alexey-milovidov). - Corrige la desaparición de los totales. Los totales podían haberse filtrado si la consulta tenía un join o una subconsulta con una condición WHERE externa. Corrige #10674. #10698 (Nikolai Kochetov).
- Se corrige la atomicidad de
HTTP insert. Esto corrige #9666. #10687 (Andrew Onyshchuk). - Corregido el uso múltiple del operador
INcon el mismo conjunto en una misma consulta. #10686 (Anton Popov). - Se corrigió un error que provocaba que las solicitudes HTTP se quedaran bloqueadas al cerrar el cliente cuando
readonly=2ycancel_http_readonly_queries_on_client_close=1. Corrige #7939, #7019, #7736, #7091. #10684 (tavplubix). - Se corrigió el orden de los parámetros en el constructor de AggregateTransform. #10667 (palasonic1).
- Se corrige la ausencia de ejecución en paralelo de consultas remotas con
distributed_aggregation_memory_efficienthabilitado. Corrige #10655. #10664 (Nikolai Kochetov). - Corrige un posible número incorrecto de filas en consultas con
LIMIT. Corrige #10566, #10709. #10660 (Nikolai Kochetov). - Se corrigió un error que bloqueaba las operaciones ALTER concurrentes cuando la tabla tiene muchas partes. #10659 (alesapin).
- Corrige la desreferenciación de nullptr en StorageBuffer si el servidor se había apagado antes de que se iniciara la tabla. #10641 (alexey-milovidov).
- Se corrige la optimización de predicados para consultas distribuidas (
enable_optimize_predicate_expression=1) en consultas con la secciónHAVING(es decir, cuando es necesario filtrar en el servidor iniciador), preservando el orden de las expresiones (y esto basta para corregirlo), y también se obliga al agregador a usar nombres de columnas en lugar de índices. Correcciones: #10613, #11413. #10621 (Azat Khuzhin). - Se corrige optimize_skip_unused_shards con LowCardinality. #10611 (Azat Khuzhin).
- Corrige un fallo de segmentación en StorageBuffer cuando se produce una excepción durante el arranque del servidor. Corrige #10550. #10609 (tavplubix).
- La consulta
SYSTEM DROP DNS CACHEahora también elimina las cachés que se usan para comprobar si el usuario puede conectarse desde determinadas direcciones IP. #10608 (tavplubix). - Se corrigieron resultados escalares incorrectos dentro de la subconsulta de
MATERIALIZED VIEWen caso de que contuviera una tabla dependiente. #10603 (Nikolai Kochetov). - Se corrigió el manejo de la variable de condición para las mutaciones sincrónicas. En algunos casos, las señales enviadas a esa variable de condición podían perderse. #10588 (Vladimir Chebotarev).
- Corrige un posible cierre inesperado cuando se llama a
createDictionary()antes de queloadStoredObject()haya finalizado. #10587 (Vitaly Baranov). - Se ha corregido el error
the BloomFilter false positive must be a double number between 0 and 1#10551. #10569 (Winter Zhang). - Se corrige el SELECT de la columna ALIAS cuyo tipo de expresión predeterminada es diferente del tipo de la columna. #10563 (Azat Khuzhin).
- Se implementó la comparación entre valores de DateTime64 y String (igual que para DateTime). #10560 (Vasily Nemkov).
- Se corrige la corrupción del índice, que puede producirse en algunos casos tras fusionar partes compactas en otra parte compacta. #10531 (Anton Popov).
- Deshabilitar de forma predeterminada la optimización de GROUP BY por clave de sharding (
optimize_distributed_group_by_sharding_keyse había introducido y dejado desactivado de forma predeterminada debido a las complejidades del análisis de sharding_key; un ejemplo sencillo esifen la clave de sharding) y corregirla para WITH ROLLUP/CUBE/TOTALS. #10516 (Azat Khuzhin). - Corrige: #10263 (después de ese PR, el envío dist mediante
INSERTse posponía en cadaINSERT) Corrige: #8756 (ese PR rompe los envíos distribuidos cuando se cumplen todas las condiciones siguientes (una configuración poco probable por ahora, supongo):internal_replication == false, varios segmentos locales (activa el código de hardlinking) ydistributed_storage_policy(hace quelink(2)falle conEXDEV)). #10486 (Azat Khuzhin). - Se corrigió un error con el límite de “max_rows_to_sort”. #10268 (alexey-milovidov).
- Obtener el diccionario y comprobar los permisos de acceso solo una vez por cada llamada a cualquier función que lea diccionarios externos. #10928 (Vitaly Baranov).
Mejora
- Aplica
TTLa los datos antiguos después de la consultaALTER MODIFY TTL. Este comportamiento está controlado por la configuraciónmaterialize_ttl_after_modify, que está habilitada de forma predeterminada. #11042 (Anton Popov). - Al analizar secuencias de escape con barra invertida de estilo C en literales de cadena, VALUES y varios formatos de texto (esta es una extensión del estándar SQL propia de ClickHouse y MySQL), se conserva la barra invertida si se encuentra una secuencia de escape desconocida (p. ej.,
\%o\w), lo que hace que el uso deLIKEymatchsea más cómodo (basta con escribirname LIKE 'used\_cars'en lugar dename LIKE 'used\\_cars') y, al mismo tiempo, más compatible. Esto corrige #10922. #11208 (alexey-milovidov). - Al leer un valor Decimal, se recortan los dígitos adicionales después del punto. Este comportamiento es más compatible con MySQL y PostgreSQL. Esto corrige #10202. #11831 (alexey-milovidov).
- Permite hacer DROP de una tabla replicada si los metadatos de ZooKeeper ya se eliminaron y no existen (este también es el caso cuando se usa TestKeeper para pruebas y se reinicia el servidor). Permite hacer RENAME de una tabla replicada incluso si hay un error al comunicarse con ZooKeeper. Esto corrige #10720. #11652 (alexey-milovidov).
- Mejora leve en el diagnóstico al leer valores decimales desde una cadena. Esto cierra #10202. #11829 (alexey-milovidov).
- Corregida la invocación de sleep en el handler de señales. Dormía menos tiempo del esperado. #11825 (alexey-milovidov).
- (Solo en Linux) Las métricas de rendimiento del SO (para CPU y E/S) funcionarán incluso sin la capacidad
CAP_NET_ADMIN. #10544 (Alexander Kazakov). - Se añadió
hostnamecomo alias de la funciónhostName. Esta función fue sugerida por Victor Tarnavskiy, de Yandex.Metrica. #11821 (alexey-milovidov). - Se añadió compatibilidad con
DDLdistribuido (update/delete/drop partition) en clústeres con replicación cruzada. #11703 (Nikita Mikhaylov). - Emitir una advertencia en lugar de un error en el registro del servidor al iniciarse si no se puede escuchar en una de las direcciones configuradas para la escucha (p. ej., IPv6 no está disponible dentro de Docker). Tenga en cuenta que, si el servidor no puede escuchar en ninguna de las direcciones indicadas, se negará a iniciarse como antes. Esto corrige #4406. #11687 (alexey-milovidov).
- Creación del usuario y la base de datos predeterminados al iniciar la imagen de Docker. #10637 (Paramtamtam).
- Cuando se imprime una consulta multilínea en el registro del servidor, las líneas se unen. Se hace que esto funcione correctamente en el caso de literales de cadena multilínea, identificadores y comentarios de una sola línea. Esto corrige #3853. #11686 (alexey-milovidov).
- Ahora se admiten varios nombres en los comandos: CREATE USER, CREATE ROLE, ALTER USER, SHOW CREATE USER, SHOW GRANTS, entre otros. #11670 (Vitaly Baranov).
- Se añadió soporte para distributed DDL (
UPDATE/DELETE/DROP PARTITION) en clústeres con replicación cruzada. #11508 (frank lee). - Se elimina la contraseña de la línea de comandos en
clickhouse-clientyclickhouse-benchmarksi el usuario la ha especificado con un valor explícito. Esto evita que la contraseña quede expuesta a través depsy herramientas similares. #11665 (alexey-milovidov). - No use la información de depuración del archivo ELF si no corresponde al binario en ejecución. Esto es necesario para evitar que se impriman nombres de funciones y ubicaciones en el código fuente incorrectos en las trazas de pila. Esto corrige #7514. #11657 (alexey-milovidov).
- Devolver NULL/cero cuando el valor no se puede interpretar por completo en las funciones parseDateTimeBestEffortOrNull/Zero. Esto corrige #7876. #11653 (alexey-milovidov).
- Omite los parámetros vacíos de la URL solicitada. Pueden aparecer cuando escribes
http://localhost:8123/?&a=bohttp://localhost:8123/?a=b&&c=d. Esto corrige #10749. #11651 (alexey-milovidov). - Permitir el uso de
groupArrayArrayygroupUniqArrayArraycomoSimpleAggregateFunction. #11650 (Volodymyr Kuznetsov). - Se permite la comparación con cadenas constantes mediante conversiones implícitas al analizar condiciones de índice de otros tipos. Esto puede cerrar #11630. #11648 (alexey-milovidov).
- https://github.com/ClickHouse/ClickHouse/pull/7572#issuecomment-642815377 Se admite la configuración predeterminada de HTTPHandlers. #11628 (Winter Zhang).
- Permitir que más formatos de entrada funcionen con el motor Kafka. Corregir el problema de los volcados prematuros. Corregir el problema de rendimiento cuando
kafka_num_consumerses mayor que el número de particiones del topic. #11599 (filimonov). - Mejora la lógica de
multiple_joins_rewriter_version=2. Corrige el error de columnas desconocidas en los alias lambda. #11587 (Artem Zuikov). - Mejor mensaje de excepción cuando no se puede interpretar la lista de declaraciones de columnas. Esto cierra #10403. #11537 (alexey-milovidov).
- Se mejora la lógica de
enable_optimize_predicate_expression=1para VIEW. #11513 (Artem Zuikov). - Se añadió compatibilidad con PREWHERE en las tablas live view. #11495 (vzakaznikov).
- Actualizar automáticamente la caché de DNS, que se utiliza para comprobar si se permite al usuario conectarse desde una dirección. #11487 (tavplubix).
- OPTIMIZE FINAL forzará la fusión incluso si ya se están realizando fusiones concurrentes. Esto cierra #11309 y #11322. #11346 (alexey-milovidov).
- Suprime la salida de las consultas canceladas en clickhouse-client. En versiones anteriores, el resultado podía seguir mostrándose en la terminal incluso después de pulsar Ctrl+C para cancelar la consulta. Esto cierra #9473. #11342 (alexey-milovidov).
- Ahora, el archivo de historial se actualiza después de cada consulta y no se produce ninguna condición de carrera si varios clientes usan el mismo archivo de historial. Esto corrige #9897. #11453 (Tagir Kuskarov).
- Mejores mensajes de registro durante la recarga de la configuración. #11341 (alexey-milovidov).
- Se eliminan los espacios en blanco finales de las consultas con formato en
clickhouse-clientoclickhouse-formaten algunos casos. #11325 (alexey-milovidov). - Añadida la configuración “output_format_pretty_max_value_width”. Si el valor es más largo, se truncará para evitar que se muestren valores demasiado grandes en la terminal. Esto cierra #11140. #11324 (alexey-milovidov).
- Mejor mensaje de excepción cuando hay escasez de mapeos de memoria. Esto cierra #11027. #11316 (alexey-milovidov).
- Admite (U)Int8, (U)Int16 y Date en ASOF JOIN. #11301 (Artem Zuikov).
- Se admite el parámetro kafka_client_id para las tablas de Kafka. También se cambia el valor predeterminado de
client.idque usa ClickHouse al comunicarse con Kafka para que sea más descriptivo y útil. #11252 (filimonov). - Se mantiene el valor de la métrica
DistributedFilesToInserten caso de excepciones. En versiones anteriores, el valor se establecía cuando se iban a enviar algunos archivos, pero era cero si se producía una excepción y aún quedaban archivos pendientes. Ahora corresponde al número de archivos pendientes en el sistema de archivos. #11220 (alexey-milovidov). - Se añadió compatibilidad con nombres de tipos de datos de varias palabras (como
DOUBLE PRECISIONyCHAR VARYING) para mejorar la compatibilidad con SQL. #11214 (Павел Потемкин). - Se añaden sinónimos para algunos tipos de datos. #10856 (Павел Потемкин).
- El registro de consultas ahora viene habilitado de forma predeterminada. #11184 (Ivan Blinkov).
- Mostrar el tipo de autenticación en la tabla system.users y durante la ejecución de la consulta SHOW CREATE USER. #11080 (Vitaly Baranov).
- Elimina los datos al ejecutar un
DROP DATABASEexplícito para el motor de base de datosMemory. Corrige #10557. #11021 (tavplubix). - Establece nombres para los hilos internos de la biblioteca rdkafka. Hace que los logs de rdkafka estén disponibles en los logs del servidor. #10983 (Azat Khuzhin).
- Compatibilidad con espacios en blanco Unicode en las consultas. Esto resulta útil cuando las consultas se copian y pegan desde Word o desde una página web. Esto corrige #10896. #10903 (alexey-milovidov).
- Se permiten tipos UInt de gran tamaño como índice en la función
tupleElement. #10874 (hcz). - Respetar prefer_localhost_replica/load_balancing al hacer INSERT en Distributed. #10867 (Azat Khuzhin).
- Se introducen los ajustes
min_insert_block_size_rows_for_materialized_viewsymin_insert_block_size_bytes_for_materialized_views. Estos ajustes son similares amin_insert_block_size_rowsymin_insert_block_size_bytes, pero se aplican solo a los bloques que se insertan enMATERIALIZED VIEW. Esto ayuda a controlar la compactación de bloques al enviarlos a las MV y a evitar un uso excesivo de memoria. #10858 (Azat Khuzhin). - Eliminar la excepción de la cola replicada durante el apagado del servidor. Corrige #10819. #10841 (alesapin).
- Garantiza que
varSampyvarPopno puedan devolver resultados negativos debido a errores numéricos, y questddevSampystddevPopno puedan calcularse a partir de una varianza negativa. Esto corrige #10532. #10829 (alexey-milovidov). - Mejorado el mensaje de excepción de DNS. Esto corrige #10813. #10828 (alexey-milovidov).
- Cambia el código de respuesta HTTP a 400 Bad Request en caso de algunos errores de análisis. Esta corrección soluciona #10636. #10640 (alexey-milovidov).
- Mostrar un mensaje si clickhouse-client es más reciente que clickhouse-server. #10627 (alexey-milovidov).
- Se añadió soporte para la consulta
INSERT INTO [db.]table WATCH. #10498 (vzakaznikov). - Se permite pasar quota_key en clickhouse-client. Esto cierra #10227. #10270 (alexey-milovidov).
Mejora de rendimiento
- Permite que varias réplicas asignen de forma concurrente fusiones, mutaciones y operaciones de eliminación, movimiento y reemplazo de particiones. Esto cierra #10367. #11639 (alexey-milovidov) #11795 (alexey-milovidov).
- Optimización de GROUP BY con respecto a la clave de ordenación de la tabla, activada mediante la configuración
optimize_aggregation_in_order. #9113 (dimarub2000). - Las consultas SELECT con FINAL se ejecutan en paralelo. Se añadió el ajuste
max_final_threadspara limitar el número de hilos utilizados. #10463 (Nikolai Kochetov). - Mejora el rendimiento de las consultas INSERT mediante
INSERT SELECTo de INSERT con clickhouse-client cuando se generan bloques pequeños (un caso típico con análisis sintáctico en paralelo). Esto corrige #11275. Corrige el problema por el que las CONSTRAINT no funcionaban para los campos DEFAULT. Esto corrige #11273. Corrige el problema por el que las CONSTRAINTS se ignoraban en las tablas TEMPORARY. Esto corrige #11274. #11276 (alexey-milovidov). - Optimización que elimina las funciones de agregación min/max/any de las claves de GROUP BY en la cláusula SELECT, habilitada con la opción
optimize_aggregators_of_group_by_keys. #11667 (xPoSx). #11806 (Azat Khuzhin). - Nueva optimización que extrae todas las operaciones de la función
any, habilitada medianteoptimize_move_functions_out_of_any#11529 (Ruslan). - Mejora el rendimiento de
clickhouse-clienten modo interactivo cuando se usan formatos Pretty. En versiones anteriores, podía dedicarse una cantidad considerable de tiempo a calcular el ancho visible de una cadena UTF-8. Esto cierra #11323. #11323 (alexey-milovidov). - Mejora del rendimiento de las consultas con
ORDER BYy unLIMITpequeño (menor quemax_block_size). #11171 (Albert Kidrachev). - Agregar detección de CPU en tiempo de ejecución para seleccionar y usar la mejor implementación de la función. Agregar compatibilidad con la generación de código para múltiples destinos. Esto cierra #1017. #10058 (DimasKovas).
- Habilita
mlockpara el binario de ClickHouse de forma predeterminada. Esto evitará que el ejecutable de ClickHouse se pagine al disco bajo una alta carga de E/S. #11139 (alexey-milovidov). - Las consultas con la función de agregación
sumy sin claves de GROUP BY ahora se ejecutan varias veces más rápido. #10992 (alexey-milovidov). - Mejora de la ordenación radix (utilizada en
ORDER BYcon claves simples) al eliminar algunos movimientos de datos redundantes. #10981 (Arslan Gumerov). - Ordena partes más grandes de la tabla izquierda en MergeJoin. Almacena en búfer los bloques de la izquierda en memoria. Añade el ajuste
partial_merge_join_left_table_buffer_bytespara gestionar el tamaño de los búferes de los bloques de la izquierda. #10601 (Artem Zuikov). - Elimina los
ORDER BYyDISTINCTduplicados de las subconsultas; esta optimización se habilita conoptimize_duplicate_order_by_and_distinct#10067 (Mikhail Malafeev). - Esta funcionalidad elimina las funciones de otras claves en la sección GROUP BY; se habilita con
optimize_group_by_function_keys#10051 (xPoSx). - Nueva optimización que extrae las operaciones aritméticas de las funciones de agregación, activada con
optimize_arithmetic_operations_in_aggregate_functions#10047 (Ruslan). - Se utiliza el cliente HTTP para S3 basado en Poco en lugar de curl. Esto mejorará el rendimiento y reducirá el uso de memoria del almacenamiento S3 y de las funciones de tabla. #11230 (Pavel Kovalenko).
- Se corrige un problema de rendimiento de Kafka relacionado con las reprogramaciones en función de los límites, que se aplicaban siempre. #11149 (filimonov).
- Se habilita percpu_arena:percpu para jemalloc (esto reducirá la fragmentación de memoria causada por el pool de hilos). #11084 (Azat Khuzhin).
- Se optimiza el uso de memoria al leer una respuesta de un cliente HTTP de S3. #11561 (Pavel Kovalenko).
- Ajustar la configuración predeterminada de Kafka para mejorar el rendimiento. #11388 (filimonov).
Funcionalidad experimental
- Se añaden el tipo de datos
Point(Tuple(Float64, Float64)) yPolygon(Array(Array(Tuple(Float64, Float64))). #10678 (Alexey Ilyukhov). - Se añade una función
hasSubstrque permite buscar subsecuencias en arrays. Nota: es probable que esta función cambie de nombre sin previo aviso. #11071 (Ryad Zenine). - Se añadió compatibilidad con OpenCL y el algoritmo de ordenación bitonic, que puede usarse para ordenar tipos de datos enteros en una sola columna. Debe compilarse con la opción
-DENABLE_OPENCL=1. Para usar el algoritmo de ordenación bitonic en lugar de otros, debe establecerbitonic_sorten la opciónspecial_sortde la configuración y asegurarse de que OpenCL esté disponible. Esta funcionalidad no mejora el rendimiento ni ningún otro aspecto; se proporciona únicamente como ejemplo y con fines de demostración. Es probable que se elimine en un futuro próximo si no se sigue desarrollando en esta dirección. #10232 (Ri).
Mejora de compilación/pruebas/empaquetado
- Se habilita clang-tidy para programas y utilidades. #10991 (alexey-milovidov).
- Eliminar la dependencia de
tzdata: no producir un error si el directorio/usr/share/zoneinfono existe. Tenga en cuenta que todas las zonas horarias funcionan en ClickHouse incluso sin quetzdataesté instalado en el sistema. #11827 (alexey-milovidov). - Se añadieron pruebas de estrés con MSan y UBSan. Tenga en cuenta que ya contamos con MSan y UBSan para las pruebas funcionales, y que la prueba “de estrés” es otro tipo de prueba. #10871 (alexey-milovidov).
- Imprimir el ID de compilación del compilador en los mensajes de fallo. Esto nos dará algo más de certeza sobre qué binario falló. Se añadió la nueva función
buildId. #11824 (alexey-milovidov). - Se añadió una prueba para garantizar que las mutaciones sigan funcionando tras la consulta FREEZE. #11820 (alexey-milovidov).
- No permitir pruebas con la subcadena “fail” en sus nombres, ya que hace menos cómodo revisar los resultados de las pruebas en el navegador al pulsar Ctrl+F y buscar “fail”. #11817 (alexey-milovidov).
- Se eliminan las importaciones no utilizadas de HTTPHandlerFactory. #11660 (Bharat Nallan).
- Se añadió un muestreo aleatorio de las instancias en las que se ejecuta copier. Es necesario para evitar el error
Too many simultaneous queries. También se aumentó el timeout y se redujo la probabilidad de fallo. #11573 (Nikita Mikhaylov). - Corrige un include omitido. #11525 (Matwey V. Kornilov).
- Se aceleró la compilación al eliminar programas de ejemplo antiguos. También se encontró una prueba funcional huérfana. #11486 (alexey-milovidov).
- Aumentar el tamaño de
ccachepara las compilaciones en CI. #11450 (alesapin). - Dejar solo unit_tests_dbms en la compilación de deb. #11429 (Ilya Yatsishin).
- Actualización de librdkafka a la versión 1.4.2. #11256 (filimonov).
- Se refactorizaron los archivos de compilación de CMake. #11390 (Ivan).
- Se corrigen varias pruebas de integración inestables. #11355 (alesapin).
- Se añadió soporte para ejecutar pruebas unitarias con UBSan. #11345 (alexey-milovidov).
- Se elimina el timeout redundante de la prueba de integración
test_insertion_sync_fails_with_timeout. #11343 (alesapin). - Mejora de la comprobación de consultas colgadas en clickhouse-test. #11321 (alexey-milovidov).
- Emitir una advertencia si el servidor se compiló en modo de depuración o con sanitizadores. #11304 (alexey-milovidov).
- Ahora clickhouse-test comprueba si el servidor está activo antes de ejecutar las pruebas. #11285 (alesapin).
- Corrige la prueba potencialmente inestable
00731_long_merge_tree_select_opened_files.sh. No falla con frecuencia, pero hemos detectado una posible condición de carrera en esta prueba mientras experimentábamos con ThreadFuzzer: #9814. Consulta el enlace para ver un ejemplo. #11270 (alexey-milovidov). - Repetir la prueba en CI si la ejecución de
curlsuperó el tiempo de espera. Esto puede ocurrir debido a bloqueos del sistema de más de 10 segundos, algo típico en nuestra infraestructura de CI. Esto corrige #11267. #11268 (alexey-milovidov). - Se añade una prueba para el motor de tabla Join de @donmikel. Esto cierra #9158. #11265 (alexey-milovidov).
- Se corrigen varios errores menores en las pruebas unitarias. #11262 (alesapin).
- Ahora las partes del comando del enlazador correspondientes a la biblioteca
cctzno se mezclarán con las de otras bibliotecas. #11213 (alesapin). - Se dividió /programs/server en el programa propiamente dicho y la biblioteca. #11186 (Ivan).
- Se mejoraron los scripts de compilación para protobuf & gRPC. #11172 (Vitaly Baranov).
- Se habilita la prueba de rendimiento que no funcionaba. #11158 (alexey-milovidov).
- Crear el bucket raíz de S3 para las pruebas antes de iniciar cualquier instancia de CH. #11142 (Pavel Kovalenko).
- Agregar una prueba de rendimiento para polígonos no constantes. #11141 (alexey-milovidov).
- Se corrige la prueba
00979_live_view_watch_continuous_aggregates. #11024 (vzakaznikov). - Añadida la posibilidad de ejecutar ZooKeeper en pruebas de integración sobre tmpfs. #11002 (alesapin).
- Esperar a
odbc-bridgecon backoff exponencial. El tiempo de espera anterior de 200 ms no era suficiente en nuestro entorno de CI. #10990 (alexey-milovidov). - Se corrigió una prueba no determinista. #10989 (alexey-milovidov).
- Se añadió una prueba para datos externos vacíos. #10926 (alexey-milovidov).
- La base de datos se recrea en cada prueba. Esto mejora el aislamiento entre pruebas. #10902 (alexey-milovidov).
- Se añadieron más aserciones al código de columnas. #10833 (alexey-milovidov).
- Mejor integración con los sanitizadores. Se imprime información sobre query_id en el mensaje de error del sanitizador. #10832 (alexey-milovidov).
- Se corrige una obvia condición de carrera en la comprobación “Split build smoke test”. #10820 (alexey-milovidov).
- Se corrige un informe (falso) de MSan en MergeTreeIndexFullText. El problema apareció por primera vez en #9968. #10801 (alexey-milovidov).
- Se añadió una supresión de MSan para la biblioteca cliente de MariaDB. #10800 (alexey-milovidov).
- make de GRPC no encontraba los archivos protobuf; se corrigió el Makefile añadiendo el enlace correcto. #10794 (mnkonkova).
- Habilitar advertencias adicionales (
-Weverything) para base, utils y programs. Tenga en cuenta que ya está habilitado en la mayor parte del código. #10779 (alexey-milovidov). - Las supresiones de advertencias de las bibliotecas se declararon erróneamente como públicas en #10396. #10776 (alexey-milovidov).
- Se restauró un parche que se había eliminado accidentalmente en #10396. #10774 (alexey-milovidov).
- Se corrigen errores en las pruebas de rendimiento, parte 2. #10773 (alexey-milovidov).
- Se corrigieron errores en las pruebas de rendimiento. #10766 (alexey-milovidov).
- Se actualizan las compilaciones cruzadas para usar el compilador clang-10. #10724 (Ivan).
- Se actualizaron las instrucciones para instalar paquetes RPM. Denis (usuario de TG @ldviolet) sugirió este cambio y Arkady Shejn lo implementó. #10707 (alexey-milovidov).
- Se intenta corregir la prueba
tests/queries/0_stateless/01246_insert_into_watch_live_view.py. #10670 (vzakaznikov). - Corrección y reactivación de la prueba 00979_live_view_watch_continuous_aggregates.py. #10658 (vzakaznikov).
- Se soluciona el error OOM en la prueba de estrés de ASan. #10646 (alexey-milovidov).
- Se corrigió el informe de UBSan (al sumar cero a
nullptr) en HashTable, que apareció tras la migración a clang-10. #10638 (alexey-milovidov). - Se elimina la llamada externa al enlazador
ld(bfd) durante el procesamiento de tzdata en tiempo de compilación. #10634 (alesapin). - Se permite usar
lldpara enlazar blobs (recursos). #10632 (alexey-milovidov). - Se corrigió el error señalado por UBSan en la biblioteca
LZ4. #10631 (alexey-milovidov). Véase también https://github.com/lz4/lz4/issues/857 - Actualización de LZ4 a la rama de desarrollo más reciente. #10630 (alexey-milovidov).
- Se añadió un archivo autogenerado y legible por máquina con la lista de versiones estables. #10628 (alexey-milovidov).
- Se corrigió la comprobación de la versión de
capnprotoparacapnp::UnalignedFlatArrayMessageReader. #10618 (Matwey V. Kornilov). - Menor uso de memoria en las pruebas. #10617 (alexey-milovidov).
- Corrección de timeouts codificados de forma fija en las nuevas pruebas de live view. #10604 (vzakaznikov).
- Aumento del timeout al abrir un cliente en tests/queries/0_stateless/helpers/client.py. #10599 (vzakaznikov).
- Habilitar ThinLTO para las compilaciones con clang, continuación de #10435. #10585 (Amos Bird).
- Incorporación de fuzzers y preparación para la integración con oss-fuzz. #10546 (kyprizel).
- Corregida la compilación en FreeBSD. #10150 (Ivan).
- Se añadió una nueva compilación para las pruebas de consultas con el framework pytest. #10039 (Ivan).
Lanzamiento de ClickHouse v20.4
Lanzamiento de ClickHouse v20.4.8.99-stable 2020-08-10
Corrección de errores
- Se corrigió un error en la función
parseDateTimeBestEffortcuando se pasaba una marca de tiempo Unix como argumento. Esto soluciona #13362. #13441 (alexey-milovidov). - Se corrigieron un posible bajo rendimiento y resultados ligeramente incorrectos en
uniqExact,topK,sumDistincty funciones de agregado similares cuando se llamaban sobre tipos Float con valores NaN. Esto también provocaba una aserción en la compilación de depuración. Esto corrige #12491. #13254 (alexey-milovidov). - Se corrigió la función if con constexpr Nullable como cond que no es un NULL literal. Corrige #12463. #13226 (alexey-milovidov).
- Se corrigió un assert en la función
arrayElementen el caso de que los elementos del array sean Nullable y el subíndice del array también sea Nullable. Esto corrige #12172. #13224 (alexey-milovidov). - Se corrigió el análisis incorrecto de índices con funciones. Podía llevar a descartar partes incorrectas al leer de tablas
MergeTree. Corrige #13060. Corrige #12406. #13081 (Anton Popov). - Se eliminó la limitación innecesaria del número de hilos para las consultas
SELECTdesde la réplica local. #12840 (Nikolai Kochetov). - Se corrigió una posible fila de overflow adicional en los datos que podía aparecer en consultas
WITH TOTALS. #12747 (Nikolai Kochetov). - Se corrigió el problema de rendimiento con tuplas grandes, que se interpretaban como funciones en la cláusula
IN. Esto ocurría cuando el usuario escribíaWHERE x IN tuple(1, 2, ...)en lugar deWHERE x IN (1, 2, ...)por alguna razón poco clara. #12700 (Anton Popov). - Se corrigió el rastreo de memoria para
input_format_parallel_parsing(asociando el hilo al grupo). #12672 (Azat Khuzhin). - Se corrigió #12293 para permitir el push predicate cuando la subconsulta contiene una cláusula WITH. #12663 (Winter Zhang).
- Se corrigió #10572: el índice bloom filter con una expresión constante. #12659 (Winter Zhang).
- Se corrigió
SIGSEGVenStorageKafkacuando el broker no está disponible (y no solo en ese caso). #12658 (Azat Khuzhin). - Se añadió soporte para la función
ifcon argumentosArray(UUID). Esto corrige #11066. #12648 (alexey-milovidov). - Se corrigió una condición de carrera en los diccionarios externos con layout de caché que puede provocar que el servidor se bloquee. #12566 (alesapin).
- Se eliminaron los datos de las tablas Distributed (bloques de INSERT asíncronos) al ejecutar DROP TABLE. #12556 (Azat Khuzhin).
- Se corrigió un error que provocaba que las partes antiguas quedaran dañadas después de la consulta
ALTER DELETEcuandoenable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin). - Excepción mejorada para la función
incuando el número de argumentos no es válido. #12529 (Anton Popov). - Se corrigió un problema de rendimiento al leer partes compactas. #12492 (Anton Popov).
- Se corrigió un fallo en JOIN con diccionario cuando se hace el JOIN sobre una expresión de la clave del diccionario:
t JOIN dict ON expr(dict.id) = t.id. Se deshabilitó la optimización de JOIN con diccionario para este caso. #12458 (Artem Zuikov). - Se corrigió un posible fallo de segmentación en StorageMerge. Cierra #12054. #12401 (tavplubix).
- Se corrigió el orden de las columnas en el modificador
WITH FILL. Anteriormente, no se respetaba el orden de las columnas en la sentenciaORDER BY. #12306 (Anton Popov). - Se evita la excepción “bad cast” cuando hay una expresión que filtra datos por columnas virtuales (como
_tableen las tablasMerge) o por columnas de “índice” en tablas del sistema, como al filtrar por el nombre de la base de datos al consultarsystem.tables, y dicha expresión devuelve el tipoNullable. Esto corrige #12166. #12305 (alexey-milovidov). - Mostrar un error si TrieDictionary no se puede cargar. #12290 (Vitaly Baranov).
- La función
arrayFillfuncionaba incorrectamente con arrays vacíos, lo que podía provocar un fallo. Esto corrige #12263. #12279 (alexey-milovidov). - Se implementaron conversiones al tipo común para los tipos
LowCardinality. Esto permite ejecutar UNION ALL en tablas con columnasLowCardinalityy otras columnas. Esto corrige #8212. Esto corrige #4342. #12275 (alexey-milovidov). - Se corrigió el comportamiento por el cual, durante múltiples inserciones secuenciales en
StorageFile, el encabezado de algunos tipos especiales se escribía más de una vez. Con ello se corrige #6155. #12197 (Nikita Mikhaylov). - Se corrigieron las funciones lógicas para valores UInt8 cuando son distintos de 0 o 1. #12196 (Alexander Kazakov).
- Limita max_memory_usage* a la memoria residente del proceso. #12182 (Azat Khuzhin).
- Se corrigió la comprobación de los argumentos de
dictGetdurante la eliminación de funciones inyectivas en GROUP BY. #12179 (Azat Khuzhin). - No divida el nombre de la tabla de la fuente del diccionario en el esquema y el propio nombre de la tabla si la conexión ODBC no admite esquemas. #12165 (Vitaly Baranov).
- Se corrigió una lógica incorrecta en
ALTER DELETEque provocaba la eliminación de registros cuando la condición se evaluaba como NULL. Esto corrige #9088. Esto cierra #12106. #12153 (alexey-milovidov). - Se corrigió la transformación de la consulta que se envía a un SGBD externo (p. ej., MySQL, ODBC) en presencia de alias. Esto corrige #12032. #12151 (alexey-milovidov).
- Se corrigió un posible desbordamiento en la división entera. Esto soluciona #12119. #12140 (alexey-milovidov).
- Se solucionó un posible bucle infinito en
greatCircleDistance,geoDistance. Esto corrige #12117. #12137 (alexey-milovidov). - Normaliza el manejo del archivo “pid”. En versiones anteriores, el servidor podía negarse a iniciarse si se terminaba sin apagarse correctamente y existía otro proceso con el mismo pid que el servidor ejecutado previamente. Además, el archivo pid podía eliminarse durante un arranque fallido del servidor, incluso si había otro servidor en ejecución. Esto corrige #3501. #12133 (alexey-milovidov).
- Se corrigió la gestión de la dependencia de la tabla con ENGINE=Dictionary respecto del diccionario. Esto corrige #10994. Esto corrige #10397. #12116 (Vitaly Baranov).
- Se corrigió el rendimiento de las consultas
SELECTconUNION, afectado por un límite incorrecto del número total de hilos. Corrige #12030. #12103 (Nikolai Kochetov). - Se corrigió un fallo de segmentación en los combinadores
-StateResample. #12092 (Anton Popov). - Se corrigieron las métricas vacías
result_rowsyresult_bytesensystem.quey_logpara las consultas SELECT. Corrige #11595. #12089 (Nikolai Kochetov). - Se eliminó la limitación innecesaria del número de hilos para las consultas desde
VIEW. Corrige #11937. #12085 (Nikolai Kochetov). - Se corrigió un posible bloqueo al usar un tipo incorrecto en
PREWHERE. Soluciona #12053, #12060. #12060 (Nikolai Kochetov). - Se solucionó el error
Expected single dictionary argument for functionde la funcióndefaultValueOfArgumentTypecon el tipoLowCardinality. Corrige #11808. #12056 (Nikolai Kochetov). - Se corrigió el error
Cannot capture columnen funciones de orden superior con el argumentoTuple(LowCardinality). Soluciona #9766. #12055 (Nikolai Kochetov). - Analizar en paralelo los metadatos de las tablas al cargar la base de datos. Esto soluciona el arranque lento del servidor cuando hay una gran cantidad de tablas. #12045 (tavplubix).
- La función de agregación
topKahora devuelve Enum para los tipos Enum. Esto corrige #3740. #12043 (alexey-milovidov). - Se corrigió la comprobación de restricciones cuando la restricción es una expresión constante. Esto corrige #11360. #12042 (alexey-milovidov).
- Se corrigió una comparación incorrecta de tuplas con columnas
Nullable. Soluciona #11985. #12039 (Nikolai Kochetov). - Se corrigió el cálculo de los permisos de acceso cuando allow_introspection_functions=0. #12031 (Vitaly Baranov).
- Se corrigieron un resultado incorrecto y un posible bloqueo al invocar la función
ifcon argumentos de tipoFixedStringde distintos tamaños. Esto corrige #11362. #12021 (alexey-milovidov). - Una consulta con la función
neighborcomo única expresión en el resultado puede devolver un resultado vacío si la función se llama con el offset-9223372036854775808. Esto corrige #11367. #12019 (alexey-milovidov). - Se corrigió el cálculo de los permisos de acceso cuando allow_ddl=0. #12015 (Vitaly Baranov).
- Se corrigió un posible desbordamiento del tamaño de un array en generateRandom que podía provocar un bloqueo. Esto corrige #11371. #12013 (alexey-milovidov).
- Se corrigió una posible excepción de coma flotante. Cierra #11378. #12005 (alexey-milovidov).
- Se corrigió un nombre de ajuste incorrecto en un mensaje de registro al iniciar el servidor. #11997 (alexey-milovidov).
- Se corrigió el error
Query parameter was not seten el formatoValues. Soluciona #11918. #11936 (tavplubix). - Se conservan los alias para las sustituciones en la consulta (consultas parametrizadas). Esto corrige #11914. #11916 (alexey-milovidov).
- Se corrigió un error por el que no se realizaban movimientos al cambiar la política de almacenamiento desde la política predeterminada. #11893 (Vladimir Chebotarev).
- Se corrigió una posible excepción de coma flotante al procesar
DateTime64. Esto corrige #11374. #11875 (alexey-milovidov). - Se corrigió la contabilización de memoria mediante la interfaz HTTP (puede ser considerable con
wait_end_of_query=1). #11840 (Azat Khuzhin). - Analizar los metadatos almacenados en ZooKeeper antes de comprobar si son iguales. #11739 (Azat Khuzhin).
Mejora de rendimiento
- No se usaba el índice para el operador IN con literales, una regresión de rendimiento introducida en torno a la v19.3. Esto corrige #10574. #12062 (nvartolomei).
Mejora de compilación/pruebas/empaquetado
- Instalar
ca-certificatesantes del primerapt-get updateen el Dockerfile. #12095 (Ivan Blinkov).
Lanzamiento de ClickHouse v20.4.6.53-stable 2020-06-25
Corrección de errores
- Se corrigió un fallo poco frecuente causado por usar una columna
Nullableen la condiciónprewhere. Continuación de #11608. #11869 (Nikolai Kochetov). - No se permite
arrayJoindentro de funciones de orden superior. Esto provocaba una desincronización del protocolo. Esto cierra #3933. #11846 (alexey-milovidov). - Corrige un resultado incorrecto al comparar
FixedStringcon unaStringconstante. Esto corrige #11393. Este error apareció en la versión 20.4. #11828 (alexey-milovidov). - Se corrigió un resultado incorrecto de
if()con valores NULL en la condición. #11807 (Artem Zuikov). - Se corrige el uso de demasiados hilos en las consultas. #11788 (Nikolai Kochetov).
- Se corrige el comportamiento inesperado de consultas como
SELECT *, xyz.*, que se ejecutaban correctamente cuando debería haberse producido un error. #11753 (hexiaoting). - Ahora se cancelarán los fetches replicados durante un ALTER de metadatos. #11744 (alesapin).
- Se corrigió LOGICAL_ERROR causado por una deducción incorrecta del tipo de literales complejos en el formato de entrada Values. #11732 (tavplubix).
- Corregido
ORDER BY ... WITH FILLen columnas constantes. #11697 (Anton Popov). - Se establecen tiempos de espera adecuados al comunicarse con el puente XDBC. Recientemente, no se respetaban los tiempos de espera al comprobar la disponibilidad del puente y al recibir metadatos. #11690 (alexey-milovidov).
- Se corrigió el uso de
LIMIT n WITH TIESjunto con la sentenciaORDER BYque contiene alias. #11689 (Anton Popov). - Corrige un error que provoca un estado incorrecto de
system.mutations. Puede mostrar que la mutación completa ya se ha realizado, pero el servidor aún tiene tareasMUTATE_PARTen la cola de replicación e intenta ejecutarlas. Esto corrige #11611. #11681 (alesapin). - Se añadió compatibilidad con expresiones regulares con indicadores que no distinguen entre mayúsculas y minúsculas. Esto corrige #11101 y #11506. #11649 (alexey-milovidov).
- Se elimina la optimización de consulta para recuentos triviales si está configurada la seguridad a nivel de fila. En versiones anteriores, el usuario obtenía el recuento total de registros de una tabla en lugar del recuento filtrado. Esto corrige #11352. #11644 (alexey-milovidov).
- Corregidos los filtros bloom para String (índices de omisión de datos). #11638 (Azat Khuzhin).
- Se corrigió un fallo poco frecuente causado por el uso de una columna
Nullableen la condiciónprewhere. (Probablemente esté relacionado de algún modo con #11572). #11608 (Nikolai Kochetov). - Se corrigió el error
Block structure mismatchen consultas con muestreo que leen de la tablaBuffer. #11602 (Nikolai Kochetov). - Se corrige el código de salida erróneo de clickhouse-client cuando exception.code() % 256 = 0. #11601 (filimonov).
- Se corrige un error trivial en el mensaje de registro sobre “Se redujo el tamaño de la caché de marcas” al arrancar el servidor. Esto cierra #11399. #11589 (alexey-milovidov).
- Se soluciona el error
Size of offsets does not match size of columnen consultas conPREWHERE column in (subquery)yARRAY JOIN. #11580 (Nikolai Kochetov). - Se corrigió un
segfaultpoco frecuente enSHOW CREATE TABLE. Corrige #11490. #11579 (tavplubix). - Todas las consultas de una sesión HTTP tenían el mismo query_id. Esto ya se ha corregido. #11578 (tavplubix).
- Ahora el contenedor Docker de clickhouse-server dará preferencia a IPv6 al comprobar si el servidor está activo. #11550 (Ivan Starkov).
- Se corrige shard_num/replica_num para
<node>(rompe use_compact_format_in_distributed_parts_names). #11528 (Azat Khuzhin). - Se corrige una condición de carrera que puede provocar una excepción al eliminar una tabla. Es un poco complicado y no es peligroso en absoluto. Si quieres una explicación, avísame por Telegram. #11523 (alesapin).
- Se corrige una fuga de memoria cuando se lanza una excepción durante la agregación con funciones
-State. Esto corrige #8995. #11496 (alexey-milovidov). - Si el índice de omisión de datos dependía de columnas que iban a modificarse durante una merge en segundo plano (para SummingMergeTree, AggregatingMergeTree, así como para TTL GROUP BY), se calculaba incorrectamente. Este problema se corrigió moviendo el cálculo del índice después de la merge, de modo que el índice se calcule sobre los datos ya fusionados. #11162 (Azat Khuzhin).
- Se eliminaron los parches antiguos de libunwind. https://github.com/ClickHouse-Extras/libunwind/commit/500aa227911bd185a94bfc071d68f4d3b03cb3b1#r39048012 Esto permite desactivar
-fno-omit-frame-pointeren las builds declang, lo que mejora el rendimiento al menos en un 1% de media. #10761 (Amos Bird). - Se corrigió el uso de la clave primaria incluida en una función con el modificador ‘FINAL’ y la optimización de ‘ORDER BY’. #10715 (Anton Popov).
Mejora de compilación/pruebas/empaquetado
- Se corrigen varios errores menores en las pruebas unitarias. #11262 (alesapin).
- Se corrige un informe falso de MSan en MergeTreeIndexFullText. El problema apareció por primera vez en #9968. #10801 (alexey-milovidov).
Lanzamiento de ClickHouse v20.4.5.36-stable 2020-06-10
Corrección de errores
- Corrige el error
Data compressed with different methodsque puede producirse simin_bytes_to_use_direct_ioestá habilitado, PREWHERE está activo y se usa SAMPLE o un número elevado de hilos. Esto corrige #11539. #11540 (alexey-milovidov). - Se corrige el tamaño comprimido devuelto por los codecs. #11448 (Nikolai Kochetov).
- Corrige una caída del servidor cuando una columna tiene un códec de compresión con argumentos no literales. Corrige #11365. #11431 (alesapin).
- Se corrige pointInPolygon cuando el punto es nan. Corrige #11375. #11421 (Alexey Ilyukhov).
- Se corrige una posible lectura de memoria no inicializada durante el cierre de MergeTree si la tabla no se creó correctamente. #11420 (alexey-milovidov).
- Se corrigió
geohashesInBoxpara admitir argumentos fuera del rango de latitud/longitud. #11403 (Vasily Nemkov). - Se corrige un posible error
Pipeline stucken consultas con ordenación externa y límite. Corrige #11359. #11366 (Nikolai Kochetov). - Se eliminó el bloqueo redundante al enviar partes en ReplicatedMergeTree. #11354 (alesapin).
- Se corrigió el soporte de
\G(salida vertical) en clickhouse-client en modo multilínea. Esto cierra #9933. #11350 (alexey-milovidov). - Soluciona un posible fallo de segmentación al usar la base de datos
Lazy. #11348 (alexey-milovidov). - Se corrige un bloqueo en
quantilesExactWeightedArray. #11337 (Nikolai Kochetov). - Ahora las operaciones de fusión se detienen antes de modificar los metadatos en las consultas
ALTER. #11335 (alesapin). - Vuelve a habilitar la escritura en paralelo en
MATERIALIZED VIEWcon la configuraciónparallel_view_processing = 1. Corrige #10241. #11330 (Nikolai Kochetov). - Corrige visitParamExtractRaw cuando el JSON extraído contiene cadenas con { o [ de apertura sin su correspondiente cierre. #11318 (Ewout).
- Se corrige una condición de carrera muy rara en ThreadPool. #11314 (alexey-milovidov).
- Se corrigió una carrera de datos menor en clickhouse-copier. Detectada por las pruebas de integración. #11313 (alexey-milovidov).
- Corrige un posible uso de memoria no inicializada en la conversión. Ejemplo:
SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov). - Soluciona el problema por el que el análisis de índices no puede funcionar si una tabla tiene una columna Array en la clave primaria y una consulta filtra por esa columna con las funciones
emptyonotEmpty. Esto corrige #11286. #11303 (alexey-milovidov). - Se corrige un error por el que la estimación de la velocidad de la consulta podía ser incorrecta, y el límite de
min_execution_speedpodía no funcionar o hacerlo incorrectamente si la consulta estaba limitada pormax_network_bandwidth,max_execution_speedo la configuraciónpriority. Se cambia el valor predeterminado detimeout_before_checking_execution_speeda uno distinto de cero, porque de lo contrario las configuracionesmin_execution_speedymax_execution_speedno tienen efecto. Esto corrige #11297. Esto corrige #5732. Esto corrige #6228. Mejora de usabilidad: se evita que el mensaje de excepción se concatene con la barra de progreso enclickhouse-client. #11296 (alexey-milovidov). - Corrige un fallo al llamar a SET DEFAULT ROLE con argumentos incorrectos. Esto corrige #10586. #11278 (Vitaly Baranov).
- Corrige un fallo al leer datos malformados en formato Protobuf. Se corrigen #5957 y #11203. #11258 (Vitaly Baranov).
- Se corrigió un error por el que el diccionario de caché podía devolver el valor predeterminado en lugar del habitual (cuando solo había claves expiradas). Esto afecta únicamente a los campos String. #11233 (Nikita Mikhaylov).
- Corrige el error
Block structure mismatch in QueryPipelineal leer desdeVIEWcon constantes en la consulta interna. Soluciona #11181. #11205 (Nikolai Kochetov). - Se ha corregido la posible excepción
Invalid status for associated output. #11200 (Nikolai Kochetov). - Se corrige un posible error
Cannot capture columnen funciones de orden superior conArray(Array(LowCardinality))como argumento capturado. #11185 (Nikolai Kochetov). - Se corrigió el globbing de S3, que podía fallar cuando había más de 1000 claves y con algunos backends. #11179 (Vladimir Chebotarev).
- Si un índice de omisión de datos dependía de columnas que iban a modificarse durante una fusión en segundo plano (para SummingMergeTree, AggregatingMergeTree, así como para TTL GROUP BY), se calculaba incorrectamente. Este problema se corrigió trasladando el cálculo del índice a después de la fusión, de modo que se calcule sobre los datos ya fusionados. #11162 (Azat Khuzhin).
- Se corrigió un problema de rendimiento de Kafka relacionado con las reprogramaciones basadas en límites, que siempre se aplicaban. #11149 (filimonov).
- Corrección del bloqueo que se producía a veces al hacer DROP de una tabla con engine=Kafka (o durante los reinicios del servidor). #11145 (filimonov).
- Se corrige la reserva excesiva de hilos para consultas simples (optimización para reducir el número de hilos, que quedó parcialmente rota tras los cambios en el pipeline). #11114 (Azat Khuzhin).
- Corrige la optimización de predicados para consultas distribuidas (
enable_optimize_predicate_expression=1) en consultas con secciónHAVING(es decir, cuando se requiere filtrar en el servidor iniciador), preservando el orden de las expresiones (y esto basta para corregirlo), y además fuerza al agregador a usar nombres de columna en lugar de índices. Correcciones: #10613, #11413. #10621 (Azat Khuzhin).
Mejora de compilación/pruebas/empaquetado
Lanzamiento de ClickHouse v20.4.4.18-stable 2020-05-26
Lanzamiento de ClickHouse v20.4.3.16-stable 2020-05-23
Corrección de errores
- Se eliminó el logging de la tarea de finalización de mutaciones cuando no se finalizaba nada. #11109 (alesapin).
- Se corrigió una fuga de memoria en registerDiskS3. #11074 (Pavel Kovalenko).
- Se corrigió la posible omisión de datos al finalizar una tabla de motor Kafka. #11048 (filimonov).
- Se corrigieron errores en la resolución de argumentos de
parseDateTime64BestEffort. #11038 (Vasily Nemkov). - Se corrigió un error potencial de
use-after-free, muy infrecuente, enMergeTreesi la tabla no se había creado correctamente. #10986, #10970 (alexey-milovidov). - Se corrigió el tratamiento de los metadatos (ruta relativa para
rename) y de los datos (ruta relativa parasymlink) en la base de datos Atomic. #10980 (Azat Khuzhin). - Se corrigió un cierre inesperado del servidor en consultas concurrentes de
ALTERyDROP DATABASEcon el motor de base de datosAtomic. #10968 (tavplubix). - Se corrigió un tamaño incorrecto de los datos sin procesar en el método
getRawData(). #10964 (Igr). - Se corrigió una incompatibilidad en la agregación de dos niveles entre la versión 20.1 y las anteriores. Esta incompatibilidad se produce cuando se usan distintas versiones de ClickHouse en el nodo iniciador y en los nodos remotos, el resultado de GROUP BY es grande y la agregación se realiza sobre un único campo String. Esto provoca varias filas no fusionadas para una misma clave en el resultado. #10952 (alexey-milovidov).
- Se corrigió el envío de archivos parcialmente escritos por
DistributedBlockOutputStream. #10940 (Azat Khuzhin). - Se corrigió un cierre inesperado en
SELECT count(notNullIn(NULL, [])). #10920 (Nikolai Kochetov). - Se corrigió el bloqueo que a veces se producía durante
DROPde una tabla con motorKafka(o durante reinicios del servidor). #10910 (filimonov). - Se corrigió el problema que impedía ejecutar varios
ALTER RENAMEcomoa TO b, c TO a. #10895 (alesapin). - Se corrigió una posible condición de carrera que podía producirse al obtener el resultado del state de una función de agregación desde varios hilos para la misma columna. La única forma de que esto suceda es al usar la función
finalizeAggregational leer de una tabla con el motorMemory, que almacena el state deAggregateFunctionpara la funciónquantile*. #10890 (Nikolai Kochetov). - Se corrigió la compatibilidad con versiones anteriores de las tuplas en las tablas Distributed. #10889 (Anton Popov).
- Se corrigió
SIGSEGVenStringHashTablecuando esa clave no existe. #10870 (Azat Khuzhin). - Se corrigió que
WATCHse quedara colgado después de eliminar la tablaLiveViewde la base de datos con motorAtomic. #10859 (tavplubix). - Se corrigió un error en
ReplicatedMergeTreeque podía hacer que algunas consultasALTERsobre una consultaOPTIMIZEquedaran bloqueadas esperando a alguna réplica después de que esta se volviera inactiva. #10849 (tavplubix). - Ahora las restricciones se actualizan si se ha renombrado la columna que participa en la expresión
CONSTRAINT. Corrige #10844. #10847 (alesapin). - Se corrigió una posible lectura de memoria no inicializada en el diccionario de caché. #10834 (alexey-milovidov).
- Se corrigió el orden de las columnas tras
Block::sortColumns(). #10826 (Azat Khuzhin). - Se corrigió el problema con el bridge de
ODBCcuando no se solicita el uso de comillas para los identificadores. Corrige #7984. #10821 (alexey-milovidov). - Se corrigió el reporte de
UBSanyMSanenDateLUT. #10798 (alexey-milovidov). - Se corrigió una conversión de tipos incorrecta en las condiciones de clave. Corrige #6287. #10791 (Andrew Onyshchuk).
- Se corrigió el comportamiento de
parallel_view_processing. Ahora, si se produce una excepción, todas las inserciones enMATERIALIZED VIEWdeben completarse sin excepción. Corrige #10241. #10757 (Nikolai Kochetov). - Se corrigieron los combinadores
-OrNully-OrDefaultcuando se combinaban con-State. #10741 (hcz). - Se corrigió un posible desbordamiento de búfer en la función
h3EdgeAngle. #10711 (alexey-milovidov). - Se corrigió un error que bloqueaba ALTER concurrentes cuando la tabla tenía muchas partes. #10659 (alesapin).
- Se corrigió la desreferenciación de
nullptrenStorageBuffersi el servidor se había apagado antes de que se iniciara la tabla. #10641 (alexey-milovidov). - Se corrigió
optimize_skip_unused_shardsal usarLowCardinality. #10611 (Azat Khuzhin). - Se corrigió el manejo de la variable de condición para las mutaciones síncronas. En algunos casos, las señales enviadas a esa variable de condición podían perderse. #10588 (Vladimir Chebotarev).
- Se corrigió un posible bloqueo al llamar a
createDictionary()antes de queloadStoredObject()terminara. #10587 (Vitaly Baranov). - Se corrigió el
SELECTde la columnaALIAScuyo tipo de expresión por defecto era diferente del tipo de la columna. #10563 (Azat Khuzhin). - Se implementó la comparación entre valores de tipo DateTime64 y String. #10560 (Vasily Nemkov).
- Deshabilitar de forma predeterminada la optimización de
GROUP BYporsharding_key(optimize_distributed_group_by_sharding_keyse había introducido, pero quedó desactivada de forma predeterminada debido a la complejidad del análisis de la clave de sharding; un ejemplo sencillo esifen la clave de sharding) y corregirla paraWITH ROLLUP/CUBE/TOTALS. #10516 (Azat Khuzhin). - Se corrigió #10263. #10486 (Azat Khuzhin).
- Se añadieron pruebas para la configuración
max_rows_to_sort. #10268 (alexey-milovidov). - Se añadió compatibilidad retroactiva para la creación de índices con filtro Bloom. #10551. #10569 (Winter Zhang).
Lanzamiento de ClickHouse v20.4.2.9, 2020-05-12
Cambio incompatible con versiones anteriores
- Las tablas del sistema (p. ej., system.query_log, system.trace_log, system.metric_log) usan el formato compacto de data part para las partes de menos de 10 MiB. El formato compacto de data part es compatible desde la versión 20.3. Si va a volver a una versión anterior a la 20.3, debe eliminar manualmente los datos de las tablas de logs del sistema en
/var/lib/clickhouse/data/system/. - Cuando la comparación de cadenas implica
FixedStringy los argumentos comparados tienen tamaños distintos, realice la comparación como si la cadena más corta se rellenara hasta la longitud de la más larga. Esto está pensado para mantener la compatibilidad con SQL, si asumimos que el tipo de datoFixedStringcorresponde a SQL CHAR. Esto cierra #9272. #10363 (alexey-milovidov) - SHOW CREATE TABLE ahora se muestra en varias líneas. Ahora es más legible y más parecido a MySQL. #10049 (Azat Khuzhin)
- Se añadió una configuración
validate_polygonsque se usa en la funciónpointInPolygony está habilitada de forma predeterminada. #9857 (alexey-milovidov)
Nueva funcionalidad
- Se añade soporte para una conexión segura de ClickHouse a ZooKeeper #10184 (Konstantin Lebedev)
- Se admiten controladores HTTP personalizados. Consulte #5436 para obtener una descripción. #7572 (Winter Zhang)
- Se agregó el formato de entrada/salida MessagePack. #9889 (Kruglov Pavel)
- Se añade el formato de entrada Regexp. #9196 (Kruglov Pavel)
- Se añadió el formato de salida
Markdownpara incrustar tablas en documentos Markdown. #10317 (Kruglov Pavel) - Se añadió compatibilidad con la sección de ajustes personalizados en los diccionarios. También soluciona el problema #2829. #10137 (Artem Streltsov)
- Se añadió compatibilidad con ajustes personalizados en las consultas DDL para
CREATE DICTIONARY#10465 (Artem Streltsov) - Agregar un sencillo perfilador de memoria a nivel de servidor que recopile contextos de asignación cuando el uso de memoria del servidor supere el siguiente umbral de asignación. #10444 (alexey-milovidov)
- Se añadió la configuración
always_fetch_merged_part, que impide que la réplica fusione partes por sí misma y hace que siempre prefiera descargarlas de otras réplicas. #10379 (alesapin) - Se añade la función
JSONExtractKeysAndValuesRaw, que extrae datos sin procesar de objetos JSON #10378 (hcz) - Añadir el uso de memoria del sistema operativo a
system.asynchronous_metrics. #10361 (alexey-milovidov) - Se añadieron variantes genéricas para las funciones
leastygreatest. Ahora funcionan con cualquier número de argumentos de cualquier tipo. Esto corrige #4767 #10318 (alexey-milovidov) - Ahora ClickHouse controla los tiempos de espera de los orígenes de los diccionarios de su lado. Se añadieron dos nuevas opciones de configuración a la configuración del diccionario
cache:strict_max_lifetime_seconds, cuyo valor predeterminado esmax_lifetime, yquery_wait_timeout_milliseconds, cuyo valor predeterminado es un minuto. La primera configuración también es útil junto con la opciónallow_read_expired_keys(para impedir la lectura de claves demasiado expiradas). #10337 (Nikita Mikhaylov) - Añadir log_queries_min_type para filtrar qué entradas se escribirán en query_log #10053 (Azat Khuzhin)
- Se añadió la función
isConstant. Esta función comprueba si su argumento es una expresión constante y devuelve 1 o 0. Está pensada para fines de desarrollo, depuración y demostración. #10198 (alexey-milovidov) - se añade joinGetOrNull para devolver NULL si falta la clave, en lugar de devolver el valor predeterminado. #10094 (Amos Bird)
- Considere que
NULLes igual aNULLen el operadorINsi está establecida la opcióntransform_null_in. #10085 (achimbab) - Se añade
ALTER TABLE ... RENAME COLUMNen la familia de motores de tabla MergeTree. #9948 (alesapin) - Se admite el INSERT SELECT distribuido en paralelo. #9759 (vxider)
- Se añadió la posibilidad de consultar Distributed sobre Distributed (sin
distributed_group_by_no_merge) … #9923 (Azat Khuzhin) - Se añade la función
arrayReduceInRanges, que agrega elementos de array en los rangos especificados. #9598 (hcz) - Se añade el estado del Diccionario al exporter de Prometheus. #9622 (Guillaume Tassery)
- Se añadió la función
arrayAUC#8698 (taiyang-li) - Se añadió compatibilidad con
DROP VIEWpara mejorar la compatibilidad con TPC-H. #9831 (Amos Bird) - Agregar la opción ‘strict_order’ a windowFunnel() #9773 (achimbab)
- Soporte para los operadores SQL
DATEyTIMESTAMP, p. ej.,SELECT date '2001-01-01'#9691 (Artem Zuikov)
Funcionalidad experimental
- Se añadió el motor de base de datos experimental Atomic. Admite las consultas
DROPyRENAME TABLEsin bloqueo, así como la consulta atómicaEXCHANGE TABLES t1 AND t2#7512 (tavplubix) - Soporte inicial para ReplicatedMergeTree sobre S3 (funciona de forma subóptima) #10126 (Pavel Kovalenko)
Corrección de errores
- Se corrigieron resultados escalares incorrectos dentro de la consulta interna de
MATERIALIZED VIEWen caso de que esta consulta contuviera una tabla dependiente #10603 (Nikolai Kochetov) - Se corrigió un error que provocaba que las solicitudes HTTP se quedaran bloqueadas al cerrar el cliente la conexión cuando
readonly=2ycancel_http_readonly_queries_on_client_close=1. #10684 (tavplubix) - Corrige un fallo de segmentación en StorageBuffer cuando se produce una excepción durante el inicio del servidor. Corrige #10550 #10609 (tavplubix)
- La consulta
SYSTEM DROP DNS CACHEahora también elimina las cachés que se usan para comprobar si un usuario tiene permiso para conectarse desde determinadas direcciones IP #10608 (tavplubix) - Se corrige el uso de múltiples operadores
INcon un mismo conjunto en una consulta. Soluciona #10539 #10686 (Anton Popov) - Se corrige un bloqueo en
generateRandomcon tipos anidados. Soluciona #10583. #10734 (Nikolai Kochetov) - Se corrige la corrupción de datos en la columna clave
LowCardinality(FixedString)deSummingMergeTree, que podría haberse producido después de una merge. Corrige #10489. #10721 (Nikolai Kochetov) - Se corrigió la lógica de la configuración aggregation_memory_efficient_merge_threads. #10667 (palasonic1)
- Corrige la desaparición de los totales. Los totales podían quedar filtrados si la consulta tenía un
JOINo una subconsulta con una condiciónWHEREexterna. Corrige #10674 #10698 (Nikolai Kochetov) - Corrige la falta de ejecución en paralelo de consultas remotas con
distributed_aggregation_memory_efficientactivado. Corrige #10655 #10664 (Nikolai Kochetov) - Corrige una posible cantidad incorrecta de filas en consultas con
LIMIT. Corrige #10566, #10709 #10660 (Nikolai Kochetov) - Se corrige un problema de corrupción del índice, que puede producirse en algunos casos después de fusionar partes compactas en otra parte compacta. #10531 (Anton Popov)
- Se corrigió la situación en la que la mutación terminaba todas las partes, pero quedaba bloqueada en
is_done=0. #10526 (alesapin) - Corrige un desbordamiento al inicio de la época Unix para zonas horarias con desfase fraccional respecto a UTC. Soluciona #9335. #10513 (alexey-milovidov)
- Mejores diagnósticos para los formatos de entrada. Soluciona #10204 #10418 (tavplubix)
- Se corrige el desbordamiento numérico en
simpleLinearRegression()al trabajar con enteros grandes #10474 (hcz) - Corrige el use-after-free en el cierre de Distributed; evita esperar a que se envíen todos los lotes #10491 (Azat Khuzhin)
- Añade certificados de CA a la imagen de Docker de clickhouse-server #10476 (filimonov)
- Se corrigió un raro bucle infinito que podía producirse al usar la función
addressToLineo columnas de AggregateFunctionState. #10466 (Alexander Kuzmenkov) - Corrección del error “no node error” de ZooKeeper durante una consulta distribuida #10050 (Daniel Chen)
- Se corrigió un error que impedía que el servidor adjuntara la tabla después de modificar el valor predeterminado de la columna. #10441 (alesapin)
- Convertir de forma implícita el tipo de la expresión predeterminada al tipo de columna para las columnas ALIAS #10563 (Azat Khuzhin)
- No se elimina el directorio de metadatos si falla
ATTACH DATABASE#10442 (Winter Zhang) - Evita depender de la
tzdatadel sistema. Corrige la carga de la zona horariaAfrica/Casablancaen CentOS 8. Corrige #10211 #10425 (alexey-milovidov) - Corrige algunos problemas que se producían si los datos se insertaban con quorum y luego se eliminaban (DROP PARTITION, TTL, etc.). Esto provocaba bloqueos en los INSERTs o excepciones de falso positivo en los SELECTs. Corrige #9946 #10188 (Nikita Mikhaylov)
- Comprobación del número y el tipo de argumentos al crear el índice BloomFilter #9623 #10431 (Winter Zhang)
- Use
fallback_to_stale_replicasen lugar deskip_unavailable_shards; de lo contrario, si se especifican ambos ajustes y no hay réplicas actualizadas, la consulta fallará (parche de @alex-zaitsev ) #10422 (Azat Khuzhin) - Se corrige el problema por el que una consulta con ARRAY JOIN, ORDER BY y LIMIT puede devolver un resultado incompleto. Corrige #10226. #10427 (Vadim Plakhtinskiy)
- Se añade el nombre de la base de datos al nombre del diccionario después de DETACH/ATTACH. Corrige la tabla system.dictionaries y la consulta
SYSTEM RELOAD#10415 (Azat Khuzhin) - Corrige un posible resultado incorrecto en los extremos del pipeline de processors. #10131 (Nikolai Kochetov)
- Se corrige un posible segfault cuando está habilitada la configuración
distributed_group_by_no_merge(introducido en la versión 20.3.7.46 por #10131). #10399 (Nikolai Kochetov) - Corrige el aplanamiento incorrecto de los tipos de datos
Array(Tuple(...)). Corrige #10259 #10390 (alexey-milovidov) - Se corrigen los nombres de las columnas de las constantes dentro de JOIN que pueden entrar en conflicto con los nombres de las constantes fuera de JOIN #9950 (Alexander Kuzmenkov)
- Se corrige el orden de las columnas tras Block::sortColumns() #10826 (Azat Khuzhin)
- Se corrige un posible error de
Pipeline stuckenConcatProcessorque puede producirse en una consulta remota. #10381 (Nikolai Kochetov) - No hacer reservas de disco para agregaciones. Corrige #9241 #10375 (Azat Khuzhin)
- Se corrige el comportamiento incorrecto de las funciones de fecha y hora para las zonas horarias que han pasado de desplazamientos positivos a negativos respecto a UTC (p. ej., Pacific/Kiritimati). Corrige #7202 #10369 (alexey-milovidov)
- Evita un bucle infinito en la función
dictIsIn. Corrige #515 #10365 (alexey-milovidov) - Deshabilitar de forma predeterminada la optimización de GROUP BY sharding_key y corregirla para WITH ROLLUP/CUBE/TOTALS #10516 (Azat Khuzhin)
- Comprueba el código de error al verificar las partes y no marca la parte como dañada si el error es del tipo “not enough memory”. Corrige #6269 #10364 (alexey-milovidov)
- Mostrar información sobre los diccionarios no cargados en las tablas del sistema. #10234 (Vitaly Baranov)
- Se corrige la desreferencia de nullptr en StorageBuffer si el servidor se apagaba antes de que se iniciara la tabla. #10641 (alexey-milovidov)
- Se corrigió la condición de carrera entre
DROPyOPTIMIZEenReplicatedMergeTree.DROPpodía dejar residuos en la ruta de la réplica en ZooKeeper si había una consultaOPTIMIZEconcurrente. #10312 (tavplubix) - Se corrige el error ‘Logical error: CROSS JOIN has expressions’ en consultas con una combinación de joins con coma y joins con nombre. Corrige #9910 #10311 (Artem Zuikov)
- Se corrigen consultas con
max_bytes_before_external_group_by. #10302 (Artem Zuikov) - Se corrige el problema de limitación de la profundidad máxima de recursión del analizador sintáctico en ciertos casos. Esto corrige #10283 Esta corrección puede introducir una incompatibilidad menor: es posible que las consultas largas y profundas realizadas a través de clickhouse-client dejen de funcionar, por lo que debe ajustar en consecuencia la configuración de
max_query_sizeymax_parser_depth. #10295 (alexey-milovidov) - Permite usar
count(*)con múltiples JOINs. Corrige #9853 #10291 (Artem Zuikov) - Se corrigió el error
Pipeline stuckconmax_rows_to_group_byygroup_by_overflow_mode = 'break'. #10279 (Nikolai Kochetov) - Corrige el error ‘Cannot add column’ al crear el diccionario
range_hashedmediante una consulta DDL. Soluciona #10093. #10235 (alesapin) - Corrige una posible excepción poco frecuente:
Cannot drain connections: cancel first. #10239 (Nikolai Kochetov) - Se corrigió un error por el que ClickHouse devolvía el mensaje de error “Unknown function lambda.” al intentar ejecutar ALTER UPDATE/DELETE en tablas con ENGINE = Replicated*. La comprobación de funciones no deterministas ahora gestiona correctamente las expresiones lambda. #10237 (Alexander Kazakov)
- Se corrigió un segfault poco frecuente en StorageSystemTables que ocurre al ejecutar SELECT … FROM system.tables en una base de datos con motor Lazy. #10209 (Alexander Kazakov)
- Corrige una posible ejecución infinita de la consulta cuando en realidad debería detenerse con LIMIT, al leer de una fuente infinita como
system.numbersosystem.zeros. #10206 (Nikolai Kochetov) - Se corrigió la función “generateRandom” para el tipo Date. Esto corrige #9973. Se corrigió un caso límite al insertar fechas del año 2106 en tablas MergeTree con particionamiento de estilo antiguo, mientras que las particiones se nombraban con el año 1970. #10218 (alexey-milovidov)
- Convertir tipos si la definición de la tabla de una vista no se corresponde con la consulta SELECT. Esto corrige #10180 y #10022 #10217 (alexey-milovidov)
- Se corrige
parseDateTimeBestEffortpara cadenas en RFC-2822 cuando el día de la semana es martes o jueves. Esto corrige #10082 #10214 (alexey-milovidov) - Se corrigieron los nombres de columna de las constantes dentro de JOIN que podían entrar en conflicto con los nombres de las constantes fuera de JOIN. #10207 (alexey-milovidov)
- Se corrige la optimización
move-to-prewhereen presencia de funcionesarrayJoin(en algunos casos). Esto soluciona #10092 #10195 (alexey-milovidov) - Se corrige el problema del separador que aparece en SCRAMBLE del conector nativo
mysql-connector-java(JDBC) #10140 (BohuTANG) - Se corrige el uso de la base de datos actual para la comprobación de acceso cuando no se especifica ninguna base de datos. #10192 (Vitaly Baranov)
- Corregido ALTER en tablas con partes compactas. #10130 (Anton Popov)
- Se agregó la posibilidad de relajar la restricción sobre el uso de funciones no deterministas en las mutaciones mediante la configuración
allow_nondeterministic_mutations. #10186 (filimonov) - Corregida la llamada a
DROP TABLEpara el diccionario #10165 (Azat Khuzhin) - Convertir bloques si la estructura no coincide al hacer
INSERTen una tabla distribuida #10135 (Azat Khuzhin) - El número de filas se registró incorrectamente (como la suma de todas las partes) cuando el bloque insertado se divide en partes según la clave de partición. #10138 (alexey-milovidov)
- Se añadió la comprobación de algunos argumentos y la compatibilidad con argumentos identificadores para el motor de base de datos MySQL #10077 (Winter Zhang)
- Se corrige la comprobación incorrecta de
index_granularity_bytesal crear una nueva réplica. Corrige #10098. #10121 (alesapin) - Corrige un error en la consulta
CHECK TABLEcuando la tabla contiene índices de omisión. #10068 (alesapin) - Corregido Distributed-over-Distributed cuando solo hay un segmento en una tabla anidada #9997 (Azat Khuzhin)
- Se corrige la posible pérdida de filas en las consultas con
JOINyUNION ALL. Corrige #9826, #10113. … #10099 (Nikolai Kochetov) - Se corrigió un error en el diccionario cuando se usa el servidor local de ClickHouse como origen. Podía provocar corrupción de memoria si los tipos del diccionario y del origen no eran compatibles. #10071 (alesapin)
- Se corrigió el inicio de las tablas replicadas al actualizar desde una versión antigua de ClickHouse en la que no existe el nodo
/table/replicas/replica_name/metadata. Corrige #10037. #10095 (alesapin) - Se corrigió el error
Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform. Ocurría cuando la configuracióndistributed_aggregation_memory_efficientestaba habilitada y una consulta distribuida leía datos agregados con una combinación de agregación de un nivel y de dos niveles procedentes de distintos segmentos. #10063 (Nikolai Kochetov) - Se corrige un interbloqueo al iniciar, cuando no se podía adjuntar una base de datos con una vista materializada #10054 (Azat Khuzhin)
- Corrige un fallo de segmentación que podía producirse en
GROUP BYsobre claves de cadena que contenían bytes nulos finales (#8636, #8925). … #10025 (Alexander Kuzmenkov) - Corrige resultados incorrectos de consultas distribuidas cuando un alias podía anular un nombre de columna con calificador. Corrige #9672 #9714 #9972 (Artem Zuikov)
- Se ha corregido un posible interbloqueo en
SYSTEM RESTART REPLICAS#9955 (tavplubix) - Se corrige la cantidad de hilos utilizada para la ejecución remota de consultas (regresión del rendimiento desde la versión 20.3). Esto ocurría cuando una consulta sobre una tabla
Distributedse ejecutaba simultáneamente en segmentos locales y remotos. Corrige #9965 #9971 (Nikolai Kochetov) - Se corrigió la lógica de
DeleteOnDestroyenATTACH PART, que podía provocar la eliminación automática de la part adjunta, y se añadieron algunas pruebas #9410 (Vladimir Chebotarev) - Se corrigió un error por el que las consultas DDL con
ON CLUSTERse quedaban bloqueadas al iniciar el servidor. #9927 (Gagan Arneja) - Se corrige un error por el que no se obtenían las tablas necesarias en una de las etapas de procesamiento de consultas a algunas bases de datos. Corrige #9699. #9949 (achulkov2)
- Se corrige el error ‘Not found column in block’ cuando
JOINaparece conTOTALS. Corrige #9839 #9939 (Artem Zuikov) - Se corrige el análisis sintáctico de varios hosts indicados en el comando CREATE USER #9924 (Vitaly Baranov)
- Se corrige
TRUNCATEpara el motor de tabla Join (#9917). #9920 (Amos Bird) - Soluciona una condición de carrera entre drop y optimize en
ReplicatedMergeTree. #9901 (alesapin) - Se corrige
DISTINCTpara Distributed cuandooptimize_skip_unused_shardsestá activado. #9808 (Azat Khuzhin) - Se corrigió el error “scalar does not exist” en ALTERs (#9878). … #9904 (Amos Bird)
- Se corrige el error con nombres cualificados en
distributed_product_mode=\'local\'. Soluciona #4756 #9891 (Artem Zuikov) - En las consultas INSERT, los segmentos ahora ajustan la configuración del iniciador a sus propias restricciones en lugar de lanzar una excepción. Esta corrección permite enviar consultas INSERT a un segmento con restricciones distintas. Este cambio mejora la corrección de #9447. #9852 (Vitaly Baranov)
- Añade algunos reintentos al confirmar los offsets en el broker de Kafka, ya que este puede rechazar la confirmación si durante
offsets.commit.timeout.msno había suficientes réplicas disponibles para el topic__consumer_offsets#9884 (filimonov) - Se corrige el comportamiento del motor Distributed al usar columnas virtuales de la tabla subyacente en
WHERE#9847 (Azat Khuzhin) - Se corrigieron algunos casos en los que no se utilizaba correctamente la zona horaria del argumento de la función. #9574 (Vasily Nemkov)
- Se corrigió el error ‘Expresiones diferentes con el mismo alias’ cuando la consulta tiene PREWHERE y WHERE en una tabla distribuida y
SET distributed_product_mode = 'local'. #9871 (Artem Zuikov) - Se corrige el consumo excesivo de memoria en las mutaciones de tablas con clave primaria compuesta. Esto corrige #9850. #9860 (alesapin)
- Se corrigió el cálculo de los permisos para las funciones de introspección según la configuración
allow_introspection_functions. #9840 (Vitaly Baranov) - Se corrigió max_distributed_connections (con y sin procesadores) #9673 (Azat Khuzhin)
- Se corrige una posible excepción
Got 0 in totals chunk, expected 1en el cliente. Ocurría en consultas conJOINcuando la tabla del lado derecho no tenía ninguna fila. Ejemplo:select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;. Corrige #9777. … #9823 (Nikolai Kochetov) - Se corrige el error ‘el reescritor de COMMA a CROSS JOIN no está habilitado o no puede reescribir la consulta’ en subconsultas con COMMA JOIN fuera de las listas de tablas (es decir, en WHERE). Corrige #9782 #9830 (Artem Zuikov)
- Se corrige la caída del servidor cuando
optimize_skip_unused_shardsestá configurado y la expresión de la clave no puede convertirse a su tipo de campo #9804 (Azat Khuzhin) - Se corrige el manejo de cadenas vacías en
splitByString. #9767 (hcz) - Se corrigió la consulta
ALTER TABLE DELETE COLUMNque fallaba con partes compactas. #9779 (alesapin) - Se corrigió la falta de
rows_before_limit_at_leasten las consultas por http (con pipeline de procesadores). Corrige #9730 #9757 (Nikolai Kochetov) - Soluciona el consumo excesivo de memoria en las consultas
ALTER(mutaciones). Esto corrige #9533 y #9670. #9754 (alesapin) - Se corrigió un posible error permanente “No se puede programar una tarea”. #9154 (Azat Khuzhin)
- Se corrige un error en el entrecomillado con comillas invertidas en el DDL de diccionarios externos. Corrige #9619. #9734 (alesapin)
- Se corrigió una condición de carrera en
text_log. No se corresponde con ningún fallo real. #9726 (alexey-milovidov) - Se corrige un error en la replicación que impedía que funcionara si el usuario había ejecutado mutaciones en la versión anterior. Esto corrige #9645. #9652 (alesapin)
- Se corrigieron los nombres internos erróneos de las funciones
sumKahanysumWithOverflow. Esto provocaba una excepción al usar estas funciones en consultas remotas. #9636 (Azat Khuzhin) - Se añade la configuración
use_compact_format_in_distributed_parts_names, que permite escribir archivos para consultasINSERTen una tablaDistributeden un formato más compacto. Esto corrige #9647. #9653 (alesapin) - Corrige RIGHT JOIN y FULL JOIN con LowCardinality en las claves de JOIN. #9610 (Artem Zuikov)
- Se corrigen las posibles excepciones
Size of filter does not match size of columneInvalid number of rows in ChunkenMergeTreeRangeReader. Podían aparecer al ejecutarPREWHEREen algunos casos. #9612 (Anton Popov) - Se permite
ALTER ON CLUSTERen tablas Distributed con replicación interna. Esto corrige #3268 #9617 (shinoi2) - Se solucionó el problema por el cual no se conservaba la zona horaria al escribir una expresión aritmética simple como
time + 1(a diferencia de una expresión comotime + INTERVAL 1 SECOND). Esto corrige #5743 #9323 (alexey-milovidov)
Mejora
- Usa la zona horaria al comparar
DateTimecon un literal de texto. Esto corrige #5206. #10515 (alexey-milovidov) - Muestra información de diagnóstico detallada si no se puede analizar un valor Decimal a partir del formato de entrada de texto. #10205 (alexey-milovidov)
- Agregar métricas de tareas/memoria para los pools de programación de distributed/búfer #10449 (Azat Khuzhin)
- Muestra el resultado tan pronto como esté listo para las consultas SELECT DISTINCT en clickhouse-local y la interfaz HTTP. Esto corrige #8951 #9559 (alexey-milovidov)
- Permite usar la consulta
SAMPLE OFFSETen lugar decityHash64(PRIMARY KEY) % N == npara la partición enclickhouse-copier. Para usar esta funcionalidad, pase--experimental-use-sample-offset 1como argumento de la línea de comandos. #10414 (Nikita Mikhaylov) - Permite interpretar el BOM en TSV si la primera columna no puede contener un BOM en su valor. Esto corrige #10301 #10424 (alexey-milovidov)
- Se añadió compatibilidad con la inserción de campos anidados de Avro #10354 (Andrew Onyshchuk)
- Se permite modificar una columna en el modo de datos no modificables cuando se especifica el mismo tipo. #10382 (Vladimir Chebotarev)
- Activación automática de
distributed_group_by_no_mergeen la clave de segmentación de GROUP BY (sioptimize_skip_unused_shardsestá configurado) #10341 (Azat Khuzhin) - Optimización de consultas con LIMIT/LIMIT BY/ORDER BY para Distributed con GROUP BY sharding_key #10373 (Azat Khuzhin)
- Se añadió la configuración
max_server_memory_usagepara limitar el uso total de memoria del servidor. La métricaMemoryTrackingahora se calcula sin deriva. La configuraciónmax_memory_usage_for_all_queriesahora es obsoleta y no tiene ningún efecto. Esto cierra #10293. #10362 (alexey-milovidov) - Se añade la opción de configuración
system_tables_lazy_load. Si se establece en false, las system tables con logs se cargan al iniciar el servidor. Alexander Burmak, Svyatoslav Tkhon Il Pak, #9642 #10359 (alexey-milovidov) - Usar el grupo de hilos en segundo plano (background_schedule_pool_size) para envíos distribuidos #10263 (Azat Khuzhin)
- Use el pool de hilos en segundo plano para el vaciado de búferes en segundo plano. #10315 (Azat Khuzhin)
- Soporte para un caso especial de eliminación de partes escritas de forma incompleta. Esto soluciona #9940. #10221 (alexey-milovidov)
- Use isInjective() en lugar de mantener una lista manual de esas funciones para optimizar GROUP BY. #10342 (Azat Khuzhin)
- Evita que se imprima un mensaje de error en el log si el cliente envía un paquete RST inmediatamente después de conectarse. Es el comportamiento típico del balanceador IPVS con keepalived y VRRP. Esto corrige #1851 #10274 (alexey-milovidov)
- Permitir interpretar
+infen tipos de coma flotante. Cierra #1839 #10272 (alexey-milovidov) - Se implementó la función de tabla
generateRandompara tipos Nested. Con esto se cierran #9903 #10219 (alexey-milovidov) - Se proporciona
max_allowed_packeden la interfaz de compatibilidad con MySQL, lo que ayudará a algunos clientes a comunicarse con ClickHouse a través del protocolo MySQL. #10199 (BohuTANG) - Permitir el uso de literales con GLOBAL IN (es decir,
SELECT * FROM remote('localhost', system.one) WHERE dummy global in (0)) #10196 (Azat Khuzhin) - Se solucionan varios problemas menores en el modo interactivo de clickhouse-client #10194 (alexey-milovidov)
- Evitar la carga innecesaria de diccionarios (system.tables, DROP/SHOW CREATE TABLE) #10164 (Azat Khuzhin)
- Actualización de RWLock: parámetro timeout para
getLock()+ implementación revisada para ofrecer equidad por fases #10073 (Alexander Kazakov) - Mejor compatibilidad con mysql-connector-java(JDBC) nativo #10021 (BohuTANG)
- La función
toStringse considera monótona y puede usarse en el análisis de índices incluso cuando se aplica en casos tautológicos con un argumento String o LowCardinality(String). #10110 (Amos Bird) - Se añadió compatibilidad con la cláusula
ON CLUSTERen los comandos{CREATE|DROP} USER/ROLE/ROW POLICY/SETTINGS PROFILE/QUOTA,GRANT. #9811 (Vitaly Baranov) - Compatibilidad con URI de S3 en estilo de alojamiento virtual #9998 (Pavel Kovalenko)
- Ahora, el tipo de layout para los diccionarios sin argumentos puede especificarse sin paréntesis en las consultas DDL de diccionarios. Corrige #10057. #10064 (alesapin)
- Se agregó la posibilidad de usar rangos numéricos con ceros a la izquierda en la ruta del archivo #9989 (Olga Khvostikova)
- Mejor uso de la memoria en CROSS JOIN. #10029 (Artem Zuikov)
- Se intenta conectar a todos los segmentos del clúster al obtener la estructura de la tabla remota cuando skip_unavailable_shards está habilitado. #7278 (nvartolomei)
- Se añaden
total_rows/total_bytesa la tablasystem.tables. #9919 (Azat Khuzhin) - Las tablas de registros del sistema ahora usan partes polimórficas de forma predeterminada. #9905 (Anton Popov)
- Añadir la columna type a system.settings/merge_tree_settings #9909 (Azat Khuzhin)
- Comprobar lo antes posible, durante el arranque del servidor, las instrucciones de CPU disponibles. #9888 (alexey-milovidov)
- Se elimina la etapa
ORDER BYde las mutaciones porque se lee de una única parte ordenada en un solo hilo. También se añade una comprobación de que las filas de la mutación estén ordenadas según la clave de ordenación y de que no se infrinja ese orden. #9886 (alesapin) - Se implementó el operador LIKE para FixedString en el lado izquierdo. Esto es necesario para mejorar la compatibilidad con las consultas TPC-DS. #9890 (alexey-milovidov)
- Se añade
force_optimize_skip_unused_shards_no_nested, que deshabilitaforce_optimize_skip_unused_shardspara una tabla Distributed anidada #9812 (Azat Khuzhin) - Ahora el tamaño de las columnas se calcula una sola vez para las partes de datos de MergeTree. #9827 (alesapin)
- Evaluación de expresiones constantes para
optimize_skip_unused_shards(es decir,SELECT * FROM foo_dist WHERE key=xxHash32(0)) #8846 (Azat Khuzhin) - Se eliminó la comprobación de que las expresiones TTL usen una columna
DateoDateTime. #9967 (Vladimir Chebotarev) - Implementación optimizada de enlaces duros en DiskS3. #9760 (Pavel Kovalenko)
- Si
set multiple_joins_rewriter_version = 2habilita la segunda versión de la reescritura de múltiples JOIN, que mantiene intactos los nombres de columna que no entran en conflicto. Admite múltiples JOIN conUSINGy permiteselect *en JOIN con subconsultas. #9739 (Artem Zuikov) - Implementación de alter “sin bloqueo” para StorageMergeTree #9606 (alesapin)
- Se añade compatibilidad total de MergeTree con DiskS3 #9646 (Pavel Kovalenko)
- Se amplía
splitByStringpara admitir cadenas vacías como separadores. #9742 (hcz) - Añade una columna
timestamp_nsasystem.trace_log. Contiene una marca temporal de alta resolución del evento de traza y permite crear líneas de tiempo de perfiles de hilos (“gráficos de llama”). #9696 (Alexander Kuzmenkov) - Cuando está habilitada la configuración
send_logs_level, se evita mezclar los mensajes de registro con el progreso de la consulta. #9634 (Azat Khuzhin) - Se agregó soporte para
MATERIALIZE TTL IN PARTITION. #9581 (Vladimir Chebotarev) - Compatibilidad con tipos complejos en campos anidados de Avro #10502 (Andrew Onyshchuk)
Mejora de rendimiento
- Mejor lógica de inserción para la tabla derecha en Partial MergeJoin. #10467 (Artem Zuikov)
- Mejor rendimiento de los formatos orientados a filas (más del 10 % para CSV y más del 35 % para Avro en el caso de tablas estrechas). #10503 (Andrew Onyshchuk)
- Mejor rendimiento de las consultas con conjuntos definidos explícitamente en el lado derecho del operador IN y tuplas en el lado izquierdo. #10385 (Anton Popov)
- Menor uso de memoria para la tabla hash en HashJoin. #10416 (Artem Zuikov)
- HashJoin especial sobre StorageDictionary. Permite reescribir las funciones
dictGet()como JOINs. No es incompatible con versiones anteriores por sí mismo, pero podría dejar al descubierto #8400 en algunas instalaciones. #10133 (Artem Zuikov) - Habilita la inserción en paralelo de la vista materializada cuando su tabla de destino lo admita. #10052 (vxider)
- Mejor rendimiento del análisis de índices con funciones monótonas. #9607#10026 (Anton Popov)
- Uso de instrucciones intrínsecas SIMD SSE2 o SSE4.2 para acelerar la tokenización en filtros de Bloom. #9968 (Vasily Nemkov)
- Mejor rendimiento de las consultas con conjuntos definidos explícitamente en el lado derecho del operador
IN. Esto corrige una regresión de rendimiento en la versión 20.3. #9740 (Anton Popov) - Ahora clickhouse-copier divide cada partición en varias partes y las copia de forma independiente. #9075 (Nikita Mikhaylov)
- Se añaden más métodos de agregación. Por ejemplo, la consulta 1 de TPC-H ahora seleccionará
FixedHashMap<UInt16, AggregateDataPtr>y obtendrá una mejora de rendimiento del 25 %. #9829 (Amos Bird) - Usa un único contador de filas para varios flujos en la transformación pre-limit. Esto ayuda a evitar la unificación de flujos del pipeline en consultas con
limitpero sinorder by(comoselect f(x) from (select x from t limit 1000000000)) y a usar varios hilos para el procesamiento posterior. #9602 (Nikolai Kochetov)
Mejora de compilación/pruebas/empaquetado
- Usar un fork de las bibliotecas de AWS SDK de ClickHouse-Extras #10527 (Pavel Kovalenko)
- Se añaden pruebas de integración para la nueva consulta ALTER RENAME COLUMN. #10654 (vzakaznikov)
- Corrige un posible desbordamiento de enteros con signo al invocar la función
now64con argumentos incorrectos. Esto corrige #8973 #10511 (alexey-milovidov) - Separar la configuración de
fuzzery la del sanitizador para que la configuración de compilación sea compatible con Oss-fuzz. #10494 (kyprizel) - Correcciones de clang-tidy para clang-10. #10420 (alexey-milovidov)
- Mostrar rutas absolutas en los mensajes de error. De lo contrario, KDevelop no puede ir al archivo correcto y en su lugar abre un archivo nuevo. #10434 (alexey-milovidov)
- Se añadió la variable de entorno
ASAN_OPTIONSpara investigar errores en las pruebas de estrés de CI con AddressSanitizer. #10440 (Nikita Mikhaylov) - Se habilita ThinLTO para las compilaciones de clang (experimental). #10435 (alexey-milovidov)
- Se elimina la dependencia accidental de Z3 que puede introducirse si el sistema tiene instalado el solucionador Z3. #10426 (alexey-milovidov)
- Mover los archivos de Docker de las pruebas de integración al directorio docker/. #10335 (Ilya Yatsishin)
- Permitir usar
clang-10en CI. Esto garantiza que #10238 quede solucionado. #10384 (alexey-milovidov) - Se actualizó OpenSSL a la rama
masterupstream. Se corrigió el problema por el que las conexiones TLS podían fallar con el mensajeOpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal errorySSL Exception: error:2400006E:random number generator::error retrieving entropy. El problema estaba presente en la versión 20.1. #8956 (alexey-milovidov) - Se corrigió la compilación con clang-10. #10238 #10370 (Amos Bird)
- Se añadió una prueba de rendimiento para INSERT paralelo para vista materializada. #10345 (vxider)
- Se corrigió la prueba inestable
test_settings_constraints_distributed.test_insert_clamps_settings. #10346 (Vitaly Baranov) - Agregar una utilidad para subir resultados de pruebas en la CI de ClickHouse #10330 (Ilya Yatsishin)
- Conversión de los resultados de las pruebas al formato JSONEachRow en la herramienta junit_to_html #10323 (Ilya Yatsishin)
- Se actualizó cctz. #10215 (alexey-milovidov)
- Permite crear un informe HTML a partir de un informe XML de JUnit puro. #10247 (Ilya Yatsishin)
- Se actualizó la comprobación de la versión mínima del compilador. Se corrigió la causa raíz del problema #10250 #10256 (alexey-milovidov)
- Soporte inicial para tablas live view en Distributed #10179 (vzakaznikov)
- Se corrige el informe (falso) de MSan en MergeTreeIndexFullText. El problema apareció por primera vez en #9968. #10801 (alexey-milovidov)
- clickhouse-docker-util #10151 (filimonov)
- Actualizar pdqsort a una versión más reciente #10171 (Ivan)
- Se actualiza libdivide a la versión 3.0 #10169 (Ivan)
- Se añadió una comprobación para cuando están habilitadas las partes polimórficas. #10086 (Anton Popov)
- Se añade compilación cruzada para FreeBSD. Esto corrige #9465 #9643 (Ivan)
- Añadida prueba de rendimiento para #6924 #6980 (filimonov)
- Se añadió soporte para
/dev/nullen el motorFilepara mejorar las pruebas de rendimiento #8455 (Amos Bird) - Mover todas las carpetas de /dbms un nivel arriba #9974 (Ivan)
- Añadir una prueba que compruebe que la lectura desde MergeTree con un solo hilo se realiza en orden. Como complemento de #9670 #9762 (alexey-milovidov)
- Se corrigió la prueba
00964_live_view_watch_events_heartbeat.pypara evitar una condición de carrera. #9944 (vzakaznikov) - Corregida la prueba de integración
test_settings_constraints#9962 (Vitaly Baranov) - Cada función en un archivo propio, parte 12. #9922 (alexey-milovidov)
- Se añadió una prueba de rendimiento para el caso de un análisis extremadamente lento de un array de tuplas. #9872 (alexey-milovidov)
- Actualiza zstd a 1.4.4. Incluye algunas mejoras menores en el rendimiento y en la relación de compresión. Si ejecutas réplicas con distintas versiones de ClickHouse, es posible que veas mensajes de error adecuados, como
Data after merge is not byte-identical to data on another replicas., con una explicación. Estos mensajes son normales y no deberías preocuparte. #10663 (alexey-milovidov) - Se corrigió el informe de TSan en
system.stack_trace. #9832 (alexey-milovidov) - Se eliminó la dependencia de
clock_getres. #9833 (alexey-milovidov) - Se añadió una comprobación de nombres de identificadores con clang-tidy. #9799 (alexey-milovidov)
- Se actualizó la imagen de Docker “builder”. Esta imagen no se usa en CI, pero es útil para los desarrolladores. #9809 (alexey-milovidov)
- Se elimina la antigua herramienta
performance-test, que ya no se usa en CI.clickhouse-performance-testes una gran herramienta, pero ahora usamos otra muy superior que realiza pruebas comparativas con sofisticadas fórmulas estadísticas para obtener resultados fiables independientemente de los cambios en el entorno. #9796 (alexey-milovidov) - Se añadieron la mayoría de las comprobaciones de clang-static-analyzer. #9765 (alexey-milovidov)
- Se actualizó Poco a la versión 1.9.3 para preparar la compatibilidad con URI de MongoDB. #6892 (Alexander Kuzmenkov)
- Se corrigió la compilación con
-DUSE_STATIC_LIBRARIES=0 -DENABLE_JEMALLOC=0#9651 (Artem Zuikov) - En el script del registro de cambios, si se aplicó un
cherry-pickdel commit de fusión a la rama de lanzamiento, tome el nombre del PR de la descripción del commit. #9708 (Nikolai Kochetov) - Se admite la etiqueta
vX.X-conflictsen el script de backport. #9705 (Nikolai Kochetov) - Se corrige
auto-labelen el script de backport. #9685 (Nikolai Kochetov) - Usar libc++ en la compilación cruzada para Darwin para mantener la coherencia con la compilación native. #9665 (Hui Wang)
- Corregir la prueba inestable
01017_uniqCombined_memory_usage. Continuación de #7236. #9667 (alexey-milovidov) - Se corrige la compilación con el compilador nativo Clang de macOS #9649 (Ivan)
- Permitir añadir varios fallos en torno a las funciones
pthread_mutex_lock,pthread_mutex_unlock. #9635 (alexey-milovidov) - Se añadió compatibilidad con
clang-tidyen el scriptpackager. #9625 (alexey-milovidov) - Se agregó la posibilidad de usar msgpack sin incluirlo en el paquete. #10168 (Azat Khuzhin)
Lanzamiento de ClickHouse v20.3
Lanzamiento de ClickHouse v20.3.21.2-lts, 2020-11-02
Corrección de errores
- Se corrige dictGet en sharding_key (y en lugares similares, es decir, cuando el contexto de la función se almacena de forma permanente). #16205 (Azat Khuzhin).
- Se corrige un resultado vacío erróneo en una consulta de una tabla
Distributedsi la consulta incluyeWHERE,PREWHEREyGLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov). - Se corrigen cabeceras faltantes o de más en los formatos
TSV/CSVWithNames. Esto corrige #12504. #13343 (Azat Khuzhin).
Lanzamiento de ClickHouse v20.3.20.6-lts, 2020-10-09
Corrección de errores
- Una mutación podía quedarse bloqueada esperando alguna parte inexistente después de
MOVEoREPLACE PARTITIONo, en casos excepcionales, después deDETACHoDROP PARTITION. Ya se corrigió. #15724, #15537 (tavplubix). - Se corrige el bloqueo de consultas con muchas subconsultas sobre la misma tabla del motor
MySQL. Anteriormente, si había más de 16 subconsultas sobre la misma tablaMySQLen una consulta, esta quedaba bloqueada indefinidamente. #15299 (Anton Popov). - Se corrige el error “Unknown identifier” en GROUP BY cuando la consulta tiene un JOIN sobre una tabla Merge. #15242 (Artem Zuikov).
- Se corrige el push down de predicados para que funcione cuando una subconsulta contiene la función finalizeAggregation. Corrige #14847. #14937 (filimonov).
- Las consultas concurrentes
ALTER ... REPLACE/MOVE PARTITION ...podían causar un interbloqueo. Ya se corrigió. #13626 (tavplubix).
Lanzamiento de ClickHouse v20.3.19.4-lts, 2020-09-18
Corrección de errores
- Corrige un error poco frecuente en consultas
SELECTcuando la columna consultada tiene una expresiónDEFAULTque depende de otra columna que también tieneDEFAULT, no está presente en la consultaSELECTy no existe en disco. Corrige parcialmente #14531. #14845 (alesapin). - Corrige un error por el que una mutation
ALTER UPDATEcon una columna Nullable en la expresión de asignación y un valor constante (comoUPDATE x = 42) provoca un valor incorrecto en la columna o un fallo de segmentación. Corrige #13634, #14045. #14646 (alesapin). - Corrige un resultado incorrecto en la multiplicación de Decimal causado por una escala decimal incorrecta en la columna de resultado. #14603 (Artem Zuikov).
Mejora
- Soporte para codecs personalizados en partes compactas. #12183 (Anton Popov).
Lanzamiento de ClickHouse v20.3.18.10-lts, 2020-09-08
Corrección de errores
- Detener la ejecución de la consulta si se produce una excepción en el propio
PipelineExecutor. Esto podría evitar que, en casos poco frecuentes, la consulta quede bloqueada. Continuación de #14334. #14402 (Nikolai Kochetov). - Se corrigió el comportamiento por el que, en ocasiones, el Diccionario cache devolvía el valor predeterminado en lugar del valor presente desde el origen. #13624 (Nikita Mikhaylov).
- Se corrigió el análisis de row policies desde users.xml cuando los nombres de las bases de datos o las tablas contienen puntos. Esto corrige #5779, #12527. #13199 (Vitaly Baranov).
- Corregido CAST(Nullable(String), Enum()). #12745 (Azat Khuzhin).
- Se corrigió una condición de carrera en
text_log. No corresponde a ningún error real. #9726 (alexey-milovidov).
Mejora
- Se corrige un error incorrecto para consultas largas. Era posible obtener un error de sintaxis distinto de
Max query size exceededpara una consulta correcta. #13928 (Nikolai Kochetov). - Devuelve NULL/cero cuando el valor no se procesa por completo en las funciones parseDateTimeBestEffortOrNull/Zero. Esto corrige #7876. #11653 (alexey-milovidov).
Mejora de rendimiento
- Se optimizan ligeramente las consultas muy breves con LowCardinality. #14129 (Anton Popov).
Mejora de compilación/pruebas/empaquetado
- Se corrigió un reporte de UBSan (sumar cero a nullptr) en HashTable que apareció tras la migración a clang-10. #10638 (alexey-milovidov).
Lanzamiento de ClickHouse v20.3.17.173-lts, 2020-08-15
Corrección de errores
- Se corrige un cierre inesperado en JOIN con StorageMerge y
set enable_optimize_predicate_expression=1. #13679 (Artem Zuikov). - Se corrige un tipo de retorno no válido en la comparación de tuplas con elementos
NULL. Corrige #12461. #13420 (Nikolai Kochetov). - Se corrigen las consultas con columnas constantes y con un prefijo
ORDER BYde la clave primaria. #13396 (Anton Popov). - Devuelve el número de entrada para los números con el MSB establecido en roundUpToPowerOfTwoOrZero(). #13234 (Azat Khuzhin).
Lanzamiento de ClickHouse v20.3.16.165-lts 2020-08-10
Corrección de errores
- Se corrigió un error en la función
parseDateTimeBestEffortcuando se pasaba una marca de tiempo Unix como argumento. Esto corrige #13362. #13441 (alexey-milovidov). - Se corrigió un posible bajo rendimiento y un resultado ligeramente incorrecto en
uniqExact,topK,sumDistincty funciones de agregación similares aplicadas a tipos Float con valoresNaN. También provocaba una aserción en una compilación de depuración. Esto corrige #12491. #13254 (alexey-milovidov). - Se corrigió la función if con un constexpr Nullable como cond que no es un NULL literal. Corrige #12463. #13226 (alexey-milovidov).
- Se corrigió un assert en la función
arrayElementcuando los elementos del array son Nullable y el subíndice del array también es Nullable. Esto corrige #12172. #13224 (alexey-milovidov). - Se corrigió la limitación innecesaria del número de hilos en las consultas SELECT desde la réplica local. #12840 (Nikolai Kochetov).
- Se corrigió una posible fila adicional por desbordamiento en los datos que podía aparecer en consultas
WITH TOTALS. #12747 (Nikolai Kochetov). - Se corrigió el rendimiento con tuplas grandes, que se interpretaban como funciones en la sección
IN. Es el caso en que el usuario escribeWHERE x IN tuple(1, 2, ...)en lugar deWHERE x IN (1, 2, ...)por alguna razón poco clara. #12700 (Anton Popov). - Se corrigió el seguimiento de memoria para input_format_parallel_parsing (asociando el hilo al grupo). #12672 (Azat Khuzhin).
- Se corrigió #12293 para permitir el push predicate cuando la subconsulta contiene una cláusula WITH. #12663 (Winter Zhang).
- Se corrigió #10572: el índice bloom filter con una expresión const. #12659 (Winter Zhang).
- Se corrigió un SIGSEGV en StorageKafka cuando el broker no estaba disponible (y no solo en ese caso). #12658 (Azat Khuzhin).
- Se corrigió una condición de carrera en diccionarios externos con layout cache que podía provocar un fallo del servidor. #12566 (alesapin).
- Se corrigió un error que hacía que las partes antiguas quedaran dañadas después de la consulta
ALTER DELETEcuandoenable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin). - Mejor excepción en la función
incuando el número de argumentos no es válido. #12529 (Anton Popov). - Se corrigió un problema de rendimiento al leer partes compactas. #12492 (Anton Popov).
- Se corrigió el interbloqueo cuando
text_logestá habilitado. #12452 (alexey-milovidov). - Se corrigió un posible segfault en StorageMerge. Cierra #12054. #12401 (tavplubix).
- Se corrigió
TOTALS/ROLLUP/CUBEen las funciones de agregación con argumentos-StateyNullable. Esto corrige #12163. #12376 (alexey-milovidov). - Se corrigió el orden de las columnas en el modificador
WITH FILL. Anteriormente, no se respetaba el orden de las columnas de la cláusulaORDER BY. #12306 (Anton Popov). - Se evita la excepción “bad cast” cuando hay una expresión que filtra datos por columnas virtuales (como
_tableen las tablasMerge) o por columnas de “índice” en tablas del sistema, como al filtrar por el nombre de la base de datos al consultarsystem.tables, y esta expresión devuelve el tipoNullable. Esto corrige #12166. #12305 (alexey-milovidov). - Mostrar un error tras fallar la carga de
TrieDictionary. #12290 (Vitaly Baranov). - La función
arrayFillfuncionaba incorrectamente con arrays vacíos, lo que podía provocar un bloqueo. Esto corrige #12263. #12279 (alexey-milovidov). - Implementar conversiones al tipo común para los tipos
LowCardinality. Esto permite ejecutar UNION ALL entre tablas con columnasLowCardinalityy otras columnas. Esto corrige #8212. Esto corrige #4342. #12275 (alexey-milovidov). - Se corrigió el comportamiento por el que, durante múltiples inserciones secuenciales en
StorageFile, la cabecera de algunos tipos especiales se escribía más de una vez. Con esto se corrige #6155. #12197 (Nikita Mikhaylov). - Se corrigieron las funciones lógicas para valores UInt8 cuando no eran 0 ni 1. #12196 (Alexander Kazakov).
- Se corrigió la validación de los argumentos de
dictGetdurante la eliminación de funciones inyectivas en GROUP BY. #12179 (Azat Khuzhin). - Se corrigió la lógica incorrecta en
ALTER DELETEque provocaba la eliminación de registros cuando la condición se evaluaba como NULL. Esto corrige #9088. Esto cierra #12106. #12153 (alexey-milovidov). - Se corrigió la transformación de la consulta para enviarla al SGBD externo (p. ej., MySQL, ODBC) en presencia de alias. Esto corrige #12032. #12151 (alexey-milovidov).
- Se corrigió un posible desbordamiento en la división de enteros. Corrige #12119. #12140 (alexey-milovidov).
- Se corrigió un posible bucle infinito en
greatCircleDistanceygeoDistance. Esto soluciona #12117. #12137 (alexey-milovidov). - Evita la excepción
There is no queryen vistas materializadas con JOIN o con subconsultas adjuntas a los logs del sistema (system.query_log, metric_log, etc.) o a la tabla subyacente de engine=Buffer. #12120 (filimonov). - Se corrigió el rendimiento de las consultas
SELECTconUNION, afectado por un límite incorrecto del número total de hilos. Corrige #12030. #12103 (Nikolai Kochetov). - Se corrigió un fallo de segmentación con los combinadores
-StateResample. #12092 (Anton Popov). - Se corrigió la limitación innecesaria del número de hilos para las consultas SELECT desde
VIEW. Corrige #11937. #12085 (Nikolai Kochetov). - Se corrigió un posible cierre inesperado al usar un tipo incorrecto para
PREWHERE. Corrige #12053, #12060. #12060 (Nikolai Kochetov). - Se corrigió el error
Expected single dictionary argument for functionen la funcióndefaultValueOfArgumentTypecon el tipoLowCardinality. Corrige #11808. #12056 (Nikolai Kochetov). - Se corrigió el error
Cannot capture columnen funciones de orden superior con un argumentoTuple(LowCardinality). Corrige #9766. #12055 (Nikolai Kochetov). - Analizar en paralelo los metadatos de las tablas al cargar la base de datos. Esto corrige el arranque lento del servidor cuando hay una gran cantidad de tablas. #12045 (tavplubix).
- Hacer que la función de agregación
topKdevuelva un Enum para los tipos Enum. Esto corrige #3740. #12043 (alexey-milovidov). - Se corrigió la comprobación de restricciones cuando la restricción es una expresión constante. Esto corrige #11360. #12042 (alexey-milovidov).
- Se ha corregido la comparación incorrecta de tuplas con columnas
Nullable. Soluciona #11985. #12039 (Nikolai Kochetov). - Se corrigieron un resultado incorrecto y un posible fallo al invocar la función
ifcon argumentos de tipoFixedStringde distintos tamaños. Esto corrige #11362. #12021 (alexey-milovidov). - Una consulta en la que la función
neighbores la única expresión devuelta puede producir un resultado vacío si se llama a la función con el offset-9223372036854775808. Esto corrige #11367. #12019 (alexey-milovidov). - Se corrigió un posible desbordamiento en el tamaño del array en generateRandom que podía provocar un bloqueo. Esto corrige #11371. #12013 (alexey-milovidov).
- Se corrigió una posible excepción de punto flotante. Esto cierra #11378. #12005 (alexey-milovidov).
- Se corrigió un nombre de ajuste incorrecto en el mensaje de registro durante el inicio del servidor. #11997 (alexey-milovidov).
- Se corrigió el error
Query parameter was not seten el formatoValues. Corrige #11918. #11936 (tavplubix). - Conservar los alias para las sustituciones en la consulta (consultas parametrizadas). Esto corrige #11914. #11916 (alexey-milovidov).
- Se corrigió una posible excepción de coma flotante al procesar DateTime64. Esto corrige #11374. #11875 (alexey-milovidov).
- Se corrigió el cómputo de memoria en la interfaz
HTTP(puede ser significativo conwait_end_of_query=1). #11840 (Azat Khuzhin). - Se corrigió un resultado incorrecto de
if()con valores NULL en la condición. #11807 (Artem Zuikov). - Analizar los metadatos almacenados en ZooKeeper antes de comprobar si coinciden. #11739 (Azat Khuzhin).
- Se corrigió el uso de
LIMIT n WITH TIESjunto con la cláusulaORDER BY, que contiene alias. #11689 (Anton Popov). - Se corrige una posible lectura de memoria no inicializada en el diccionario de caché. #10834 (alexey-milovidov).
Mejora de rendimiento
- No se utiliza el índice para el operador IN con literales; regresión de rendimiento introducida en torno a la versión 19.3. Esto corrige #10574. #12062 (nvartolomei).
Lanzamiento de ClickHouse v20.3.12.112-lts 2020-06-25
Corrección de errores
- Soluciona un fallo poco frecuente causado al usar la columna
Nullableen la condición prewhere. Continuación de #11608. #11869 (Nikolai Kochetov). - No se permite arrayJoin dentro de las funciones de orden superior. Provocaba una desincronización del protocolo. Cierra #3933. #11846 (alexey-milovidov).
- Corregido el uso de demasiados hilos en las consultas. #11788 (Nikolai Kochetov).
- Se corrige el comportamiento inesperado de consultas como
SELECT *, xyz.*, que se ejecutaban correctamente cuando debería haberse producido un error. #11753 (hexiaoting). - Ahora los fetches replicados se cancelarán durante la modificación de metadatos. #11744 (alesapin).
- Se corrigió LOGICAL_ERROR causado por una inferencia incorrecta del tipo de literales complejos en el formato de entrada Values. #11732 (tavplubix).
- Se corrige
ORDER BY ... WITH FILLen columnas constantes. #11697 (Anton Popov). - Use tiempos de espera adecuados al comunicarse con el puente XDBC. Recientemente, no se respetaban los tiempos de espera al comprobar la disponibilidad del puente y al recibir metainformación. #11690 (alexey-milovidov).
- Corrige un error que provoca un estado incorrecto de
system.mutations. Puede mostrar que la mutación completa ya ha finalizado, pero el servidor aún tiene tareasMUTATE_PARTen la cola de replicación e intenta ejecutarlas. Esto corrige #11611. #11681 (alesapin). - Se añade soporte para expresiones regulares con indicadores que no distinguen entre mayúsculas y minúsculas. Esto corrige #11101 y #11506. #11649 (alexey-milovidov).
- Eliminar la optimización trivial de la consulta
countsi está configurada la seguridad a nivel de fila. En versiones anteriores, el usuario obtenía el recuento total de registros de una tabla en lugar del recuento filtrado. Esto corrige #11352. #11644 (alexey-milovidov). - Corrige los bloom filters de String (índices de omisión de datos). #11638 (Azat Khuzhin).
- Se corrige un fallo poco frecuente causado por el uso de la columna
Nullableen la condición prewhere. (Probablemente esté relacionado de algún modo con #11572). #11608 (Nikolai Kochetov). - Soluciona el error
Block structure mismatchen consultas con muestreo que leen de la tablaBuffer. #11602 (Nikolai Kochetov). - Se corrigió el código de salida incorrecto de clickhouse-client cuando exception.code() % 256 = 0. #11601 (filimonov).
- Corrige un error trivial en el mensaje de registro sobre “Mark cache size was lowered” durante el inicio del server. Esto cierra #11399. #11589 (alexey-milovidov).
- Soluciona el error
Size of offsets does not match size of columnen consultas conPREWHERE column in (subquery)yARRAY JOIN. #11580 (Nikolai Kochetov). - Todas las consultas de una sesión HTTP tenían el mismo query_id. Se ha corregido. #11578 (tavplubix).
- Ahora el contenedor Docker de clickhouse-server preferirá IPv6 al comprobar si el servidor está activo. #11550 (Ivan Starkov).
- Corregir shard_num/replica_num en
<node>(rompe use_compact_format_in_distributed_parts_names). #11528 (Azat Khuzhin). - Corrige una fuga de memoria cuando se produce una excepción en medio de una agregación con funciones -State. Esto corrige #8995. #11496 (alexey-milovidov).
- Corrige resultados erróneos de consultas distribuidas cuando un alias podía sobrescribir un nombre de columna cualificado. Corrige #9672 #9714. #9972 (Artem Zuikov).
Lanzamiento de ClickHouse v20.3.11.97-lts 2020-06-10
Nueva funcionalidad
- Ahora ClickHouse controla los tiempos de espera de las fuentes del diccionario de su lado. Se añadieron dos nuevas opciones de configuración a la configuración del diccionario cache:
strict_max_lifetime_seconds, que por defecto esmax_lifetime, yquery_wait_timeout_milliseconds, que por defecto es de un minuto. La primera opción de configuración también es útil con la opciónallow_read_expired_keys(para impedir la lectura de claves demasiado expiradas). #10337 (Nikita Mikhaylov).
Corrección de errores
- Se corrige el error
Data compressed with different methodsque puede producirse simin_bytes_to_use_direct_ioestá habilitado, PREWHERE está activo y se usa SAMPLE o un número elevado de hilos. Esto corrige #11539. #11540 (alexey-milovidov). - Corregido el tamaño comprimido devuelto para los códecs. #11448 (Nikolai Kochetov).
- Se corrige el cierre inesperado del servidor cuando una columna tiene un codec de compresión con argumentos no literales. Corrige #11365. #11431 (alesapin).
- Se corrige pointInPolygon cuando el punto es nan. Corrige #11375. #11421 (Alexey Ilyukhov).
- Se corrige un fallo en JOIN sobre LowCarinality(T) y Nullable(T). #11380. #11414 (Artem Zuikov).
- Se corrige el código de error para una palabra clave
USINGincorrecta. #11373. #11404 (Artem Zuikov). - Se corrigió
geohashesInBoxcuando los argumentos estaban fuera del rango de latitud/longitud. #11403 (Vasily Nemkov). - Mensajes de error mejorados para las funciones
joinGet(). #11389 (Artem Zuikov). - Se corrige un posible error
Pipeline stucken consultas con ordenación externa y LIMIT. Corrige #11359. #11366 (Nikolai Kochetov). - Se elimina el bloqueo redundante durante el envío de partes en ReplicatedMergeTree. #11354 (alesapin).
- Se corrigió el soporte para
\G(salida vertical) en clickhouse-client en modo multilínea. Esto cierra #9933. #11350 (alexey-milovidov). - Corrige el fallo en las selecciones directas desde StorageJoin (sin JOIN) y la nulabilidad errónea. #11340 (Artem Zuikov).
- Se ha corregido un fallo en
quantilesExactWeightedArray. #11337 (Nikolai Kochetov). - Ahora, las fusiones se detienen antes de modificar los metadatos en las consultas
ALTER. #11335 (alesapin). - Vuelve a hacer paralela la escritura en
MATERIALIZED VIEWcon la configuraciónparallel_view_processing = 1. Corrige #10241. #11330 (Nikolai Kochetov). - Se corrigió visitParamExtractRaw cuando el JSON extraído contiene cadenas con { o [ sin cerrar. #11318 (Ewout).
- Se corrigió una condición de carrera muy poco frecuente en ThreadPool. #11314 (alexey-milovidov).
- Se corrige un posible uso de memoria no inicializada en la conversión. Ejemplo:
SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov). - Corrige el problema por el que el análisis de índices no funciona si una tabla tiene una columna de tipo Array en la clave primaria y si una consulta filtra por esta columna con las funciones
emptyonotEmpty. Esto corrige #11286. #11303 (alexey-milovidov). - Se corrige un error por el que la estimación de velocidad de la consulta podía ser incorrecta, y el límite de
min_execution_speedpodía no funcionar o funcionar incorrectamente si la consulta estaba limitada por la configuración demax_network_bandwidth,max_execution_speedopriority. Se cambia el valor predeterminado detimeout_before_checking_execution_speeda un valor distinto de cero, porque de lo contrario la configuraciónmin_execution_speedymax_execution_speedno tienen efecto. Esto corrige #11297. Esto corrige #5732. Esto corrige #6228. Mejora de usabilidad: se evita la concatenación del mensaje de excepción con la barra de progreso enclickhouse-client. #11296 (alexey-milovidov). - Se corrige un fallo al leer datos con formato Protobuf incorrecto. Esto corrige #5957 y #11203. #11258 (Vitaly Baranov).
- Se corrigió un error por el que el diccionario de caché podía devolver el valor predeterminado en lugar del valor normal (cuando solo había claves caducadas). Esto afecta solo a los campos de tipo String. #11233 (Nikita Mikhaylov).
- Se corrige el error
Block structure mismatch in QueryPipelineal leer desdeVIEWcon constantes en la consulta interna. Soluciona #11181. #11205 (Nikolai Kochetov). - Se corrigió la posible excepción
Invalid status for associated output. #11200 (Nikolai Kochetov). - Se corrigió el posible error
Cannot capture columnen funciones de orden superior con el argumento capturadoArray(Array(LowCardinality)). #11185 (Nikolai Kochetov). - Se corrigió el globbing de S3, que podía fallar cuando había más de 1000 objetos y con algunos backends. #11179 (Vladimir Chebotarev).
- Si el índice de omisión de datos depende de columnas que se modificarán durante una fusión en segundo plano (en SummingMergeTree, AggregatingMergeTree y también en TTL GROUP BY), se calculaba de forma incorrecta. Este problema se ha corregido moviendo el cálculo del índice después de la fusión, de modo que el índice se calcule sobre los datos ya fusionados. #11162 (Azat Khuzhin).
- Se corrigió la reserva excesiva de hilos para consultas simples (optimización para reducir el número de hilos, que quedó parcialmente rota tras cambios en el pipeline). #11114 (Azat Khuzhin).
- Se corrige la optimización de predicados en consultas distribuidas (
enable_optimize_predicate_expression=1) para consultas con secciónHAVING(es decir, cuando se requiere filtrar en el servidor iniciador), preservando el orden de las expresiones (lo cual basta para corregirlo), y además se obliga al agregador a usar nombres de columna en lugar de índices. Correcciones: #10613, #11413. #10621 (Azat Khuzhin). - Se introdujo una lógica de reintento para la confirmación a fin de reducir la posibilidad de obtener duplicados de Kafka en los casos poco frecuentes en que fallaba la confirmación del offset. #9884 (filimonov).
Mejora de rendimiento
- Obtener el diccionario y comprobar los permisos de acceso una sola vez por cada llamada a cualquier función que lea diccionarios externos. #10928 (Vitaly Baranov).
Mejora de compilación/pruebas/empaquetado
Lanzamiento de ClickHouse v20.3.10.75-lts 2020-05-23
Corrección de errores
- Se eliminó el logging de la tarea de finalización de mutation cuando no se finalizaba nada. #11109 (alesapin).
- Se corrigieron errores en la resolución de argumentos de
parseDateTime64BestEffort. #11038 (Vasily Nemkov). - Se corrigió el tamaño incorrecto de los datos en bruto en el método
getRawData(). #10964 (Igr). - Se corrigió la incompatibilidad de la agregación en dos niveles entre la versión 20.1 y las anteriores. Esta incompatibilidad se produce cuando se usan distintas versiones de ClickHouse en el nodo iniciador y en los nodos remotos, el resultado de
GROUP BYes grande y la agregación se realiza sobre un único campoString. Esto provoca varias filas sin fusionar para una misma clave en el resultado. #10952 (alexey-milovidov). - Se restableció la compatibilidad con versiones anteriores de las tuplas en las tablas
Distributed. #10889 (Anton Popov). - Se corrigió
SIGSEGVenStringHashTablecuando esa clave no existe. #10870 (Azat Khuzhin). - Se corrigió un error en
ReplicatedMergeTreeque podía hacer que algunas consultasALTERsobreOPTIMIZEquedaran bloqueadas esperando a alguna réplica después de que esta pasara a estar inactiva. #10849 (tavplubix). - Se corrigió el orden de las columnas tras
Block::sortColumns(). #10826 (Azat Khuzhin). - Se solucionó el problema con el puente
ODBCcuando no se solicita poner entre comillas los identificadores. Corrige #7984. #10821 (alexey-milovidov). - Se corrigió el reporte de
UBSanyMSanenDateLUT. #10798 (alexey-milovidov). - Se corrigió una conversión de tipos incorrecta en las condiciones de clave. Corrige #6287. #10791 (Andrew Onyshchuk)
- Se corrigió el comportamiento de
parallel_view_processing. Ahora, si se produce una excepción, deben finalizar todas las inserciones enMATERIALIZED VIEWque no hayan generado ninguna excepción. Corrige #10241. #10757 (Nikolai Kochetov). - Se corrigieron los combinadores -
OrNully-OrDefaultcuando se combinan con-State. #10741 (hcz). - Se corrigió un cierre inesperado en
generateRandomcon tipos anidados. Soluciona #10583. #10734 (Nikolai Kochetov). - Se corrigió una corrupción de datos en la columna clave
LowCardinality(FixedString)deSummingMergeTree, que podía producirse después de una fusión. Corrige #10489. #10721 (Nikolai Kochetov). - Se corrigió un posible desbordamiento de búfer en la función
h3EdgeAngle. #10711 (alexey-milovidov). - Se corrigieron los totales que desaparecían. Los totales podían haberse filtrado si la consulta incluía un JOIN o una subconsulta con una cláusula WHERE externa. Corrige #10674. #10698 (Nikolai Kochetov).
- Se corrigieron varios usos del operador
INcon el mismo conjunto en una misma consulta. #10686 (Anton Popov). - Se corrigió un error que provocaba que las solicitudes HTTP se quedaran bloqueadas cuando se cerraba el cliente con
readonly=2ycancel_http_readonly_queries_on_client_close=1. Corrige #7939, #7019, #7736, #7091. #10684 (tavplubix). - Se corrigió el orden de los parámetros en el constructor de
AggregateTransform. #10667 (palasonic1). - Se corrigió la falta de ejecución paralela de las consultas remotas con
distributed_aggregation_memory_efficientactivado. Corrige #10655. #10664 (Nikolai Kochetov). - Se corrigió un posible recuento incorrecto de filas en consultas con
LIMIT. Corrige #10566, #10709. #10660 (Nikolai Kochetov). - Se corrigió un error que bloqueaba los ALTER concurrentes cuando la tabla tiene muchas partes. #10659 (alesapin).
- Se corrigió un error por el que, en la consulta
SYSTEM DROP DNS CACHE, también se eliminaban las cachés que se usan para comprobar si un usuario tiene permitido conectarse desde determinadas direcciones IP. #10608 (tavplubix). - Se corrigieron resultados escalares incorrectos en la consulta interna de
MATERIALIZED VIEWcuando dicha consulta contenía una tabla dependiente. #10603 (Nikolai Kochetov). - Se corrigió
SELECTde la columnaALIAScuyo tipo de expresión por defecto era diferente del tipo de la columna. #10563 (Azat Khuzhin). - Se implementó la comparación entre valores de DateTime64 y String. #10560 (Vasily Nemkov).
- Se corrigió la corrupción del índice, que puede producirse en algunos casos tras fusionar partes compactas en otra parte compacta. #10531 (Anton Popov).
- Se corrigió la situación en la que la mutación completaba todas las partes, pero se quedaba bloqueada en
is_done=0. #10526 (alesapin). - Se corrigió el desbordamiento al inicio de la época Unix para zonas horarias con un desplazamiento fraccional respecto a
UTC. Esto corrige #9335. #10513 (alexey-milovidov). - Se corrigió el cierre incorrecto del almacenamiento
Distributed. #10491 (Azat Khuzhin). - Se corrigió el desbordamiento numérico en
simpleLinearRegressionpara enteros grandes. #10474 (hcz).
Mejora de compilación/pruebas/empaquetado
- Se corrigió el problema detectado por UBSan en la biblioteca LZ4. #10631 (alexey-milovidov).
- Se corrigió la compilación con clang-10. #10238. #10370 (Amos Bird).
- Se añadieron pruebas que fallan relacionadas con la configuración
max_rows_to_sort. #10268 (alexey-milovidov). - Se añadieron algunas mejoras en la impresión de información de diagnóstico en los formatos de entrada. Corrige #10204. #10418 (tavplubix).
- Se añadieron certificados de CA a la imagen de Docker de clickhouse-server. #10476 (filimonov).
Corrección de errores
- Se corrige el error
the BloomFilter false positive must be a double number between 0 and 1#10551. #10569 (Winter Zhang).
Lanzamiento de ClickHouse v20.3.8.53, 2020-04-23
Corrección de errores
- Se corrigió el comportamiento incorrecto de las funciones de fecha y hora para zonas horarias que han alternado entre desfases positivos y negativos con respecto a UTC (p. ej., Pacific/Kiritimati). Esto corrige #7202 #10369 (alexey-milovidov)
- Se corrige un posible fallo de segmentación cuando
distributed_group_by_no_mergeestá habilitado (introducido en 20.3.7.46 por #10131). #10399 (Nikolai Kochetov) - Se corrige el aplanado incorrecto de los tipos de datos
Array(Tuple(...)). Esto corrige #10259 #10390 (alexey-milovidov) - Se elimina la reserva de discos en Aggregator. Esto corrige un error en la reserva de espacio en disco, que podía hacer que una agregación externa grande fallara incluso si podía completarse correctamente #10375 (Azat Khuzhin)
- Se corrigió la condición de carrera entre
DROPyOPTIMIZEenReplicatedMergeTree.DROPpodía dejar algunos residuos en la ruta de la réplica en ZooKeeper si había una consultaOPTIMIZEconcurrente. #10312 (tavplubix) - Se corrigió un error que impedía que el servidor adjuntara una tabla tras modificar el valor predeterminado de una columna. #10441 (alesapin)
- No elimine el directorio de metadatos cuando falle ATTACH DATABASE antes de cargar las tablas. #10442 (Winter Zhang)
- Se corrigieron varios errores que se producían cuando algunos datos se insertaban con quórum y luego se eliminaban de alguna forma (DROP PARTITION, TTL), lo que provocaba que los INSERTs quedaran bloqueados o que aparecieran excepciones de falso positivo en los SELECTs. Esto corrige #9946 #10188 (Nikita Mikhaylov)
- Se corrige un posible error
Pipeline stuckenConcatProcessorque podría haberse producido en una consulta remota. #10381 (Nikolai Kochetov) - Se corrigió un comportamiento erróneo en HashTable que provocaba un error de compilación al intentar leer HashMap desde el búfer. #10386 (palasonic1)
- Se permite usar
count(*)con múltiples JOINs. Corrige #9853 #10291 (Artem Zuikov) - Prefiera
fallback_to_stale_replicasen lugar deskip_unavailable_shards; de lo contrario, si se especifican ambas configuraciones y no hay réplicas actualizadas, la consulta fallará (parche de @alex-zaitsev). Corrige: #2564. #10422 (Azat Khuzhin) - Se soluciona el problema por el que una consulta con ARRAY JOIN, ORDER BY y LIMIT puede devolver un resultado incompleto. Esto corrige #10226. Autor: Vadim Plakhtinskiy. #10427 (alexey-milovidov)
- Compruebe el número y el tipo de argumentos al crear un índice BloomFilter #9623 #10431 (Winter Zhang)
Mejora del rendimiento
- Se mejoró el rendimiento de las consultas con conjuntos definidos explícitamente a la derecha del operador
INy con tuplas a la izquierda. Esto corrige la regresión de rendimiento de la versión 20.3. #9740, #10385 (Anton Popov)
Lanzamiento de ClickHouse v20.3.7.46, 2020-04-17
Corrección de errores
- Corrige el error
Logical error: CROSS JOIN has expressionsen queries con una combinación de joins con comas y joins con nombre. #10311 (Artem Zuikov). - Corrige queries con
max_bytes_before_external_group_by. #10302 (Artem Zuikov). - Corrige la optimización move-to-prewhere en presencia de funciones
arrayJoin(en ciertos casos). Esto corrige #10092. #10195 (alexey-milovidov). - Añade la posibilidad de relajar la restricción sobre el uso de funciones no deterministas en mutación con la configuración
allow_nondeterministic_mutations. #10186 (filimonov).
Lanzamiento de ClickHouse v20.3.6.40, 2020-04-16
Nueva funcionalidad
- Se agregó la función
isConstant. Esta función comprueba si su argumento es una expresión constante y devuelve 1 o 0. Está pensada para tareas de desarrollo, depuración y demostración. #10198 (alexey-milovidov).
Corrección de errores
- Se soluciona el error
Pipeline stuckconmax_rows_to_group_byygroup_by_overflow_mode = 'break'. #10279 (Nikolai Kochetov). - Corrige una excepción poco frecuente que puede producirse:
Cannot drain connections: cancel first. #10239 (Nikolai Kochetov). - Se corrigió un error por el que ClickHouse devolvía el mensaje de error “Unknown function lambda.” cuando el usuario intentaba ejecutar ALTER UPDATE/DELETE en tablas con ENGINE = Replicated*. La comprobación de funciones no deterministas ahora maneja correctamente las expresiones lambda. #10237 (Alexander Kazakov).
- Se corrigió la función “generateRandom” para el tipo Date. Esto corrige #9973. Se corrigió un caso extremo al insertar fechas del año 2106 en tablas MergeTree con particionamiento de estilo antiguo, pero con particiones nombradas con el año 1970. #10218 (alexey-milovidov).
- Convertir los tipos si la definición de la tabla de una vista no se corresponde con la consulta SELECT. Esto corrige #10180 y #10022. #10217 (alexey-milovidov).
- Se corrigió
parseDateTimeBestEffortpara cadenas en formato RFC-2822 cuando el día de la semana es martes o jueves. Esto corrige #10082. #10214 (alexey-milovidov). - Se corrigen los nombres de columna de las constantes dentro de JOIN, que pueden entrar en conflicto con los nombres de las constantes fuera de JOIN. #10207 (alexey-milovidov).
- Corrige una posible ejecución infinita de una consulta cuando en realidad debería detenerse en LIMIT al leer desde una fuente infinita como
system.numbersosystem.zeros. #10206 (Nikolai Kochetov). - Se corrige el uso de la base de datos actual para verificar el acceso cuando no se especifica ninguna base de datos. #10192 (Vitaly Baranov).
- Convierte los bloques si la estructura no coincide durante INSERT en Distributed(). #10135 (Azat Khuzhin).
- Corrige un posible resultado incorrecto de extremos en el pipeline de procesadores. #10131 (Nikolai Kochetov).
- Se corrigen algunos tipos de operaciones
ALTERcon partes compactas. #10130 (Anton Popov). - Se corrige la comprobación incorrecta de
index_granularity_bytesal crear una nueva réplica. Corrige #10098. #10121 (alesapin). - Se corrige SIGSEGV al hacer INSERT en una tabla Distributed cuando su estructura difiere de la de las tablas subyacentes. #10105 (Azat Khuzhin).
- Soluciona una posible pérdida de filas en consultas con
JOINyUNION ALL. Soluciona #9826, #10113. #10099 (Nikolai Kochetov). - Se corrigió el inicio de las tablas replicadas al actualizar desde una versión anterior de ClickHouse en la que no existía el nodo
/table/replicas/replica_name/metadata. Corrige #10037. #10095 (alesapin). - Se añaden algunas comprobaciones de argumentos y soporte para argumentos identificadores en el motor de base de datos MySQL. #10077 (Winter Zhang).
- Se corrige un error en el origen del diccionario de ClickHouse desde un servidor ClickHouse en localhost. El error puede provocar corrupción de memoria si los tipos del diccionario y del origen no son compatibles. #10071 (alesapin).
- Se corrigió un error en la consulta
CHECK TABLEcuando la tabla contenía índices de omisión. #10068 (alesapin). - Corrige el error
Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform. Ocurría cuando la configuracióndistributed_aggregation_memory_efficientestaba habilitada y la consulta distribuida leía datos agregados con distintos niveles desde diferentes segmentos (mezcla de agregación de un nivel y de dos niveles). #10063 (Nikolai Kochetov). - Corrige un fallo de segmentación que podía producirse en GROUP BY sobre claves de tipo cadena con bytes cero al final (#8636, #8925). #10025 (Alexander Kuzmenkov).
- Se corrige el número de hilos utilizados para la ejecución remota de consultas (regresión de rendimiento desde la versión 20.3). Esto ocurría cuando una consulta sobre una tabla
Distributedse ejecutaba simultáneamente en segmentos locales y remotos. Corrige #9965. #9971 (Nikolai Kochetov). - Se corrige un error por el que no se obtenían las tablas necesarias en una de las etapas de procesamiento de las consultas en algunas bases de datos. Corrige #9699. #9949 (achulkov2).
- Se corrige el error ‘No se encontró la columna en el bloque’ cuando
JOINaparece conTOTALS. Corrige #9839. #9939 (Artem Zuikov). - Se corrigió un error por el que las consultas DDL
ON CLUSTERse quedaban bloqueadas al iniciar el servidor. #9927 (Gagan Arneja). - Se corrige el análisis de varios hosts especificados en el comando
CREATE USER, p. ej.CREATE USER user6 HOST NAME REGEXP 'lo.?*host', NAME REGEXP 'lo*host'. #9924 (Vitaly Baranov). - Se corrigió
TRUNCATEen el motor de tabla Join (#9917). #9920 (Amos Bird). - Se corrigió el error “scalar does not exist” en las sentencias ALTER (#9878). #9904 (Amos Bird).
- Corrige una condición de carrera entre drop y optimize en
ReplicatedMergeTree. #9901 (alesapin). - Se soluciona el error con los nombres cualificados en
distributed_product_mode='local'. Corrige #4756. #9891 (Artem Zuikov). - Se corrige el cálculo de los permisos para las funciones de introspección a partir de la configuración ‘allow_introspection_functions’. #9840 (Vitaly Baranov).
Mejora de compilación/pruebas/empaquetado
- Se corrigió la prueba de integración
test_settings_constraints. #9962 (Vitaly Baranov). - Se eliminó la dependencia de
clock_getres. #9833 (alexey-milovidov).
lanzamiento de ClickHouse v20.3.5.21, 2020-03-27
Corrección de errores
- Se corrige el error ‘Different expressions with the same alias’ cuando la consulta tiene PREWHERE y WHERE en una tabla distribuida y
SET distributed_product_mode = 'local'. #9871 (Artem Zuikov). - Se corrige el consumo excesivo de memoria de las mutaciones en tablas con clave primaria compuesta. Esto corrige #9850. #9860 (alesapin).
- Para las consultas INSERT, el segmento ahora ajusta la configuración recibida del iniciador a las restricciones del segmento en lugar de lanzar una excepción. Esta corrección permite enviar consultas INSERT a un segmento con restricciones diferentes. Este cambio mejora la corrección de #9447. #9852 (Vitaly Baranov).
- Se corrige el error ‘COMMA to CROSS JOIN rewriter is not enabled or cannot rewrite query’ en el caso de subconsultas con COMMA JOIN fuera de las listas de tablas (es decir, en WHERE). Corrige #9782. #9830 (Artem Zuikov).
- Se corrige una posible excepción
Got 0 in totals chunk, expected 1en el cliente. Ocurría en consultas conJOINcuando la tabla unida de la derecha no tenía filas. Ejemplo:select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;. Corrige #9777. #9823 (Nikolai Kochetov). - Se corrige un SIGSEGV con optimize_skip_unused_shards cuando el tipo no puede convertirse. #9804 (Azat Khuzhin).
- Se corrige la consulta
ALTER TABLE DELETE COLUMNpara partes compactas. #9779 (alesapin). - Se corrige max_distributed_connections (con y sin Processors). #9673 (Azat Khuzhin).
- Se corrigieron algunos casos en los que la zona horaria del argumento de la función no se utilizaba correctamente. #9574 (Vasily Nemkov).
Mejora
- Eliminar la etapa de ORDER BY de las mutaciones porque se lee desde una sola parte ordenada en un único hilo. Añadir también una comprobación para verificar que el orden de las filas en la mutación sigue el orden de la clave de ordenación y que este no se vulnera. #9886 (alesapin).
lanzamiento de ClickHouse v20.3.4.10, 2020-03-20
Corrección de errores
- Esta versión también incluye todas las correcciones de errores de la 20.1.8.41
- Se corrige la falta de
rows_before_limit_at_leasten consultas por http (con pipeline de processors). Esto corrige #9730. #9757 (Nikolai Kochetov)
Lanzamiento de ClickHouse v20.3.3.6, 2020-03-17
Corrección de errores
- Esta versión también incluye todas las correcciones de errores de 20.1.7.38
- Corrige un error en la replicación que impedía que la replicación funcionara si el usuario había ejecutado mutación en la versión anterior. Esto corrige #9645. #9652 (alesapin). Hace que la versión 20.3 vuelva a ser retrocompatible.
- Agrega la configuración
use_compact_format_in_distributed_parts_names, que permite escribir archivos para consultasINSERTen una tablaDistributedcon un formato más compacto. Esto corrige #9647. #9653 (alesapin). Hace que la versión 20.3 vuelva a ser retrocompatible.
lanzamiento de ClickHouse v20.3.2.1, 2020-03-12
Cambio incompatible con versiones anteriores
- Se corrigió el problema
file name too longal enviar datos para tablasDistributedcon una gran cantidad de réplicas. Se corrigió el problema por el que las credenciales de las réplicas quedaban expuestas en el log del servidor. El formato del nombre del directorio en disco se cambió a[shard{shard_index}[_replica{replica_index}]]. #8911 (Mikhail Korotov) Después de actualizar a la nueva versión, no podrá volver a una versión anterior sin intervención manual, porque la versión antigua del servidor no reconoce el nuevo formato de directorio. Si quiere volver a una versión anterior, tendrá que cambiar manualmente el nombre de los directorios correspondientes al formato antiguo. Este cambio solo es relevante si ha usadoINSERTasíncronos en tablasDistributed. En la versión 20.3.3 introduciremos una configuración que le permitirá habilitar gradualmente el nuevo formato. - Se cambió el formato de las entradas del log de replicación para los comandos de mutación. Debe esperar a que se procesen las mutaciones antiguas antes de instalar la nueva versión.
- Se implementó un perfilador de memoria sencillo que vuelca trazas de pila en
system.trace_logcada N bytes por encima del límite flexible de asignación #8765 (Ivan) #9472 (alexey-milovidov) La columna desystem.trace_logse renombró detimer_typeatrace_type. Esto requerirá cambios en herramientas de terceros para el análisis de rendimiento y el procesamiento de flamegraphs. - Use el ID del hilo del SO en todas partes en lugar del número interno del hilo. Esto corrige #7477. Las versiones antiguas de
clickhouse-clientno pueden recibir los logs que envía el servidor cuando la configuraciónsend_logs_levelestá habilitada, porque se cambiaron los nombres y los tipos de los mensajes de log estructurados. Por otro lado, distintas versiones del servidor pueden enviarse logs entre sí con tipos diferentes. Cuando no use la configuraciónsend_logs_level, no debería preocuparse. #8954 (alexey-milovidov) - Se elimina la función
indexHint#9542 (alexey-milovidov) - Se eliminan las funciones
findClusterIndexyfindClusterValue. Esto corrige #8641. Si usabas estas funciones, envía un correo electrónico aclickhouse-feedback@yandex-team.com#9543 (alexey-milovidov) - Ahora ya no se permite crear ni agregar columnas con una subconsulta
SELECTcomo expresión predeterminada. #9481 (alesapin) - Se requieren alias para las subconsultas en JOIN. #9274 (Artem Zuikov)
- Se mejoró la lógica de las consultas
ALTER MODIFY/ADD. Ahora no se puedeADDuna columna sin especificar el tipo, la expresión predeterminada deMODIFYno cambia el tipo de la columna yMODIFYdel tipo no pierde el valor de la expresión predeterminada. Corrige #8669. #9227 (alesapin) - Es necesario reiniciar el servidor para aplicar los cambios en la configuración del logging. Esta es una solución temporal para evitar el error por el que el servidor escribe logs en un archivo de log eliminado (consulte #8696). #8707 (Alexander Kuzmenkov)
- La configuración
experimental_use_processorsestá habilitada de forma predeterminada. Esta configuración permite usar el nuevo pipeline de consultas. Se trata de una refactorización interna y no esperamos cambios visibles. Si observa algún problema, vuelva a ponerla en cero. #8768 (alexey-milovidov)
Nueva funcionalidad
- Se añaden los formatos de entrada/salida
AvroyAvroConfluent#8571 (Andrew Onyshchuk) #8957 (Andrew Onyshchuk) #8717 (alexey-milovidov) - Actualizaciones multihilo y sin bloqueo de claves caducadas en diccionarios
cache(con la opción de leer las antiguas). #8303 (Nikita Mikhaylov) - Añade la consulta
ALTER ... MATERIALIZE TTL. Ejecuta una mutación que fuerza la eliminación de los datos caducados por TTL y recalcula la metainformación relativa al TTL en todas las partes. #8775 (Anton Popov) - Cambiar de HashJoin a MergeJoin (en disco) si es necesario #9082 (Artem Zuikov)
- Se añadió el comando
MOVE PARTITIONparaALTER TABLE#4729 #6168 (Guillaume Tassery) - Recarga en caliente de la configuración de almacenamiento desde el archivo de configuración. #8594 (Vladimir Chebotarev)
- Se permitió cambiar
storage_policypor otra opción no menos completa. #8107 (Vladimir Chebotarev) - Se añadió compatibilidad con patrones glob/comodines para el almacenamiento S3 y la función de tabla. #8851 (Vladimir Chebotarev)
- Se implementan
bitAnd,bitOr,bitXorybitNotpara el tipo de datoFixedString(N). #9091 (Guillaume Tassery) - Se agregó la función
bitCount. Esto corrige #8702. #8708 (alexey-milovidov) #8749 (ikopylov) - Se añade la table function
generateRandompara generar filas aleatorias con el esquema indicado. Permite rellenar con datos cualquier tabla de prueba. #8994 (Ilya Yatsishin) JSONEachRowFormat: admite el caso especial en que los objetos están incluidos en un array de nivel superior. #8860 (Kruglov Pavel)- Ahora es posible crear una columna con una expresión
DEFAULTque depende de una columna con una expresiónALIASpor defecto. #9489 (alesapin) - Se permite especificar
--limitpor encima del tamaño de los datos de origen enclickhouse-obfuscator. Los datos se repetirán con una semilla aleatoria distinta. #9155 (alexey-milovidov) - Se añadió la función
groupArraySample(similar agroupArray) con un algoritmo de muestreo por reservorio. #8286 (Amos Bird) - Ahora puede supervisar el tamaño de la cola de actualización de los diccionarios
cache/complex_key_cachemediante las métricas del sistema. #9413 (Nikita Mikhaylov) - Se permite usar CRLF como separador de línea en el formato de salida CSV cuando la opción
output_format_csv_crlf_end_of_linese establece en 1 #8934 #8935 #8963 (Mikhail Korotov) - Se implementan más funciones de la API de H3:
h3GetBaseCell,h3HexAreaM2,h3IndexesAreNeighbors,h3ToChildren,h3ToStringystringToH3#8938 (Nico Mandery) - Nuevo ajuste:
max_parser_depth, para controlar el tamaño máximo de la pila y permitir consultas grandes y complejas. Esto corrige #6681 y #7668. #8647 (Maxim Smirnov) - Se añade el ajuste
force_optimize_skip_unused_shardspara que lance una excepción si no es posible omitir segmentos no utilizados #8805 (Azat Khuzhin) - Permite configurar múltiples discos/volúmenes para almacenar los datos que se enviarán en el motor
Distributed#8756 (Azat Khuzhin) - Se admite la política de almacenamiento (
<tmp_policy>) para almacenar datos temporales. #8750 (Azat Khuzhin) - Se agregó el encabezado HTTP
X-ClickHouse-Exception-Code, que se establece si se lanza una excepción antes de enviar los datos. Esto implementa #4971. #8786 (Mikhail Korotov) - Se añadió la función
ifNotFinite. Es solo azúcar sintáctico:ifNotFinite(x, y) = isFinite(x) ? x : y. #8710 (alexey-milovidov) - Se añadió la columna
last_successful_update_timea la tablasystem.dictionaries#9394 (Nikita Mikhaylov) - Se añadió la función
blockSerializedSize(tamaño en disco sin compresión) #8952 (Azat Khuzhin) - Añadir la función
moduloOrZero#9358 (hcz) - Se añadieron las tablas del sistema
system.zerosysystem.zeros_mt, así como las funciones de tablazeros()yzeros_mt(). Las tablas (y las funciones de tabla) contienen una sola columna con el nombrezeroy el tipoUInt8. Esta columna contiene ceros. Se necesita con fines de prueba como el método más rápido para generar muchas filas. Esto corrige #6604 #9593 (Nikolai Kochetov)
Funcionalidad experimental
- Se añade un nuevo formato compacto de partes en las tablas de la familia
MergeTree, en el que todas las columnas se almacenan en un solo archivo. Esto ayuda a aumentar el rendimiento de las inserciones pequeñas y frecuentes. El formato anterior (un archivo por columna) ahora se denomina wide. El formato de almacenamiento de datos se controla mediante los ajustesmin_bytes_for_wide_partymin_rows_for_wide_part. #8290 (Anton Popov) - Soporte de almacenamiento S3 para las tablas
Log,TinyLogyStripeLog. #8862 (Pavel Kovalenko)
Corrección de errores
- Se corrigieron las inconsistencias en los espacios en blanco de los mensajes de registro. #9322 (alexey-milovidov)
- Se corrigió un error por el que los arrays de tuplas sin nombre se aplanaban como estructuras Nested durante la creación de la tabla. #8866 (achulkov2)
- Se corrigió el problema por el que podía producirse el error “Too many open files” si había demasiados archivos que coincidían con el patrón glob en la tabla
Fileo en la función de tablafile. Ahora los archivos se abren de forma diferida. Esto corrige #8857 #8861 (alexey-milovidov) - DROP TEMPORARY TABLE ahora elimina únicamente la tabla temporal. #8907 (Vitaly Baranov)
- Eliminar la partición obsoleta al apagar el servidor o al hacer DETACH/ATTACH de una tabla. #8602 (Guillaume Tassery)
- Se ha corregido la forma en que el disco predeterminado calcula el espacio libre a partir del subdirectorio
data. Se solucionó el problema por el que la cantidad de espacio libre no se calculaba correctamente si el directoriodataestaba montado en un dispositivo independiente (caso poco frecuente). Esto corrige #7441 #9257 (Mikhail Korotov) - Se permite el join por coma (cross) con IN () en su interior. #9251 (Artem Zuikov)
- Permitir reescribir CROSS como INNER JOIN si hay un operador [NOT] LIKE en la cláusula WHERE. #9229 (Artem Zuikov)
- Se corrige un posible resultado incorrecto después de
GROUP BYcon la configuracióndistributed_aggregation_memory_efficienthabilitada. Corrige #9134. #9289 (Nikolai Kochetov) - Las claves encontradas se contabilizaban como ausentes en las métricas de los diccionarios de caché. #9411 (Nikita Mikhaylov)
- Se solucionó la incompatibilidad del protocolo de replicación introducida en #8598. #9412 (alesapin)
- Se corrigió una condición de carrera en
queue_task_handleal iniciar las tablasReplicatedMergeTree. #9552 (alexey-milovidov) - El token
NOTno funcionó en la consultaSHOW TABLES NOT LIKE#8727 #8940 (alexey-milovidov) - Se añadió una comprobación de rango a la función
h3EdgeLengthM. Sin esta comprobación, puede producirse un desbordamiento de búfer. #8945 (alexey-milovidov) - Se corrigió un error en los cálculos por lotes de operaciones lógicas ternarias con varios argumentos (más de 10). #8718 (Alexander Kazakov)
- Se corrige un error en la optimización PREWHERE que podía provocar fallos de segmentación o la excepción
Inconsistent number of columns got from MergeTreeRangeReader. #9024 (Anton Popov) - Corrige la excepción inesperada
Timeout exceeded while reading from socket, que ocurre aleatoriamente en una conexión segura antes de que realmente se supere el tiempo de espera y cuando el perfilador de consultas está habilitado. También añade la configuraciónconnect_timeout_with_failover_secure_ms(100 ms de forma predeterminada), que es similar aconnect_timeout_with_failover_ms, pero se usa para conexiones seguras (porque el handshake de SSL es más lento que una conexión TCP normal) #9026 (tavplubix) - Se corrigió un error en la finalización de las mutations, por el que una mutation podía quedar bloqueada en un estado con
parts_to_do=0yis_done=0. #9022 (alesapin) - Se usa la nueva lógica de ANY JOIN con la configuración
partial_merge_join. Ahora es posible hacer joinsANY|ALL|SEMI LEFTyALL INNERconpartial_merge_join=1. #8932 (Artem Zuikov) - El segmento ahora ajusta la configuración recibida del iniciador a las restricciones del segmento, en lugar de generar una excepción. Esta corrección permite enviar consultas a un segmento con restricciones distintas. #9447 (Vitaly Baranov)
- Se corrigió un problema de gestión de memoria en
MergeTreeReadPool. #8791 (Vladimir Chebotarev) - Se corrige la familia de funciones
toDecimal*OrNull()al llamarse con la cadenae. Corrige #8312 #8764 (Artem Zuikov) - Asegúrese de que
FORMAT Nullno envíe ningún dato al cliente. #8767 (Alexander Kuzmenkov) - Corrige un error que impedía que la marca de tiempo en
LiveViewBlockInputStreamse actualizara.LIVE VIEWes una función experimental. #8644 (vxider) #8625 (vxider) - Se corrigió el comportamiento erróneo de
ALTER MODIFY TTL, que no permitía eliminar expresiones TTL antiguas. #8422 (Vladimir Chebotarev) - Se corrigió el error detectado por UBSan en MergeTreeIndexSet. Esto corrige #9250 #9365 (alexey-milovidov)
- Se corrigió el comportamiento de las funciones
matchyextractcuando la cadena de búsqueda contiene bytes nulos. El comportamiento era incorrecto cuando la cadena de búsqueda era constante. Esto corrige #9160 #9163 (alexey-milovidov) #9345 (alexey-milovidov) - Se evita lanzar excepciones desde el destructor en la biblioteca Apache Avro de terceros. #9066 (Andrew Onyshchuk)
- No confirme parcialmente un lote recuperado de
Kafkamediante sondeo, ya que puede generar huecos en los datos. #8876 (filimonov) - Se corrigió
joinGetcon tipos de retorno Nullable. #8919 #9014 (Amos Bird) - Corrige la incompatibilidad de los datos al comprimirse con el códec
T64. #9016 (Artem Zuikov) Corrige los identificadores de tipos de datos en el códec de compresiónT64, que provocan una (des)compresión incorrecta en las versiones afectadas. #9033 (Artem Zuikov) - Se agregó la configuración
enable_early_constant_foldingy se deshabilitó en algunos casos que provocaban errores. #9010 (Artem Zuikov) - Corregir el optimizador de predicados con pushdown para VIEW y habilitar la prueba #9011 (Winter Zhang)
- Se corrige un fallo de segmentación en tablas
Merge, que puede producirse al leer desde almacenamientosFile#9387 (tavplubix) - Se añadió una comprobación de la política de almacenamiento en
ATTACH PARTITION FROM,REPLACE PARTITIONyMOVE TO TABLE. De lo contrario, los datos de una parte podrían quedar inaccesibles tras reiniciar e impedir que ClickHouse se iniciara. #9383 (Vladimir Chebotarev) - Se corrigen los ALTER cuando hay un TTL configurado para la tabla. #8800 (Anton Popov)
- Se corrigió una condición de carrera que podía producirse cuando se ejecutaba
SYSTEM RELOAD ALL DICTIONARIESmientras se modificaba, agregaba o eliminaba algún diccionario. #8801 (Vitaly Baranov) - En versiones anteriores, el motor de base de datos
Memoryusaba una ruta de datos vacía, por lo que las tablas se creaban en el directoriopath(p. ej.,/var/lib/clickhouse/), no en el directorio de datos de la base de datos (p. ej.,/var/lib/clickhouse/db_name). #8753 (tavplubix) - Se corrigieron mensajes de registro erróneos sobre la falta del disco o la política predeterminados. #9530 (Vladimir Chebotarev)
- Se corrige
not(has())para el índice bloom_filter en tipos Array. #9407 (achimbab) - Permitir que la(s) primera(s) columna(s) de una tabla con motor
Logpueda(n) ser un alias #9231 (Ivan) - Corrige el orden de los rangos al leer de la tabla
MergeTreeen un hilo. Esto podía provocar excepciones deMergeTreeRangeReadero resultados de consulta erróneos. #9050 (Anton Popov) - Hacer que
reinterpretAsFixedStringdevuelvaFixedStringen vez deString. #9052 (Andrew Onyshchuk) - Se corrigen casos extremadamente raros en los que el usuario podía recibir un mensaje de error incorrecto (
Successen lugar de una descripción detallada del error). #9457 (alexey-milovidov) - No falla al usar el formato
Templatecon una plantilla de fila vacía. #8785 (Alexander Kuzmenkov) - Los archivos de metadatos de las tablas del sistema podían crearse en una ubicación incorrecta #8653 (tavplubix) Corrige #8581.
- Se corrige una condición de carrera en exception_ptr del diccionario de caché #8303. #9379 (Nikita Mikhaylov)
- No se lanza una excepción para la consulta
ATTACH TABLE IF NOT EXISTS. Anteriormente se lanzaba si la tabla ya existía, a pesar de la cláusulaIF NOT EXISTS. #8967 (Anton Popov) - Se corrigió la falta de un paréntesis de cierre en el mensaje de error. #8811 (alexey-milovidov)
- Se evita el mensaje
Possible deadlock avoidedal iniciar clickhouse-client en modo interactivo. #9455 (alexey-milovidov) - Se corrigió el problema por el que el relleno al final del valor codificado en base64 podía quedar mal formado. Se actualizó la biblioteca base64. Esto corrige #9491, cierra #9492 #9500 (alexey-milovidov)
- Evita la pérdida de datos en
Kafkaen casos poco frecuentes cuando se produce una excepción después de leer el sufijo, pero antes de hacer commit. Corrige #9378 #9507 (filimonov) - Se corrigió una excepción en
DROP TABLE IF EXISTS#8663 (Nikita Vasilev) - Se corrige el fallo que se producía cuando un usuario intentaba ejecutar
ALTER MODIFY SETTINGen la familia de motores de tablaMergeTreecon formato antiguo. #9435 (alesapin) - Compatibilidad con números UInt64 que no caben en Int64 en funciones relacionadas con JSON. Se actualiza SIMDJSON a master. Esto corrige #9209 #9344 (alexey-milovidov)
- Se corrigió la ejecución de predicados inversos cuando se utiliza un índice funcional no estrictamente monotónico. #9223 (Alexander Kazakov)
- No intente optimizar la constante
INenGROUP BY#8868 (Amos Bird) - Se corrige un error en las mutaciones
ALTER DELETEque provoca la corrupción del índice. Esto soluciona #9019 y #8982. Además, se corrigen condiciones de carrera extremadamente infrecuentes en las consultasALTERdeReplicatedMergeTree. #9048 (alesapin) - Cuando la configuración
compile_expressionsestá habilitada, puede producirseunexpected columnenLLVMExecutableFunctional usar el tipoNullable#8910 (Guillaume Tassery) - Múltiples correcciones para el engine
Kafka: 1) se corrigen los duplicados que aparecían durante el rebalanceo del grupo de consumidores. 2) Se corrigen casos raros de ‘holes’ que aparecían cuando los datos se leían de varias particiones en un solo poll y se confirmaban parcialmente (ahora siempre procesamos / confirmamos el bloque completo de mensajes obtenido en el poll). 3) Se corrige el vaciado por tamaño de bloque (antes solo funcionaba correctamente el vaciado por timeout). 4) mejor procedimiento de suscripción (con retroalimentación sobre la asignación). 5) Se hace que las pruebas funcionen más rápido (con intervalos y timeouts predeterminados). Debido a que antes los datos no se vaciaban por tamaño de bloque (como debería ser según la documentación), ese PR puede provocar cierta degradación del rendimiento con la configuración predeterminada (debido a vaciados más frecuentes y más pequeños, que son menos óptimos). Si encuentra problemas de rendimiento después de este cambio, aumentekafka_max_block_sizeen la tabla a un valor mayor (por ejemplo,CREATE TABLE ...Engine=Kafka ... SETTINGS ... kafka_max_block_size=524288). Correcciones #7259 #8917 (filimonov) - Se corrigió la excepción
Parameter out of bounden algunas consultas tras las optimizaciones de PREWHERE. #8914 (Baudouin Giard) - Se corrigió el caso de argumentos con constancia mixta en la función
arrayZip. #8705 (alexey-milovidov) - Al ejecutar la consulta
CREATE, simplifica las expresiones constantes en los argumentos del motor de almacenamiento. Sustituye el nombre vacío de la base de datos por la base de datos actual. Corrige #6508, #3492 #9262 (tavplubix) - Ahora ya no se pueden crear ni añadir columnas con alias cíclicos simples como
a DEFAULT b, b DEFAULT a. #9603 (alesapin) - Se corrigió un error en el doble movimiento que podía corromper la parte original. Esto es relevante si usas
ALTER TABLE MOVE#8680 (Vladimir Chebotarev) - Se permite interpretar correctamente el identificador
intervalsin backticks. Se corrigió un problema por el que una consulta no podía ejecutarse aunque el identificadorintervalestuviera entre backticks o comillas dobles. Esto corrige #9124. #9142 (alexey-milovidov) - Se corrigieron la prueba de fuzzing y el comportamiento incorrecto de las funciones
bitTestAll/bitTestAny. #9143 (alexey-milovidov) - Corrige un posible fallo o un número incorrecto de filas en
LIMIT n WITH TIEScuando hay muchas filas iguales a la enésima fila. #9464 (tavplubix) - Se corrigieron las mutaciones de partes escritas con
insert_quorumhabilitado. #9463 (alesapin) - Se corrige una condición de carrera al destruir
Poco::HTTPServer. Podía ocurrir cuando el servidor se iniciaba y se detenía inmediatamente. #9468 (Anton Popov) - Se corrigió un error por el que se mostraba un mensaje de error equívoco al ejecutar
SHOW CREATE TABLE a_table_that_does_not_exist. #8899 (achulkov2) - Se corrigió la excepción
Parameters are out of bounden algunos casos poco frecuentes en los que había una constante en la cláusulaSELECTjunto con las cláusulasORDER BYyLIMIT. #8892 (Guillaume Tassery) - Se corrige la finalización de las mutations; una mutation ya completada puede tener el estado
is_done=0. #9217 (alesapin) - Se impide ejecutar
ALTER ADD INDEXen tablas MergeTree con sintaxis antigua, porque no funciona. #8822 (Mikhail Korotov) - Durante el arranque del servidor, no acceder a la tabla de la que depende
LIVE VIEW, para que el servidor pueda iniciarse. También eliminar las dependencias deLIVE VIEWal desasociarLIVE VIEW.LIVE VIEWes una funcionalidad experimental. #8824 (tavplubix) - Se corrigió un posible fallo de segmentación en
MergeTreeRangeReaderal ejecutarPREWHERE. #9106 (Anton Popov) - Corrige posibles discrepancias en las sumas de verificación con los TTL de columna. #9451 (Anton Popov)
- Se corrigió un error por el que las partes no se movían en segundo plano según las reglas TTL cuando solo había un volumen. #8672 (Vladimir Chebotarev)
- Se solucionó el problema
Method createColumn() is not implemented for data type Set. Esto corrige #7799. #8674 (alexey-milovidov) - Ahora intentaremos finalizar las mutaciones con mayor frecuencia. #9427 (alesapin)
- Corrección de
intDivcon la constante menos uno #9351 (hcz) - Se corrige una posible condición de carrera en
BlockIO. #9356 (Nikolai Kochetov) - Se corrige un error que provocaba el cierre del servidor al intentar usar / eliminar la tabla
Kafkacreada con parámetros incorrectos. #9513 (filimonov) - Se añadió una solución alternativa si el sistema operativo devuelve un resultado incorrecto para la función
timer_create. #8837 (alexey-milovidov) - Se corrigió el error en el uso del parámetro
min_marks_for_seek. Se corrigió el mensaje de error cuando no hay una clave de sharding en una tabla Distributed y se intenta omitir segmentos no utilizados. #8908 (Azat Khuzhin)
Mejora
- Implementadas las consultas
ALTER MODIFY/DROPsobre mutaciones para la familia de motoresReplicatedMergeTree*. AhoraALTERSsolo bloquea en la etapa de actualización de metadatos y no después. #8701 (alesapin) - Se añadió la posibilidad de reescribir CROSS como INNER JOINs cuando la sección
WHEREcontiene nombres no calificados. #9512 (Artem Zuikov) - Hacer que las consultas
SHOW TABLESySHOW DATABASESadmitan expresionesWHEREyFROM/IN#9076 (sundyli) - Se añadió el ajuste
deduplicate_blocks_in_dependent_materialized_views. #9070 (urykhy) - Tras los cambios recientes, el cliente de MySQL empezó a mostrar las cadenas binarias en hexadecimal, por lo que dejan de ser legibles (#9032). La solución alternativa en ClickHouse consiste en marcar las columnas de tipo String como UTF-8, lo que no siempre ocurre, aunque suele ser así. #9079 (Yuriy Baranov)
- Se añadió compatibilidad con claves String y FixedString para
sumMap#8903 (Baudouin Giard) - Se admiten claves String en mapas de SummingMergeTree #8933 (Baudouin Giard)
- Notificar al pool de hilos la finalización del hilo incluso si este ha generado una excepción #8736 (Ding Xiang Fei)
- Permite establecer
query_idenclickhouse-benchmark#9416 (Anton Popov) - No se permiten expresiones extrañas en la consulta
ALTER TABLE ... PARTITION partition. Esto corrige #7192 #8835 (alexey-milovidov) - La tabla
system.table_enginesahora proporciona información sobre la compatibilidad con funciones (comosupports_ttlosupports_sort_order). #8830 (Max Akhmedov) - Se habilita
system.metric_logde forma predeterminada. Contendrá filas con valores de ProfileEvents y CurrentMetrics recopilados con el intervalo “collect_interval_milliseconds” (un segundo de forma predeterminada). La tabla es muy pequeña (normalmente del orden de unos pocos megabytes) y es razonable recopilar estos datos de forma predeterminada. #9225 (alexey-milovidov) - Inicializa el perfilador de consultas para todos los hilos de un grupo; por ejemplo, permite perfilar por completo las consultas INSERT. Corrige #6964 #8874 (Ivan)
- Ahora se crea una
LIVE VIEWtemporal conCREATE LIVE VIEW name WITH TIMEOUT [42] ...en lugar deCREATE TEMPORARY LIVE VIEW ..., porque la sintaxis anterior no era consistente conCREATE TEMPORARY TABLE ...#9131 (tavplubix) - Se añade el parámetro de configuración text_log.level para limitar las entradas que van a la tabla
system.text_log#8809 (Azat Khuzhin) - Permitir colocar la parte descargada en discos/volúmenes según las reglas TTL #8598 (Vladimir Chebotarev)
- Para los diccionarios MySQL externos, se permite compartir el pool de conexiones de MySQL entre diccionarios. Esta opción reduce significativamente el número de conexiones a los servidores MySQL. #9409 (Clément Rodriguez)
- Mostrar en la salida de
clickhouse-benchmarkel tiempo de ejecución de la consulta más cercano para los cuantiles, en lugar de valores interpolados. Es mejor mostrar valores que se correspondan con el tiempo de ejecución de algunas consultas. #8712 (alexey-milovidov) - Posibilidad de añadir clave y marca temporal al mensaje al insertar datos en Kafka. Corrige #7198 #8969 (filimonov)
- Si el servidor se ejecuta desde la terminal, resaltar con colores el número de hilo, el ID de la consulta y la prioridad del log. Esto mejora la legibilidad de los mensajes de log correlacionados para los desarrolladores. #8961 (alexey-milovidov)
- Mejor mensaje de excepción durante la carga de tablas de la base de datos
Ordinary. #9527 (alexey-milovidov) - Implementación de
arraySlicepara arrays con estados de funciones de agregación. Esto corrige #9388 #9391 (alexey-milovidov) - Permitir usar funciones constantes y arrays constantes a la derecha del operador IN. #8813 (Anton Popov)
- Si se produce una excepción de ZooKeeper al obtener datos de system.replicas, muéstrela en una columna aparte. Esto implementa #9137 #9138 (alexey-milovidov)
- Eliminar de forma atómica las partes de datos de MergeTree al destruirlas. #8402 (Vladimir Chebotarev)
- Compatibilidad con la seguridad a nivel de fila en tablas Distributed. #8926 (Ivan)
- Ahora se reconocen sufijos (como KB, KiB…) en los valores de configuración. #8072 (Mikhail Korotov)
- Evita errores de falta de memoria al construir el resultado de un JOIN grande. #8637 (Artem Zuikov)
- Se añadieron los nombres de los clústeres a las sugerencias del modo interactivo de
clickhouse-client. #8709 (alexey-milovidov) - Inicializar el profiler de consultas para todos los hilos de un grupo; p. ej., permite perfilar por completo las consultas de inserción #8820 (Ivan)
- Se añadió la columna
exception_codea la tablasystem.query_log. #8770 (Mikhail Korotov) - Se habilitó el servidor de compatibilidad con MySQL en el puerto
9004en el archivo de configuración predeterminado del servidor. Se corrigió el comando de generación de contraseñas en el ejemplo de la configuración. #8771 (Yuriy Baranov) - Evita el aborto durante el apagado si el sistema de archivos está en modo readonly. Esto corrige #9094 #9100 (alexey-milovidov)
- Mensaje de excepción más claro cuando se requiere especificar la longitud en una consulta HTTP POST. #9453 (alexey-milovidov)
- Se agregan las columnas virtuales
_pathy_filea los motoresHDFSyFile, y a las funciones de tablahdfsyfile#8489 (Olga Khvostikova) - Se corrige el error
Cannot find columnal insertar enMATERIALIZED VIEWcuando se había agregado una nueva columna a la tabla interna de la vista. #8766 #8788 (vzakaznikov) #8788 #8806 (Nikolai Kochetov) #8803 (Nikolai Kochetov) - Se corrige Progress en el protocolo cliente-servidor nativo, enviando Progress después de la actualización final (como logs). Esto puede ser relevante solo para algunas herramientas de terceros que usan el protocolo nativo. #9495 (Azat Khuzhin)
- Añade una métrica del sistema para hacer un seguimiento del número de conexiones de cliente que usan el protocolo MySQL (#9013). #9015 (Eugene Klimov)
- A partir de ahora, las respuestas HTTP tendrán la cabecera
X-ClickHouse-Timezoneconfigurada con el mismo valor de zona horaria que devolveríaSELECT timezone(). #9493 (Denis Glazachev)
Mejora del rendimiento
- Mejora del rendimiento al analizar el índice con IN #9261 (Anton Popov)
- Código más simple y eficiente en las funciones lógicas + limpieza de código. Continuación de #8718 #8728 (Alexander Kazakov)
- Mejora general del rendimiento (en un rango del 5 % al 200 % para las consultas afectadas) al garantizar un aliasing aún más estricto con características de C++20. #9304 (Amos Bird)
- Aliasing más estricto para los bucles internos de las funciones de comparación. #9327 (alexey-milovidov)
- Aliasing más estricto para los bucles internos de las funciones aritméticas. #9325 (alexey-milovidov)
- Una implementación aproximadamente 3 veces más rápida de
ColumnVector::replicate(), mediante la cual se implementaColumnConst::convertToFullColumn(). También será útil en las pruebas al materializar constantes. #9293 (Alexander Kazakov) - Otra mejora menor del rendimiento de
ColumnVector::replicate()(esto acelera la funciónmaterializey las funciones de orden superior), una mejora adicional sobre #9293 #9442 (Alexander Kazakov) - Mejora del rendimiento de la función agregada
stochasticLinearRegression. Este parche fue aportado por Intel. #8652 (alexey-milovidov) - Mejora del rendimiento de la función
reinterpretAsFixedString. #9342 (alexey-milovidov) - No enviar bloques al cliente para el formato
Nullen el pipeline de procesadores. #8797 (Nikolai Kochetov) #8767 (Alexander Kuzmenkov)
mejora de compilación/pruebas/empaquetado
- El manejo de excepciones ahora funciona correctamente en Windows Subsystem for Linux. Consulte https://github.com/ClickHouse-Extras/libunwind/pull/3. Esto corrige #6480 #9564 (sobolevsv)
- Se sustituyó
readlineporreplxxpara la edición interactiva de líneas enclickhouse-client#8416 (Ivan) - Menor tiempo de compilación y menos instanciaciones de plantillas en FunctionsComparison. #9324 (alexey-milovidov)
- Se añadió la integración de
clang-tidyen CI. Véase también #6044 #9566 (alexey-milovidov) - Ahora ClickHouse se enlaza en CI con
lld, incluso paragcc. #9049 (alesapin) - Permite aleatorizar la planificación de hilos e inyectar fallos cuando se establecen las variables de entorno
THREAD_FUZZER_*. Esto ayuda con las pruebas. #9459 (alexey-milovidov) - Habilitar sockets seguros en las pruebas sin estado #9288 (tavplubix)
- Hacer más robusto SPLIT_SHARED_LIBRARIES=OFF #9156 (Azat Khuzhin)
- Hacer que la prueba “performance_introspection_and_logging” sea fiable frente a cuelgues aleatorios del servidor. Esto puede ocurrir en el entorno de CI. Véase también #9515 #9528 (alexey-milovidov)
- Validación de XML en la comprobación de estilo. #9550 (alexey-milovidov)
- Se corrigió una condición de carrera en la prueba
00738_lock_for_inner_table. Esta prueba dependía de la función sleep. #9555 (alexey-milovidov) - Se eliminaron las pruebas de rendimiento del tipo
once. Esto es necesario para ejecutar todas las pruebas de rendimiento en el modo de comparación estadística (más fiable). #9557 (alexey-milovidov) - Se añadió una prueba de rendimiento de funciones aritméticas. #9326 (alexey-milovidov)
- Se añadió una prueba de rendimiento para las funciones de agregación
sumMapysumMapWithOverflow. Como seguimiento de #8933 #8947 (alexey-milovidov) - Garantizar el estilo de ErrorCodes con la comprobación de estilo. #9370 (alexey-milovidov)
- Se añadió un script para el historial de pruebas. #8796 (alesapin)
- Se añadió la advertencia de GCC
-Wsuggest-overridepara localizar y corregir todos los casos en los que debe usarse la palabra claveoverride. #8760 (kreuzerkrieg) - Ignorar el símbolo débil en Mac OS X, ya que debe estar definido #9538 (Usuario eliminado)
- Se normalizó el tiempo de ejecución de algunas consultas en las pruebas de rendimiento. Esto se hizo como preparación para ejecutar todas las pruebas de rendimiento en modo de comparación. #9565 (alexey-milovidov)
- Corregir algunas pruebas para que pytest sea compatible con las pruebas de consulta #9062 (Ivan)
- Habilitar SSL en la compilación con MSan para que el servidor no falle al arrancar al ejecutar pruebas sin estado #9531 (tavplubix)
- Corregida la sustitución de la base de datos en los resultados de las pruebas #9384 (Ilya Yatsishin)
- Correcciones en la compilación para varias plataformas #9381 (proller) #8755 (proller) #8631 (proller)
- Se añadió una sección de discos a la imagen de Docker de prueba stateless-with-coverage #9213 (Pavel Kovalenko)
- Eliminar los archivos dentro del árbol de código fuente al compilar con GRPC #9588 (Amos Bird)
- Tiempo de compilación ligeramente menor al eliminar SessionCleaner de Context. Simplificación del código de SessionCleaner. #9232 (alexey-milovidov)
- Se actualizó la comprobación de consultas colgadas en el script clickhouse-test #8858 (Alexander Kazakov)
- Se eliminaron algunos archivos innecesarios del repositorio. #8843 (alexey-milovidov)
- Se cambió el tipo de las pruebas de rendimiento de matemáticas de
oncealoop. #8783 (Nikolai Kochetov) - Se añadió una imagen de Docker que permite generar un informe HTML interactivo del explorador de código para nuestro código fuente. #8781 (alesapin) Consulte Woboq Code Browser
- Se silencian algunos fallos de pruebas con MSan. #8780 (Alexander Kuzmenkov)
- Se aceleró la prueba “exception while insert”. Esta prueba suele agotar el tiempo de espera en la build debug-with-coverage. #8711 (alexey-milovidov)
- Se actualizaron
libcxxylibcxxabia la rama master. Como preparación para #9304 #9308 (alexey-milovidov) - Se corrigió la prueba inestable
00910_zookeeper_test_alter_compression_codecs. #9525 (alexey-milovidov) - Se eliminaron las opciones duplicadas del enlazador. Asegúrese de que el enlazador no busque un símbolo inesperado. #9433 (Amos Bird)
- Añadir el driver
clickhouse-odbca las imágenes de prueba. Esto permite probar la interacción de ClickHouse consigo mismo mediante su propio controlador ODBC. #9348 (filimonov) - Soluciona varios errores en las pruebas unitarias. #9047 (alesapin)
- Se habilitó la advertencia de GCC
-Wmissing-include-dirspara eliminar todas las inclusiones no existentes, principalmente como resultado de errores en los scripts de CMake #8704 (kreuzerkrieg) - Se describen las razones por las que el perfilador de consultas no puede funcionar. Esto está previsto para #9049 #9144 (alexey-milovidov)
- Se actualizó OpenSSL al master upstream. Se corrigió el problema por el que las conexiones TLS podían fallar con el mensaje
OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal errorySSL Exception: error:2400006E:random number generator::error retrieving entropy. El problema estaba presente en la versión 20.1. #8956 (alexey-milovidov) - Actualizar el Dockerfile del servidor #8893 (Ilya Mazaev)
- Correcciones menores en el script build-gcc-from-sources #8774 (Michael Nacharov)
- Reemplazar
numbersporzerosen las pruebas de rendimiento en las que no se usa la columnanumber. Esto dará como resultado resultados de prueba más limpios. #9600 (Nikolai Kochetov) - Se corrige un problema de desbordamiento de pila al usar initializer_list en los constructores de Column. #9367 (Usuario eliminado)
- Actualizar librdkafka a la versión 1.3.0. Habilitar las bibliotecas integradas
rdkafkaygsaslen Mac OS X. #9000 (Andrew Onyshchuk) - corrección de compilación para GCC 9.2.0 #9306 (vxider)
lanzamiento de ClickHouse v20.1
Lanzamiento de ClickHouse v20.1.16.120-stable 2020-60-26
Corrección de errores
- Se corrige un fallo poco frecuente causado por usar una columna
Nullableen la condición prewhere. Continuación de #11608. #11869 (Nikolai Kochetov). - No se permite
arrayJoindentro de funciones de orden superior. Esto provocaba una sincronización incorrecta del protocolo. Esto cierra #3933. #11846 (alexey-milovidov). - Se corrige el comportamiento inesperado de consultas como
SELECT *, xyz.*, que se ejecutaban correctamente cuando se esperaba un error. #11753 (hexiaoting). - Se corrige un LOGICAL_ERROR causado por una deducción incorrecta del tipo de literales complejos en el formato de entrada Values. #11732 (tavplubix).
- Se corrige
ORDER BY ... WITH FILLen columnas constantes. #11697 (Anton Popov). - Se pasan los timeouts correctos al comunicarse con el puente XDBC. Últimamente no se respetaban los timeouts al comprobar si el puente seguía activo y al recibir metadatos. #11690 (alexey-milovidov).
- Se añade compatibilidad con expresiones regulares con marcas que no distinguen entre mayúsculas y minúsculas. Esto corrige #11101 y #11506. #11649 (alexey-milovidov).
- Se corrigen los filtros bloom para String (índices de omisión de datos). #11638 (Azat Khuzhin).
- Se corrige un fallo poco frecuente causado por usar una columna
Nullableen la condición prewhere. (Probablemente esté relacionado de algún modo con #11572). #11608 (Nikolai Kochetov). - Se corrige el código de salida incorrecto de
clickhouse-clientcuandoexception.code() % 256 = 0. #11601 (filimonov). - Se corrige un error trivial en el mensaje de log sobre “Mark cache size was lowered” al iniciar el servidor. Esto cierra #11399. #11589 (alexey-milovidov).
- Ahora el contenedor Docker de
clickhouse-serverdará preferencia a IPv6 al comprobar la disponibilidad del servidor. #11550 (Ivan Starkov). - Se corrige una fuga de memoria cuando se lanza una excepción en mitad de una agregación con funciones -State. Esto corrige #8995. #11496 (alexey-milovidov).
- Se corrige el uso de la clave primaria envuelta en una función con el modificador ‘FINAL’ y la optimización de ‘ORDER BY’. #10715 (Anton Popov).
lanzamiento de ClickHouse v20.1.15.109-stable 2020-06-19
Corrección de errores
Lanzamiento de ClickHouse v20.1.14.107-stable 2020-06-11
Corrección de errores
- Se corrige el error
Size of offsets does not match size of columnen consultas conPREWHERE column in (subquery)yARRAY JOIN. #11580 (Nikolai Kochetov).
lanzamiento de ClickHouse v20.1.13.105-stable 2020-06-10
Corrección de errores
- Corrige el error
Data compressed with different methods, que puede producirse simin_bytes_to_use_direct_ioestá habilitado, PREWHERE está activo y se usa SAMPLE o un número elevado de hilos. Esto corrige #11539. #11540 (alexey-milovidov). - Se corrige el valor devuelto del tamaño comprimido para los codecs. #11448 (Nikolai Kochetov).
- Se corrige el fallo del servidor cuando una columna tiene un códec de compresión con argumentos no literales. Corrige #11365. #11431 (alesapin).
- Se corrige pointInPolygon cuando el punto es nan. Corrige #11375. #11421 (Alexey Ilyukhov).
- Se corrigió
geohashesInBoxpara argumentos fuera del rango de latitud/longitud. #11403 (Vasily Nemkov). - Corrige un posible error
Pipeline stucken consultas con ordenación externa y límite. Soluciona #11359. #11366 (Nikolai Kochetov). - Se corrige una falla en
quantilesExactWeightedArray. #11337 (Nikolai Kochetov). - Hace que la escritura en
MATERIALIZED VIEWcon la configuraciónparallel_view_processing = 1vuelva a ser paralela. Corrige #10241. #11330 (Nikolai Kochetov). - Se corrigió visitParamExtractRaw cuando el JSON extraído contiene cadenas con { o [ desbalanceados. #11318 (Ewout).
- Se corrigió una condición de carrera muy poco frecuente en ThreadPool. #11314 (alexey-milovidov).
- Corrige un posible problema de memoria sin inicializar en la conversión. Ejemplo:
SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov). - Corrige el problema que impedía que el análisis de índices funcionara si una tabla tenía una columna Array en la clave primaria y una consulta filtraba por esa columna con las funciones
emptyonotEmpty. Esto corrige #11286. #11303 (alexey-milovidov). - Se corrige un error por el que la estimación de la velocidad de la consulta podía ser incorrecta y el límite de
min_execution_speedpodía no funcionar o hacerlo incorrectamente si la consulta estaba limitada pormax_network_bandwidth,max_execution_speedo la configuración depriority. Se cambia el valor predeterminado detimeout_before_checking_execution_speeda un valor distinto de cero, porque de lo contrario la configuraciónmin_execution_speedymax_execution_speedno tienen efecto. Esto corrige #11297. Esto corrige #5732. Esto corrige #6228. Mejora de usabilidad: se evita la concatenación del mensaje de excepción con la barra de progreso enclickhouse-client. #11296 (alexey-milovidov). - Se corrige un fallo al leer datos malformados en formato Protobuf. Esto corrige #5957 y #11203. #11258 (Vitaly Baranov).
- Se corrige el posible error
Cannot capture columnen funciones de orden superior con un argumento capturadoArray(Array(LowCardinality)). #11185 (Nikolai Kochetov). - Si el índice de omisión de datos dependía de columnas que iban a modificarse durante la fusión en segundo plano (en SummingMergeTree, AggregatingMergeTree, así como con TTL GROUP BY), se calculaba de forma incorrecta. Este problema se ha corregido moviendo el cálculo del índice para después de la fusión, de modo que se calcule sobre los datos ya fusionados. #11162 (Azat Khuzhin).
- Se eliminó el registro de la tarea de finalización de mutaciones si no se finalizó nada. #11109 (alesapin).
- Se corrigieron errores relacionados con la resolución de argumentos en parseDateTime64BestEffort. #10925. #11038 (Vasily Nemkov).
- Se corrige el tamaño incorrecto de los datos brutos en el método
getRawData(). #10964 (Igr). - Se corrige la compatibilidad con versiones anteriores de las tuplas en las tablas Distributed. #10889 (Anton Popov).
- Se corrige SIGSEGV en StringHashTable (si esa clave no existe). #10870 (Azat Khuzhin).
- Se corrigió un error en
ReplicatedMergeTreeque podía hacer que alguna consultaALTERsobreOPTIMIZEquedara bloqueada esperando a alguna réplica después de que esta se volviera inactiva. #10849 (tavplubix). - Se corrige el orden de las columnas después de Block::sortColumns() (también se añade una prueba que demuestra que esto afecta a un caso de uso real: el motor Buffer). #10826 (Azat Khuzhin).
- Soluciona el problema con ODBC bridge cuando no se solicita el uso de comillas en los identificadores. Esto corrige #7984. #10821 (alexey-milovidov).
- Corregidos los errores detectados por UBSan y MSan en DateLUT. #10798 (alexey-milovidov).
-
- Se usa
src_typepara la conversión correcta de tipos en las condiciones de clave. Corrige #6287. #10791 (Andrew Onyshchuk).
- Se usa
- Corregido el comportamiento de
parallel_view_processing. Ahora, si se produce una excepción, se completarán todas las inserciones enMATERIALIZED VIEW, sin dejar ninguna pendiente. Corrige #10241. #10757 (Nikolai Kochetov). - Se corrigen los combinadores -OrNull y -OrDefault al combinarlos con -State. #10741 (hcz).
- Corrige la desaparición de los totales. Los totales podían quedar filtrados si la consulta incluía
joino una subconsulta con una condiciónwhereexterna. Corrige #10674. #10698 (Nikolai Kochetov). - Se corrigen varios usos del operador
INcon el mismo conjunto en una misma consulta. #10686 (Anton Popov). - Se corrigió el orden de los parámetros en el constructor de AggregateTransform. #10667 (palasonic1).
- Corrige la falta de ejecución paralela de consultas remotas con
distributed_aggregation_memory_efficienthabilitado. Corrige #10655. #10664 (Nikolai Kochetov). - Se corrigió la optimización de predicados para consultas distribuidas (
enable_optimize_predicate_expression=1) en consultas con cláusulaHAVING(es decir, cuando es necesario filtrar en el servidor iniciador), preservando el orden de las expresiones (lo cual basta para corregirlo), y también se obliga al agregador a usar nombres de columna en lugar de índices. Correcciones: #10613, #11413. #10621 (Azat Khuzhin). - Se corrigió el error
the BloomFilter false positive must be a double number between 0 and 1#10551. #10569 (Winter Zhang). - Corrige
SELECTen la columna ALIAS cuando el tipo de la expresión predeterminada difiere del tipo de la columna. #10563 (Azat Khuzhin). -
- Se implementó la comparación entre valores DateTime64 y String (como en DateTime). #10560 (Vasily Nemkov).
lanzamiento de ClickHouse v20.1.12.86, 2020-05-26
Corrección de errores
- Se corrigió la incompatibilidad de la agregación en dos niveles entre la versión 20.1 y las anteriores. Esta incompatibilidad se produce cuando se usan distintas versiones de ClickHouse en el nodo initiator y en los nodos remotos, el tamaño del resultado de GROUP BY es grande y la agregación se realiza sobre un único campo String. Esto da lugar a varias filas sin fusionar para una sola clave en el resultado. #10952 (alexey-milovidov).
- Se corrigió la corrupción de datos de la columna de clave
LowCardinality(FixedString)enSummingMergeTree, que podría haberse producido tras una fusión. Corrige #10489. #10721 (Nikolai Kochetov). - Se corrigió un error que hacía que las solicitudes HTTP quedaran bloqueadas al cerrar el cliente cuando
readonly=2ycancel_http_readonly_queries_on_client_close=1. Soluciona #7939, #7019, #7736, #7091. #10684 (tavplubix). - Se corrigió un error por el que la consulta
SYSTEM DROP DNS CACHEtambién eliminaba las cachés que se usan para comprobar si el usuario tiene permiso para conectarse desde determinadas direcciones IP. #10608 (tavplubix). - Se corrigieron resultados escalares incorrectos dentro de la consulta interna de
MATERIALIZED VIEWen caso de que la consulta contuviera una tabla dependiente. #10603 (Nikolai Kochetov). - Se corrigió el caso en que la mutación terminaba todas las partes, pero quedaba bloqueada con
is_done=0. #10526 (alesapin). - Se corrigió un desbordamiento al inicio de la época Unix para zonas horarias con desplazamiento fraccionario respecto a UTC. Esto corrige #9335. #10513 (alexey-milovidov).
- Se corrigió el cierre incorrecto del almacenamiento Distributed. #10491 (Azat Khuzhin).
- Se corrigió el desbordamiento numérico en
simpleLinearRegressionpara enteros grandes. #10474 (hcz). - Se corrigió la eliminación del directorio de metadatos cuando falla la operación ATTACH de la base de datos. #10442 (Winter Zhang).
- Se añadió una comprobación del número y del tipo de argumentos al crear el índice
BloomFilter#9623. #10431 (Winter Zhang). - Se corrigió el problema por el que una consulta con
ARRAY JOIN,ORDER BYyLIMITpodía devolver resultados incompletos. Esto corrige #10226. #10427 (alexey-milovidov). - Prefiera
fallback_to_stale_replicasen vez deskip_unavailable_shards. #10422 (Azat Khuzhin). - Se corrigió el aplanado incorrecto de los tipos de datos
Array(Tuple(...)). Esto soluciona #10259. #10390 (alexey-milovidov). - Se corrigió un comportamiento incorrecto en
HashTableque provocaba un error de compilación al intentar leer HashMap desde el búfer. #10386 (palasonic1). - Se corrigió un posible error
Pipeline stuckenConcatProcessorque podía producirse en una consulta remota. #10381 (Nikolai Kochetov). - Se corrigió el error
Pipeline stuckrelacionado conmax_rows_to_group_byygroup_by_overflow_mode = 'break'. #10279 (Nikolai Kochetov). - Se corrigieron varios errores que ocurrían cuando algunos datos se insertaban con quorum y luego se eliminaban de algún modo (DROP PARTITION, TTL), lo que hacía que los INSERTs se quedaran atascados o provocaba excepciones de falso positivo en los SELECTs. Esto corrige #9946. #10188 (Nikita Mikhaylov).
- Se corrigió una incompatibilidad que se producía cuando se usaban versiones anteriores a 18.12.17 en servidores remotos y una versión más reciente en el servidor iniciador, con
GROUP BYtanto en claves fijas como no fijas, y con el método de agrupación de dos niveles activado. #3254 (alexey-milovidov).
Mejora de compilación/pruebas/empaquetado
lanzamiento de ClickHouse v20.1.10.70, 2020-04-17
Corrección de errores
- Se corrige una posible excepción poco frecuente:
Cannot drain connections: cancel first. #10239 (Nikolai Kochetov). - Se corrigió un error por el que ClickHouse mostraba el mensaje de error
'Unknown function lambda.'cuando el usuario intentaba ejecutarALTER UPDATE/DELETEen tablas conENGINE = Replicated*. La comprobación de funciones no deterministas ahora procesa correctamente las expresiones lambda. #10237 (Alexander Kazakov). - Se corrigió
parseDateTimeBestEffortpara cadenas en RFC-2822 cuando el día de la semana es martes o jueves. Esto corrige #10082. #10214 (alexey-milovidov). - Se corrigen los nombres de las columnas de las constantes dentro de
JOINque pueden entrar en conflicto con los nombres de las constantes fuera deJOIN. #10207 (alexey-milovidov). - Se corrigió la posible ejecución infinita de la consulta cuando en realidad debería detenerse por LIMIT, al leer de una fuente infinita como
system.numbersosystem.zeros. #10206 (Nikolai Kochetov). - Se corrige la optimización move-to-prewhere cuando hay funciones
arrayJoin(en ciertos casos). Esto corrige #10092. #10195 (alexey-milovidov). - Se añadió la posibilidad de relajar la restricción del uso de funciones no deterministas en las mutaciones mediante la configuración
allow_nondeterministic_mutations. #10186 (filimonov). - Convertir bloques si la estructura no coincide al hacer
INSERTen una tabla con motorDistributed. #10135 (Azat Khuzhin). - Se corrige
SIGSEGVal hacerINSERTen una tablaDistributedcuando su estructura difiere de la de las tablas subyacentes. #10105 (Azat Khuzhin). - Evita la posible pérdida de filas en consultas con
JOINyUNION ALL. Corrige #9826, #10113. #10099 (Nikolai Kochetov). - Se añade la comprobación de argumentos y la compatibilidad con argumentos de identificador para el motor de base de datos MySQL. #10077 (Winter Zhang).
- Se corrige un error en la fuente de un diccionario de ClickHouse desde un servidor ClickHouse en localhost. El error puede provocar corrupción de memoria si los tipos del diccionario y de la fuente no son compatibles. #10071 (alesapin).
- Se corrigió el error
Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform. Se producía cuando estaba habilitada la configuracióndistributed_aggregation_memory_efficienty la consulta distribuida leía datos agregados con distintos niveles desde diferentes segmentos (mezcla de agregación de un solo nivel y de dos niveles). #10063 (Nikolai Kochetov). - Se corrige un fallo de segmentación que podía producirse en
GROUP BYcon claves de cadena que contenían bytes nulos al final (#8636, #8925). #10025 (Alexander Kuzmenkov). - Se corrige un error por el que no se obtenían las tablas necesarias en una de las etapas de procesamiento de las consultas a algunas bases de datos. Corrige #9699. #9949 (achulkov2).
- Se corrige el error
'Not found column in block'cuandoJOINaparece conTOTALS. Corrige #9839. #9939 (Artem Zuikov). - Se corrigió un error por el que las consultas DDL con
ON CLUSTERse quedaban bloqueadas al iniciar el servidor. #9927 (Gagan Arneja). - Se corrigió
TRUNCATEpara el motor de tabla Join (#9917). #9920 (Amos Bird). - Se corrigió el error
'scalar does not exist'en las consultas ALTER (#9878). #9904 (Amos Bird). - Se corrigió una condición de carrera entre drop y optimize en
ReplicatedMergeTree. #9901 (alesapin). - Se corrigió la lógica de
DeleteOnDestroyenATTACH PART, que podía provocar la eliminación automática de la parte adjunta, y se añadieron algunas pruebas. #9410 (Vladimir Chebotarev).
Mejora de compilación/pruebas/empaquetado
- Se corrige la prueba unitaria
collapsing_sorted_stream. #9367 (usuario eliminado).
Lanzamiento de ClickHouse v20.1.9.54, 2020-03-28
Corrección de errores
- Se corrige el error
'Different expressions with the same alias'cuando la consulta tienePREWHEREyWHEREen una tabla distribuida ySET distributed_product_mode = 'local'. #9871 (Artem Zuikov). - Se corrige el consumo excesivo de memoria de las mutación en tablas con una clave primaria compuesta. Esto corrige #9850. #9860 (alesapin).
- Para las consultas
INSERT, el segmento ahora ajusta la configuración recibida del iniciador a las restricciones del segmento en lugar de lanzar una excepción. Esta corrección permite enviar consultasINSERTa un segmento con restricciones diferentes. Este cambio mejora la corrección de #9447. #9852 (Vitaly Baranov). - Se corrige una posible excepción
Got 0 in totals chunk, expected 1en el cliente. Ocurría en consultas conJOINsi la tabla unida de la derecha no tenía filas. Ejemplo:select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;. Corrige #9777. #9823 (Nikolai Kochetov). - Se corrige
SIGSEGVconoptimize_skip_unused_shardscuando el tipo no puede convertirse. #9804 (Azat Khuzhin). - Se corrigieron algunos casos en los que la zona horaria del argumento de la función no se usaba correctamente. #9574 (Vasily Nemkov).
Mejora
- Eliminar la etapa
ORDER BYde las mutaciones, ya que leemos de una sola parte ordenada en un único hilo. Añadir también una comprobación para garantizar que el orden de las filas en la mutación siga el de la clave de ordenación y que no se viole. #9886 (alesapin).
Mejora de compilación/pruebas/empaquetado
- Se limpiaron las marcas duplicadas del enlazador. Se asegura de que el enlazador no busque un símbolo inesperado. #9433 (Amos Bird).
Lanzamiento de ClickHouse v20.1.8.41, 2020-03-20
Corrección de errores
- Se corrige un posible error permanente
Cannot schedule a task(debido a una excepción no controlada enParallelAggregatingBlockInputStream::Handler::onFinish/onFinishThread). Esto corrige #6833. #9154 (Azat Khuzhin) - Se corrige el consumo excesivo de memoria en las consultas
ALTER(mutación). Esto corrige #9533 y #9670. #9754 (alesapin) - Se corrige un error en el uso de comillas invertidas en el DDL de los diccionarios externos. Esto corrige #9619. #9734 (alesapin)
lanzamiento de ClickHouse v20.1.7.38, 2020-03-18
Corrección de errores
- Se corrigieron los nombres internos incorrectos de las funciones
sumKahanysumWithOverflow. Esto provocaba una excepción al usar estas funciones en consultas remotas. #9636 (Azat Khuzhin). Este problema estaba presente en todas las versiones de ClickHouse. - Permite
ALTER ON CLUSTERen tablasDistributedcon replicación interna. Esto corrige #3268. #9617 (shinoi2). Este problema estaba presente en todas las releases de ClickHouse. - Corrige las posibles excepciones
Size of filter does not match size of columneInvalid number of rows in ChunkenMergeTreeRangeReader. Podían producirse al ejecutarPREWHEREen algunos casos. Corrige #9132. #9612 (Anton Popov) - Se corrigió el problema: la zona horaria no se conservaba al escribir una expresión aritmética simple como
time + 1(a diferencia de una expresión comotime + INTERVAL 1 SECOND). Esto corrige #5743. #9323 (alexey-milovidov). Este problema estaba presente en todas las versiones de ClickHouse. - Ahora ya no es posible crear ni añadir columnas con alias cíclicos simples como
a DEFAULT b, b DEFAULT a. #9603 (alesapin) - Se corrigió el problema por el que el relleno al final de un valor codificado en base64 podía estar mal formado. Se actualizó la biblioteca de base64. Esto corrige #9491, cierra #9492 #9500 (alexey-milovidov)
- Corrige una condición de carrera al destruir
Poco::HTTPServer. Podía ocurrir cuando el servidor se iniciaba y se detenía inmediatamente. #9468 (Anton Popov) - Corrige un posible bloqueo o un número incorrecto de filas en
LIMIT n WITH TIEScuando hay muchas filas iguales a la enésima fila. #9464 (tavplubix) - Corrige posibles checksums no coincidentes con los TTL de columna. #9451 (Anton Popov)
- Se corrige un fallo que se producía cuando un usuario intentaba
ALTER MODIFY SETTINGen la familia de motores de tablaMergeTreede formato antiguo. #9435 (alesapin) - Ahora intentaremos finalizar las mutaciones con más frecuencia. #9427 (alesapin)
- Corrige la incompatibilidad del protocolo de replicación introducida en #8598. #9412 (alesapin)
- Se corrige not(has()) en el índice bloom_filter para tipos Array. #9407 (achimbab)
- Se corrigió el comportamiento de las funciones
matchyextractcuando haystack contenía cero bytes. El comportamiento era incorrecto cuando haystack era constante. Esto corrige #9160 #9163 (alexey-milovidov) #9345 (alexey-milovidov)
mejora de compilación/pruebas/empaquetado
- El manejo de excepciones ahora funciona correctamente en Windows Subsystem for Linux. Consulte https://github.com/ClickHouse-Extras/libunwind/pull/3. Esto corrige #6480 #9564 (sobolevsv)
lanzamiento de ClickHouse v20.1.6.30, 2020-03-05
Corrección de errores
- Se corrige la incompatibilidad de los datos al comprimirse con el códec
T64. #9039 (abyss7) - Se corrige el orden de los rangos al leer una tabla MergeTree con un solo hilo. Corrige #8964. #9050 (CurtizJ)
- Corrige un posible segfault en
MergeTreeRangeReaderal ejecutarPREWHERE. Soluciona #9064. #9106 (CurtizJ) - Se corrigió
reinterpretAsFixedStringpara que devolvieraFixedStringen lugar deString. #9052 (oandrew) - Corrige
joinGetcon tipos de retorno Nullable. Soluciona #8919 #9014 (amosbird) - Se corrigieron la prueba fuzz y el comportamiento incorrecto de las funciones bitTestAll/bitTestAny. #9143 (alexey-milovidov)
- Corrige el comportamiento de las funciones match y extract cuando haystack tiene longitud cero. El comportamiento era incorrecto cuando haystack era constante. Corrige #9160 #9163 (alexey-milovidov)
- Se corrigió la ejecución de predicados invertidos cuando se usa un índice funcional monótono no estricto. Corrige #9034 #9223 (Akazz)
- Permite reescribir
CROSScomoINNER JOINsi en la cláusulaWHEREhay un operador[NOT] LIKE. Corrige #9191 #9229 (4ertus2) - Permitir que las primeras columnas de una tabla con motor Log sean alias. #9231 (abyss7)
- Se permite
joinpor coma conIN()dentro. Corrige #7314. #9251 (4ertus2) - Mejora la lógica de las consultas
ALTER MODIFY/ADD. Ahora no se puedeADDuna columna sin tipo, la expresión por defecto deMODIFYno cambia el tipo de la columna yMODIFYdel tipo no pierde el valor de la expresión por defecto. Corrige #8669. #9227 (alesapin) - Se corrigió la finalización de las mutaciones; una mutación ya finalizada puede tener el estado is_done=0. #9217 (alesapin)
- Se admite la canalización “Processors” para system.numbers y system.numbers_mt. Esto también corrige el error por el que no se respeta
max_execution_time. #7796 (KochetovNicolai) - Se corrige el recuento erróneo de la métrica
DictCacheKeysRequestedFound. #9411 (nikitamikhaylov) - Se añadió una comprobación de la política de almacenamiento en
ATTACH PARTITION FROM,REPLACE PARTITION,MOVE TO TABLE, que de lo contrario podría hacer que los datos de la parte quedaran inaccesibles tras reiniciar e impedir que ClickHouse se iniciara. #9383 (excitoon) - Se corrigió un error detectado por UBSan en
MergeTreeIndexSet. Esto corrige #9250 #9365 (alexey-milovidov) - Corrige una posible condición de carrera en BlockIO. #9356 (KochetovNicolai)
- Compatibilidad con números
UInt64que no caben en Int64 en las funciones relacionadas con JSON. Se actualizóSIMDJSONa master. Esto corrige #9209 #9344 (alexey-milovidov) - Se corrige el problema por el que la cantidad de espacio libre no se calcula correctamente si el directorio de datos está montado en un dispositivo independiente. Para el disco predeterminado, se calcula el espacio libre a partir del subdirectorio de datos. Esto corrige #7441 #9257 (millb)
- Se corrige el problema por el que las conexiones TLS podían fallar con el mensaje
OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error and SSL Exception: error:2400006E:random number generator::error retrieving entropy.Se actualiza OpenSSL a la ramamasterdel repositorio upstream. #8956 (alexey-milovidov) - Al ejecutar la consulta
CREATE, simplifica las expresiones constantes en los argumentos del motor de almacenamiento. Reemplaza el nombre de la base de datos vacío por la base de datos actual. Corrige #6508, #3492. También corrige la comprobación de la dirección local en ClickHouseDictionarySource. #9262 (tabplubix) - Se corrige un fallo de segmentación en
StorageMerge, que puede producirse al leer desdeStorageFile. #9387 (tabplubix) - Se evita la pérdida de datos en
Kafkaen casos poco frecuentes cuando se produce una excepción después de leer el sufijo, pero antes de hacer el commit. Corrige #9378. Relacionado con #7175 #9507 (filimonov) - Se corrige un error que provocaba la caída del servidor al intentar usar / eliminar la tabla
Kafkacreada con parámetros incorrectos. Corrige #9494. Incorpora #9507. #9513 (filimonov)
Nueva funcionalidad
- Se añadió la opción
deduplicate_blocks_in_dependent_materialized_viewspara controlar el comportamiento de las inserciones idempotentes en tablas con vistas materializadas. Esta nueva funcionalidad se incorporó a la versión de corrección de errores a petición especial de Altinity. #9070 (urykhy)
lanzamiento de ClickHouse v20.1.2.4, 2020-01-22
Cambio incompatible con versiones anteriores
- La configuración
merge_tree_uniform_read_distributionpasa a ser obsoleta. El servidor seguirá reconociéndola, pero no tendrá ningún efecto. #8308 (alexey-milovidov) - Se cambió el tipo de retorno de la función
greatCircleDistanceaFloat32porque ahora el resultado del cálculo esFloat32. #7993 (alexey-milovidov) - Ahora se espera que los parámetros de consulta se representen en formato “escaped”. Por ejemplo, para pasar la cadena
a<tab>b, debes escribira\tboa\<tab>by, respectivamente,a%5Ctboa%5C%09ben la URL. Esto es necesario para poder pasar NULL como\N. Esto corrige #7488. #8517 (alexey-milovidov) - La configuración
use_minimalistic_part_header_in_zookeeperpasa a estar habilitada de forma predeterminada paraReplicatedMergeTree. Esto reducirá significativamente la cantidad de datos almacenados en ZooKeeper. Esta configuración es compatible desde la versión 19.1 y ya la usamos en producción en varios servicios sin ningún problema desde hace más de medio año. Deshabilita esta configuración si existe la posibilidad de volver a una versión anterior a la 19.1. #6850 (alexey-milovidov) - Los índices de omisión de datos ya están listos para producción y habilitados de forma predeterminada. Las configuraciones
allow_experimental_data_skipping_indices,allow_experimental_cross_to_join_conversionyallow_experimental_multiple_joins_emulationahora están obsoletas y no hacen nada. #7974 (alexey-milovidov) - Se añade una nueva lógica
ANY JOINparaStorageJoin, coherente con la operaciónJOIN. Para actualizar sin cambios de comportamiento, debes añadirSETTINGS any_join_distinct_right_table_keys = 1a los metadatos de las tablas del engine Join o volver a crear estas tablas después de la actualización. #8400 (Artem Zuikov) - Ahora es necesario reiniciar el servidor para aplicar los cambios en la configuración de logging. Esta es una solución temporal para evitar el error por el que el servidor escribe logs en un archivo de log eliminado (consulta #8696). #8707 (Alexander Kuzmenkov)
Nueva funcionalidad
- Se añadió información sobre las rutas de las partes en
system.merges. #8043 (Vladimir Chebotarev) - Se añadió la capacidad de ejecutar la consulta
SYSTEM RELOAD DICTIONARYen modoON CLUSTER. #8288 (Guillaume Tassery) - Se añadió la posibilidad de ejecutar consultas
CREATE DICTIONARYen modoON CLUSTER. #8163 (alesapin) - Ahora, el perfil del usuario en
users.xmlpuede heredar de varios perfiles. #8343 (Mikhail f. Shiryaev) - Se añadió la tabla
system.stack_trace, que permite consultar los stack traces de todos los hilos del servidor. Esto resulta útil para que los desarrolladores inspeccionen el estado interno del servidor. Esto corrige #7576. #8344 (alexey-milovidov) - Se añade el tipo de datos
DateTime64con precisión de subsegundos configurable. #7170 (Vasily Nemkov) - Se añade la función de tabla
clusterAllReplicas, que permite consultar todos los nodos del clúster. #8493 (kiran sunkari) - Se agrega la función de agregación
categoricalInformationValue, que calcula el valor de información de una variable discreta. #8117 (hcz) - Se acelera el procesamiento de los archivos de datos en formato
CSV,TSVyJSONEachRowal hacerlo en paralelo. #7780 (Alexander Kuzmenkov) - Se agregó la función
bankerRound, que aplica el redondeo bancario. #8112 (hcz) - Se agregan más idiomas al diccionario integrado para los nombres de regiones: ‘ru’, ‘en’, ‘ua’, ‘uk’, ‘by’, ‘kz’, ‘tr’, ‘de’, ‘uz’, ‘lv’, ‘lt’, ‘et’, ‘pt’, ‘he’, ‘vi’. #8189 (alexey-milovidov)
- Mejoras en la consistencia de la lógica de
ANY JOIN. Ahorat1 ANY LEFT JOIN t2es igual at2 ANY RIGHT JOIN t1. #7665 (Artem Zuikov) - Se añade la opción de configuración
any_join_distinct_right_table_keys, que habilita el comportamiento anterior deANY INNER JOIN. #7665 (Artem Zuikov) - Se incorporan
SEMIyANTI JOIN. El comportamiento anterior deANY INNER JOINahora está disponible comoSEMI LEFT JOIN. #7665 (Artem Zuikov) - Se añadió el formato
Distributedpara el motorFiley la función de tablafile, que permite leer archivos.bingenerados por inserciones asíncronas en la tablaDistributed. #8535 (Nikolai Kochetov) - Añade un argumento de columna de restablecimiento opcional para
runningAccumulate, que permite restablecer los resultados de la agregación para cada nuevo valor de clave. #8326 (Sergey Kononenko) - Se añadió la posibilidad de usar ClickHouse como endpoint de Prometheus. #7900 (vdimir)
- Se agregó la sección
<remote_url_allow_hosts>enconfig.xmlpara restringir los hosts permitidos para los motores de tabla remotos y las funciones de tablaURL,S3,HDFS. #7154 (Mikhail Korotov) - Se añadió la función
greatCircleAngle, que calcula la distancia en una esfera en grados. #8105 (alexey-milovidov) - Se cambió el radio de la Tierra para que fuera consistente con la biblioteca H3. #8105 (alexey-milovidov)
- Se añadieron los formatos
JSONCompactEachRowyJSONCompactEachRowWithNamesAndTypesde entrada y salida. #7841 (Mikhail Korotov) - Se añadió compatibilidad para los motores de tabla y las funciones de tabla relacionados con archivos (
File,S3,URL,HDFS), lo que permite leer y escribir archivosgzipen función de un parámetro adicional del motor o de la extensión del archivo. #7840 (Andrey Bodrov) - Se añadió la función
randomASCII(length), que genera una cadena con caracteres ASCII imprimibles aleatorios. #8401 (BayoNet) - Se añadió la función
JSONExtractArrayRaw, que devuelve un array con los elementos sin parsear de un array JSON a partir de una cadenaJSON. #8081 (Oleg Matrokhin) - Se agrega la función
arrayZip, que permite combinar varios arrays de la misma longitud en un único array de tuplas. #8149 (Winter Zhang) - Se añade la posibilidad de mover datos entre discos según las expresiones
TTLconfiguradas para la familia de motores de tabla*MergeTree. #8140 (Vladimir Chebotarev) - Se añadió la nueva función de agregación
avgWeighted, que permite calcular el promedio ponderado. #7898 (Andrey Bodrov) - Ahora el análisis en paralelo está habilitado de forma predeterminada para los formatos
TSV,TSKV,CSVyJSONEachRow. #7894 (Nikita Mikhaylov) - Se añaden varias funciones Geo de la biblioteca
H3:h3GetResolution,h3EdgeAngle,h3EdgeLength,h3IsValidyh3kRing. #8034 (Konstantin Malanchev) - Se añadió compatibilidad con la compresión brotli (
br) en almacenamientos basados en archivos y funciones de tabla. Esto corrige #8156. #8526 (alexey-milovidov) - Se agregan funciones
groupBit*para el tipoSimpleAggregationFunction. #8485 (Guillaume Tassery)
Corrección de errores
- Se corrige el cambio de nombre de las tablas con motor
Distributed. Corrige el problema #7868. #8306 (tavplubix) - Ahora los diccionarios admiten
EXPRESSIONpara atributos en una cadena arbitraria de un dialecto SQL distinto de ClickHouse. #8098 (alesapin) - Se corrige la consulta
INSERT SELECT FROM mysql(...)defectuosa. Esto corrige #8070 y #7960. #8234 (tavplubix) - Corrige el error “Los tamaños de las columnas no coinciden” al insertar el
Tuplepor defecto desdeJSONEachRow. Esto corrige #5653. #8606 (tavplubix) - Ahora se lanzará una excepción si se usa
WITH TIESjunto conLIMIT BY. También se añade la posibilidad de usarTOPconLIMIT BY. Esto corrige #7472. #7637 (Nikita Mikhaylov) - Corrige la dependencia no intencionada con una versión reciente de glibc en el binario
clickhouse-odbc-bridge. #8046 (Amos Bird) - Se corrige un error en la función de comprobación de la familia de motores
*MergeTree. Ahora no falla cuando tenemos la misma cantidad de filas en el último gránulo y en la última marca (no final). #8047 (alesapin) - Corrige la inserción en columnas
Enum*después de una consultaALTER, cuando el tipo numérico subyacente coincide con el tipo especificado en la tabla. Esto corrige #7836. #7908 (Anton Popov) - Se permitió el argumento negativo no constante “size” para la función
substring. No se permitía debido a un error. Esto corrige #4832. #7703 (alexey-milovidov) - Se corrigió un error de análisis al pasar un número incorrecto de argumentos al motor de tabla
(O|J)DBC. #7709 (alesapin) - Uso del nombre del comando del proceso clickhouse en ejecución al enviar logs a syslog. En versiones anteriores, se usaba una cadena vacía en lugar del nombre del comando. #8460 (Michael Nacharov)
- Corrige la verificación de los hosts permitidos para
localhost. Este PR corrige la solución proporcionada en #8241. #8342 (Vitaly Baranov) - Se corrige un fallo poco frecuente en las funciones
argMinyargMaxcon argumentos de cadena largos, cuando el resultado se usa en la funciónrunningAccumulate. Esto corrige #8325 #8341 (dinosaur) - Corrige el problema de memory overcommit en las tablas con motor
Buffer. #8345 (Azat Khuzhin) - Se corrigió un posible error en funciones que pueden aceptar
NULLcomo uno de sus argumentos y devolver un valor distinto deNULL. #8196 (alexey-milovidov) - Mejora en los cálculos de métricas del pool de hilos para los procesos en segundo plano de los motores de tabla
MergeTree. #8194 (Vladimir Chebotarev) - Se corrige la función
INdentro de la cláusulaWHEREcuando hay un filtro de tabla a nivel de fila. Corrige #6687 #8357 (Ivan) - Ahora se lanza una excepción si el valor entero no se interpreta por completo en los valores de configuración. #7678 (Mikhail Korotov)
- Se corrige una excepción cuando se usa una función de agregación en una consulta a una tabla distribuida con más de dos segmentos locales. #8164 (小路)
- Ahora el bloom filter puede manejar arrays de longitud cero y no realiza cálculos redundantes. #8242 (achimbab)
- Se corrigió la comprobación de si se permite un host de cliente haciendo coincidir el host del cliente con
host_regexp, tal como se especifica enusers.xml. #8241 (Vitaly Baranov) - Se flexibiliza la comprobación de columnas ambiguas que provoca falsos positivos en múltiples secciones de
JOIN ON. #8385 (Artem Zuikov) - Se corrigió un posible cierre inesperado del servidor (
std::terminate) cuando el servidor no puede enviar o escribir datos en formatoJSONoXMLcon valores del tipo de datoString(que requieren validaciónUTF-8), al comprimir los datos del resultado con el algoritmo Brotli o en algunos otros casos poco frecuentes. Esto corrige #7603 #8384 (alexey-milovidov) - Se corrige una condición de carrera en
StorageDistributedDirectoryMonitordetectada en CI. Esto corrige #8364. #8383 (Nikolai Kochetov) - Ahora las fusiones en segundo plano de la familia de motores de tabla
*MergeTreeconservan con mayor precisión el orden de los volúmenes de la política de almacenamiento. #8549 (Vladimir Chebotarev) - Ahora, el motor de tabla
Kafkafunciona correctamente con el formatoNative. Esto corrige #6731 #7337 #8003. #8016 (filimonov) - Se corrigieron los formatos con cabeceras (como
CSVWithNames) que generaban una excepción de EOF en el motor de tablaKafka. #8016 (filimonov) - Se corrigió un error al crear un Set a partir de una subconsulta en la parte derecha de la cláusula
IN. Esto corrige #5767 y #2542. #7755 (Nikita Mikhaylov) - Se corrige un posible fallo al leer desde el motor de almacenamiento
File. #7756 (Nikolai Kochetov) - Se corrigió la lectura de archivos en formato
Parquetque contienen columnas de tipolist. #8334 (maxulan) - Se corrige el error
Not found columnen consultas distribuidas con una condiciónPREWHEREque depende de la clave de muestreo cuandomax_parallel_replicas > 1. #7913 (Nikolai Kochetov) - Corrige el error
Not found columncuando la consulta usabaPREWHEREque dependía del alias de la tabla y el conjunto de resultados estaba vacío debido a una condición de clave primaria. #7911 (Nikolai Kochetov) - Se corrigió el tipo de retorno de las funciones
randyrandConstantcuando el argumento esNullable. Ahora las funciones siempre devuelvenUInt32y nuncaNullable(UInt32). #8204 (Nikolai Kochetov) - Se deshabilitó el push-down de predicados para la expresión
WITH FILL. Esto corrige #7784. #7789 (Winter Zhang) - Se corrigió el resultado incorrecto de
count()paraSummingMergeTreecuando se usa la cláusulaFINAL. #3280 #7786 (Nikita Mikhaylov) - Se corrige un posible resultado incorrecto de las funciones constantes en servidores remotos. Esto ocurría en consultas con funciones como
version(),uptime(), etc., que devuelven valores constantes distintos en diferentes servidores. Esto corrige #7666. #7689 (Nikolai Kochetov) - Se corrige un error complejo en la optimización push-down de predicados que provocaba resultados incorrectos. Esto soluciona muchos problemas en la optimización push-down de predicados. #8503 (Winter Zhang)
- Se corrige un cierre inesperado en la consulta
CREATE TABLE .. AS dictionary. #8508 (Azat Khuzhin) - Varias mejoras en la gramática de ClickHouse del archivo
.g4. #8294 (taiyang-li) - Se corrige un error que provocaba bloqueos en operaciones
JOINcon tablas con motorJoin. Esto corrige #7556 #8254 #7915 #8100. #8298 (Artem Zuikov) - Se corrigió la recarga redundante de diccionarios en
CREATE DATABASE. #7916 (Azat Khuzhin) - Limita el número máximo de flujos de lectura desde
StorageFileyStorageHDFS. Corrige #7650. #7981 (alesapin) - Se corrige un error en la consulta
ALTER ... MODIFY ... CODECcuando el usuario especifica tanto la expresión predeterminada como el codec. Corrige 8593. #8614 (alesapin) - Se corrige un error en la fusión en segundo plano de columnas del tipo
SimpleAggregateFunction(LowCardinality). #8613 (Nikolai Kochetov) - Se corrigió la comprobación de tipos en la función
toDateTime64. #8375 (Vasily Nemkov) - Ahora el servidor no se bloquea al usar
LEFToFULL JOINcon un motor Join y la configuraciónjoin_use_nullsno admitida. #8479 (Artem Zuikov) - Ahora, la consulta
DROP DICTIONARY IF EXISTS db.dictno genera una excepción sidbno existe. #8185 (Vitaly Baranov) - Corregidos posibles bloqueos en funciones de tabla (
file,mysql,remote) causados por el uso de una referencia a un objetoIStorageeliminado. Corregido el análisis incorrecto de las columnas especificadas al insertar en una función de tabla. #7762 (tavplubix) - Asegúrese de que la red esté disponible antes de iniciar
clickhouse-server. Esto corrige #7507. #8570 (Zhichang Yu) - Corregido el manejo de los tiempos de espera en las conexiones seguras, para que las consultas no se queden bloqueadas indefinidamente. Esto corrige #8126. #8128 (alexey-milovidov)
- Se corrige la contención redundante entre workers concurrentes de
clickhouse-copier. #7816 (Ding Xiang Fei) - Ahora las mutations ya no omiten las partes adjuntas, incluso si su versión de mutation era mayor que la versión actual de la mutation. #7812 (Zhichang Yu) #8250 (alesapin)
- Se ignoran las copias redundantes de partes de datos
*MergeTreedespués de moverlas a otro disco y reiniciar el servidor. #7810 (Vladimir Chebotarev) - Se corrige un cierre inesperado en
FULL JOINconLowCardinalityen la clave deJOIN. #8252 (Artem Zuikov) - Se prohíbe usar el mismo nombre de columna más de una vez en una consulta
insert, comoINSERT INTO tbl (x, y, x). Esto corrige #5465 y #7681. #7685 (alesapin) - Se añadió un mecanismo alternativo para detectar el número de núcleos físicos de la CPU en CPU desconocidas (usando el número de núcleos lógicos de la CPU). Esto corrige #5239. #7726 (alexey-milovidov)
- Se corrigió el error
There's no columnen columnas materializadas y con alias. #8210 (Artem Zuikov) - Se corrigió un fallo grave que se producía cuando se usaba una consulta
EXISTSsin el calificadorTABLEoDICTIONARY, por ejemplo,EXISTS t. Esto corrige #8172. Este error se introdujo en la versión 19.17. #8213 (alexey-milovidov) - Se corrigió un error poco frecuente con el mensaje
"Sizes of columns does not match"que podía aparecer al usar la columnaSimpleAggregateFunction. #7790 (Boris Granveaud) - Se corrigió un error por el que un usuario con
allow_databasesvacío tenía acceso a todas las bases de datos (y lo mismo paraallow_dictionaries). #7793 (DeifyTheGod) - Se corrige el fallo del cliente cuando el servidor ya se había desconectado. #8071 (Azat Khuzhin)
- Se corrigió el comportamiento de
ORDER BYal ordenar por un prefijo de la clave primaria y un sufijo que no pertenece a la clave primaria. #7759 (Anton Popov) - Se comprueba si la columna calificada está presente en la tabla. Esto corrige #6836. #7758 (Artem Zuikov)
- Se corrigió el comportamiento por el que
ALTER MOVEse ejecutaba inmediatamente después de que finalizara la operación de merge y movía la superparte correspondiente a la parte especificada. Corrige #8103. #8104 (Vladimir Chebotarev) - Corrige un posible fallo del servidor al usar
UNIONcon un número distinto de columnas. Corrige #7279. #7929 (Nikolai Kochetov) - Se corrigió el tamaño de la subcadena resultante para la función
substrcon tamaño negativo. #8589 (Nikolai Kochetov) - Ahora, el servidor no ejecuta una mutación de parte en
MergeTreesi no hay suficientes hilos libres en el background pool. #8588 (tavplubix) - Se corrigió un pequeño error tipográfico en el formato del AST de
UNION ALL. #7999 (litao91) - Se corrigieron los resultados incorrectos del filtro bloom para números negativos. Esto soluciona #8317. #8566 (Winter Zhang)
- Se corrigió un posible desbordamiento de búfer en decompress. Un usuario malicioso puede proporcionar datos comprimidos falsificados que provoquen una lectura fuera de los límites del búfer. Este problema fue detectado por Eldar Zaitov, del equipo de seguridad de la información de Yandex. #8404 (alexey-milovidov)
- Corrige un resultado incorrecto por un desbordamiento de enteros en
arrayIntersect. #7777 (Nikolai Kochetov) - Ahora la consulta
OPTIMIZE TABLEno esperará a que las réplicas desconectadas realicen la operación. #8314 (javi santana) - Se corrigió el parser de
ALTER TTLpara las tablasReplicated*MergeTree. #8318 (Vladimir Chebotarev) - Se corrigió la comunicación entre el servidor y el cliente para que el servidor lea la información de las tablas temporales después de un fallo en la consulta. #8084 (Azat Khuzhin)
- Se corrigió el error de la función
bitmapAndal intersectar un bitmap agregado y un bitmap escalar. #8082 (Yue Huang) - Se ajustó la definición de
ZXidsegún la Guía del programador de ZooKeeper, lo que corrige un error enclickhouse-cluster-copier. #8088 (Ding Xiang Fei) - La función de tabla
odbcahora respeta la configuraciónexternal_table_functions_use_nulls. #7506 (Vasily Nemkov) - Se corrigió un error que provocaba una condición de carrera poco frecuente. #8143 (Alexander Kazakov)
- Ahora
SYSTEM RELOAD DICTIONARYvuelve a cargar por completo un diccionario, ignorandoupdate_field. Esto corrige #7440. #8037 (Vitaly Baranov) - Se añadió la posibilidad de comprobar si existe un diccionario en una consulta CREATE. #8032 (alesapin)
- Se corrige el análisis de
Float*en el formatoValues. Esto corrige #7817. #7870 (tavplubix) - Se corrigió un fallo que se producía cuando no se podía reservar espacio en algunas operaciones en segundo plano de la familia de motores de tabla
*MergeTree. #7873 (Vladimir Chebotarev) - Se corrige el fallo de la operación de fusión cuando la tabla contiene una columna
SimpleAggregateFunction(LowCardinality). Esto corrige #8515. #8522 (Azat Khuzhin) - Se restablece la compatibilidad con todos los locales de ICU y se añade la posibilidad de aplicar reglas de ordenación a expresiones constantes. También se añade el nombre del idioma a la tabla
system.collations. #8051 (alesapin) - Se corrigió un error por el que los diccionarios externos con un lifetime mínimo de cero (
LIFETIME(MIN 0 MAX N),LIFETIME(N)) no se actualizaban en segundo plano. #7983 (alesapin) - Se corrige un fallo que se producía cuando un diccionario externo con origen en ClickHouse tenía una subconsulta en la consulta. #8351 (Nikolai Kochetov)
- Se corrige el análisis incorrecto de la extensión del archivo en una tabla con motor
URL. Esto corrige #8157. #8419 (Andrey Bodrov) - Se corrige la consulta
CHECK TABLEpara tablas*MergeTreesin clave. Soluciona #7543. #7979 (alesapin) - Se corrigió la conversión de
Float64al tipo de MySQL. #8079 (Yuriy Baranov) - Ahora, si la tabla no se eliminó por completo debido a un fallo del servidor, el servidor intentará restaurarla y cargarla. #8176 (tavplubix)
- Se corrigió un fallo en la función de tabla
fileal insertar en un archivo que no existía. Ahora, en ese caso, el archivo se crea y luego se procesa la inserción. #8177 (Olga Khvostikova) - Se corrige un interbloqueo poco frecuente que puede producirse cuando
trace_logestá habilitado. #7838 (filimonov) - Se añade compatibilidad con tipos distintos de
Dateen el Diccionario externoRangeHashedcreado a partir de una consulta DDL. Corrige 7899. #8275 (alesapin) - Corrige un error cuando se llama a
now64()con el resultado de otra función. #8270 (Vasily Nemkov) - Se corrigió un error al detectar la IP del cliente en conexiones a través del protocolo de red de MySQL. #7743 (Dmitry Muzyka)
- Se corrige el manejo de arrays vacíos en la función
arraySplit. Esto corrige #7708. #7747 (hcz) - Se corrigió el problema por el que podía eliminarse el
pid-filede otroclickhouse-serverque estuviera en ejecución. #8487 (Weiqing Xu) - Se corrige la recarga del diccionario si tiene
invalidate_query, que detenía las actualizaciones y provocaba alguna excepción en intentos de actualización previos. #8029 (alesapin) - Se corrigió un error en la función
arrayReduceque podía provocar “double free” y otro error en el combinador de funciones de agregaciónResampleque podía provocar una fuga de memoria. Se añadió la función de agregaciónaggThrow. Esta función puede utilizarse para pruebas. #8446 (alexey-milovidov)
Mejora
- Se mejoró el logging al usar el motor de tabla
S3. #8251 (Grigory Pervakov) - Se muestra un mensaje de ayuda cuando no se pasan argumentos al invocar
clickhouse-local. Esto corrige #5335. #8230 (Andrey Nagorny) - Se añade la configuración
mutations_sync, que permite esperar de forma síncrona las consultasALTER UPDATE/DELETE. #8237 (alesapin) - Permite establecer
user_files_pathcomo relativa enconfig.xml(de forma similar aformat_schema_path). #7632 (hcz) - Se agregó una excepción para los tipos no válidos en las funciones de conversión con el sufijo
-OrZero. #7880 (Andrey Konyaev) - Simplificar el formato de la cabecera al enviar datos a un segmento en una consulta distribuida. #8044 (Vitaly Baranov)
- Refactorización del motor de tabla
Live View. #8519 (vzakaznikov) - Se añaden comprobaciones adicionales para los diccionarios externos creados a partir de consultas DDL. #8127 (alesapin)
- Se corrige el error
Column ... already existsal usarFINALySAMPLEjuntos, por ejemplo,select count() from table final sample 1/2. Corrige #5186. #7907 (Nikolai Kochetov) - Ahora, el primer argumento de la función
joinGetpuede ser un identificador de tabla. #7707 (Amos Bird) - Se permite usar
MaterializedViewcon subconsultas sobre tablas deKafka. #8197 (filimonov) - Ahora los movimientos en segundo plano entre discos se ejecutan en un pool de hilos separado. #7670 (Vladimir Chebotarev)
SYSTEM RELOAD DICTIONARYahora se ejecuta de manera síncrona. #8240 (Vitaly Baranov)- Las trazas de pila ahora muestran direcciones físicas (desplazamientos dentro del archivo objeto) en lugar de direcciones de memoria virtual (donde se cargó el archivo objeto). Esto permite usar
addr2linecuando el binario es independiente de la posición y ASLR está activo. Esto corrige #8360. #8387 (alexey-milovidov) - Se añade compatibilidad con la nueva sintaxis para filtros de seguridad a nivel de fila:
<table name='table_name'>...</table>. Corrige #5779. #8381 (Ivan) - La función
cityHashahora puede trabajar con los tiposDecimalyUUID. Corrige #5184. #7693 (Mikhail Korotov) - Se eliminó la granularidad fija del índice (era 1024) de los registros del sistema porque quedó obsoleta tras la implementación de la granularidad adaptativa. #7698 (alexey-milovidov)
- Se habilitó el servidor de compatibilidad con MySQL al compilar ClickHouse sin SSL. #7852 (Yuriy Baranov)
- Ahora el servidor calcula las sumas de verificación de los lotes distribuidos, lo que ofrece mensajes de error más detallados en caso de que haya datos corruptos en un lote. #7914 (Azat Khuzhin)
- Se admite
DROP DATABASE,DETACH TABLE,DROP TABLEyATTACH TABLEpara el motor de base de datosMySQL. #8202 (Winter Zhang) - Se añadió autenticación a la función de tabla S3 y al motor de tabla. #7623 (Vladimir Chebotarev)
- Se añadió una comprobación de partes adicionales de
MergeTreeen distintos discos para evitar que se pierdan partes de datos en discos no definidos. #8118 (Vladimir Chebotarev) - Se habilita la compatibilidad con SSL para el cliente y el servidor en Mac. #8297 (Ivan)
- Ahora ClickHouse puede funcionar como servidor federado de MySQL (véase https://dev.mysql.com/doc/refman/5.7/en/federated-create-server.html). #7717 (Maxim Fedotov)
clickhouse-clientahora solo habilitabracketed-pastecuando multiquery está activado y multiline desactivado. Esto corrige #7757. #7761 (Amos Bird)- Admite
Array(Decimal)en la funciónif. #7721 (Artem Zuikov) - Compatibilidad con Decimals en las funciones
arrayDifference,arrayCumSumyarrayCumSumNegative. #7724 (Artem Zuikov) - Se añadió la columna
lifetimea la tablasystem.dictionaries. #6820 #7727 (kekekekule) - Mejora en la comprobación de las partes existentes en distintos discos para los motores de tabla
*MergeTree. Soluciona #7660. #8440 (Vladimir Chebotarev) - Integración con
AWS SDKpara las interacciones conS3, lo que permite usar todas las funciones de S3 desde el primer momento. #8011 (Pavel Kovalenko) - Se añadió compatibilidad para subconsultas en las tablas
Live View. #7792 (vzakaznikov) - Se eliminó la comprobación que exigía usar una columna
DateoDateTimeen las expresionesTTL. #7920 (Vladimir Chebotarev) - Se añadió información sobre el disco a la tabla
system.detached_parts. #7833 (Vladimir Chebotarev) - Ahora se puede cambiar la configuración
max_(table|partition)_size_to_dropsin reiniciar. #7779 (Grigory Pervakov) - Ligera mejora en la usabilidad de los mensajes de error. Se pide al usuario que no elimine las líneas debajo de
Stack trace:. #7897 (alexey-milovidov) - Mejora en la lectura de mensajes del motor
Kafkaen varios formatos tras #7935. #8035 (Ivan) - Mejor compatibilidad con clientes MySQL que no admiten el plugin de autenticación
sha2_password. #8036 (Yuriy Baranov) - Admite más tipos de columnas en el servidor de compatibilidad con MySQL. #7975 (Yuriy Baranov)
- Se implementó la optimización de
ORDER BYpara los motores de almacenamientoMerge,BufferyMaterilized Viewcon tablasMergeTreesubyacentes. #8130 (Anton Popov) - Ahora usamos siempre la implementación POSIX de
getrandompara lograr una mejor compatibilidad con kernels antiguos (< 3.17). #7940 (Amos Bird) - Mejor comprobación de la validez del destino en una regla TTL de movimiento. #8410 (Vladimir Chebotarev)
- Mejores comprobaciones de lotes de inserción dañados para el motor de tablas
Distributed. #7933 (Azat Khuzhin) - Se añadió a la tabla
system.mutationsuna columna con un array de nombres de partes que las mutaciones deberán procesar en el futuro. #8179 (alesapin) - Optimización de la ordenación por mezcla en paralelo para procesadores. #8552 (Nikolai Kochetov)
- La configuración
mark_cache_min_lifetimeahora está obsoleta y no tiene ningún efecto. En versiones anteriores, la caché de marcas podía crecer en memoria por encima demark_cache_sizepara alojar datos durantemark_cache_min_lifetimesegundos. Esto provocaba confusión y un uso de memoria superior al esperado, algo especialmente problemático en sistemas con memoria limitada. Si observa una degradación del rendimiento después de instalar esta versión, debe aumentarmark_cache_size. #8484 (alexey-milovidov) - Preparación para usar
tiden todo el código. Esto es necesario para #7477. #8276 (alexey-milovidov)
Mejora del rendimiento
- Optimizaciones de rendimiento en el pipeline de procesadores. #7988 (Nikolai Kochetov)
- Actualizaciones sin bloqueo de claves caducadas en diccionarios de caché (con permiso para leer las antiguas). #8303 (Nikita Mikhaylov)
- Compilar ClickHouse sin
-fno-omit-frame-pointerde forma global para ahorrar un registro más. #8097 (Amos Bird) - Accelerar la función
greatCircleDistancey añadir pruebas de rendimiento. #7307 (Olga Khvostikova) - Mejora del rendimiento de la función
roundDown. #8465 (alexey-milovidov) - Se mejoró el rendimiento de
max,min,argMinyargMaxpara el tipo de datosDateTime64. #8199 (Vasily Nemkov) - Mejora del rendimiento de la ordenación sin límite, con límites grandes y de la ordenación externa. #8545 (alexey-milovidov)
- Se mejoró hasta 6 veces el rendimiento del formateo de números de coma flotante. #8542 (alexey-milovidov)
- Mejora del rendimiento de la función
modulo. #7750 (Amos Bird) - Se optimizaron
ORDER BYy la fusión para claves de una sola columna. #8335 (alexey-milovidov) - Mejora en la implementación de los combinadores
arrayReduce,-Arrayy-State. #7710 (Amos Bird) - Ahora
PREWHEREdebería estar optimizado para ser, como mínimo, tan eficiente comoWHERE. #7769 (Amos Bird) - Se mejora la forma de manejar los números negativos en
roundyroundBankers. #8229 (hcz) - Se mejoró el rendimiento de descodificación de los códecs
DoubleDeltayGorillaen aproximadamente un 30-40 %. Esto corrige #7082. #8019 (Vasily Nemkov) - Mejora del rendimiento de las funciones relacionadas con
base64. #8444 (alexey-milovidov) - Se añadió la función
geoDistance. Es similar agreatCircleDistance, pero utiliza una aproximación del modelo elipsoidal WGS-84. El rendimiento de ambas funciones es prácticamente el mismo. #8086 (alexey-milovidov) - Funciones de agregación
minymaxmás rápidas para el tipo de datoDecimal. #8144 (Artem Zuikov) - Vectorización del procesamiento de
arrayReduce. #7608 (Amos Bird) - Las cadenas de
ifahora se optimizan en forma demultiIf. #8355 (kamalov-ruslan) - Soluciona la regresión de rendimiento del motor de tabla
Kafkaintroducida en la versión 19.15. Esto corrige #7261. #7935 (filimonov) - Se eliminó la generación de código “pie” que
gccde los paquetes de Debian incluye ocasionalmente de forma predeterminada. #8483 (alexey-milovidov) - Formatos de datos con análisis sintáctico en paralelo #6553 (Nikita Mikhaylov)
- Se habilita de forma predeterminada el analizador sintáctico optimizado de
Valuescon expresiones (input_format_values_deduce_templates_of_expressions=1). #8231 (tavplubix)
mejora de compilación/pruebas/empaquetado
- Correcciones en la compilación para
ARMy en modo mínimo. #8304 (proller) - Se añadió el volcado del archivo de cobertura para
clickhouse-servercuando no se llama a std::atexit. También se mejoró ligeramente el logging en las pruebas sin estado con cobertura. #8267 (alesapin) - Actualizar la biblioteca LLVM en contrib. Evitar el uso de LLVM desde los paquetes del SO. #8258 (alexey-milovidov)
- Hacer que la compilación incluida de
curlsea completamente silenciosa. #8232 #8203 (Pavel Kovalenko) - Se han corregido algunas advertencias de
MemorySanitizer. #8235 (Alexander Kuzmenkov) - Usa las macros
add_warningyno_warningenCMakeLists.txt. #8604 (Ivan) - Se añade compatibilidad con el almacenamiento de objetos compatible con S3 de Minio (https://min.io/) para mejorar las pruebas de integración. #7863 #7875 (Pavel Kovalenko)
- Se importaron los archivos de cabecera de
libca contrib. Esto permite que las compilaciones sean más consistentes en distintos sistemas (solo parax86_64-linux-gnu). #5773 (alexey-milovidov) - Se eliminó
-fPICde algunas bibliotecas. #8464 (alexey-milovidov) - Limpieza de
CMakeLists.txtde curl. Véase https://github.com/ClickHouse/ClickHouse/pull/8011#issuecomment-569478910 #8459 (alexey-milovidov) - Advertencias silenciosas en la biblioteca
CapNProto. #8220 (alexey-milovidov) - Agregar pruebas de rendimiento para tablas hash optimizadas para cadenas cortas. #7679 (Amos Bird)
- Ahora ClickHouse podrá compilarse en
AArch64incluso siMADV_FREEno está disponible. Esto corrige #8027. #8243 (Amos Bird) - Actualización de
zlib-ngpara corregir problemas con el sanitizador de memoria. #7182 #8206 (Alexander Kuzmenkov) - Habilitar la biblioteca interna de MySQL en sistemas que no son Linux, porque el uso de paquetes del sistema operativo es muy frágil y normalmente no funciona en absoluto. Esto corrige #5765. #8426 (alexey-milovidov)
- Se corrigió la compilación en algunos sistemas tras habilitar
libc++. Esto sustituye a #8374. #8380 (alexey-milovidov) - Mejorar la seguridad de tipos de los métodos de
Fieldpara detectar más errores. #7386 #8209 (Alexander Kuzmenkov) - Se añadieron los archivos que faltaban al submódulo
libc-headers. #8507 (alexey-milovidov) - Se corrige el entrecomillado incorrecto de
JSONen la salida de la prueba de rendimiento. #8497 (Nikolai Kochetov) - Ahora se muestra la traza de pila para
std::exceptionyPoco::Exception. En versiones anteriores, solo estaba disponible paraDB::Exception. Esto mejora la capacidad de diagnóstico. #8501 (alexey-milovidov) - Adaptación de
clock_gettimeyclock_nanosleeppara versiones más recientes de glibc. #8054 (Amos Bird) - Habilitar
part_logen la configuración de ejemplo para desarrolladores. #8609 (alexey-milovidov) - Se corrige el carácter asíncrono de la recarga en
01036_no_superfluous_dict_reload_on_create_database*. #8111 (Azat Khuzhin) - Se corrigieron las pruebas de rendimiento del códec. #8615 (Vasily Nemkov)
- Añadir scripts de instalación para el build
.tgzy su documentación. #8612 #8591 (alesapin) - Se eliminó la prueba antigua de
ZSTD(se creó en 2016 para reproducir el error que tenía la versión de ZSTD anterior a la 1.0). Esto corrige #8618. #8619 (alexey-milovidov) - Se corrigió la compilación en Mac OS Catalina. #8600 (meo)
- Se aumentó el número de filas en las pruebas de rendimiento del codec para que los resultados fueran más evidentes. #8574 (Vasily Nemkov)
- En las compilaciones de depuración, las excepciones
LOGICAL_ERRORse tratan como fallos de aserción para que sean más fáciles de detectar. #8475 (Alexander Kuzmenkov) - Hacer más determinista la prueba de rendimiento relacionada con los formatos. #8477 (alexey-milovidov)
- Actualizar
lz4para solucionar un fallo de MemorySanitizer. #8181 (Alexander Kuzmenkov) - Se suprime un falso positivo conocido de MemorySanitizer en la gestión de excepciones. #8182 (Alexander Kuzmenkov)
- Actualización de
gccyg++a la versión 9 enbuild/docker/build.sh#7766 (TLightSky) - Agregar una prueba de rendimiento para comprobar que
PREWHERErinde peor queWHERE. #7768 (Amos Bird) - Avances en la corrección de una prueba inestable. #8621 (alexey-milovidov)
- Evitar el informe de MemorySanitizer causado por datos de
libunwind. #8539 (alexey-milovidov) - Se actualizó
libc++a la última versión. #8324 (alexey-milovidov) - Compilar la biblioteca ICU a partir del código fuente. Esto corrige #6460. #8219 (alexey-milovidov)
- Se sustituyó
libresslporopenssl. ClickHouse debería admitir TLS 1.3 y SNI después de este cambio. Esto corrige #8171. #8218 (alexey-milovidov) - Se corrigió un aviso de UBSan al usar
chacha20_poly1305de SSL (ocurre al conectarse a https://yandex.ru/). #8214 (alexey-milovidov) - Se corrigió el modo del archivo de contraseña predeterminado para las distribuciones Linux
.deb. #8075 (proller) - Se mejoró la expresión para obtener el PID de
clickhouse-serverenclickhouse-test. #8063 (Alexander Kazakov) - Se actualizó contrib/googletest a la versión v1.10.0. #8587 (Alexander Burmak)
- Se corrigió un informe de ThreadSaninitizer en la biblioteca
base64. También se actualizó esta biblioteca a la versión más reciente, pero eso no importa. Esto corrige #8397. #8403 (alexey-milovidov) - Se corrige
00600_replace_running_queryen processors. #8272 (Nikolai Kochetov) - Se eliminó la compatibilidad con
tcmallocpara simplificarCMakeLists.txt. #8310 (alexey-milovidov) - Las compilaciones de la versión con gcc ahora usan
libc++en lugar delibstdc++. Hasta hace poco,libc++solo se usaba con clang. Esto mejorará la uniformidad de las configuraciones de compilación y la portabilidad. #8311 (alexey-milovidov) - Se habilitó la biblioteca ICU para la compilación con MemorySanitizer. #8222 (alexey-milovidov)
- Se suprimieron las advertencias de la biblioteca
CapNProto. #8224 (alexey-milovidov) - Se eliminaron los casos especiales en el código para
tcmalloc, ya que dejó de ser compatible. #8225 (alexey-milovidov) - En la tarea de cobertura de CI, cierre el servidor de forma ordenada para permitir que guarde el informe de cobertura. Esto corrige los informes de cobertura incompletos que hemos estado viendo últimamente. #8142 (alesapin)
- Pruebas de rendimiento de todos los códecs con valores
Float64yUInt64. #8349 (Vasily Nemkov) termcapestá claramente en desuso y provocaba varios problemas (p. ej., falta la capacidad “up” y se muestra^Jen lugar de varias líneas). Se recomienda usarterminfooncursesintegrado. #7737 (Amos Bird)- Se corrigió la prueba de integración
test_storage_s3. #7734 (Nikolai Kochetov) - Se añade compatibilidad con
StorageFile(<format>, null)para insertar un bloque en un archivo del formato especificado sin escribirlo realmente en disco. Esto es necesario para las pruebas de rendimiento. #8455 (Amos Bird) - Se añadió a las pruebas funcionales el argumento
--print-time, que muestra el tiempo de ejecución de cada prueba. #8001 (Nikolai Kochetov) - Se añadieron aserciones a
KeyConditional evaluar la RPN. Esto corregirá la advertencia de gcc-9. #8279 (alexey-milovidov) - Mostrar las opciones de cmake en las compilaciones de CI. #8273 (Alexander Kuzmenkov)
- No generar información de depuración para algunas bibliotecas grandes. #8271 (alexey-milovidov)
- Hacer que
log_to_console.xmlregistre siempre en stderr, independientemente de si es interactivo o no. #8395 (Alexander Kuzmenkov) - Se eliminaron algunas funcionalidades no utilizadas de la herramienta
clickhouse-performance-test. #8555 (alexey-milovidov) - Ahora también buscaremos
lld-Xcon la versión correspondiente aclang-X. #8092 (alesapin) - Mejora en la compilación de Parquet. #8421 (maxulan)
- Más advertencias de GCC #8221 (kreuzerkrieg)
- El paquete para Arch Linux ahora permite ejecutar el servidor ClickHouse, y no solo el cliente. #8534 (Vladimir Chebotarev)
- Corrección de la prueba con processors. Pequeñas mejoras de rendimiento. #7672 (Nikolai Kochetov)
- Se actualizó contrib/protobuf. #8256 (Matwey V. Kornilov)
- Como preparación para el cambio a c++20 para celebrar el Año Nuevo. “Que la fuerza de C++ acompañe a ClickHouse.” #8447 (Amos Bird)
funcionalidad experimental
- Se añadió el ajuste experimental
min_bytes_to_use_mmap_io. Permite leer archivos grandes sin copiar datos del kernel al espacio de usuario. Este ajuste está deshabilitado de forma predeterminada. El umbral recomendado es de unos 64 MB, porquemmap/munmapes lento. #8520 (alexey-milovidov) - Se rediseñaron las cuotas como parte del sistema de control de acceso. Se añadieron la nueva tabla
system.quotas, las nuevas funcionescurrentQuota,currentQuotaKeyy la nueva sintaxis SQLCREATE QUOTA,ALTER QUOTA,DROP QUOTA,SHOW QUOTA. #7257 (Vitaly Baranov) - Se permitió omitir ajustes desconocidos con advertencias en lugar de generar excepciones. #7653 (Vitaly Baranov)
- Se rediseñaron las políticas de fila como parte del sistema de control de acceso. Se añadieron la nueva tabla
system.row_policies, la nueva funcióncurrentRowPolicies()y la nueva sintaxis SQLCREATE POLICY,ALTER POLICY,DROP POLICY,SHOW CREATE POLICY,SHOW POLICIES. #7808 (Vitaly Baranov)
Corrección de seguridad
- Se corrigió la posibilidad de leer la estructura de directorios de las tablas con el motor de tabla
File. Esto corrige #8536. #8537 (alexey-milovidov)