Saltar al contenido principal

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 short al ejecutar funciones toType(...) (toDate, toUInt32, etc.) con un argumento de tipo Nullable(String). Ahora estas funciones devuelven NULL en 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 Distinct al usar two-level aggregation. Corrige #17682. #18365 (Anton Popov).
  • Se corrige el error por el que la consulta MODIFY COLUMN ... REMOVE TTL en realidad no elimina el TTL de la columna. #18130 (alesapin).

mejora de compilación/pruebas/empaquetado

  • Se actualizó la información de zonas horarias a 2020e. #18531 (alesapin).

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-bridge no 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_string en 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_trace apareciera 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_names de 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áusula SETTINGS al crear una tabla que utiliza el motor File, y estas configuraciones se usan en todos los INSERT y SELECT. Los cambios en la configuración del formato de archivo realizados en la sesión actual del usuario, o en la cláusula SETTINGS de 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 *.xz en la función file(). 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 tcpPort devuelve 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_empty para 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-client mediante 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 implemented al ejecutar la consulta RENAME en la base de datos Atomic cuando ClickHouse se ejecutaba en Windows Subsystem for Linux. Corrige #17661. #17664 (tavplubix).
  • No restaurar las partes desde WAL si in_memory_parts_enable_wal está deshabilitado. #17802 (detailyang).
  • se corrige la inicialización incorrecta de max_compress_block_size en MergeTreeWriterSettings con min_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 cuando pool_size > 1. Se ha corregido. #17640 (tavplubix).
  • La excepción fmt::v7::format_error puede registrarse en segundo plano para las tablas MergeTree. Esto corrige #17613. #17615 (alexey-milovidov).
  • Cuando clickhouse-client se 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 BY con la configuración optimize_redundant_functions_in_order_by habilitada. #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 JOIN con tipos LowCardinality. 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 client registrado en consultas de Distributed con LIMIT. #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 CLUSTER podían quedarse bloqueadas indefinidamente en tablas ReplicatedMergeTree no líderes. #17089 (alesapin).
  • Se corrigió un cierre inesperado en la consulta CREATE TABLE ... AS some_table cuando some_table se había creado con AS 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 libunwind de LLVM en el caso en que el registro CFA es RAX. Este es el error de libunwind de 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 ... NewType cuando SELECT tiene una expresión WHERE sobre la columna que se está modificando y la operación ALTER aú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 by con la opción optimize_aggregators_of_group_by_keys habilitada y joins. Corrige #12604. #16951 (Anton Popov).
  • Corrige el posible error Illegal type of argument en consultas con ORDER 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 any sin 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 IN en varias columnas y tuplas con la configuración transform_null_in activada. 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_consistency en la consulta count trivial 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_names está 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_url en 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 host y port de SOURCE(CLICKHOUSE(...)) en la instancia actual y el valor predeterminado de user en '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_milliseconds is 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 CODEC está colocada incorrectamente en la consulta CREATE 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, como http://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 en config.xml y 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 cuando clickhouse-server está 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 ReplicatedMergeTree utiliza un thread pool independiente para los fetches replicados. El tamaño del pool está limitado por la configuración background_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 VIEW a EXPLAIN. Se limitó la optimización push down para VIEW. Se añadieron réplicas locales de Distributed al plan de consulta. #14936 (Nikolai Kochetov).
  • Se corrigió optimize_read_in_order/optimize_aggregation_in_order con max_threads > 0 y una expression en ORDER BY. #16637 (Azat Khuzhin).
  • Se corrigió el rendimiento de lectura desde tablas Merge sobre una gran cantidad de tablas MergeTree. 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) % 100 y que la consulta tiene una condición sobre intHash64(x) % 100 literalmente, no sobre x. #16253 (Amos Bird).

Funcionalidad experimental

  • Se agregó el motor de tabla EmbeddedRocksDB (puede usarse para diccionarios). #15073 (sundyli).

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 neighbor para el argumento LowCardinality. 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 SYNC podí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 addMonth con 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 ALTER y DROP ejecutadas 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ón Attempt to read after EOF. Corrige #18340. #19101 (alesapin).
  • Se corrigió el error There is no checkpoint al insertar datos a través de la interfaz HTTP con el formato Template o CustomSeparated. Corrige #19021. #19072 (tavplubix).
  • Restringir las consultas MODIFY TTL para las tablas MergeTree creadas 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 groupUniqArray devuelva el tipo correcto para un argumento de tipo Enum. Esto cierra #17875. #19019 (alexey-milovidov).
  • Corrige el posible error Expected single dictionary argument for function al usar la función ignore con el argumento LowCardinality. Corrige #14275. #19016 (Nikolai Kochetov).
  • Se corrige la inserción de una columna LowCardinality en una tabla con el motor TinyLog. Corrige #18629. #19010 (Nikolai Kochetov).
  • Deshabilite optimize_move_functions_out_of_any porque 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 INSERT distribuidos asíncronos pueden ser rechazados por el servidor si la configuración network_compression_method se establece globalmente en un valor distinto del predeterminado. Esto corrige #18741. #18776 (alexey-milovidov).
  • Se corrigió el error Attempt to read after eof al intentar hacer CAST de NULL de Nullable(String) a Nullable(Decimal(P, S)). Ahora la función CAST devuelve NULL cuando 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 stuck al usar ORDER BY después de una subconsulta con un join RIGHT o FULL. #18550 (Nikolai Kochetov).
  • Se corrige un error que podía hacer que las consultas ALTER quedaran 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 short al ejecutar las funciones toType(...) (toDate, toUInt32, etc.) con un argumento de tipo Nullable(String). Ahora, estas funciones devuelven NULL en 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 Distinct al usar agregación en dos niveles. Corrige #17682. #18365 (Anton Popov).
  • SELECT count() FROM table ahora puede ejecutarse si se puede seleccionar cualquier columna de la table. Este PR corrige #10639. #18233 (Vitaly Baranov).
  • SELECT JOIN ahora requiere el privilegio SELECT sobre 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 threads en los logs). Se introdujo en #16423. Corrige #18137. #18216 (Nikolai Kochetov).
  • Se corrige el error por el que la consulta MODIFY COLUMN ... REMOVE TTL en 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 MOVE o REPLACE PARTITION o, en casos excepcionales, después de DETACH o DROP PARTITION. Se ha corregido. #15537 (tavplubix).

