Versión de ClickHouse 19.17
Versión de ClickHouse 19.17.6.36, 2019-12-27
Corrección de errores
- Se corrigió un posible desbordamiento de búfer en decompress. Un usuario malicioso puede enviar datos comprimidos manipulados que podrían provocar una lectura fuera del búfer. Este problema fue detectado por Eldar Zaitov, del equipo de seguridad de la información de Yandex. #8404 (alexey-milovidov)
- Se corrigió un posible fallo del servidor (
std::terminate) cuando el servidor no puede enviar o escribir datos en formato JSON o XML con valores del tipo de datos String (que requieren validación UTF-8), al comprimir los datos del resultado con el algoritmo Brotli o en algunos otros casos poco frecuentes. #8384 (alexey-milovidov) - Se corrigieron los diccionarios con origen en una
VIEWde ClickHouse; ahora, la lectura de esos diccionarios no provoca el errorThere is no query. #8351 (Nikolai Kochetov) - Se corrigió la comprobación de si se permite un host de cliente según el host_regexp especificado en users.xml. #8241, #8342 (Vitaly Baranov)
RENAME TABLEpara una tabla distribuida ahora renombra la carpeta que contiene los datos insertados antes de enviarlos a los segmentos. Esto corrige un problema con cambios de nombre sucesivostableA->tableB,tableC->tableA. #8306 (tavplubix)- Los diccionarios externos
range_hashedcreados mediante consultas DDL ahora permiten rangos de cualquier tipo numérico. #8275 (alesapin) - Se corrigió la función de tabla en
INSERT INTO table SELECT ... FROM mysql(...). #8234 (tavplubix) - Se corrigió un segfault en
INSERT INTO TABLE FUNCTION file()al insertar en un archivo que no existe. Ahora, en ese caso, se crea el archivo y luego se procesa la inserción. #8177 (Olga Khvostikova) - Se corrigió el error de bitmapAnd al hacer la intersección entre un bitmap agregado y uno escalar. #8082 (Yue Huang)
- Se corrigió un segfault cuando se usaba una consulta
EXISTSsin el calificadorTABLEoDICTIONARY, por ejemploEXISTS t. #8213 (alexey-milovidov) - Se corrigió el tipo de retorno de las funciones
randyrandConstanten caso de que el argumento sea Nullable. Ahora las funciones siempre devuelvenUInt32y nuncaNullable(UInt32). #8204 (Nikolai Kochetov) - Se corrigió
DROP DICTIONARY IF EXISTS db.dict; ahora ya no lanza una excepción sidbno existe. #8185 (Vitaly Baranov) - Si una tabla no se eliminó por completo debido a una caída del servidor, el servidor intentará restaurarla y cargarla #8176 (tavplubix)
- Se corrigió una consulta de recuento trivial para una tabla distribuida cuando hay más de dos tablas locales de segmento. #8164 (小路)
- Se corrigió un error que provocaba una condición de carrera en DB::BlockStreamProfileInfo::calculateRowsBeforeLimit() #8143 (Alexander Kazakov)
- Se corrigió
ALTER table MOVE part, que, si se ejecutaba inmediatamente después de fusionar la parte especificada, podía provocar que se moviera la parte en la que esta se había fusionado. Ahora mueve correctamente la parte especificada. #8104 (Vladimir Chebotarev) - Ahora es posible especificar como cadenas las expresiones para diccionarios. Esto resulta útil para calcular atributos al extraer datos de fuentes que no son de ClickHouse, ya que permite usar una sintaxis distinta de la de ClickHouse en esas expresiones. #8098 (alesapin)
- Se corrigió una condición de carrera muy rara en
clickhouse-copierdebido a un desbordamiento en ZXid. #8088 (Ding Xiang Fei) - Se corrigió el error por el que, después de que la consulta fallara (debido, por ejemplo, a “Too many simultaneous queries”), no se leía la información de las tablas externas, y la
siguiente solicitud interpretaba esta información como el inicio de la siguiente consulta, lo que provocaba un error como
Unknown packet from client. #8084 (Azat Khuzhin) - Evitar una desreferenciación nula después de “Unknown packet X from server” #8071 (Azat Khuzhin)
- Se restablece la compatibilidad con todos los locales de ICU, se añade la posibilidad de aplicar cotejamientos a expresiones constantes y se añade el nombre del idioma a la tabla system.collations. #8051 (alesapin)
- Se ha limitado el número de flujos de lectura desde
StorageFileyStorageHDFSpara evitar superar el límite de memoria. #7981 (alesapin) - Se corrigió la consulta
CHECK TABLEde tablas*MergeTreesin clave. #7979 (alesapin) - Se eliminó el número de mutación del nombre de una parte cuando no había mutaciones. Esto mejoró la compatibilidad con versiones anteriores. #8250 (alesapin)
- Se corrigió el error por el que se omitían mutaciones en algunas partes adjuntas porque su data_version era mayor que la versión de mutación de la tabla. #7812 (Zhichang Yu)
- Permite iniciar el servidor con copias redundantes de partes después de moverlas a otro dispositivo. #7810 (Vladimir Chebotarev)
- Se corrigió el error “Sizes of columns does not match” que podía aparecer al usar columnas de funciones de agregación. #7790 (Boris Granveaud)
- Ahora se lanzará una excepción si se usa WITH TIES junto con LIMIT BY. Ahora también es posible usar TOP con LIMIT BY. #7637 (Nikita Mikhaylov)
- Se corrige la recarga del diccionario si tiene
invalidate_query, que detenía las actualizaciones y provocaba alguna excepción en intentos anteriores de actualización. #8029 (alesapin)
Versión de ClickHouse 19.17.4.11, 2019-11-22
Cambio incompatible con versiones anteriores
- Uso de una columna en lugar de AST para almacenar los resultados de subconsultas escalares y mejorar el rendimiento. La configuración
enable_scalar_subquery_optimizationse añadió en la versión 19.17 y estaba habilitada de forma predeterminada. Esto provoca errores como este durante la actualización a 19.17.2 o 19.17.3 desde versiones anteriores. Esta configuración se deshabilitó de forma predeterminada en 19.17.4 para permitir la actualización desde 19.16 y versiones anteriores sin errores. #7392 (Amos Bird)
Nueva funcionalidad
- Se añadió la posibilidad de crear diccionarios con consultas DDL. #7360 (alesapin)
- Se hizo que el tipo de índice
bloom_filteradmitieraLowCardinalityyNullable#7363 #7561 (Nikolai Kochetov) - Se añadió la función
isValidJSONpara comprobar que la cadena proporcionada sea un JSON válido. #5910 #7293 (Vdimir) - Se implementó la función
arrayCompact#7328 (Memo) - Se creó la función
hexpara números Decimal. Funciona comohex(reinterpretAsString()), pero no elimina los últimos bytes en cero. #7355 (Mikhail Korotov) - Se añadieron las funciones
arrayFillyarrayReverseFill, que reemplazan elementos por otros situados antes o después de ellos en el array. #7380 (hcz) - Se añadió compatibilidad con
CRC32IEEE()/CRC64()#7480 (Azat Khuzhin) - Se implementó la función
char, similar a la de mysql #7486 (sundyli) - Se añadió la función
bitmapTransform. Transforma un array de valores de un bitmap en otro array de valores; el resultado es un bitmap nuevo #7598 (Zhichang Yu) - Se implementó la función
javaHashUTF16LE()#7651 (achimbab) - Se añadió la columna virtual
_shard_numpara el motor Distributed #7624 (Azat Khuzhin)
Funcionalidad experimental
- Compatibilidad con procesadores (nuevo pipeline de ejecución de consultas) en
MergeTree. #7181 (Nikolai Kochetov)
Corrección de errores
- Se corrigió el análisis incorrecto de números en coma flotante en
Values#7817 #7870 (tavplubix) - Corregido un interbloqueo poco frecuente que puede producirse cuando trace_log está habilitado. #7838 (filimonov)
- Evitar la duplicación de mensajes al producir cuando la tabla Kafka tiene alguna MV que selecciona de ella #7265 (Ivan)
- Soporte para
Array(LowCardinality(Nullable(String)))enIN. Resuelve #7364 #7366 (achimbab) - Se añade el manejo de
SQL_TINYINTySQL_BIGINT, y se corrige el manejo de los tiposSQL_FLOATdel origen de datos en ODBC Bridge. #7491 (Denis Glazachev) - Se corrige la agregación (
avgy cuantiles) en columnas decimales vacías #7431 (Andrey Konyaev) - Se corrigió
INSERTen Distributed con columnasMATERIALIZED#7377 (Azat Khuzhin) - Permitir que
MOVE PARTITIONfuncione si algunas partes de la partición ya están en el disco o volumen de destino #7434 (Vladimir Chebotarev) - Se corrigió un error que impedía crear hardlinks durante las mutaciones en
ReplicatedMergeTreeen configuraciones con varios discos. #7558 (Vladimir Chebotarev) - Se corrigió un error relacionado con una mutación en MergeTree cuando la parte completa permanece sin cambios y el espacio más adecuado se encuentra en otro disco #7602 (Vladimir Chebotarev)
- Se corrigió un error por el que no se leía
keep_free_space_ratiode la configuración de discos #7645 (Vladimir Chebotarev) - Se corrige un error cuando la tabla contiene únicamente columnas
Tupleo columnas con rutas complejas. Soluciona 7541. #7545 (alesapin) - No tener en cuenta la memoria del motor Buffer en el límite de max_memory_usage #7552 (Azat Khuzhin)
- Se corrige el uso de la marca final en las tablas
MergeTreeordenadas portuple(). En casos poco frecuentes, esto podía provocar el errorCan't adjust last granuleal ejecutar unSELECT. #7639 (Anton Popov) - Corrige un error en las mutaciones que tienen un predicado con acciones que requieren contexto (por ejemplo, funciones de JSON), lo que puede provocar fallos o excepciones extrañas. #7664 (alesapin)
- Se corrige la inconsistencia en el escape de los nombres de la base de datos y de la tabla en los directorios
data/yshadow/#7575 (Alexander Burmak) - Se admiten claves duplicadas en los JOINs RIGHT|FULL, p. ej.
ON t.x = u.x AND t.x = u.y. Se corrige un fallo en este caso. #7586 (Artem Zuikov) - Se corrigió
Not found column <expression> in blockal hacer JOIN sobre una expresión con RIGHT o FULL JOIN. #7641 (Artem Zuikov) - Otro intento de corregir el bucle infinito en el formato
PrettySpace#7591 (Olga Khvostikova) - Se corrigió un error en la función
concatcuando todos los argumentos eranFixedStringdel mismo tamaño. #7635 (alesapin) - Se corrigió una excepción al usar 1 argumento al definir los almacenamientos S3, URL y HDFS. #7618 (Vladimir Chebotarev)
- Se corrigió el alcance de InterpreterSelectQuery para vistas con consulta #7601 (Azat Khuzhin)
Mejora
- Columnas
Nullablereconocidas y valores NULL gestionados correctamente por ODBC-bridge #7402 (Vasily Nemkov) - Escritura atómica del batch actual para el envío distribuido #7600 (Azat Khuzhin)
- Lanzar una excepción si no se puede detectar la tabla a partir del nombre de la columna en la consulta. #7358 (Artem Zuikov)
- Añadir la configuración
merge_max_block_sizeaMergeTreeSettings#7412 (Artem Zuikov) - Las consultas con
HAVINGy sinGROUP BYasumen un GROUP BY por constante. Por lo tanto,SELECT 1 HAVING 1ahora devuelve un resultado. #7496 (Amos Bird) - Compatibilidad con el análisis de
(X,)como tupla, al estilo de Python. #7501, #7562 (Amos Bird) - Hacer que el comportamiento de la función
rangesea casi igual al de Python. #7518 (sundyli) - Añadir las columnas
constraintsa la tablasystem.settings#7553 (Vitaly Baranov) - Mejor formato Null para el TCP handler, de modo que sea posible usar
select ignore(<expression>) from table format Nullpara medir el rendimiento con clickhouse-client #7606 (Amos Bird) - Las consultas como
CREATE TABLE ... AS (SELECT (1, 2))se analizan correctamente #7542 (hcz)
Mejora del rendimiento
- Se mejora el rendimiento de la agregación con claves de cadena cortas. #6243 (Alexander Kuzmenkov, Amos Bird)
- Se realiza otra pasada de análisis de sintaxis/expresiones para obtener posibles optimizaciones tras plegar los predicados constantes. #7497 (Amos Bird)
- Se utiliza la metainformación de almacenamiento para evaluar el
SELECT count() FROM table;trivial. #7510 (Amos Bird, alexey-milovidov) - Se vectoriza el procesamiento de
arrayReduce, de forma similar aaddBatchde Aggregator. #7608 (Amos Bird) - Mejoras menores en el rendimiento del consumo de
Kafka#7475 (Ivan)
Mejora de compilación/pruebas/empaquetado
- Se añadió compatibilidad con la compilación cruzada para la arquitectura de CPU AARCH64. Se refactorizó el script de empaquetado. #7370 #7539 (Ivan)
- Se desempaquetaron las cadenas de herramientas darwin-x86_64 y linux-aarch64 en el volumen de Docker montado al compilar paquetes #7534 (Ivan)
- Se actualizó la imagen de Docker del empaquetador de binarios #7474 (Ivan)
- Se corrigieron errores de compilación en macOS Catalina #7585 (Ernest Poletaev)
- Se realizaron algunas refactorizaciones en la lógica de análisis de consultas: se dividió una clase compleja en varias más simples. #7454 (Artem Zuikov)
- Se corrigió la compilación sin submódulos #7295 (proller)
- Se mejoró
add_globsen los archivos de CMake #7418 (Amos Bird) - Se eliminaron las rutas codificadas de forma fija del objetivo
unwind#7460 (Konstantin Podshumok) - Se permitió usar el formato mysql sin ssl #7524 (proller)
Otros
- Se añadió una gramática ANTLR4 para el dialecto SQL de ClickHouse #7595 #7596 (alexey-milovidov)
Versión 19.16 de ClickHouse
Versión de ClickHouse 19.16.14.65, 2020-03-25
- Se corrigió un error en los cálculos por lotes de operaciones lógicas ternarias con múltiples argumentos (más de 10). #8718 (Alexander Kazakov) Esta corrección se retroportó a la versión 19.16 a petición especial de Altinity.
Versión de ClickHouse 19.16.14.65, 2020-03-05
- Se corrige la incompatibilidad de las subconsultas distribuidas con versiones anteriores de CH. Corrige #7851 (tabplubix)
- Al ejecutar la consulta
CREATE, se simplifican las expresiones constantes en los argumentos del motor de almacenamiento. El nombre vacío de la base de datos se sustituye por la base de datos actual. Corrige #6508, #3492. También se corrige la comprobación de la dirección local enClickHouseDictionarySource. #9262 (tabplubix) - Ahora, las fusiones en segundo plano de la familia de motores de tabla
*MergeTreeconservan con mayor precisión el orden de los volúmenes de la política de almacenamiento. #8549 (Vladimir Chebotarev) - Se evita la pérdida de datos en
Kafkaen casos poco frecuentes cuando se produce una excepción después de leer el sufijo, pero antes del commit. Corrige #9378. Relacionado con: #7175 #9507 (filimonov) - Se corrige un error que provocaba la finalización del servidor al intentar usar / eliminar una tabla
Kafkacreada con parámetros incorrectos. Corrige #9494. Incorpora #9507. #9513 (filimonov) - Se permite usar
MaterializedViewcon subconsultas sobre tablasKafka. #8197 (filimonov)
Nueva funcionalidad
- Se añadió la opción
deduplicate_blocks_in_dependent_materialized_viewspara controlar el comportamiento de las inserciones idempotentes en tablas con vistas materializadas. Esta nueva funcionalidad se incorporó a la versión de corrección de errores a petición especial de Altinity. #9070 (urykhy)
Versión de ClickHouse 19.16.2.2, 2019-10-30
Cambio incompatible con versiones anteriores
- Se añadió la validación de aridad que faltaba para count/counIf. #7095 #7298 (Vdimir)
- Se eliminó la configuración heredada
asterisk_left_columns_only(estaba deshabilitada de forma predeterminada). #7335 (Artem Zuikov) - Las cadenas de formato para el formato de datos Template ahora se especifican en archivos. #7118 (tavplubix)
Nueva funcionalidad
- Se introduce uniqCombined64() para calcular una cardinalidad superior a UINT_MAX. #7213, #7222 (Azat Khuzhin)
- Se admiten índices Bloom filter en columnas Array. #6984 (achimbab)
- Se añade una función
getMacro(name)que devuelve un String con el valor del<macros>correspondiente de la configuración del servidor. #7240 (alexey-milovidov) - Se añaden dos opciones de configuración para un diccionario basado en una fuente HTTP:
credentialsyhttp-headers. #7092 (Guillaume Tassery) - Se añade un nuevo ProfileEvent
Mergeque cuenta el número de fusiones en segundo plano iniciadas. #7093 (Mikhail Korotov) - Se añade la función fullHostName, que devuelve un nombre de dominio completamente cualificado. #7263 #7291 (sundyli)
- Se añaden las funciones
arraySplityarrayReverseSplit, que dividen un array según condiciones de “corte”. Son útiles para manejar secuencias temporales. #7294 (hcz) - Se añaden nuevas funciones que devuelven el Array con todos los índices coincidentes en la familia de funciones multiMatch. #7299 (Danila Kutenin)
- Se añade un nuevo motor de base de datos
Lazy, optimizado para almacenar una gran cantidad de tablas -Log pequeñas. #7171 (Nikita Vasilev) - Se añaden las funciones de agregación groupBitmapAnd, -Or y -Xor para columnas bitmap. #7109 (Zhichang Yu)
- Se añaden los combinadores de funciones de agregación -OrNull y -OrDefault, que devuelven null o valores predeterminados cuando no hay nada que agregar. #7331 (hcz)
- Se introduce el formato de datos CustomSeparated, que admite reglas personalizadas de escape y delimitadores. #7118 (tavplubix)
- Se admite Redis como fuente de diccionario externo. #4361 #6962 (comunodi, Anton Popov)
Corrección de errores
- Se corrige un resultado de consulta incorrecto si incluye una cláusula
WHERE IN (SELECT ...)y se usaoptimize_read_in_order. #7371 (Anton Popov) - Se deshabilitó el plugin de autenticación de MariaDB, que depende de archivos externos al proyecto. #7140 (Yuriy Baranov)
- Se corrige la excepción
Cannot convert column ... because it is constant but values of constants are different in source and result, que en raras ocasiones podía producirse cuando se usan las funcionesnow(),today(),yesterday(),randConstant(). #7156 (Nikolai Kochetov) - Se corrigió el problema de usar el tiempo de espera de keep alive de HTTP en lugar del de TCP. #7351 (Vasily Nemkov)
- Se corrigió un fallo de segmentación en groupBitmapOr (problema #7109). #7289 (Zhichang Yu)
- En las vistas materializadas, el commit de Kafka se realiza después de que se hayan escrito todos los datos. #7175 (Ivan)
- Se corrigió un valor
duration_msincorrecto en la tablasystem.part_log. Era diez veces mayor de lo debido. #7172 (Vladimir Chebotarev) - Corrección rápida para resolver un bloqueo en la tabla LIVE VIEW y volver a habilitar todas las pruebas de LIVE VIEW. #7201 (vzakaznikov)
- Serializar correctamente los valores NULL en los índices mín./máx. de las partes de MergeTree. #7234 (Alexander Kuzmenkov)
- No incluir columnas virtuales en los metadatos .sql cuando la tabla se crea como
CREATE TABLE AS. #7183 (Ivan) - Se corrige un fallo de segmentación en la consulta
ATTACH PART. #7185 (alesapin) - Se corrige un resultado incorrecto en algunas consultas provocado por la optimización de subconsultas IN vacías y de INNER/RIGHT JOIN vacíos. #7284 (Nikolai Kochetov)
- Corrección de un error de AddressSanitizer en el método getHeader() de LIVE VIEW. #7271 (vzakaznikov)
Mejora
- Añade un mensaje cuando se produce una espera de queue_wait_max_ms. #7390 (Azat Khuzhin)
- La configuración
s3_min_upload_part_sizepasó a ser de nivel de tabla. #7059 (Vladimir Chebotarev) - Comprobación de TTL en StorageFactory. #7304 (sundyli)
- Compacta los bloques del lado izquierdo en partial merge join (optimización). #7122 (Artem Zuikov)
- No permitir funciones no deterministas en mutations de motores de tabla Replicated, porque esto puede introducir inconsistencias entre réplicas. #7247 (Alexander Kazakov)
- Deshabilitar el memory tracker al convertir la stack trace de una excepción en una cadena. Esto puede evitar la pérdida
de mensajes de error de tipo
Memory limit exceededen el servidor, que provocaba la excepciónAttempt to read after eofen el cliente. #7264 (Nikolai Kochetov) - Varias mejoras de formato. Resuelve #6033, #2633, #6611, #6742 #7215 (tavplubix)
- ClickHouse ignora los valores del lado derecho del operador IN que no se pueden convertir al tipo del lado izquierdo. Se corrige para que funcione correctamente con tipos compuestos: Array y Tuple. #7283 (Alexander Kuzmenkov)
- Se añade compatibilidad con desigualdades omitidas para ASOF JOIN. Es posible hacer join con la variante menor o igual y las variantes estrictas mayor y menor para la columna ASOF en la sintaxis ON. #7282 (Artem Zuikov)
- Optimiza partial merge join. #7070 (Artem Zuikov)
- No usar más de 98K de memoria en las funciones uniqCombined. #7236, #7270 (Azat Khuzhin)
- Volcar en disco las partes de la tabla del lado derecho en joining en PartialMergeJoin (si no hay suficiente memoria). Volver a cargar los datos cuando sea necesario. #7186 (Artem Zuikov)
Mejora del rendimiento
- Se acelera joinGet con argumentos constantes al evitar la duplicación de datos. #7359 (Amos Bird)
- Finaliza antes si la subconsulta está vacía. #7007 (小路)
- Se optimiza el análisis sintáctico de la expresión SQL en Values. #6781 (tavplubix)
Mejora en compilación/pruebas/empaquetado
- Deshabilitar algunas contribs para la compilación cruzada para Mac OS. #7101 (Ivan)
- Se añadió el enlace faltante con PocoXML para clickhouse_common_io. #7200 (Azat Khuzhin)
- Aceptar varios argumentos de filtro para pruebas en clickhouse-test. #7226 (Alexander Kuzmenkov)
- Se habilitan musl y jemalloc para ARM. #7300 (Amos Bird)
- Se añadió el parámetro
--client-optionaclickhouse-testpara pasar parámetros adicionales al cliente. #7277 (Nikolai Kochetov) - Se conservan las configuraciones existentes al actualizar el paquete RPM. #7103 (filimonov)
- Se corrigieron errores detectados por PVS. #7153 (Artem Zuikov)
- Se corrigió la compilación para Darwin. #7149 (Ivan)
- Compatibilidad con glibc 2.29. #7142 (Amos Bird)
- Asegúrese de que dh_clean no toque posibles archivos de código fuente. #7205 (Amos Bird)
- Se intenta evitar conflictos al actualizar desde el paquete rpm de altinity: el archivo de configuración está empaquetado por separado en clickhouse-server-common. #7073 (filimonov)
- Se optimizaron algunos archivos de cabecera para acelerar las recompilaciones. #7212, #7231 (Alexander Kuzmenkov)
- Se añaden pruebas de rendimiento para Date y DateTime. #7332 (Vasily Nemkov)
- Se corrigieron algunas pruebas que contenían mutaciones no deterministas. #7132 (Alexander Kazakov)
- Se añade una compilación con MemorySanitizer a CI. #7066 (Alexander Kuzmenkov)
- Evita el uso de valores no inicializados en MetricsTransmitter. #7158 (Azat Khuzhin)
- Se corrigen algunos problemas en campos detectados por MemorySanitizer. #7135, #7179 (Alexander Kuzmenkov), #7376 (Amos Bird)
- Se corrigió el comportamiento indefinido en murmurhash32. #7388 (Amos Bird)
- Se corrigió el comportamiento indefinido en StoragesInfoStream. #7384 (tavplubix)
- Se corrigió el plegado de expresiones constantes para motores de base de datos externos (MySQL, ODBC, JDBC). En versiones anteriores, no funcionaba con varias expresiones constantes y no funcionaba en absoluto para Date, DateTime y UUID. Esto corrige #7245 #7252 (alexey-milovidov)
- Corrección del error por condición de carrera de datos de ThreadSanitizer en la LIVE VIEW al acceder a la variable no_users_thread. #7353 (vzakaznikov)
- Eliminar los símbolos de malloc de libcommon #7134, #7065 (Amos Bird)
- Se añade la bandera global ENABLE_LIBRARIES para desactivar todas las bibliotecas. #7063 (proller)
Limpieza de código
- Generalizar el repositorio de configuración para preparar el DDL de Diccionarios. #7155 (alesapin)
- Analizador sintáctico para el DDL de diccionarios sin semántica. #7209 (alesapin)
- Dividir ParserCreateQuery en varios analizadores sintácticos más pequeños. #7253 (alesapin)
- Pequeña refactorización y cambio de nombre en diccionarios externos. #7111 (alesapin)
- Refactorizar parte del código para prepararlo para el control de acceso basado en roles. #7235 (Vitaly Baranov)
- Algunas mejoras en el código de DatabaseOrdinary. #7086 (Nikita Vasilev)
- No usar iteradores en los métodos find() y emplace() de las tablas hash. #7026 (Alexander Kuzmenkov)
- Corregir getMultipleValuesFromConfig cuando la raíz del parámetro no esté vacía. #7374 (Mikhail Korotov)
- Eliminar algo de código duplicado (TemporaryFile y TemporaryFileStream) #7166 (Artem Zuikov)
- Mejorar un poco la legibilidad del código (
MergeTreeData::getActiveContainingPart). #7361 (Vladimir Chebotarev) - Esperar a todas las tareas programadas que usan objetos locales si
ThreadPool::schedule(...)lanza una excepción. Cambiar el nombre deThreadPool::schedule(...)aThreadPool::scheduleOrThrowOnError(...)y corregir los comentarios para dejar claro que puede lanzar una excepción. #7350 (tavplubix)
Versión de ClickHouse 19.15
Versión de ClickHouse 19.15.4.10, 2019-10-31
Corrección de errores
- Se añadió compatibilidad con SQL_TINYINT y SQL_BIGINT, y se corrigió el manejo del tipo de origen de datos SQL_FLOAT en ODBC Bridge. #7491 (Denis Glazachev)
- Se permitió que algunas partes estuvieran en el disco o volumen de destino en MOVE PARTITION. #7434 (Vladimir Chebotarev)
- Se corrigieron los valores NULL en columnas Nullable a través de ODBC-bridge. #7402 (Vasily Nemkov)
- Se corrigió INSERT en un nodo no local de Distributed con columnas MATERIALIZED. #7377 (Azat Khuzhin)
- Se corrigió la función getMultipleValuesFromConfig. #7374 (Mikhail Korotov)
- Se corrigió el uso del timeout de keep alive de HTTP en lugar del timeout de keep alive de TCP. #7351 (Vasily Nemkov)
- Se espera a que todos los trabajos finalicen en caso de excepción (corrige segfaults poco frecuentes). #7350 (tavplubix)
- No enviar a las MV al insertar en una tabla Kafka. #7265 (Ivan)
- Se deshabilitó el memory tracker para la pila de excepciones. #7264 (Nikolai Kochetov)
- Se corrigió código incorrecto en la transformación de la consulta para una base de datos externa. #7252 (alexey-milovidov)
- Se evitó el uso de valores no inicializados en MetricsTransmitter. #7158 (Azat Khuzhin)
- Se añadió una configuración de ejemplo con macros para pruebas (alexey-milovidov)
Versión de ClickHouse 19.15.3.6, 2019-10-09
Corrección de errores
- Se corrigió
bad_varianten el diccionario hash. (alesapin) - Se corrigió un error que provocaba un fallo de segmentación en la consulta ATTACH PART. (alesapin)
- Se corrigió el cálculo del tiempo en
MergeTreeData. (Vladimir Chebotarev) - Se realiza el commit en Kafka explícitamente después de finalizar la escritura. #7175 (Ivan)
- Se serializan correctamente los valores NULL en los índices min/max de las partes de MergeTree. #7234 (Alexander Kuzmenkov)
Versión de ClickHouse 19.15.2.2, 2019-10-01
Nueva funcionalidad
- Almacenamiento por niveles: soporte para usar múltiples volúmenes de almacenamiento para tablas con el motor MergeTree. Es posible almacenar los datos recientes en SSD y mover automáticamente los datos antiguos a HDD. (ejemplo). #4918 (Igr) #6489 (alesapin)
- Se añade la función de tabla
inputpara leer datos entrantes en la consultaINSERT SELECT. #5450 (palasonic1) #6832 (Anton Popov) - Se añade un layout de diccionario
sparse_hashed, funcionalmente equivalente al layouthashed, pero más eficiente en memoria. Usa aproximadamente la mitad de memoria, a costa de una recuperación de valores más lenta. #6894 (Azat Khuzhin) - Se implementa la capacidad de definir una lista de usuarios para acceder a los diccionarios. Solo se usa la base de datos conectada actualmente. #6907 (Guillaume Tassery)
- Se añade la opción
LIMITa la consultaSHOW. #6944 (Philipp Malkovsky) - Se añade la función
bitmapSubsetLimit(bitmap, range_start, limit), que devuelve un subconjunto de loslimitvalores más pequeños del conjunto que no son inferiores arange_start. #6957 (Zhichang Yu) - Se añaden las funciones
bitmapMinybitmapMax. #6970 (Zhichang Yu) - Se añade la función
repeat, relacionada con issue-6648 #6999 (flynn)
Funcionalidad experimental
- Implementa una variante de Merge Join en memoria que no modifica la pipeline actual. El resultado queda parcialmente ordenado por la clave de combinación. Establece
partial_merge_join = 1para usar esta funcionalidad. Merge Join todavía está en desarrollo. #6940 (Artem Zuikov) - Añade el motor
S3y la función de tabla. Aún está en desarrollo (todavía no tiene compatibilidad con autenticación). #5596 (Vladimir Chebotarev)
Mejora
- Cada mensaje leído de Kafka se inserta de forma atómica. Esto soluciona casi todos los problemas conocidos del motor Kafka. #6950 (Ivan)
- Mejoras en la conmutación por error de las consultas distribuidas. Se reduce el tiempo de recuperación; además, ahora es configurable y puede verse en
system.clusters. #6399 (Vasily Nemkov) - Se admiten valores numéricos para Enums directamente en la sección
IN. #6766 #6941 (dimarub2000) - Compatibilidad con redirecciones (opcionales y desactivadas de forma predeterminada) en el almacenamiento URL. #6914 (maqroll)
- Se añade un mensaje informativo cuando un cliente con una versión anterior se conecta al servidor. #6893 (Philipp Malkovsky)
- Se elimina el límite máximo del tiempo de espera de backoff para el envío de datos en tablas distribuidas #6895 (Azat Khuzhin)
- Se añade la posibilidad de enviar eventos de perfil (contadores) con valores acumulativos a Graphite. Puede habilitarse en
<events_cumulative>delconfig.xmldel servidor. #6969 (Azat Khuzhin) - Se añade la conversión automática del tipo
TaLowCardinality(T)al insertar datos en una columna de tipoLowCardinality(T)en formato Native mediante HTTP. #6891 (Nikolai Kochetov) - Se añade la posibilidad de usar la función
hexsin necesidad dereinterpretAsStringparaFloat32yFloat64. #7024 (Mikhail Korotov)
Mejora de compilación/pruebas/empaquetado
- Se añadió gdb-index al binario de ClickHouse con información de depuración. Esto acelerará el tiempo de arranque de
gdb. #6947 (alesapin) - Se aceleró el empaquetado de deb con una versión parcheada de dpkg-deb que usa
pigz. #6960 (alesapin) - Se estableció
enable_fuzzing = 1para habilitar la instrumentación de libfuzzer en todo el código del proyecto. #7042 (kyprizel) - Se añadió una prueba de humo para compilaciones divididas en CI. #7061 (alesapin)
- Se añadió a CI una compilación con MemorySanitizer. #7066 (Alexander Kuzmenkov)
- Se reemplazó
libsparsehashporsparsehash-c11#6965 (Azat Khuzhin)
Corrección de errores
- Se corrigió la degradación del rendimiento del análisis de índices en claves complejas sobre tablas grandes. Esto corrige #6924. #7075 (alexey-milovidov)
- Se corrigió un error lógico que provocaba fallos de segmentación al seleccionar desde un topic vacío de Kafka. #6909 (Ivan)
- Se corrigió el cierre prematuro de la conexión MySQL en
MySQLBlockInputStream.cpp. #6882 (Clément Rodriguez) - Se restableció la compatibilidad con kernels de Linux muy antiguos (corrige #6841) #6853 (alexey-milovidov)
- Se corrigió una posible pérdida de datos en la consulta
INSERT SELECTen caso de que hubiera un bloque vacío en el flujo de entrada. #6834 #6862 #6911 (Nikolai Kochetov) - Se corrigió la función
АrrayEnumerateUniqRankedcon arrays vacíos en los parámetros #6928 (proller) - Se corrigieron las consultas complejas con
ARRAY JOINy subconsultas globales. #6934 (Ivan) - Se corrigió el error
Unknown identifieren ORDER BY y GROUP BY con múltiples JOINs #7022 (Artem Zuikov) - Se corrigió la advertencia de
MSanal ejecutar una función con un argumentoLowCardinality. #7062 (Nikolai Kochetov)
Cambio incompatible con versiones anteriores
- Se cambió el formato de serialización de los estados de la función de agregación bitmap* para mejorar el rendimiento. No es posible leer los estados serializados de bitmap* de versiones anteriores. #6908 (Zhichang Yu)
Versión de ClickHouse 19.14
Versión de ClickHouse 19.14.7.15, 2019-10-02
Corrección de errores
- Esta versión también incluye todas las correcciones de errores de la versión 19.11.12.69.
- Se corrigió la compatibilidad de las consultas distribuidas entre la versión 19.14 y las versiones anteriores. Esto corrige #7068. #7069 (alexey-milovidov)
Versión de ClickHouse 19.14.6.12, 2019-09-19
Corrección de errores
- Corrección de la función
АrrayEnumerateUniqRankedcon arrays vacíos en los parámetros. #6928 (proller) - Se corrigió el nombre de la subconsulta en las consultas con
ARRAY JOINyGLOBAL IN subquerycon alias. Se usa el alias de la subconsulta como nombre de la tabla externa si está especificado. #6934 (Ivan)
Mejora de compilación/pruebas/empaquetado
- Se corrigió la prueba intermitente
00715_fetch_merged_or_mutated_part_zookeeperreescribiéndola como un script de shell, porque necesita esperar a que se apliquen las mutaciones. #6977 (Alexander Kazakov) - Se corrigió un fallo de UBSan y MemSan en la función
groupUniqArraycon un argumento de array vacío. Se debía a que se colocaba unPaddedPODArrayvacío en la celda cero de la tabla hash porque no se llamaba al constructor del valor de la celda cero. #6937 (Amos Bird)
Versión de ClickHouse 19.14.3.3, 2019-09-10
Nueva funcionalidad
- Modificador
WITH FILLparaORDER BY. (continuación de #5069) #6610 (Anton Popov) WITH TIES, modificador deLIMIT. (continuación de #5069) #6610 (Anton Popov)- Interpretar el literal
NULLsin comillas como NULL (si la configuraciónformat_csv_unquoted_null_literal_as_null=1). Inicializar los campos nulos con valores predeterminados si el tipo de dato de ese campo no es Nullable (si la configuracióninput_format_null_as_default=1). #5990 #6055 (tavplubix) - Compatibilidad con comodines en las rutas de las funciones de tabla
fileyhdfs. Si la ruta contiene comodines, la tabla será de solo lectura. Ejemplo de uso:select * from hdfs('hdfs://hdfs1:9000/some_dir/another_dir/*/file{0..9}{0..9}')yselect * from file('some_dir/{some_file,another_file,yet_another}.tsv', 'TSV', 'value UInt32'). #6092 (Olga Khvostikova) - Nueva tabla
system.metric_logque almacena los valores desystem.eventsysystem.metricsen el intervalo de tiempo especificado. #6363 #6467 (Nikita Mikhaylov) #6530 (alexey-milovidov) - Permite escribir los logs de texto de ClickHouse en la tabla
system.text_log. #6037 #6103 (Nikita Mikhaylov) #6164 (alexey-milovidov) - Mostrar símbolos privados en las trazas de pila (esto se hace analizando las tablas de símbolos de archivos ELF). Se añadió información sobre el archivo y el número de línea en las trazas de pila si hay información de depuración disponible. Se aceleró la búsqueda de nombres de símbolos mediante la indexación de los símbolos presentes en el programa. Se añadieron nuevas funciones SQL para la introspección:
demangleyaddressToLine. La funciónsymbolizeAddresspasó a llamarseaddressToSymbolpor coherencia. La funciónaddressToSymboldevolverá el nombre con el mangling aplicado por motivos de rendimiento, y deberá aplicardemangle. Se añadió la configuraciónallow_introspection_functions, que está desactivada de forma predeterminada. #6201 (alexey-milovidov) - Función de tabla
values(el nombre no distingue entre mayúsculas y minúsculas). Permite leer de la listaVALUESpropuesta en #5984. Ejemplo:SELECT * FROM VALUES('a UInt64, s String', (1, 'one'), (2, 'two'), (3, 'three')). #6217. #6209 (dimarub2000) - Se añadió la posibilidad de modificar la configuración de almacenamiento. Sintaxis:
ALTER TABLE <table> MODIFY SETTING <setting> = <value>. #6366 #6669 #6685 (alesapin) - Se admite la eliminación de partes desacopladas. Sintaxis:
ALTER TABLE <table_name> DROP DETACHED PART '<part_id>'. #6158 (tavplubix) - Restricciones de tabla. Permite añadir una restricción a la definición de la tabla, que se comprobará durante la inserción. #5273 (Gleb Novikov) #6652 (alexey-milovidov)
- Compatibilidad con vistas materializadas en cascada. #6324 (Amos Bird)
- Activar el perfilador de consultas de forma predeterminada para muestrear cada hilo de ejecución de consultas una vez por segundo. #6283 (alexey-milovidov)
- Formato de entrada
ORC. #6454 #6703 (akonyaev90) - Se añadieron dos funciones nuevas:
sigmoidytanh(útiles en aplicaciones de aprendizaje automático). #6254 (alexey-milovidov) - Funciones
hasToken(haystack, token),hasTokenCaseInsensitive(haystack, token)para comprobar si el token dado está en el haystack. Un token es una subcadena de longitud máxima entre dos caracteres ASCII no alfanuméricos (o en los límites del haystack). El token debe ser una cadena constante. Compatible con la especialización del índice tokenbf_v1. #6596, #6662 (Vasily Nemkov) - Nueva función
neighbor(value, offset[, default_value]). Permite obtener el valor anterior o siguiente dentro de una columna en un bloque de datos. #5925 (Alex Krash) 6685365ab8c5b74f9650492c88a012596eb1b0c6 341e2e4587a18065c2da1ca888c73389f48ce36c Alexey Milovidov - Se creó la función
currentUser(), que devuelve el login del usuario autorizado. Se añadió el aliasuser()por compatibilidad con MySQL. #6470 (Alex Krash) - Nuevas aggregate functions
quantilesExactInclusiveyquantilesExactExclusive, propuestas en #5885. #6477 (dimarub2000) - Función
bitmapRange(bitmap, range_begin, range_end)que devuelve un nuevo conjunto correspondiente al rango especificado (sin incluirrange_end). #6314 (Zhichang Yu) - Función
geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision)que crea un array de cadenas de geohash de longitudprecisionpara las celdas que cubren el área proporcionada. #6127 (Vasily Nemkov) - Implementar compatibilidad con consultas INSERT en tablas de
Kafka. #6012 (Ivan) - Se añadió soporte para las columnas virtuales
_partitiony_timestampen el motor Kafka. #6400 (Ivan) - Posibilidad de eliminar datos confidenciales de
query_log, los logs del servidor y la lista de procesos mediante reglas basadas en expresiones regulares. #5710 (filimonov)
Funcionalidad experimental
- Formato de datos
Templatepara entrada y salida. Permite especificar una cadena de formato personalizada para la entrada y la salida. #4354 #6727 (tavplubix) - Implementación de las tablas
LIVE VIEW, propuestas originalmente en #2898, preparadas en #3925 y posteriormente actualizadas en #5541. Consulte #5541 para ver una descripción detallada. #5541 (vzakaznikov) #6425 (Nikolai Kochetov) #6656 (vzakaznikov) Tenga en cuenta que la funcionalidadLIVE VIEWpuede eliminarse en versiones posteriores.
Corrección de errores
- Esta versión también incluye todas las correcciones de errores de las versiones 19.13 y 19.11.
- Corrige un fallo de segmentación cuando la tabla tiene índices de omisión y se produce una fusión vertical. #6723 (alesapin)
- Se corrige el TTL por columna con valores predeterminados no triviales. Anteriormente, en caso de forzar una fusión TTL con la consulta
OPTIMIZE ... FINAL, los valores expirados se reemplazaban por los valores predeterminados del tipo en lugar de por los valores predeterminados de la columna especificados por el usuario. #6796 (Anton Popov) - Se corrige el problema de duplicación de mensajes de Kafka durante un reinicio normal del servidor. #6597 (Ivan)
- Se corrigió un bucle infinito al leer mensajes de Kafka. No se debe pausar ni reanudar el consumidor en la suscripción en ningún caso; de lo contrario, podría quedar pausado indefinidamente en algunos escenarios. #6354 (Ivan)
- Se ha corregido la excepción
Key expression contains comparison between inconvertible typesen la funciónbitmapContains. #6136 #6146 #6156 (dimarub2000) - Se corrige un segfault con
optimize_skip_unused_shardsactivado y sin clave de sharding. #6384 (Anton Popov) - Se corrigió código erróneo en las mutaciones que podía provocar corrupción de memoria. Se corrigió un segfault al leer desde la dirección
0x14c0que podía producirse debido a la ejecución concurrente deDROP TABLEySELECTsobresystem.partsosystem.parts_columns. Se corrigió una condición de carrera en la preparación de las consultas de mutación. Se corrigió un interbloqueo causado porOPTIMIZEen tablas Replicated y por operaciones de modificación concurrentes, comoALTER. #6514 (alexey-milovidov) - Se eliminó el exceso de logging detallado en la interfaz MySQL #6389 (alexey-milovidov)
- Restaurar la capacidad de interpretar opciones booleanas a partir de ‘true’ y ‘false’ en el archivo de configuración. #6278 (alesapin)
- Se corrige un cierre inesperado en la función
quantileymediansobreNullable(Decimal128). #6378 (Artem Zuikov) - Se corrigió un posible resultado incompleto devuelto por una consulta
SELECTcon una condiciónWHEREsobre la clave primaria que incluía una conversión al tipo Float. Esto se debía a una comprobación incorrecta de la monotonicidad en la funcióntoFloat. #6248 #6374 (dimarub2000) - Verifique la configuración
max_expanded_ast_elementspara las mutaciones. Elimine las mutaciones después deTRUNCATE TABLE. #6205 (Winter Zhang) - Se corrigen los resultados de JOIN para las columnas clave cuando se usan con
join_use_nulls. Se usan NULL en lugar de los valores predeterminados de las columnas. #6249 (Artem Zuikov) - Corrección de los índices de omisión con vertical merge y alter. Corrección de la excepción
Bad size of marks file. #6594 #6713 (alesapin) - Corrige un fallo poco frecuente en
ALTER MODIFY COLUMNy en la fusión vertical cuando una de las partes fusionadas/modificadas está vacía (0 filas) #6746 #6780 (alesapin) - Se corrigió un error en la conversión de tipos
LowCardinalityenAggregateFunctionFactory. Se corrige #6257. #6281 (Nikolai Kochetov) - Corrige el comportamiento erróneo y posibles segfaults en las funciones agregadas
topKytopKWeighted. #6404 (Anton Popov) - Se corrigió código inseguro relacionado con la función
getIdentifier. #6401 #6409 (alexey-milovidov) - Se corrigió un error en MySQL wire protocol (se usa al conectarse a ClickHouse desde un cliente MySQL). Provocado por un desbordamiento de búfer en el heap en
PacketPayloadWriteBuffer. #6212 (Yuriy Baranov) - Se corrigió una pérdida de memoria en la función
bitmapSubsetInRange. #6819 (Zhichang Yu) - Se corrige un error poco frecuente cuando una mutación se ejecuta tras un cambio en la granularidad. #6816 (alesapin)
- Permite mensajes protobuf con todos los campos de forma predeterminada. #6132 (Vitaly Baranov)
- Se corrige un error en la función
nullIfal pasar un argumentoNULLcomo segundo argumento. #6446 (Guillaume Tassery) - Se corrigió un error poco frecuente de asignación/desasignación incorrecta de memoria en diccionarios cache con clave compleja y campos de cadena, que provocaba un consumo de memoria infinito (parecía una fuga de memoria). El error se reproduce cuando el tamaño de la cadena era una potencia de dos a partir de ocho (8, 16, 32, etc.). #6447 (alesapin)
- Se corrigió la codificación Gorilla en secuencias pequeñas, que provocaba la excepción
Cannot write after end of buffer. #6398 #6444 (Vasily Nemkov) - Permite usar tipos no Nullable en JOINs con
join_use_nullsactivado. #6705 (Artem Zuikov) - Deshabilitar las sustituciones de
Poco::AbstractConfigurationen las consultas declickhouse-client. #6706 (alexey-milovidov) - Se evita un interbloqueo en
REPLACE PARTITION. #6677 (alexey-milovidov) - El uso de
arrayReducecon argumentos constantes puede provocar un segfault. #6242 #6326 (alexey-milovidov) - Se corrigen las partes inconsistentes que pueden aparecer si la réplica se restauró después de
DROP PARTITION. #6522 #6523 (tavplubix) - Se solucionó un bloqueo en la función
JSONExtractRaw. #6195 #6198 (alexey-milovidov) - Corrige un error en la serialización incorrecta de índices de omisión y en la agregación con granularidad adaptativa. #6594. #6748 (alesapin)
- Se han corregido los modificadores
WITH ROLLUPyWITH CUBEdeGROUP BYcon agregación en dos niveles. #6225 (Anton Popov) - Se corrige un error al escribir las marcas de los índices secundarios con granularidad adaptativa. #6126 (alesapin)
- Se corrigió el orden de inicialización durante el arranque del servidor. Dado que
StorageMergeTree::background_task_handlese inicializa enstartup(),MergeTreeBlockOutputStream::write()puede intentar usarlo antes de que se inicialice. Basta con comprobar si está inicializado. #6080 (Ivan) - Se limpia el búfer de datos de la operación de lectura anterior que finalizó con un error. #6026 (Nikolay)
- Se corrigió un error al habilitar la granularidad adaptativa al crear una nueva réplica para una tabla Replicated*MergeTree. #6394 #6452 (alesapin)
- Se corrigió un posible fallo durante el inicio del servidor en caso de que se produjera una excepción en
libunwinddurante el manejo de una excepción al acceder a una estructuraThreadStatussin inicializar. #6456 (Nikita Mikhaylov) - Se corrige un cierre inesperado en la función
yandexConsistentHash. Detectado mediante una prueba de fuzzing. #6304 #6305 (alexey-milovidov) - Se corrigió la posibilidad de que las consultas quedaran bloqueadas cuando el servidor está sobrecargado y el grupo global de hilos está casi al límite. Es más probable que esto ocurra en clústeres con una gran cantidad de segmentos (cientos), porque las consultas distribuidas asignan un hilo por conexión a cada segmento. Por ejemplo, este problema puede reproducirse si un clúster de 330 segmentos está procesando 30 consultas distribuidas simultáneas. Este problema afecta a todas las versiones a partir de la 19.2. #6301 (alexey-milovidov)
- Se ha corregido la lógica de la función
arrayEnumerateUniqRanked. #6423 (alexey-milovidov) - Corrige un segfault al decodificar la tabla de símbolos. #6603 (Amos Bird)
- Se corrigió una excepción innecesaria en la conversión de
LowCardinality(Nullable)a una columna noNullableen caso de que no contenga valores NULL (p. ej., en una consulta comoSELECT CAST(CAST('Hello' AS LowCardinality(Nullable(String))) AS String). #6094 #6119 (Nikolai Kochetov) - Se eliminaron las comillas de más en la descripción de la tabla
system.settings. #6696 #6699 (alexey-milovidov) - Se evita un posible interbloqueo al hacer
TRUNCATEen una tabla Replicated. #6695 (alexey-milovidov) - Se corrigió la lectura según el orden de la clave de ordenación. #6189 (Anton Popov)
- Se corrige la consulta
ALTER TABLE ... UPDATEpara tablas conenable_mixed_granularity_parts=1. #6543 (alesapin) - Se corrige el error introducido por #4405 (desde la versión 19.4.0). Se reproduce en consultas a tablas Distributed sobre tablas MergeTree cuando no se consulta ninguna columna (
SELECT 1). #6236 (alesapin) - Se corrigió el desbordamiento en la división entera de un tipo con signo a un tipo sin signo. El comportamiento era exactamente igual que en los lenguajes C o C++ (reglas de promoción de enteros), lo que puede resultar sorprendente. Tenga en cuenta que el desbordamiento sigue siendo posible al dividir un número grande con signo entre un número grande sin signo, o viceversa (aunque ese caso es menos habitual). El problema existía en todas las versiones del servidor. #6214 #6233 (alexey-milovidov)
- Se limita el tiempo máximo de espera del throttling cuando se configura
max_execution_speedomax_execution_speed_bytes. Se corrigieron falsos errores comoEstimated query execution time (inf seconds) is too long. #5547 #6232 (alexey-milovidov) - Se solucionaron problemas con el uso de columnas
MATERIALIZEDy alias enMaterializedView. #448 #3484 #3450 #2878 #2285 #3796 (Amos Bird) #6316 (alexey-milovidov) - Se corrigió el comportamiento de
FormatFactorypara los flujos de entrada que no están implementados como procesador. #6495 (Nikolai Kochetov) - Se corrigió una errata. #6631 (Alex Ryndin)
- Errata en el mensaje de error ( is -> are ). #6839 (Denis Zhuravlev)
- Se corrigió un error al analizar la lista de columnas a partir de una cadena si el tipo contenía una coma (este problema afectaba a los almacenamientos
File,URLyHDFS) #6217. #6209 (dimarub2000)
Corrección de seguridad
- Esta versión también incluye todas las correcciones de fallos de seguridad de las versiones 19.13 y 19.11.
- Se corrigió la posibilidad de que una consulta maliciosa provocara una caída del servidor debido a un desbordamiento de pila en el analizador sintáctico de SQL. Se corrigió la posibilidad de desbordamiento de pila en las tablas Merge y Distributed, las vistas materializadas y las condiciones de seguridad a nivel de fila que incluyen subconsultas. #6433 (alexey-milovidov)
Mejora
- Implementación correcta de la lógica ternaria para
AND/OR. #6048 (Alexander Kazakov) - Ahora, los valores y las filas con TTL caducado se eliminarán tras la consulta
OPTIMIZE ... FINALen partes antiguas sin información de TTL o con información de TTL obsoleta, por ejemplo, después de la consultaALTER ... MODIFY TTL. Se añadieron las consultasSYSTEM STOP/START TTL MERGESpara impedir/permitir programar fusiones con TTL y filtrar los valores caducados en todas las fusiones. #6274 (Anton Popov) - Posibilidad de cambiar la ubicación del archivo de historial de ClickHouse del cliente mediante la variable de entorno
CLICKHOUSE_HISTORY_FILE. #6840 (filimonov) - Eliminar la opción
dry_rundeInterpreterSelectQuery. … #6375 (Nikolai Kochetov) - Se admite
ASOF JOINcon la secciónON. #6211 (Artem Zuikov) - Mejor soporte para los skip indexes en mutaciones y replicación. Soporte para la consulta
MATERIALIZE/CLEAR INDEX ... IN PARTITION.UPDATE x = xrecalcula todos los índices que usan la columnax. #5053 (Nikita Vasilev) - Permitir
ATTACHde live views (por ejemplo, durante el arranque del servidor) independientemente de la configuraciónallow_experimental_live_view. #6754 (alexey-milovidov) - Para las trazas de pila recopiladas por el perfilador de consultas, no se incluyen los frames de pila generados por el propio perfilador de consultas. #6250 (alexey-milovidov)
- Ahora las funciones de tabla
values,file,urlyhdfsadmiten columnas ALIAS. #6255 (alexey-milovidov) - Lanzar una excepción si el archivo
config.dno tiene el mismo elemento raíz que el archivo de configuración. #6123 (dimarub2000) - Se imprime información adicional en el mensaje de excepción para
no space left on device. #6182, #6252 #6352 (tavplubix) - Al determinar qué segmentos de una tabla
Distributeddebe abarcar una consulta de lectura (paraoptimize_skip_unused_shards= 1), ClickHouse ahora comprueba las condiciones de las cláusulasprewhereywherede la sentencia SELECT. #6521 (Alexander Kazakov) - Se habilitó
SIMDJSONpara máquinas sin AVX2, pero con SSE 4.2 y el juego de instrucciones PCLMUL. #6285 #6320 (alexey-milovidov) - ClickHouse puede funcionar en sistemas de archivos sin soporte para
O_DIRECT(como ZFS y BtrFS) sin necesidad de ajustes adicionales. #4449 #6730 (alexey-milovidov) - Se admite el pushdown de predicados para subconsultas con FINAL. #6120 (TCeason) #6162 (alexey-milovidov)
- Mejora en la extracción de claves de
JOIN ON#6131 (Artem Zuikov) - Se actualizó
SIMDJSON. #6285. #6306 (alexey-milovidov) - Optimización de la selección de la columna más pequeña para la consulta
SELECT count(). #6344 (Amos Bird) - Se agregó el parámetro
strictenwindowFunnel(). Cuando se establecestrict,windowFunnel()aplica condiciones solo a los valores únicos. #6548 (achimbab) - Interfaz de
mysqlxx::Poolmás segura. #6150 (avasiliev) - El ancho de línea de las opciones al ejecutar con la opción
--helpahora se ajusta al tamaño del terminal. #6590 (dimarub2000) - Deshabilita la optimización “read in order” para la agregación sin claves de agrupación. #6599 (Anton Popov)
- El código de estado HTTP de los códigos de error
INCORRECT_DATAyTYPE_MISMATCHcambió del valor predeterminado500 Internal Server Errora400 Bad Request. #6271 (Alexander Rodin) - Se movió el objeto
JoindeExpressionActionaAnalyzedJoin.ExpressionAnalyzeryExpressionActionya no conocen la claseJoin. Su lógica queda encapsulada en la interfazAnalyzedJoin. #6801 (Artem Zuikov) - Se corrigió un posible interbloqueo de las consultas distribuidas si uno de los segmentos es localhost, pero la consulta se envía mediante una conexión de red. #6759 (alexey-milovidov)
- Se modificó la semántica de
RENAMEen múltiples tablas para evitar posibles interbloqueos. #6757. #6756 (alexey-milovidov) - Se reescribió el servidor de compatibilidad con MySQL para evitar cargar en memoria el payload completo del paquete. Se redujo el consumo de memoria de cada conexión a aproximadamente
2 * DBMS_DEFAULT_BUFFER_SIZE(búferes de lectura/escritura). #5811 (Yuriy Baranov) - Mover la lógica de interpretación de alias del AST fuera del parser, que no tiene por qué saber nada sobre la semántica de la consulta. #6108 (Artem Zuikov)
- Análisis sintáctico algo más seguro de
NamesAndTypesList. #6408. #6410 (alexey-milovidov) clickhouse-copier: Se permite usarwhere_conditionde la configuración con el aliaspartition_keyen la consulta para comprobar la existencia de la partición (antes solo se usaba en las consultas de lectura de datos). #6577 (proller)- Se añadió un argumento de mensaje opcional a
throwIf. (#5772) #6329 (Vdimir) - La excepción del servidor producida al enviar datos de inserción ahora también se procesa en el cliente. #5891 #6711 (dimarub2000)
- Se añadió una métrica
DistributedFilesToInsertque muestra el número total de archivos del sistema de archivos seleccionados para enviarse a servidores remotos mediante tablas Distributed. La cifra se suma en todos los segmentos. #6600 (alexey-milovidov) - Mover la mayor parte de la lógica de preparación de los JOINs de
ExpressionAction/ExpressionAnalyzeraAnalyzedJoin. #6785 (Artem Zuikov) - Se corrigió la advertencia ‘lock-order-inversion’ de TSan. #6740 (Vasily Nemkov)
- Mejores mensajes informativos sobre la falta de capacidades de Linux. Los errores fatales ahora se registran con el nivel “fatal”, lo que facilitará encontrarlos en
system.text_log. #6441 (alexey-milovidov) - Cuando se habilitaba el volcado de datos temporales al disco para limitar el uso de memoria durante
GROUP BYyORDER BY, no se comprobaba el espacio libre en disco. La corrección añade una nueva configuración,min_free_disk_space; cuando el espacio libre en disco es inferior al umbral, la consulta se detendrá y lanzaráErrorCodes::NOT_ENOUGH_SPACE. #6678 (Weiqing Xu) #6691 (alexey-milovidov) - Se eliminó el rwlock recursivo por hilo. No tiene sentido, porque los hilos se reutilizan entre consultas. Una consulta
SELECTpuede adquirir un bloqueo en un hilo, mantenerlo desde otro hilo y salir desde el primero. Al mismo tiempo, el primer hilo puede reutilizarse para una consultaDROP. Esto provocará mensajes falsos de “Intento de adquirir un bloqueo exclusivo de forma recursiva”. #6771 (alexey-milovidov) - Se separó
ExpressionAnalyzer.appendJoin(). Se preparó espacio enExpressionAnalyzerparaMergeJoin. #6524 (Artem Zuikov) - Se añadió el plugin de autenticación
mysql_native_passwordal servidor compatible con MySQL. #6194 (Yuriy Baranov) - Se redujo el número de llamadas a
clock_gettime; se corrigió la compatibilidad ABI entre las compilaciones de depuración y release enAllocator(problema insignificante). #6197 (alexey-milovidov) - Se mueve
collectUsedColumnsdeExpressionAnalyzeraSyntaxAnalyzer.SyntaxAnalyzerahora crearequired_source_columnspor sí mismo. #6416 (Artem Zuikov) - Añadir la configuración
joined_subquery_requires_aliaspara exigir alias en las subconsultas y las funciones de tabla deFROMcuando haya más de una tabla presente (es decir, consultas con JOINs). #6733 (Artem Zuikov) - Se extrajo la clase
GetAggregatesVisitordeExpressionAnalyzer. #6458 (Artem Zuikov) system.query_log: cambiar el tipo de dato de la columnatypeaEnum. #6265 (Nikita Mikhaylov)- Enlazado estático del plugin de autenticación
sha256_password. #6512 (Yuriy Baranov) - Evita una dependencia adicional para que la opción
compilefuncione. En versiones anteriores, el usuario podía recibir errores comocannot open crti.o,unable to find library -lc, etc. #6309 (alexey-milovidov) - Validación adicional de la entrada que puede provenir de una réplica maliciosa. #6303 (alexey-milovidov)
- Ahora, el archivo
clickhouse-obfuscatorestá disponible en el paqueteclickhouse-client. En versiones anteriores, estaba disponible comoclickhouse obfuscator(con un espacio). #5816 #6609 (dimarub2000) - Se corrigió un interbloqueo cuando había al menos dos consultas que leían al menos dos tablas en distinto orden y otra consulta que realizaba una operación DDL en una de las tablas. Se corrigió otro interbloqueo muy poco frecuente. #6764 (alexey-milovidov)
- Se añadió la columna
os_thread_idsasystem.processesysystem.query_logpara facilitar la depuración. #6763 (alexey-milovidov) - Una solución alternativa para errores de la extensión mysqlnd de PHP que se producen cuando
sha256_passwordse usa como plugin de autenticación por defecto (descrito en #6031). #6113 (Yuriy Baranov) - Eliminar el lugar innecesario con columnas cuya nulabilidad ha cambiado. #6693 (Artem Zuikov)
- Se estableció en cero el valor predeterminado de
queue_max_wait_ms, porque el valor actual (cinco segundos) no tiene sentido. Solo resulta útil en circunstancias poco frecuentes. Se añadieron las configuracionesreplace_running_query_max_wait_ms,kafka_max_wait_msyconnection_pool_max_wait_mspara diferenciarlas. #6692 (alexey-milovidov) - Extraer
SelectQueryExpressionAnalyzerdeExpressionAnalyzer. Mantener este último para las consultas que no sean SELECT. #6499 (Artem Zuikov) - Se eliminaron los formatos de entrada y salida duplicados. #6239 (Nikolai Kochetov)
- Permitir al usuario sobrescribir la configuración de
poll_intervalyidle_connection_timeoutde la conexión. #6230 (alexey-milovidov) MergeTreeahora tiene una opción adicional,ttl_only_drop_parts(deshabilitada de forma predeterminada), para evitar el descarte parcial de partes, de modo que se eliminen por completo cuando todas las filas de una parte hayan expirado. #6191 (Sergi Vladykin)- Comprobaciones de tipos para las funciones de índice Set. Genera una excepción si la función recibe un tipo incorrecto. Esto corrige la prueba de fuzzing con UBSan. #6511 (Nikita Vasilev)
Mejora del rendimiento
- Optimización de consultas con la cláusula
ORDER BY expressions, cuandoexpressionstiene un prefijo que coincide con la clave de ordenación en tablasMergeTree. Esta optimización está controlada por la configuraciónoptimize_read_in_order. #6054 #6629 (Anton Popov) - Se permite usar múltiples hilos durante la carga y eliminación de partes. #6372 #6074 #6438 (alexey-milovidov)
- Se implementó una variante por lotes para actualizar estados de funciones de agregación. Esto puede aportar mejoras de rendimiento. #6435 (alexey-milovidov)
- Uso de la biblioteca
FastOpspara las funcionesexp,log,sigmoid,tanh. FastOps es una biblioteca rápida de matemáticas vectoriales de Michael Parakhin (CTO de Yandex). Se mejoró el rendimiento de las funcionesexpylogen más de 6 veces. Las funcionesexpylogcon argumentoFloat32devolveránFloat32(en versiones anteriores siempre devolvíanFloat64). Ahoraexp(nan)puede devolverinf. Es posible que el resultado de las funcionesexpylogno sea el número representable por la máquina más cercano al valor real. #6254 (alexey-milovidov) Uso de la variante de Danila Kutenin para que FastOps funcione #6317 (alexey-milovidov) - Se deshabilita la optimización de claves consecutivas para
UInt8/16. #6298 #6701 (akuzm) - Se mejoró el rendimiento de la biblioteca
simdjsoneliminando la asignación dinámica enParsedJson::Iterator. #6479 (Vitaly Baranov) - Se precargan páginas al asignar memoria con
mmap(). #6667 (akuzm) - Se corrige un problema de rendimiento en la comparación de
Decimal. #6380 (Artem Zuikov)
Mejora de compilación/pruebas/empaquetado
- Eliminar Compiler (instanciación de plantillas en runtime) porque ya obtenemos mejor rendimiento sin él. #6646 (alexey-milovidov)
- Se añadió una prueba de rendimiento para mostrar de forma más aislada la degradación del rendimiento en gcc-9. #6302 (alexey-milovidov)
- Se añadió la función de tabla
numbers_mt, que es la versión multihilo denumbers. Se actualizaron las pruebas de rendimiento con funciones hash. #6554 (Nikolai Kochetov) - Modo de comparación en
clickhouse-benchmark#6220 #6343 (dimarub2000) - Se intenta imprimir trazas de pila en la medida de lo posible. También se añadió
SIGPROFcomo señal de depuración para imprimir la traza de pila de un hilo en ejecución. #6529 (alexey-milovidov) - Todas las funciones en su propio archivo, parte 10. #6321 (alexey-milovidov)
- Se eliminó la constante duplicada
TABLE_IS_READ_ONLY. #6566 (filimonov) - Cambios de formato en
StringHashMapPR #5417. #6700 (akuzm) - Mejor subconsulta para la creación de JOIN en
ExpressionAnalyzer. #6824 (Artem Zuikov) - Se elimina una condición redundante (detectada por PVS Studio). #6775 (akuzm)
- Se separó la interfaz de la tabla hash para
ReverseIndex. #6672 (akuzm) - Refactorización de la configuración. #6689 (alesapin)
- Se añadieron comentarios para las funciones del índice
set. #6319 (Nikita Vasilev) - Se aumentó la puntuación OOM en la versión de depuración de Linux. #6152 (akuzm)
- HDFS HA ahora funciona en compilaciones de depuración. #6650 (Weiqing Xu)
- Se añadió una prueba para
transform_query_for_external_database. #6388 (alexey-milovidov) - Se añadió una prueba para varias vistas materializadas en una tabla de Kafka. #6509 (Ivan)
- Mejora del esquema de compilación. #6500 (Ivan)
- Se corrigió la integración
test_external_dictionariesen caso de que se ejecutara como un usuario no root. #6507 (Nikolai Kochetov) - El error se reproduce cuando el tamaño total de los paquetes escritos supera
DBMS_DEFAULT_BUFFER_SIZE. #6204 (Yuriy Baranov) - Se añadió una prueba para la condición de carrera al renombrar una tabla con
RENAME#6752 (alexey-milovidov) - Se evita una condición de carrera en Settings en
KILL QUERY. #6753 (alexey-milovidov) - Añadir una prueba de integración para el manejo de errores en un diccionario de caché. #6755 (Vitaly Baranov)
- Deshabilitar el parseo de archivos objeto ELF en Mac OS, ya que no tiene sentido. #6578 (alexey-milovidov)
- Se intenta mejorar el generador del changelog. #6327 (alexey-milovidov)
- Se añadió el modificador
-Wshadowa GCC. #6325 (kreuzerkrieg) - Se eliminó el código obsoleto de compatibilidad con
mimalloc. #6715 (alexey-milovidov) zlib-ngdetermina las capacidades de x86 y guarda esta información en variables globales. Esto se hace en la llamada a defalteInit, que puede ejecutarse simultáneamente desde distintos hilos. Para evitar escrituras concurrentes desde varios hilos, hágase al iniciar la biblioteca. #6141 (akuzm)- Prueba de regresión para un error en la operación join que se corrigió en #5192. #6147 (Bakhtiyor Ruziev)
- Se corrigió el informe de MSan. #6144 (alexey-milovidov)
- Corrige la prueba de TTL intermitente. #6782 (Anton Popov)
- Se corrigió una falsa carrera de datos en el campo
MergeTreeDataPart::is_frozen. #6583 (alexey-milovidov) - Se corrigieron los timeouts en la prueba de fuzzing. En la versión anterior, detectaba un falso bloqueo en la consulta
SELECT * FROM numbers_mt(gccMurmurHash('')). #6582 (alexey-milovidov) - Se añadieron comprobaciones de depuración al
static_castde columnas. #6581 (alexey-milovidov) - Se añade compatibilidad con Oracle Linux en los paquetes RPM oficiales. #6356 #6585 (alexey-milovidov)
- Se cambiaron las pruebas de rendimiento de JSON del tipo
onceal tipoloop. #6536 (Nikolai Kochetov) odbc-bridge.cppdefinemain(), por lo que no debe incluirse enclickhouse-lib. #6538 (Orivej Desh)- Prueba para detectar un bloqueo en
FULL|RIGHT JOINcon valores NULL en las claves de la tabla derecha. #6362 (Artem Zuikov) - Se añadió una prueba para el límite de expansión de alias, por si acaso. #6442 (alexey-milovidov)
- Se sustituyó
boost::filesystemporstd::filesystemcuando correspondía. #6253 #6385 (alexey-milovidov) - Se agregaron paquetes RPM al sitio web. #6251 (alexey-milovidov)
- Se añadió una prueba para la excepción
Unknown identifiercorregida en la secciónIN. #6708 (Artem Zuikov) - Simplificado
shared_ptr_helperporque era difícil de entender. #6675 (alexey-milovidov) - Se agregaron pruebas de rendimiento para el códec Fixed Gorilla y DoubleDelta. #6179 (Vasily Nemkov)
- Se dividió la prueba de integración
test_dictionariesen 4 pruebas independientes. #6776 (Vitaly Baranov) - Se corrigió la advertencia de PVS-Studio en
PipelineExecutor. #6777 (Nikolai Kochetov) - Permitir el uso del origen del diccionario
librarycon ASan. #6482 (alexey-milovidov) - Se añadió la opción de generar el registro de cambios a partir de una lista de PR. #6350 (alexey-milovidov)
- Bloquear el almacenamiento
TinyLogal leer. #6226 (akuzm) - Comprobación de enlaces simbólicos rotos en CI. #6634 (alexey-milovidov)
- Aumentar el tiempo de espera de la prueba “stack overflow” porque puede tardar mucho en un build de depuración. #6637 (alexey-milovidov)
- Se añadió una comprobación para detectar espacios en blanco dobles. #6643 (alexey-milovidov)
- Se corrigió el seguimiento de memoria de
new/deleteal compilar con sanitizadores. El seguimiento no es preciso. Solo evita excepciones de límite de memoria en las pruebas. #6450 (Artem Zuikov) - Volver a activar la comprobación de símbolos no definidos durante el enlazado. #6453 (Ivan)
- Evita recompilar
hyperscana diario. #6307 (alexey-milovidov) - Se corrigió el informe de UBSan en
ProtobufWriter. #6163 (alexey-milovidov) - No permitir usar el perfilador de consultas con sanitizadores, ya que no es compatible. #6769 (alexey-milovidov)
- Agregar una prueba para recargar un diccionario tras un fallo del temporizador. #6114 (Vitaly Baranov)
- Se corrige la inconsistencia en el tipo de argumento de
PipelineExecutor::prepareProcessor. #6494 (Nikolai Kochetov) - Se añadió una prueba para URI no válidas. #6493 (alexey-milovidov)
- Se añadieron más comprobaciones a la función
CAST. Esto debería proporcionar más información sobre el fallo de segmentación en la prueba de fuzzing. #6346 (Nikolai Kochetov) - Se añadió compatibilidad con
gcc-9al contenedordocker/builder, que genera la imagen localmente. #6333 (Gleb Novikov) - Prueba de la clave primaria con
LowCardinality(String). #5044 #6219 (dimarub2000) - Se corrigieron las pruebas afectadas por la lentitud al imprimir las trazas de pila. #6315 (alexey-milovidov)
- Se añadió un caso de prueba para el bloqueo en
groupUniqArray, corregido en #6029. #4402 #6129 (akuzm) - Se corrigieron las pruebas de mutaciones de índices. #6645 (Nikita Vasilev)
- En las pruebas de rendimiento, no leer el registro de consultas de las consultas que no ejecutamos. #6427 (akuzm)
- Ahora se puede crear una vista materializada con cualquier tipo de baja cardinalidad, independientemente de la configuración relativa a los tipos de baja cardinalidad sospechosos. #6428 (Olga Khvostikova)
- Se actualizaron las pruebas de la configuración
send_logs_level. #6207 (Nikolai Kochetov) - Corregida la compilación con gcc-8.2. #6196 (Max Akhmedov)
- Se corrige la compilación con libc++ interno. #6724 (Ivan)
- Se corrige la compilación compartida con la biblioteca
rdkafka#6101 (Ivan) - Correcciones para la compilación en Mac OS (incompletas). #6390 (alexey-milovidov) #6429 (alex-zaitsev)
- Se corrige la compilación “dividida”. #6618 (alexey-milovidov)
- Otras correcciones en la compilación: #6186 (Amos Bird) #6486 #6348 (vxider) #6744 (Ivan) #6016 #6421 #6491 (proller)
Cambio incompatible con versiones anteriores
- Se eliminaron la función de tabla
catBoostPooly el almacenamientoCatBoostPool, que se usaban raramente. Si ha utilizado esta función de tabla, envíe un correo electrónico afeedback@clickhouse.com. Tenga en cuenta que la integración con CatBoost se mantiene y seguirá teniendo soporte. #6279 (alexey-milovidov) ANY RIGHT JOINyANY FULL JOINestán deshabilitados de forma predeterminada. Establezca la configuraciónany_join_distinct_right_table_keyspara habilitarlos. #5126 #6351 (Artem Zuikov)
Versión de ClickHouse 19.13
Versión de ClickHouse 19.13.6.51, 2019-10-02
Corrección de errores
- Esta versión también incluye todas las correcciones de errores de la versión 19.11.12.69.
Versión de ClickHouse 19.13.5.44, 2019-09-20
Corrección de errores
- Esta versión también contiene todas las correcciones de errores de la 19.14.6.12.
- Se corrigió un posible estado inconsistente de la tabla al ejecutar la consulta
DROPen una tabla replicada mientras ZooKeeper no es accesible. #6045 #6413 (Nikita Mikhaylov) - Se corrigió una carrera de dato en StorageMerge #6717 (alexey-milovidov)
- Se corrigió un error introducido en el query profiler que provocaba un
recvinfinito desde el socket. #6386 (alesapin) - Se corrigió el uso excesivo de CPU al ejecutar la función
JSONExtractRawsobre un valor booleano. #6208 (Vitaly Baranov) - Se corrigió la regresión al insertar en la vista materializada. #6415 (Ivan)
- La función de tabla
urltenía una vulnerabilidad que permitía a un atacante inyectar encabezados HTTP arbitrarios en la solicitud. Este problema fue descubierto por Nikita Tikhomirov. #6466 (alexey-milovidov) - Se corrigió una comprobación
ASTinútil en el índice Set. #6510 #6651 (Nikita Vasilev) - Se corrigió el análisis de los valores de
AggregateFunctionintegrados en la consulta. #6575 #6773 (Zhichang Yu) - Se corrigió el comportamiento incorrecto de la familia de funciones
trim. #6647 (alexey-milovidov)
versión de ClickHouse 19.13.4.32, 2019-09-10
Corrección de errores
- Esta versión también contiene todas las correcciones de errores de seguridad de las versiones 19.11.9.52 y 19.11.10.54.
- Se corrigió una carrera de dato en la tabla
system.partsy en la consultaALTER. #6245 #6513 (alexey-milovidov) - Se corrigió una discrepancia en el encabezado de los flujos que se producía al leer desde una tabla distribuida vacía con
sampleyprewhere. #6167 (Lixiang Qian) #6823 (Nikolai Kochetov) - Se corrigió un fallo al usar la cláusula
INcon una subconsulta con una tupla. #6125 #6550 (tavplubix) - Se corrigió el caso de nombres de columna idénticos en la sección
GLOBAL JOIN ON. #6181 (Artem Zuikov) - Se corrigió un fallo al convertir a
Decimaltipos que no lo admiten. En su lugar, ahora se lanza una excepción. #6297 (Artem Zuikov) - Se corrigió un fallo en la función
extractAll(). #6644 (Artem Zuikov) - La transformación de consultas para las funciones de tabla
MySQL,ODBCyJDBCahora funciona correctamente para consultasSELECT WHEREcon múltiples expresionesAND. #6381 #6676 (dimarub2000) - Se añadieron comprobaciones de declaraciones previas para la integración con MySQL 8. #6569 (Rafael David Tinoco)
Corrección de seguridad
- Se solucionan dos vulnerabilidades en los códecs durante la fase de descompresión (un usuario malintencionado puede crear datos comprimidos que provoquen un desbordamiento de búfer durante la descompresión). #6670 (Artem Zuikov)
Versión de ClickHouse 19.13.3.26, 2019-08-22
Corrección de errores
- Se corrigió la consulta
ALTER TABLE ... UPDATEpara tablas conenable_mixed_granularity_parts=1. #6543 (alesapin) - Se corrigió un NPE al usar la cláusula IN con una subconsulta con una tupla. #6125 #6550 (tavplubix)
- Se corrigió un problema por el que, si una réplica obsoleta volvía a estar activa, podía seguir teniendo partes de datos eliminadas por DROP PARTITION. #6522 #6523 (tavplubix)
- Se corrigió un problema en el análisis sintáctico de CSV #6426 #6559 (tavplubix)
- Se corrigió una carrera de datos en la tabla system.parts y en la consulta ALTER. Esto corrige #6245. #6513 (alexey-milovidov)
- Se corrigió un código erróneo en las mutaciones que podía provocar corrupción de memoria. Se corrigió un segfault al leer la dirección
0x14c0, que podía producirse debido a la ejecución concurrente deDROP TABLEySELECTdesdesystem.partsosystem.parts_columns. Se corrigió una condición de carrera en la preparación de consultas de mutación. Se corrigió un interbloqueo causado porOPTIMIZEen tablas Replicated y operaciones de modificación concurrentes como ALTERs. #6514 (alexey-milovidov) - Se corrigió una posible pérdida de datos después de la consulta
ALTER DELETEen una tabla con un índice de omisión de datos. #6224 #6282 (Nikita Vasilev)
Corrección de seguridad
- Si un atacante tiene acceso de escritura a ZooKeeper y puede ejecutar un servidor personalizado accesible desde la red en la que se ejecuta ClickHouse, puede crear un servidor malicioso a medida que actúe como réplica de ClickHouse y registrarlo en ZooKeeper. Cuando otra réplica obtenga una parte de dato de la réplica maliciosa, puede forzar a clickhouse-server a escribir en una ruta arbitraria del sistema de archivos. Descubierto por Eldar Zaitov, del equipo de seguridad de la información de Yandex. #6247 (alexey-milovidov)
versión de ClickHouse 19.13.2.19, 2019-08-14
Nueva funcionalidad
- Perfilador de muestreo a nivel de consulta. Ejemplo. #4247 (laplab) #6124 (alexey-milovidov) #6250 #6283 #6386
- Se puede especificar una lista de columnas con la expresión
COLUMNS('regexp'), que funciona como una variante más sofisticada del asterisco*. #5951 (mfridental), (alexey-milovidov) - Ahora es posible usar
CREATE TABLE AS table_function()#6057 (dimarub2000) - El optimizador Adam para descenso estocástico por gradiente se usa de forma predeterminada en las funciones de agregado
stochasticLinearRegression()ystochasticLogisticRegression(), porque ofrece buenos resultados casi sin necesidad de ajustes. #6000 (Quid37) - Se añadieron funciones para trabajar con el número de semana personalizado #5212 (Andy Yang)
- Las consultas
RENAMEahora funcionan con todos los motores de almacenamiento. #5953 (Ivan) - Ahora el cliente puede recibir logs del servidor con cualquier nivel deseado mediante
send_logs_level, independientemente del nivel de log especificado en la configuración del servidor. #5964 (Nikita Mikhaylov)
Cambio incompatible con versiones anteriores
- La configuración
input_format_defaults_for_omitted_fieldsestá habilitada de forma predeterminada. Las inserciones en tablas Distributed requieren que esta configuración sea la misma en todo el clúster (debe establecerla antes de un rolling update). Esto permite calcular expresiones predeterminadas complejas para campos omitidos en los formatosJSONEachRowyCSV*. Es el comportamiento esperado, pero puede ocasionar una diferencia de rendimiento insignificante. #6043 (Artem Zuikov), #5625 (akuzm)
Características experimentales
- Nuevo pipeline de procesamiento de consultas. Use la opción
experimental_use_processors=1para habilitarlo. Úselo bajo su propia responsabilidad. #4914 (Nikolai Kochetov)
Corrección de errores
- Se corrigió la integración con Kafka en esta versión.
- Se corrigió la codificación
DoubleDeltadeInt64para valoresDoubleDeltagrandes y se mejoró la codificaciónDoubleDeltapara datos aleatorios enInt32. #5998 (Vasily Nemkov) - Se corrigió la sobreestimación de
max_rows_to_readsi el ajustemerge_tree_uniform_read_distributionestá establecido en 0. #6019 (alexey-milovidov)
Mejora
- Lanza una excepción si el archivo
config.dno tiene el mismo elemento raíz que el archivo de configuración #6123 (dimarub2000)
Mejora del rendimiento
Mejora de compilación/pruebas/empaquetado
- Incluir el uso de memoria en los informes de las pruebas de rendimiento. #5899 (akuzm)
- Corregir la compilación con
libcxxexterno #6010 (Ivan) - Corregir la compilación compartida con la biblioteca
rdkafka#6101 (Ivan)
Versión de ClickHouse 19.11
Versión de ClickHouse 19.11.13.74, 2019-11-01
Corrección de errores
- Se corrigió un fallo poco frecuente en
ALTER MODIFY COLUMNy en la fusión vertical cuando una de las partes fusionadas o alteradas está vacía (0 filas). #6780 (alesapin) - Actualización manual de
SIMDJSON. Esto corrige un posible llenado de los archivos stderr con mensajes de diagnóstico JSON erróneos. #7548 (Alexander Kazakov) - Se corrigió un error con la extensión de archivo
mrkpara las mutaciones (alesapin)
versión de ClickHouse 19.11.12.69, 2019-10-02
Corrección de errores
- Se corrigió la degradación del rendimiento del análisis de índices en claves complejas en tablas grandes. Esto corrige #6924. #7075 (alexey-milovidov)
- Se evita un SIGSEGV poco frecuente al enviar datos en tablas con el motor Distributed (
Failed to send batch: file with index XXXXX is absent). #7032 (Azat Khuzhin) - Se corrige
Unknown identifiercon múltiples JOIN. Esto corrige #5254. #7022 (Artem Zuikov)
versión de ClickHouse 19.11.11.57, 2019-09-13
- Se corrige un error lógico que causaba segfaults al seleccionar de un topic vacío de Kafka. #6902 #6909 (Ivan)
- Corrección de la función
АrrayEnumerateUniqRankedcon arrays vacíos en los parámetros. #6928 (proller)
Versión de ClickHouse 19.11.10.54, 2019-09-10
Corrección de errores
- Almacena manualmente los offsets de los mensajes de Kafka para poder hacer commit de todos ellos de una sola vez para todas las particiones. Corrige una posible duplicación en el escenario de “un consumidor - muchas particiones”. #6872 (Ivan)
versión de ClickHouse 19.11.9.52, 2019-09-6
- Se mejoró el manejo de errores en los diccionarios de caché. #6737 (Vitaly Baranov)
- Se corrigió un error en la función
arrayEnumerateUniqRanked. #6779 (proller) - Se corrigió la función
JSONExtractal extraer unTuplede JSON. #6718 (Vitaly Baranov) - Se corrigió una posible pérdida de datos después de una consulta
ALTER DELETEen una tabla con un índice de omisión de dato. #6224 #6282 (Nikita Vasilev) - Se corrigió la prueba de rendimiento. #6392 (alexey-milovidov)
- Parquet: Se corrigió la lectura de columnas booleanas. #6579 (alexey-milovidov)
- Se corrigió el comportamiento incorrecto de la función
nullIfpara argumentos constantes. #6518 (Guillaume Tassery) #6580 (alexey-milovidov) - Se corrigió el problema de duplicación de mensajes de Kafka durante un reinicio normal del servidor. #6597 (Ivan)
- Se corrigió un problema por el que
ALTER UPDATEoALTER DELETElargos podían impedir la ejecución de las fusiones normales. Se evita que las mutaciones se ejecuten si no hay suficientes hilos libres disponibles. #6502 #6617 (tavplubix) - Se corrigió un error al procesar “timezone” en el archivo de configuración del servidor. #6709 (alexey-milovidov)
- Se corrigieron las pruebas de Kafka. #6805 (Ivan)
Corrección de seguridad
- Si el atacante tiene acceso de escritura a ZooKeeper y puede ejecutar un servidor personalizado accesible desde la red en la que se ejecuta ClickHouse, puede crear un servidor malicioso a medida que actúe como réplica de ClickHouse y registrarlo en ZooKeeper. Cuando otra réplica recupere una parte de datos de la réplica maliciosa, puede forzar a clickhouse-server a escribir en una ruta arbitraria del sistema de archivos. Descubierto por Eldar Zaitov, del equipo de seguridad de la información de Yandex. #6247 (alexey-milovidov)
Versión de ClickHouse 19.11.8.46, 2019-08-22
Corrección de errores
- Se corrigió la consulta
ALTER TABLE ... UPDATEpara tablas conenable_mixed_granularity_parts=1. #6543 (alesapin) - Se corrigió un NPE al usar la cláusula IN con una subconsulta con una tupla. #6125 #6550 (tavplubix)
- Se corrigió un problema por el que, si una réplica obsoleta vuelve a estar activa, puede seguir teniendo partes de datos eliminadas mediante DROP PARTITION. #6522 #6523 (tavplubix)
- Se corrigió un problema con el análisis de CSV. #6426 #6559 (tavplubix)
- Se corrigió una carrera de dato en la tabla system.parts y en la consulta ALTER. Con esto se corrige #6245. #6513 (alexey-milovidov)
- Se corrigió un error en el código de las mutaciones que podía provocar corrupción de memoria. Se corrigió un segfault al leer la dirección
0x14c0que podía producirse debido a la ejecución concurrente deDROP TABLEySELECTdesdesystem.partsosystem.parts_columns. Se corrigió una condición de carrera en la preparación de las consultas de mutación. Se corrigió un interbloqueo causado porOPTIMIZEen tablas Replicated y por operaciones de modificación concurrentes, como ALTER. #6514 (alexey-milovidov)
Versión de ClickHouse 19.11.7.40, 2019-08-14
Corrección de errores
- Se ha corregido la integración con Kafka en esta versión.
- Se corrige un segfault al usar
arrayReducecon argumentos constantes. #6326 (alexey-milovidov) - Se corrigió la monotonicidad de
toFloat(). #6374 (dimarub2000) - Se corrige un segfault con
optimize_skip_unused_shardshabilitado y sin clave de segmentación. #6384 (CurtizJ) - Se corrigió la lógica de la función
arrayEnumerateUniqRanked. #6423 (alexey-milovidov) - Se eliminó el logging adicional excesivamente detallado del handler de MySQL. #6389 (alexey-milovidov)
- Se corrigen el comportamiento incorrecto y los posibles segfaults en las funciones agregadas
topKytopKWeighted. #6404 (CurtizJ) - Ya no se exponen columnas virtuales en la tabla
system.columns. Esto es necesario para la compatibilidad con versiones anteriores. #6406 (alexey-milovidov) - Se corrige un error en la asignación de memoria para campos de cadena en el diccionario de caché con clave compleja. #6447 (alesapin)
- Se corrige un error al habilitar la granularidad adaptativa al crear una nueva réplica para la tabla
Replicated*MergeTree. #6452 (alesapin) - Se corrige un bucle infinito al leer mensajes de Kafka. #6354 (abyss7)
- Se corrigió la posibilidad de que una consulta especialmente diseñada provocara una caída del servidor debido a un desbordamiento de pila en el analizador SQL, así como la posibilidad de desbordamiento de pila en las tablas
MergeyDistributed#6433 (alexey-milovidov) - Se corrigió un error de codificación Gorilla en secuencias pequeñas. #6444 (Enmk)
Mejora
- Permitir al usuario sobrescribir la configuración de
poll_intervaleidle_connection_timeoutde la conexión. #6230 (alexey-milovidov)
Versión de ClickHouse 19.11.5.28, 2019-08-05
Corrección de errores
- Se corrigió la posibilidad de que las consultas quedaran bloqueadas cuando el servidor se sobrecarga. #6301 (alexey-milovidov)
- Se corrigió un FPE en la función yandexConsistentHash. Esto corrige #6304. #6126 (alexey-milovidov)
- Se corrigió un error en la conversión de tipos
LowCardinalityenAggregateFunctionFactory. Esto corrige #6257. #6281 (Nikolai Kochetov) - Se corrigió el análisis sintáctico de los valores
boola partir de las cadenastrueyfalseen los archivos de configuración. #6278 (alesapin) - Se corrigió un error poco frecuente con encabezados de flujo incompatibles en consultas a una tabla
Distributedsobre una tablaMergeTreecuando una parte deWHEREpasa aPREWHERE. #6236 (alesapin) - Se corrigió un desbordamiento en la división entera de un tipo con signo por un tipo sin signo. Esto corrige #6214. #6233 (alexey-milovidov)
Cambio incompatible con versiones anteriores
Kafkasigue sin funcionar.
versión de ClickHouse 19.11.4.24, 2019-08-01
Corrección de errores
- Se corrigió un error al escribir marcas de índices secundarios con granularidad adaptativa. #6126 (alesapin)
- Se corrigieron los modificadores
WITH ROLLUPyWITH CUBEdeGROUP BYcon agregación en dos niveles. #6225 (Anton Popov) - Se corrigió un bloqueo en la función
JSONExtractRaw. Corrige #6195 #6198 (alexey-milovidov) - Se corrigió un segfault en ExternalLoader::reloadOutdated(). #6082 (Vitaly Baranov)
- Se corrigió el caso en el que el servidor podía cerrar los sockets de escucha sin apagarse y seguir atendiendo las consultas restantes. Esto podía provocar que hubiera dos procesos de clickhouse-server en ejecución. A veces, el servidor podía devolver un error
bad_function_callen las consultas restantes. #6231 (alexey-milovidov) - Se corrigió una condición inútil e incorrecta en el campo de actualización para la carga inicial de diccionarios externos mediante ODBC, MySQL, ClickHouse y HTTP. Esto corrige #6069 #6083 (alexey-milovidov)
- Se corrigió una excepción irrelevante en la conversión de
LowCardinality(Nullable)a una columna noNullablecuando no contenía valores NULL (por ejemplo, en una consulta comoSELECT CAST(CAST('Hello' AS LowCardinality(Nullable(String))) AS String). #6094 #6119 (Nikolai Kochetov) - Se corrigió el resultado no determinista de la función de agregación “uniq” en casos extremadamente raros. El error estaba presente en todas las versiones de ClickHouse. #6058 (alexey-milovidov)
- Segfault al establecer un CIDR ligeramente demasiado alto en la función
IPv6CIDRToRange. #6068 (Guillaume Tassery) - Se corrigió una pequeña fuga de memoria cuando el servidor lanzaba muchas excepciones desde muchos contextos diferentes. #6144 (alexey-milovidov)
- Se corrigió la situación en la que el consumidor quedaba pausado antes de la suscripción y no se reanudaba después. #6075 (Ivan) Tenga en cuenta que Kafka no funciona correctamente en esta versión.
- Se limpia el búfer de datos de Kafka de la operación de lectura anterior que finalizó con un error #6026 (Nikolay) Tenga en cuenta que Kafka no funciona correctamente en esta versión.
- Dado que
StorageMergeTree::background_task_handlese inicializa enstartup(),MergeTreeBlockOutputStream::write()puede intentar usarlo antes de que esté inicializado. Basta con comprobar si está inicializado. #6080 (Ivan)
Mejora en compilación/pruebas/empaquetado
- Se añadieron paquetes
rpmoficiales. #5740 (proller) (alesapin) - Se añadió la posibilidad de generar paquetes
.rpmy.tgzcon el scriptpackager. #5769 (alesapin) - Correcciones en el sistema de compilación “Arcadia”. #6223 (proller)
Cambio incompatible con versiones anteriores
Kafkano funciona en esta versión.
Versión de ClickHouse 19.11.3.11, 2019-07-18
Nueva funcionalidad
- Se añadió compatibilidad con sentencias preparadas. #5331 (Alexander) #5630 (alexey-milovidov)
- Códecs de columna
DoubleDeltayGorilla#5600 (Vasily Nemkov) - Se añadió la configuración
os_thread_priority, que permite controlar el valor “nice” de los hilos de procesamiento de consultas que el SO utiliza para ajustar la prioridad dinámica de planificación. Requiere la capacidadCAP_SYS_NICEpara funcionar. Esto implementa #5858 #5909 (alexey-milovidov) - Se implementaron las columnas
_topic,_offset,_keypara el motor Kafka #5382 (Ivan) Tenga en cuenta que Kafka no funciona en esta versión. - Se añadió el combinador de funciones de agregación
-Resample#5590 (hcz) - Funciones de agregación
groupArrayMovingSum(win_size)(x)ygroupArrayMovingAvg(win_size)(x), que calculan la suma/media móvil con o sin limitación del tamaño de la ventana. #5595 (inv2004) - Se añadió el sinónimo
arrayFlatten<->flatten#5764 (hcz) - Se integró la función H3
geoToH3de Uber. #4724 (Remen Ivan) #5805 (alexey-milovidov)
Corrección de errores
- Implementar caché DNS con actualización asíncrona. Un hilo independiente resuelve todos los hosts y actualiza la caché DNS periódicamente (configuración
dns_cache_update_period). Esto debería ayudar cuando la IP de los hosts cambia con frecuencia. #5857 (Anton Popov) - Corrige un segfault en el codec
Deltaque afecta a columnas con valores de menos de 32 bits. El error provocaba corrupción aleatoria de memoria. #5786 (alesapin) - Se corrige un fallo de segmentación durante la fusión de TTL con columnas no físicas en el bloque. #5819 (Anton Popov)
- Se corrigió un error poco frecuente al comprobar una parte con una columna
LowCardinality. Anteriormente,checkDataPartsiempre fallaba en una parte con una columnaLowCardinality. #5832 (alesapin) - Evita que las conexiones queden bloqueadas cuando el pool de hilos del servidor está lleno. Esto es importante para las conexiones de la función de tabla
remoteo para las conexiones a un segmento sin réplicas cuando el tiempo de espera de conexión es largo. Esto corrige #5878 #5881 (alexey-milovidov) - Compatibilidad con argumentos constantes en la función
evalMLModel. Esto corrige #5817 #5820 (alexey-milovidov) - Se corrigió el problema por el que ClickHouse determinaba la zona horaria predeterminada como
UCTen lugar deUTC. Esto soluciona #5804. #5828 (alexey-milovidov) - Se corrigió un error de subdesbordamiento de búfer en
visitParamExtractRaw. Esto corrige #5901 #5902 (alexey-milovidov) - Ahora las consultas distribuidas
DROP/ALTER/TRUNCATE/OPTIMIZE ON CLUSTERse ejecutarán directamente en la réplica líder. #5757 (alesapin) - Se corrige
coalesceparaColumnConstconColumnNullable+ cambios relacionados. #5755 (Artem Zuikov) - Corrige
ReadBufferFromKafkaConsumerpara que siga leyendo mensajes nuevos después decommit(), aunque antes se hubiera quedado bloqueado #5852 (Ivan) - Corrige los resultados de
FULLyRIGHTJOIN al hacer JOIN con clavesNullableen la tabla derecha. #5859 (Artem Zuikov) - Posible corrección de la suspensión indefinida de consultas de baja prioridad. #5842 (alexey-milovidov)
- Se corrigió una condición de carrera que provocaba que algunas consultas no aparecieran en query_log después de ejecutar la consulta
SYSTEM FLUSH LOGS. #5456 #5685 (Anton Popov) - Se corrigió la advertencia de ASan
heap-use-after-freeen ClusterCopier, provocada por un watch que intentaba usar un objeto copier ya eliminado. #5871 (Nikolai Kochetov) - Se corrigió el puntero
StringRefincorrecto que devolvían algunas implementaciones deIColumn::deserializeAndInsertFromArena. Este error afectaba únicamente a las pruebas unitarias. #5973 (Nikolai Kochetov) - Evita que las columnas de origen e intermedias de ARRAY JOIN oculten columnas con el mismo nombre. #5941 (Artem Zuikov)
- Se corrigieron
inserty la consultaselectpara el motor MySQL con comillas de identificadores al estilo de MySQL. #5704 (Winter Zhang) - Ahora la consulta
CHECK TABLEya funciona con la familia de motores MergeTree. Devuelve el estado de la comprobación y, si lo hay, un mensaje para cada parte (o archivo en el caso de motores más simples). Además, se corrigió un error al recuperar una parte dañada. #5865 (alesapin) - Se corrigió el entorno de ejecución de SPLIT_SHARED_LIBRARIES #5793 (Danila Kutenin)
- Se corrigió la inicialización de la zona horaria cuando
/etc/localtimees un enlace simbólico relativo como../usr/share/zoneinfo/Asia/Istanbul#5922 (alexey-milovidov) - clickhouse-copier: Corregido el error de use-after-free al cerrar #5752 (proller)
- Se actualizó
simdjson. Se corrigió el problema por el que algunos JSON no válidos con bytes nulos se analizaban correctamente. #5938 (alexey-milovidov) - Se corrige el cierre de SystemLogs #5802 (Anton Popov)
- Se corrige el bloqueo cuando la condición de
invalidate_querydepende de un diccionario. #6011 (Vitaly Baranov)
Mejora
- Permitir direcciones que no se pueden resolver en la configuración del clúster. Se considerarán no disponibles y se intentará resolverlas en cada intento de conexión. Esto es especialmente útil en Kubernetes. Esto corrige #5714 #5924 (alexey-milovidov)
- Cerrar las conexiones TCP inactivas (con un tiempo de espera de una hora por defecto). Esto es especialmente importante para clústeres grandes con múltiples tablas distribuidas en cada servidor, porque cada servidor puede mantener un pool de conexiones con cada uno de los demás servidores y, tras el pico de concurrencia de consultas, las conexiones pueden quedar colgadas. Esto corrige #5879 #5880 (alexey-milovidov)
- Mejora de la calidad de la función
topK. Se cambió el comportamiento del conjunto SavingSpace para eliminar el último elemento si el nuevo elemento tiene un peso superior. #5833 #5850 (Guillaume Tassery) - Las funciones de URL para trabajar con dominios ahora también funcionan con URL incompletas sin esquema #5725 (alesapin)
- Se añadieron sumas de comprobación a la tabla
system.parts_columns. #5874 (Nikita Mikhaylov) - Se añadió el tipo de dato
Enumcomo sinónimo deEnum8oEnum16. #5886 (dimarub2000) - Variante de transposición completa de bits para el códec
T64. Puede ofrecer una mejor compresión conzstd. #5742 (Artem Zuikov) - Ahora, una condición sobre la función
startsWithpuede usar la clave primaria. Esto corrige #5310 y #5882 #5919 (dimarub2000) - Permite usar
clickhouse-copiercon una topología de clúster con replicación cruzada al permitir un nombre de base de datos vacío. #5745 (nvartolomei) - Usar
UTCcomo zona horaria predeterminada en sistemas sintzdata(p. ej., un contenedor Docker básico). Antes de este parche, aparecía el mensaje de errorCould not determine local time zoney el servidor o el cliente no podían iniciarse. #5827 (alexey-milovidov) - Se restableció la compatibilidad con argumentos de coma flotante en la función
quantileTimingpara mantener la compatibilidad con versiones anteriores. #5911 (alexey-milovidov) - Mostrar en los mensajes de error qué tabla tiene una columna faltante. #5768 (Ivan)
- Impedir ejecutar una consulta con el mismo query_id por distintos usuarios #5430 (proller)
- Código más robusto para enviar métricas a Graphite. Funcionará incluso durante una operación prolongada de
RENAME TABLEmúltiple. #5875 (alexey-milovidov) - Se mostrarán mensajes de error más descriptivos cuando ThreadPool no pueda programar una tarea para su ejecución. Esto corrige #5305 #5801 (alexey-milovidov)
- Se invierte ngramSearch para hacerlo más intuitivo #5807 (Danila Kutenin)
- Se añadió el análisis de usuarios al constructor del motor HDFS #5946 (akonyaev90)
- Actualizar el valor predeterminado del
parámetro max_ast_elements#5933 (Artem Konovalov) - Se añadió el concepto de configuraciones obsoletas. La configuración obsoleta
allow_experimental_low_cardinality_typepuede usarse sin ningún efecto. 0f15c01c6802f7ce1a1494c12c846be8c98944cd Alexey Milovidov
Mejora del rendimiento
- Se incrementa el número de streams para hacer
SELECTdesde la tabla Merge y lograr una distribución más uniforme de los hilos. Se añadió la configuraciónmax_streams_multiplier_for_merge_tables. Esto corrige #5797 #5915 (alexey-milovidov)
Mejora de compilación/pruebas/empaquetado
- Añadida una prueba de compatibilidad con versiones anteriores para la interacción cliente-servidor con distintas versiones de ClickHouse. #5868 (alesapin)
- Información sobre la cobertura de pruebas en cada commit y pull request. #5896 (alesapin)
- Compatibilidad con AddressSanitizer para admitir nuestros asignadores personalizados (
ArenaandArenaWithFreeLists) y mejorar la depuración de errores de “use-after-free”. #5728 (akuzm) - Se cambia a la implementación de libunwind de LLVM para el manejo de excepciones de C++ y la impresión de trazas de pila #4828 (Nikita Lapkov)
- Se añaden dos advertencias más de -Weverything #5923 (alexey-milovidov)
- Se permite compilar ClickHouse con el sanitizador de memoria. #3949 (alexey-milovidov)
- Se corrigió el informe de ubsan sobre la función
bitTesten la prueba de fuzzing. #5943 (alexey-milovidov) - Docker: se añadió la posibilidad de inicializar una instancia de ClickHouse que requiere autenticación. #5727 (Korviakov Andrey)
- Se actualiza librdkafka a la versión 1.1.0 #5872 (Ivan)
- Añadir un timeout global para las pruebas de integración y deshabilitar algunas en el código de pruebas. #5741 (alesapin)
- Se corrigen algunos fallos de ThreadSanitizer. #5854 (akuzm)
- La opción
--no-undefinedobliga al enlazador a comprobar, durante el proceso de enlace, que todos los nombres externos existan. Es muy útil para rastrear las dependencias reales entre bibliotecas en el modo de compilación dividida. #5855 (Ivan) - Se agregó una prueba de rendimiento para #5797 #5914 (alexey-milovidov)
- Se solucionó un problema de compatibilidad con gcc-7. #5840 (alexey-milovidov)
- Se añadió compatibilidad con gcc-9. Esto soluciona #5717 #5774 (alexey-milovidov)
- Se corrigió un error por el que
libunwindpodía enlazarse incorrectamente. #5948 (alexey-milovidov) - Se corrigieron algunas advertencias detectadas por PVS-Studio. #5921 (alexey-milovidov)
- Se añadió compatibilidad inicial con el analizador estático
clang-tidy. #5806 (alexey-milovidov) - Convertir las macros endian de BSD/Linux ( ‘be64toh’ y ‘htobe64’) a sus equivalentes para Mac OS X #5785 (Fu Chen)
- Mejorada la guía de pruebas de integración. #5796 (Vladimir Chebotarev)
- Corrección de la compilación en macOS + gcc9 #5822 (filimonov)
- Se corrige un error tipográfico difícil de detectar: aggreAGte -> aggregate. #5753 (akuzm)
- Corrección de la compilación en FreeBSD #5760 (proller)
- Agregar un enlace al canal experimental de YouTube en el sitio web #5845 (Ivan Blinkov)
- CMake: se añade una opción para flags de cobertura: WITH_COVERAGE #5776 (proller)
- Se corrige el tamaño inicial de algunos PODArray inline. #5787 (akuzm)
- clickhouse-server.postinst: corrige la detección del sistema operativo en CentOS 6 #5788 (proller)
- Se añadió la generación de paquetes de Arch Linux. #5719 (Vladimir Chebotarev)
- Separar Common/config.h por bibliotecas (dbms) #5715 (proller)
- Correcciones en la plataforma de compilación “Arcadia” #5795 (proller)
- Correcciones para una compilación no convencional (gcc9, sin submódulos) #5792 (proller)
- Se requiere un tipo explícito en unalignedStore porque demostró ser propenso a errores #5791 (akuzm)
- Corrige la compilación para macOS #5830 (filimonov)
- Prueba de rendimiento de la nueva funcionalidad JIT con un conjunto de datos más grande, según se solicitó aquí #5263 #5887 (Guillaume Tassery)
- Ejecutar pruebas stateful en la prueba de estrés 12693e568722f11e19859742f56428455501fd2a (alesapin)
Cambio incompatible con versiones anteriores
Kafkano funciona en esta versión.adaptive_index_granularity= 10MB se habilita de forma predeterminada para las nuevas tablasMergeTree. Si creó nuevas tablas MergeTree en la versión 19.11+, no será posible volver a versiones anteriores a la 19.6. #5628 (alesapin)- Se eliminaron los diccionarios integrados obsoletos y no documentados que usaba Yandex.Metrica. Las funciones
OSIn,SEIn,OSToRoot,SEToRoot,OSHierarchy,SEHierarchyya no están disponibles. Si está utilizando estas funciones, envíe un correo electrónico a clickhouse-feedback@yandex-team.com. Nota: en el último momento decidimos conservar estas funciones por un tiempo. #5780 (alexey-milovidov)
Versión 19.10 de ClickHouse
Versión de ClickHouse 19.10.1.5, 2019-07-12
Nueva funcionalidad
- Se añade un nuevo códec para columnas:
T64. Está pensado para columnas (U)IntX/EnumX/Data(Time)/DecimalX. Debería funcionar bien en columnas con valores constantes o de rango pequeño. El propio códec permite ampliar o reducir el tipo de dato sin necesidad de recompresión. #5557 (Artem Zuikov) - Se añade el motor de base de datos
MySQL, que permite ver todas las tablas de un servidor MySQL remoto #5599 (Winter Zhang) - Implementación de
bitmapContains. Es 2 veces más rápida quebitmapHasAnysi el segundo bitmap contiene un único elemento. #5535 (Zhichang Yu) - Soporte para la función
crc32(con un comportamiento exactamente igual que en MySQL o PHP). No la use si necesita una función hash. #5661 (Remen Ivan) - Se implementaron consultas
SYSTEM START/STOP DISTRIBUTED SENDSpara controlar las inserciones asíncronas en tablasDistributed. #4935 (Winter Zhang)
Corrección de errores
- Ignorar los límites de ejecución de consultas y el tamaño máximo de las partes para los límites de merge durante la ejecución de mutaciones. #5659 (Anton Popov)
- Se corrige un error que puede provocar la deduplicación de bloques normales (extremadamente rara) y la inserción de bloques duplicados (con más frecuencia). #5549 (alesapin)
- Corrección de la función
arrayEnumerateUniqRankedpara argumentos con arrays vacíos #5559 (proller) - No suscribirse a topics de Kafka sin intención de leer mensajes. #5698 (Ivan)
- Hacer que la configuración
join_use_nullsno tenga efecto en tipos que no pueden estar dentro de Nullable #5700 (Olga Khvostikova) - Se corrigen los errores
Incorrect size of index granularity#5720 (coraxster) - Se corrige el desbordamiento al convertir de Float a Decimal #5607 (coraxster)
- Vaciar el búfer cuando se llame al destructor de
WriteBufferFromHDFS. Esto corrige la escritura enHDFS. #5684 (Xindong Peng)
Mejora
- Trata las celdas vacías en
CSVcomo valores predeterminados cuando la configuracióninput_format_defaults_for_omitted_fieldsestá habilitada. #5625 (akuzm) - Carga no bloqueante de diccionarios externos. #5567 (Vitaly Baranov)
- Los tiempos de espera de red pueden cambiarse dinámicamente en conexiones ya establecidas según la configuración. #4558 (Konstantin Podshumok)
- Uso de “public_suffix_list” para las funciones
firstSignificantSubdomain,cutToFirstSignificantSubdomain. Utiliza una tabla hash perfecta generada porgperf, con una lista generada a partir del archivo: https://publicsuffix.org/list/public_suffix_list.dat. (por ejemplo, ahora reconocemos el dominioac.ukcomo no significativo). #5030 (Guillaume Tassery) - Se adoptó el tipo de dato
IPv6en las tablas del sistema; se unificaron las columnas de información del cliente ensystem.processesysystem.query_log. #5640 (alexey-milovidov) - Uso de sesiones para conexiones con el protocolo de compatibilidad con MySQL. #5476 #5646 (Yuriy Baranov)
- Admite más consultas
ALTERON CLUSTER. #5593 #5613 (sundyli) - Admite la sección
<logger>en el archivo de configuración declickhouse-local. #5540 (proller) - Permite ejecutar consultas con la función de tabla
remoteenclickhouse-local. #5627 (proller)
Mejora del rendimiento
- Se agregó la posibilidad de escribir la marca final al final de las columnas de MergeTree. Esto permite evitar lecturas innecesarias para las claves que quedan fuera del rango de datos de la tabla. Solo se habilita cuando se usa la granularidad adaptativa del índice. #5624 (alesapin)
- Se mejoró el rendimiento de las tablas MergeTree en sistemas de archivos muy lentos al reducir la cantidad de llamadas al sistema
stat. #5648 (alexey-milovidov) - Se corrigió una degradación del rendimiento en la lectura de tablas MergeTree introducida en la versión 19.6. Corrige #5631. #5633 (alexey-milovidov)
Mejora de compilación/pruebas/empaquetado
- Se implementó
TestKeepercomo una implementación de la interfaz de ZooKeeper utilizada para las pruebas #5643 (alexey-milovidov) (levushkin aleksej) - A partir de ahora, las pruebas
.sqlpueden ejecutarse de forma aislada por servidor, en paralelo y con una base de datos aleatoria. Esto permite ejecutarlas más rápido, añadir nuevas pruebas con configuraciones de servidor personalizadas y garantizar que unas pruebas no afecten a otras. #5554 (Ivan) - Se eliminaron
<name>y<metrics>de las pruebas de rendimiento #5672 (Olga Khvostikova) - Se corrigió la prueba de rendimiento “select_format” para los formatos
Pretty#5642 (alexey-milovidov)
Versión de ClickHouse 19.9
Versión de ClickHouse 19.9.3.31, 2019-07-05
Corrección de errores
- Se corrigió un segfault en el códec Delta que afecta a columnas con valores de menos de 32 bits. El error provocaba corrupción aleatoria de memoria. #5786 (alesapin)
- Se corrigió un error poco frecuente en la comprobación de una parte con una columna LowCardinality. #5832 (alesapin)
- Se corrigió un segfault en la merge de TTL con columnas no físicas en el bloque. #5819 (Anton Popov)
- Se corrigió una posible espera infinita de las consultas de baja prioridad. #5842 (alexey-milovidov)
- Se corrigió la forma en que ClickHouse determina la zona horaria predeterminada como UCT en lugar de UTC. #5828 (alexey-milovidov)
- Se corrigió un error relacionado con la ejecución de consultas distribuidas DROP/ALTER/TRUNCATE/OPTIMIZE ON CLUSTER en la réplica seguidora antes que en la réplica líder. Ahora se ejecutarán directamente en la réplica líder. #5757 (alesapin)
- Se corrigió una condición de carrera que hacía que algunas consultas pudieran no aparecer en
query_loginmediatamente después de la consulta SYSTEM FLUSH LOGS. #5685 (Anton Popov) - Se añadió la compatibilidad que faltaba para argumentos constantes en la función
evalMLModel. #5820 (alexey-milovidov)
Versión de ClickHouse 19.9.2.4, 2019-06-24
Nueva funcionalidad
- Muestra información sobre las partes congeladas en la tabla
system.parts. #5471 (proller) - Solicita la contraseña del cliente al iniciar clickhouse-client en una TTY si no se ha establecido en los argumentos #5092 (proller)
- Implementa las funciones
dictGetydictGetOrDefaultpara tipos Decimal. #5394 (Artem Zuikov)
Mejora
- init de Debian: añadir tiempo de espera para detener el servicio #5522 (proller)
- Añadir una opción de configuración que, de forma predeterminada, prohíbe crear tablas con tipos sospechosos para LowCardinality #5448 (Olga Khvostikova)
- Las funciones de regresión devuelven pesos del modelo cuando no se usan como State en la función
evalMLMethod. #5411 (Quid37) - Renombrar y mejorar los métodos de regresión. #5492 (Quid37)
- Interfaces más claras para los buscadores de cadenas. #5586 (Danila Kutenin)
Corrección de errores
- Soluciona una posible pérdida de datos en Kafka #5445 (Ivan)
- Se corrige un posible bucle infinito en el formato
PrettySpacecuando se llama con cero columnas #5560 (Olga Khvostikova) - Se corrigió un error de desbordamiento de UInt32 en modelos lineales. Se permitió la evaluación de modelos de ML con un argumento
modelno constante. #5516 (Nikolai Kochetov) ALTER TABLE ... DROP INDEX IF EXISTS ...no debería generar una excepción si el índice especificado no existe #5524 (Gleb Novikov)- Se corrige un segfault con
bitmapHasAnyen una subconsulta escalar #5528 (Zhichang Yu) - Se corrigió un error que impedía que el pool de conexiones de replicación volviera a intentar resolver el host, incluso después de vaciar la caché de DNS. #5534 (alesapin)
- Se corrigió
ALTER ... MODIFY TTLen ReplicatedMergeTree. #5539 (Anton Popov) - Se corrigió INSERT en tabla Distributed con columna MATERIALIZED #5429 (Azat Khuzhin)
- Se corrigió el error bad alloc al truncar el almacenamiento Join #5437 (TCeason)
- En versiones recientes del paquete tzdata, algunos archivos ahora son enlaces simbólicos. El mecanismo actual para detectar la zona horaria predeterminada falla y devuelve nombres incorrectos para algunas zonas horarias. Ahora, al menos forzamos que el nombre de la zona horaria sea el contenido de TZ, si se proporciona. #5443 (Ivan)
- Se corrigieron algunos casos extremadamente raros del buscador MultiVolnitsky cuando la longitud total de las subcadenas objetivo constantes era de al menos 16 KB. El algoritmo omitía o sobrescribía los resultados anteriores, lo que puede dar lugar a un resultado incorrecto de
multiSearchAny. #5588 (Danila Kutenin) - Se corrigió el problema por el que las solicitudes de ExternalData no podían usar ajustes de ClickHouse. Además, por ahora no se pueden usar los ajustes
date_time_input_formatylow_cardinality_allow_in_native_formatdebido a la ambigüedad de sus nombres (en los datos externos puede interpretarse como formato de tabla y en la consulta puede ser un ajuste). #5455 (Danila Kutenin) - Se corrigió un error por el que las partes se eliminaban solo del FS sin eliminarlas de ZooKeeper. #5520 (alesapin)
- Eliminar el logging de depuración del protocolo MySQL #5478 (alexey-milovidov)
- Ignorar ZNONODE durante el procesamiento de consultas DDL #5489 (Azat Khuzhin)
- Se corrigió el tipo de columna del resultado de
UNION ALL. En algunos casos, había datos inconsistentes y tipos de columna inconsistentes en las columnas resultantes. #5503 (Artem Zuikov) - Lanzar una excepción ante enteros incorrectos en las funciones
dictGetTen lugar de bloquearse. #5446 (Artem Zuikov) - Corrige los valores incorrectos de
element_countyload_factordel diccionario hash en la tablasystem.dictionaries. #5440 (Azat Khuzhin)
Mejora de compilación/pruebas/empaquetado
- Se corrigió la compilación sin compatibilidad con compresión HTTP
Brotli(variable de CMakeENABLE_BROTLI=OFF). #5521 (Anton Yuzhaninov) - Se incluyó roaring.h como roaring/roaring.h #5523 (Orivej Desh)
- Se corrigieron las advertencias de gcc9 en hyperscan (¡la directiva #line es malvada!) #5546 (Danila Kutenin)
- Se corrigieron todas las advertencias al compilar con gcc-9. Se solucionaron algunos problemas de contrib. Se corrigió un ICE de gcc9 y se notificó en bugzilla. #5498 (Danila Kutenin)
- Se corrigió el enlazado con lld #5477 (alexey-milovidov)
- Se eliminaron especializaciones no utilizadas en Diccionarios #5452 (Artem Zuikov)
- Se mejoraron las pruebas de rendimiento de formateo y análisis de tablas para distintos tipos de archivos #5497 (Olga Khvostikova)
- Correcciones para la ejecución paralela de pruebas #5506 (proller)
- Docker: usar la configuración de clickhouse-test #5531 (proller)
- Se corrigió la compilación para FreeBSD #5447 (proller)
- Se actualizó boost a 1.70 #5570 (proller)
- Se corrigió la compilación de clickhouse como submódulo #5574 (proller)
- Se mejoraron las pruebas de rendimiento de JSONExtract #5444 (Vitaly Baranov)
versión de ClickHouse 19.8
Versión de ClickHouse 19.8.3.8, 2019-06-11
Nuevas características
- Se agregaron funciones para trabajar con JSON #4686 (hcz) #5124. (Vitaly Baranov)
- Se añade una función basename, con un comportamiento similar al de la función basename, que existe en muchos lenguajes (
os.path.basenameen Python,basenameen PHP, etc…). Funciona tanto con una ruta de tipo UNIX como con una ruta de Windows. #5136 (Guillaume Tassery) - Se añadió la sintaxis
LIMIT n, m BYoLIMIT m OFFSET n BYpara definir un desplazamiento de n en la cláusula LIMIT BY. #5138 (Anton Popov) - Se añadió el nuevo tipo de datos
SimpleAggregateFunction, que permite usar columnas con agregación ligera en unAggregatingMergeTree. Solo puede usarse con funciones simples comoany,anyLast,sum,minymax. #4629 (Boris Granveaud) - Se añadió soporte para argumentos no constantes en la función
ngramDistance#5198 (Danila Kutenin) - Se añadieron las funciones
skewPop,skewSamp,kurtPopykurtSamppara calcular, respectivamente, la asimetría poblacional, la asimetría muestral, la curtosis y la curtosis muestral de una secuencia. #5200 (hcz) - Se admite la operación de cambio de nombre para el almacenamiento
MaterializeView. #5209 (Guillaume Tassery) - Se añadió un servidor que permite conectarse a ClickHouse con un cliente MySQL. #4715 (Yuriy Baranov)
- Se agregaron las funciones
toDecimal*OrZeroytoDecimal*OrNull. #5291 (Artem Zuikov) - Se admiten tipos Decimal en las funciones:
quantile,quantiles,median,quantileExactWeighted,quantilesExactWeighted, medianExactWeighted. #5304 (Artem Zuikov) - Se añadió la función
toValidUTF8, que reemplaza todos los caracteres UTF-8 no válidos por el carácter de reemplazo � (U+FFFD). #5322 (Danila Kutenin) - Se añadió la función
format. Da formato a un patrón constante (patrón de formato simplificado de Python) con las cadenas indicadas en los argumentos. #5330 (Danila Kutenin) - Se añadió la tabla
system.detached_parts, que contiene información sobre las partes desasociadas de las tablasMergeTree. #5353 (akuzm) - Se añadió la función
ngramSearchpara calcular la diferencia asimétrica entre needle y haystack. #5418#5422 (Danila Kutenin) - Implementación de métodos básicos de aprendizaje automático (regresión lineal estocástica y regresión logística) mediante la interfaz de funciones de agregación. Incluye distintas estrategias para actualizar los pesos del modelo (descenso de gradiente simple, método de momentum y método de Nesterov). También admite minilotes de tamaño configurable. #4943 (Quid37)
- Implementadas las funciones
geohashEncodeygeohashDecode. #5003 (Vasily Nemkov) - Se añadió la función de agregado
timeSeriesGroupSum, que puede agregar distintas series temporales cuyas marcas de tiempo de muestra no están alineadas. Utiliza interpolación lineal entre dos marcas de tiempo de muestra y luego suma las series temporales. Se añadió la función de agregadotimeSeriesGroupRateSum, que calcula la tasa de las series temporales y luego suma las tasas. #4542 (Yangkuan Liu) - Se agregaron las funciones
IPv4CIDRtoIPv4RangeyIPv6CIDRtoIPv6Rangepara calcular los límites inferior y superior de una IP dentro de la subred a partir de un CIDR. #5095 (Guillaume Tassery) - Añadir un encabezado X-ClickHouse-Summary al enviar una consulta por HTTP con la configuración
send_progress_in_http_headershabilitada. Devuelve la información habitual de X-ClickHouse-Progress, además de información como cuántas filas y bytes se insertaron en la consulta. #5116 (Guillaume Tassery)
Mejoras
- Se añadió la configuración
max_parts_in_totalpara la familia de tablas MergeTree (predeterminado: 100 000), que evita la especificación insegura de la clave de partición #5166. #5171 (alexey-milovidov) clickhouse-obfuscator: deriva la semilla de columnas individuales combinando la semilla inicial con el nombre de la columna, y no con su posición. Está pensado para transformar conjuntos de datos con varias tablas relacionadas, de modo que las tablas puedan seguir usándose en operacionesJOINdespués de la transformación. #5178 (alexey-milovidov)- Se añadieron las funciones
JSONExtractRaw,JSONExtractKeyAndValues. Se renombraron las funcionesjsonExtract<type>aJSONExtract<type>. Cuando algo sale mal, estas funciones devuelven los valores correspondientes, noNULL. Se modificó la funciónJSONExtract; ahora obtiene el tipo de retorno de su último parámetro y no inyectaNullable. Se implementó fallback a RapidJSON en caso de que las instrucciones AVX2 no estén disponibles. La biblioteca Simdjson se actualizó a una nueva versión. #5235 (Vitaly Baranov) - Ahora, las funciones
ifymultiIfya no dependen delNullablede la condición, sino de las ramas, para mantener la compatibilidad con SQL. #5238 (Jian Wu) - El predicado
Inahora genera un resultadoNullsi la entrada esNull, como la funciónEqual. #5152 (Jian Wu) - Comprueba el límite de tiempo cada (flush_interval / poll_timeout) filas leídas de Kafka. Esto permite interrumpir con más frecuencia la lectura del consumidor de Kafka y comprobar los límites de tiempo de los streams de nivel superior #5249 (Ivan)
- Enlazar rdkafka con SASL integrado. Debería permitir usar la autenticación SASL SCRAM #5253 (Ivan)
- Versión por lotes de RowRefList para ALL JOINS. #5267 (Artem Zuikov)
- clickhouse-server: mensajes de error al escuchar más informativos. #5268 (proller)
- Soporte de diccionarios en clickhouse-copier para funciones en
<sharding_key>#5270 (proller) - Añade la nueva configuración
kafka_commit_every_batchpara regular la política de commit de Kafka. Permite establecer el modo de commit: después de procesar cada lote de mensajes o después de escribir el bloque completo en el almacenamiento. Es una disyuntiva entre perder algunos mensajes o leerlos dos veces en situaciones extremas. #5308 (Ivan) - Se agregó compatibilidad con otros tipos de enteros sin signo en
windowFunnel. #5320 (sundyli) - Permitir ocultar la columna virtual
_tableen el motor Merge. #5325 (Ivan) - Hacer que las funciones de agregación
sequenceMatchadmitan otros tipos enteros sin signo #5339 (sundyli) - Mejores mensajes de error cuando es muy probable que una discrepancia en la suma de comprobación se deba a fallos de hardware. #5355 (alexey-milovidov)
- Comprobar que las tablas subyacentes admitan el muestreo para
StorageMerge#5366 (Ivan) - Cerrar las conexiones de MySQL tras su uso en diccionarios externos. Está relacionado con la incidencia n.º 893. #5395 (Clément Rodriguez)
- Mejoras en MySQL Wire Protocol. Se cambió el nombre del formato a MySQLWire. Se usa RAII para llamar a RSA_free. Se desactiva SSL si no se puede crear el contexto. #5419 (Yuriy Baranov)
- clickhouse-client: permite ejecutarse aunque el archivo de historial sea inaccesible (solo lectura, sin espacio en disco, el archivo es un directorio, …). #5431 (proller)
- Se respeta la configuración de la consulta en los INSERT asíncronos en tablas Distributed. #4936 (TCeason)
- Se renombraron las funciones
leastSqrcomosimpleLinearRegression,LinearRegressioncomolinearRegressionyLogisticRegressioncomologisticRegression. #5391 (Nikolai Kochetov)
Mejoras del rendimiento
- Paralelización del procesamiento de partes de tablas MergeTree no replicadas en la consulta ALTER MODIFY. #4639 (Ivan Kush)
- Optimizaciones en la extracción con expresiones regulares. #5193 #5191 (Danila Kutenin)
- No se añade la columna de la clave de join derecha al resultado del join si solo se usa en la cláusula ON del join. #5260 (Artem Zuikov)
- Congelar el búfer de Kafka después de la primera respuesta vacía. Esto evita múltiples invocaciones de
ReadBuffer::next()para resultados vacíos en algunos flujos de análisis de filas. #5283 (Ivan) - Optimización de la función
concatpara múltiples argumentos. #5357 (Danila Kutenin) - Optimización de consultas. Permitir el push down de la sentencia IN al reescribir un join por coma/cross como un inner join. #5396 (Artem Zuikov)
- Sustitución de nuestra implementación de LZ4 por la de referencia para lograr una descompresión más rápida. #5070 (Danila Kutenin)
- Implementación de MSD radix sort (basada en kxsort) y de la ordenación parcial. #5129 (Evgenii Pravda)
Correcciones de errores
- Se corrige el requisito de columnas con join en push #5192 (Winter Zhang)
- Se corrigió un error por el cual, cuando ClickHouse se ejecutaba mediante systemd, el comando
sudo service clickhouse-server forcerestartno funcionaba como se esperaba. #5204 (proller) - Se corrigen los códigos de error HTTP en DataPartsExchange (el servidor HTTP entre servidores en el puerto 9009 siempre devolvía el código 200, incluso cuando había errores). #5216 (proller)
- Se corrige SimpleAggregateFunction para String de longitud superior a MAX_SMALL_STRING_SIZE #5311 (Azat Khuzhin)
- Se corrige el error en la conversión de
DecimalaNullable(Decimal)en IN. Se admiten otras conversiones de Decimal a Decimal (incluidas distintas escalas). #5350 (Artem Zuikov) - Se corrigió la corrupción de la FPU en la biblioteca simdjson, que provocaba cálculos incorrectos de las funciones de agregado
uniqHLLyuniqCombined, así como de funciones matemáticas comolog. #5354 (alexey-milovidov) - Se corrigió el manejo de casos mixtos const/no const en las funciones JSON. #5435 (Vitaly Baranov)
- Se corrige la función
retention. Ahora, todas las condiciones que se cumplen en una fila de datos se añaden al estado de los datos. #5119 (小路) - Se corrige el tipo de resultado de
quantileExactcon tipos Decimal. #5304 (Artem Zuikov)
Documentación
- Traducir la documentación de
CollapsingMergeTreeal chino. #5168 (张风啸) - Traducir parte de la documentación sobre motor de tablas al chino. #5134 #5328 (never lee)
Mejoras en compilación/pruebas/empaquetado
- Se corrigieron algunos informes del sanitizador que mostraban un posible uso de memoria después de su liberación.#5139 #5143 #5393 (Ivan)
- Se sacaron las pruebas de rendimiento de directorios separados para mayor comodidad. #5158 (alexey-milovidov)
- Se corrigieron pruebas de rendimiento incorrectas. #5255 (alesapin)
- Se añadió una herramienta para calcular sumas de comprobación producidas por inversiones de bits, con el fin de depurar problemas de hardware. #5334 (alexey-milovidov)
- Se hizo más utilizable el script runner. #5340#5360 (filimonov)
- Se añadió una breve instrucción sobre cómo escribir pruebas de rendimiento. #5408 (alesapin)
- Se añadió la capacidad de hacer substitutions en consultas create, fill y drop en las pruebas de rendimiento #5367 (Olga Khvostikova)
Versión de ClickHouse 19.7
Versión de ClickHouse 19.7.5.29, 2019-07-05
Corrección de errores
- Se corrigió una regresión del rendimiento en algunas consultas con JOIN. #5192 (Winter Zhang)
Versión de ClickHouse 19.7.5.27, 2019-06-09
Nuevas características
- Se añadieron las funciones relacionadas con
bitmap,bitmapHasAnyybitmapHasAll, análogas a las funcioneshasAnyyhasAllpara Array. #5279 (Sergi Vladykin)
Correcciones de errores
- Corrige un segfault en
minmaxINDEX con un valor NULL. #5246 (Nikita Vasilev) - Marca todas las columnas de entrada en LIMIT BY como salida obligatoria. Esto corrige el error ‘Not found column’ en algunas consultas distribuidas. #5407 (Constantin S. Pan)
- Corrige el error “Column ‘0’ already exists” en
SELECT .. PREWHEREsobre una columna con DEFAULT. #5397 (proller) - Corrige la consulta
ALTER MODIFY TTLenReplicatedMergeTree. #5539 (Anton Popov) - Evita que el servidor falle cuando los consumers de Kafka no pueden iniciarse. #5285 (Ivan)
- Corrige las funciones de bitmap que producían resultados incorrectos. #5359 (Andy Yang)
- Corrige
element_countpara diccionarios hash (sin incluir duplicados). #5440 (Azat Khuzhin) - Usa el contenido de la variable de entorno TZ como nombre de la zona horaria. Esto ayuda a detectar correctamente la zona horaria predeterminada en algunos casos. #5443 (Ivan)
- No intenta convertir enteros en las funciones
dictGetT, porque no funciona correctamente. En su lugar, lanza una excepción. #5446 (Artem Zuikov) - Corrige la configuración en la solicitud HTTP de ExternalData. #5455 (Danila Kutenin)
- Corrige un error por el que las partes solo se eliminaban del FS sin eliminarlas de ZooKeeper. #5520 (alesapin)
- Corrige un fallo de segmentación en la función
bitmapHasAny. #5528 (Zhichang Yu) - Corrige el error por el que el connection pool de replicación no reintentaba resolver el host, incluso cuando se había vaciado la caché DNS. #5534 (alesapin)
- Corrige la consulta
DROP INDEX IF EXISTS. Ahora, la consultaALTER TABLE ... DROP INDEX IF EXISTS ...no lanza una excepción si el índice indicado no existe. #5524 (Gleb Novikov) - Corrige la columna de supertipo en union all. Había casos con datos incoherentes y tipos de columna inconsistentes en las columnas resultantes. #5503 (Artem Zuikov)
- Omite ZNONODE durante el procesamiento de consultas DDL. Antes, si otro nodo eliminaba el znode en la cola de tareas, el que no lo había procesado, pero ya había obtenido la lista de hijos, terminaba el hilo DDLWorker. #5489 (Azat Khuzhin)
- Corrige
INSERTen una tabla Distributed() con una columna MATERIALIZED. #5429 (Azat Khuzhin)
versión de ClickHouse 19.7.3.9, 2019-05-30
Nuevas características
- Permite limitar el rango de una configuración que el usuario puede especificar. Estas restricciones se pueden configurar en el perfil de configuración del usuario. #4931 (Vitaly Baranov)
- Añade una segunda versión de la función
groupUniqArraycon un parámetro opcionalmax_sizeque limita el tamaño del array resultante. Este comportamiento es similar al de la funcióngroupArray(max_size)(x). #5026 (Guillaume Tassery) - Para los formatos de archivo de entrada TSVWithNames/CSVWithNames, el orden de las
columnas ahora puede determinarse a partir de la cabecera del archivo. Esto se controla con el
parámetro
input_format_with_names_use_header. #5081 (Alexander)
Correcciones de errores
- Bloqueo con uncompressed_cache + JOIN durante la combinación (#5197) #5133 (Danila Kutenin)
- Fallo de segmentación en una consulta de clickhouse-client a tablas del sistema. #5066 #5127 (Ivan)
- Pérdida de datos con carga intensa a través de KafkaEngine (#4736) #5080 (Ivan)
- Se corrigió una condición de carrera de datos muy poco frecuente que podía producirse al ejecutar una consulta con UNION ALL que involucraba al menos dos SELECTs de system.columns, system.tables, system.parts, system.parts_tables o tablas de la familia Merge, y al realizar ALTER de las columnas de las tablas relacionadas de forma concurrente. #5189 (alexey-milovidov)
Mejoras del rendimiento
- Se usa radix sort para ordenar por una única columna numérica en
ORDER BYsinLIMIT. #5106, #4439 (Evgenii Pravda, alexey-milovidov)
Documentación
- Traducción al chino de la documentación de algunos motores de tabla. #5107, #5094, #5087 (张风啸), #5068 (never lee)
Mejoras de compilación/pruebas/empaquetado
- Mostrar correctamente los caracteres UTF-8 en
clickhouse-test. #5084 (alexey-milovidov) - Añadir un parámetro de línea de comandos para clickhouse-client que cargue siempre los datos de sugerencias. #5102 (alexey-milovidov)
- Resolver algunas advertencias de PVS-Studio. #5082 (alexey-milovidov)
- Actualizar LZ4 #5040 (Danila Kutenin)
- Añadir gperf a los requisitos de compilación para la próxima pull request #5030. #5110 (proller)
Versión de ClickHouse 19.6
Versión de ClickHouse 19.6.3.18, 2019-06-13
Correcciones de errores
- Se corrigió el pushdown de la condición IN para las consultas de las funciones de tabla
mysqlyodbc, así como para los motores de tabla correspondientes. Esto corrige #3540 y #2384. #5313 (alexey-milovidov) - Se corrigió un interbloqueo en Zookeeper. #5297 (github1youlc)
- Se permitieron decimales entrecomillados en CSV. #5284 (Artem Zuikov
- Se prohibió la conversión de Inf/NaN de coma flotante a Decimals (genera una excepción). #5282 (Artem Zuikov)
- Se corrigió una condición de carrera en la consulta RENAME. #5247 (Winter Zhang)
- Se deshabilitó temporalmente LFAlloc. El uso de LFAlloc puede provocar una gran cantidad de MAP_FAILED al asignar UncompressedCache y, como resultado, fallos en las consultas en servidores con alta carga. cfdba93(Danila Kutenin)
Lanzamiento de ClickHouse 19.6.2.11, 2019-05-13
Nuevas características
- Expresiones TTL para columnas y tablas. #4212 (Anton Popov)
- Se añadió compatibilidad con la compresión
brotlipara las respuestas HTTP (Accept-Encoding: br) #4388 (Mikhail) - Se añadió la nueva función
isValidUTF8para comprobar si un conjunto de bytes está correctamente codificado en UTF-8. #4934 (Danila Kutenin) - Se añade la nueva política de balanceo de carga
first_or_random, que envía las consultas al primer host especificado y, si no está accesible, las envía a hosts aleatorios del segmento. Resulta útil para configuraciones de topología con replicación cruzada. #5012 (nvartolomei)
Características experimentales
- Se agrega el ajuste
index_granularity_bytes(granularidad adaptativa del índice) para la familia de tablas MergeTree*. #4826 (alesapin)
Mejoras
- Se añadió compatibilidad con argumentos de tamaño y longitud no constantes y negativos para la función
substringUTF8. #4989 (alexey-milovidov) - Se deshabilitó el push-down sobre la tabla derecha en
left join, sobre la tabla izquierda enright joiny sobre ambas tablas enfull join. Esto corrige resultados de JOIN incorrectos en algunos casos. #4846 (Ivan) clickhouse-copier: carga automática de la configuración de la tarea a partir de la opción--task-file#4876 (proller)- Se añadió un manejador de errores tipográficos para la factoría de almacenamiento y la factoría de funciones de tabla. #4891 (Danila Kutenin)
- Se añadió compatibilidad con asteriscos y asteriscos calificados para múltiples JOIN sin subconsultas #4898 (Artem Zuikov)
- Se hizo más claro el mensaje de error de columna ausente. #4915 (Artem Zuikov)
Mejoras del rendimiento
- Aumento significativo de la velocidad de ASOF JOIN #4924 (Martijn Bakker)
Cambios incompatibles con versiones anteriores
Correcciones de errores
- Se corrigió una posible desreferenciación de puntero nulo en
clickhouse-copier. #4900 (proller) - Se corrigió un error en una consulta con JOIN + ARRAY JOIN #4938 (Artem Zuikov)
- Se corrigió un bloqueo durante el inicio del servidor cuando un diccionario depende de otro diccionario a través de una base de datos con engine=Dictionary. #4962 (Vitaly Baranov)
- Se corrigió parcialmente distributed_product_mode = local. Ahora es posible permitir columnas de tablas locales en where/having/order by/… mediante alias de tabla. Se lanza una excepción si la tabla no tiene alias. Aún no es posible acceder a las columnas sin alias de tabla. #4986 (Artem Zuikov)
- Se corrigió un resultado potencialmente incorrecto para
SELECT DISTINCTconJOIN#5001 (Artem Zuikov) - Se corrigió una condición de carrera de datos muy poco frecuente que podía ocurrir al ejecutar una consulta con UNION ALL que involucrara al menos dos SELECT de system.columns, system.tables, system.parts, system.parts_tables o tablas de la familia Merge, y al realizar de forma concurrente ALTER de columnas de las tablas relacionadas. #5189 (alexey-milovidov)
Mejoras de compilación, pruebas y empaquetado
- Se corrigieron fallos en las pruebas al ejecutar clickhouse-server en un host distinto #4713 (Vasily Nemkov)
- clickhouse-test: Se deshabilitaron las secuencias de control de color en entornos sin TTY. #4937 (alesapin)
- clickhouse-test: Se permitió usar cualquier base de datos de prueba (se eliminó la calificación
test.donde fue posible) #5008 (proller) - Se corrigieron errores de UBSan #5037 (Vitaly Baranov)
- Se añadió Yandex LFAlloc a ClickHouse para asignar los datos de MarkCache y UncompressedCache de distintas maneras y detectar fallos de segmentación con mayor fiabilidad #4995 (Danila Kutenin)
- Utilidad de Python para ayudar con retroportaciones y registros de cambios. #4949 (Ivan)
Lanzamiento de ClickHouse 19.5
Lanzamiento de ClickHouse 19.5.4.22, 2019-05-13
Corrección de errores
- Se corrigió un posible bloqueo en las funciones bitmap* #5220 #5228 (Andy Yang)
- Se corrigió una condición de carrera de datos muy poco frecuente que podía producirse al ejecutar una consulta con UNION ALL que incluyera al menos dos SELECT desde system.columns, system.tables, system.parts, system.parts_tables o tablas de la familia Merge, y al realizar de forma concurrente ALTER de columnas en las tablas relacionadas. #5189 (alexey-milovidov)
- Se corrigió el error
Set for IN is not created yet in case of using single LowCardinality column in the left part of IN. Este error se producía si la columna LowCardinality formaba parte de la clave primaria. #5031 #5154 (Nikolai Kochetov) - Modificación de la función retention: si una fila satisface tanto la primera como la enésima condición, solo se añade al estado de datos la primera condición satisfecha. Ahora se añaden al estado de datos todas las condiciones que se cumplen en una fila de datos. #5119 (小路)
Lanzamiento de ClickHouse 19.5.3.8, 2019-04-18
Correcciones de errores
- Se corrigió el tipo de la configuración
max_partitions_per_insert_block: de booleano a UInt64. #5028 (Mohammad Hossein Sekhavat)
Lanzamiento de ClickHouse 19.5.2.6, 2019-04-15
Nuevas características
- Se añadió la coincidencia múltiple de expresiones regulares con Hyperscan (funciones
multiMatchAny,multiMatchAnyIndex,multiFuzzyMatchAny,multiFuzzyMatchAnyIndex). #4780, #4841 (Danila Kutenin) - Se añadió la función
multiSearchFirstPosition. #4780 (Danila Kutenin) - Se implementó el filtro de expression predefinido por fila para las tablas. #4792 (Ivan)
- Se añadió un nuevo tipo de índices de omisión de datos basado en bloom filters (puede usarse con las funciones
equal,inylike). #4499 (Nikita Vasilev) - Se añadió
ASOF JOIN, que permite ejecutar consultas con join sobre el valor conocido más reciente. #4774 #4867 #4863 #4875 (Martijn Bakker, Artem Zuikov) - Se reescriben varios
COMMA JOINcomoCROSS JOIN. Después, se reescriben comoINNER JOINsi es posible. #4661 (Artem Zuikov)
Mejora
topKytopKWeightedahora admiten unloadFactorpersonalizado (corrige el problema #4252). #4634 (Kirill Danshin)- Se permite usar
parallel_replicas_count > 1incluso para tablas sin muestreo (la configuración simplemente se ignora en ellas). En versiones anteriores, esto provocaba una excepción. #4637 (Alexey Elymanov) - Compatibilidad con
CREATE OR REPLACE VIEW. Permite crear una vista o establecer una nueva definición en una sola sentencia. #4654 (Boris Granveaud) - El motor de tabla
Bufferahora admitePREWHERE. #4671 (Yangkuan Liu) - Se añadió la posibilidad de iniciar una tabla replicada sin metadatos en ZooKeeper en modo
readonly. #4691 (alesapin) - Se corrigió el parpadeo de la barra de progreso en clickhouse-client. El problema era más evidente al usar
FORMAT Nullcon consultas en streaming. #4811 (alexey-milovidov) - Se permite deshabilitar, por usuario, las funciones con la biblioteca
hyperscanpara limitar un uso de recursos potencialmente excesivo y descontrolado. #4816 (alexey-milovidov) - Se añadió el registro del número de versión en todos los errores. #4824 (proller)
- Se añadió una restricción a las funciones
multiMatchque exige que el tamaño de la cadena quepa enunsigned int. También se añadió un límite al número de argumentos de las funcionesmultiSearch. #4834 (Danila Kutenin) - Se mejoró el uso del espacio de trabajo temporal y el manejo de errores en Hyperscan. #4866 (Danila Kutenin)
- Se rellena
system.graphite_detentionsa partir de la configuración de tabla de las tablas con motor*GraphiteMergeTree. #4584 (Mikhail f. Shiryaev) - Se cambió el nombre de la función
trigramDistanceangramDistancey se añadieron más funciones conCaseInsensitiveyUTF. #4602 (Danila Kutenin) - Se mejoró el cálculo de los índices de omisión de datos. #4640 (Nikita Vasilev)
- Se mantienen las columnas ordinarias,
DEFAULT,MATERIALIZEDyALIASen una sola lista (corrige el problema #2867). #4707 (Alex Zatelepin)
Corrección de errores
- Se evita
std::terminateen caso de error de asignación de memoria. Ahora se lanza la excepciónstd::bad_alloc, como era de esperar. #4665 (alexey-milovidov) - Corrige la lectura de
capnprotodesde el búfer. A veces, los archivos no se cargaban correctamente mediante HTTP. #4674 (Vladislav) - Se corrigió el error
Unknown log entry type: 0después de la consultaOPTIMIZE TABLE FINAL. #4683 (Amos Bird) - Los argumentos incorrectos en las funciones
hasAnyohasAllpueden provocar un fallo de segmentación. #4698 (alexey-milovidov) - Puede producirse un interbloqueo al ejecutar la consulta
DROP DATABASE dictionary. #4701 (alexey-milovidov) - Se corrige el comportamiento indefinido de las funciones
medianyquantile. #4702 (hcz) - Se corrige la detección del nivel de compresión cuando
network_compression_methodestá en minúsculas. Error introducido en la v19.1. #4706 (proller) - Se corrigió el problema por el que se ignoraba la configuración
<timezone>UTC</timezone>(corrige el problema #4658). #4718 (proller) - Se corrigió el comportamiento de la función
histogramcon tablasDistributed. #4741 (olegkv) - Se corrigió el informe de tsan
destroy of a locked mutex. #4742 (alexey-milovidov) - Se corrigió el informe de TSan al apagar debido a una condición de carrera en el uso de los logs del sistema. Se corrigió un posible use-after-free al apagar cuando part_log está habilitado. #4758 (alexey-milovidov)
- Se corrige la nueva comprobación de las partes en
ReplicatedMergeTreeAlterThreaden caso de error. #4772 (Nikolai Kochetov) - Las operaciones aritméticas en los estados intermedios de funciones de agregado no funcionaban con argumentos constantes (como resultados de subconsultas). #4776 (alexey-milovidov)
- Use siempre comillas invertidas para los nombres de las columnas en los metadatos. De lo contrario, será imposible crear una tabla con una columna llamada
index(el servidor no se reiniciará debido a una consultaATTACHmal formada en los metadatos). #4782 (alexey-milovidov) - Se corrige un fallo al ejecutar
ALTER ... MODIFY ORDER BYen una tablaDistributed. #4790 (TCeason) - Se corrigió un fallo de segmentación en
JOIN ONconenable_optimize_predicate_expressionhabilitado. #4794 (Winter Zhang) - Se corrige un error al agregar una fila adicional innecesaria después de consumir un mensaje Protobuf de Kafka. #4808 (Vitaly Baranov)
- Se corrige el fallo de
JOINentre una columna no anulable y una anulable. Se corrigen losNULLsen las claves de la derecha enANY JOIN+join_use_nulls. #4815 (Artem Zuikov) - Se corrige un fallo de segmentación en
clickhouse-copier. #4835 (proller) - Se corrigió una condición de carrera en
SELECTdesystem.tablessi la tabla se renombra o se modifica simultáneamente. #4836 (alexey-milovidov) - Se corrigió una condición de carrera al recuperar una parte de datos que ya era obsoleta. #4839 (alexey-milovidov)
- Se corrigió una rara condición de carrera de datos que puede producirse al ejecutar
RENAMEen una tabla de la familia MergeTree. #4844 (alexey-milovidov) - Se corrigió un fallo de segmentación en la función
arrayIntersect. El fallo de segmentación podía producirse si la función se llamaba con una mezcla de argumentos constantes y no constantes. #4847 (Lixiang Qian) - Se corrigió la lectura de la columna
Array(LowCardinality)en el caso poco frecuente de que la columna contuviera una larga secuencia de arrays vacíos. #4850 (Nikolai Kochetov) - Se corrigió un fallo en
FULL/RIGHT JOINal unir Nullable con no Nullable. #4855 (Artem Zuikov) - Se corrige la excepción
No message receivedal obtener partes entre réplicas. #4856 (alesapin) - Se corrigió el resultado incorrecto de la función
arrayIntersecten el caso de varios valores repetidos en un solo array. #4871 (Nikolai Kochetov) - Corrige una condición de carrera durante consultas
ALTER COLUMNconcurrentes que podía provocar un fallo del servidor (corrige el problema #3421). #4592 (Alex Zatelepin) - Se corrige un resultado incorrecto en
FULL/RIGHT JOINcon una columna constante. #4723 (Artem Zuikov) - Se solucionan los duplicados en
GLOBAL JOINcon asterisco. #4705 (Artem Zuikov) - Corrige la deducción de parámetros en
ALTER MODIFYde la columnaCODECcuando no se especifica el tipo de columna. #4883 (alesapin) - Las funciones
cutQueryStringAndFragment()yqueryStringAndFragment()ahora funcionan correctamente cuando laURLcontiene un fragmento, pero no una cadena de consulta. #4894 (Vitaly Baranov) - Se corrige un error poco frecuente cuando la configuración
min_bytes_to_use_direct_ioes mayor que cero, que ocurre cuando un hilo tiene que retroceder en un archivo de columna. #4897 (alesapin) - Se corrigieron los tipos de argumento incorrectos de las funciones de agregación con argumentos
LowCardinality(corrige el problema #4919). #4922 (Nikolai Kochetov) - Corrige la cualificación errónea de nombres en
GLOBAL JOIN. #4969 (Artem Zuikov) - Se corrigió el resultado de la función
toISOWeekpara el año 1970. #4988 (alexey-milovidov) - Se corrigió la duplicación de consultas
DROP,TRUNCATEyOPTIMIZEcuando se ejecutan conON CLUSTERpara la familia de tablasReplicatedMergeTree*. #4991 (alesapin)
Cambio incompatible con versiones anteriores
- Se renombró la configuración
insert_sample_with_metadataainput_format_defaults_for_omitted_fields. #4771 (Artem Zuikov) - Se añadió la configuración
max_partitions_per_insert_block(con valor predeterminado 100). Si el bloque insertado contiene un número mayor de particiones, se lanza una excepción. Establézcala en 0 si desea eliminar este límite (no recomendado). #4845 (alexey-milovidov) - Se renombraron las funciones de búsqueda múltiple (
multiPositionamultiSearchAllPositions,multiSearchamultiSearchAny,firstMatchamultiSearchFirstIndex). #4780 (Danila Kutenin)
Mejora del rendimiento
- Optimiza el buscador de Volnitsky mediante inlining, lo que aporta una mejora de búsqueda de aproximadamente un 5-10% en consultas con muchas cadenas buscadas o muchos bigramas similares. #4862 (Danila Kutenin)
- Corrige un problema de rendimiento cuando la configuración
use_uncompressed_cachees mayor que cero, que aparecía cuando todos los datos leídos estaban en la caché. #4913 (alesapin)
Mejora de compilación/pruebas/empaquetado
- Refuerzo de la compilación de depuración: asignaciones de memoria más granulares y ASLR; se añade protección de memoria para la caché de marcas y el índice. Esto permite detectar más errores de corrupción de memoria en los casos en que ASan y MSan no pueden hacerlo. #4632 (alexey-milovidov)
- Se añade compatibilidad con las variables de cmake
ENABLE_PROTOBUF,ENABLE_PARQUETyENABLE_BROTLI, lo que permite habilitar o deshabilitar las funcionalidades anteriores (igual que se puede hacer con librdkafka, mysql, etc.). #4669 (Silviu Caragea) - Se añade la posibilidad de imprimir la lista de procesos y las trazas de pila de todos los hilos si algunas consultas se quedan bloqueadas después de ejecutar las pruebas. #4675 (alesapin)
- Se añaden reintentos ante el error
Connection lossenclickhouse-test. #4682 (alesapin) - Se añade al script packager una compilación en FreeBSD con Vagrant y una compilación con sanitizador de hilos. #4712 #4748 (alesapin)
- Ahora se solicita al usuario la contraseña del usuario
'default'durante la instalación. #4725 (proller) - Se suprime una advertencia en la biblioteca
rdkafka. #4740 (alexey-milovidov) - Se permite compilar sin SSL. #4750 (proller)
- Se añade una forma de iniciar la imagen de
clickhouse-servercon un usuario personalizado. #4753 (Mikhail f. Shiryaev) - Se actualiza Boost en contrib a la versión 1.69. #4793 (proller)
- Se deshabilita el uso de
mremapcuando se compila con Thread Sanitizer. Sorprendentemente, TSan no interceptamremap(aunque sí interceptammap,munmap), lo que provoca falsos positivos. Se corrige un informe de TSan en pruebas con estado. #4859 (alexey-milovidov) - Se añade una prueba para comprobar el uso del esquema de formato a través de la interfaz HTTP. #4864 (Vitaly Baranov)
Lanzamiento de ClickHouse 19.4
Lanzamiento de ClickHouse 19.4.4.33, 2019-04-17
Correcciones de errores
- Se evita
std::terminateen caso de error de asignación de memoria. Ahora se lanza la excepciónstd::bad_alloc, como es de esperar. #4665 (alexey-milovidov) - Corrige la lectura de
capnprotodesde el búfer. A veces, los archivos no se cargaban correctamente por HTTP. #4674 (Vladislav) - Corrige el error
Unknown log entry type: 0tras la consultaOPTIMIZE TABLE FINAL. #4683 (Amos Bird) - Los argumentos incorrectos de las funciones
hasAnyohasAllpueden provocar un segfault. #4698 (alexey-milovidov) - Puede producirse un interbloqueo al ejecutar la consulta
DROP DATABASE dictionary. #4701 (alexey-milovidov) - Se corrige el comportamiento no definido en las funciones
medianyquantile. #4702 (hcz) - Se corrige la detección del nivel de compresión cuando
network_compression_methodestá en minúscula. Se introdujo en la v19.1. #4706 (proller) - Se corrigió que se ignorara la configuración
<timezone>UTC</timezone>(corrige el problema #4658). #4718 (proller) - Se corrigió el comportamiento de la función
histogramcon tablasDistributed. #4741 (olegkv) - Se corrigió el reporte de tsan
destroy of a locked mutex. #4742 (alexey-milovidov) - Se corrigió un informe de TSan durante el apagado debido a una condición de carrera en el uso de los logs del sistema. Se corrigió un posible error de use-after-free durante el apagado cuando part_log está habilitado. #4758 (alexey-milovidov)
- Se corrigió la reverificación de partes en
ReplicatedMergeTreeAlterThreaden caso de error. #4772 (Nikolai Kochetov) - Las operaciones aritméticas sobre estados intermedios de funciones de agregación no funcionaban con argumentos constantes (como resultados de subconsultas). #4776 (alexey-milovidov)
- Use siempre comillas invertidas para los nombres de las columnas en los metadatos. De lo contrario, es imposible crear una tabla con una columna llamada
index(el servidor no se reiniciará debido a una consultaATTACHmalformada en los metadatos). #4782 (alexey-milovidov) - Se corrigió un fallo en
ALTER ... MODIFY ORDER BYde una tablaDistributed. #4790 (TCeason) - Se corrige un segfault en
JOIN ONconenable_optimize_predicate_expressionactivado. #4794 (Winter Zhang) - Se corrige un error que añadía una fila innecesaria tras consumir un mensaje Protobuf de Kafka. #4808 (Vitaly Baranov)
- Se corrigió un fallo de segmentación en
clickhouse-copier. #4835 (proller) - Se corrigió una condición de carrera en
SELECTdesystem.tablessi la tabla se renombra o modifica de forma concurrente. #4836 (alexey-milovidov) - Se corrigió una condición de carrera al obtener una parte de datos que ya estaba obsoleta. #4839 (alexey-milovidov)
- Se corrigió una condición de carrera de datos poco frecuente que puede producirse al hacer
RENAMEen una tabla de la familia MergeTree. #4844 (alexey-milovidov) - Se corrigió un fallo de segmentación en la función
arrayIntersect. El fallo de segmentación podía producirse si la función se llamaba con una combinación de argumentos constantes y normales. #4847 (Lixiang Qian) - Se corrigió la lectura de la columna
Array(LowCardinality)en el caso poco frecuente de que contuviera una larga secuencia de arrays vacíos. #4850 (Nikolai Kochetov) - Se corrige la excepción
No message receivedal transferir partes entre réplicas. #4856 (alesapin) - Se corrigió el resultado incorrecto de la función
arrayIntersectcuando había varios valores repetidos en un mismo array. #4871 (Nikolai Kochetov) - Se corrigió una condición de carrera durante consultas
ALTER COLUMNconcurrentes que podía provocar la caída del servidor (corrige el problema #3421). #4592 (Alex Zatelepin) - Se corrige la inferencia de parámetros en
ALTER MODIFYde la columnaCODECcuando no se especifica el tipo de columna. #4883 (alesapin) - Las funciones
cutQueryStringAndFragment()yqueryStringAndFragment()ahora funcionan correctamente cuandoURLcontiene un fragmento, pero no una consulta. #4894 (Vitaly Baranov) - Se corrige un error poco frecuente cuando la configuración
min_bytes_to_use_direct_ioes mayor que cero, que ocurre cuando un hilo tiene que retroceder en el archivo de datos de una columna. #4897 (alesapin) - Corrige los tipos de argumento erróneos de las funciones de agregación con argumentos
LowCardinality(soluciona el problema #4919). #4922 (Nikolai Kochetov) - Se corrigió el resultado de la función
toISOWeekpara el año 1970. #4988 (alexey-milovidov) - Se corrige la duplicación de las consultas
DROP,TRUNCATEyOPTIMIZEal ejecutarse conON CLUSTERen la familia de tablasReplicatedMergeTree*. #4991 (alesapin)
Mejoras
- Las columnas ordinarias,
DEFAULT,MATERIALIZEDyALIASse mantienen en una sola lista (corrige el problema #2867). #4707 (Alex Zatelepin)
Lanzamiento de ClickHouse 19.4.3.11, 2019-04-02
Correcciones de errores
- Se corrige un cierre inesperado en
FULL/RIGHT JOINal hacer JOIN entreNullabley noNullable. #4855 (Artem Zuikov) - Se corrige un fallo de segmentación en
clickhouse-copier. #4835 (proller)
Mejora de compilación/pruebas/empaquetado
- Se añadió una forma de iniciar la imagen de clickhouse-server con un usuario personalizado. #4753 (Mikhail f. Shiryaev)
Versión de ClickHouse 19.4.2.7, 2019-03-30
Correcciones de errores
- Se corrigió la lectura de la columna
Array(LowCardinality)en el raro caso de que contuviera una larga secuencia de arrays vacíos. #4850 (Nikolai Kochetov)
Versión de ClickHouse 19.4.1.3, 2019-03-19
Correcciones de errores
- Se corrigieron las consultas remotas que contienen tanto
LIMIT BYcomoLIMIT. Anteriormente, siLIMIT BYyLIMITse usaban en una consulta remota,LIMITpodía aplicarse antes queLIMIT BY, lo que daba como resultado un filtrado excesivo. #4708 (Constantin S. Pan)
Versión de ClickHouse 19.4.0.49, 2019-03-09
Nuevas características
- Se añadió compatibilidad completa con el formato
Protobuf(entrada y salida, estructuras de datos anidadas). #4174 #4493 (Vitaly Baranov) - Se añadieron funciones de bitmap con Roaring Bitmaps. #4207 (Andy Yang) #4568 (Vitaly Baranov)
- Compatibilidad con el formato Parquet. #4448 (proller)
- Se añadió la distancia de n-gramas para la comparación difusa de cadenas. Es similar a las métricas q-gram del lenguaje R. #4466 (Danila Kutenin)
- Se combinaron reglas para el rollup de Graphite a partir de patrones específicos de agregación y retención. #4426 (Mikhail f. Shiryaev)
- Se añadieron
max_execution_speedymax_execution_speed_bytespara limitar el uso de recursos. Se añadió el ajustemin_execution_speed_bytespara complementarmin_execution_speed. #4430 (Winter Zhang) - Se implementó la función
flatten. #4555 #4409 (alexey-milovidov, kzon) - Se añadieron las funciones
arrayEnumerateDenseRankedyarrayEnumerateUniqRanked(es comoarrayEnumerateUniq, pero permite ajustar con precisión la profundidad del array para examinar arrays multidimensionales). #4475 (proller) #4601 (alexey-milovidov) - Múltiples JOINS con algunas restricciones: sin asteriscos, sin alias complejos en ON/WHERE/GROUP BY/… #4462 (Artem Zuikov)
Correcciones de errores
- Esta versión también incluye todas las correcciones de errores de 19.3 y 19.1.
- Se corrigió un error en los índices de omisión de datos: el orden de los gránulos tras INSERT era incorrecto. #4407 (Nikita Vasilev)
- Se corrigió el índice
setpara columnasNullableyLowCardinality. Antes, usar el índicesetcon una columnaNullableoLowCardinalityprovocaba el errorData type must be deserialized with multiple streamsal realizar una consulta. #4594 (Nikolai Kochetov) - Se corrige la configuración de update_time en la actualización completa del diccionario
executable. #4551 (Tema Novikov) - Se corrigió la barra de progreso defectuosa en 19.3. #4627 (filimonov)
- Se corrigieron valores inconsistentes de MemoryTracker cuando la región de memoria se reducía, en ciertos casos. #4619 (alexey-milovidov)
- Se corrigió un comportamiento no definido en ThreadPool. #4612 (alexey-milovidov)
- Se corrigió un cierre inesperado muy poco frecuente con el mensaje
mutex lock failed: Invalid argument, que podía ocurrir cuando se eliminaba una tabla MergeTree al mismo tiempo que se ejecutaba un SELECT. #4608 (Alex Zatelepin) - Compatibilidad del driver ODBC con el tipo de datos
LowCardinality. #4381 (proller) - FreeBSD: Corrección del error
AIOcontextPool: Found io_event with unknown id 0. #4438 (urgordeadbeef) - La tabla
system.part_logse creó sin tener en cuenta la configuración. #4483 (alexey-milovidov) - Se corrigió el comportamiento indefinido en la función
dictIsInpara diccionarios de tipo caché. #4515 (alesapin) - Se corrigió un interbloqueo cuando una consulta SELECT bloquea la misma tabla varias veces (p. ej., desde distintos hilos o al ejecutar varias subconsultas) y existe una consulta DDL concurrente. #4535 (Alex Zatelepin)
- Deshabilitar compile_expressions de forma predeterminada hasta que tengamos nuestro propio
llvmen contrib y podamos probarlo conclangyasan. #4579 (alesapin) - Se evitó
std::terminatecuandoinvalidate_querypara la fuente de diccionario externoclickhousedevolvía un conjunto de resultados incorrecto (vacío, con más de una fila o con más de una columna). Se corrigió el problema por el queinvalidate_queryse ejecutaba cada cinco segundos independientemente dellifetime. #4583 (alexey-milovidov) - Se evita un interbloqueo cuando la
invalidate_queryde un Diccionario con origenclickhouseimplicaba la tablasystem.dictionarieso la base de datosDictionaries(caso poco frecuente). #4599 (alexey-milovidov) - Corrección de CROSS JOIN con WHERE vacío. #4598 (Artem Zuikov)
- Se corrigió un segfault en la función “replicate” al pasar un argumento constante. #4603 (alexey-milovidov)
- Se corrige la función lambda con el optimizador de predicados. #4408 (Winter Zhang)
- Varias correcciones para múltiples JOINs. #4595 (Artem Zuikov)
Mejoras
- Compatibilidad con alias en la sección
JOIN ONpara las columnas de la tabla derecha. #4412 (Artem Zuikov) - El resultado de múltiples
JOINnecesita nombres correctos para poder usarse en subconsultas. Sustituye los alias planos por nombres de origen en el resultado. #4474 (Artem Zuikov) - Mejora de la lógica de push-down para sentencias con
JOIN. #4387 (Ivan)
Mejoras del rendimiento
- Se mejoraron las heurísticas de la optimización “move to PREWHERE”. #4405 (alexey-milovidov)
- Se utilizan tablas de búsqueda adecuadas que usan la API de HashTable para claves de 8 y 16 bits. #4536 (Amos Bird)
- Se mejoró el rendimiento de la comparación de cadenas. #4564 (alexey-milovidov)
- La cola de DDL distribuido se limpia en un hilo independiente para que no ralentice el bucle principal que procesa las tareas de DDL distribuido. #4502 (Alex Zatelepin)
- Cuando
min_bytes_to_use_direct_iose establecía en 1, no todos los archivos se abrían en modo O_DIRECT porque el tamaño de los datos que se iban a leer a veces se subestimaba en el tamaño de un bloque comprimido. #4526 (alexey-milovidov)
Mejora de compilación/pruebas/empaquetado
- Se añadió compatibilidad con clang-9 #4604 (alexey-milovidov)
- Se corrigieron instrucciones
__asm__incorrectas (de nuevo) #4621 (Konstantin Podshumok) - Se añadió la posibilidad de especificar opciones de configuración para
clickhouse-performance-testdesde la línea de comandos. #4437 (alesapin) - Se añadieron pruebas de Dictionaries a las pruebas de integración. #4477 (alesapin)
- Se añadieron consultas del benchmark del sitio web a las pruebas de rendimiento automatizadas. #4496 (alexey-milovidov)
xxhash.hno existe en lz4 externo porque es un detalle de implementación y sus símbolos usan espacio de nombres mediante la macroXXH_NAMESPACE. Cuando lz4 es externo, xxHash también tiene que ser externo, y sus dependencias tienen que enlazar con él. #4495 (Orivej Desh)- Se corrigió un caso en el que la función de agregado
quantileTimingpodía llamarse con un argumento negativo o de coma flotante (esto corrige una prueba de fuzzing con el sanitizador de comportamiento indefinido). #4506 (alexey-milovidov) - Corrección de un error ortográfico. #4531 (sdk2)
- Se corrigió la compilación en Mac. #4371 (Vitaly Baranov)
- Correcciones de compilación para FreeBSD y varias configuraciones de compilación poco habituales. #4444 (proller)
Versión de ClickHouse 19.3
Versión de ClickHouse 19.3.9.1, 2019-04-02
Corrección de errores
- Se corrigió un fallo en
FULL/RIGHT JOINal hacer un JOIN entre columnas nullable y no nullable. #4855 (Artem Zuikov) - Se corrigió un fallo de segmentación en
clickhouse-copier. #4835 (proller) - Se corrigió la lectura de la columna
Array(LowCardinality)en el caso poco frecuente de que la columna contuviera una larga secuencia de arrays vacíos. #4850 (Nikolai Kochetov)
Mejora de compilación/pruebas/empaquetado
- Se añade una forma de iniciar la imagen de clickhouse-server con un usuario personalizado #4753 (Mikhail f. Shiryaev)
Versión de ClickHouse 19.3.7, 2019-03-12
Correcciones de errores
- Se corrigió un error en #3920. Este error se manifiesta como una corrupción aleatoria de la caché (mensajes
Unknown codec family code,Cannot seek through file) y fallos de segmentación. Este error apareció por primera vez en la versión 19.1 y está presente en las versiones 19.1.10 y 19.3.6. #4623 (alexey-milovidov)
Versión de ClickHouse 19.3.6, 2019-03-02
Correcciones de errores
- Cuando hay más de 1000 hilos en un pool de hilos, puede producirse
std::terminatecuando un hilo finaliza. Azat Khuzhin #4485 #4505 (alexey-milovidov) - Ahora es posible crear tablas
ReplicatedMergeTree*con comentarios en columnas sin valores predeterminados, así como tablas con códecs en columnas sin comentarios ni valores predeterminados. También se corrigió la comparación de códecs. #4523 (alesapin) - Se corrigió un fallo en JOIN con Array o Tuple. #4552 (Artem Zuikov)
- Se corrigió un fallo en clickhouse-copier con el mensaje
ThreadStatus not created. #4540 (Artem Zuikov) - Se corrigió un cuelgue al apagar el servidor si se habían usado DDL distribuidos. #4472 (Alex Zatelepin)
- Se mostraban números de columna incorrectos en el mensaje de error sobre el análisis del formato de texto para columnas con número mayor que 10. #4484 (alexey-milovidov)
Mejoras de compilación/pruebas/empaquetado
- Se corrigió la compilación con AVX habilitado. #4527 (alexey-milovidov)
- Se habilitaron la contabilidad extendida y la contabilidad de IO en función de una versión conocida como válida, en lugar del kernel con el que se compila. #4541 (nvartolomei)
- Se permite omitir la configuración de core_dump.size_limit y mostrar una advertencia en lugar de lanzar una excepción si falla el establecimiento del límite. #4473 (proller)
- Se eliminaron los especificadores
inlinedevoid readBinary(...)enField.cpp. También se unificaron bloques redundantes denamespace DB. #4530 (hcz)
Versión de ClickHouse 19.3.5, 2019-02-21
Correcciones de errores
- Se corrigió un error en el procesamiento de consultas HTTP INSERT de gran tamaño. #4454 (alesapin)
- Se corrigió una incompatibilidad con versiones anteriores debida a una implementación incorrecta de la configuración
send_logs_level. #4445 (alexey-milovidov) - Se corrigió una incompatibilidad con versiones anteriores de la función de tabla
remote, introducida con los comentarios de columnas. #4446 (alexey-milovidov)
Versión 19.3.4 de ClickHouse, 2019-02-16
Mejoras
- El tamaño del índice de la tabla no se contabilizaba dentro de los límites de memoria al ejecutar la consulta
ATTACH TABLE. Se evitó la posibilidad de que no se pudiera volver a adjuntar una tabla después de hacerle DETACH. #4396 (alexey-milovidov) - Se aumentó ligeramente el límite del tamaño máximo de cadenas y arrays recibido desde ZooKeeper. Esto permite seguir funcionando con un tamaño mayor de
CLIENT_JVMFLAGS=-Djute.maxbuffer=...en ZooKeeper. #4398 (alexey-milovidov) - Se permite reparar una réplica abandonada incluso si ya tiene una enorme cantidad de nodos en su cola. #4399 (alexey-milovidov)
- Se añadió un argumento obligatorio al índice
SET(número máximo de filas almacenadas). #4386 (Nikita Vasilev)
Correcciones de errores
- Se corrigió el resultado de
WITH ROLLUPpara unGROUP BYcon una sola claveLowCardinality. #4384 (Nikolai Kochetov) - Se corrigió un error en el índice set (se descartaba un gránulo si contenía más de
max_rowsfilas). #4386 (Nikita Vasilev) - Numerosas correcciones de compilación para FreeBSD. #4397 (proller)
- Se corrigió la sustitución de alias en consultas con una subconsulta que contenía el mismo alias (problema #4110). #4351 (Artem Zuikov)
Mejoras de compilación, pruebas y empaquetado
- Se añadió la posibilidad de ejecutar
clickhouse-serverpara pruebas sin estado en la imagen de Docker. #4347 (Vasily Nemkov)
Versión de ClickHouse 19.3.3, 2019-02-13
Nuevas características
- Se añadió la instrucción
KILL MUTATION, que permite eliminar mutaciones que, por algún motivo, han quedado atascadas. Se añadieron los camposlatest_failed_part,latest_fail_timeylatest_fail_reasona la tablasystem.mutationspara facilitar el diagnóstico de problemas. #4287 (Alex Zatelepin) - Se añadió la función de agregado
entropy, que calcula la entropía de Shannon. #4238 (Quid37) - Se añadió la capacidad de enviar consultas
INSERT INTO tbl VALUES (....al servidor sin dividirlas en las partesqueryydata. #4301 (alesapin) - Se añadió una implementación genérica de la función
arrayWithConstant. #4322 (alexey-milovidov) - Se implementó el operador de comparación
NOT BETWEEN. #4228 (Dmitry Naumov) - Se implementó
sumMapFilteredpara poder limitar el número de claves cuyos valores sumarásumMap. #4129 (Léo Ercolanelli) - Se añadió compatibilidad con tipos
Nullableen la función de tablamysql. #4198 (Emmanuel Donin de Rosière) - Compatibilidad con expresiones constantes arbitrarias en la cláusula
LIMIT. #4246 (k3box) - Se añadió la función de agregado
topKWeighted, que acepta un argumento adicional con el peso (entero sin signo). #4245 (Andrew Golman) StorageJoinahora admite la configuraciónjoin_any_take_last_row, que permite sobrescribir los valores existentes de la misma clave. #3973 (Amos Bird- Se añadió la función
toStartOfInterval. #4304 (Vitaly Baranov) - Se añadió el formato
RowBinaryWithNamesAndTypes. #4200 (Oleg V. Kozlyuk) - Se añadieron los tipos de datos
IPv4eIPv6. También se añadieron implementaciones más eficaces de las funcionesIPv*. #3669 (Vasily Nemkov) - Se añadió la función
toStartOfTenMinutes(). #4298 (Vitaly Baranov) - Se añadió el formato de salida
Protobuf. #4005 #4158 (Vitaly Baranov) - Se añadió compatibilidad con brotli en la interfaz HTTP para la importación de datos (INSERTs). #4235 (Mikhail)
- Se añadieron sugerencias cuando el usuario comete un error tipográfico en el nombre de una función o de un tipo en el cliente de línea de comandos. #4239 (Danila Kutenin)
- Se añadió
Query-Idal header de respuesta HTTP del servidor. #4231 (Mikhail)
Características experimentales
- Se añadieron índices de omisión de datos
minmaxysetpara la familia de motores de tabla MergeTree. #4143 (Nikita Vasilev) - Se añadió la conversión de
CROSS JOINaINNER JOINcuando sea posible. #4221 #4266 (Artem Zuikov)
Correcciones de errores
- Se corrigió
Not found columnen caso de columnas duplicadas en la secciónJOIN ON. #4279 (Artem Zuikov) - Hacer que el comando
START REPLICATED SENDSinicie envíos replicados. #4229 (nvartolomei) - Se corrigió la ejecución de las funciones de agregación con argumentos de
Array(LowCardinality). #4055 (KochetovNicolai) - Se corrigió un comportamiento incorrecto al ejecutar la consulta
INSERT ... SELECT ... FROM file(...)cuando el archivo tiene formatoCSVWithNamesoTSVWIthNamesy falta la primera fila de datos. #4297 (alexey-milovidov) - Se corrigió un bloqueo al recargar el Diccionario si no estaba disponible. Este error apareció en la versión 19.1.6. #4188 (proller)
- Se corrigió
ALL JOINcon duplicados en la tabla de la derecha. #4184 (Artem Zuikov) - Se corrigió un fallo de segmentación con
use_uncompressed_cache=1y una excepción debida a un tamaño sin comprimir incorrecto. Este error apareció en la versión 19.1.6. #4186 (alesapin) - Corregido el error de
compile_expressionsal comparar fechas con valores grandes (mayores que int16). #4341 (alesapin) - Se corrigió un bucle infinito al seleccionar de la función de tabla
numbers(0). #4280 (alexey-milovidov) - Deshabilitar temporalmente la optimización de predicados para
ORDER BY. #3890 (Winter Zhang) - Se corrigió el error
Illegal instructional usar funciones base64 en procesadores antiguos. Este error solo se reprodujo cuando ClickHouse se compiló con gcc-8. #4275 (alexey-milovidov) - Se corrigió el error
No message receivedal interactuar con PostgreSQL ODBC Driver a través de una conexión TLS. También se corrigió un segfault al usar MySQL ODBC Driver. #4170 (alexey-milovidov) - Se corrigió el resultado incorrecto al usar argumentos
DateyDateTimeen las ramas del operador condicional (funciónif). Se añadió un caso genérico para la funciónif. #4243 (alexey-milovidov) - Los diccionarios de ClickHouse ahora se cargan en el proceso
clickhouse. #4166 (alexey-milovidov) - Se corrigió un interbloqueo cuando se reintentó
SELECTdesde una tabla con el engineFiletras el errorNo such file or directory. #4161 (alexey-milovidov) - Se corrigió una condición de carrera por la que, al seleccionar desde
system.tables, podía producirse el errortable does not exist. #4313 (alexey-milovidov) clickhouse-clientpuede provocar un segfault al salir mientras carga datos para las sugerencias de la línea de comandos si se ejecutó en modo interactivo. #4317 (alexey-milovidov)- Se corrigió un error por el que la ejecución de mutaciones que contenían operadores
INproducía resultados incorrectos. #4099 (Alex Zatelepin) - Se corrigió el siguiente error: si existe una base de datos con el motor
Dictionary, se forzaba la carga de todos los diccionarios al iniciar el servidor y, si hay un diccionario con un origen de ClickHouse en localhost, ese diccionario no puede cargarse. #4255 (alexey-milovidov) - Se corrigió un error al intentar crear de nuevo los logs del sistema al apagar el servidor. #4254 (alexey-milovidov)
- Devolver el tipo correcto y gestionar adecuadamente los bloqueos en la función
joinGet. #4153 (Amos Bird) - Se agregó la función
sumMapWithOverflow. #4151 (Léo Ercolanelli) - Se ha corregido un segfault en
allow_experimental_multiple_joins_emulation. 52de2c (Artem Zuikov) - Se corrigió un error en la comparación incorrecta entre
DateyDateTime. #4237 (valexey) - Se corrigió una prueba de fuzzing con el sanitizador de comportamiento indefinido: se añadió una comprobación del tipo de parámetro para la familia de funciones
quantile*Weighted. #4145 (alexey-milovidov) - Se corrigió una condición de carrera poco frecuente por la que, al eliminar partes de datos antiguas, podía producirse el error
File not found. #4378 (alexey-milovidov) - Se corrige el paquete de instalación que no incluía
/etc/clickhouse-server/config.xml. #4343 (proller)
Mejoras en compilación, pruebas y empaquetado
- Paquete Debian: se corrigió el enlace /etc/clickhouse-server/preprocessed de acuerdo con la configuración. #4205 (proller)
- Varias correcciones de compilación para FreeBSD. #4225 (proller)
- Se añadió la capacidad de crear, rellenar y eliminar tablas en perftest. #4220 (alesapin)
- Se añadió un script para comprobar inclusiones duplicadas. #4326 (alexey-milovidov)
- Se añadió la capacidad de ejecutar consultas por índice en la prueba de rendimiento. #4264 (alesapin)
- Se recomienda instalar el paquete con símbolos de depuración. #4274 (alexey-milovidov)
- Refactorización de performance-test. Mejor logging y mejor manejo de señales. #4171 (alesapin)
- Se añadió documentación para los datasets anonimizados de Yandex.Metrica. #4164 (alesapin)
- Se añadió una herramienta para convertir una part antigua particionada por mes al formato de particiones personalizadas. #4195 (Alex Zatelepin)
- Se añadió documentación sobre dos datasets en S3. #4144 (alesapin)
- Se añadió un script que crea el changelog a partir de la descripción de las pull requests. #4169 #4173 (KochetovNicolai) (KochetovNicolai)
- Se añadió un módulo Puppet para ClickHouse. #4182 (Maxim Fedotov)
- Se añadió documentación para un grupo de funciones no documentadas. #4168 (Winter Zhang)
- Correcciones de compilación para ARM. #4210#4306 #4291 (proller) (proller)
- Las pruebas de Diccionario ahora pueden ejecutarse desde
ctest. #4189 (proller) - Ahora
/etc/sslse usa como directorio predeterminado para los certificados SSL. #4167 (alexey-milovidov) - Se añadió la comprobación de las instrucciones SSE y AVX al inicio. #4234 (Igr)
- El script de inicio esperará a que el servidor arranque. #4281 (proller)
Cambios incompatibles con versiones anteriores
- Se eliminó la configuración
allow_experimental_low_cardinality_type. Los tipos de datosLowCardinalityya están listos para producción. #4323 (alexey-milovidov) - Se redujeron el tamaño de la caché de marcas y el tamaño de la caché sin comprimir en función de la cantidad de memoria disponible. #4240 (Lopatin Konstantin
- Se añadió la palabra clave
INDEXen la consultaCREATE TABLE. Una columna con el nombreindexdebe ir entre acentos graves o comillas dobles:`index`. #4143 (Nikita Vasilev) sumMapahora promociona el tipo de resultado en lugar de desbordarse. El comportamiento anterior desumMapse puede obtener usando la funciónsumMapWithOverflow. #4151 (Léo Ercolanelli)
Mejoras del rendimiento
- Se sustituyó
std::sortporpdqsortpara consultas sinLIMIT. #4236 (Evgenii Pravda) - Ahora el servidor reutiliza hilos del grupo global de hilos. Esto afecta al rendimiento en algunos casos extremos. #4150 (alexey-milovidov)
Mejoras
- Se implementó compatibilidad con AIO para FreeBSD. #4305 (urgordeadbeef)
SELECT * FROM a JOIN b USING a, bahora devuelve las columnasaybsolo de la tabla de la izquierda. #4141 (Artem Zuikov)- Se permitió que la opción
-Cdel cliente funcionara como la opción-c. #4232 (syominsergey) - Ahora, si la opción
--passwordse usa sin valor, solicita la contraseña desde stdin. #4230 (BSD_Conqueror) - Se añadió el resaltado de metacaracteres sin escape en literales de cadena que contienen expresiones
LIKEo expresiones regulares. #4327 (alexey-milovidov) - Se añadió la cancelación de consultas HTTP de solo lectura si se cierra el socket del cliente. #4213 (nvartolomei)
- Ahora el servidor informa del progreso para mantener activas las conexiones del cliente. #4215 (Ivan)
- Se mejoró ligeramente el mensaje con el motivo de la consulta OPTIMIZE cuando está habilitada la configuración
optimize_throw_if_noop. #4294 (alexey-milovidov) - Se añadió compatibilidad con la opción
--versionpara el servidor ClickHouse. #4251 (Lopatin Konstantin) - Se añadió la opción
--help/-haclickhouse-server. #4233 (Yuriy Baranov) - Se añadió compatibilidad con subconsultas escalares con resultado de estado de función de agregado. #4348 (Nikolai Kochetov)
- Se mejoró el tiempo de apagado del servidor y el tiempo de espera de las operaciones ALTER. #4372 (alexey-milovidov)
- Se añadió información sobre la configuración replicated_can_become_leader a system.replicas y se añadió registro si la réplica no intenta convertirse en líder. #4379 (Alex Zatelepin)
Lanzamiento de ClickHouse 19.1
Lanzamiento de ClickHouse 19.1.14, 2019-03-14
- Se corrigió el error
Column ... queried more than once, que puede producirse si el ajusteasterisk_left_columns_onlyestá establecido en 1 al usarGLOBAL JOINconSELECT *(caso poco frecuente). El problema no existe en la versión 19.3 ni en las posteriores. 6bac7d8d (Artem Zuikov)
Lanzamiento de ClickHouse 19.1.13, 2019-03-12
Lanzamiento de ClickHouse 19.1.10, 2019-03-03
Lanzamiento de ClickHouse 19.1
Lanzamiento de ClickHouse 19.1.9, 2019-02-21
Correcciones de errores
- Se corrigió una incompatibilidad con versiones anteriores debida a una implementación incorrecta de la configuración
send_logs_level. #4445 (alexey-milovidov) - Se corrigió la incompatibilidad con versiones anteriores de la función de tabla
remote, introducida con los comentarios de columnas. #4446 (alexey-milovidov)
Lanzamiento de ClickHouse 19.1.8, 2019-02-16
Correcciones de errores
- Se corrige el paquete de instalación al que le faltaba
/etc/clickhouse-server/config.xml. #4343 (proller)
Lanzamiento de ClickHouse 19.1
Lanzamiento de ClickHouse 19.1.7, 2019-02-15
Correcciones de errores
- Devolver correctamente el tipo correcto y gestionar adecuadamente los bloqueos en la función
joinGet. #4153 (Amos Bird) - Se corrigió un error que se producía al intentar volver a crear los logs del sistema durante el apagado del servidor. #4254 (alexey-milovidov)
- Se corrigió un error: si existía una base de datos con motor
Dictionary, se forzaba la carga de todos los diccionarios al iniciar el servidor y, si había un diccionario con origen ClickHouse en localhost, este no podía cargarse. #4255 (alexey-milovidov) - Se corrigió un error por el que, al ejecutar mutaciones que contenían operadores
IN, se producían resultados incorrectos. #4099 (Alex Zatelepin) clickhouse-clientpuede producir un segfault al salir mientras carga datos para las sugerencias de la línea de comandos si se ejecutó en modo interactivo. #4317 (alexey-milovidov)- Se corrigió una condición de carrera por la que, al consultar
system.tables, podía aparecer el errortable does not exist. #4313 (alexey-milovidov) - Se corrigió un bloqueo mutuo al reintentar
SELECTdesde una tabla con el motorFiletras el errorNo such file or directory. #4161 (alexey-milovidov) - Se corrigió un problema: los diccionarios locales de ClickHouse se cargaban por TCP, pero deberían cargarse dentro del proceso. #4166 (alexey-milovidov)
- Se corrigió el error
No message receivedal interactuar con PostgreSQL ODBC Driver mediante una conexión TLS. También se corrigió un segfault al usar MySQL ODBC Driver. #4170 (alexey-milovidov) - Desactivar temporalmente la optimización de predicados para
ORDER BY. #3890 (Winter Zhang) - Se corrigió el bucle infinito al seleccionar desde la función de tabla
numbers(0). #4280 (alexey-milovidov) - Se corrigió un error de
compile_expressionsen la comparación de fechas grandes (de más de int16). #4341 (alesapin) - Se corrigieron un fallo de segmentación con
uncompressed_cache=1y una excepción debida a un tamaño sin comprimir incorrecto. #4186 (alesapin) - Se corrigió
ALL JOINcon duplicados en la tabla de la derecha. #4184 (Artem Zuikov) - Se corrigió un comportamiento incorrecto al ejecutar la consulta
INSERT ... SELECT ... FROM file(...)cuando el archivo tiene formatoCSVWithNamesoTSVWIthNamesy falta la primera fila de datos. #4297 (alexey-milovidov) - Se corrigió la ejecución de las funciones de agregación con argumentos
Array(LowCardinality). #4055 (KochetovNicolai) - Paquete Debian: se corrige el enlace /etc/clickhouse-server/preprocessed según la configuración. #4205 (proller)
- Se corrigió una prueba de fuzzing con el sanitizador de comportamiento indefinido: se añadió una comprobación del tipo de parámetro para la familia de funciones
quantile*Weighted. #4145 (alexey-milovidov) - Permitir que el comando
START REPLICATED SENDSinicie envíos replicados. #4229 (nvartolomei) - Se corrigió
Not found columnpara las columnas duplicadas en la sección JOIN ON. #4279 (Artem Zuikov) - Ahora
/etc/sslse usa como directorio predeterminado para los certificados SSL. #4167 (alexey-milovidov) - Se corrigió un fallo al recargar el diccionario cuando no estaba disponible. #4188 (proller)
- Se corrigió un error en la comparación entre
DateyDateTime. #4237 (valexey) - Se corrigió un resultado incorrecto cuando se usan argumentos
DateyDateTimeen las ramas del operador condicional (funciónif). Se añadió un caso genérico para la funciónif. #4243 (alexey-milovidov)
Lanzamiento de ClickHouse 19.1.6, 2019-01-24
Nuevas características
- Códecs de compresión personalizados por columna para las tablas. #3899 #4111 (alesapin, Winter Zhang, Anatoly)
- Se añadió el códec de compresión
Delta. #4052 (alesapin) - Se permite hacer
ALTERde los códecs de compresión. #4054 (alesapin) - Se añadieron las funciones
left,right,trim,ltrim,rtrim,timestampadd,timestampsubpara ofrecer compatibilidad con el estándar SQL. #3826 (Ivan Blinkov) - Soporte para escritura en tablas
HDFSy en la función de tablahdfs. #4084 (alesapin) - Se añadieron funciones para buscar varias cadenas constantes dentro de una cadena grande:
multiPosition,multiSearch,firstMatch, también con variantes-UTF8,-CaseInsensitivey-CaseInsensitiveUTF8. #4053 (Danila Kutenin) - Poda de segmentos no utilizados si la consulta
SELECTfiltra por la clave de sharding (configuraciónoptimize_skip_unused_shards). #3851 (Gleb Kanterov, Ivan) - Se permite que el motor
Kafkaignore cierto número de errores de parsing por bloque. #4094 (Ivan) - Se añadió soporte para la evaluación de modelos multiclase de
CatBoost. La funciónmodelEvaluatedevuelve una tupla con predicciones brutas por clase para modelos multiclase.libcatboostmodel.sodebe compilarse con #607. #3959 (KochetovNicolai) - Se añadieron las funciones
filesystemAvailable,filesystemFree,filesystemCapacity. #4097 (Boris Granveaud) - Se añadieron las funciones hash
xxHash64yxxHash32. #3905 (filimonov) - Se añadió la función hash
gccMurmurHash(variante de Murmur de GCC), que usa la misma semilla hash que gcc #4000 (sundyli) - Se añadieron las funciones hash
javaHash,hiveHash. #3811 (shangshujie365) - Se añadió la función de tabla
remoteSecure. La función funciona comoremote, pero utiliza una conexión segura. #4088 (proller)
Características experimentales
- Se añadió la emulación de varios JOINs (ajuste
allow_experimental_multiple_joins_emulation). #3946 (Artem Zuikov)
Correcciones de errores
- Limitar de forma predeterminada la opción
compiled_expression_cache_sizepara reducir el consumo de memoria. #4041 (alesapin) - Se corrigió un error que provocaba cuelgues en los hilos que realizan ALTER de tablas Replicated y en el hilo que actualiza la configuración desde ZooKeeper. #2947 #3891 #3934 (Alex Zatelepin)
- Se corrigió una condición de carrera al ejecutar una tarea ALTER distribuida. La condición de carrera provocaba que más de una réplica intentara ejecutar la tarea y que todas las réplicas, salvo una, fallaran con un error de ZooKeeper. #3904 (Alex Zatelepin)
- Se corrigió un error por el que los elementos de configuración
from_zkno se actualizaban después de que agotara el tiempo de espera de una solicitud a ZooKeeper. #2947 #3947 (Alex Zatelepin) - Se corrigió un error relacionado con un prefijo incorrecto en las máscaras de subred IPv4. #3945 (alesapin)
- Se corrigió un fallo (
std::terminate) en casos raros en los que no se podía crear un nuevo hilo por falta de recursos. #3956 (alexey-milovidov) - Se corrigió un error en la ejecución de la table function
remotecuando se usaban restricciones incorrectas engetStructureOfRemoteTable. #4009 (alesapin) - Se corrigió una fuga de sockets de netlink. Se almacenaban en un grupo del que nunca se eliminaban, y se creaban sockets nuevos al iniciar un hilo nuevo cuando todos los sockets existentes estaban en uso. #4017 (Alex Zatelepin)
- Se corrigió un error al cerrar el directorio
/proc/self/fdantes de leer todos los descriptores de archivo de/proctras hacerforkdel subprocesoodbc-bridge. #4120 (alesapin) - Se corrigió la conversión monotónica de String a UInt al usar String en la clave primaria. #3870 (Winter Zhang)
- Se corrigió un error en el cálculo de la monotonía de la función de conversión de enteros. #3921 (alexey-milovidov)
- Se corrigió un fallo de segmentación en las funciones
arrayEnumerateUniqyarrayEnumerateDenseal pasar argumentos no válidos. #3909 (alexey-milovidov) - Se corrige UB en StorageMerge. #3910 (Amos Bird)
- Se corrigió un segfault en las funciones
addDaysysubtractDays. #3913 (alexey-milovidov) - Se corrigió un error: las funciones
round,floor,truncyceilpueden devolver un resultado erróneo cuando se ejecutan con un argumento entero y una escala negativa grande. #3914 (alexey-milovidov) - Se corrigió un error provocado por ‘kill query sync’ que provocaba un core dump. #3916 (muVulDeePecker)
- Se corrigió un error que provocaba un retraso prolongado después de que la cola de replicación quedara vacía. #3928 #3932 (alesapin)
- Se corrigió el consumo excesivo de memoria al insertar en una tabla con clave primaria
LowCardinality. #3955 (KochetovNicolai) - Se corrigió la serialización de
LowCardinalitypara el formatoNativeen caso de arrays vacíos. #3907 #4011 (KochetovNicolai) - Se corrigió un resultado incorrecto al usar distinct en una sola columna numérica LowCardinality. #3895 #4012 (KochetovNicolai)
- Se corrigió la agregación especializada con clave LowCardinality (cuando la configuración
compileestá habilitada). #3886 (KochetovNicolai) - Se corrige el reenvío del usuario y la contraseña en las consultas a tablas replicadas. #3957 (alesapin) (小路)
- Se solucionó una condición de carrera muy rara que puede producirse al listar tablas en la base de datos Dictionary mientras se recargan los diccionarios. #3970 (alexey-milovidov)
- Se corrigió un resultado incorrecto al usar HAVING con ROLLUP o CUBE. #3756 #3837 (Sam Chou)
- Se corrigieron los alias de columnas en consultas con sintaxis
JOIN ONy tablas distribuidas. #3980 (Winter Zhang) - Se corrigió un error en la implementación interna de
quantileTDigest(detectado por Artem Vakhrushev). Este error nunca se produce en ClickHouse y solo era relevante para quienes usan directamente la base de código de ClickHouse como biblioteca. #3935 (alexey-milovidov)
Mejoras
- Soporte para
IF NOT EXISTSen las sentenciasALTER TABLE ADD COLUMN, junto conIF EXISTSenDROP/MODIFY/CLEAR/COMMENT COLUMN. #3900 (Boris Granveaud) - Función
parseDateTimeBestEffort: soporte para los formatosDD.MM.YYYY,DD.MM.YY,DD-MM-YYYY,DD-Mon-YYYY,DD/Month/YYYYy similares. #3922 (alexey-milovidov) CapnProtoInputStreamahora admite estructuras irregulares. #4063 (Odin Hultgren Van Der Horst)- Mejora de usabilidad: se añadió una comprobación para verificar que el proceso del servidor se inicie con el propietario del directorio de datos. No se permite iniciar el servidor como root si los datos pertenecen a un usuario distinto de root. #3785 (sergey-v-galtsev)
- Se mejoró la lógica de comprobación de las columnas requeridas durante el análisis de consultas con JOINs. #3930 (Artem Zuikov)
- Se redujo el número de conexiones cuando hay una gran cantidad de tablas Distributed en un solo servidor. #3726 (Winter Zhang)
- Se admitió la fila de totales para la consulta
WITH TOTALSen el ODBC Driver. #3836 (Maksim Koritckiy) - Se permitió usar
Enums como enteros dentro de la función if. #3875 (Ivan) - Se añadió la configuración
low_cardinality_allow_in_native_format. Si está deshabilitada, no se usa el tipoLowCadrinalityen el formatoNative. #3879 (KochetovNicolai) - Se eliminaron algunos objetos redundantes de la caché de expresiones compiladas para reducir el uso de memoria. #4042 (alesapin)
- Se añadió una comprobación para que la consulta
SET send_logs_level = 'value'solo acepte valores apropiados. #3873 (Sabyanin Maxim) - Se corrigió la comprobación de tipos de datos en las funciones de conversión de tipos. #3896 (Winter Zhang)
Mejoras del rendimiento
- Se añade la configuración de MergeTree
use_minimalistic_part_header_in_zookeeper. Si se habilita, las tablas Replicated almacenarán los metadatos de las partes compactas en un único znode de parte. Esto puede reducir drásticamente el tamaño de la instantánea de ZooKeeper (especialmente si las tablas tienen muchas columnas). Tenga en cuenta que, después de habilitar esta configuración, no podrá volver a una versión anterior que no la admita. #3960 (Alex Zatelepin) - Se añade una implementación basada en DFA para las funciones
sequenceMatchysequenceCounten caso de que el patrón no contenga tiempo. #4004 (Léo Ercolanelli) - Mejora del rendimiento de la serialización de números enteros. #3968 (Amos Bird)
- Se añade relleno con ceros a la izquierda a PODArray para que el elemento -1 siempre sea válido y quede rellenado con ceros. Se utiliza para el cálculo de offsets sin ramas. #3920 (Amos Bird)
- Se revierte la versión de
jemallocque provocó una degradación del rendimiento. #4018 (alexey-milovidov)
Cambios incompatibles con versiones anteriores
- Se eliminó la funcionalidad no documentada
ALTER MODIFY PRIMARY KEYporque quedó reemplazada por el comandoALTER MODIFY ORDER BY. #3887 (Alex Zatelepin) - Se eliminó la función
shardByHash. #3833 (alexey-milovidov) - Se prohibió el uso de subconsultas escalares con resultados de tipo
AggregateFunction. #3865 (Ivan)
Mejoras en compilación, pruebas y empaquetado
- Se añadió compatibilidad con la compilación para PowerPC (
ppc64le). #4132 (Danila Kutenin) - Las pruebas funcionales con estado se ejecutan sobre un conjunto de datos de acceso público. #3969 (alexey-milovidov)
- Se corrigió un error que impedía que el servidor se iniciara con el mensaje
bash: /usr/bin/clickhouse-extract-from-config: Operation not permitteddentro de Docker o systemd-nspawn. #4136 (alexey-milovidov) - Se actualizó la biblioteca
rdkafkaa v1.0.0-RC5. Se utilizó cppkafka en lugar de la interfaz de C de bajo nivel. #4025 (Ivan) - Se actualizó la biblioteca
mariadb-client. Se corrigió uno de los problemas detectados por UBSan. #3924 (alexey-milovidov) - Algunas correcciones para las compilaciones de UBSan. #3926 #3021 #3948 (alexey-milovidov)
- Se añadieron ejecuciones de pruebas en cada commit con compilación de UBSan.
- Se añadieron ejecuciones del analizador estático PVS-Studio en cada commit.
- Se corrigieron errores detectados por PVS-Studio. #4013 (alexey-milovidov)
- Se solucionaron problemas de compatibilidad con glibc. #4100 (alexey-milovidov)
- Actualizar las imágenes de Docker a 18.10 y añadir un archivo de compatibilidad para glibc >= 2.28 #3965 (alesapin)
- Se agregó una variable de entorno si el usuario no quiere hacer
chownde directorios en la imagen de Docker del servidor. #3967 (alesapin) - Se activaron la mayoría de las advertencias de
-Weverythingen clang. Se activó-Wpedantic. #3986 (alexey-milovidov) - Se añadieron algunas advertencias adicionales que solo están disponibles en clang 8. #3993 (alexey-milovidov)
- Enlace con
libLLVMen lugar de bibliotecas LLVM individuales al usar enlace compartido. #3989 (Orivej Desh) - Se añadieron variables del sanitizador para las imágenes de prueba. #4072 (alesapin)
- El paquete de Debian
clickhouse-serverrecomendará el paquetelibcap2-binpara usar la herramientasetcapy asignar capacidades. Esto es opcional. #4093 (alexey-milovidov) - Se mejoró el tiempo de compilación y se corrigieron las inclusiones. #3898 (proller)
- Se añadieron pruebas de rendimiento para las funciones hash. #3918 (filimonov)
- Se corrigieron las dependencias cíclicas entre bibliotecas. #3958 (proller)
- Compilación mejorada con poca memoria disponible. #4030 (proller)
- Se añadió un script de prueba para reproducir la degradación del rendimiento en
jemalloc. #4036 (alexey-milovidov) - Se corrigieron errores de ortografía en comentarios y literales de cadena en
dbms. #4122 (maiha) - Se corrigieron erratas en los comentarios. #4089 (Evgenii Pravda)