Saltar al contenido principal

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 VIEW de ClickHouse; ahora, la lectura de esos diccionarios no provoca el error There 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 TABLE para 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 sucesivos tableA->tableB, tableC->tableA. #8306 (tavplubix)
  • Los diccionarios externos range_hashed creados 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 EXISTS sin el calificador TABLE o DICTIONARY, por ejemplo EXISTS t. #8213 (alexey-milovidov)
  • Se corrigió el tipo de retorno de las funciones rand y randConstant en caso de que el argumento sea Nullable. Ahora las funciones siempre devuelven UInt32 y nunca Nullable(UInt32). #8204 (Nikolai Kochetov)
  • Se corrigió DROP DICTIONARY IF EXISTS db.dict; ahora ya no lanza una excepción si db no 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-copier debido 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 StorageFile y StorageHDFS para evitar superar el límite de memoria. #7981 (alesapin)
  • Se corrigió la consulta CHECK TABLE de tablas *MergeTree sin 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_optimization se 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_filter admitiera LowCardinality y Nullable #7363 #7561 (Nikolai Kochetov)
  • Se añadió la función isValidJSON para 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 hex para números Decimal. Funciona como hex(reinterpretAsString()), pero no elimina los últimos bytes en cero. #7355 (Mikhail Korotov)
  • Se añadieron las funciones arrayFill y arrayReverseFill, 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_num para 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))) en IN. Resuelve #7364 #7366 (achimbab)
  • Se añade el manejo de SQL_TINYINT y SQL_BIGINT, y se corrige el manejo de los tipos SQL_FLOAT del origen de datos en ODBC Bridge. #7491 (Denis Glazachev)
  • Se corrige la agregación (avg y cuantiles) en columnas decimales vacías #7431 (Andrey Konyaev)
  • Se corrigió INSERT en Distributed con columnas MATERIALIZED #7377 (Azat Khuzhin)
  • Permitir que MOVE PARTITION funcione 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 ReplicatedMergeTree en 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_ratio de la configuración de discos #7645 (Vladimir Chebotarev)
  • Se corrige un error cuando la tabla contiene únicamente columnas Tuple o 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 MergeTree ordenadas por tuple(). En casos poco frecuentes, esto podía provocar el error Can't adjust last granule al ejecutar un SELECT. #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/ y shadow/ #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 block al 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 concat cuando todos los argumentos eran FixedString del 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 Nullable reconocidas 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_size a MergeTreeSettings #7412 (Artem Zuikov)
  • Las consultas con HAVING y sin GROUP BY asumen un GROUP BY por constante. Por lo tanto, SELECT 1 HAVING 1 ahora 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 range sea casi igual al de Python. #7518 (sundyli)
  • Añadir las columnas constraints a la tabla system.settings #7553 (Vitaly Baranov)
  • Mejor formato Null para el TCP handler, de modo que sea posible usar select ignore(<expression>) from table format Null para 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 a addBatch de 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_globs en 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

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 en ClickHouseDictionarySource. #9262 (tabplubix)
  • Ahora, las fusiones en segundo plano de la familia de motores de tabla *MergeTree conservan con mayor precisión el orden de los volúmenes de la política de almacenamiento. #8549 (Vladimir Chebotarev)
  • Se evita la pérdida de datos en Kafka en casos poco frecuentes cuando se produce una excepción después de leer el sufijo, pero antes 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 Kafka creada con parámetros incorrectos. Corrige #9494. Incorpora #9507. #9513 (filimonov)
  • Se permite usar MaterializedView con subconsultas sobre tablas Kafka. #8197 (filimonov)