Mejora de compilación/pruebas/empaquetado

  • Actualización de la información sobre zonas horarias a la versión 2020e. #18531 (alesapin).

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-bridge no era accesible para el servidor en máquinas con pila 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_string al 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_wal está 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_query al usar un predicado de partición. #17644 (Azat Khuzhin).
  • Se corrigió el problema de que la tabla system.stack_trace apareciera 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_error podía registrarse en segundo plano para las tablas MergeTree. Esto corrige #17613. #17615 (alexey-milovidov).
  • Se corrigió el comportamiento de clickhouse-client al 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 ALTER cuando 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 BY cuando está habilitada la configuración optimize_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 JOIN con tipos LowCardinality. 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 ColumnConst que provocaba un bloqueo. Esto corrige #17088 . #17135 (Amos Bird).
  • Se corrigió un error por el que las consultas ON CLUSTER podían quedar bloqueadas indefinidamente en ReplicatedMergeTreeTables no 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_url en caso de errores. #16985 (filimonov).
  • Se corrigió un posible cierre inesperado del servidor después de ALTER TABLE ... MODIFY COLUMN ... NewType cuando SELECT tiene una expresión WHERE sobre la columna que se está modificando y la alteración todavía no ha terminado. #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. Soluciona #16107. #16956 (Anton Popov).
  • Se corrigió la optimización de group by con la configuración optimize_aggregators_of_group_by_keys habilitada 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 argument en consultas con ORDER 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 any sin 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 INSERT a 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 if en una función de agregación. Esto corrige #16574, #16231 y #16610 (Winter Zhang).
  • Se corrigió el comportamiento inconsistente provocado por select_sequential_consistency en 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 profile en la sección de configuración distributed_ddl, este perfil podía sobrescribir la configuración del perfil default al 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 ANALYZE y AST, y la configuración enable_debug_queries pasa a estar obsoleta, ya que ahora forma parte de la consulta EXPLAIN, que ofrece toda esa funcionalidad. #16536 (Ivan).
  • Las funciones de agregación boundingRatio, rankCorr, retention, timeSeriesGroupSum, timeSeriesGroupRateSum, windowFunnel pasaron 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 rankCorr ahora 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 traceparent de 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 tabla system.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 especificar LIMIT. #15855 (hexiaoting).
  • La función errorCodeToName: devuelve el nombre de la variable del error (útil para analizar query&#95;log y similares). La tabla system.errors: muestra cuántas veces se han producido errores (respeta system_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 a query_log/query_thread_log (es decir, algo como slow_query_log en 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 toUUIDOrNull y toUUIDOrZero. #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_id a 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 tid y logTrace. 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_merges para 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&#95;path de system.distribution_queue. #16727 (Azat Khuzhin).
  • Se corrige el operador IN en varias columnas y tuplas con la configuración transform_null_in activada. Corrige #15310. #16722 (Anton Popov).
  • La configuración max_parallel_replicas funcionaba 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 DEFAULT implicaba 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. MaterializeMySQL es una característica experimental. #16504 (TCeason).
  • Un argumento especialmente diseñado de la función round con Decimal provocaba 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 ALTER si 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 dictGet en sharding&#95;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-local al intentar ejecutar el comando OPTIMIZE. 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.parts deberí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 a INTERVAL 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ón read_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 LowCardinality en el formato Avro. #16521 (Mike).
  • 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. #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 minMap y maxMap. 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_microseconds se 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 datos Atomic no 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ón WITH por 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 EOF y Broken pipe se registraban en el servidor. En la nueva versión, el mensaje informativo es Client 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 KEY sin ORDER BY para 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-local creará 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/SYNC en DROP DATABASE. #16127 (Azat Khuzhin).
  • Se añade allow_nondeterministic_optimize_skip_unused_shards (para permitir funciones no deterministas como rand() o dictGet() en la clave de segmentación). #16105 (Azat Khuzhin).
  • Corregir memory_profiler_step/max_untracked_memory para 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). Corregir query_id para 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 CLUSTER independientemente del ajuste <internal_replication> en la configuración del clúster. #16075 (alesapin).
  • Se corrige un problema poco frecuente por el que clickhouse-client podí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 cache para diccionarios de Redis con 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_tries configurado 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 -OrNull y -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 count pasa 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 un count incorrecto cuando max_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 croaring en 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. MaterializeMySQL es 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 once en 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_options a db_generator para 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-bridge no era accesible para el servidor en máquinas con pila dual IPv4/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_string al 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 WAL si in_memory_parts_enable_wal está 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_trace vacía cuando el servidor se ejecutaba en modo daemon. #17630 (Amos Bird).
  • Se corrigió el comportamiento cuando clickhouse-client se 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 ALTER cuando 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 BY cuando está habilitada la configuración optimize_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 JOIN con tipos LowCardinality. 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 CLUSTER podían quedar bloqueadas indefinidamente en ReplicatedMergeTreeTables que 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_url en caso de error. #16985 (filimonov).
  • Se corrigió un posible cierre inesperado del servidor después de ALTER TABLE ... MODIFY COLUMN ... NewType cuando SELECT tiene una expresión WHERE sobre la columna que se está modificando y la operación ALTER aú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_keys habilitada 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 argument en consultas con ORDER 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 any sin 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 INSERT a 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 if en 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 IN en varias columnas y tuplas con la configuración transform_null_in habilitada. 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_worker habilitado 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.parts deberí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_version como 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 formato Regexp) a Raw (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_queue y max_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 ejecuta SYSTEM STOP TTL MERGES hasta completar la actualización de todas las réplicas. Si aparece una entrada incompatible en la cola de replicación, primero ejecute SYSTEM STOP TTL MERGES y después ALTER 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_name para 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 sentencias WITH del primer select a otras consultas select del mismo nivel y hace visibles para las subconsultas los alias de las sentencias WITH. #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_remove y ALTER 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_numbers para 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 NULL para el formato de salida TSV. Se controla mediante la configuración output_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 \N es la única representación de NULL admitida para el formato de entrada TSV. #14586 (Kruglov Pavel).
  • Se admite el tipo de dato Decimal para MaterializeMySQL. MaterializeMySQL es 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 insert pueden 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_leaf para 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 almacenamientos ReplicatedMergeTree*, 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 tabla system.replicated_merge_tree_settings. #13573 (Amos Bird).
  • Se agregó la función mapPopulateSeries. #13166 (Ildus Kurbangaliev).
  • Compatibilidad con los tipos de MySQL: decimal (como Decimal de ClickHouse) y datetime con precisión de subsegundos (como DateTime64). #11512 (Vasily Nemkov).
  • Se añade el campo event_time_microseconds a las tablas system.text_log, system.trace_log, system.query_log y system.query_thread_log. #14760 (Bharat Nallan).
  • Agregar event_time_microseconds a las tablas system.asynchronous_metric_log y system.metric_log. #14514 (Bharat Nallan).
  • Añade el campo query_start_time_microseconds a las tablas system.query_log y system.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 by con los modificadores totals/rollup/cube y de las funciones min/max sobre las claves de group 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 BY en ReplicatedVersionedCollapsingMergeTree. Esto corrige #15980. #16011 (alesapin).
  • MaterializeMySQL (función experimental): Se corrigió el analizador de nombres de cotejamiento y de conjuntos de caracteres, y ahora admite length = 0 para 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 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 readonly ahora se considera como el uso de un perfil llamado readonly, no de una configuración llamada profile con la restricción readonly. 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 EXISTS con el error Table ... does not exist cuando 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 (como DROP DATABASE y RENAME TABLE) - Se corrigió el fallo de DROP/DETACH DATABASE con Table ... does not exist al ejecutar de forma concurrente DROP/DETACH TABLE. #15934 (tavplubix).
  • Corrige el resultado vacío incorrecto de una consulta sobre una tabla Distributed si la consulta tiene WHERE, PREWHERE y GLOBAL 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 mismatch en las consultas SELECT ... ORDER BY DESC ejecutadas después de la consulta ALTER MODIFY COLUMN. Corrige #15800. #15852 (alesapin).
  • MaterializeMySQL (función experimental): se corrige la falta de precisión de select 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 en MATERIALIZED VIEW si la consulta de MV contiene ARRAY 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 tabla Buffer, 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 ReadFromStorage del plan de consulta. En casos poco frecuentes, esto puede provocar fallos. Posiblemente esté relacionado con #15610. #15645 (Nikolai Kochetov).
  • Restar la métrica ReadonlyReplica al desadjuntar tablas de solo lectura. #15592 (sundyli).
  • Se corrigió el error Element ... is not a constant expression al usar el resultado de la función JSON* en VALUES, LIMIT o en la parte derecha del operador IN. #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 MOVE o REPLACE PARTITION o, en casos excepcionales, después de DETACH o DROP PARTITION. Se ha corregido. #15537 (tavplubix).
  • Se corrige un error por el que el operador ILIKE dejaba de distinguir entre mayúsculas y minúsculas si se había ejecutado LIKE con el mismo patrón. #15536 (alesapin).
  • Se corrigen los errores Missing columns al 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 CLUSTER se quedaran colgadas. Introducido en #13450. #15477 (alesapin).
  • Mostrar un error adecuado cuando el segundo argumento de la función de agregación boundingRatio tenga 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 tabla MySQL en 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 joinGet con tipos LowCardinality. Esto corrige #15214. #15220 (Amos Bird).
  • Se corrige un error en el motor de tabla Buffer que impedía insertar datos con una estructura nueva en Buffer después de una consulta ALTER. 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 methods en join_algorithm='auto'. Conserva LowCardinality como tipo de la clave de unión de la tabla izquierda en join_algorithm='partial_merge'. #15088 (Artem Zuikov).
  • Se actualizó jemalloc para corregir percpu_arena con 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 bar con 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 argument al 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_mutation y number_of_free_entries_in_pool_to_lower_max_size_of_merge pueden ser iguales a background_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).
  • 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 extractAllGroups pueden 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 provocaba Attempt to read after eof y Packet payload is not fully read en el motor de base de datos MaterializeMySQL. #14852 (Winter Zhang).
  • Se corrige un error poco frecuente en consultas SELECT cuando la columna consultada tiene una expresión DEFAULT que depende de otra columna que también tiene DEFAULT, no está presente en la consulta SELECT y 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 -> Int de 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 Replace debe 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 UPDATE con una columna Nullable en la expresión de asignación y un valor constante (como UPDATE 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 has con LowCardinality de Nullable. #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 DDL ON CLUSTER. #14211 (Winter Zhang).
  • MaterializeMySQL (característica experimental): Se corrigió el error Packet payload is not fully read en el motor de base de datos MaterializeMySQL. #14696 (BohuTANG).

Mejora

  • Habilitar de forma predeterminada el motor de base de datos Atomic para 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 CLUSTER independientemente del ajuste <internal_replication> en la configuración del clúster. #16075 (alesapin).
  • Ahora joinGet admite búsquedas por múltiples claves. Continuación de #12418. #13015 (Amos Bird).
  • Esperar a que DROP/DETACH TABLE realmente se complete si se especifica NO DELAY o SYNC para la base de datos Atomic. #15448 (tavplubix).
  • Ahora es posible cambiar el tipo de la columna de versión de VersionedCollapsingMergeTree mediante la consulta ALTER. #15442 (alesapin).
  • Expandir las macros {database}, {table} y {uuid} en zookeeper_path al crear una tabla replicada. No permitir RENAME TABLE si esto puede romper zookeeper_path tras reiniciar el servidor. Corrige #6917. #15348 (tavplubix).
  • La función now admite 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 optimize a la consulta EXPLAIN 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 = 1 o force_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_offset para indicar explícitamente cuál es la primera réplica. Se usa junto con la estrategia de balanceo de carga FIRST_OR_RANDOM, lo que permite controlar la carga de trabajo de las réplicas. #14867 (Amos Bird).
  • Mostrar las subconsultas de SET y JOIN en el resultado de EXPLAIN. #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_time y query_start_time_microseconds usando la misma timespec. #14831 (Bharat Nallan).
  • Se añadió compatibilidad para desactivar la persistencia de StorageJoin y StorageSet; esta funcionalidad se controla mediante la opción disable_set_and_join_persistency. Además, este PR resolvió el problema #6318. #14776 (vxider).
  • Ahora se puede usar COLUMNS para abarcar una lista de columnas y aplicar después transformadores de columnas. #14775 (Amos Bird).
  • Se añade merge_algorithm a la tabla system.merges para 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 expr y key expr de forma diferente. partition expr se utiliza para construir un índice minmax que contiene las columnas relacionadas, mientras que primary key expr se almacena como una expr. A veces, el usuario puede particionar una tabla en niveles más amplios, como partition 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 disco s3 es 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 CONFIG ahora lanza una excepción si no se puede recargar y sigue usando el users.xml anterior. La recarga periódica en segundo plano también sigue usando el users.xml anterior 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> DateTime eligiera 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 mlock al 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-10 a clang-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 madvise para 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_sources en 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 ccache de forma predeterminada en cmake si 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 -> OFF y 1 -> ON en los valores predeterminados de option. - Se añadieron algunas descripciones y enlaces a la documentación de las opciones. - Se sustituyó la opción FUZZER (hay otra opción, ENABLE_FUZZING, que también habilita la misma funcionalidad). - Se eliminó la opción ENABLE_GTEST_LIBRARY, ya que existe ENABLE_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 Merge sobre una gran cantidad de tablas MergeTree. Corrige #7748. #16988 (Anton Popov).

Corrección de errores

  • No restaurar partes desde WAL si in_memory_parts_enable_wal está 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 implemented al ejecutar la consulta RENAME en la base de datos Atomic cuando 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 BY con la configuración optimize_redundant_functions_in_order_by habilitada. #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 JOIN con tipos LowCardinality. 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_table cuando some_table se había creado como AS 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-server que requiere SNI. Esto es posible cuando clickhouse-server está alojado detrás de un proxy TLS. #16938 (filimonov).
  • Las funciones de agregación condicionales (por ejemplo: avgIf, sumIf, maxIf) deben devolver NULL cuando faltan filas y usar argumentos Nullable. #13964 (Winter Zhang).

Corrección de errores

  • Se corrige un error por el que las consultas ON CLUSTER podían quedarse bloqueadas indefinidamente en ReplicatedMergeTreeTables que no son líderes. #17089 (alesapin).
  • Se vuelve a resolver la IP de format_avro_schema_registry_url en caso de error. #16985 (filimonov).
  • Se corrige un posible cierre inesperado del servidor después de ALTER TABLE ... MODIFY COLUMN ... NewType cuando SELECT tiene una expresión WHERE sobre 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 argument en consultas con ORDER 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 any sin argumentos. Esto corresponde a #16803. cc @azat. #16826 (Amos Bird).
  • Se corrige el operador IN sobre varias columnas y tuplas con la configuración transform_null_in habilitada. 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_worker activado 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.parts deberí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 by con los modificadores totals/rollup/cube y las funciones min/max en las claves de group 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 BY para ReplicatedVersionedCollapsingMergeTree. 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 = 0 para 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 readonly ahora se considera que usa un perfil llamado readonly, y no una configuración llamada profile con la restricción readonly. 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 EXISTS con el error Table ... does not exist cuando 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 (como DROP DATABASE y RENAME TABLE) Se corrigió el fallo de DROP/DETACH DATABASE con Table ... does not exist al ejecutar de forma concurrente DROP/DETACH TABLE. #15934 (tavplubix).
  • Corrige el resultado vacío incorrecto de una consulta en una tabla Distributed si la consulta tiene WHERE, PREWHERE y GLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov).
  • Se corrigen posibles bloqueos mutuos en RBAC. #15875 (Vitaly Baranov).
  • Corrige la excepción Block structure mismatch en las consultas SELECT ... ORDER BY DESC ejecutadas después de la consulta ALTER 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 tabla Buffer, 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 ReadonlyReplica al 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 CLUSTER independientemente del ajuste <internal_replication> en la configuración del clúster. #16075 (alesapin).
  • Se expanden las macros {database}, {table} y {uuid} en los argumentos de ReplicatedMergeTree al 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 en MATERIALIZED VIEW en caso de que la consulta de MV contenga ARRAY 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 ReadFromStorage del 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 expression al usar el resultado de la función JSON* en VALUES, LIMIT o en la parte derecha del operador IN. #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 MOVE o REPLACE PARTITION o, en casos poco frecuentes, después de DETACH o DROP PARTITION. Ya se ha corregido. #15537 (tavplubix).
  • Se corrigió un error por el que el operador ILIKE dejaba de ser insensible a mayúsculas y minúsculas si se había ejecutado LIKE con el mismo patrón. #15536 (alesapin).
  • Corrige los errores de Missing columns al 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 boundingRatio es 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 joinGet con tipos LowCardinality. Esto corrige #15214. #15220 (Amos Bird).
  • Corrige un error en el motor de tabla Buffer que no permite insertar datos con la nueva estructura en Buffer después de una consulta ALTER. 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 argument durante 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 VersionedCollapsingMergeTree mediante la consulta ALTER. #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 part si 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, REPLACE y APPLY, que pueden aplicarse a la lista de columnas seleccionadas (después de * o COLUMNS(...)). Por ejemplo, puede escribir SELECT * EXCEPT(URL) REPLACE(number + 1 AS number). Otro ejemplo: select * apply(length) apply(max) from wide_string_table para averiguar la longitud máxima de todas las columnas de cadena. #14233 (Amos Bird).
  • Se añadió una función de agregación rankCorr que 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 UPDATE con una columna Nullable en una expresión de asignación y un valor constante (como UPDATE 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 FixedString durante 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 bar con 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 exists al usar el motor de base de datos MaterializeMySQL. #14898 (Winter Zhang).
  • Corrige el problema por el que algunas invocaciones de la función extractAllGroups pueden 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 SELECT cuando la columna consultada tiene una expresión DEFAULT que depende de otra columna que también tiene DEFAULT y 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 -> Int reducida 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 has cuando 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 ALTER en una tabla creada AS 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 CODEC en columnas de tipo ALIAS. 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-generator para 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_zone vacío en funciones del tipo toStartOf*. #14509 (Bharat Nallan).
  • El handler de MySQL devuelve OK para consultas como SET @@var = value. Esa instrucción se ignora. Esto es necesario porque algunos drivers de MySQL envían la consulta SET @@ 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-obfuscator admite 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 en MySQL). 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_log con el nombre default_compression_codec. #14116 (alesapin).
  • Se añade un argumento de precisión para el tipo DateTime. Esto permite usar el nombre DateTime en lugar de DateTime64. #13761 (Winter Zhang).
  • Se añadió la autorización requirepass para el Diccionario externo Redis. #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_shards y optimize_distributed_group_by_sharding_key). #10373 (Azat Khuzhin).
  • Creación de conjuntos para múltiples JOIN e IN en paralelo. Puede mejorar ligeramente el rendimiento de las consultas con varias expresiones IN subquery distintas. #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_configs y dictionaries de 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 short al ejecutar funciones toType(...) (toDate, toUInt32, etc.) con un argumento de tipo Nullable(String). Ahora, estas funciones devuelven NULL en 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 Distinct al 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.size con 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_size en MergeTreeWriterSettings por min_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 ALTER cuando 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 BY con la configuración optimize_redundant_functions_in_order_by activada. #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 CLUSTER podí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_url en caso de error. #16985 (filimonov).
  • Se corrigió un posible bloqueo del servidor después de ALTER TABLE ... MODIFY COLUMN ... NewType cuando SELECT tiene una expresión WHERE sobre la columna que se está modificando y la operación ALTER aú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 argument en consultas con ORDER 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 any sin argumentos. Esto corrige #16803. #16826 (Amos Bird).
  • Se corrigió el operador IN para varias columnas y tuplas con la configuración transform_null_in habilitada. Corrige #15310. #16722 (Anton Popov).
  • Se corrigió el comportamiento incoherente de optimize_read_in_order/optimize_aggregation_in_order con 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_worker activado 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.parts deberí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 BY con claves de cadena, causada por un error en la implementación de TwoLevelStringHashTable. #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 BY en ReplicatedVersionedCollapsingMergeTree. Esto corrige #15980. #16011 (alesapin).
  • Corrige el analizador de nombres de colación y de conjuntos de caracteres, y añade compatibilidad con length = 0 para 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 readonly ahora se considera el uso de un perfil llamado readonly, y no de una configuración llamada profile con 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 EXISTS con el error Table ... does not exist cuando 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 (como DROP DATABASE y RENAME TABLE) Se corrigió el fallo de DROP/DETACH DATABASE con Table ... does not exist al ejecutar de forma concurrente DROP/DETACH TABLE. #15934 (tavplubix).
  • Corrige el resultado vacío incorrecto de una consulta sobre una tabla Distributed si la consulta tiene WHERE, PREWHERE y GLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov).
  • Se corrigen posibles interbloqueos en RBAC. #15875 (Vitaly Baranov).
  • Se corrigió la excepción Block structure mismatch en consultas SELECT ... ORDER BY DESC ejecutadas después de la consulta ALTER 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 en MATERIALIZED VIEW en caso de que la consulta para MV contenga ARRAY 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 tabla Buffer, 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 ReadonlyReplica al 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 CLUSTER independientemente 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 de ReplicatedMergeTree al 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 ReadFromStorage del 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 expression al usar el resultado de la función JSON* en VALUES, LIMIT o en el lado derecho del operador IN. #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 MOVE o REPLACE PARTITION o, en casos excepcionales, después de DETACH o DROP PARTITION. Se ha corregido. #15537 (tavplubix).
  • Se corrigió un error por el que el operador ILIKE dejaba de ignorar las diferencias entre mayúsculas y minúsculas si se había ejecutado LIKE con el mismo patrón. #15536 (alesapin).
  • Corrige errores de Missing columns al 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 boundingRatio tiene 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 Buffer que no permitía insertar datos con una estructura nueva en Buffer después de una consulta ALTER. Corrige #15117. #15192 (alesapin).
  • Ajuste del tamaño del campo decimals en 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 bar con 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 argument durante 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_mutation y number_of_free_entries_in_pool_to_lower_max_size_of_merge pueden ser iguales a background_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 exists al usar el motor de base de datos MaterializeMySQL. #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 -> Int reducida 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 VersionedCollapsingMergeTree mediante la consulta ALTER. #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 extractAllGroups pueden provocar el error “Memory limit exceeded”. Esto corrige #13383. #14889 (alexey-milovidov).
  • Soluciona un SIGSEGV al intentar hacer INSERT en StorageFile(fd). #14887 (Azat Khuzhin).
  • Soluciona un error poco frecuente en consultas SELECT cuando la columna consultada tiene una expresión DEFAULT que depende de otra columna que también tiene DEFAULT, 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 UPDATE con una columna Nullable en la expresión de asignación y un valor constante (como UPDATE 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() ni ls->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 FINAL no recalcula el TTL de las partes que se añadieron antes de que se creara el TTL. Use ALTER TABLE ... MATERIALIZE TTL una vez para calcularlo; después de eso, OPTIMIZE FINAL evaluará el TTL correctamente. Este comportamiento nunca funcionó para las tablas replicadas. #14220 (alesapin).
  • Se amplía la configuración parallel_distributed_insert_select con una opción para ejecutar INSERT en la tabla local. La configuración cambia de tipo, de Bool a UInt64, por lo que los valores false y true dejan de ser compatibles. Si tiene estos valores en la configuración del servidor, el servidor no se iniciará. Sustitúyalos por 0 y 1, 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 formato ODBCDriver2. 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 Default para las columnas que corresponden a configuraciones especificadas en config.xml. Implementa: #9074. #14049 (alesapin).
  • Se admite autenticación Kerberos en Kafka mediante las bibliotecas krb5 y cyrus-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ón normalizedQueryHash, 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ón isDecimalOverflow(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 quantileExactLow y quantileExactHigh con sus alias correspondientes para medianExactLow y medianExactHigh. #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 position ahora admite el argumento opcional start_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 LowCardinality al 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 ALTER de una tabla creada AS 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-bridge al 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ó pointInPolygon al 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 SELECT con la palabra clave DISTINCT y en subconsultas con UNION ALL cuando la configuración optimize_duplicate_order_by_and_distinct está habilitada. #13925 (Artem Zuikov).
  • Se corrigió un posible interbloqueo al renombrar la tabla Distributed. #13922 (tavplubix).
  • Corrige la ordenación incorrecta de las columnas FixedString al 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 arrayJoin en 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 empty al ejecutar de forma concurrente DROP DATABASE y CREATE 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_status cuando verbose=1. #13722 (javi santana).
  • Se corrigió el mensaje incorrecto en clickhouse-server.init al 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 CLUSTER en 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/CSVWithNames del 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 redis después de que la conexión se interrumpiera una vez. Esto puede ocurrir con las disposiciones de diccionario cache y direct. #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 CODEC en columnas de tipo ALIAS. 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_milliseconds en 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ón index_granularity_bytes demasiado 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 devolver NULL cuando 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 exceeded para una consulta correcta. #13928 (Nikolai Kochetov).
  • Mejor mensaje de error para el valor NULL del formato TabSeparated. #13906 (jiang tao).
  • La función arrayCompact comparará 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 en tsan y, 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 requirepass de 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 lcm podí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/toDateTime en 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. DiskS3 es 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, SelectQueryTimeMicroseconds e InsertQueryTimeMicroseconds a 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). DiskS3 es 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 system con el motor Atomic de forma predeterminada (como preparación para habilitar por defecto el motor de base de datos Atomic en todas partes). #13680 (tavplubix).

Mejora de rendimiento

  • Optimiza ligeramente las consultas muy cortas con LowCardinality. #14129 (Anton Popov).
  • Habilita INSERT paralelos para los motores de tabla Null, Memory, Distributed y Buffer cuando max_insert_threads está configurado. #14120 (alexey-milovidov).
  • Falla de inmediato si se supera el límite max_rows_to_read durante el escaneo de partes. El objetivo de este cambio es omitir el escaneo de rangos para todas las partes seleccionadas si está claro que max_rows_to_read ya 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() y countEqual() para Array(LowCardinality(T)) y argumentos constantes del lado derecho. #12550 (myrrc).
  • Al realizar consultas INSERT SELECT triviales, establece automáticamente max_threads en 1 o max_insert_threads, y max_block_size en min_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, UInt256 y las funciones relacionadas. Se amplían los Decimal con Decimal256 (precision de hasta 76 dígitos). Los nuevos types están bajo el setting allow_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 clickhouse sin 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 tzdata integrada 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 tzdata del 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_log en 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_CLIENT de contrib/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 Docker runner. 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 alias mod. Esto cierra #7323. #12585 (alexey-milovidov).
  • Se depreca la representación especial de los valores cero de Date/DateTime como 0000-00-00 y 0000-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ón groupArrayMovingAvg devolvía un número entero, lo que no era consistente con la función avg. 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_size con un valor inferior a number_of_free_entries_in_pool_to_execute_mutation o number_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 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

  • 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 consultas ALTER TABLE ... PARTITION ... (actualmente ATTACH y FREEZE). Cierra #8076. #13017 (alesapin).
  • Se añade la función bayesAB para 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-Database y X-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 minMap y maxMap en SimpleAggregateFunction. #12662 (Ildus Kurbangaliev).
  • Se añade la configuración allow_non_metadata_alters, que restringe la ejecución de consultas ALTER que modifican datos en disco. Deshabilitada de forma predeterminada. Cierra #11547. #12635 (alesapin).
  • Se añade la función formatRow para 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ón columns. #12574 (Amos Bird).
  • Se añade la función FROM_UNIXTIME para 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_key está habilitada. Cierra #5319. #12433 (Amos Bird).
  • Integración con COS. #12386 (fastio).
  • Se añaden las funciones mapAdd y mapSubtract para sumar/restar valores asociados a claves. #11735 (Ildus Kurbangaliev).

Corrección de errores

  • Corrige los timeout prematuros de ON CLUSTER en 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 cache que 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 LowCardinality al 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_milliseconds para 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 DISTINCT cuando las subconsultas también usan DISTINCT, en caso de que esté habilitada la configuración optimize_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 FixedString cuando 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 empty al ejecutar simultáneamente DROP DATABASE y CREATE 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_type es mayor que QUERY_START. #13737 (Azat Khuzhin).
  • Corrige el mensaje erróneo en clickhouse-server.init al comprobar el usuario y el grupo. #13711 (ylchou).
  • No optimice any(arrayJoin()) como arrayJoin() con optimize_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 parseDateTimeBestEffort al 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 query con SET optimize_move_functions_out_of_any = 1 y alias dentro de any(). #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 Arrow y Parquet en 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 PrettyCompactMonoBlock para clickhouse-local. Corrige extremes/totals con PrettyCompactMonoBlock. 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 groupArrayMovingSum deserializa un estado vacío. Corrige #13339. #13341 (alesapin).
  • Lanza un error en la función arrayJoin() en la sección JOIN ON. #13330 (Artem Zuikov).
  • Se corrige un bloqueo en LEFT ASOF JOIN con join_use_nulls=1. #13291 (Artem Zuikov).
  • Se corrigió un posible error Totals having transform was already added to pipeline en 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, sumDistinct y funciones de agregación similares llamadas 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 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 arrayElement cuando 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 redis después de que se perdiera la conexión una vez. Puede ocurrir con las disposiciones de diccionario cache y direct. #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 result en consultas remotas que usan funciones que son deterministas dentro de una consulta, pero no entre consultas, como now(), now64(), randConstant(). Corrige #11327. #13075 (Nikolai Kochetov).
  • Corrige un fallo que podía producirse en consultas con ORDER BY por tupla y un LIMIT pequeño. Corrige #12623. #13009 (Nikolai Kochetov).
  • Se corrige el error Block structure mismatch en consultas con UNION y JOIN. 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 DELETE y ALTER MODIFY COLUMN se ejecutan simultáneamente como una única mutación. Este error provoca un número incorrecto de filas en count.txt y, como consecuencia, datos incorrectos en la parte. Además, se corrige un pequeño error cuando ALTER RENAME COLUMN y ALTER ADD COLUMN se ejecutan simultáneamente. #12760 (alesapin).
  • Se usaban credenciales incorrectas al utilizar la fuente de diccionario clickhouse para 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 escriba WHERE x IN tuple(1, 2, ...) en lugar de WHERE 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 de any(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 if con argumentos Array(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 durante ALTER ... UPDATE en casos inesperados (p. ej., al restar de una columna UInt64). Esto corrige #7306. Esto corrige #4165. #12633 (alexey-milovidov).
  • Soluciona un posible error Pipeline stuck en consultas con ordenación externa. Corrige #12617. #12618 (Nikolai Kochetov).
  • Soluciona el error Output of TreeExecutor is not sorted en OPTIMIZE DEDUPLICATE. Soluciona #11572. #12613 (Nikolai Kochetov).
  • Se corrige el problema por el que el alias del resultado de la función any puede 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 DELETE cuando enable_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, SelectQueryTimeMicroseconds y InsertQueryTimeMicroseconds a system.events, así como a system.metrics, processes, query_log, etc. #13028 (ianton-ru).
  • Se añadieron SelectedRows y SelectedBytes a system.events, así como a system.metrics, processes, query_log, etc. #12638 (ianton-ru).
  • Se añadió la información de current_database a system.query_log. #12652 (Amos Bird).
  • Se permite TabSeparatedRaw como formato de entrada. #12009 (hcz).
  • Ahora joinGet admite búsquedas por múltiples claves. #12418 (Amos Bird).
  • Permite que las funciones de agregación *Map funcionen con Arrays con valores NULL. Corrige #13157. #13225 (alexey-milovidov).
  • Evita el desbordamiento al analizar valores DateTime que, de otro modo, darían lugar a una marca de tiempo Unix negativa en su zona horaria (por ejemplo, 1970-01-01 00:00:00 en 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 exceeded para una consulta correcta. #13928 (Nikolai Kochetov).
  • Se corrigió una condición de carrera en la función lgamma. Esta condición solo se detectó en tsan; 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 assert en parseDateTimeBestEffort. 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 JOIN en lugar de SEMI LEFT JOIN. Por ahora, ambos son correctos. #12520 (Artem Zuikov).
  • Cambia el valor predeterminado de multiple_joins_rewriter_version a 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, TinyLog y StripeLog. 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 DATABASE y RENAME DICTIONARY para el engine de base de datos Atomic - Añade la macro implícita {uuid}, que puede usarse en la ruta de ZooKeeper para ReplicatedMergeTree. Funciona con consultas CREATE ... ON CLUSTER .... Establece show_table_uuid_in_table_create_query_if_not_nil en true para usarla. - Hace opcionales los argumentos del engine ReplicatedMergeTree; /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 datos Atomic. Las bases de datos Atomic creadas anteriormente deben convertirse manualmente al nuevo formato. La base de datos Atomic es una característica experimental. #12343 (tavplubix).
  • Se separó AWSAuthV4Signer en un logger independiente y se eliminó la repetición excesiva de AWSClient: AWSClient en 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 in con 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 LIMIT del 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 BY si set optimize_monotonous_functions_in_order_by=1. #12467 (Artem Zuikov).
  • Añade una optimización de ORDER BY que reescribe ORDER BY x, f(x) como ORDER BY x si set 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. DiskS3 es una funcionalidad experimental. #12434 (Vladimir Chebotarev).

Mejora de compilación/pruebas/empaquetado

  • Usar shellcheck para 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 SELECT en 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ó rdkafka a 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 COLUMN en 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 paquetes clickhouse-server en todos los nodos del clúster y después reinícielos (de este modo, cuando se reinicie clickhouse-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 initializeAggregation para 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 ORC para 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 query mediante SET optimize_move_functions_out_of_any = 1 y alias dentro de any(). #13419 (Artem Zuikov).
  • Se corrigió PrettyCompactMonoBlock en clickhouse-local. Se corrigieron extremes/totals con PrettyCompactMonoBlock. Esto corrige #7746. #13394 (Azat Khuzhin).
  • Se corrigió un posible error Totals having transform was already added to pipeline en 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, sumDistinct y 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 cond es un constexpr Nullable que no es un NULL literal. Corrige #12463. #13226 (alexey-milovidov).
  • Se corrigió un assert en la función arrayElement en 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 DateTime64 con 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 result en consultas remotas que usan funciones deterministas dentro del ámbito de una consulta, pero que no son deterministas entre consultas, como now(), 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 DELETE y ALTER MODIFY COLUMN se ejecutaban simultáneamente como una sola mutación. Este error provoca una cantidad incorrecta de filas en count.txt y, como consecuencia, datos incorrectos en la parte de datos. Además, se corrigió un pequeño error cuando ALTER RENAME COLUMN y ALTER ADD COLUMN se 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 escribe WHERE x IN tuple(1, 2, ...) en lugar de WHERE 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ó 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 if para argumentos Array(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).
  • 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ón groupArrayMovingAvg devolvía un número entero, lo que no era coherente con la función avg. 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 DELETE cuando enable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin).
  • Se ha mejorado la excepción para la función in cuando 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_log está habilitado. #12452 (alexey-milovidov).
  • Se corrigió un desbordamiento al especificar un LIMIT o OFFSET muy 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ó CLEAR en una columna incluso si hay expresiones DEFAULT que dependen de ella. Esto corrige #12333. #12378 (alexey-milovidov).
  • Se corrigen TOTALS/ROLLUP/CUBE en las funciones de agregación con argumentos -State y Nullable. Esto corrige #12163. #12376 (alexey-milovidov).
  • Se corrigieron el mensaje de error y los códigos de salida de las consultas ALTER RENAME COLUMN cuando RENAME no 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 Delta o DoubleDelta con tipos de ancho variable, se devolvía una excepción con el código LOGICAL_ERROR en lugar de una excepción con el código BAD_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áusula ORDER BY. #12306 (Anton Popov).
  • Se evita la excepción “bad cast” cuando hay una expresión que filtra datos por columnas virtuales (como _table en las tablas Merge) o por columnas de “índice” en tablas del sistema, por ejemplo al filtrar por el nombre de la base de datos al consultar system.tables, y esa expresión devuelve el tipo Nullable. Esto corrige #12166. #12305 (alexey-milovidov).
  • Se corrigió TTL tras 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 arrayFill funcionaba 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 SummingMergeTree al 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 DELETE que 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 greatCircleDistance y geoDistance. 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 Parquet ahora funciona correctamente con los tipos LowCardinality y LowCardinality(Nullable). Se corrigen #12086 y #8406. #12108 (Nikolai Kochetov).
  • Se corrigió el problema de rendimiento en las consultas con UNION causado 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_rows y result_bytes en system.quey_log para 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 column en las funciones de orden superior con argumento Tuple(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 if con argumentos de tipo FixedString de distintos tamaños. Esto corrige #11362. #12021 (alexey-milovidov).

Mejora

  • Ahora se puede especificar la clase y el tipo de JOIN de una forma más estándar: LEFT SEMI JOIN en lugar de SEMI LEFT JOIN. Por ahora, ambas formas son correctas. #12520 (Artem Zuikov).
  • lifetime_rows/lifetime_bytes para 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_charset habilita 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ón formatDateTime. #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 ejecutar REVOKE ALL ON *.* FROM user1 ya no es necesario tener todos los access rights concedidos con la opción grant. Se añadió el comando REVOKE ALL FROM user1: revoca todos los roles concedidos a user1. #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 BY y GROUP BY mediante el prefijo de la clave de ordenación (habilitado con la configuración optimize_aggregation_in_order, deshabilitado de forma predeterminada). #11696 (Anton Popov).
  • Se eliminaron las funciones inyectivas dentro de uniq*() si se establece set 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 umbrales min_rows_for_compact_part y min_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ón in_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. CodeQL es otro analizador estático que utilizaremos junto con clang-tidy y PVS-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 UNBUNDLED a la tabla system.build_options. Movidas las listas de omisión de clickhouse-test al 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 que Dockerfile se puede compilar. Se ejecuta a diario en master y en las pull requests de Dockerfile. #12102 (Ivan Blinkov).
  • Comprobación diaria con la herramienta de análisis de seguridad GitHub CodeQL, que busca CWE. #12101 (Ivan Blinkov).
  • Instalar ca-certificates antes del primer apt-get update en 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 escribe WHERE x IN tuple(1, 2, ...) en lugar de WHERE 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ó SIGSEGV en StorageKafka cuando el broker no está disponible (y no solo en ese caso). #12658 (Azat Khuzhin).
  • Se añadió compatibilidad para la función if con argumentos Array(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 DELETE cuando enable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin).
  • Excepción mejorada para la función in cuando 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_log está 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 -State y Nullable. 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 SummingMergeTree al 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 SELECT sobre VIEW. 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-certificates antes del primer apt-get update en 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 uniq ahora devuelven un resultado no Nullable. 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_header está habilitada de forma predeterminada. Esto afectará al análisis de los formatos de entrada -WithNames y -WithNamesAndTypes. #10937 (alexey-milovidov).
  • Se elimina la configuración experimental_use_processors. Está habilitada de forma predeterminada. #10924 (Nikolai Kochetov).
  • Se actualiza zstd a 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 como Data 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_codecs para 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 paquetes clickhouse-server en todos los nodos del cluster y luego reinícialos (así, cuando se reinicie clickhouse-server, arrancará con la nueva versión).

Nueva funcionalidad

  • TTL DELETE WHERE y TTL GROUP BY para 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_events de Linux (estas métricas se calculan con contadores de hardware de la CPU y contadores del SO). Es opcional y requiere que CAP_SYS_ADMIN esté establecido en el binario de ClickHouse. #9545 Andrey Skobtsov. #11226 (Alexander Kuzmenkov).
  • Ahora se admiten los modificadores NULL y NOT NULL para tipos de datos en la consulta CREATE. #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 direct que 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_direct a 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-client mediante replxx. #11422 (Tagir Kuskarov).
  • Se agregaron las funciones minMap y maxMap. #11603 (Ildus Kurbangaliev).
  • Se añade la tabla system.asynchronous_metric_log, que registra métricas históricas de system.asynchronous_metrics. #11588 (Alexander Kuzmenkov).
  • Se agregan las funciones extractAllGroupsHorizontal(haystack, re) y extractAllGroupsVertical(haystack, re). #11554 (Vasily Nemkov).
  • Se agregan las consultas SHOW CLUSTER(S). #11467 (hexiaoting).
  • Se añade la función netloc para extraer la ubicación de red, similar a netloc de urlparse(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_ms al motor Kafka (el tipo es Nullable(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) devuelve Nullable(Type). #11733 (Artem Zuikov).
  • Se añadió la columna position a la tabla system.columns y column_position a la tabla system.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-format ahora 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 pointInPolygon funcione con un polígono no constante. pointInPolygon ahora 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_info a system.parts para 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 NCHAR y NVARCHAR como sinónimos de tipos de datos. #11025 (alexey-milovidov).
  • Resuelto #7224: se agregaron las métricas FailedQuery, FailedSelectQuery y FailedInsertQuery a la tabla system.events. #11151 (Nikita Orlov).
  • Añade más estadísticas de jemalloc a system.asynchronous_metrics y 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 directorio contrib. 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 JSONAsString que 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).
  • SimpleAggregateFunction ahora también es compatible con sumMap. #10000 (Ildus Kurbangaliev).
  • Compatibilidad con ALTER RENAME COLUMN para 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 Nullable en una condición prewhere. #11895 #11608 #11869 (Nikolai Kochetov).
  • No se permite arrayJoin dentro 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 if cuando 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 exist al usar WITH <subconsulta escalar> ... en SELECT ... 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 FILL en 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 REPLICA sobre 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 TIES junto con la cláusula ORDER BY, que contiene alias. #11689 (Anton Popov).
  • Corrige un posible Pipeline stuck en consultas con FINAL en 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 tareas MUTATE_PART en 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 mismatch en consultas con muestreo que leen desde la tabla Buffer. #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 column en consultas con PREWHERE column in (subquery) y ARRAY 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 methods que puede producirse si min_bytes_to_use_direct_io está 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 stuck en INSERT SELECT FINAL cuando SELECT (max_threads>1) tiene varios streams, pero INSERT solo 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) y Nullable(T). #11380. #11414 (Artem Zuikov).
  • Corrige el código de error al usar una clave USING incorrecta. #11373. #11404 (Artem Zuikov).
  • Se corrigió geohashesInBox para 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 stuck en 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 VIEW con la configuración parallel_view_processing = 1. Corrige #10241. #11330 (Nikolai Kochetov).
  • Se corrigió visitParamExtractRaw cuando 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 empty o notEmpty. 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_speed podía no funcionar o funcionar incorrectamente si la consulta estaba limitada por los ajustes max_network_bandwidth, max_execution_speed o priority. Se cambia el valor predeterminado de timeout_before_checking_execution_speed a un valor distinto de cero, porque de lo contrario los ajustes min_execution_speed y max_execution_speed no 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 en clickhouse-client. #11296 (alexey-milovidov).
  • Se corrige el fallo que se producía 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 cache podí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 QueryPipeline al leer de VIEW con 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.idx está definido en la consulta CREATE. #11199 (alesapin).
  • Se soluciona el posible error Cannot capture column en funciones de orden superior con el argumento capturado Array(Array(LowCardinality)). #11185 (Nikolai Kochetov).
  • Se corrigió el globbing de S3, 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 cuando optimize_move_to_prewhere genera 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/DROP y RENAME sobre una misma columna en una sola consulta ALTER. El mensaje de excepción para MODIFY y RENAME simultá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 BY de dos niveles cuando hay un LIMIT. #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 para symlink) para la base de datos Atomic. #10980 (Azat Khuzhin).
  • Se corrige el fallo del servidor al ejecutar consultas concurrentes ALTER y DROP DATABASE con el motor de base de datos Atomic. #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 BY es 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 DistributedBlockOutputStream enví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, como a 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 finalizeAggregation mientras se lee de una tabla con el motor Memory, que almacena el estado de AggregateFunction para la función quanite*. #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 WATCH después de eliminar la tabla LiveView de la base de datos con el motor Atomic. #10859 (tavplubix).
  • Se corrigió un error en ReplicatedMergeTree que podía hacer que algunos ALTER sobre la consulta OPTIMIZE quedaran 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_type para 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-pointer en las compilaciones de clang, lo que mejora el rendimiento al menos en un 1% de media. #10761 (Amos Bird).
  • Se corrige avgWeighted al usar un peso de punto flotante en varios segmentos. #10758 (Baudouin Giard).
  • Corregido el comportamiento de parallel_view_processing. Ahora, todas las inserciones en MATERIALIZED VIEW deben 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 generateRandom con tipos anidados. Corrige #10583. #10734 (Nikolai Kochetov).
  • Se corrige la corrupción de datos en la columna clave LowCardinality(FixedString) de SummingMergeTree, 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 IN con 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=2 y cancel_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_efficient habilitado. 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ón HAVING (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 CACHE ahora 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 VIEW en 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 que loadStoredObject() 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_key se había introducido y dejado desactivado de forma predeterminada debido a las complejidades del análisis de sharding_key; un ejemplo sencillo es if en 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 INSERT se posponía en cada INSERT) 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) y distributed_storage_policy (hace que link(2) falle con EXDEV)). #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 TTL a los datos antiguos después de la consulta ALTER MODIFY TTL. Este comportamiento está controlado por la configuración materialize_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 de LIKE y match sea más cómodo (basta con escribir name LIKE 'used\_cars' en lugar de name 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ó hostname como alias de la función hostName. Esta función fue sugerida por Victor Tarnavskiy, de Yandex.Metrica. #11821 (alexey-milovidov).
  • Se añadió compatibilidad con DDL distribuido (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-client y clickhouse-benchmark si el usuario la ha especificado con un valor explícito. Esto evita que la contraseña quede expuesta a través de ps y 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=b o http://localhost:8123/?a=b&&c=d. Esto corrige #10749. #11651 (alexey-milovidov).
  • Permitir el uso de groupArrayArray y groupUniqArrayArray como SimpleAggregateFunction. #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_consumers es 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=1 para 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-client o clickhouse-format en 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.id que usa ClickHouse al comunicarse con Kafka para que sea más descriptivo y útil. #11252 (filimonov).
  • Se mantiene el valor de la métrica DistributedFilesToInsert en 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 PRECISION y CHAR 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 DATABASE explícito para el motor de base de datos Memory. 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_views y min_insert_block_size_bytes_for_materialized_views. Estos ajustes son similares a min_insert_block_size_rows y min_insert_block_size_bytes, pero se aplican solo a los bloques que se insertan en MATERIALIZED 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 varSamp y varPop no puedan devolver resultados negativos debido a errores numéricos, y que stddevSamp y stddevPop no 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_threads para limitar el número de hilos utilizados. #10463 (Nikolai Kochetov).
  • Mejora el rendimiento de las consultas INSERT mediante INSERT SELECT o 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 mediante optimize_move_functions_out_of_any #11529 (Ruslan).
  • Mejora el rendimiento de clickhouse-client en 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 BY y un LIMIT pequeño (menor que max_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 mlock para 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 sum y 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 BY con 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_bytes para gestionar el tamaño de los búferes de los bloques de la izquierda. #10601 (Artem Zuikov).
  • Elimina los ORDER BY y DISTINCT duplicados de las subconsultas; esta optimización se habilita con optimize_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)) y Polygon (Array(Array(Tuple(Float64, Float64))). #10678 (Alexey Ilyukhov).
  • Se añade una función hasSubstr que 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 establecer bitonic_sort en la opción special_sort de 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/zoneinfo no existe. Tenga en cuenta que todas las zonas horarias funcionan en ClickHouse incluso sin que tzdata esté 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 ccache para 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 curl superó 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 cctz no 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-bridge con 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 lld para 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 capnproto para capnp::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 parseDateTimeBestEffort cuando 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, sumDistinct y 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 arrayElement en 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 SELECT desde 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ía WHERE x IN tuple(1, 2, ...) en lugar de WHERE 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ó SIGSEGV en StorageKafka cuando el broker no está disponible (y no solo en ese caso). #12658 (Azat Khuzhin).
  • Se añadió soporte para la función if con argumentos Array(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 DELETE cuando enable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin).
  • Excepción mejorada para la función in cuando 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 sentencia ORDER BY. #12306 (Anton Popov).
  • Se evita la excepción “bad cast” cuando hay una expresión que filtra datos por columnas virtuales (como _table en las tablas Merge) o por columnas de “índice” en tablas del sistema, como al filtrar por el nombre de la base de datos al consultar system.tables, y dicha expresión devuelve el tipo Nullable. Esto corrige #12166. #12305 (alexey-milovidov).
  • Mostrar un error si TrieDictionary no se puede cargar. #12290 (Vitaly Baranov).
  • La función arrayFill funcionaba 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 columnas LowCardinality y 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 dictGet durante 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 DELETE que 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 SELECT con UNION, 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_rows y result_bytes en system.quey_log para 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 function de la función defaultValueOfArgumentType con el tipo LowCardinality. Corrige #11808. #12056 (Nikolai Kochetov).
  • Se corrigió el error Cannot capture column en funciones de orden superior con el argumento Tuple(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 topK ahora 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 if con argumentos de tipo FixedString de distintos tamaños. Esto corrige #11362. #12021 (alexey-milovidov).
  • Una consulta con la función neighbor como ú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 set en el formato Values. 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-certificates antes del primer apt-get update en 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 Nullable en la condición prewhere. Continuación de #11608. #11869 (Nikolai Kochetov).
  • No se permite arrayJoin dentro de funciones de orden superior. Esto provocaba una desincronización del protocolo. Esto cierra #3933. #11846 (alexey-milovidov).
  • Corrige un resultado incorrecto al comparar FixedString con una String constante. 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 FILL en 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 TIES junto con la sentencia ORDER BY que 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 tareas MUTATE_PART en 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 Nullable en la condición prewhere. (Probablemente esté relacionado de algún modo con #11572). #11608 (Nikolai Kochetov).
  • Se corrigió el error Block structure mismatch en consultas con muestreo que leen de la tabla Buffer. #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 column en consultas con PREWHERE column in (subquery) y ARRAY JOIN. #11580 (Nikolai Kochetov).
  • Se corrigió un segfault poco frecuente en SHOW 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-pointer en las builds de clang, 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 methods que puede producirse si min_bytes_to_use_direct_io está 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ó geohashesInBox para admitir argumentos fuera del rango de latitud/longitud. #11403 (Vasily Nemkov).
  • Se corrige un posible error Pipeline stuck en 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 VIEW con la configuración parallel_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 empty o notEmpty. 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_speed podía no funcionar o hacerlo incorrectamente si la consulta estaba limitada por max_network_bandwidth, max_execution_speed o la configuración priority. Se cambia el valor predeterminado de timeout_before_checking_execution_speed a uno distinto de cero, porque de lo contrario las configuraciones min_execution_speed y max_execution_speed no 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 en clickhouse-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 QueryPipeline al leer desde VIEW con 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 column en funciones de orden superior con Array(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ón HAVING (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

  • Se corrigieron varias pruebas de integración inestables. #11355 (alesapin).

Lanzamiento de ClickHouse v20.4.4.18-stable 2020-05-26

Sin cambios con respecto a v20.4.3.16-stable.

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, en MergeTree si 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 para symlink) en la base de datos Atomic. #10980 (Azat Khuzhin).
  • Se corrigió un cierre inesperado del servidor en consultas concurrentes de ALTER y DROP DATABASE con el motor de base de datos Atomic. #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 DROP de una tabla con motor Kafka (o durante reinicios del servidor). #10910 (filimonov).
  • Se corrigió el problema que impedía ejecutar varios ALTER RENAME como a 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 finalizeAggregation al leer de una tabla con el motor Memory, que almacena el state de AggregateFunction para la función quantile*. #10890 (Nikolai Kochetov).
  • Se corrigió la compatibilidad con versiones anteriores de las tuplas en las tablas Distributed. #10889 (Anton Popov).
  • Se corrigió SIGSEGV en StringHashTable cuando esa clave no existe. #10870 (Azat Khuzhin).
  • Se corrigió que WATCH se quedara colgado después de eliminar la tabla LiveView de la base de datos con motor Atomic. #10859 (tavplubix).
  • Se corrigió un error en ReplicatedMergeTree que podía hacer que algunas consultas ALTER sobre una consulta OPTIMIZE quedaran 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 ODBC cuando no se solicita el uso de comillas para los identificadores. Corrige #7984. #10821 (alexey-milovidov).
  • Se corrigió el reporte de UBSan y MSan en DateLUT. #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 en MATERIALIZED VIEW deben completarse sin excepción. Corrige #10241. #10757 (Nikolai Kochetov).
  • Se corrigieron los combinadores -OrNull y -OrDefault cuando 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 nullptr en StorageBuffer si el servidor se había apagado antes de que se iniciara la tabla. #10641 (alexey-milovidov).
  • Se corrigió optimize_skip_unused_shards al usar LowCardinality. #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 que loadStoredObject() terminara. #10587 (Vitaly Baranov).
  • Se corrigió el SELECT de la columna ALIAS cuyo 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 BY por sharding&#95;key (optimize_distributed_group_by_sharding_key se había introducido, pero quedó desactivada de forma predeterminada debido a la complejidad del análisis de la clave de sharding; un ejemplo sencillo es if en la clave de sharding) y corregirla para WITH 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 FixedString y 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 dato FixedString corresponde 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_polygons que se usa en la función pointInPolygon y 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 Markdown para 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 least y greatest. 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 es max_lifetime, y query_wait_timeout_milliseconds, cuyo valor predeterminado es un minuto. La primera configuración también es útil junto con la opción allow_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 NULL es igual a NULL en el operador IN si está establecida la opción transform_null_in. #10085 (achimbab)
  • Se añade ALTER TABLE ... RENAME COLUMN en 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 VIEW para mejorar la compatibilidad con TPC-H. #9831 (Amos Bird)
  • Agregar la opción ‘strict_order’ a windowFunnel() #9773 (achimbab)
  • Soporte para los operadores SQL DATE y TIMESTAMP, 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 DROP y RENAME TABLE sin bloqueo, así como la consulta atómica EXCHANGE 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 VIEW en 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=2 y cancel_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 consultaSYSTEM DROP DNS CACHE ahora 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 IN con un mismo conjunto en una consulta. Soluciona #10539 #10686 (Anton Popov)
  • Se corrige un bloqueo en generateRandom con tipos anidados. Soluciona #10583. #10734 (Nikolai Kochetov)
  • Se corrige la corrupción de datos en la columna clave LowCardinality(FixedString) de SummingMergeTree, 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 JOIN o una subconsulta con una condición WHERE externa. Corrige #10674 #10698 (Nikolai Kochetov)
  • Corrige la falta de ejecución en paralelo de consultas remotas con distributed_aggregation_memory_efficient activado. 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 addressToLine o 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 tzdata del sistema. Corrige la carga de la zona horaria Africa/Casablanca en 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_replicas en lugar de skip_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 stuck en ConcatProcessor que 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 DROP y OPTIMIZE en ReplicatedMergeTree. DROP podía dejar residuos en la ruta de la réplica en ZooKeeper si había una consulta OPTIMIZE concurrente. #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_size y max_parser_depth. #10295 (alexey-milovidov)
  • Permite usar count(*) con múltiples JOINs. Corrige #9853 #10291 (Artem Zuikov)
  • Se corrigió el error Pipeline stuck con max_rows_to_group_by y group_by_overflow_mode = 'break'. #10279 (Nikolai Kochetov)
  • Corrige el error ‘Cannot add column’ al crear el diccionario range_hashed mediante 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.numbers o system.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 parseDateTimeBestEffort para 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-prewhere en presencia de funciones arrayJoin (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 TABLE para el diccionario #10165 (Azat Khuzhin)
  • Convertir bloques si la estructura no coincide al hacer INSERT en 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_bytes al crear una nueva réplica. Corrige #10098. #10121 (alesapin)
  • Corrige un error en la consulta CHECK TABLE cuando 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 JOIN y UNION 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ón distributed_aggregation_memory_efficient estaba 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 BY sobre 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 Distributed se ejecutaba simultáneamente en segmentos locales y remotos. Corrige #9965 #9971 (Nikolai Kochetov)
  • Se corrigió la lógica de DeleteOnDestroy en ATTACH 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 CLUSTER se 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 JOIN aparece con TOTALS. 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 TRUNCATE para 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 DISTINCT para Distributed cuando optimize_skip_unused_shards está 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.ms no 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 1 en el cliente. Ocurría en consultas con JOIN cuando 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_shards está 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 COLUMN que fallaba con partes compactas. #9779 (alesapin)
  • Se corrigió la falta de rows_before_limit_at_least en 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 sumKahan y sumWithOverflow. 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 consultas INSERT en una tabla Distributed en 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 column e Invalid number of rows in Chunk en MergeTreeRangeReader. Podían aparecer al ejecutar PREWHERE en algunos casos. #9612 (Anton Popov)
  • Se permite ALTER ON CLUSTER en 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 como time + INTERVAL 1 SECOND). Esto corrige #5743 #9323 (alexey-milovidov)

Mejora

  • Usa la zona horaria al comparar DateTime con 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 OFFSET en lugar de cityHash64(PRIMARY KEY) % N == n para la partición en clickhouse-copier. Para usar esta funcionalidad, pase --experimental-use-sample-offset 1 como 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_merge en la clave de segmentación de GROUP BY (si optimize_skip_unused_shards está 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_usage para limitar el uso total de memoria del servidor. La métrica MemoryTracking ahora se calcula sin deriva. La configuración max_memory_usage_for_all_queries ahora 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 +inf en tipos de coma flotante. Cierra #1839 #10272 (alexey-milovidov)
  • Se implementó la función de tabla generateRandom para tipos Nested. Con esto se cierran #9903 #10219 (alexey-milovidov)
  • Se proporciona max_allowed_packed en 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 toString se 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 CLUSTER en 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_bytes a la tabla system.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 BY de 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 deshabilita force_optimize_skip_unused_shards para 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 Date o DateTime. #9967 (Vladimir Chebotarev)
  • Implementación optimizada de enlaces duros en DiskS3. #9760 (Pavel Kovalenko)
  • Si set multiple_joins_rewriter_version = 2 habilita 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 con USING y permite select * 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 splitByString para admitir cadenas vacías como separadores. #9742 (hcz)
  • Añade una columna timestamp_ns a system.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 limit pero sin order by (como select 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 now64 con argumentos incorrectos. Esto corrige #8973 #10511 (alexey-milovidov)
  • Separar la configuración de fuzzer y 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_OPTIONS para 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-10 en CI. Esto garantiza que #10238 quede solucionado. #10384 (alexey-milovidov)
  • Se actualizó OpenSSL a la rama 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 error y SSL 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/null en el motor File para 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.py para 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-test es 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-pick del 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-conflicts en el script de backport. #9705 (Nikolai Kochetov)
  • Se corrige auto-label en 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-tidy en el script packager. #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 Distributed si la consulta incluye WHERE, PREWHERE y GLOBAL 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 MOVE o REPLACE PARTITION o, en casos excepcionales, después de DETACH o DROP 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 tabla MySQL en 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 SELECT cuando la columna consultada tiene una expresión DEFAULT que depende de otra columna que también tiene DEFAULT, no está presente en la consulta SELECT y no existe en disco. Corrige parcialmente #14531. #14845 (alesapin).
  • Corrige un error por el que una mutation ALTER UPDATE con una columna Nullable en la expresión de asignación y un valor constante (como UPDATE 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

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 exceeded para 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 BY de 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 parseDateTimeBestEffort cuando 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, sumDistinct y funciones de agregación similares aplicadas a tipos Float con valores NaN. 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 arrayElement cuando 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 escribe WHERE x IN tuple(1, 2, ...) en lugar de WHERE 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 DELETE cuando enable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin).
  • Mejor excepción en la función in cuando 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_log está habilitado. #12452 (alexey-milovidov).
  • Se corrigió un posible segfault en StorageMerge. Cierra #12054. #12401 (tavplubix).
  • Se corrigió TOTALS/ROLLUP/CUBE en las funciones de agregación con argumentos -State y Nullable. 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áusula ORDER BY. #12306 (Anton Popov).
  • Se evita la excepción “bad cast” cuando hay una expresión que filtra datos por columnas virtuales (como _table en las tablas Merge) o por columnas de “índice” en tablas del sistema, como al filtrar por el nombre de la base de datos al consultar system.tables, y esta expresión devuelve el tipo Nullable. Esto corrige #12166. #12305 (alexey-milovidov).
  • Mostrar un error tras fallar la carga de TrieDictionary. #12290 (Vitaly Baranov).
  • La función arrayFill funcionaba 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 columnas LowCardinality y 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 dictGet durante la eliminación de funciones inyectivas en GROUP BY. #12179 (Azat Khuzhin).
  • Se corrigió la lógica incorrecta en ALTER DELETE que 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 greatCircleDistance y geoDistance. Esto soluciona #12117. #12137 (alexey-milovidov).
  • 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ó el rendimiento de las consultas SELECT con UNION, 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 function en la función defaultValueOfArgumentType con el tipo LowCardinality. Corrige #11808. #12056 (Nikolai Kochetov).
  • Se corrigió el error Cannot capture column en funciones de orden superior con un argumento Tuple(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 topK devuelva 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 if con argumentos de tipo FixedString de distintos tamaños. Esto corrige #11362. #12021 (alexey-milovidov).
  • Una consulta en la que la función neighbor es 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 set en el formato Values. 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 con wait_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 TIES junto con la cláusula ORDER 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 Nullable en 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 FILL en 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 tareas MUTATE_PART en 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 count 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).
  • 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 Nullable en la condición prewhere. (Probablemente esté relacionado de algún modo con #11572). #11608 (Nikolai Kochetov).
  • Soluciona el error Block structure mismatch en consultas con muestreo que leen de la tabla Buffer. #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 column en consultas con PREWHERE column in (subquery) y ARRAY 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 es max_lifetime, y query_wait_timeout_milliseconds, que por defecto es de un minuto. La primera opción de configuración también es útil con la opción allow_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 methods que puede producirse si min_bytes_to_use_direct_io está 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 USING incorrecta. #11373. #11404 (Artem Zuikov).
  • Se corrigió geohashesInBox cuando 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 stuck en 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 VIEW con la configuración parallel_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 empty o notEmpty. 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_speed podía no funcionar o funcionar incorrectamente si la consulta estaba limitada por la configuración de max_network_bandwidth, max_execution_speed o priority. Se cambia el valor predeterminado de timeout_before_checking_execution_speed a un valor distinto de cero, porque de lo contrario la configuración min_execution_speed y max_execution_speed no 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 en clickhouse-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 QueryPipeline al leer desde VIEW con 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 column en funciones de orden superior con el argumento capturado Array(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ón HAVING (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

  • Se corrigieron varias pruebas de integración inestables. #11355 (alesapin).

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 BY es grande y la agregación se realiza sobre un único campo String. 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ó SIGSEGV en StringHashTable cuando esa clave no existe. #10870 (Azat Khuzhin).
  • Se corrigió un error en ReplicatedMergeTree que podía hacer que algunas consultas ALTER sobre OPTIMIZE quedaran 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 ODBC cuando no se solicita poner entre comillas los identificadores. Corrige #7984. #10821 (alexey-milovidov).
  • Se corrigió el reporte de UBSan y MSan en DateLUT. #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 en MATERIALIZED VIEW que no hayan generado ninguna excepción. Corrige #10241. #10757 (Nikolai Kochetov).
  • Se corrigieron los combinadores -OrNull y -OrDefault cuando se combinan con -State. #10741 (hcz).
  • Se corrigió un cierre inesperado en generateRandom con tipos anidados. Soluciona #10583. #10734 (Nikolai Kochetov).
  • Se corrigió una corrupción de datos en la columna clave LowCardinality(FixedString) de SummingMergeTree, 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 IN con 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=2 y cancel_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_efficient activado. 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 VIEW cuando dicha consulta contenía una tabla dependiente. #10603 (Nikolai Kochetov).
  • Se corrigió SELECT de la columna ALIAS cuyo 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 simpleLinearRegression para 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_merge está 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 DROP y OPTIMIZE en ReplicatedMergeTree. DROP podía dejar algunos residuos en la ruta de la réplica en ZooKeeper si había una consulta OPTIMIZE concurrente. #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 stuck en ConcatProcessor que 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_replicas en lugar de skip_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 IN y 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 expressions en 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 stuck con max_rows_to_group_by y group_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ó parseDateTimeBestEffort para 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.numbers o system.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 ALTER con partes compactas. #10130 (Anton Popov).
  • Se corrige la comprobación incorrecta de index_granularity_bytes al 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 JOIN y UNION 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 TABLE cuando 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ón distributed_aggregation_memory_efficient estaba 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 Distributed se 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 JOIN aparece con TOTALS. Corrige #9839. #9939 (Artem Zuikov).
  • Se corrigió un error por el que las consultas DDL ON CLUSTER se 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ó TRUNCATE en 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

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 1 en el cliente. Ocurría en consultas con JOIN cuando 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 COLUMN para 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_least en 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 consultas INSERT en una tabla Distributed con 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 long al enviar datos para tablas Distributed con 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 usado INSERT asíncronos en tablas Distributed. 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_log cada N bytes por encima del límite flexible de asignación #8765 (Ivan) #9472 (alexey-milovidov) La columna de system.trace_log se renombró de timer_type a trace_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-client no pueden recibir los logs que envía el servidor cuando la configuración send_logs_level está 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ón send_logs_level, no debería preocuparse. #8954 (alexey-milovidov)
  • Se elimina la función indexHint #9542 (alexey-milovidov)
  • Se eliminan las funciones findClusterIndex y findClusterValue. Esto corrige #8641. Si usabas estas funciones, envía un correo electrónico a clickhouse-feedback@yandex-team.com #9543 (alexey-milovidov)
  • Ahora ya no se permite crear ni agregar columnas con una subconsulta SELECT como 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 puede ADD una columna sin especificar el tipo, la expresión predeterminada de MODIFY no cambia el tipo de la columna y MODIFY del 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_processors está 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 Avro y AvroConfluent #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 PARTITION para ALTER 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_policy por 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, bitXor y bitNot para el tipo de dato FixedString(N). #9091 (Guillaume Tassery)
  • Se agregó la función bitCount. Esto corrige #8702. #8708 (alexey-milovidov) #8749 (ikopylov)
  • Se añade la table function generateRandom para 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 DEFAULT que depende de una columna con una expresión ALIAS por defecto. #9489 (alesapin)
  • Se permite especificar --limit por encima del tamaño de los datos de origen en clickhouse-obfuscator. Los datos se repetirán con una semilla aleatoria distinta. #9155 (alexey-milovidov)
  • Se añadió la función groupArraySample (similar a groupArray) 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_cache mediante 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_line se establece en 1 #8934 #8935 #8963 (Mikhail Korotov)
  • Se implementan más funciones de la API de H3: h3GetBaseCell, h3HexAreaM2, h3IndexesAreNeighbors, h3ToChildren, h3ToString y stringToH3 #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_shards para 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_time a la tabla system.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.zeros y system.zeros_mt, así como las funciones de tabla zeros() y zeros_mt(). Las tablas (y las funciones de tabla) contienen una sola columna con el nombre zero y el tipo UInt8. 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 ajustes min_bytes_for_wide_part y min_rows_for_wide_part. #8290 (Anton Popov)
  • Soporte de almacenamiento S3 para las tablas Log, TinyLog y StripeLog. #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 File o en la función de tabla file. 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 directorio data estaba 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 BY con la configuración distributed_aggregation_memory_efficient habilitada. 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_handle al iniciar las tablas ReplicatedMergeTree. #9552 (alexey-milovidov)
  • El token NOT no funcionó en la consulta SHOW 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ón connect_timeout_with_failover_secure_ms (100 ms de forma predeterminada), que es similar a connect_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=0 y is_done=0. #9022 (alesapin)
  • Se usa la nueva lógica de ANY JOIN con la configuración partial_merge_join. Ahora es posible hacer joins ANY|ALL|SEMI LEFT y ALL INNER con partial_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 cadena e. Corrige #8312 #8764 (Artem Zuikov)
  • Asegúrese de que FORMAT Null no envíe ningún dato al cliente. #8767 (Alexander Kuzmenkov)
  • Corrige un error que impedía que la marca de tiempo en LiveViewBlockInputStream se actualizara. LIVE VIEW es 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 match y extract cuando 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 Kafka mediante sondeo, ya que puede generar huecos en los datos. #8876 (filimonov)
  • Se corrigió joinGet con 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ón T64, que provocan una (des)compresión incorrecta en las versiones afectadas. #9033 (Artem Zuikov)
  • Se agregó la configuración enable_early_constant_folding y 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 almacenamientos File #9387 (tavplubix)
  • Se añadió una comprobación de la política de almacenamiento en ATTACH PARTITION FROM, REPLACE PARTITION y MOVE 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 DICTIONARIES mientras se modificaba, agregaba o eliminaba algún diccionario. #8801 (Vitaly Baranov)
  • En versiones anteriores, el motor de base de datos Memory usaba una ruta de datos vacía, por lo que las tablas se creaban en el directorio path (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 Log pueda(n) ser un alias #9231 (Ivan)
  • Corrige el orden de los rangos al leer de la tabla MergeTree en un hilo. Esto podía provocar excepciones de MergeTreeRangeReader o resultados de consulta erróneos. #9050 (Anton Popov)
  • Hacer que reinterpretAsFixedString devuelva FixedString en vez de String. #9052 (Andrew Onyshchuk)
  • Se corrigen casos extremadamente raros en los que el usuario podía recibir un mensaje de error incorrecto (Success en lugar de una descripción detallada del error). #9457 (alexey-milovidov)
  • No falla al usar el formato Template con 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áusula IF 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 avoided al 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 Kafka en 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 SETTING en la familia de motores de tabla MergeTree con 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 IN en GROUP BY #8868 (Amos Bird)
  • Se corrige un error en las mutaciones ALTER DELETE que provoca la corrupción del índice. Esto soluciona #9019 y #8982. Además, se corrigen condiciones de carrera extremadamente infrecuentes en las consultas ALTER de ReplicatedMergeTree. #9048 (alesapin)
  • Cuando la configuración compile_expressions está habilitada, puede producirse unexpected column en LLVMExecutableFunction al usar el tipo Nullable #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, aumente kafka_max_block_size en 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 bound en 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 interval sin backticks. Se corrigió un problema por el que una consulta no podía ejecutarse aunque el identificador interval estuviera 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 TIES cuando hay muchas filas iguales a la enésima fila. #9464 (tavplubix)
  • Se corrigieron las mutaciones de partes escritas con insert_quorum habilitado. #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 bound en algunos casos poco frecuentes en los que había una constante en la cláusula SELECT junto con las cláusulas ORDER BY y LIMIT. #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 INDEX en 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 de LIVE VIEW al desasociar LIVE VIEW. LIVE VIEW es una funcionalidad experimental. #8824 (tavplubix)
  • Se corrigió un posible fallo de segmentación en MergeTreeRangeReader al ejecutar PREWHERE. #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 intDiv con 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 Kafka creada 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/DROP sobre mutaciones para la familia de motores ReplicatedMergeTree*. Ahora ALTERS solo 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 WHERE contiene nombres no calificados. #9512 (Artem Zuikov)
  • Hacer que las consultas SHOW TABLES y SHOW DATABASES admitan expresiones WHERE y FROM/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_id en clickhouse-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_engines ahora proporciona información sobre la compatibilidad con funciones (como supports_ttl o supports_sort_order). #8830 (Max Akhmedov)
  • Se habilita system.metric_log de 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 VIEW temporal con CREATE LIVE VIEW name WITH TIMEOUT [42] ... en lugar de CREATE TEMPORARY LIVE VIEW ..., porque la sintaxis anterior no era consistente con CREATE 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-benchmark el 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 arraySlice para 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_code a la tabla system.query_log. #8770 (Mikhail Korotov)
  • Se habilitó el servidor de compatibilidad con MySQL en el puerto 9004 en 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 _path y _file a los motores HDFS y File, y a las funciones de tabla hdfs y file #8489 (Olga Khvostikova)
  • Se corrige el error Cannot find column al insertar en MATERIALIZED VIEW cuando 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-Timezone configurada con el mismo valor de zona horaria que devolvería SELECT 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 implementa ColumnConst::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ón materialize y 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 Null en 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ó readline por replxx para la edición interactiva de líneas en clickhouse-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-tidy en CI. Véase también #6044 #9566 (alexey-milovidov)
  • Ahora ClickHouse se enlaza en CI con lld, incluso para gcc. #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 sumMap y sumMapWithOverflow. 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-override para localizar y corregir todos los casos en los que debe usarse la palabra clave override. #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 once a loop. #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 libcxx y libcxxabi a 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-odbc a 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-dirs para 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 error y SSL 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 numbers por zeros en las pruebas de rendimiento en las que no se usa la columna number. 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 rdkafka y gsasl en 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 Nullable en la condición prewhere. Continuación de #11608. #11869 (Nikolai Kochetov).
  • No se permite arrayJoin dentro 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 FILL en 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 Nullable en 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-client cuando exception.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-server dará 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

  • Corrige el bloqueo excesivo de la estructura al ejecutar ALTER. #11790 (alesapin).

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 column en consultas con PREWHERE column in (subquery) y ARRAY 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 si min_bytes_to_use_direct_io está 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ó geohashesInBox para argumentos fuera del rango de latitud/longitud. #11403 (Vasily Nemkov).
  • Corrige un posible error Pipeline stuck en 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 VIEW con la configuración parallel_view_processing = 1 vuelva 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 empty o notEmpty. 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_speed podía no funcionar o hacerlo incorrectamente si la consulta estaba limitada por max_network_bandwidth, max_execution_speed o la configuración de priority. Se cambia el valor predeterminado de timeout_before_checking_execution_speed a un valor distinto de cero, porque de lo contrario la configuración min_execution_speed y max_execution_speed no 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 en clickhouse-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 column en funciones de orden superior con un argumento capturado Array(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 ReplicatedMergeTree que podía hacer que alguna consulta ALTER sobre OPTIMIZE quedara 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).
  • Corregido el comportamiento de parallel_view_processing. Ahora, si se produce una excepción, se completarán todas las inserciones en MATERIALIZED 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 join o una subconsulta con una condición where externa. Corrige #10674. #10698 (Nikolai Kochetov).
  • Se corrigen varios usos del operador IN con 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_efficient habilitado. Corrige #10655. #10664 (Nikolai Kochetov).
  • Se corrigió la optimización de predicados para consultas distribuidas (enable_optimize_predicate_expression=1) en consultas con cláusula HAVING (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 SELECT en 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) en SummingMergeTree, 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=2 y cancel_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 CACHE tambié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 VIEW en 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 simpleLinearRegression para 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 BY y LIMIT podía devolver resultados incompletos. Esto corrige #10226. #10427 (alexey-milovidov).
  • Prefiera fallback_to_stale_replicas en vez de skip_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 HashTable que provocaba un error de compilación al intentar leer HashMap desde el búfer. #10386 (palasonic1).
  • Se corrigió un posible error Pipeline stuck en ConcatProcessor que podía producirse en una consulta remota. #10381 (Nikolai Kochetov).
  • Se corrigió el error Pipeline stuck relacionado con max_rows_to_group_by y group_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 BY tanto 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

  • Se añadieron certificados de CA a la imagen de Docker de clickhouse-server. #10476 (filimonov).

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 ejecutar ALTER UPDATE/DELETE en tablas con ENGINE = Replicated*. La comprobación de funciones no deterministas ahora procesa correctamente las expresiones lambda. #10237 (Alexander Kazakov).
  • Se corrigió parseDateTimeBestEffort para 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 JOIN que pueden entrar en conflicto con los nombres de las constantes fuera de JOIN. #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.numbers o system.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 INSERT en una tabla con motor Distributed. #10135 (Azat Khuzhin).
  • Se corrige SIGSEGV al hacer INSERT en una tabla Distributed cuando su estructura difiere de la de las tablas subyacentes. #10105 (Azat Khuzhin).
  • Evita la posible pérdida de filas en consultas con JOIN y UNION 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ón distributed_aggregation_memory_efficient y 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 BY con 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' cuando JOIN aparece con TOTALS. Corrige #9839. #9939 (Artem Zuikov).
  • Se corrigió un error por el que las consultas DDL con ON CLUSTER se quedaban bloqueadas al iniciar el servidor. #9927 (Gagan Arneja).
  • Se corrigió TRUNCATE para 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 DeleteOnDestroy en ATTACH 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

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 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 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 consultas INSERT a 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 1 en el cliente. Ocurría en consultas con JOIN si 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 SIGSEGV con optimize_skip_unused_shards cuando 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 BY de 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 en ParallelAggregatingBlockInputStream::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 sumKahan y sumWithOverflow. 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 CLUSTER en tablas Distributed con 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 column e Invalid number of rows in Chunk en MergeTreeRangeReader. Podían producirse al ejecutar PREWHERE en 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 como time + 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 TIES cuando 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 SETTING en la familia de motores de tabla MergeTree de 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 match y extract cuando 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

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 MergeTreeRangeReader al ejecutar PREWHERE. Soluciona #9064. #9106 (CurtizJ)
  • Se corrigió reinterpretAsFixedString para que devolviera FixedString en lugar de String. #9052 (oandrew)
  • Corrige joinGet con 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 CROSS como INNER JOIN si en la cláusula WHERE hay 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 join por coma con IN() dentro. Corrige #7314. #9251 (4ertus2)
  • Mejora la lógica de las consultas ALTER MODIFY/ADD. Ahora no se puede ADD una columna sin tipo, la expresión por defecto de MODIFY no cambia el tipo de la columna y MODIFY del 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 UInt64 que no caben en Int64 en las funciones relacionadas con JSON. Se actualizó SIMDJSON a 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 rama master del 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 desde StorageFile. #9387 (tabplubix)
  • Se evita la pérdida de datos en Kafka en 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 Kafka creada con parámetros incorrectos. Corrige #9494. Incorpora #9507. #9513 (filimonov)

Nueva funcionalidad

  • Se añadió la opción deduplicate_blocks_in_dependent_materialized_views para 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_distribution pasa 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 greatCircleDistance a Float32 porque ahora el resultado del cálculo es Float32. #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 escribir a\tb o a\<tab>b y, respectivamente, a%5Ctb o a%5C%09b en 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_zookeeper pasa a estar habilitada de forma predeterminada para ReplicatedMergeTree. 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_conversion y allow_experimental_multiple_joins_emulation ahora están obsoletas y no hacen nada. #7974 (alexey-milovidov)
  • Se añade una nueva lógica ANY JOIN para StorageJoin, coherente con la operación JOIN. Para actualizar sin cambios de comportamiento, debes añadir SETTINGS any_join_distinct_right_table_keys = 1 a 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 DICTIONARY en modo ON CLUSTER. #8288 (Guillaume Tassery)
  • Se añadió la posibilidad de ejecutar consultas CREATE DICTIONARY en modo ON CLUSTER. #8163 (alesapin)
  • Ahora, el perfil del usuario en users.xml puede 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 DateTime64 con 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, TSV y JSONEachRow al 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. Ahora t1 ANY LEFT JOIN t2 es igual a t2 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 de ANY INNER JOIN. #7665 (Artem Zuikov)
  • Se incorporan SEMI y ANTI JOIN. El comportamiento anterior de ANY INNER JOIN ahora está disponible como SEMI LEFT JOIN. #7665 (Artem Zuikov)
  • Se añadió el formato Distributed para el motor File y la función de tabla file, que permite leer archivos .bin generados por inserciones asíncronas en la tabla Distributed. #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> en config.xml para restringir los hosts permitidos para los motores de tabla remotos y las funciones de tabla URL, 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 JSONCompactEachRow y JSONCompactEachRowWithNamesAndTypes de 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 archivos gzip en 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 cadena JSON. #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 TTL configuradas 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, CSV y JSONEachRow. #7894 (Nikita Mikhaylov)
  • Se añaden varias funciones Geo de la biblioteca H3: h3GetResolution, h3EdgeAngle, h3EdgeLength, h3IsValid y h3kRing. #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 tipo SimpleAggregationFunction. #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 EXPRESSION para 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 Tuple por defecto desde JSONEachRow. Esto corrige #5653. #8606 (tavplubix)
  • Ahora se lanzará una excepción si se usa WITH TIES junto con LIMIT BY. También se añade la posibilidad de usar TOP con LIMIT 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 consulta ALTER, 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 argMin y argMax con argumentos de cadena largos, cuando el resultado se usa en la función runningAccumulate. 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 NULL como uno de sus argumentos y devolver un valor distinto de NULL. #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 IN dentro de la cláusula WHERE cuando 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 en users.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 formato JSON o XML con valores del tipo de dato String (que requieren validación UTF-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 StorageDistributedDirectoryMonitor detectada en CI. Esto corrige #8364. #8383 (Nikolai Kochetov)
  • Ahora las fusiones en segundo plano de la familia de motores de tabla *MergeTree conservan con mayor precisión el orden de los volúmenes de la política de almacenamiento. #8549 (Vladimir Chebotarev)
  • Ahora, el motor de tabla Kafka funciona correctamente con el formato Native. 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 tabla Kafka. #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 Parquet que contienen columnas de tipo list. #8334 (maxulan)
  • Se corrige el error Not found column en consultas distribuidas con una condición PREWHERE que depende de la clave de muestreo cuando max_parallel_replicas > 1. #7913 (Nikolai Kochetov)
  • Corrige el error Not found column cuando la consulta usaba PREWHERE que 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 rand y randConstant cuando el argumento es Nullable. Ahora las funciones siempre devuelven UInt32 y nunca Nullable(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() para SummingMergeTree cuando se usa la cláusula FINAL. #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 JOIN con tablas con motor Join. 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 StorageFile y StorageHDFS. Corrige #7650. #7981 (alesapin)
  • Se corrige un error en la consulta ALTER ... MODIFY ... CODEC cuando 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 LEFT o FULL JOIN con un motor Join y la configuración join_use_nulls no admitida. #8479 (Artem Zuikov)
  • Ahora, la consulta DROP DICTIONARY IF EXISTS db.dict no genera una excepción si db no existe. #8185 (Vitaly Baranov)
  • Corregidos posibles bloqueos en funciones de tabla (file, mysql, remote) causados por el uso de una referencia a un objeto IStorage eliminado. 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 *MergeTree después de moverlas a otro disco y reiniciar el servidor. #7810 (Vladimir Chebotarev)
  • Se corrige un cierre inesperado en FULL JOIN con LowCardinality en la clave de JOIN. #8252 (Artem Zuikov)
  • Se prohíbe usar el mismo nombre de columna más de una vez en una consulta insert, como INSERT 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 column en columnas materializadas y con alias. #8210 (Artem Zuikov)
  • Se corrigió un fallo grave que se producía cuando se usaba una consulta EXISTS sin el calificador TABLE o DICTIONARY, 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 columna SimpleAggregateFunction. #7790 (Boris Granveaud)
  • Se corrigió un error por el que un usuario con allow_databases vacío tenía acceso a todas las bases de datos (y lo mismo para allow_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 BY al 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 MOVE se 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 UNION con un número distinto de columnas. Corrige #7279. #7929 (Nikolai Kochetov)
  • Se corrigió el tamaño de la subcadena resultante para la función substr con tamaño negativo. #8589 (Nikolai Kochetov)
  • Ahora, el servidor no ejecuta una mutación de parte en MergeTree si 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 TABLE no esperará a que las réplicas desconectadas realicen la operación. #8314 (javi santana)
  • Se corrigió el parser de ALTER TTL para las tablas Replicated*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 bitmapAnd al intersectar un bitmap agregado y un bitmap escalar. #8082 (Yue Huang)
  • Se ajustó la definición de ZXid según la Guía del programador de ZooKeeper, lo que corrige un error en clickhouse-cluster-copier. #8088 (Ding Xiang Fei)
  • La función de tabla odbc ahora respeta la configuración external_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 DICTIONARY vuelve a cargar por completo un diccionario, ignorando update_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 formato Values. 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 TABLE para tablas *MergeTree sin clave. Soluciona #7543. #7979 (alesapin)
  • Se corrigió la conversión de Float64 al 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 file al 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_log está habilitado. #7838 (filimonov)
  • Se añade compatibilidad con tipos distintos de Date en el Diccionario externo RangeHashed creado 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-file de otro clickhouse-server que 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 arrayReduce que podía provocar “double free” y otro error en el combinador de funciones de agregación Resample que podía provocar una fuga de memoria. Se añadió la función de agregación aggThrow. 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 consultas ALTER UPDATE/DELETE. #8237 (alesapin)
  • Permite establecer user_files_path como relativa en config.xml (de forma similar a format_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 exists al usar FINAL y SAMPLE juntos, por ejemplo, select count() from table final sample 1/2. Corrige #5186. #7907 (Nikolai Kochetov)
  • Ahora, el primer argumento de la función joinGet puede ser un identificador de tabla. #7707 (Amos Bird)
  • Se permite usar MaterializedView con subconsultas sobre tablas de Kafka. #8197 (filimonov)
  • Ahora los movimientos en segundo plano entre discos se ejecutan en un pool de hilos separado. #7670 (Vladimir Chebotarev)
  • SYSTEM RELOAD DICTIONARY ahora 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 addr2line cuando 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 cityHash ahora puede trabajar con los tipos Decimal y UUID. 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 TABLE y ATTACH TABLE para el motor de base de datos MySQL. #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 MergeTree en 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-client ahora solo habilita bracketed-paste cuando multiquery está activado y multiline desactivado. Esto corrige #7757. #7761 (Amos Bird)
  • Admite Array(Decimal) en la función if. #7721 (Artem Zuikov)
  • Compatibilidad con Decimals en las funciones arrayDifference, arrayCumSum y arrayCumSumNegative. #7724 (Artem Zuikov)
  • Se añadió la columna lifetime a la tabla system.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 SDK para las interacciones con S3, 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 Date o DateTime en las expresiones TTL. #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_drop sin 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 Kafka en 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 BY para los motores de almacenamiento Merge, Buffer y Materilized View con tablas MergeTree subyacentes. #8130 (Anton Popov)
  • Ahora usamos siempre la implementación POSIX de getrandom para 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.mutations una 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_lifetime ahora está obsoleta y no tiene ningún efecto. En versiones anteriores, la caché de marcas podía crecer en memoria por encima de mark_cache_size para alojar datos durante mark_cache_min_lifetime segundos. 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 aumentar mark_cache_size. #8484 (alexey-milovidov)
  • Preparación para usar tid en 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-pointer de forma global para ahorrar un registro más. #8097 (Amos Bird)
  • Accelerar la función greatCircleDistance y 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, argMin y argMax para el tipo de datos DateTime64. #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 BY y la fusión para claves de una sola columna. #8335 (alexey-milovidov)
  • Mejora en la implementación de los combinadores arrayReduce, -Array y -State. #7710 (Amos Bird)
  • Ahora PREWHERE debería estar optimizado para ser, como mínimo, tan eficiente como WHERE. #7769 (Amos Bird)
  • Se mejora la forma de manejar los números negativos en round y roundBankers. #8229 (hcz)
  • Se mejoró el rendimiento de descodificación de los códecs DoubleDelta y Gorilla en 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 a greatCircleDistance, 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 min y max más rápidas para el tipo de dato Decimal. #8144 (Artem Zuikov)
  • Vectorización del procesamiento de arrayReduce. #7608 (Amos Bird)
  • Las cadenas de if ahora se optimizan en forma de multiIf. #8355 (kamalov-ruslan)
  • Soluciona la regresión de rendimiento del motor de tabla Kafka introducida en la versión 19.15. Esto corrige #7261. #7935 (filimonov)
  • Se eliminó la generación de código “pie” que gcc de 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 Values con expresiones (input_format_values_deduce_templates_of_expressions=1). #8231 (tavplubix)

mejora de compilación/pruebas/empaquetado

  • Correcciones en la compilación para ARM y en modo mínimo. #8304 (proller)
  • Se añadió el volcado del archivo de cobertura para clickhouse-server cuando 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 curl sea completamente silenciosa. #8232 #8203 (Pavel Kovalenko)
  • Se han corregido algunas advertencias de MemorySanitizer. #8235 (Alexander Kuzmenkov)
  • Usa las macros add_warning y no_warning en CMakeLists.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 libc a contrib. Esto permite que las compilaciones sean más consistentes en distintos sistemas (solo para x86_64-linux-gnu). #5773 (alexey-milovidov)
  • Se eliminó -fPIC de algunas bibliotecas. #8464 (alexey-milovidov)
  • Limpieza de CMakeLists.txt de 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 AArch64 incluso si MADV_FREE no está disponible. Esto corrige #8027. #8243 (Amos Bird)
  • Actualización de zlib-ng para 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 Field para 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 JSON en la salida de la prueba de rendimiento. #8497 (Nikolai Kochetov)
  • Ahora se muestra la traza de pila para std::exception y Poco::Exception. En versiones anteriores, solo estaba disponible para DB::Exception. Esto mejora la capacidad de diagnóstico. #8501 (alexey-milovidov)
  • Adaptación de clock_gettime y clock_nanosleep para versiones más recientes de glibc. #8054 (Amos Bird)
  • Habilitar part_log en 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 .tgz y 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_ERROR se 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 lz4 para 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 gcc y g++ a la versión 9 en build/docker/build.sh #7766 (TLightSky)
  • Agregar una prueba de rendimiento para comprobar que PREWHERE rinde peor que WHERE. #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ó libressl por openssl. 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_poly1305 de 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-server en clickhouse-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_query en processors. #8272 (Nikolai Kochetov)
  • Se eliminó la compatibilidad con tcmalloc para simplificar CMakeLists.txt. #8310 (alexey-milovidov)
  • Las compilaciones de la versión con gcc ahora usan libc++ en lugar de libstdc++. 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 Float64 y UInt64. #8349 (Vasily Nemkov)
  • termcap está claramente en desuso y provocaba varios problemas (p. ej., falta la capacidad “up” y se muestra ^J en lugar de varias líneas). Se recomienda usar terminfo o ncurses integrado. #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 KeyCondition al 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.xml registre 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-X con la versión correspondiente a clang-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, porque mmap/munmap es 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 funciones currentQuota, currentQuotaKey y la nueva sintaxis SQL CREATE 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ón currentRowPolicies() y la nueva sintaxis SQL CREATE 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)
Última modificación el 10 de junio de 2026