Versión de ClickHouse 18.16
Versión de ClickHouse 18.16.1, 2018-12-21
Correcciones de errores:
- Se corrigió un error que provocaba problemas al actualizar diccionarios con el origen ODBC. #3825, #3829
- La compilación JIT de las funciones de agregación ahora funciona con columnas LowCardinality. #3838
Mejoras:
- Se añadió la configuración
low_cardinality_allow_in_native_format(habilitada de forma predeterminada). Cuando se deshabilita, las columnas LowCardinality se convierten en columnas ordinarias en las consultas SELECT, y las consultas INSERT deberán usar columnas ordinarias. #3879
Mejoras en la compilación:
- Correcciones en las compilaciones para macOS y ARM.
Versión de ClickHouse 18.16.0, 2018-12-14
Nuevas características:
- Las expresiones
DEFAULTse evalúan para los campos que faltan al cargar datos en formatos de entrada semiestructurados (JSONEachRow,TSKV). Esta función se habilita con la configuracióninsert_sample_with_metadata. #3555 - La consulta
ALTER TABLEahora incluye la acciónMODIFY ORDER BYpara cambiar la clave de ordenación al agregar o eliminar una columna de la tabla. Esto es útil para tablas de la familiaMergeTreeque realizan tareas adicionales durante la fusión en función de esta clave de ordenación, comoSummingMergeTree,AggregatingMergeTree, etc. #3581 #3755 - Para las tablas de la familia
MergeTree, ahora puede especificar una clave de ordenación (ORDER BY) y un índice (PRIMARY KEY) distintos. La clave de ordenación puede ser más larga que el índice. #3581 - Se agregaron la función de tabla
hdfsy el motor de tablaHDFSpara importar y exportar datos hacia y desde HDFS. chenxing-xc - Se agregaron funciones para trabajar con base64:
base64Encode,base64Decode,tryBase64Decode. Alexander Krasheninnikov - Ahora puede usar un parámetro para configurar la precisión de la función de agregado
uniqCombined(seleccionar el número de celdas de HyperLogLog). #3406 - Se agregó la tabla
system.contributors, que contiene los nombres de todas las personas que hicieron commits en ClickHouse. #3452 - Se agregó la posibilidad de omitir la partición en la consulta
ALTER TABLE ... FREEZEpara hacer una copia de seguridad de todas las particiones a la vez. #3514 - Se agregaron las funciones
dictGetydictGetOrDefault, que no requieren especificar el tipo del valor de retorno. El tipo se determina automáticamente a partir de la descripción del diccionario. Amos Bird - Ahora puede especificar comentarios para una columna en la descripción de la tabla y modificarlos mediante
ALTER. #3377 - Se admite la lectura de tablas de tipo
Joincon claves simples. Amos Bird - Ahora puede especificar las opciones
join_use_nulls,max_rows_in_join,max_bytes_in_joinyjoin_overflow_modeal crear una tabla de tipoJoin. Amos Bird - Se agregó la función
joinGet, que permite usar una tabla de tipoJoincomo si fuera un diccionario. Amos Bird - Se agregaron las columnas
partition_key,sorting_key,primary_keyysampling_keya la tablasystem.tablespara proporcionar información sobre las claves de la tabla. #3609 - Se agregaron las columnas
is_in_partition_key,is_in_sorting_key,is_in_primary_keyeis_in_sampling_keya la tablasystem.columns. #3609 - Se agregaron las columnas
min_timeymax_timea la tablasystem.parts. Estas columnas se rellenan cuando la clave de partición es una expresión compuesta por columnasDateTime. Emmanuel Donin de Rosière
Correcciones de errores:
- Correcciones y mejoras de rendimiento para el tipo de datos
LowCardinality.GROUP BYconLowCardinality(Nullable(...)). Obtención de los valores deextremes. Procesamiento de funciones de orden superior.LEFT ARRAY JOIN.GROUP BYdistribuido. Funciones que devuelvenArray. Ejecución deORDER BY. Escritura en tablasDistributed(nicelulu). Compatibilidad con versiones anteriores para consultasINSERTde clientes antiguos que implementan el protocoloNative. Compatibilidad deLowCardinalityconJOIN. Mejora del rendimiento al trabajar en un único flujo. #3823 #3803 #3799 #3769 #3744 #3681 #3651 #3649 #3641 #3632 #3568 #3523 #3518 - Se corrigió el funcionamiento de la opción
select_sequential_consistency. Anteriormente, cuando esta configuración estaba activada, a veces se devolvía un resultado incompleto después de empezar a escribir en una nueva partición. #2863 - Las bases de datos se especifican correctamente al ejecutar consultas DDL con
ON CLUSTERyALTER UPDATE/DELETE. #3772 #3460 - Las bases de datos están correctamente especificadas en las subconsultas dentro de una VIEW. #3521
- Se corrigió un error de
PREWHEREconFINALparaVersionedCollapsingMergeTree. 7167bfd7 - Ahora puedes usar
KILL QUERYpara cancelar consultas que aún no han comenzado porque están esperando el bloqueo de la tabla. #3517 - Se corrigieron los cálculos de fecha y hora cuando los relojes se atrasaban a la medianoche (esto ocurre en Irán y ocurrió en Moscú entre 1981 y 1983). Anteriormente, esto hacía que la hora se reajustara un día antes de lo necesario y también provocaba un formato incorrecto de la fecha y la hora en texto. #3819
- Se corrigieron errores en algunos casos de
VIEWy subconsultas en los que se omite la base de datos. Winter Zhang - Se corrigió una condición de carrera que se producía al leer simultáneamente desde una
MATERIALIZED VIEWy eliminar unaMATERIALIZED VIEW, debido a que no se bloqueaba laMATERIALIZED VIEWinterna. #3404 #3694 - Se solucionó el error
Lock handler cannot be nullptr.#3689 - Se corrigió el procesamiento de consultas cuando la opción
compile_expressionsestá habilitada (lo está de forma predeterminada). Las expresiones constantes no deterministas, como la funciónnow, ya no se expanden. #3457 - Se corrigió un cierre inesperado al especificar un argumento
scaleno constante en las funcionestoDecimal32/64/128. - Se corrigió un error que se producía al intentar insertar un array con elementos
NULLen el formatoValuesen una columna de tipoArraysinNullable(siinput_format_values_interpret_expressions= 1). #3487 #3503 - Se corrigió el registro continuo de errores en
DDLWorkercuando ZooKeeper no está disponible. 8f50c620 - Se corrigió el tipo de retorno de las funciones
quantile*para argumentos de tipoDateyDateTime. #3580 - Se corrigió la cláusula
WITHcuando especifica un alias simple sin expresiones. #3570 - Se corrigió el procesamiento de consultas con subconsultas nombradas y nombres de columna con calificador cuando
enable_optimize_predicate_expressionestá habilitado. Winter Zhang - Se corrigió el error
Attempt to attach to nullptr thread groupal usar vistas materializadas. Marek Vavruša - Se corrigió un cierre inesperado al pasar determinados argumentos incorrectos a la función
arrayReverse. 73e3a7b6 - Se corrigió el desbordamiento de búfer en la función
extractURLParameter. Se mejoró el rendimiento. Se añadió el procesamiento correcto de cadenas que contienen bytes nulos. 141e9799 - Se corrigió un desbordamiento de búfer en las funciones
lowerUTF8yupperUTF8. Se eliminó la posibilidad de ejecutar estas funciones con argumentos del tipoFixedString. #3662 - Se corrigió una condición de carrera poco frecuente al eliminar tablas
MergeTree. #3680 - Se corrigió una condición de carrera al leer desde tablas
Buffery ejecutar simultáneamenteALTERoDROPen las tablas de destino. #3719 - Se corrigió un error de segmentación que se producía si se excedía el límite de
max_temporary_non_const_columns. #3788
Mejoras:
- El servidor no escribe los archivos de configuración procesados en el directorio
/etc/clickhouse-server/. En su lugar, los guarda en el directoriopreprocessed_configsdentro depath. Esto significa que el directorio/etc/clickhouse-server/no tiene permisos de escritura para el usuarioclickhouse, lo que mejora la seguridad. #2443 - La opción
min_merge_bytes_to_use_direct_ioestá configurada en 10 GiB de forma predeterminada. Una fusión que forme partes grandes de tablas de la familia MergeTree se realizará en modoO_DIRECT, lo que evita el desalojo excesivo de la caché de páginas. #3504 - Inicio más rápido del servidor cuando hay una gran cantidad de tablas. #3398
- Se añadió un pool de conexiones y
Keep-Alivede HTTP para las conexiones entre réplicas. #3594 - Si la sintaxis de la consulta no es válida, se devuelve el código
400 Bad Requesta través de la interfazHTTP(anteriormente se devolvía 500). 31bc680a - La opción
join_default_strictnessse establece enALLde forma predeterminada por motivos de compatibilidad. 120e2cbe - Se eliminó el registro en
stderrde la bibliotecare2para las expresiones regulares no válidas o complejas. #3723 - Se añadió para el motor de tabla
Kafka: comprobación de suscripciones antes de empezar a leer de Kafka; la configuración kafka_max_block_size de la tabla. Marek Vavruša - Las funciones
cityHash64,farmHash64,metroHash64,sipHash64,halfMD5,murmurHash2_32,murmurHash2_64,murmurHash3_32ymurmurHash3_64ahora admiten cualquier número de argumentos y argumentos en forma de Tuples. #3451 #3519 - La función
arrayReverseahora funciona con arrays de cualquier tipo. 73e3a7b6 - Se añadió un parámetro opcional: el tamaño del intervalo para la función
timeSlots. Kirill Shvakov - Para
FULLyRIGHT JOIN, la configuraciónmax_block_sizese utiliza para el flujo de datos sin combinar de la tabla derecha. Amos Bird - Se agregó el parámetro de la línea de comandos
--secureenclickhouse-benchmarkyclickhouse-performance-testpara habilitar TLS. #3688 #3690 - Conversión de tipos cuando la estructura de una tabla de tipo
Bufferno coincide con la estructura de la tabla de destino. Vitaly Baranov - Se añadió la opción
tcp_keep_alive_timeoutpara habilitar paquetes keep-alive tras un período de inactividad del intervalo de tiempo especificado. #3441 - Se eliminaron las comillas innecesarias de los valores de la clave de partición en la tabla
system.partscuando dicha clave consta de una sola columna. #3652 - La función de módulo funciona con los tipos de datos
DateyDateTime. #3385 - Se añadieron sinónimos para las funciones
POWER,LN,LCASE,UCASE,REPLACE,LOCATE,SUBSTRyMID. #3774 #3763 Algunos nombres de funciones no distinguen entre mayúsculas y minúsculas para mantener la compatibilidad con el estándar SQL. Se añadió la sintaxis abreviadaSUBSTRING(expr FROM start FOR length)para mantener la compatibilidad con SQL. #3804 - Se añadió la capacidad de aplicar
mlocka las páginas de memoria correspondientes al código ejecutable declickhouse-serverpara evitar que se expulse de la memoria. Esta funcionalidad está deshabilitada de forma predeterminada. #3553 - Mejor rendimiento al leer desde
O_DIRECT(con la opciónmin_bytes_to_use_direct_iohabilitada). #3405 - Se mejoró el rendimiento de la función
dictGet...OrDefaultcuando el argumento de clave es constante y el argumento de valor predeterminado no lo es. Amos Bird - La función
firstSignificantSubdomainahora procesa los dominiosgov,milyedu. Igor Hatarist mejoró el rendimiento. #3628 - Posibilidad de especificar variables de entorno personalizadas para iniciar
clickhouse-servermediante el scriptSYS-V init.d, definiendoCLICKHOUSE_PROGRAM_ENVen/etc/default/clickhouse. Pavlo Bashynskyi - Código de retorno correcto del script de inicio de clickhouse-server. #3516
- La tabla
system.metricsahora incluye la métricaVersionInteger, y ensystem.build_optionsse ha añadido la líneaVERSION_INTEGER, que contiene la forma numérica de la versión de ClickHouse, como18016000. #3644 - Se eliminó la posibilidad de comparar el tipo
Datecon un número para evitar posibles errores comodate = 2018-12-17, en los que se omiten por error las comillas alrededor de la fecha. #3687 - Se corrigió el comportamiento de las funciones con estado, como
rowNumberInAllBlocks. Antes devolvían un resultado con una unidad de más porque empezaban durante el análisis de la consulta. Amos Bird - Si no se puede eliminar el archivo
force_restore_data, se muestra un mensaje de error. Amos Bird
Mejoras en la compilación:
- Se actualizó la biblioteca
jemalloc, lo que corrige una posible fuga de memoria. Amos Bird - El profiling con
jemallocestá habilitado de forma predeterminada en las compilaciones de depuración. 2cc82f5c - Se añadió la posibilidad de ejecutar pruebas de integración cuando
Dockeres lo único instalado en el sistema. #3650 - Se añadió la prueba de fuzzing de expresiones en consultas SELECT. #3442
- Se añadió una prueba de estrés para commits, que ejecuta pruebas funcionales en paralelo y en orden aleatorio para detectar más condiciones de carrera. #3438
- Se mejoró el método para iniciar clickhouse-server en una imagen de Docker. Elghazal Ahmed
- En una imagen de Docker, se añadió compatibilidad para inicializar bases de datos mediante archivos del directorio
/docker-entrypoint-initdb.d. Konstantin Lebedev - Correcciones para compilaciones en ARM. #3709
Cambios incompatibles con versiones anteriores:
- Se eliminó la posibilidad de comparar el tipo
Datecon un número. En lugar detoDate('2018-12-18') = 17883, debe utilizar una conversión de tipo explícita:= toDate(17883)#3687
Versión de ClickHouse 18.14
Versión de ClickHouse 18.14.19, 2018-12-19
Correcciones de errores:
- Se corrigió un error que causaba problemas al actualizar diccionarios con el origen ODBC. #3825, #3829
- Las bases de datos se especifican correctamente al ejecutar consultas DDL
ON CLUSTER. #3460 - Se corrigió un fallo de segmentación si se superaba el límite
max_temporary_non_const_columns. #3788
Mejoras en la compilación:
- Correcciones para las compilaciones en ARM.
Versión de ClickHouse 18.14.18, 2018-12-04
Correcciones de errores:
- Se corrigió un error en la función
dictGet...para diccionarios de tiporangecuando uno de los argumentos es constante y el otro no. #3751 - Se corrigió un error que provocaba que se imprimieran mensajes
netlink: '...': attribute type 1 has an invalid lengthen el log del kernel de Linux, algo que solo ocurría en versiones suficientemente recientes del kernel de Linux. #3749 - Se corrigió un fallo de segmentación en la función
emptypara un argumento de tipoFixedString. Daniel, Dao Quang Minh - Se corrigió la asignación excesiva de memoria al usar un valor grande de la configuración
max_query_size(se preasignaba de una sola vez un bloque de memoria demax_query_sizebytes). #3720
Cambios de compilación:
- Se corrigió la compilación con las bibliotecas LLVM/Clang versión 7 de los paquetes del SO (estas bibliotecas se utilizan para la compilación de consultas en tiempo de ejecución). #3582
Versión de ClickHouse 18.14.17, 2018-11-30
Correcciones de errores:
- Se corrigieron casos en los que el proceso ODBC bridge no finalizaba junto con el proceso principal del servidor. #3642
- Se corrigió la inserción síncrona en la tabla
Distributedcon una lista de columnas distinta de la lista de columnas de la tabla remota. #3673 - Se corrigió una condición de carrera poco frecuente que podía provocar un cierre inesperado al eliminar una tabla MergeTree. #3643
- Se corrigió un interbloqueo en la consulta cuando fallaba la creación del hilo de consulta con el error
Resource temporarily unavailable. #3643 - Se corrigió el análisis de la cláusula
ENGINEcuando se usaba la sintaxisCREATE AS tabley la cláusulaENGINEse especificaba antes deAS table(el error hacía que se ignorara el engine especificado). #3692
Versión de ClickHouse 18.14.15, 2018-11-21
Correcciones de errores:
- El tamaño del fragmento de memoria se sobreestimaba al deserializar la columna de tipo
Array(String), lo que provocaba errores de “Memory limit exceeded”. El problema apareció en la versión 18.12.13. #3589
Versión de ClickHouse 18.14.14, 2018-11-20
Correcciones de errores:
- Se corrigieron las consultas
ON CLUSTERcuando el clúster está configurado como seguro (opción<secure>). #3599
Cambios de compilación:
- Se corrigieron problemas (llvm-7 del sistema, macOS) #3582
Versión de ClickHouse 18.14.13, 2018-11-08
Correcciones de errores:
- Se corrigió el error
Block structure mismatch in MergingSorted stream. #3162 - Se corrigieron las consultas
ON CLUSTERcuando las conexiones seguras estaban habilitadas en la configuración del clúster (el indicador<secure>). #3465 - Se corrigió un error en las consultas que usaban
SAMPLE,PREWHEREy columnas con alias. #3543 - Se corrigió un error poco frecuente de
unknown compression methodcuando el ajustemin_bytes_to_use_direct_ioestaba habilitado. 3544
Mejoras de rendimiento:
- Se corrigió la regresión del rendimiento de las consultas con
GROUP BYsobre columnas de tipo UInt16 o Date al ejecutarse en procesadores AMD EPYC. Igor Lapko - Se corrigió la regresión del rendimiento de las consultas que procesan cadenas largas. #3530
Mejoras en la compilación:
Versión de ClickHouse 18.14.12, 2018-11-02
Corrección de errores:
- Se corrigió un fallo al hacer JOIN entre dos subconsultas sin nombre. #3505
- Se corrigió la generación de consultas incorrectas (con una cláusula
WHEREvacía) al consultar bases de datos externas. hotid - Se corrigió el uso de un valor de tiempo de espera incorrecto en diccionarios ODBC. Marek Vavruša
Versión de ClickHouse 18.14.11, 2018-10-29
Correcciones de errores:
- Se corrigió el error
Block structure mismatch in UNION stream: different number of columnsen las consultas con LIMIT. #2156 - Se corrigieron errores al fusionar datos en tablas que contienen arrays dentro de estructuras Nested. #3397
- Se corrigieron resultados incorrectos de consultas cuando la configuración
merge_tree_uniform_read_distributionestá deshabilitada (está habilitada de forma predeterminada). #3429 - Se corrigió un error en las inserciones en una tabla Distributed en formato Native. #3411
Versión de ClickHouse 18.14.10, 2018-10-23
- La configuración
compile_expressions(compilación JIT de expresiones) está desactivada de forma predeterminada. #3410 - La configuración
enable_optimize_predicate_expressionestá desactivada de forma predeterminada.
Versión de ClickHouse 18.14.9, 2018-10-16
Nuevas funcionalidades:
- El modificador
WITH CUBEparaGROUP BY(también está disponible la sintaxis alternativaGROUP BY CUBE(...)). #3172 - Se añadió la función
formatDateTime. Alexandr Krasheninnikov - Se añadieron el motor de tabla
JDBCy la función de tablajdbc(requiere instalar clickhouse-jdbc-bridge). Alexandr Krasheninnikov - Se añadieron funciones para trabajar con el número de semana ISO:
toISOWeek,toISOYear,toStartOfISOYearytoDayOfYear. #3146 - Ahora puede usar columnas
Nullableen tablasMySQLyODBC. #3362 - Las estructuras de datos anidadas pueden leerse como objetos anidados en el formato
JSONEachRow. Se añadió la configuracióninput_format_import_nested_json. Veloman Yunkan - El procesamiento en paralelo está disponible para muchas
vistas materializadasal insertar datos. Consulte la configuraciónparallel_view_processing. Marek Vavruša - Se añadió la consulta
SYSTEM FLUSH LOGS(vaciado forzado de logs en tablas del sistema, comoquery_log). #3321 - Ahora puede usar las macros predefinidas
databaseytableal declarar tablasReplicated. #3251 - Se añadió la capacidad de leer valores del tipo
Decimalen notación de ingeniería (que indica potencias de diez). #3153
Funcionalidades experimentales:
- Optimización de la cláusula GROUP BY para
tipos de datos LowCardinality.#3138 - Cálculo optimizado de expresiones para
tipos de datos LowCardinality.#3200
Mejoras:
- Se redujo significativamente el consumo de memoria de las consultas con
ORDER BYyLIMIT. Consulte la configuraciónmax_bytes_before_remerge_sort. #3205 - Si no se especifica
JOIN(LEFT,INNER, …), se asumeINNER JOIN. #3147 - Los asteriscos calificados funcionan correctamente en consultas con
JOIN. Winter Zhang - El motor de tablas
ODBCselecciona correctamente el método para entrecomillar los identificadores en el dialecto SQL de una base de datos remota. Alexandr Krasheninnikov - La configuración
compile_expressions(compilación JIT de expresiones) está activada de forma predeterminada. - Se corrigió el comportamiento de
DROP DATABASE/TABLE IF EXISTSyCREATE DATABASE/TABLE IF NOT EXISTScuando se ejecutan simultáneamente. Anteriormente, una consultaCREATE DATABASE ... IF NOT EXISTSpodía devolver el mensaje de error “File … already exists”, y las consultasCREATE TABLE ... IF NOT EXISTSyDROP TABLE IF EXISTSpodían devolverTable ... is creating or attaching right now. #3101 - Las expresiones LIKE e IN con una parte derecha constante se envían al servidor remoto al hacer consultas desde tablas MySQL u ODBC. #3182
- Las comparaciones con expresiones constantes en la cláusula
WHEREse envían al servidor remoto al realizar consultas desde tablas MySQL y ODBC. Anteriormente, solo se enviaban las comparaciones con constantes. #3182 - Cálculo correcto del ancho de la fila en la terminal para los formatos
Pretty, incluidas las cadenas con caracteres jeroglíficos. Amos Bird. ON CLUSTERpuede especificarse en las consultasALTER UPDATE.- Mejora del rendimiento en la lectura de datos en formato
JSONEachRow. #3332 - Se añadieron sinónimos para las funciones
LENGTHyCHARACTER_LENGTHpor compatibilidad. La funciónCONCATya no distingue entre mayúsculas y minúsculas. #3306 - Se añadió el alias
TIMESTAMPpara el tipoDateTime. #3390 - Siempre hay espacio reservado para query_id en los logs del servidor, incluso si la línea de log no está relacionada con una consulta. Esto facilita el análisis de los logs de texto del servidor con herramientas de terceros.
- El consumo de memoria de una consulta se registra cuando supera el siguiente umbral de gigabytes enteros. #3205
- Se añadió un modo de compatibilidad para los casos en que la biblioteca cliente que usa el protocolo nativo envíe por error menos columnas de las que el servidor espera para la consulta INSERT. Este escenario podía darse al usar la biblioteca clickhouse-cpp. Anteriormente, esto hacía que el servidor se bloqueara. #3171
- En una expresión WHERE definida por el usuario en
clickhouse-copier, ahora puede usar el aliaspartition_key(para aplicar un filtrado adicional por partición de la tabla de origen). Esto resulta útil si el esquema de particionado cambia durante la copia, pero solo ligeramente. #3166 - El flujo de trabajo del motor
Kafkase ha trasladado a un pool de hilos en segundo plano para reducir automáticamente la velocidad de lectura de datos cuando la carga es alta. Marek Vavruša. - Compatibilidad con la lectura de valores
TupleyNestedde estructuras comostructen elformato Cap'n'Proto. Marek Vavruša - La lista de dominios de nivel superior de la función
firstSignificantSubdomainahora incluye el dominiobiz. decaseal - En la configuración de los diccionarios externos,
null_valuese interpreta como el valor del tipo de datos predeterminado. #3330 - Compatibilidad con las funciones
intDiveintDivOrZeroparaDecimal. b48402e8 - Compatibilidad con los tipos
Date,DateTime,UUIDyDecimalcomo clave de la función de agregadosumMap. #3281 - Soporte para el tipo de dato
Decimalen diccionarios externos. #3324 - Compatibilidad con el tipo de datos
Decimalen tablasSummingMergeTree. #3348 - Se añadieron especializaciones para
UUIDenif. #3366 - Se redujo el número de llamadas al sistema
openycloseal leer de una tablaMergeTree. #3283 - Una consulta
TRUNCATE TABLEpuede ejecutarse en cualquier réplica (la consulta se envía a la réplica líder). Kirill Shvakov
Correcciones de errores:
- Se corrigió un problema con las tablas
Dictionarypara los diccionariosrange_hashed. Este error se producía en la versión 18.12.17. #1702 - Se corrigió un error al cargar diccionarios
range_hashed(el mensajeUnsupported type Nullable (...)). Este error ocurría en la versión 18.12.17. #3362 - Se corrigieron errores en la función
pointInPolygondebido a la acumulación de cálculos imprecisos en polígonos con un gran número de vértices situados muy cerca entre sí. #3331 #3341 - Si, después de fusionar partes de datos, la suma de comprobación de la parte resultante difiere del resultado de la misma fusión en otra réplica, el resultado de la fusión se elimina y la parte de datos se descarga desde la otra réplica (este es el comportamiento correcto). Pero, después de descargar la parte de datos, no se podía añadir al conjunto de trabajo debido a un error que indicaba que la parte ya existía (porque la parte de datos se eliminó con cierto retraso tras la fusión). Esto provocaba intentos cíclicos de descargar los mismos datos. #3194
- Se corrigió el cálculo incorrecto del consumo total de memoria de las consultas (debido a este error de cálculo, la configuración
max_memory_usage_for_all_queriesfuncionaba de forma incorrecta y la métricaMemoryTrackingtenía un valor incorrecto). Este error se produjo en la versión 18.12.13. Marek Vavruša - Se corrigió el funcionamiento de
CREATE TABLE ... ON CLUSTER ... AS SELECT .... Este error se producía en la versión 18.12.13. #3247 - Se eliminó la preparación innecesaria de estructuras de datos para
JOINs en el servidor que inicia la consulta cuando elJOINsolo se ejecuta en servidores remotos. #3340 - Se corrigieron errores en el motor
Kafka: interbloqueos tras excepciones al empezar a leer datos y bloqueos al finalizar Marek Vavruša. - En las tablas
Kafka, no se pasó el parámetro opcionalschema(el esquema del formatoCap'n'Proto). Vojtech Splichal - Si en el conjunto de servidores de ZooKeeper hay servidores que aceptan la conexión pero la cierran inmediatamente en lugar de responder al handshake, ClickHouse elige conectarse a otro servidor. Antes, esto producía el error
Cannot read all data. Bytes read: 0. Bytes expected: 4.y el servidor no podía iniciarse. 8218cf3a - Si el conjunto de servidores de ZooKeeper incluye servidores cuya consulta DNS devuelve un error, esos servidores se ignoran. 17b8e209
- Se corrigió la conversión de tipos entre
DateyDateTimeal insertar datos en el formatoVALUES(siinput_format_values_interpret_expressions = 1). Anteriormente, la conversión se realizaba entre el valor numérico correspondiente al número de días desde la época Unix y la marca de tiempo Unix, lo que provocaba resultados inesperados. #3229 - Se corrigió la conversión entre tipos
Decimaly números enteros. #3211 - Se corrigieron errores en la opción de configuración
enable_optimize_predicate_expression. Winter Zhang - Se corrigió un error de análisis en el formato CSV con números de coma flotante al usar un separador CSV distinto del predeterminado, como
;#3155 - Se corrigió la función
arrayCumSumNonNegative(no acumula valores negativos si el acumulador es inferior a cero). Aleksey Studnev - Se corrigió cómo funcionan las tablas
Mergesobre las tablasDistributedal usarPREWHERE. #3165 - Corrección de errores en la consulta
ALTER UPDATE. - Se corrigieron errores de la función de tabla
odbcque aparecieron en la versión 18.12. #3197 - Se corrigió el funcionamiento de las funciones de agregación con los combinadores
StateArray. #3188 - Se corrigió un cierre inesperado al dividir un valor
Decimalentre cero. 69dd6609 - Se corrigieron los tipos de salida de las operaciones que usan
Decimaly argumentos enteros. #3224 - Se corrigió el fallo de segmentación durante
GROUP BYenDecimal128. 3359ba06 - La configuración
log_query_threads(registro de información sobre cada hilo de ejecución de consultas) ahora solo surte efecto si la opciónlog_queries(registro de información sobre consultas) está establecida en 1. Como la opciónlog_query_threadsestá habilitada de forma predeterminada, antes se registraba información sobre los hilos incluso si el registro de consultas estaba deshabilitado. #3241 - Se corrigió un error en la operación distribuida de la función de agregación
quantiles(el mensaje de errorNot found column quantile...). 292a8855 - Se corrigió el problema de compatibilidad al trabajar simultáneamente en un clúster con servidores de la versión 18.12.17 y servidores más antiguos. En las consultas distribuidas con claves de GROUP BY de longitud fija y variable, si había una gran cantidad de datos para agregar, los datos devueltos no siempre se agregaban por completo (dos filas diferentes contenían las mismas claves de agregación). #3254
- Se corrigió el manejo de las sustituciones en
clickhouse-performance-testcuando la consulta contiene solo parte de las sustituciones declaradas en la prueba. #3263 - Se corrigió un error al usar
FINALconPREWHERE. #3298 - Se corrigió un error al usar
PREWHEREcon columnas añadidas duranteALTER. #3298 - Se añadió una comprobación para detectar la ausencia de
arrayJoinen las expresionesDEFAULTyMATERIALIZED. Anteriormente,arrayJoinprovocaba un error al insertar datos. #3337 - Se añadió una comprobación para detectar la ausencia de
arrayJoinen una cláusulaPREWHERE. Anteriormente, esto provocaba mensajes comoSize ... does not matchoUnknown compression methodal ejecutar consultas. #3357 - Se corrigió un segfault que podía producirse en casos poco frecuentes tras una optimización que reemplazaba encadenamientos de AND en evaluaciones de igualdad por la expresión IN correspondiente. liuyimin-bytedance
- Correcciones menores en
clickhouse-benchmark: anteriormente, no se enviaba información del cliente al servidor; ahora, el número de consultas ejecutadas se calcula con mayor precisión al cerrarse y al limitar el número de iteraciones. #3351 #3352
Cambios incompatibles con versiones anteriores:
- Se eliminó la opción
allow_experimental_decimal_type. El tipo de datoDecimalestá disponible de forma predeterminada. #3329
Versión de ClickHouse 18.12
Versión de ClickHouse 18.12.17, 2018-09-16
Nuevas funcionalidades:
- Se implementó
invalidate_query(la capacidad de especificar una consulta para comprobar si es necesario actualizar un Diccionario externo) para el origenclickhouse. #3126 - Se añadió la posibilidad de usar los tipos de datos
UInt*,Int*yDateTime(junto con el tipoDate) como clave de Diccionario externorange_hashedque define los límites de los rangos. Ahora se puede usarNULLpara indicar un rango abierto. Vasily Nemkov - El tipo
Decimalahora admite las funciones de agregadovar*ystddev*. #3129 - El tipo
Decimalahora admite funciones matemáticas (exp,sin, etc.). #3129 - La tabla
system.part_logahora tiene la columnapartition_id. #3089
Correcciones de errores:
Mergeahora funciona correctamente en tablasDistributed. Winter Zhang- Se corrigió una incompatibilidad (una dependencia innecesaria de la versión de
glibc) que impedía ejecutar ClickHouse enUbuntu Precisey versiones anteriores. La incompatibilidad se introdujo en la versión 18.12.13. #3130 - Se corrigieron errores en el ajuste
enable_optimize_predicate_expression. Winter Zhang - Se corrigió un problema menor de compatibilidad con versiones anteriores que aparecía al trabajar con un clúster de réplicas en versiones anteriores a la 18.12.13 y, al mismo tiempo, crear una nueva réplica de una tabla en un servidor con una versión más reciente (se mostraba el mensaje
Can not clone replica, because the ... updated to new ClickHouse version, lo cual es lógico, pero no debería ocurrir). #3122
Cambios incompatibles con versiones anteriores:
- La opción
enable_optimize_predicate_expressionestá activada de forma predeterminada (lo cual es bastante optimista). Si se producen errores en el análisis de consultas relacionados con la búsqueda de nombres de columna, establezcaenable_optimize_predicate_expressionen 0. Winter Zhang
Versión de ClickHouse 18.12.14, 2018-09-13
Nuevas funcionalidades:
- Se añadió compatibilidad con las consultas
ALTER UPDATE. #3035 - Se añadió la opción
allow_ddl, que restringe el acceso del usuario a las consultas DDL. #3104 - Se añadió la opción
min_merge_bytes_to_use_direct_iopara los motoresMergeTree, que permite establecer un umbral para el tamaño total de la fusión (cuando se supera ese umbral, los archivos de las partes de datos se gestionan mediante O_DIRECT). #3117 - La tabla del sistema
system.mergesahora contiene la columnapartition_id. #3099
Mejoras
- Si una parte de datos no cambia durante una mutación, las réplicas no la descargan. #3103
- Hay autocompletado para los nombres de las configuraciones al trabajar con
clickhouse-client. #3106
Corrección de errores:
- Se añadió una comprobación de los tamaños de los arrays que son elementos de campos de tipo
Nesteddurante la inserción. #3118 - Se corrigió un error al actualizar diccionarios externos con la fuente
ODBCy el almacenamientohashed. Este error se producía en la versión 18.12.13. - Se corrigió un fallo al crear una tabla temporal a partir de una consulta con una condición
IN. Winter Zhang - Se corrigió un error en las funciones de agregación para arrays que pueden tener elementos
NULL. Winter Zhang
Versión de ClickHouse 18.12.13, 2018-09-10
Nuevas funciones:
- Se añadió el tipo de dato
DECIMAL(digits, scale)(Decimal32(scale),Decimal64(scale),Decimal128(scale)). Para habilitarlo, use el ajusteallow_experimental_decimal_type. #2846 #2970 #3008 #3047 - Nuevo modificador
WITH ROLLUPdeGROUP BY(sintaxis alternativa:GROUP BY ROLLUP(...)). #2948 - En las consultas con JOIN, el carácter de asterisco se expande a una lista de columnas de todas las tablas, de acuerdo con el estándar SQL. Puede restaurar el comportamiento anterior estableciendo
asterisk_left_columns_onlyen 1 en el nivel de configuración del usuario. Winter Zhang - Se añadió compatibilidad para JOIN con funciones de tabla. Winter Zhang
- Autocompletado al pulsar Tab en clickhouse-client. Sergey Shcherbin
- Ctrl+C en clickhouse-client borra la consulta introducida. #2877
- Se agregó la configuración
join_default_strictness(valores:",'any','all'). Esto permite no especificarANYoALLenJOIN. #2982 - En cada línea del registro del servidor relacionada con el procesamiento de consultas se muestra el ID de la consulta. #2482
- Ahora puede obtener logs de ejecución de consultas en clickhouse-client (use el ajuste
send_logs_level). Con el procesamiento distribuido de consultas, los logs se envían en cascada desde todos los servidores. #2482 - Las tablas
system.query_logysystem.processes(SHOW PROCESSLIST) ahora contienen información sobre todos los ajustes modificados al ejecutar una consulta (la estructura anidada de los datos deSettings). Se añadió el ajustelog_query_settings. #2482 - Las tablas
system.query_logysystem.processesahora muestran información sobre la cantidad de hilos que participan en la ejecución de consultas (consulte la columnathread_numbers). #2482 - Se añadieron contadores
ProfileEventsque miden el tiempo empleado en leer y escribir por la red y en leer y escribir en disco, el número de errores de red y el tiempo de espera cuando el ancho de banda de la red es limitado. #2482 - Se añadieron contadores
ProfileEventsque contienen métricas del sistema derusage(puede usarlos para obtener información sobre el uso de CPU en el espacio de usuario y en el kernel, los fallos de página y los cambios de contexto), así como métricas de taskstats (úselas para obtener información sobre el tiempo de espera de E/S, el tiempo de espera de CPU y la cantidad de datos leídos y registrados, tanto con caché de páginas como sin ella). #2482 - Los contadores
ProfileEventsse aplican de forma global y a cada consulta, así como a cada hilo de ejecución de consultas, lo que permite perfilar en detalle el consumo de recursos de cada consulta. #2482 - Se añadió la tabla
system.query_thread_log, que contiene información sobre cada hilo de ejecución de consultas. Se añadió la configuraciónlog_query_threads. #2482 - Las tablas
system.metricsysystem.eventsahora cuentan con documentación integrada. #3016 - Se añadió la función
arrayEnumerateDense. Amos Bird - Se agregaron las funciones
arrayCumSumNonNegativeyarrayDifference. Aleksey Studnev - Se añadió la función de agregación
retention. Sundy Li - Ahora puede sumar (fusionar) los estados de funciones de agregación mediante el operador + y multiplicar los estados de funciones de agregación por una constante no negativa. #3062 #3034
- Las tablas de la familia MergeTree ahora cuentan con la columna virtual
_partition_id. #3089
Características experimentales:
- Se añadió el tipo de datos
LowCardinality(T). Este tipo de datos crea automáticamente un diccionario local de valores y permite procesar los datos sin necesidad de desempaquetar el diccionario. #2830 - Se añadió una caché de funciones compiladas con JIT y un contador del número de usos antes de compilar. Para compilar expresiones con JIT, habilite la opción
compile_expressions. #2990 #3077
Mejoras:
- Se corrigió el problema de la acumulación ilimitada del registro de replicación cuando hay réplicas abandonadas. Se añadió un modo de recuperación eficaz para las réplicas con un gran retraso.
- Se mejoró el rendimiento de
GROUP BYcon varios campos de agregación cuando uno de ellos es de tipo String y los demás son de longitud fija. - Mejora del rendimiento al usar
PREWHEREy al transferir implícitamente expresiones aPREWHERE. - Mejora del rendimiento del análisis de formatos de texto (
CSV,TSV). Amos Bird #2980 - Mejora del rendimiento al leer cadenas y arrays en formatos binarios. Amos Bird
- Mayor rendimiento y menor consumo de memoria en las consultas a
system.tablesysystem.columnscuando hay un número muy elevado de tablas en un solo servidor. #2953 - Se corrigió un problema de rendimiento en caso de un gran volumen de consultas que generan un error (la función
_dl_addraparece enperf top, pero el servidor no utiliza mucha CPU). #2938 - Las condiciones se transforman en la vista (cuando
enable_optimize_predicate_expressionestá habilitado). Winter Zhang - Mejoras en la funcionalidad del tipo de dato
UUID. #3074 #2985 - El tipo de dato
UUIDes compatible con los diccionarios The-Alchemist. #2822 - La función
visitParamExtractRawfunciona correctamente con estructuras anidadas. Winter Zhang - Cuando está habilitada la configuración
input_format_skip_unknown_fields, los campos de los objetos en el formatoJSONEachRowse omiten correctamente. BlahGeek - En una expresión
CASEcon condiciones, ahora puede omitirseELSE, lo que equivale aELSE NULL. #2920 - Ahora se puede configurar el timeout de la operación al trabajar con ZooKeeper. urykhy
- Puede especificar un OFFSET para
LIMIT n, mcomoLIMIT n OFFSET m. #2840 - Puede usar la sintaxis
SELECT TOP ncomo alternativa aLIMIT. #2840 - Se aumentó el tamaño de la cola de escritura en las tablas del sistema, para que el error
SystemLog parameter queue is fullno se produzca con tanta frecuencia. - La función de agregación
windowFunnelahora admite eventos que cumplen varias condiciones. Amos Bird - Se pueden usar columnas duplicadas en una cláusula
USINGparaJOIN. #3006 - Los formatos
Prettyahora tienen un límite para la alineación de columnas según el ancho. Use la configuraciónoutput_format_pretty_max_column_pad_width. Si un valor es más ancho, se seguirá mostrando en su totalidad, pero las demás celdas de la tabla no serán demasiado anchas. #3003 - La función de tabla
odbcahora le permite especificar el nombre de la base de datos o del esquema. Amos Bird - Se añadió la posibilidad de usar el nombre de usuario especificado en el archivo de configuración de
clickhouse-client. Vladimir Kozbin - El contador
ZooKeeperExceptionsse dividió en tres contadores:ZooKeeperUserExceptions,ZooKeeperHardwareExceptionsyZooKeeperOtherExceptions. - Las consultas
ALTER DELETEfuncionan con las vistas materializadas. - Se añadió un componente aleatorio a la ejecución periódica del hilo de limpieza de las tablas
ReplicatedMergeTreepara evitar picos periódicos de carga cuando hay un número muy elevado de tablasReplicatedMergeTree. - Compatibilidad con las consultas
ATTACH TABLE ... ON CLUSTER. #3025
Correcciones de errores:
- Se corrigió un problema con las tablas
Dictionary(que provocaba la excepciónSize of offsets does not match size of columnoUnknown compression method). Este error apareció en la versión 18.10.3. #2913 - Se corrigió un error al fusionar tablas
CollapsingMergeTreecuando una de las partes de datos estaba vacía (estas partes se generan durante la fusión o conALTER DELETEsi se habían eliminado todos los datos) y se utilizaba el algoritmoverticalpara la fusión. #3049 - Se corrigió una condición de carrera durante
DROPoTRUNCATEen tablasMemorycuando se ejecutaba unSELECTsimultáneamente, lo que podía provocar caídas del servidor. Este error apareció en la versión 1.1.54388. #3038 - Se corrigió un posible caso de pérdida de datos al insertar en tablas
Replicatedsi se devolvía el errorSession is expired(la pérdida de datos puede detectarse mediante la métricaReplicatedDataLoss). Este error se producía en la versión 1.1.54378. #2939 #2949 #2964 - Se corrigió un error de segmentación durante
JOIN ... ON. #3000 - Se corrigió el error al buscar nombres de columnas cuando la expresión
WHEREestá formada únicamente por un nombre de columna calificado, comoWHERE table.column. #2994 - Se corrigió el error “columna no encontrada” que se producía al ejecutar consultas distribuidas cuando se solicitaba a un servidor remoto una única columna formada por una expresión IN con una subconsulta. #3087
- Se corrigió el error
Block structure mismatch in UNION stream: different number of columnsque se producía en las consultas distribuidas si uno de los segmentos es local y el otro no, y se desencadenaba la optimización que mueve condiciones aPREWHERE. #2226 #3037 #3055 #3065 #3073 #3090 #3093 - Se corrigió la función
pointInPolygonpara determinados casos de polígonos no convexos. #2910 - Se corrigió el resultado incorrecto al comparar
nancon números enteros. #3024 - Se corrigió un error en la biblioteca
zlib-ngque, en casos poco frecuentes, podía provocar un fallo de segmentación. #2854 - Se corrigió una fuga de memoria al insertar en una tabla con columnas
AggregateFunction, si el estado de la función de agregación no es simple (asigna memoria por separado) y si una sola solicitud de inserción genera varios bloques pequeños. #3084 - Se corrigió una condición de carrera al crear y eliminar simultáneamente la misma tabla
BufferoMergeTree. - Se corrigió un posible fallo de segmentación al comparar tuplas compuestas por ciertos tipos no triviales, como las tuplas. #2989
- Se corrigió un posible fallo de segmentación al ejecutar ciertas consultas
ON CLUSTER. Winter Zhang - Se corrigió un error en la función
arrayDistinctpara elementosNullablede un array. #2845 #2937 - La opción
enable_optimize_predicate_expressionahora funciona correctamente en los casos conSELECT *. Winter Zhang - Se corrigió el error de segmentación al reinicializar la sesión de ZooKeeper. #2917
- Se solucionó un posible bloqueo al trabajar con ZooKeeper.
- Se corrigió el código erróneo para añadir estructuras de datos anidadas en un
SummingMergeTree. - Al asignar memoria para los estados de las funciones de agregación, la alineación se tiene correctamente en cuenta, lo que permite usar operaciones que requieren alineación al implementar los estados de las funciones de agregación. chenxing-xc
Corrección de seguridad:
- Uso seguro de fuentes de datos ODBC. La interacción con los controladores ODBC utiliza un proceso
clickhouse-odbc-bridgeindependiente. Los errores en controladores ODBC de terceros ya no causan problemas de estabilidad en el servidor ni vulnerabilidades. #2828 #2879 #2886 #2893 #2921 - Se corrigió la validación incorrecta de la ruta del archivo en la función de tabla
catBoostPool. #2894 - El contenido de las tablas del sistema (
tables,databases,parts,columns,parts_columns,merges,mutations,replicasyreplication_queue) se filtra según el acceso del usuario a las bases de datos (allow_databases) configurado. Winter Zhang
Cambios incompatibles con versiones anteriores:
- En las consultas con JOIN, el carácter de asterisco se expande a una lista de columnas de todas las tablas, de acuerdo con el estándar SQL. Puede restaurar el comportamiento anterior estableciendo
asterisk_left_columns_onlyen 1 a nivel de la configuración del usuario.
Cambios de compilación:
- La mayoría de las pruebas de integración ahora pueden ejecutarse con cada commit.
- Las comprobaciones de estilo de código también pueden ejecutarse con cada commit.
- La implementación de
memcpyse selecciona correctamente al compilar en CentOS7/Fedora. Etienne Champetier - Al usar clang para compilar, se han añadido algunas advertencias de
-Weverything, además de las habituales-Wall-Wextra -Werror. #2957 - La depuración de la compilación utiliza la opción de depuración de
jemalloc. - La interface de la biblioteca para interactuar con ZooKeeper se declara como abstracta. #2950
Versión de ClickHouse 18.10
Versión de ClickHouse 18.10.3, 2018-08-13
Nuevas características:
- Se puede usar HTTPS para la replicación. #2760
- Se añadieron las funciones
murmurHash2_64,murmurHash3_32,murmurHash3_64ymurmurHash3_128, además de la ya existentemurmurHash2_32. #2791 - Compatibilidad con tipos Nullable en el controlador ODBC de ClickHouse (formato de salida
ODBCDriver2). #2834 - Compatibilidad con
UUIDen las columnas de clave.
Mejoras:
- Los clústeres pueden eliminarse sin reiniciar el servidor cuando se eliminan de los archivos de configuración. #2777
- Los diccionarios externos pueden eliminarse sin reiniciar el servidor cuando se eliminan de los archivos de configuración. #2779
- Se añadió compatibilidad con
SETTINGSpara el motor de tablaKafka. Alexander Marshalov - Mejoras para el tipo de datos
UUID(aún no está completo). #2618 - Compatibilidad con partes vacías después de las fusiones en los motores
SummingMergeTree,CollapsingMergeTreeyVersionedCollapsingMergeTree. #2815 - Se eliminan los registros antiguos de mutaciones completadas (
ALTER DELETE). #2784 - Se añadió la tabla
system.merge_tree_settings. Kirill Shvakov - La tabla
system.tablesahora tiene columnas de dependencia:dependencies_databaseydependencies_table. Winter Zhang - Se añadió la opción de configuración
max_partition_size_to_drop. #2782 - Se añadió la opción
output_format_json_escape_forward_slashes. Alexander Bocharov - Se añadió el ajuste
max_fetch_partition_retries_count. #2831 - Se añadió el ajuste
prefer_localhost_replicapara desactivar la preferencia por una réplica local y acceder a una réplica local sin interacción entre procesos. #2832 - La función de agregado
quantileExactdevuelvenanen caso de agregación sobre un conjunto vacío deFloat32oFloat64. Sundy Li
Correcciones de errores:
- Se eliminó el escape innecesario de los parámetros de la cadena de conexión para ODBC, que impedía establecer una conexión. Este error se produjo en la versión 18.6.0.
- Se corrigió la lógica para procesar comandos
REPLACE PARTITIONen la cola de replicación. Si hay dos comandosREPLACEpara la misma partición, la lógica incorrecta podía hacer que uno de ellos permaneciera en la cola de replicación sin ejecutarse. #2814 - Se corrigió un error de fusión cuando todas las partes de datos estaban vacías (partes que se habían formado a partir de una fusión o de
ALTER DELETEsi se habían eliminado todos los datos). Este error apareció en la versión 18.1.0. #2930 - Se corrigió un error con
SetoJoinconcurrentes. Amos Bird - Se corrigió el error
Block structure mismatch in UNION stream: different number of columnsque se producía en consultasUNION ALLdentro de una subconsulta si una de las consultasSELECTcontenía nombres de columna duplicados. Winter Zhang - Se corrigió una fuga de memoria si se producía una excepción al conectarse a un servidor MySQL.
- Se corrigió el código de respuesta incorrecto de clickhouse-client en caso de error en una consulta.
- Se corrigió el comportamiento incorrecto de las vistas materializadas que contienen DISTINCT. #2795
Cambios incompatibles con versiones anteriores
- Se eliminó la compatibilidad con las consultas CHECK TABLE para las tablas Distributed.
Cambios de compilación:
- Se ha reemplazado el asignador de memoria: ahora se usa
jemallocen lugar detcmalloc. En algunos escenarios, esto aumenta la velocidad hasta en un 20%. Sin embargo, hay consultas que se han ralentizado hasta en un 20%. El consumo de memoria se ha reducido aproximadamente un 10% en algunos escenarios, con una mayor estabilidad. Con cargas con alta contención, el uso de CPU en el espacio de usuario y en el sistema muestra solo un ligero aumento. #2773 - Uso de libressl como submódulo. #1983 #2807
- Uso de unixodbc como submódulo. #2789
- Uso de mariadb-connector-c como submódulo. #2785
- Se añadieron al repositorio archivos de pruebas funcionales que dependen de la disponibilidad de datos de prueba (por el momento, sin incluir los propios datos de prueba).
Versión de ClickHouse 18.6
Versión de ClickHouse 18.6.0, 2018-08-02
Nuevas funcionalidades:
- Se añadió compatibilidad con expresiones
ONen la sintaxisJOIN ON:JOIN ON Expr([table.]column ...) = Expr([table.]column, ...) [AND Expr([table.]column, ...) = Expr([table.]column, ...) ...]La expresión debe ser una cadena de igualdades unidas por el operadorAND. Cada lado de la igualdad puede ser una expresión arbitraria sobre las columnas de una de las tablas. Se admite el uso de nombres de columna completamente calificados (table.name,database.table.name,table_alias.name,subquery_alias.name) para la tabla de la derecha. #2742 - Se puede habilitar HTTPS para la replicación. #2760
Mejoras:
- El servidor pasa al cliente el número de parche de su versión. Los datos sobre este número de parche están en
system.processesyquery_log. #2646
Versión de ClickHouse 18.5
Versión de ClickHouse 18.5.1, 2018-07-31
Novedades:
- Se añadió la función hash
murmurHash2_32#2756.
Mejoras:
- Ahora se puede usar el atributo
from_env#2741 para establecer valores en archivos de configuración a partir de variables de entorno. - Se añadieron versiones que no distinguen entre mayúsculas y minúsculas de las funciones
coalesce,ifNullynullIf#2752.
Corrección de errores:
- Se corrigió un posible error al iniciar una réplica #2759.
Versión de ClickHouse 18.4
Versión de ClickHouse 18.4.0, 2018-07-28
Nuevas características:
- Se añadieron las siguientes tablas del sistema:
formats,data_type_families,aggregate_function_combinators,table_functions,table_engines,collations#2721. - Se añadió la posibilidad de usar una función de tabla en lugar de una tabla como argumento de
remoteo de la función de tablacluster#2708. - Compatibilidad con la autenticación
HTTP Basicen el protocolo de replicación #2727. - La función
hasahora permite buscar un valor numérico en unArrayde valoresEnumMaxim Khrisanfov. - Compatibilidad con la adición de separadores de mensajes arbitrarios al leer desde
KafkaAmos Bird.
Mejoras:
- La consulta
ALTER TABLE t DELETE WHEREno reescribe las partes de datos no afectadas por la condiciónWHERE#2694. - La opción
use_minimalistic_checksums_in_zookeeperpara las tablasReplicatedMergeTreeestá habilitada de forma predeterminada. Esta configuración se añadió en la versión 1.1.54378, el 2018-04-16. Las versiones anteriores a la 1.1.54378 ya no se pueden instalar. - Compatibilidad con la ejecución de consultas
KILLyOPTIMIZEque especificanON CLUSTERWinter Zhang.
Correcciones de errores:
- Se corrigió el error
Column ... is not under an aggregate function and not in GROUP BYen una agregación con una expresión IN. Este error apareció en la versión 18.1.0. (bbdd780b) - Se corrigió un error en la función de agregación
windowFunnelWinter Zhang. - Se corrigió un error en la función de agregación
anyHeavy(a2101df2) - Se corrigió una caída del servidor al usar la función de agregación
countArray().
Cambios incompatibles con versiones anteriores:
- Los parámetros del motor
Kafkacambiaron deKafka(kafka_broker_list, kafka_topic_list, kafka_group_name, kafka_format[, kafka_schema, kafka_num_consumers])aKafka(kafka_broker_list, kafka_topic_list, kafka_group_name, kafka_format[, kafka_row_delimiter, kafka_schema, kafka_num_consumers]). Si sus tablas usan los parámetroskafka_schemaokafka_num_consumers, debe editar manualmente los archivos de metadatospath/metadata/database/table.sqly añadir el parámetrokafka_row_delimitercon el valor''.
Versión de ClickHouse 18.1
Versión de ClickHouse 18.1.0, 2018-07-23
Nuevas funciones:
- Se admite la consulta
ALTER TABLE t DELETE WHEREpara tablas MergeTree no replicadas (#2634). - Se admiten tipos arbitrarios para la familia
uniq*de funciones de agregación (#2010). - Se admiten tipos arbitrarios en los operadores de comparación (#2026).
- El archivo
users.xmlpermite establecer una máscara de subred con el formato10.0.0.1/255.255.255.0. Esto es necesario para usar máscaras en redes IPv6 con ceros en medio (#2637). - Se añadió la función
arrayDistinct(#2670). - El motor SummingMergeTree ahora puede trabajar con columnas de tipo AggregateFunction (Constantin S. Pan).
Mejoras:
- Se cambió el esquema de numeración de las versiones. Ahora, la primera parte contiene el año de lanzamiento (d. C., zona horaria de Moscú, menos 2000), la segunda parte contiene el número de cambios importantes (aumenta en la mayoría de las versiones) y la tercera parte es la versión de parche. Las versiones siguen siendo retrocompatibles, salvo que se indique lo contrario en el changelog.
- Conversiones más rápidas de números de coma flotante a cadenas (Amos Bird).
- Si se omitieron algunas filas durante un insert debido a errores de parsing (esto es posible con las opciones
input_allow_errors_numeinput_allow_errors_ratiohabilitadas), ahora el número de filas omitidas se escribe en el registro del servidor (Leonardo Cecchi).
Correcciones de errores:
- Se corrigió el comando TRUNCATE para las tablas temporales (Amos Bird).
- Se corrigió un interbloqueo poco frecuente en la biblioteca cliente de ZooKeeper que se producía cuando había un error de red al leer la respuesta (c315200).
- Se corrigió un error al convertir con CAST a tipos Nullable (#1322).
- Se corrigió el resultado incorrecto de la función
maxIntersection()cuando coincidían los límites de los intervalos (Michael Furmur). - Se corrigió la transformación incorrecta de la secuencia de expresiones OR en un argumento de función (chenxing-xc).
- Se corrigió la degradación del rendimiento en consultas que contenían expresiones
IN (subquery)dentro de otra subconsulta (#2571). - Se corrigió la incompatibilidad entre servidores con distintas versiones en consultas distribuidas que usan una función
CASTque no está escrita en mayúsculas (fe8c4d6). - Se añadió el entrecomillado faltante de identificadores para consultas a un SGBD externo (#2635).
Cambios incompatibles con versiones anteriores:
- No es posible convertir a DateTime una cadena que contiene el número cero. Ejemplo:
SELECT toDateTime('0'). Esta es también la razón por la queDateTime DEFAULT '0'no funciona en las tablas, ni tampoco<null_value>0</null_value>en los diccionarios. Solución: sustituya0por0000-00-00 00:00:00.
Versión de ClickHouse 1.1
Versión de ClickHouse 1.1.54394, 2018-07-12
Nuevas funcionalidades:
- Se añadió la función de agregación
histogram(Mikhail Surin). - Ahora
OPTIMIZE TABLE ... FINALpuede usarse sin especificar particiones paraReplicatedMergeTree(Amos Bird).
Correcciones de errores:
- Se corrigió un problema con un timeout muy corto para los sockets (un segundo) de lectura y escritura al enviar y descargar datos replicados, que hacía imposible descargar partes grandes si había carga en la red o en el disco (esto provocaba intentos cíclicos de descargar partes). Este error se producía en la versión 1.1.54388.
- Se corrigieron problemas al usar chroot en ZooKeeper si se insertaban bloques de datos duplicados en la tabla.
- La función
hasahora funciona correctamente para un array con elementos Nullable (#2115). - La tabla
system.tablesahora funciona correctamente cuando se usa en consultas distribuidas. Las columnasmetadata_modification_timeyengine_fullya no son virtuales. Se corrigió un error que se producía si solo se consultaban estas columnas de la tabla. - Se corrigió el funcionamiento de una tabla
TinyLogvacía después de insertar un bloque de datos vacío (#2563). - La tabla
system.zookeeperfunciona correctamente si el valor del nodo en ZooKeeper es NULL.
Versión de ClickHouse 1.1.54390, 2018-07-06
Nuevas características:
- Las consultas pueden enviarse en formato
multipart/form-data(en el campoquery), lo cual resulta útil si también se envían datos externos para el procesamiento de la consulta (Olga Hvostikova). - Se añadió la posibilidad de habilitar o deshabilitar el procesamiento de comillas simples o dobles al leer datos en formato CSV. Esto se puede configurar en los ajustes
format_csv_allow_single_quotesyformat_csv_allow_double_quotes(Amos Bird). - Ahora
OPTIMIZE TABLE ... FINALpuede usarse sin especificar la partición para las variantes no replicadas deMergeTree(Amos Bird).
Mejoras:
- Se mejoró el rendimiento, se redujo el consumo de memoria y se corrigió el seguimiento del consumo de memoria al usar el operador IN cuando podía utilizarse un índice de tabla (#2584).
- Se eliminó la comprobación redundante de sumas de verificación al añadir una parte de datos. Esto es importante cuando hay un gran número de réplicas, porque en estos casos el número total de comprobaciones era igual a N^2.
- Se añadió compatibilidad con argumentos
Array(Tuple(...))para la funciónarrayEnumerateUniq(#2573). - Se añadió compatibilidad con
Nullablepara la funciónrunningDifference(#2594). - Se mejoró el rendimiento del análisis de consultas cuando hay un número muy elevado de expresiones (#2572).
- Selección más rápida de partes de datos para la fusión en tablas
ReplicatedMergeTree. Recuperación más rápida de la sesión de ZooKeeper (#2597). - El archivo
format_version.txtde las tablasMergeTreese vuelve a crear si falta, lo cual tiene sentido si ClickHouse se inicia después de copiar la estructura de directorios sin archivos (Ciprian Hacman).
Correcciones de errores:
- Se corrigió un error al trabajar con ZooKeeper que podía hacer imposible recuperar la sesión y los estados de solo lectura de las tablas antes de reiniciar el servidor.
- Se corrigió un error al trabajar con ZooKeeper que podía provocar que no se eliminaran los nodos antiguos si se interrumpía la sesión.
- Se corrigió un error en la función
quantileTDigestpara argumentos Float (este error se introdujo en la versión 1.1.54388) (Mikhail Surin). - Se corrigió un error en el índice de las tablas MergeTree si la columna de clave primaria está ubicada dentro de la función para convertir tipos entre enteros con signo y sin signo del mismo tamaño (#2603).
- Se corrigió un fallo de segmentación si se usan
macrospero no están en el archivo de configuración (#2570). - Se corrigió el cambio a la base de datos predeterminada al reconectar el cliente (#2583).
- Se corrigió un error que ocurría cuando la configuración
use_index_for_in_with_subqueriesestaba deshabilitada.
Corrección de seguridad:
- Ya no se pueden enviar archivos al conectarse a MySQL (
LOAD DATA LOCAL INFILE).
Versión de ClickHouse 1.1.54388, 2018-06-28
Nuevas características:
- Compatibilidad con la consulta
ALTER TABLE t DELETE WHEREpara tablas replicadas. Se añadió la tablasystem.mutationspara realizar el seguimiento del progreso de este tipo de consultas. - Compatibilidad con la consulta
ALTER TABLE t [REPLACE|ATTACH] PARTITIONpara tablas *MergeTree. - Compatibilidad con la consulta
TRUNCATE TABLE(Winter Zhang) - Varias consultas
SYSTEMnuevas para tablas replicadas (RESTART REPLICAS,SYNC REPLICA,[STOP|START] [MERGES|FETCHES|SENDS REPLICATED|REPLICATION QUEUES]). - Se añadió la posibilidad de escribir en una tabla con el motor MySQL y en la función de tabla correspondiente (sundy-li).
- Se añadieron la función de tabla
url()y el motor de tablaURL(Alexander Sapin). - Se añadió la función de agregación
windowFunnel(sundy-li). - Nuevas funciones
startsWithyendsWithpara cadenas (Vadim Plakhtinsky). - La función de tabla
numbers()ahora permite especificar el desplazamiento (Winter Zhang). - La contraseña de
clickhouse-clientahora puede introducirse de forma interactiva. - Los registros del servidor ahora pueden enviarse a syslog (Alexander Krasheninnikov).
- Compatibilidad con el registro en diccionarios con una fuente de biblioteca compartida (Alexander Sapin).
- Compatibilidad con delimitadores CSV personalizados (Ivan Zhukov)
- Se añadió la configuración
date_time_input_format. Si cambia esta configuración a'best_effort', los valores DateTime se leerán en una amplia variedad de formatos. - Se añadió la utilidad
clickhouse-obfuscatorpara la ofuscación de datos. Ejemplo de uso: publicar datos utilizados en pruebas de rendimiento.
Características experimentales:
- Se añadió la posibilidad de calcular los argumentos de
andsolo cuando sea necesario (Anastasia Tsarkova) - La compilación JIT a código nativo ya está disponible para algunas expresiones (pyos).
Correcciones de errores:
- Los duplicados ya no aparecen en las consultas con
DISTINCTyORDER BY. - Las consultas con
ARRAY JOINyarrayFilterya no devuelven resultados incorrectos. - Se corrigió un error al leer una columna de tipo Array de una estructura Nested (#2066).
- Se corrigió un error al analizar consultas con una cláusula HAVING como
HAVING tuple IN (...). - Se corrigió un error al analizar consultas con alias recursivos.
- Se corrigió un error al leer desde ReplacingMergeTree con una condición en PREWHERE que filtraba todas las filas (#2525).
- La configuración del perfil de usuario no se aplicaba al usar sesiones en la interfaz HTTP.
- Se corrigió la forma en que se aplican los ajustes desde los parámetros de la línea de comandos en clickhouse-local.
- La biblioteca cliente de ZooKeeper ahora usa el tiempo de espera de sesión recibido del servidor.
- Se corrigió un error en la biblioteca cliente de ZooKeeper cuando el cliente esperaba la respuesta del servidor durante más tiempo del permitido por el tiempo de espera.
- Se corrigió la poda de partes para consultas con condiciones en las columnas de la clave de partición (#2342).
- Ahora es posible realizar merges después de
CLEAR COLUMN IN PARTITION(#2315). - Se corrigió la asignación de tipos en la función de tabla ODBC (sundy-li).
- Se corrigieron las comparaciones de tipos para
DateTimecon y sin zona horaria (Alexander Bocharov). - Se corrigieron el análisis sintáctico y el formato del operador
CAST. - Se corrigió la inserción en una vista materializada para el motor de tabla Distributed (Babacar Diassé).
- Se corrigió una condición de carrera al escribir datos desde el motor
Kafkaen vistas materializadas (Yangkuan Liu). - Se corrigió una vulnerabilidad SSRF en la función de tabla remote().
- Se corrigió el comportamiento de salida de
clickhouse-clienten modo multilínea (#2510).
Mejoras:
- Las tareas en segundo plano de las tablas replicadas ahora se realizan en un pool de hilos en lugar de en hilos independientes (Silviu Caragea).
- Se mejoró el rendimiento de la compresión LZ4.
- Análisis más rápido de consultas con un gran número de JOINs y subconsultas.
- La caché de DNS ahora se actualiza automáticamente cuando hay demasiados errores de red.
- Ya no se realizan inserciones en tablas si no es posible insertar en una de las vistas materializadas porque tiene demasiadas partes.
- Se corrigió la discrepancia en los contadores de eventos
Query,SelectQueryeInsertQuery. - Se permiten expresiones como
tuple IN (SELECT tuple)si los tipos de tupla coinciden. - Un servidor con tablas replicadas puede iniciarse incluso si ZooKeeper no está configurado.
- Al calcular el número de núcleos de CPU disponibles, ahora se tienen en cuenta los límites de cgroups (Atri Sharma).
- Se añadió chown para los directorios de configuración en el archivo de configuración de systemd (Mikhail Shiryaev).
Cambios de compilación:
- El compilador gcc8 puede usarse para las compilaciones.
- Se añadió la posibilidad de compilar llvm desde el submódulo.
- La versión de la biblioteca librdkafka se ha actualizado a la v0.11.4.
- Se añadió la posibilidad de usar la biblioteca del sistema libcpuid. La versión de la biblioteca se ha actualizado a la 0.4.0.
- Se corrigió la compilación con la biblioteca vectorclass (Babacar Diassé).
- Cmake ahora genera archivos para ninja de forma predeterminada (como al usar
-G Ninja). - Se añadió la posibilidad de usar la biblioteca libtinfo en lugar de libtermcap (Georgy Kondratiev).
- Se corrigió un conflicto de archivos de encabezado en Fedora Rawhide (#2520).
Cambios incompatibles con versiones anteriores:
- Se eliminó el escapado en los formatos
VerticalyPretty*, y se eliminó el formatoVerticalRaw. - Si se usan simultáneamente servidores con la versión 1.1.54388 (o posterior) y servidores con una versión anterior en una consulta distribuida, y la consulta contiene la expresión
cast(x, 'Type')sin la palabra claveASy sin la palabracasten mayúsculas, se lanzará una excepción con un mensaje comoNot found column cast(0, 'UInt8') in block. Solución: actualice el servidor en todo el clúster.
Versión de ClickHouse 1.1.54385, 2018-06-01
Correcciones de errores:
- Se corrigió un error que, en algunos casos, hacía que las operaciones de ZooKeeper se bloquearan.
Versión de ClickHouse 1.1.54383, 2018-05-22
Correcciones de errores:
- Se corrigió la lentitud de la cola de replicación cuando una tabla tiene muchas réplicas.
Versión de ClickHouse 1.1.54381, 2018-05-14
Correcciones de errores:
- Se corrigió una fuga de nodos en ZooKeeper cuando ClickHouse pierde la conexión con el servidor de ZooKeeper.
Versión de ClickHouse 1.1.54380, 2018-04-21
Nuevas características:
- Se añadió la función de tabla
file(path, format, structure). Un ejemplo de lectura de bytes desde/dev/urandom:ln -s /dev/urandom /var/lib/clickhouse/user_files/random``clickhouse-client -q "SELECT * FROM file('random', 'RowBinary', 'd UInt8') LIMIT 10".
Mejoras:
- Las subconsultas pueden encerrarse entre paréntesis
()para mejorar la legibilidad de la consulta. Por ejemplo:(SELECT 1) UNION ALL (SELECT 1). - Las consultas
SELECTsimples de la tablasystem.processesno se incluyen en el límitemax_concurrent_queries.
Correcciones de errores:
- Se corrigió el comportamiento incorrecto del operador
INal hacerSELECTdesdeMATERIALIZED VIEW. - Se corrigió el filtrado incorrecto por índice de partición en expresiones como
partition_key_column IN (...). - Se corrigió la imposibilidad de ejecutar la consulta
OPTIMIZEen una réplica no líder si se había realizadoREANAMEen la tabla. - Se corrigió el error de autorización al ejecutar consultas
OPTIMIZEoALTERen una réplica no líder. - Se corrigió el bloqueo de
KILL QUERY. - Se corrigió un error en la biblioteca cliente de ZooKeeper que provocaba la pérdida de watches, el bloqueo de la cola de DDL distribuido y ralentizaciones en la cola de replicación si se usa un prefijo
chrootno vacío en la configuración de ZooKeeper.
Cambios incompatibles con versiones anteriores:
- Se eliminó la compatibilidad con expresiones como
(a, b) IN (SELECT (a, b))(puede usar la expresión equivalente(a, b) IN (SELECT a, b)). En versiones anteriores, estas expresiones provocaban un filtradoWHEREindeterminado o causaban errores.
Versión 1.1.54378 de ClickHouse, 2018-04-16
Nuevas características:
- El nivel de logging puede cambiarse sin reiniciar el servidor.
- Se añadió la consulta
SHOW CREATE DATABASE. - El
query_idpuede pasarse aclickhouse-client(elBroom). - Nueva configuración:
max_network_bandwidth_for_all_users. - Se añadió compatibilidad con
ALTER TABLE ... PARTITION ...paraMATERIALIZED VIEW. - Se añadió información sobre el tamaño de las partes de datos sin comprimir en la tabla del sistema.
- Compatibilidad con cifrado de servidor a servidor para tablas distribuidas (
<secure>1</secure>en la configuración de la réplica en<remote_servers>). - Configuración a nivel de tabla para la familia
ReplicatedMergeTreecon el fin de minimizar la cantidad de datos almacenados en Zookeeper:use_minimalistic_checksums_in_zookeeper = 1 - Configuración del prompt de
clickhouse-client. De forma predeterminada, ahora los nombres de los servidores se muestran en el prompt. El nombre para mostrar del servidor puede cambiarse. También se envía en el encabezado HTTPX-ClickHouse-Display-Name(Kirill Shvakov). - Se pueden especificar varios
topicsseparados por comas para el motorKafka(Tobias Adamson) - Cuando una consulta se detiene mediante
KILL QUERYoreplace_running_query, el cliente recibe la excepciónQuery was canceleden lugar de un resultado incompleto.
Mejoras:
- Las consultas
ALTER TABLE ... DROP/DETACH PARTITIONse ejecutan al principio de la cola de replicación. SELECT ... FINALyOPTIMIZE ... FINALpueden usarse incluso cuando la tabla tiene una sola parte de datos.- La tabla
query_logse recrea automáticamente si se eliminó manualmente (Kirill Shvakov). - La función
lengthUTF8es más rápida (zhang2014). - Se mejoró el rendimiento de las inserciones síncronas en tablas
Distributed(insert_distributed_sync = 1) cuando hay un número muy grande de segmentos. - El servidor acepta los ajustes
send_timeoutyreceive_timeoutdel cliente y los aplica al conectarse a él (se aplican en orden inverso: elsend_timeoutdel socket del servidor se establece con el valor dereceive_timeoutrecibido del cliente, y viceversa). - Recuperación tras fallos más robusta para la inserción asíncrona en tablas
Distributed. - El tipo de retorno de la función
countEqualcambió deUInt32aUInt64(谢磊).
Correcciones de errores:
- Se corrigió un error con
INcuando el lado izquierdo de la expresión esNullable. - Ahora se devuelven resultados correctos al usar tuplas con
INcuando algunos componentes de la tupla están en el índice de la tabla. - El límite
max_execution_timeahora funciona correctamente con consultas distribuidas. - Se corrigieron errores al calcular el tamaño de columnas compuestas en la tabla
system.columns. - Se corrigió un error al crear una tabla temporal con
CREATE TEMPORARY TABLE IF NOT EXISTS. - Se corrigieron errores en
StorageKafka(##2075) - Se corrigieron cierres inesperados del servidor provocados por argumentos no válidos de ciertas funciones de agregación.
- Se corrigió el error que impedía que la consulta
DETACH DATABASEdetuviera las tareas en segundo plano de las tablasReplicatedMergeTree. - Ahora es menos probable que se produzca el estado
Too many partsal insertar en vistas materializadas agregadas (##2084). - Se corrigió el manejo recursivo de las sustituciones en la configuración si una sustitución debe ir seguida de otra sustitución en el mismo nivel.
- Se corrigió la sintaxis en el archivo de metadatos al crear una
VIEWque usa una consulta conUNION ALL. SummingMergeTreeahora funciona correctamente para la suma de estructuras de datos anidadas con una clave compuesta.- Se corrigió la posibilidad de una condición de carrera al elegir el líder de las tablas
ReplicatedMergeTree.
Cambios de compilación:
- La compilación admite
ninjaen lugar demakey usaninjade forma predeterminada para generar versiones de lanzamiento. - Paquetes renombrados:
clickhouse-server-basepasa a serclickhouse-common-static;clickhouse-server-common,clickhouse-server;clickhouse-common-dbg,clickhouse-common-static-dbg. Para instalar, useclickhouse-server clickhouse-client. Los paquetes con los nombres antiguos seguirán estando disponibles en los repositorios para mantener la compatibilidad con versiones anteriores.
Cambios incompatibles con versiones anteriores:
- Se eliminó la interpretación especial de una expresión IN si se especifica un array en el lado izquierdo. Anteriormente, la expresión
arr IN (set)se interpretaba como “al menos un elemento dearrpertenece alset”. Para obtener el mismo comportamiento en la nueva versión, escribaarrayExists(x -> x IN (set), arr). - Se deshabilitó el uso incorrecto de la opción de socket
SO_REUSEPORT, que estaba habilitada por defecto de forma incorrecta en la biblioteca Poco. Tenga en cuenta que en Linux ya no hay ninguna razón para especificar simultáneamente las direcciones::y0.0.0.0para escuchar; use solo::, que permite escuchar conexiones tanto por IPv4 como por IPv6 (con la configuración predeterminada del kernel). También puede volver al comportamiento de las versiones anteriores especificando<listen_reuse_port>1</listen_reuse_port>en la configuración.
versión de ClickHouse 1.1.54370, 2018-03-16
Nuevas funciones:
- Se añadió la tabla
system.macrosy la actualización automática de las macros cuando se modifica el archivo de configuración. - Se añadió la consulta
SYSTEM RELOAD CONFIG. - Se añadió la función de agregación
maxIntersections(left_col, right_col), que devuelve el número máximo de intervalos[left; right]que se solapan simultáneamente. La funciónmaxIntersectionsPosition(left, right)devuelve el comienzo del intervalo “máximo”. (Michael Furmur).
Mejoras:
- Al insertar datos en una tabla
Replicated, se hacen menos peticiones aZooKeeper(y la mayoría de los errores de usuario han desaparecido del log deZooKeeper). - Se añadió la posibilidad de crear alias para conjuntos de datos. Ejemplo:
WITH (1, 2, 3) AS set SELECT number IN set FROM system.numbers LIMIT 10.
Correcciones de errores:
- Se corrigió el error
Illegal PREWHEREal leer desde tablas Merge para tablasDistributed. - Se añadieron correcciones que permiten iniciar clickhouse-server en contenedores Docker solo con IPv4.
- Se corrigió una condición de carrera al leer de las tablas del sistema
system.parts_columns. - Se eliminó el doble almacenamiento en búfer durante una inserción síncrona en una tabla
Distributed, lo que podía hacer que la conexión superara el tiempo de espera. - Se corrigió un error que provocaba esperas excesivamente largas por una réplica no disponible antes de comenzar una consulta
SELECT. - Se corrigieron fechas incorrectas en la tabla
system.parts. - Se corrigió un error que hacía imposible insertar datos en una tabla
Replicatedsichrootno estaba vacío en la configuración del clústerZooKeeper. - Se corrigió el algoritmo de mezcla vertical para una tabla con
ORDER BYvacío. - Se restauró la capacidad de usar diccionarios en consultas a tablas remotas, incluso si estos diccionarios no están presentes en el servidor que realiza la solicitud. Esta funcionalidad se perdió en la versión 1.1.54362.
- Se restauró el comportamiento para consultas como
SELECT * FROM remote('server2', default.table) WHERE col IN (SELECT col2 FROM default.table)cuando el lado derecho deINdebe usar unadefault.tableremota en lugar de una local. Este comportamiento se había roto en la versión 1.1.54358. - Se eliminó el registro innecesario de nivel de error de
Not found column ... in block.
versión de ClickHouse 1.1.54362, 2018-03-11
Nuevas funciones:
- La agregación sin
GROUP BYsobre un conjunto vacío (comoSELECT count(*) FROM table WHERE 0) ahora devuelve un resultado con una fila y valores nulos para las funciones de agregación, conforme al estándar SQL. Para restaurar el comportamiento anterior (devolver un resultado vacío), establezcaempty_result_for_aggregation_by_empty_seten 1. - Se añadió la conversión de tipos para
UNION ALL. EnUNION ALLse permiten alias distintos en las posiciones deSELECT, de acuerdo con el estándar SQL. - Se admiten expresiones arbitrarias en las cláusulas
LIMIT BY. Antes, solo se podían usar las columnas resultantes deSELECT. - Se utiliza un índice de las tablas
MergeTreecuandoINse aplica a una tupla de expresiones de las columnas de la clave primaria. Ejemplo:WHERE (UserID, EventDate) IN ((123, '2000-01-01'), ...)(Anastasiya Tsarkova). - Se añadió la herramienta
clickhouse-copierpara copiar entre clústeres y resegmentar los datos (beta). - Se añadieron funciones de hash consistente:
yandexConsistentHash,jumpConsistentHash,sumburConsistentHash. Pueden usarse como clave de segmentación para reducir la cantidad de tráfico de red durante redistribuciones posteriores entre segmentos. - Se agregaron las funciones:
arrayAny,arrayAll,hasAny,hasAll,arrayIntersect,arrayResize. - Se agregó la función
arrayCumSum(Javi Santana). - Se añadieron las funciones
parseDateTimeBestEffort,parseDateTimeBestEffortOrZeroyparseDateTimeBestEffortOrNullpara leer valores DateTime a partir de una cadena que contiene texto en una amplia variedad de formatos. - Durante la actualización, los datos pueden recargarse parcialmente desde diccionarios externos (cargando solo los registros en los que el valor del campo especificado sea mayor que en la descarga anterior) (Arsen Hakobyan).
- Se añadió la función de tabla
cluster. Ejemplo:cluster(cluster_name, db, table). La función de tablaremotepuede aceptar el nombre del clúster como primer argumento si se especifica como un identificador. - Las funciones de tabla
remoteyclusterpueden utilizarse en consultasINSERT. - Se añadieron las columnas virtuales
create_table_queryyengine_fulla la tablasystem.tables. La columnametadata_modification_timees virtual. - Se añadieron las columnas
data_pathymetadata_patha las tablassystem.tablesysystem.databases, y se añadió la columnapatha las tablassystem.partsysystem.parts_columns. - Se añadió información adicional sobre las fusiones en la tabla
system.part_log. - Se puede usar cualquier clave de partición para la tabla
system.query_log(Kirill Shvakov). - La consulta
SHOW TABLESahora también muestra las tablas temporales. Se añadieron las tablas temporales y la columnais_temporaryasystem.tables(zhang2014). - Se añadieron las consultas
DROP TEMPORARY TABLEyEXISTS TEMPORARY TABLE(zhang2014). - Compatibilidad con
SHOW CREATE TABLEpara tablas temporales (zhang2014). - Se añadió el parámetro de configuración
system_profilepara los ajustes que utilizan los procesos internos. - Soporte para cargar
object_idcomo atributo en los diccionarios deMongoDB(Pavel Litvinenko). - Lectura de
nullcomo valor predeterminado durante la carga de datos de un diccionario externo con la fuenteMongoDB(Pavel Litvinenko). - Lectura de valores
DateTimeen el formatoValuesdesde una marca de tiempo Unix sin comillas simples. - Se admite failover en las funciones de tabla
remotecuando algunas de las réplicas no tienen la tabla solicitada. - Los parámetros de configuración se pueden anular desde la línea de comandos al ejecutar
clickhouse-server. Ejemplo:clickhouse-server -- --logger.level=information. - Se implementó la función
emptypara un argumentoFixedString: la función devuelve 1 si la cadena está compuesta íntegramente por bytes nulos (zhang2014). - Se añadió el parámetro de configuración
listen_trypara escuchar en al menos una de las direcciones de escucha sin finalizar, aunque no se pueda escuchar en algunas de ellas (útil en sistemas con el soporte para IPv4 o IPv6 deshabilitado). - Se añadió el motor de tabla
VersionedCollapsingMergeTree. - Compatibilidad con filas y tipos numéricos arbitrarios en el origen de diccionario
library. - Las tablas
MergeTreepueden usarse sin clave primaria (debe especificarseORDER BY tuple()). - Un tipo
Nullablepuede convertirse conCASTa un tipo noNullablesi el argumento no esNULL. RENAME TABLEse puede ejecutar enVIEW.- Se añadió la función
throwIf. - Se añadió la opción
odbc_default_field_size, que permite ampliar el tamaño máximo del valor cargado desde una fuente ODBC (de forma predeterminada, es 1024). - La tabla
system.processesySHOW PROCESSLISTahora incluyen las columnasis_cancelledypeak_memory_usage.
Mejoras:
- Los límites y las cuotas sobre el resultado ya no se aplican a los datos intermedios de las consultas
INSERT SELECTni de las subconsultasSELECT. - Se redujeron las activaciones erróneas de
force_restore_dataal comprobar el estado de las tablasReplicatedcuando se inicia el servidor. - Se añadió la opción
allow_distributed_ddl. - No se permiten funciones no deterministas en expresiones para las claves de tablas
MergeTree. - Los archivos con sustituciones de los directorios
config.dse cargan en orden alfabético. - Se mejoró el rendimiento de la función
arrayElementen el caso de un Array multidimensional constante con un Array vacío como uno de sus elementos. Ejemplo:[[1], []][x]. - El servidor ahora se inicia más rápido al usar archivos de configuración con sustituciones muy grandes (por ejemplo, listas muy grandes de redes IP).
- Al ejecutar una consulta, las funciones de tabla con valor se ejecutan una sola vez. Anteriormente, las funciones de tabla con valor
remoteymysqlejecutaban la misma consulta dos veces para recuperar la estructura de la tabla desde un servidor remoto. - Se utiliza el generador de documentación
MkDocs. - Cuando se intenta eliminar una columna de una tabla de la que dependen expresiones
DEFAULT/MATERIALIZEDde otras columnas, se lanza una excepción (zhang2014). - Se añadió la capacidad de interpretar una línea vacía en formatos de texto como el número 0 para los tipos de dato
Float. Esta funcionalidad ya estaba disponible, pero se perdió en la versión 1.1.54342. - Los valores
Enumpueden usarse enmin,max,sumy algunas otras funciones. En estos casos, se utilizan los valores numéricos correspondientes. Esta funcionalidad ya estaba disponible, pero se perdió en la versión 1.1.54337. - Se añadió
max_expanded_ast_elementspara restringir el tamaño del AST tras expandir recursivamente los alias.
Correcciones de errores:
- Se corrigieron casos en los que, por error, se eliminaban columnas innecesarias de las subconsultas, o en los que no se eliminaban de subconsultas que contenían
UNION ALL. - Se corrigió un error en los procesos de merge de tablas
ReplacingMergeTree. - Se corrigieron las inserciones síncronas en tablas
Distributed(insert_distributed_sync = 1). - Se corrigió un fallo de segmentación en ciertos usos de
FULLyRIGHT JOINcon columnas duplicadas en subconsultas. - Se corrigió un fallo de segmentación en ciertos usos de
replace_running_queryyKILL QUERY. - Se corrigió el orden de las columnas
sourceylast_exceptionen la tablasystem.dictionaries. - Se corrigió un error por el que la consulta
DROP DATABASEno eliminaba el archivo de metadatos. - Se corrigió la consulta
DROP DATABASEpara bases de datosDictionary. - Se corrigió la baja precisión de las funciones
uniqHLL12yuniqCombinedpara cardinalidades superiores a 100 millones de elementos (Alex Bocharov). - Se corrigió el cálculo de valores predeterminados implícitos cuando era necesario calcular simultáneamente expresiones explícitas con valores predeterminados en consultas
INSERT(zhang2014). - Se corrigió un caso poco frecuente en el que una consulta a una tabla
MergeTreeno podía finalizar (chenxing-xc). - Se corrigió un fallo que se producía al ejecutar una consulta
CHECKpara tablasDistributedsi todos los segmentos eran locales (chenxing.xc). - Se corrigió una ligera regresión de rendimiento en funciones que usan expresiones regulares.
- Se corrigió una regresión de rendimiento al crear arrays multidimensionales a partir de expresiones complejas.
- Se corrigió un error que podía hacer que apareciera una sección
FORMATadicional en un archivo.sqlcon metadatos. - Se corrigió un error por el que el límite
max_table_size_to_dropse aplicaba al intentar eliminar unaMATERIALIZED VIEWque apunta a una tabla especificada explícitamente. - Se corrigió la incompatibilidad con clientes antiguos (a veces se enviaban a clientes antiguos datos con el tipo
DateTime('timezone'), que no entienden). - Se corrigió un error al leer elementos de columnas
Nestedde estructuras añadidas medianteALTERpero vacías en las particiones antiguas, cuando las condiciones de estas columnas se movían aPREWHERE. - Se corrigió un error al filtrar tablas por columnas virtuales
_tableen consultas a tablasMerge. - Se corrigió un error al usar columnas
ALIASen tablasDistributed. - Se corrigió un error que hacía imposible la compilación dinámica para consultas con funciones de agregación de la familia
quantile. - Se corrigió una condición de carrera en la canalización de ejecución de consultas que se producía en casos muy raros al usar tablas
Mergecon un gran número de tablas y al usar subconsultasGLOBAL. - Se corrigió un fallo al pasar arrays de distinto tamaño a una función
arrayReduceal usar funciones de agregación de varios argumentos. - Se prohibió el uso de consultas con
UNION ALLen unaMATERIALIZED VIEW. - Se corrigió un error durante la inicialización de la tabla del sistema
part_logal arrancar el servidor (de forma predeterminada,part_logestá desactivada).
Cambios incompatibles con versiones anteriores:
- Se eliminó la opción
distributed_ddl_allow_replicated_alter. Este comportamiento está habilitado de forma predeterminada. - Se eliminó la configuración
strict_insert_defaults. Si usaba esta funcionalidad, escriba afeedback@clickhouse.com. - Se eliminó el motor
UnsortedMergeTree.
versión de ClickHouse 1.1.54343, 2018-02-05
- Se añadió compatibilidad con macros para definir nombres de clúster en consultas DDL distribuidas y en constructores de tablas Distributed:
CREATE TABLE distr ON CLUSTER '{cluster}' (...) ENGINE = Distributed('{cluster}', 'db', 'table'). - Ahora, las consultas como
SELECT ... FROM table WHERE expr IN (subquery)se procesan mediante el índice detable. - Se mejoró el procesamiento de duplicados al insertar en tablas Replicated, de modo que ya no ralentizan la ejecución de la cola de replicación.
versión de ClickHouse 1.1.54342, 2018-01-22
- Se corrigió una regresión en 1.1.54337: si el usuario predeterminado tiene acceso de solo lectura, el servidor se niega a iniciarse con el mensaje
Cannot create database in readonly mode. - Se corrigió una regresión en 1.1.54337: en sistemas con systemd, los logs siempre se escriben en syslog independientemente de la configuración; el script watchdog sigue usando init.d.
- Se corrigió una regresión en 1.1.54337: configuración predeterminada incorrecta en la imagen de Docker.
- Se corrigió el comportamiento no determinista de GraphiteMergeTree (puede verse en los mensajes de log
Data after merge is not byte-identical to the data on another replicas). - Se corrigió un error que podía provocar merges incoherentes después de la consulta OPTIMIZE en tablas Replicated (puede verse en los mensajes de log
Part ... intersects the previous part). - Las tablas Buffer ahora funcionan correctamente cuando hay columnas MATERIALIZED en la tabla de destino (por zhang2014).
- Se corrigió un error en la implementación de NULL.
Versión de ClickHouse 1.1.54337, 2018-01-18
Nuevas funcionalidades:
- Se añadió soporte para almacenar arrays multidimensionales y tuplas (tipo de dato
Tuple) en tablas. - Soporte para funciones de tabla en consultas
DESCRIBEeINSERT. Se añadió soporte para subconsultas enDESCRIBE. Ejemplos:DESC TABLE remote('host', default.hits);DESC TABLE (SELECT 1);INSERT INTO TABLE FUNCTION remote('host', default.hits). Soporte paraINSERT INTO TABLEademás deINSERT INTO. - Se mejoró el soporte para zonas horarias. El tipo de dato
DateTimepuede anotarse con la zona horaria que se usa para el análisis y el formato en formatos de texto. Ejemplo:DateTime('Asia/Istanbul'). Cuando se especifican zonas horarias en funciones para argumentosDateTime, el tipo de retorno conservará la zona horaria y el valor se mostrará como se espera. - Se añadieron las funciones
toTimeZone,timeDiff,toQuarter,toRelativeQuarterNum. Las funcionestoRelativeHour/Minute/Secondpueden tomar un valor de tipoDatecomo argumento. El nombre de la funciónnowdistingue entre mayúsculas y minúsculas. - Se añadió la función
toStartOfFifteenMinutes(Kirill Shvakov). - Se añadió la herramienta
clickhouse formatpara dar formato a consultas. - Se añadió el parámetro de configuración
format_schema_path(Marek Vavruşa). Se utiliza para especificar un esquema en formatoCap'n Proto. Los archivos de esquema solo pueden ubicarse en el directorio especificado. - Se añadió soporte para sustituciones de configuración (
inclyconf.d) en la configuración de diccionarios externos y modelos (Pavel Yakunin). - Se añadió una columna con documentación para la tabla
system.settings(Kirill Shvakov). - Se añadió la tabla
system.parts_columnscon información sobre el tamaño de las columnas en cada parte de datos de las tablasMergeTree. - Se añadió la tabla
system.modelscon información sobre los modelos de aprendizaje automáticoCatBoostcargados. - Se añadieron las funciones de tabla
mysqlyodbc, y los correspondientes motores de tablaMySQLyODBC, para acceder a bases de datos remotas. Esta funcionalidad está en fase beta. - Se añadió la posibilidad de pasar un argumento de tipo
AggregateFunctiona la función de agregadogroupArray(de modo que se pueda crear un array de estados de alguna función de agregado). - Se eliminaron las restricciones sobre varias combinaciones de combinadores de funciones de agregado. Por ejemplo, puede usar las funciones de agregado
avgForEachIfyavgIfForEach, que tienen comportamientos distintos. - El combinador de funciones de agregado
-ForEachse amplió para el caso de funciones de agregado con múltiples argumentos. - Se añadió soporte para funciones de agregado con argumentos
Nullable, incluso en casos en los que la función devuelve un resultado noNullable(añadido con la contribución de Silviu Caragea). Ejemplo:groupArray,groupUniqArray,topK. - Se añadió
max_client_network_bandwidthparaclickhouse-client(Kirill Shvakov). - Los usuarios con la configuración
readonly = 2pueden trabajar con tablas TEMPORARY (CREATE, DROP, INSERT…) (Kirill Shvakov). - Se añadió soporte para usar varios consumidores con el motor
Kafka. Se ampliaron las opciones de configuración deKafka(Marek Vavruša). - Se añadieron las funciones
intExp3eintExp4. - Se añadió la función de agregado
sumKahan. - Se añadieron las funciones to * Number* OrNull, donde * Number* es un tipo numérico.
- Se añadió soporte para cláusulas
WITHen una consultaINSERT SELECT(autor: zhang2014). - Se añadieron las configuraciones
http_connection_timeout,http_send_timeoutyhttp_receive_timeout. En particular, estas configuraciones se usan para descargar partes de datos para la replicación. Cambiarlas permite una conmutación por error más rápida si la red está sobrecargada. - Se añadió soporte para
ALTERen tablas de tipoNull(Anastasiya Tsarkova). - La función
reinterpretAsStringse amplió para todos los tipos de datos que se almacenan de forma contigua en memoria. - Se añadió la opción
--silentpara la herramientaclickhouse-local. Suprime la impresión de información de ejecución de consultas en stderr. - Se añadió soporte para leer valores de tipo
Datedesde texto en un formato en el que el mes y/o el día del mes se especifican con un solo dígito en lugar de dos dígitos (Amos Bird).
Optimizaciones de rendimiento:
- Se mejoró el rendimiento de las funciones de agregado
min,max,any,anyLast,anyHeavy,argMin,argMaxcon argumentos de cadena. - Se mejoró el rendimiento de las funciones
isInfinite,isFinite,isNaN,roundToExp2. - Se mejoró el rendimiento del análisis y el formateo de valores de tipo
DateyDateTimeen formato de texto. - Se mejoró el rendimiento y la precisión del análisis de números de punto flotante.
- Se redujo el uso de memoria para
JOINen el caso en que las partes izquierda y derecha tienen columnas con nombres idénticos que no están contenidas enUSING. - Se mejoró el rendimiento de las funciones de agregado
varSamp,varPop,stddevSamp,stddevPop,covarSamp,covarPop,corra costa de reducir la estabilidad computacional. Las funciones antiguas están disponibles con los nombresvarSampStable,varPopStable,stddevSampStable,stddevPopStable,covarSampStable,covarPopStable,corrStable.
Correcciones de errores:
- Se corrigió la deduplicación de datos después de ejecutar una consulta
DROPoDETACH PARTITION. En la versión anterior, eliminar una partición e insertar de nuevo los mismos datos no funcionaba porque los bloques insertados se consideraban duplicados. - Se corrigió un error que podía provocar una interpretación incorrecta de la cláusula
WHEREen consultasCREATE MATERIALIZED VIEWconPOPULATE. - Se corrigió un error al usar el parámetro
root_pathen la configuraciónzookeeper_servers. - Se corrigieron resultados inesperados al pasar el argumento
DateatoStartOfDay. - Se corrigieron las funciones
addMonthsysubtractMonths, así como la aritmética deINTERVAL n MONTH, en los casos en que el resultado corresponde al año anterior. - Se añadió la compatibilidad que faltaba para el tipo de datos
UUIDenDISTINCT,JOINy las funciones de agregaciónuniq, así como en los diccionarios externos (Evgeniy Ivanov). La compatibilidad conUUIDsigue siendo incompleta. - Se corrigió el comportamiento de
SummingMergeTreeen los casos en que las filas sumaban cero. - Varias correcciones para el motor
Kafka(Marek Vavruša). - Se corrigió el comportamiento incorrecto del motor de tablas
Join(Amos Bird). - Se corrigió el comportamiento incorrecto del asignador de memoria en FreeBSD y OS X.
- La función
extractAllahora admite coincidencias vacías. - Se corrigió un error que impedía usar
libresslen lugar deopenssl. - Se corrigió la consulta
CREATE TABLE AS SELECTdesde tablas temporales. - Se corrigió la falta de atomicidad al actualizar la cola de replicación. Esto podía hacer que las réplicas quedaran desincronizadas hasta que se reiniciara el servidor.
- Se corrigió un posible desbordamiento en
gcd,lcmymodulo(operador%) (Maks Skorokhod). - Los archivos
-preprocessedahora se crean después de cambiarumask(umaskse puede cambiar en la configuración). - Se corrigió un error en la comprobación en segundo plano de partes (
MergeTreePartChecker) al usar una clave de partición personalizada. - Se corrigió el análisis de tuplas (valores del tipo de datos
Tuple) en formatos de texto. - Se mejoraron los mensajes de error sobre tipos incompatibles pasados a
multiIf,arrayy algunas otras funciones. - Se rediseñó la compatibilidad con tipos
Nullable. Se corrigieron errores que podían provocar la caída del servidor. También se corrigieron casi todos los demás errores relacionados con la compatibilidad conNULL: conversiones de tipo incorrectas en INSERT SELECT, compatibilidad insuficiente de Nullable en HAVING y PREWHERE, modojoin_use_nulls, tipos Nullable como argumentos del operadorOR, etc. - Se corrigieron varios errores relacionados con la semántica interna de los tipos de datos. Ejemplos: suma innecesaria de campos del tipo
EnumenSummingMergeTree; alineación de tiposEnumen formatosPretty, etc. - Comprobaciones más estrictas para las combinaciones permitidas de columnas compuestas.
- Se corrigió el desbordamiento al especificar un parámetro muy grande para el tipo de datos
FixedString. - Se corrigió un error en la función de agregación
topKen el caso general. - Se añadió la comprobación que faltaba para verificar la igualdad del tamaño de los array en los argumentos de variantes n-arias de funciones de agregación con el combinador
-Array. - Se corrigió un error en
--pagerparaclickhouse-client(author: ks1322). - Se corrigió la precisión de la función
exp10. - Se corrigió el comportamiento de la función
visitParamExtractpara ajustarse mejor a la documentación. - Se corrigió la caída que se producía cuando se especificaban tipos de datos incorrectos.
- Se corrigió el comportamiento de
DISTINCTen el caso en que todas las columnas son constantes. - Se corrigió el formato de las consultas al usar la función
tupleElementcon una expresión constante compleja como índice del elemento de la tupla. - Se corrigió un error en las tablas
Dictionarypara diccionariosrange_hashed. - Se corrigió un error que provocaba un número excesivo de filas en el resultado de
FULLyRIGHT JOIN(Amos Bird). - Se corrigió una caída del servidor al crear y eliminar archivos temporales en directorios
config.ddurante la recarga de la configuración. - Se corrigió la consulta
SYSTEM DROP DNS CACHE: la caché se vaciaba, pero las direcciones de los nodos del clúster no se actualizaban. - Se corrigió el comportamiento de
MATERIALIZED VIEWdespués de ejecutarDETACH TABLEen la tabla subyacente a la vista (Marek Vavruša).
Mejoras de compilación:
- La herramienta
pbuilderse usa para las compilaciones. El proceso de compilación es casi totalmente independiente del entorno del host de compilación. - Se utiliza una única compilación para distintas versiones del sistema operativo. Los paquetes y binarios se han hecho compatibles con una amplia variedad de sistemas Linux.
- Se añadió el paquete
clickhouse-test. Puede usarse para ejecutar pruebas funcionales. - El archivo tar del código fuente ahora puede publicarse en el repositorio. Puede usarse para reproducir la compilación sin recurrir a GitHub.
- Se añadió una integración limitada con Travis CI. Debido a las limitaciones del tiempo de compilación en Travis, solo se prueba la compilación de depuración y se ejecuta un subconjunto reducido de pruebas.
- Se añadió compatibilidad con
Cap'n'Protoen la compilación predeterminada. - Se cambió el formato de las fuentes de la documentación de
Restricted TextaMarkdown. - Se añadió compatibilidad con
systemd(Vladimir Smirnov). Está deshabilitado de forma predeterminada debido a incompatibilidades con algunas imágenes de sistema operativo y puede habilitarse manualmente. - Para la generación dinámica de código,
clangylldestán integrados en el binarioclickhouse. También pueden invocarse comoclickhouse clangyclickhouse lld. - Se eliminó del código el uso de extensiones de GNU. Se habilitó la opción
-Wextra. Al compilar conclang, el valor predeterminado eslibc++en lugar delibstdc++. - Se separaron las bibliotecas
clickhouse_parsersyclickhouse_common_iopara acelerar las compilaciones de varias herramientas.
Cambios incompatibles con versiones anteriores:
- El formato de las marcas en las tablas de tipo
Logque contienen columnasNullablecambió de forma incompatible con versiones anteriores. Si tiene tablas de este tipo, debe convertirlas aTinyLogantes de iniciar la nueva versión del servidor. Para ello, sustituyaENGINE = LogporENGINE = TinyLogen el archivo.sqlcorrespondiente del directoriometadata. Si su tabla no tiene columnasNullableo si no es de tipoLog, no necesita hacer nada. - Se eliminó la configuración
experimental_allow_extended_storage_definition_syntax. Ahora esta funcionalidad está habilitada de forma predeterminada. - La función
runningIncomepasó a llamarserunningDifferenceStartingWithFirstvaluepara evitar confusiones. - Se eliminó la sintaxis
FROM ARRAY JOIN arrcuando ARRAY JOIN se especifica directamente después de FROM sin tabla (Amos Bird). - Se eliminó el formato
BlockTabSeparated, que se usaba únicamente con fines de demostración. - Se cambió el formato de estado de las funciones de agregación
varSamp,varPop,stddevSamp,stddevPop,covarSamp,covarPop,corr. Si ha almacenado estados de estas funciones de agregación en tablas (usando el tipo de datoAggregateFunctiono vistas materializadas con los estados correspondientes), escriba a feedback@clickhouse.com. - En versiones anteriores del servidor existía una funcionalidad no documentada: si una función de agregación depende de parámetros, podía especificarse sin parámetros en el tipo de dato
AggregateFunction. Ejemplo:AggregateFunction(quantiles, UInt64)en lugar deAggregateFunction(quantiles(0.5, 0.9), UInt64). Esta funcionalidad se perdió. Aunque no estaba documentada, tenemos previsto volver a admitirla en futuras versiones. - Los tipos de datos Enum no pueden usarse en las funciones de agregación min/max. Esta capacidad volverá en la próxima versión.
Tenga en cuenta al actualizar:
- Al realizar una actualización gradual en un clúster, cuando algunas réplicas ejecutan la versión anterior de ClickHouse y otras la versión nueva, la replicación se detiene temporalmente y aparece en el log el mensaje
unknown parameter 'shard'. La replicación continuará una vez que se hayan actualizado todas las réplicas del clúster. - Si en los servidores del clúster se ejecutan distintas versiones de ClickHouse, es posible que las consultas distribuidas que usen las siguientes funciones arrojen resultados incorrectos:
varSamp,varPop,stddevSamp,stddevPop,covarSamp,covarPop,corr. Debe actualizar todos los nodos del clúster.