Nueva funcionalidad

  • Se añadió la opción deduplicate_blocks_in_dependent_materialized_views para controlar el comportamiento de las inserciones idempotentes en tablas con vistas materializadas. Esta nueva funcionalidad se incorporó a la versión de corrección de errores a petición especial de Altinity. #9070 (urykhy)

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: credentials y http-headers. #7092 (Guillaume Tassery)
  • Se añade un nuevo ProfileEvent Merge que 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 arraySplit y arrayReverseSplit, 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 usa optimize_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 funciones now(), 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_ms incorrecto en la tabla system.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_size pasó 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 exceeded en el servidor, que provocaba la excepción Attempt to read after eof en 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-option a clickhouse-test para 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 de ThreadPool::schedule(...) a ThreadPool::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_variant en 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 input para leer datos entrantes en la consulta INSERT SELECT. #5450 (palasonic1) #6832 (Anton Popov)
  • Se añade un layout de diccionario sparse_hashed, funcionalmente equivalente al layout hashed, 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 LIMIT a la consulta SHOW. #6944 (Philipp Malkovsky)
  • Se añade la función bitmapSubsetLimit(bitmap, range_start, limit), que devuelve un subconjunto de los limit valores más pequeños del conjunto que no son inferiores a range_start. #6957 (Zhichang Yu)
  • Se añaden las funciones bitmapMin y bitmapMax. #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 = 1 para usar esta funcionalidad. Merge Join todavía está en desarrollo. #6940 (Artem Zuikov)
  • Añade el motor S3 y 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> del config.xml del servidor. #6969 (Azat Khuzhin)
  • Se añade la conversión automática del tipo T a LowCardinality(T) al insertar datos en una columna de tipo LowCardinality(T) en formato Native mediante HTTP. #6891 (Nikolai Kochetov)
  • Se añade la posibilidad de usar la función hex sin necesidad de reinterpretAsString para Float32 y Float64. #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 = 1 para 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ó libsparsehash por sparsehash-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 SELECT en caso de que hubiera un bloque vacío en el flujo de entrada. #6834 #6862 #6911 (Nikolai Kochetov)
  • Se corrigió la función АrrayEnumerateUniqRanked con arrays vacíos en los parámetros #6928 (proller)
  • Se corrigieron las consultas complejas con ARRAY JOIN y subconsultas globales. #6934 (Ivan)
  • Se corrigió el error Unknown identifier en ORDER BY y GROUP BY con múltiples JOINs #7022 (Artem Zuikov)
  • Se corrigió la advertencia de MSan al ejecutar una función con un argumento LowCardinality. #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 АrrayEnumerateUniqRanked con arrays vacíos en los parámetros. #6928 (proller)
  • Se corrigió el nombre de la subconsulta en las consultas con ARRAY JOIN y GLOBAL IN subquery con 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_zookeeper reescribié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 groupUniqArray con un argumento de array vacío. Se debía a que se colocaba un PaddedPODArray vací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 FILL para ORDER BY. (continuación de #5069) #6610 (Anton Popov)
  • WITH TIES, modificador de LIMIT. (continuación de #5069) #6610 (Anton Popov)
  • Interpretar el literal NULL sin comillas como NULL (si la configuración format_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ón input_format_null_as_default=1). #5990 #6055 (tavplubix)
  • Compatibilidad con comodines en las rutas de las funciones de tabla file y hdfs. 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}') y select * from file('some_dir/{some_file,another_file,yet_another}.tsv', 'TSV', 'value UInt32'). #6092 (Olga Khvostikova)
  • Nueva tabla system.metric_log que almacena los valores de system.events y system.metrics en 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: demangle y addressToLine. La función symbolizeAddress pasó a llamarse addressToSymbol por coherencia. La función addressToSymbol devolverá el nombre con el mangling aplicado por motivos de rendimiento, y deberá aplicar demangle. Se añadió la configuración allow_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 lista VALUES propuesta 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: sigmoid y tanh (ú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 alias user() por compatibilidad con MySQL. #6470 (Alex Krash)
  • Nuevas aggregate functions quantilesExactInclusive y quantilesExactExclusive, propuestas en #5885. #6477 (dimarub2000)
  • Función bitmapRange(bitmap, range_begin, range_end) que devuelve un nuevo conjunto correspondiente al rango especificado (sin incluir range_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 longitud precision para 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 _partition y _timestamp en 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 Template para 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 funcionalidad LIVE VIEW puede 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 types en la función bitmapContains. #6136 #6146 #6156 (dimarub2000)
  • Se corrige un segfault con optimize_skip_unused_shards activado 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 0x14c0 que podía producirse debido a la ejecución concurrente de DROP TABLE y SELECT sobre system.parts o system.parts_columns. Se corrigió una condición de carrera en la preparación de las consultas de mutación. Se corrigió un interbloqueo causado por OPTIMIZE en tablas Replicated y por operaciones de modificación concurrentes, como ALTER. #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 quantile y median sobre Nullable(Decimal128). #6378 (Artem Zuikov)
  • Se corrigió un posible resultado incompleto devuelto por una consulta SELECT con una condición WHERE sobre 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ón toFloat. #6248 #6374 (dimarub2000)
  • Verifique la configuración max_expanded_ast_elements para las mutaciones. Elimine las mutaciones después de TRUNCATE 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 COLUMN y 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 LowCardinality en AggregateFunctionFactory. Se corrige #6257. #6281 (Nikolai Kochetov)
  • Corrige el comportamiento erróneo y posibles segfaults en las funciones agregadas topK y topKWeighted. #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 nullIf al pasar un argumento NULL como 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_nulls activado. #6705 (Artem Zuikov)
  • Deshabilitar las sustituciones de Poco::AbstractConfiguration en las consultas de clickhouse-client. #6706 (alexey-milovidov)
  • Se evita un interbloqueo en REPLACE PARTITION. #6677 (alexey-milovidov)
  • El uso de arrayReduce con 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 ROLLUP y WITH CUBE de GROUP BY con 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_handle se inicializa en startup(), 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 libunwind durante el manejo de una excepción al acceder a una estructura ThreadStatus sin 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 no Nullable en caso de que no contenga valores NULL (p. ej., en una consulta como SELECT 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 TRUNCATE en 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 ... UPDATE para tablas con enable_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_speed o max_execution_speed_bytes. Se corrigieron falsos errores como Estimated query execution time (inf seconds) is too long. #5547 #6232 (alexey-milovidov)
  • Se solucionaron problemas con el uso de columnas MATERIALIZED y alias en MaterializedView. #448 #3484 #3450 #2878 #2285 #3796 (Amos Bird) #6316 (alexey-milovidov)
  • Se corrigió el comportamiento de FormatFactory para 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, URL y HDFS) #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 ... FINAL en partes antiguas sin información de TTL o con información de TTL obsoleta, por ejemplo, después de la consulta ALTER ... MODIFY TTL. Se añadieron las consultas SYSTEM STOP/START TTL MERGES para 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_run de InterpreterSelectQuery. … #6375 (Nikolai Kochetov)
  • Se admite ASOF JOIN con la sección ON. #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 = x recalcula todos los índices que usan la columna x. #5053 (Nikita Vasilev)
  • Permitir ATTACH de live views (por ejemplo, durante el arranque del servidor) independientemente de la configuración allow_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, url y hdfs admiten columnas ALIAS. #6255 (alexey-milovidov)
  • Lanzar una excepción si el archivo config.d no 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 Distributed debe abarcar una consulta de lectura (para optimize_skip_unused_shards = 1), ClickHouse ahora comprueba las condiciones de las cláusulas prewhere y where de la sentencia SELECT. #6521 (Alexander Kazakov)
  • Se habilitó SIMDJSON para 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 strict en windowFunnel(). Cuando se establece strict, windowFunnel() aplica condiciones solo a los valores únicos. #6548 (achimbab)
  • Interfaz de mysqlxx::Pool más segura. #6150 (avasiliev)
  • El ancho de línea de las opciones al ejecutar con la opción --help ahora 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_DATA y TYPE_MISMATCH cambió del valor predeterminado 500 Internal Server Error a 400 Bad Request. #6271 (Alexander Rodin)
  • Se movió el objeto Join de ExpressionAction a AnalyzedJoin. ExpressionAnalyzer y ExpressionAction ya no conocen la clase Join. Su lógica queda encapsulada en la interfaz AnalyzedJoin. #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 RENAME en 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 usar where_condition de la configuración con el alias partition_key en 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 DistributedFilesToInsert que 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/ExpressionAnalyzer a AnalyzedJoin. #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 BY y ORDER 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 SELECT puede 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 consulta DROP. Esto provocará mensajes falsos de “Intento de adquirir un bloqueo exclusivo de forma recursiva”. #6771 (alexey-milovidov)
  • Se separó ExpressionAnalyzer.appendJoin(). Se preparó espacio en ExpressionAnalyzer para MergeJoin. #6524 (Artem Zuikov)
  • Se añadió el plugin de autenticación mysql_native_password al 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 en Allocator (problema insignificante). #6197 (alexey-milovidov)
  • Se mueve collectUsedColumns de ExpressionAnalyzer a SyntaxAnalyzer. SyntaxAnalyzer ahora crea required_source_columns por sí mismo. #6416 (Artem Zuikov)
  • Añadir la configuración joined_subquery_requires_alias para exigir alias en las subconsultas y las funciones de tabla de FROM cuando haya más de una tabla presente (es decir, consultas con JOINs). #6733 (Artem Zuikov)
  • Se extrajo la clase GetAggregatesVisitor de ExpressionAnalyzer. #6458 (Artem Zuikov)
  • system.query_log: cambiar el tipo de dato de la columna type a Enum. #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 compile funcione. En versiones anteriores, el usuario podía recibir errores como cannot 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-obfuscator está disponible en el paquete clickhouse-client. En versiones anteriores, estaba disponible como clickhouse 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_ids a system.processes y system.query_log para 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_password se 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 configuraciones replace_running_query_max_wait_ms, kafka_max_wait_ms y connection_pool_max_wait_ms para diferenciarlas. #6692 (alexey-milovidov)
  • Extraer SelectQueryExpressionAnalyzer de ExpressionAnalyzer. 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_interval y idle_connection_timeout de la conexión. #6230 (alexey-milovidov)
  • MergeTree ahora 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, cuando expressions tiene un prefijo que coincide con la clave de ordenación en tablas MergeTree. Esta optimización está controlada por la configuración optimize_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 FastOps para las funciones exp, 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 funciones exp y log en más de 6 veces. Las funciones exp y log con argumento Float32 devolverán Float32 (en versiones anteriores siempre devolvían Float64). Ahora exp(nan) puede devolver inf. Es posible que el resultado de las funciones exp y log no 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 simdjson eliminando la asignación dinámica en ParsedJson::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 de numbers. 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ó SIGPROF como 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 StringHashMap PR #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_dictionaries en 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 -Wshadow a GCC. #6325 (kreuzerkrieg)
  • Se eliminó el código obsoleto de compatibilidad con mimalloc. #6715 (alexey-milovidov)
  • zlib-ng determina 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_cast de 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 once al tipo loop. #6536 (Nikolai Kochetov)
  • odbc-bridge.cpp define main(), por lo que no debe incluirse en clickhouse-lib. #6538 (Orivej Desh)
  • Prueba para detectar un bloqueo en FULL|RIGHT JOIN con 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::filesystem por std::filesystem cuando 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 identifier corregida en la sección IN. #6708 (Artem Zuikov)
  • Simplificado shared_ptr_helper porque 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_dictionaries en 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 library con 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 TinyLog al 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/delete al 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 hyperscan a 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-9 al contenedor docker/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 catBoostPool y el almacenamiento CatBoostPool, que se usaban raramente. Si ha utilizado esta función de tabla, envíe un correo electrónico a feedback@clickhouse.com. Tenga en cuenta que la integración con CatBoost se mantiene y seguirá teniendo soporte. #6279 (alexey-milovidov)
  • ANY RIGHT JOIN y ANY FULL JOIN están deshabilitados de forma predeterminada. Establezca la configuración any_join_distinct_right_table_keys para 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 DROP en 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 recv infinito desde el socket. #6386 (alesapin)
  • Se corrigió el uso excesivo de CPU al ejecutar la función JSONExtractRaw sobre un valor booleano. #6208 (Vitaly Baranov)
  • Se corrigió la regresión al insertar en la vista materializada. #6415 (Ivan)
  • La función de tabla url tení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 AST inútil en el índice Set. #6510 #6651 (Nikita Vasilev)
  • Se corrigió el análisis de los valores de AggregateFunction integrados 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.parts y en la consulta ALTER. #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 sample y prewhere. #6167 (Lixiang Qian) #6823 (Nikolai Kochetov)
  • Se corrigió un fallo al usar la cláusula IN con 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 Decimal tipos 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, ODBC y JDBC ahora funciona correctamente para consultas SELECT WHERE con múltiples expresiones AND. #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 ... UPDATE para tablas con enable_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 de DROP TABLE y SELECT desde system.parts o system.parts_columns. Se corrigió una condición de carrera en la preparación de consultas de mutación. Se corrigió un interbloqueo causado por OPTIMIZE en 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 DELETE en 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() y stochasticLogisticRegression(), 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 RENAME ahora 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_fields está 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 formatos JSONEachRow y CSV*. 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=1 para 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 DoubleDelta de Int64 para valores DoubleDelta grandes y se mejoró la codificación DoubleDelta para datos aleatorios en Int32. #5998 (Vasily Nemkov)
  • Se corrigió la sobreestimación de max_rows_to_read si el ajuste merge_tree_uniform_read_distribution está establecido en 0. #6019 (alexey-milovidov)

Mejora

  • Lanza una excepción si el archivo config.d no tiene el mismo elemento raíz que el archivo de configuración #6123 (dimarub2000)

Mejora del rendimiento

  • Se optimiza count(). Ahora utiliza la columna más pequeña (si es posible). #6028 (Amos Bird)

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 libcxx externo #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 COLUMN y 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 mrk para 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 identifier con 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 АrrayEnumerateUniqRanked con 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 JSONExtract al extraer un Tuple de JSON. #6718 (Vitaly Baranov)
  • Se corrigió una posible pérdida de datos después de una consulta ALTER DELETE en 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 nullIf para 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 UPDATE o ALTER DELETE largos 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 ... UPDATE para tablas con enable_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 0x14c0 que podía producirse debido a la ejecución concurrente de DROP TABLE y SELECT desde system.parts o system.parts_columns. Se corrigió una condición de carrera en la preparación de las consultas de mutación. Se corrigió un interbloqueo causado por OPTIMIZE en 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 arrayReduce con argumentos constantes. #6326 (alexey-milovidov)
  • Se corrigió la monotonicidad de toFloat(). #6374 (dimarub2000)
  • Se corrige un segfault con optimize_skip_unused_shards habilitado 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 topK y topKWeighted. #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 Merge y Distributed #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_interval e idle_connection_timeout de 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 LowCardinality en AggregateFunctionFactory. Esto corrige #6257. #6281 (Nikolai Kochetov)
  • Se corrigió el análisis sintáctico de los valores bool a partir de las cadenas true y false en los archivos de configuración. #6278 (alesapin)
  • Se corrigió un error poco frecuente con encabezados de flujo incompatibles en consultas a una tabla Distributed sobre una tabla MergeTree cuando una parte de WHERE pasa a PREWHERE. #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

  • Kafka sigue 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 ROLLUP y WITH CUBE de GROUP BY con 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_call en 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 no Nullable cuando no contenía valores NULL (por ejemplo, en una consulta como SELECT 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_handle se inicializa en startup(), 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 rpm oficiales. #5740 (proller) (alesapin)
  • Se añadió la posibilidad de generar paquetes .rpm y .tgz con el script packager. #5769 (alesapin)
  • Correcciones en el sistema de compilación “Arcadia”. #6223 (proller)

Cambio incompatible con versiones anteriores

  • Kafka no 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 DoubleDelta y Gorilla #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 capacidad CAP_SYS_NICE para funcionar. Esto implementa #5858 #5909 (alexey-milovidov)
  • Se implementaron las columnas _topic, _offset, _key para 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) y groupArrayMovingAvg(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 geoToH3 de 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 Delta que 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, checkDataPart siempre fallaba en una parte con una columna LowCardinality. #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 remote o 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 UCT en lugar de UTC. 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 CLUSTER se ejecutarán directamente en la réplica líder. #5757 (alesapin)
  • Se corrige coalesce para ColumnConst con ColumnNullable + cambios relacionados. #5755 (Artem Zuikov)
  • Corrige ReadBufferFromKafkaConsumer para que siga leyendo mensajes nuevos después de commit(), aunque antes se hubiera quedado bloqueado #5852 (Ivan)
  • Corrige los resultados de FULL y RIGHT JOIN al hacer JOIN con claves Nullable en 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-free en ClusterCopier, provocada por un watch que intentaba usar un objeto copier ya eliminado. #5871 (Nikolai Kochetov)
  • Se corrigió el puntero StringRef incorrecto que devolvían algunas implementaciones de IColumn::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 insert y la consulta select para el motor MySQL con comillas de identificadores al estilo de MySQL. #5704 (Winter Zhang)
  • Ahora la consulta CHECK TABLE ya 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/localtime es 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_query depende 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 Enum como sinónimo de Enum8 o Enum16. #5886 (dimarub2000)
  • Variante de transposición completa de bits para el códec T64. Puede ofrecer una mejor compresión con zstd. #5742 (Artem Zuikov)
  • Ahora, una condición sobre la función startsWith puede usar la clave primaria. Esto corrige #5310 y #5882 #5919 (dimarub2000)
  • Permite usar clickhouse-copier con una topología de clúster con replicación cruzada al permitir un nombre de base de datos vacío. #5745 (nvartolomei)
  • Usar UTC como zona horaria predeterminada en sistemas sin tzdata (p. ej., un contenedor Docker básico). Antes de este parche, aparecía el mensaje de error Could not determine local time zone y 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 quantileTiming para 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 TABLE mú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_type puede usarse sin ningún efecto. 0f15c01c6802f7ce1a1494c12c846be8c98944cd Alexey Milovidov

Mejora del rendimiento

  • Se incrementa el número de streams para hacer SELECT desde la tabla Merge y lograr una distribución más uniforme de los hilos. Se añadió la configuración max_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 (Arena and ArenaWithFreeLists) 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 bitTest en 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-undefined obliga 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 libunwind podí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

  • Kafka no funciona en esta versión.
  • adaptive_index_granularity = 10MB se habilita de forma predeterminada para las nuevas tablas MergeTree. 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, SEHierarchy ya 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 que bitmapHasAny si 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 SENDS para controlar las inserciones asíncronas en tablas Distributed. #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 arrayEnumerateUniqRanked para 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_nulls no 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 en HDFS. #5684 (Xindong Peng)

Mejora

  • Trata las celdas vacías en CSV como valores predeterminados cuando la configuración input_format_defaults_for_omitted_fields está 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 por gperf, con una lista generada a partir del archivo: https://publicsuffix.org/list/public&#95;suffix&#95;list.dat. (por ejemplo, ahora reconocemos el dominio ac.uk como no significativo). #5030 (Guillaume Tassery)
  • Se adoptó el tipo de dato IPv6 en las tablas del sistema; se unificaron las columnas de información del cliente en system.processes y system.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 ALTER ON CLUSTER. #5593 #5613 (sundyli)
  • Admite la sección <logger> en el archivo de configuración de clickhouse-local. #5540 (proller)
  • Permite ejecutar consultas con la función de tabla remote en clickhouse-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ó TestKeeper como una implementación de la interfaz de ZooKeeper utilizada para las pruebas #5643 (alexey-milovidov) (levushkin aleksej)
  • A partir de ahora, las pruebas .sql pueden 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_log inmediatamente 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 dictGet y dictGetOrDefault para 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 PrettySpace cuando 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 model no 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 bitmapHasAny en 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 TTL en 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_format y low_cardinality_allow_in_native_format debido 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 dictGetT en lugar de bloquearse. #5446 (Artem Zuikov)
  • Corrige los valores incorrectos de element_count y load_factor del diccionario hash en la tabla system.dictionaries. #5440 (Azat Khuzhin)

Mejora de compilación/pruebas/empaquetado

  • Se corrigió la compilación sin compatibilidad con compresión HTTP Brotli (variable de CMake ENABLE_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.basename en Python, basename en 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 BY o LIMIT m OFFSET n BY para 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 un AggregatingMergeTree. Solo puede usarse con funciones simples como any, anyLast, sum, min y max. #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, kurtPop y kurtSamp para 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*OrZero y toDecimal*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 tablas MergeTree. #5353 (akuzm)
  • Se añadió la función ngramSearch para 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 geohashEncode y geohashDecode. #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 agregado timeSeriesGroupRateSum, que calcula la tasa de las series temporales y luego suma las tasas. #4542 (Yangkuan Liu)
  • Se agregaron las funciones IPv4CIDRtoIPv4Range y IPv6CIDRtoIPv6Range para 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_headers habilitada. 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_total para 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 operaciones JOIN después de la transformación. #5178 (alexey-milovidov)
  • Se añadieron las funciones JSONExtractRaw, JSONExtractKeyAndValues. Se renombraron las funciones jsonExtract<type> a JSONExtract<type>. Cuando algo sale mal, estas funciones devuelven los valores correspondientes, no NULL. Se modificó la función JSONExtract; ahora obtiene el tipo de retorno de su último parámetro y no inyecta Nullable. 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 if y multiIf ya no dependen del Nullable de la condición, sino de las ramas, para mantener la compatibilidad con SQL. #5238 (Jian Wu)
  • El predicado In ahora genera un resultado Null si la entrada es Null, como la función Equal. #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_batch para 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 _table en el motor Merge. #5325 (Ivan)
  • Hacer que las funciones de agregación sequenceMatch admitan 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 leastSqr como simpleLinearRegression, LinearRegression como linearRegression y LogisticRegression como logisticRegression. #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 concat para 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 forcerestart no 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 Decimal a Nullable(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 uniqHLL y uniqCombined, así como de funciones matemáticas como log. #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 quantileExact con tipos Decimal. #5304 (Artem Zuikov)

Documentación

  • Traducir la documentación de CollapsingMergeTree al 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, bitmapHasAny y bitmapHasAll, análogas a las funciones hasAny y hasAll para Array. #5279 (Sergi Vladykin)

Correcciones de errores

  • Corrige un segfault en minmax INDEX 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 .. PREWHERE sobre una columna con DEFAULT. #5397 (proller)
  • Corrige la consulta ALTER MODIFY TTL en ReplicatedMergeTree. #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_count para 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 consulta ALTER 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 INSERT en 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 groupUniqArray con un parámetro opcional max_size que limita el tamaño del array resultante. Este comportamiento es similar al de la función groupArray(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

Documentación

Mejoras de compilación/pruebas/empaquetado

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 mysql y odbc, 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 brotli para las respuestas HTTP (Accept-Encoding: br) #4388 (Mikhail)
  • Se añadió la nueva función isValidUTF8 para 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 en right join y sobre ambas tablas en full 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

Cambios incompatibles con versiones anteriores

  • El encabezado HTTP Query-Id se renombró a X-ClickHouse-Query-Id por coherencia. #4972 (Mikhail)

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 DISTINCT con JOIN #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

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, in y like). #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 JOIN como CROSS JOIN. Después, se reescriben como INNER JOIN si es posible. #4661 (Artem Zuikov)

Mejora

  • topK y topKWeighted ahora admiten un loadFactor personalizado (corrige el problema #4252). #4634 (Kirill Danshin)
  • Se permite usar parallel_replicas_count > 1 incluso 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 Buffer ahora admite PREWHERE. #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 Null con consultas en streaming. #4811 (alexey-milovidov)
  • Se permite deshabilitar, por usuario, las funciones con la biblioteca hyperscan para 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 multiMatch que exige que el tamaño de la cadena quepa en unsigned int. También se añadió un límite al número de argumentos de las funciones multiSearch. #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_detentions a 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 trigramDistance a ngramDistance y se añadieron más funciones con CaseInsensitive y UTF. #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, MATERIALIZED y ALIAS en una sola lista (corrige el problema #2867). #4707 (Alex Zatelepin)

Corrección de errores

  • Se evita std::terminate en caso de error de asignación de memoria. Ahora se lanza la excepción std::bad_alloc, como era de esperar. #4665 (alexey-milovidov)
  • Corrige la lectura de capnproto desde el búfer. A veces, los archivos no se cargaban correctamente mediante HTTP. #4674 (Vladislav)
  • Se corrigió el error Unknown log entry type: 0 después de la consulta OPTIMIZE TABLE FINAL. #4683 (Amos Bird)
  • Los argumentos incorrectos en las funciones hasAny o hasAll pueden 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 median y quantile. #4702 (hcz)
  • Se corrige la detección del nivel de compresión cuando network_compression_method está 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 histogram con tablas Distributed. #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 ReplicatedMergeTreeAlterThread en 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 consulta ATTACH mal formada en los metadatos). #4782 (alexey-milovidov)
  • Se corrige un fallo al ejecutar ALTER ... MODIFY ORDER BY en una tabla Distributed. #4790 (TCeason)
  • Se corrigió un fallo de segmentación en JOIN ON con enable_optimize_predicate_expression habilitado. #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 JOIN entre una columna no anulable y una anulable. Se corrigen los NULLs en las claves de la derecha en ANY 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 SELECT de system.tables si 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 RENAME en 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 JOIN al unir Nullable con no Nullable. #4855 (Artem Zuikov)
  • Se corrige la excepción No message received al obtener partes entre réplicas. #4856 (alesapin)
  • Se corrigió el resultado incorrecto de la función arrayIntersect en el caso de varios valores repetidos en un solo array. #4871 (Nikolai Kochetov)
  • Corrige una condición de carrera durante consultas ALTER COLUMN concurrentes que podía provocar un fallo del servidor (corrige el problema #3421). #4592 (Alex Zatelepin)
  • Se corrige un resultado incorrecto en FULL/RIGHT JOIN con una columna constante. #4723 (Artem Zuikov)
  • Se solucionan los duplicados en GLOBAL JOIN con asterisco. #4705 (Artem Zuikov)
  • Corrige la deducción de parámetros en ALTER MODIFY de la columna CODEC cuando no se especifica el tipo de columna. #4883 (alesapin)
  • Las funciones cutQueryStringAndFragment() y queryStringAndFragment() ahora funcionan correctamente cuando la URL contiene 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_io es 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 toISOWeek para el año 1970. #4988 (alexey-milovidov)
  • Se corrigió la duplicación de consultas DROP, TRUNCATE y OPTIMIZE cuando se ejecutan con ON CLUSTER para la familia de tablas ReplicatedMergeTree*. #4991 (alesapin)

Cambio incompatible con versiones anteriores

  • Se renombró la configuración insert_sample_with_metadata a input_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 (multiPosition a multiSearchAllPositions, multiSearch a multiSearchAny, firstMatch a multiSearchFirstIndex). #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_cache es 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_PARQUET y ENABLE_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 loss en clickhouse-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-server con 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 mremap cuando se compila con Thread Sanitizer. Sorprendentemente, TSan no intercepta mremap (aunque sí intercepta mmap, 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::terminate en caso de error de asignación de memoria. Ahora se lanza la excepción std::bad_alloc, como es de esperar. #4665 (alexey-milovidov)
  • Corrige la lectura de capnproto desde el búfer. A veces, los archivos no se cargaban correctamente por HTTP. #4674 (Vladislav)
  • Corrige el error Unknown log entry type: 0 tras la consulta OPTIMIZE TABLE FINAL. #4683 (Amos Bird)
  • Los argumentos incorrectos de las funciones hasAny o hasAll pueden 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 median y quantile. #4702 (hcz)
  • Se corrige la detección del nivel de compresión cuando network_compression_method está 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 histogram con tablas Distributed. #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 ReplicatedMergeTreeAlterThread en 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 consulta ATTACH malformada en los metadatos). #4782 (alexey-milovidov)
  • Se corrigió un fallo en ALTER ... MODIFY ORDER BY de una tabla Distributed. #4790 (TCeason)
  • Se corrige un segfault en JOIN ON con enable_optimize_predicate_expression activado. #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 SELECT de system.tables si 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 RENAME en 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 received al transferir partes entre réplicas. #4856 (alesapin)
  • Se corrigió el resultado incorrecto de la función arrayIntersect cuando había varios valores repetidos en un mismo array. #4871 (Nikolai Kochetov)
  • Se corrigió una condición de carrera durante consultas ALTER COLUMN concurrentes 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 MODIFY de la columna CODEC cuando no se especifica el tipo de columna. #4883 (alesapin)
  • Las funciones cutQueryStringAndFragment() y queryStringAndFragment() ahora funcionan correctamente cuando URL contiene un fragmento, pero no una consulta. #4894 (Vitaly Baranov)
  • Se corrige un error poco frecuente cuando la configuración min_bytes_to_use_direct_io es 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 toISOWeek para el año 1970. #4988 (alexey-milovidov)
  • Se corrige la duplicación de las consultas DROP, TRUNCATE y OPTIMIZE al ejecutarse con ON CLUSTER en la familia de tablas ReplicatedMergeTree*. #4991 (alesapin)

Mejoras

  • Las columnas ordinarias, DEFAULT, MATERIALIZED y ALIAS se 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 JOIN al hacer JOIN entre Nullable y no Nullable. #4855 (Artem Zuikov)
  • Se corrige un fallo de segmentación en clickhouse-copier. #4835 (proller)

Mejora de compilación/pruebas/empaquetado

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 BY como LIMIT. Anteriormente, si LIMIT BY y LIMIT se usaban en una consulta remota, LIMIT podía aplicarse antes que LIMIT 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_speed y max_execution_speed_bytes para limitar el uso de recursos. Se añadió el ajuste min_execution_speed_bytes para complementar min_execution_speed. #4430 (Winter Zhang)
  • Se implementó la función flatten. #4555 #4409 (alexey-milovidov, kzon)
  • Se añadieron las funciones arrayEnumerateDenseRanked y arrayEnumerateUniqRanked (es como arrayEnumerateUniq, 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 set para columnas Nullable y LowCardinality. Antes, usar el índice set con una columna Nullable o LowCardinality provocaba el error Data type must be deserialized with multiple streams al 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_log se creó sin tener en cuenta la configuración. #4483 (alexey-milovidov)
  • Se corrigió el comportamiento indefinido en la función dictIsIn para 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 llvm en contrib y podamos probarlo con clang y asan. #4579 (alesapin)
  • Se evitó std::terminate cuando invalidate_query para la fuente de diccionario externo clickhouse devolví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 que invalidate_query se ejecutaba cada cinco segundos independientemente del lifetime. #4583 (alexey-milovidov)
  • Se evita un interbloqueo cuando la invalidate_query de un Diccionario con origen clickhouse implicaba la tabla system.dictionaries o la base de datos Dictionaries (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 ON para las columnas de la tabla derecha. #4412 (Artem Zuikov)
  • El resultado de múltiples JOIN necesita 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_io se 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-test desde 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.h no existe en lz4 externo porque es un detalle de implementación y sus símbolos usan espacio de nombres mediante la macro XXH_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 quantileTiming podí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 JOIN al 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

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::terminate cuando 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 inline de void readBinary(...) en Field.cpp. También se unificaron bloques redundantes de namespace 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 ROLLUP para un GROUP BY con una sola clave LowCardinality. #4384 (Nikolai Kochetov)
  • Se corrigió un error en el índice set (se descartaba un gránulo si contenía más de max_rows filas). #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-server para 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 campos latest_failed_part, latest_fail_time y latest_fail_reason a la tabla system.mutations para 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 partes query y data. #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ó sumMapFiltered para poder limitar el número de claves cuyos valores sumará sumMap. #4129 (Léo Ercolanelli)
  • Se añadió compatibilidad con tipos Nullable en la función de tabla mysql. #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)
  • StorageJoin ahora admite la configuración join_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 IPv4 e IPv6. También se añadieron implementaciones más eficaces de las funciones IPv*. #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-Id al header de respuesta HTTP del servidor. #4231 (Mikhail)

Características experimentales

  • Se añadieron índices de omisión de datos minmax y set para la familia de motores de tabla MergeTree. #4143 (Nikita Vasilev)
  • Se añadió la conversión de CROSS JOIN a INNER JOIN cuando sea posible. #4221 #4266 (Artem Zuikov)

Correcciones de errores

  • Se corrigió Not found column en caso de columnas duplicadas en la sección JOIN ON. #4279 (Artem Zuikov)
  • Hacer que el comando START REPLICATED SENDS inicie 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 formato CSVWithNames o TSVWIthNames y 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 JOIN con duplicados en la tabla de la derecha. #4184 (Artem Zuikov)
  • Se corrigió un fallo de segmentación con use_uncompressed_cache=1 y 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_expressions al 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 instruction al 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 received al 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 Date y DateTime en las ramas del operador condicional (función if). Se añadió un caso genérico para la función if. #4243 (alexey-milovidov)
  • Los diccionarios de ClickHouse ahora se cargan en el proceso clickhouse. #4166 (alexey-milovidov)
  • Se corrigió un interbloqueo cuando se reintentó SELECT desde una tabla con el engine File tras el error No 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 error table does not exist. #4313 (alexey-milovidov)
  • clickhouse-client puede 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 IN producí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 Date y DateTime. #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/ssl se 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 datos LowCardinality ya 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 INDEX en la consulta CREATE TABLE. Una columna con el nombre index debe ir entre acentos graves o comillas dobles: `index`. #4143 (Nikita Vasilev)
  • sumMap ahora promociona el tipo de resultado en lugar de desbordarse. El comportamiento anterior de sumMap se puede obtener usando la función sumMapWithOverflow. #4151 (Léo Ercolanelli)

Mejoras del rendimiento

  • Se sustituyó std::sort por pdqsort para consultas sin LIMIT. #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, b ahora devuelve las columnas a y b solo de la tabla de la izquierda. #4141 (Artem Zuikov)
  • Se permitió que la opción -C del cliente funcionara como la opción -c. #4232 (syominsergey)
  • Ahora, si la opción --password se 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 LIKE o 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 --version para el servidor ClickHouse. #4251 (Lopatin Konstantin)
  • Se añadió la opción --help/-h a clickhouse-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 ajuste asterisk_left_columns_only está establecido en 1 al usar GLOBAL JOIN con SELECT * (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

Esta versión contiene exactamente los mismos parches que la 19.3.7.

Lanzamiento de ClickHouse 19.1.10, 2019-03-03

Este lanzamiento contiene exactamente el mismo conjunto de parches que la versión 19.3.6.

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-client puede 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 error table does not exist. #4313 (alexey-milovidov)
  • Se corrigió un bloqueo mutuo al reintentar SELECT desde una tabla con el motor File tras el error No 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 received al 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_expressions en la comparación de fechas grandes (de más de int16). #4341 (alesapin)
  • Se corrigieron un fallo de segmentación con uncompressed_cache=1 y una excepción debida a un tamaño sin comprimir incorrecto. #4186 (alesapin)
  • Se corrigió ALL JOIN con 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 formato CSVWithNames o TSVWIthNames y 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 SENDS inicie envíos replicados. #4229 (nvartolomei)
  • Se corrigió Not found column para las columnas duplicadas en la sección JOIN ON. #4279 (Artem Zuikov)
  • Ahora /etc/ssl se 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 Date y DateTime. #4237 (valexey)
  • Se corrigió un resultado incorrecto cuando se usan argumentos Date y DateTime en las ramas del operador condicional (función if). Se añadió un caso genérico para la función if. #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 ALTER de los códecs de compresión. #4054 (alesapin)
  • Se añadieron las funciones left, right, trim, ltrim, rtrim, timestampadd, timestampsub para ofrecer compatibilidad con el estándar SQL. #3826 (Ivan Blinkov)
  • Soporte para escritura en tablas HDFS y en la función de tabla hdfs. #4084 (alesapin)
  • Se añadieron funciones para buscar varias cadenas constantes dentro de una cadena grande: multiPosition, multiSearch ,firstMatch, también con variantes -UTF8, -CaseInsensitive y -CaseInsensitiveUTF8. #4053 (Danila Kutenin)
  • Poda de segmentos no utilizados si la consulta SELECT filtra por la clave de sharding (configuración optimize_skip_unused_shards). #3851 (Gleb Kanterov, Ivan)
  • Se permite que el motor Kafka ignore 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ón modelEvaluate devuelve una tupla con predicciones brutas por clase para modelos multiclase. libcatboostmodel.so debe compilarse con #607. #3959 (KochetovNicolai)
  • Se añadieron las funciones filesystemAvailable, filesystemFree, filesystemCapacity. #4097 (Boris Granveaud)
  • Se añadieron las funciones hash xxHash64 y xxHash32. #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 como remote, 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_size para 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_zk no 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 remote cuando se usaban restricciones incorrectas en getStructureOfRemoteTable. #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/fd antes de leer todos los descriptores de archivo de /proc tras hacer fork del subproceso odbc-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 arrayEnumerateUniq y arrayEnumerateDense al pasar argumentos no válidos. #3909 (alexey-milovidov)
  • Se corrige UB en StorageMerge. #3910 (Amos Bird)
  • Se corrigió un segfault en las funciones addDays y subtractDays. #3913 (alexey-milovidov)
  • Se corrigió un error: las funciones round, floor, trunc y ceil pueden 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 LowCardinality para el formato Native en 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 compile está 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 ON y 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 EXISTS en las sentencias ALTER TABLE ADD COLUMN, junto con IF EXISTS en DROP/MODIFY/CLEAR/COMMENT COLUMN. #3900 (Boris Granveaud)
  • Función parseDateTimeBestEffort: soporte para los formatos DD.MM.YYYY, DD.MM.YY, DD-MM-YYYY, DD-Mon-YYYY, DD/Month/YYYY y similares. #3922 (alexey-milovidov)
  • CapnProtoInputStream ahora 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 TOTALS en 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 tipo LowCadrinality en el formato Native. #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 sequenceMatch y sequenceCount en 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 jemalloc que provocó una degradación del rendimiento. #4018 (alexey-milovidov)

Cambios incompatibles con versiones anteriores

  • Se eliminó la funcionalidad no documentada ALTER MODIFY PRIMARY KEY porque quedó reemplazada por el comando ALTER 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 permitted dentro de Docker o systemd-nspawn. #4136 (alexey-milovidov)
  • Se actualizó la biblioteca rdkafka a 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 chown de directorios en la imagen de Docker del servidor. #3967 (alesapin)
  • Se activaron la mayoría de las advertencias de -Weverything en 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 libLLVM en 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-server recomendará el paquete libcap2-bin para usar la herramienta setcap y 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)
Última modificación el 10 de junio de 2026