Cambios incompatibles con versiones anteriores
- El formato de salida Parquet convierte las columnas Date y DateTime en tipos de fecha/hora compatibles con Parquet, en lugar de escribirlas como números en bruto. DateTime pasa a ser DateTime64(3) (antes: UInt32); la configuración
output_format_parquet_datetime_as_uint32restaura el comportamiento anterior. Date pasa a ser Date32 (antes: UInt16). #70950 (Michael Kolupaev). - No permitir por defecto tipos comparables (como JSON/Object/AggregateFunction) en ORDER BY ni en las funciones de comparación
less/greater/equal/etc. #73276 (Pavel Kruglov). JSONEachRowWithProgressescribirá el progreso cada vez que se produzca. En versiones anteriores, el progreso solo se mostraba después de cada bloque del resultado, lo que lo hacía inútil. Se ha cambiado la forma en que se muestra el progreso: ya no mostrará valores cero. Tenga en cuenta que el progreso se envía incluso cuando se produce con frecuencia. Esto puede generar un volumen significativo de tráfico. Tenga en cuenta que el progreso no se vacía cuando la salida está comprimida. Esto cierra #70800. #73834 (Alexey Milovidov).- El origen del diccionario
mysqlya no realiza la consultaSHOW TABLE STATUS, porque no aporta ningún valor para las tablas InnoDB ni para ninguna versión reciente de MySQL. Esto cierra #72636. Este cambio es retrocompatible, pero se incluye en esta categoría para que pueda advertirlo. #73914 (Alexey Milovidov). - Las tablas
Mergeunificarán la estructura de las tablas subyacentes tomando la unión de sus columnas y deduciendo tipos comunes. Esto resuelve #64864. Esto resuelve #35307. En determinados casos, este cambio podría no ser compatible con versiones anteriores. Un ejemplo es cuando no existe un tipo común entre las tablas, pero aún es posible convertir al tipo de la primera tabla, como en el caso de UInt64 e Int64, o de cualquier tipo numérico y String. Si desea volver al comportamiento anterior, establezcamerge_table_max_tables_to_look_for_schema_inferenceen1ocompatibilityen24.12o una versión anterior. #73956 (Alexey Milovidov). - Las consultas
CHECK TABLEahora requieren un privilegioCHECKindependiente. En versiones anteriores, bastaba con contar con el privilegioSHOW TABLESpara ejecutar estas consultas. Pero una consultaCHECK TABLEpuede ser costosa, y los límites habituales de complejidad de las consultasSELECTno se le aplican. Esto podía dar lugar a un posible DoS. #74471 (Alexey Milovidov). - Compruebe que todas las columnas de una vista materializada coincidan con las de la tabla de destino si
allow_materialized_view_with_bad_selectesfalse. #74481 (Christoph Wurm). - La función
h3ToGeo()ahora devuelve los resultados en el orden(lat, lon)(que es el orden estándar de las funciones geométricas). Los usuarios que deseen mantener el orden heredado de los resultados(lon, lat)pueden establecer la configuraciónh3togeo_lon_lat_result_order = true. #74719 (Manish Gill). - Se añaden los formatos
JSONCompactEachRowWithProgressyJSONCompactStringsEachRowWithProgress. Continuación de #69989.JSONCompactWithNamesyJSONCompactWithNamesAndTypesya no muestran “totals”; al parecer, se trataba de un error de implementación. #75037 (Alexey Milovidov). - Cambie el valor predeterminado de
format_alter_operations_with_parenthesesa true para que la lista de comandos ALTER no sea ambigua (consulte https://github.com/ClickHouse/ClickHouse/pull/59532). Esto rompe la replicación con clústeres anteriores a la versión 24.3. Si está actualizando un clúster que usa versiones anteriores, desactive esta configuración en la configuración del servidor o actualice primero a 24.3. #75302 (Raúl Marín). - Se prohíbe TRUNCATE DATABASE en bases de datos Replicated. #76651 (Bharat Nallan).
- Las réplicas paralelas se deshabilitan de forma predeterminada cuando el analizador está deshabilitado, independientemente de la configuración de
compatibility. Aun así, es posible cambiar este comportamiento estableciendo explícitamenteparallel_replicas_only_with_analyzerenfalse. #77115 (Igor Nikonov). - Ya no es posible usar
NaNoinfcomo valores de coma flotante en los parámetros de configuración. #77546 (Yarik Briukhovetskyi). - Corrige los casos en que
dateTruncse usa con argumentos negativos de fecha/fecha y hora. #77622 (Yarik Briukhovetskyi). - Se ha eliminado la integración heredada con MongoDB. La configuración del servidor
use_legacy_mongodb_integrationha quedado obsoleta y ahora ya no hace nada. #77895 (Robert Schulze). - Mejora la validación de SummingMergeTree para omitir la agregación de las columnas usadas en las claves de partición o de ordenación. #78022 (Pervakov Grigorii).
Nuevas características
- Se añadió una caché en memoria para los gránulos deserializados de índices de omisión. Esto debería acelerar las consultas repetidas que usan índices de omisión. El tamaño de la nueva caché se controla con las configuraciones del servidor
skipping_index_cache_sizeyskipping_index_cache_max_entries. La motivación original de esta caché fueron los índices de similitud vectorial, que ahora son mucho más rápidos. #70102 (Robert Schulze). - Una nueva implementación de la caché de páginas en espacio de usuario, que permite almacenar los datos en la memoria del propio proceso en lugar de depender de la caché de páginas del sistema operativo. Resulta útil cuando los datos se almacenan en un sistema de archivos virtual remoto sin el respaldo de la caché del sistema de archivos local. #70509 (Michael Kolupaev).
- Se añade una configuración para consultar tablas Iceberg en una marca de tiempo específica. #71072 (Brett Hoerner).
- Implementar la poda de particiones en tablas Iceberg para operaciones de particionado por transformación relacionadas con el tiempo en Iceberg. #72044 (Daniil Ivanik).
- Se añadió la posibilidad de crear índices min-max (skipping) de forma predeterminada para las columnas gestionadas por MergeTree mediante las opciones de configuración
enable_minmax_index_for_all_numeric_columns(para columnas numéricas) yenable_minmax_index_for_all_string_columns(para columnas de tipo cadena). Por ahora, ambas opciones de configuración están deshabilitadas, por lo que todavía no hay cambios en el comportamiento. #72090 (Smita Kulkarni). - Se añadió la función de agregación sequenceMatchEvents, que devuelve las marcas de tiempo de los eventos coincidentes de la cadena de eventos más larga del patrón. #72349 (UnamedRus).
- Las sentencias
SELECTyVIEWahora admiten aliases; por ejemplo,SELECT b FROM (SELECT number, number*2 FROM numbers(2)) AS x (a, b);. Esto permite ejecutar la consulta 15 de TPC-H sin modificaciones. #72480 (Yarik Briukhovetskyi). - Se añadió una nueva configuración
enable_adaptive_memory_spill_schedulerque permite que varios grace JOINs en la misma consulta supervisen su huella de memoria combinada y activen de forma adaptativa el volcado a almacenamiento externo para evitar MEMORY_LIMIT_EXCEEDED. #72728 (lgbo). - Se agregó la función
arrayNormalizedGini. #72823 (flynn). - Se admiten tipos de datos Decimal de baja cardinalidad; se corrige #72256. #72833 (zhanglistar).
- Cuando
min_age_to_force_merge_secondsymin_age_to_force_merge_on_partition_onlyestán habilitados, la fusión de partes ignorará el límite máximo de bytes. #73656 (Kai Zhu). - Se admite la lectura de valores HALF_FLOAT desde Apache Arrow/Parquet/ORC (se leen como Float32). Esto cierra #72960. Tenga en cuenta que el half float IEEE-754 no es lo mismo que BFloat16. Cierra #73835. #73836 (Alexey Milovidov).
- La tabla
system.trace_logcontendrá dos columnas nuevas,symbolsylines, que contienen la traza de pila simbolizada. Esto permite recopilar y exportar fácilmente información de perfiles. Esto se controla mediante el valor de configuración del servidorsymbolizedentro detrace_logy está habilitado de forma predeterminada. #73896 (Alexey Milovidov). - Añade una nueva función,
generateSerialID, que puede utilizarse para generar números autoincrementales en tablas. Continuación de #64310 por kazalika. Esto cierra #62485. #73950 (Alexey Milovidov). - Se añade la sintaxis
query1 PARALLEL WITH query2 PARALLEL WITH query3 ... PARALLEL WITH queryN. Esto significa que las subconsultas{query1, query2, ... queryN}pueden ejecutarse en paralelo entre sí (y es preferible). #73983 (Vitaly Baranov). - Ahora, la UI de Play tiene una barra de progreso durante la ejecución de la consulta. Permite cancelar consultas. Muestra el número total de registros e información detallada sobre la velocidad. La tabla puede renderizarse de forma incremental en cuanto llegan los datos. Se habilita la compresión HTTP. El renderizado de la tabla ahora es más rápido. El encabezado de la tabla queda fijo. Permite seleccionar celdas y navegar entre ellas con las teclas de dirección. Se corrige el problema por el que el contorno de la celda seleccionada la hacía más pequeña. Las celdas ya no se expanden al pasar el ratón por encima, sino solo al seleccionarlas. El momento para detener el renderizado de los datos entrantes se decide en el client en lugar de en el servidor. Resalta los grupos de dígitos en los números. El diseño general se renovó y ahora es más marcado. Comprueba si el servidor es accesible y si las credenciales son correctas, y muestra la versión del servidor y el tiempo de actividad. El icono de la nube se muestra con contorno en todas las fuentes, incluso en Safari. Los enteros grandes dentro de tipos de datos anidados se representarán mejor. Mostrará inf/nan correctamente. Mostrará los tipos de datos al pasar el ratón sobre el encabezado de una columna. #74204 (Alexey Milovidov).
- Se añade la posibilidad de crear índices min-max (de omisión) de forma predeterminada para las columnas gestionadas por MergeTree mediante las configuraciones
add_minmax_index_for_numeric_columns(para columnas numéricas) yadd_minmax_index_for_string_columns(para columnas de cadena). Por ahora, ambas configuraciones están deshabilitadas, por lo que todavía no hay cambios de comportamiento. #74266 (Smita Kulkarni). - Añade los campos
script_query_numberyscript_line_numberasystem.query_log, a ClientInfo del protocolo nativo y a los logs del servidor. Esto cierra #67542. Agradecimientos a pinsvin00 por haber impulsado esta funcionalidad anteriormente en #68133. #74477 (Alexey Milovidov). - Añade compatibilidad con el operador de resta para DateTime64, lo que permite la resta entre valores de DateTime64, así como con DateTime. #74482 (Li Yin).
- Se añade compatibilidad con el motor de tabla DeltaLake para AzureBlobStorage. Corrige #68043. #74541 (Smita Kulkarni).
- Agregar la configuración bind_host para definir la dirección IP de origen de las conexiones del clickhouse client. #74741 (Todd Yocum).
- Se añadió la posibilidad de aplicar mutaciones no finalizadas (no materializadas por un proceso en segundo plano) durante la ejecución de consultas
SELECT, inmediatamente después de su envío. Puede habilitarse estableciendoapply_mutations_on_fly. #74877 (Anton Popov). - Se corrigieron algunos casos inesperados que se producían cuando los argumentos de fecha y hora de
toStartOfIntervalson negativos. Para ello, se implementó una nueva función llamada toStartOfIntervalAllowNegative, que hace prácticamente lo mismo, pero solo devuelve Date32/DateTime64. #74933 (Yarik Briukhovetskyi). - Se ha añadido una nueva función initialQueryStartTime. Devuelve la hora de inicio de la consulta actual. El valor es el mismo en todos los segmentos durante una consulta distribuida. #75087 (Roman Lomonosov).
- Se introducen parametrized_view_parameters en system.tables. Cierra https://github.com/clickhouse/clickhouse/issues/66756. #75112 (NamNguyenHoai).
- Permite modificar el comentario de una base de datos. Cierra #73351 ### Entrada de documentación para cambios visibles para el usuario. #75622 (NamNguyenHoai).
- Se añadió la posibilidad de ATTACH a tablas sin la capa de base de datos (evita el hack de UUID). #75788 (Azat Khuzhin).
- Se añadió la configuración del servidor
concurrent_threads_scheduler, que determina cómo se distribuyen los slots de CPU entre las consultas concurrentes. Puede establecerse enround_robin(comportamiento anterior) o enfair_round_robinpara resolver el problema de la distribución desigual de CPU entre las consultas INSERT y SELECT. #75949 (Sergei Trifonov). - Se vuelve a incorporar el códec QPL, que se había eliminado en la versión 24.10 por problemas de licencia. #76021 (Konstantin Bogdanov).
- Se agregó la función
arraySymmetricDifference. Devuelve todos los elementos de varios argumentos de tipo array que no aparecen en todos los argumentos. Ejemplo:SELECT arraySymmetricDifference([1, 2], [2, 3])devuelve[1, 3]. (issue #61673). #76231 (Filipp Abapolov). - Se añade la función de agregación
estimatecompressionratio; consulta #70801. #76661 (Tariq Almawash). - Los eventos de perfil
FilterTransformPassedRowsyFilterTransformPassedBytesmostrarán la cantidad de filas y bytes filtrados durante la ejecución de la consulta. #76662 (Onkar Deshpande). - Se añadió la función hash keccak256, de uso habitual en implementaciones de blockchain, especialmente en sistemas basados en EVM. #76669 (Arnaud Briche).
- Scram SHA256 y actualización de la autenticación wire de Postgres. #76839 (scanhex12).
- Esta funcionalidad añade la posibilidad de definir una lista de encabezados que se reenvían desde los encabezados de la solicitud del client al autenticador HTTP externo. #77054 (inv2004).
- Compatibilidad con
IcebergMetadataFilesCache, que almacenará los archivos manifest/list y metadata.json en una sola caché. #77156 (Han Fei). - Se añaden las funciones
arrayLevenshteinDistance,arrayLevenshteinDistanceWeightedyarraySimilarity. #77187 (Mikhail f. Shiryaev). - Añade tres funciones nuevas:
icebergTruncate, según la especificación https://iceberg.apache.org/spec/#truncate-transform-details,toYearNumSinceEpochytoMonthNumSinceEpoch. Añade compatibilidad con la transformacióntruncateen la poda de particiones para el motorIceberg. #77403 (alesapin). - Permite a un usuario consultar el estado de una tabla Iceberg tal como existía en un punto anterior en el tiempo. #77439 (Daniil Ivanik).
- Se añadió la planificación de slots de CPU para cargas de trabajo; consulta https://clickhouse.com/docs/operations/workload-scheduling#cpu_scheduling para más detalles. #77595 (Sergei Trifonov).
- La función
hasAll()ahora puede aprovechar los índices de omisión para texto completo tokenbf_v1 y ngrambf_v1. #77662 (UnamedRus). - El tipo de datos
JSONestá listo para producción. Consulte https://jsonbench.com/. Los tipos de datosDynamicyVaraintestán listos para producción. #77785 (Alexey Milovidov). - Se añadió una caché en memoria para índices de similitud vectorial deserializados. Esto debería acelerar las consultas repetidas de búsqueda aproximada de vecinos más cercanos (ANN). El tamaño de la nueva caché está controlado por las configuraciones del servidor
vector_similarity_index_cache_sizeyvector_similarity_index_cache_max_entries. Esta funcionalidad sustituye la función de caché para índices de omisión de datos de versiones anteriores. #77905 (Shankar Iyer). - Se añadieron las funciones sparseGrams y sparseGramsHashes, junto con sus versiones UTF-8. Autor: scanhex12. #78176 (Pervakov Grigorii).
- Se añade la función
toInterval. Esta función acepta 2 argumentos (valor y unidad) y convierte el valor en un tipoIntervalespecífico. #78723 (Andrew Davis).
Características experimentales
- Permitir merges automáticos de limpieza de particiones completas tras un timeout configurable con un nuevo ajuste
enable_replacing_merge_with_cleanup_for_min_age_to_force_merge. #76440 (Christoph Wurm). - Añadir compatibilidad con Unity Catalog para tablas DeltaLake sobre AWS S3 y el sistema de archivos local. #76988 (alesapin).
- Introducir una integración experimental con el catálogo de servicios de AWS Glue para tablas Iceberg. #77257 (alesapin).
Mejoras del rendimiento
- Optimiza el rendimiento con proyección diferida para evitar leer las columnas no utilizadas. #55518 (Xiaozhe Yu).
- Empezar a comparar filas por las columnas con más probabilidades de ser distintas. #63780 (UnamedRus).
- Optimización del formato de entrada RowBinary. Cierra #63805. #65059 (Pavel Kruglov).
- Se acelera la deserialización de cadenas mediante algunas optimizaciones de bajo nivel. #65948 (Nikita Taranov).
- Aplicar el atributo
preserve_mosten algunas partes del código. #67778 (Nikita Taranov). - Se implementa la caché de condiciones de consulta para mejorar el rendimiento de las consultas mediante condiciones repetidas. El intervalo de la porción de datos que no cumple la condición se recuerda como un índice temporal en memoria. Las consultas posteriores usarán este índice. cierra #67768 ### Entrada de documentación para cambios visibles para el usuario. #69236 (zhongyuankai).
- Se añadió soporte para la precarga asíncrona de IO en
NativeORCBlockInputFormat, lo que mejora el rendimiento general al ocultar la latencia remota de IO. El aumento de velocidad podría alcanzar 1.47x en mi caso de prueba. #70534 (李扬). - Mejora el rendimiento de grace hash join al reorganizar por rangos la tabla del lado derecho del join según las claves. #72237 (kevinyhzou).
- Se vuelve a respetar
ttl_only_drop_partsenmaterialize ttl; solo se leen las columnas necesarias para recalcular el TTL y eliminar las partes al reemplazarlas por una vacía. #72751 (Andrey Zvonov). - Permitir que
arrayROCAUCyarrayAUCPRcalculen el área parcial de la curva completa, de modo que su cálculo pueda paralelizarse en conjuntos de datos enormes. #72904 (Emmanuel). - Se evita crear demasiados hilos inactivos. #72920 (Guo Wangyang).
- Se eliminó de la fase de probe del algoritmo JOIN
parallel_hashla división por hash de los bloques de la tabla izquierda. #73089 (Nikita Taranov). - No enumeres las claves del almacenamiento de blobs si en la función de tabla solo hay expansión con llaves. Cierra #73333. #73518 (Konstantin Bogdanov).
- Sustituir Int256 y UInt256 por el
builtini256 de clang en los cálculos aritméticos según las pruebas de #70502. #73658 (李扬). - Añade una vía rápida para funciones cuyos tipos de argumentos son todos numéricos. Corrige problemas de rendimiento en https://github.com/ClickHouse/ClickHouse/pull/72258. #73820 (李扬).
- No aplicar
maskedExecutea columnas que no sean funciones; mejorar el rendimiento de la ejecución de cortocircuito. #73965 (lgbo). - Se desactiva la detección de cabeceras para Kafka/NATS/RabbitMQ/FileLog para mejorar el rendimiento. #74006 (Azat Khuzhin).
- Use wrappers de log por valor y no los asigne en el heap. #74034 (Mikhail Artemenko).
- Ejecute un pipeline con un mayor grado de paralelismo después de la agregación con grouping sets. #74082 (Nikita Taranov).
- Se reduce la sección crítica en
MergeTreeReadPool. #74202 (Guo Wangyang). - Se optimizó la función
indexHint. Ahora, las columnas que solo se utilizan como argumentos de la funciónindexHintno se leen de la tabla. #74314 (Anton Popov). - Mejora del rendimiento de las réplicas paralelas. La deserialización de paquetes en el iniciador de la consulta, para los paquetes no relacionados con el protocolo de réplicas paralelas, ahora siempre se realiza en el hilo del pipeline. Antes, podía realizarse en un hilo encargado de la planificación del pipeline, lo que podía reducir la capacidad de respuesta del iniciador y retrasar la ejecución del pipeline. #74398 (Igor Nikonov).
- Se corrigió el cálculo del tamaño en memoria para las columnas
LowCardinality. #74688 (Nikita Taranov). - Mejora el rendimiento de la lectura de la columna JSON completa en partes Wide desde S3. Esto se logra mediante la incorporación de prefetches para la deserialización de prefijos de subcolumnas, una caché de prefijos deserializados y la deserialización paralela de prefijos de subcolumnas. Mejora la lectura de la columna JSON desde S3 en 4 veces en consultas como
SELECT data FROM tabley en unas 10 veces en consultas comoSELECT data FROM table LIMIT 10. #74827 (Pavel Kruglov). - Preasignar la memoria utilizada por las async inserts para mejorar el rendimiento. #74945 (Ilya Golshtein).
- Se corrigió la doble preasignación en
ConcurrentHashJoinsi el optimizador invierte los lados del join. #75149 (Nikita Taranov). - Se corrigió la contención innecesaria en
parallel_hashcuandomax_rows_in_join = max_bytes_in_join = 0. #75155 (Nikita Taranov). - Ligera mejora en algunos casos de join: se precalcula el número de filas de salida y se reserva memoria para ellas. #75376 (Alexander Gololobov).
- Los archivos de metadatos
plain_rewritableson pequeños y no necesitan un búfer predeterminado grande. Use un búfer de escritura del tamaño adecuado para ajustarse a la ruta indicada, lo que mejora el aprovechamiento de la memoria cuando hay una gran cantidad de partes activas. ### Entrada de documentación para cambios de cara al usuario. #75758 (Julia Kartseva). - En algunos casos (p. ej., en una columna Array vacía), las partes de datos pueden contener archivos vacíos. Podemos omitir la escritura de blobs vacíos en ObjectStorage y almacenar solo los metadatos de esos archivos cuando la tabla reside en un disco con el almacenamiento de metadatos y el de objetos separados. #75860 (Alexander Gololobov).
- Se descubrió que el control de concurrencia podía provocar una distribución injusta de la CPU entre los INSERT y los SELECT: todos los slots de CPU se asignaban incondicionalmente (sin competencia) a los INSERT con
max_threads= 1, mientras que los SELECT con valores altos demax_threadssufrían un rendimiento deficiente porque solo usaban un único hilo. #75941 (Sergei Trifonov). - Optimización trivial de wrapInNullable para evitar la asignación innecesaria del mapa de nulos. #76489 (李扬).
- Mejora el rendimiento de min/max para Decimal32/Decimal64/DateTime64. #76570 (李扬).
- Expulsa activamente los datos de la caché cuando se eliminan partes. Evita que la caché crezca hasta el tamaño máximo si la cantidad de datos es menor. #76641 (Alexey Milovidov).
- La compilación de consultas (configuración
compile_expressions) ahora tiene en cuenta el tipo de máquina. Esto acelera considerablemente este tipo de consultas. #76753 (Robert Schulze). - Optimiza
arraySort. #76850 (李扬). - Acelera la generación del resultado de JOIN mediante la desvirtualización de las llamadas a
col->insertFrom(). #77350 (Alexander Gololobov). - Fusionar las marcas de una misma parte y escribirlas en la caché de condiciones de consulta de una sola vez para reducir el uso de bloqueos. #77377 (zhongyuankai).
- Optimiza ORDER BY para columnas Nullable individuales o de baja cardinalidad. #77789 (李扬).
- Deshabilitar
filesystem_cache_prefer_bigger_buffer_sizecuando la caché se utiliza de forma pasiva, por ejemplo durante las fusiones. #77898 (Kseniia Sumarokova). - Se implementa la optimización trivial de conteo para Iceberg. Ahora, las consultas con
count()y sin ningún filtro deberían ser más rápidas. Cierra #77639. #78090 (alesapin). - Se añade compatibilidad con la poda de datos de Iceberg en función de los valores lower_bound y uppert_bound de las columnas. Corrige #77638. #78242 (alesapin).
- Optimización del uso de memoria de NativeReader. #78442 (Azat Khuzhin).
- Optimización trivial: no reescribir
count(if())como countIf si se requiereCAST. Se cierra #78564. #78565 (李扬).
Mejoras
- Se redujo la cantidad de solicitudes a Keeper al eliminar el uso de solicitudes
getindividuales, que podrían haber provocado una carga significativa en Keeper con el aumento del número de réplicas, en los lugares dondemultiReadestá disponible. #56862 (Nikolay Degterinsky). - Se añade compatibilidad con la autenticación SSL mediante colecciones con nombre para MySQL. Cierra #59111. #59452 (Nikolay Degterinsky).
- Mejora el rendimiento de la infraestructura del nuevo analizador al almacenar
ColumnPtren lugar deFieldenConstantNode. Relacionado con #62245. #63198 (Dmitry Novik). - Rechazar consultas cuando el servidor esté sobrecargado. La decisión se toma en función de la proporción entre el tiempo de espera (
OSCPUWaitMicroseconds) y el tiempo de CPU ocupado (OSCPUVirtualTimeMicroseconds). La consulta se descarta con cierta probabilidad cuando esta proporción está entremin_os_cpu_wait_time_ratio_to_throwymax_os_cpu_wait_time_ratio_to_throw(estas son configuraciones a nivel de consulta). #63206 (Alexey Katsman). - Descartar los bloques lo antes posible para reducir el uso de memoria. #65647 (lgbo).
- La tabla
processors_profile_logahora tiene una configuración predeterminada con un TTL de 30 días. #66139 (Ilya Yatsishin). - Permite crear un índice
bloom_filteren columnas con el tipo de datos DateTime64. #66416 (Yutong Xiao). - Se introducen intervalos de latencia y se usan para hacer seguimiento de los tiempos de conexión y de la primera lectura/escritura de bytes en las solicitudes de S3. De este modo, más adelante se podrán usar los datos recopilados para calcular percentiles aproximados y ajustar los tiempos de espera. #69783 (Alexey Katsman).
- Las consultas enviadas al almacenamiento
Executableya no están limitadas a una ejecución de un solo hilo. #70084 (yawnt). - Se añadieron cabeceras HTTP a la tabla de logs de spans de OpenTelemetry para mejorar la trazabilidad. #70516 (jonymohajanGmail).
- Admite la escritura de archivos ORC con una zona horaria personalizada, no siempre con la zona horaria
GMT. #70615 (kevinyhzou). - Sustituye las funciones de tabla por sus alternativas
-Clustersi están habilitadas las réplicas paralelas. Corrige #65024. #70659 (Konstantin Bogdanov). - Se respeta la configuración de programación de IO al escribir copias de seguridad entre nubes. #71093 (János Benjamin Antal).
- Restablecer la conexión con las réplicas de diccionarios de MySQL y Postgres en segundo plano para no retrasar las solicitudes a los diccionarios correspondientes. #71101 (Yakov Olkhovskiy).
- Añadir el alias de la métrica a system.asynchronous_metrics. #71164 (megao).
- Las actualizaciones de las vistas materializadas actualizables ahora se muestran en
system.query_log. #71333 (Michael Kolupaev). - Evaluar conjuntamente los bloom filters de Parquet y los índices min/max. Necesario para dar soporte correcto a:
x = 3 or x > 5donde data = [1, 2, 4, 5]. #71383 (Arthur Passos). - Mejoras en las métricas interactivas. Se corrige un problema por el que las métricas de las réplicas paralelas no se mostraban por completo. Las métricas se muestran en orden de actualización más reciente y, después, lexicográficamente por nombre. No se muestran métricas obsoletas. #71631 (Julia Kartseva).
- Históricamente, por alguna razón, la consulta
ALTER TABLE MOVE PARTITION TO TABLEcomprobaba los permisosSELECTyALTER DELETEen lugar del permiso específicoALTER_MOVE_PARTITION. Este PR utiliza este tipo de acceso. Por compatibilidad, este permiso también se concederá implícitamente si se han concedidoSELECTyALTER DELETE, pero este comportamiento se eliminará en futuras versiones. Cierra #16403. #71632 (pufit). - Activa
use_hive_partitioningde forma predeterminada. #71636 (Yarik Briukhovetskyi). - Lanzar una excepción al intentar materializar una columna en la clave de ordenación, en lugar de permitir que altere el orden de clasificación. Sin embargo, esto no resuelve #71777. #71891 (Peter Nguyen).
- Permitir una planificación de join más general cuando está habilitado el algoritmo de hash join. #71926 (János Benjamin Antal).
- Ocultar los secretos en
EXPLAIN QUERY TREE. #72025 (Yakov Olkhovskiy). - Permite usar un disco configurable para almacenar los archivos de metadatos de bases de datos y tablas. El nombre del disco puede establecerse mediante el parámetro de configuración
database_disk.disk. #72027 (Tuan Pham Anh). - Soporte para tipos lógicos enteros de Parquet en el lector nativo. #72105 (Arthur Passos).
- Hacer que el formato de salida JSON sea Pretty de forma predeterminada. Añadir la nueva configuración
output_format_json_pretty_printpara controlarlo y activarla de forma predeterminada. #72148 (Pavel Kruglov). - Solicita credenciales de forma interactiva en el navegador si el usuario
defaultrequiere una contraseña. En versiones anteriores, el servidor devolvía HTTP 403; ahora devuelve HTTP 401. #72198 (Alexey Milovidov). - Este PR convierte los tipos de acceso
CREATE_USER,ALTER_USER,DROP_USER,CREATE_ROLE,ALTER_ROLE,DROP_ROLEde globales a parametrizados. Esto significa que ahora puedes otorgar permisos de gestión de acceso con mayor precisión:. #72246 (pufit). - Permitir nombres de segmentos en la configuración del clúster. #72276 (MikhailBurdukov).
- Se admite CAST y ALTER entre tipos JSON con parámetros diferentes. #72303 (Pavel Kruglov).
- Añadir la columna
latest_fail_error_code_nameasystem.mutations. Necesitamos esta columna para introducir una nueva métrica sobre mutaciones atascadas y usarla para crear gráficos de los errores detectados en Cloud y, opcionalmente, añadir una nueva alerta menos ruidosa. #72398 (Miсhael Stetsyuk). - Reduce la cantidad de memoria asignada al adjuntar particiones. #72583 (Konstantin Morozov).
- Hacer que el límite de max_bytes_before_external_sort dependa del consumo total de memoria de la consulta (anteriormente era el número de bytes del bloque de ordenación para un único hilo de ordenación; ahora tiene el mismo significado que
max_bytes_before_external_group_by: es el límite total de memoria de toda la consulta para todos los hilos). Además, se añadió otra configuración para controlar el tamaño del bloque en disco:min_external_sort_block_bytes. #72598 (Azat Khuzhin). - Ignorar las restricciones de memoria en el collector de trazas. #72606 (Azat Khuzhin).
- Se admiten subcolumnas en la clave de ordenación de MergeTree y en los índices de omisión. #72644 (Pavel Kruglov).
- Añade las opciones de configuración del servidor
dictionaries_lazy_loadywait_dictionaries_load_at_startupasystem.server_settings. #72664 (Christoph Wurm). - Añade el ajuste
max_backup_bandwidtha la lista de ajustes que pueden especificarse como parte de las consultasBACKUP/RESTORE. #72665 (Christoph Wurm). - Las réplicas paralelas usaban información histórica sobre la disponibilidad de las réplicas para mejorar su selección, pero no actualizaban el recuento de errores de la réplica cuando la conexión no estaba disponible. Este PR actualiza el recuento de errores de la réplica cuando no está disponible. #72666 (zoomxi).
- Reducción del nivel de log para las partes replicadas recién aparecidas en el motor ReplicatedMergeTree, para ayudar a minimizar el volumen de logs generado en un clúster replicado. #72876 (mor-akamai).
- Muchas nuevas funcionalidades requerirán una mejor encapsulación del código (en lo relativo a los metadatos de Iceberg) y mejores abstracciones de código. #72941 (Daniil Ivanik).
- Se admite la comparación por igualdad para los valores de una columna JSON. #72991 (Pavel Kruglov).
- Mejora del formato de los identificadores con subcolumnas JSON para evitar comillas graves innecesarias. #73085 (Pavel Kruglov).
- Registrar las condiciones
PREWHEREcon el nivelTest. #73116 (Vladimir Cherkasov). - Admite SETTINGS con ENGINE implícito y la combinación de la configuración del engine y de la consulta. #73120 (Raúl Marín).
- Escribe partes de nivel 1 si
optimize_on_insertestá activado. Permite usar varias optimizaciones de consultas conFINALpara las partes escritas recientemente. #73132 (Anton Popov). - Para una consulta como
WHERE a<b AND b<c AND c<5, se pueden generar nuevas condiciones de comparación (a<5 and b<5) para mejorar la capacidad de filtrado. #73164 (Shichao Jin). - Mejora la extracción de expresiones comunes en las disyunciones. Permite simplificar la expresión de filtro resultante incluso si no hay una subexpresión común para todas las disyunciones. Continuación de #71537. #73271 (Dmitry Novik).
- En Storage
S3(Azure)Queue, se permite agregar configuraciones a tablas creadas sin ellas. #73283 (Kseniia Sumarokova). - Clickhouse-client admite Ctrl+D para finalizar la consulta. Permite usar Ctrl+D en lugar de escribir un punto y coma y pulsar Enter. Además, hace que Ctrl+D funcione como Enter en el modo de una sola línea. #73293 (Xiaozhe Yu).
- Se introduce una configuración
least_greatest_legacy_null_behavior(valor predeterminado:false) que controla si las funcionesleastygreatesttratan los argumentosNULLdevolviendoNULLincondicionalmente (si estrue) o ignorándolos (si esfalse). #73344 (Robert Schulze). - Usar solicitudes múltiples a Keeper en el hilo de limpieza de ObjectStorageQueueMetadata. #73357 (Antonio Andelic).
- Un nuevo driver de MongoDB ahora es el predeterminado. Los usuarios que prefieran seguir usando el driver heredado pueden establecer la configuración del servidor
use_legacy_mongodb_integrationentrue. #73359 (Robert Schulze). - Cuando ClickHouse se ejecuta en cgroup, seguiremos recopilando métricas asíncronas de todo el sistema relacionadas con la carga del sistema, la planificación de procesos, la memoria, etc. Pueden aportar señales útiles cuando ClickHouse es el único proceso del host con un alto consumo de recursos. #73369 (Nikita Taranov).
- En el almacenamiento S3Queue, ahora se pueden transferir tablas ordenadas antiguas creadas antes de la versión 24.6 a la nueva estructura con buckets. #73467 (Kseniia Sumarokova).
- Se agrega
system.azure_queue, similar asystem.s3queueya existente. #73477 (Kseniia Sumarokova). - Se corrigió una regresión que provocaba un error al usar configuraciones regionales de intercalación con modificadores. Como ejemplo,
SELECT arrayJoin(['kk 50', 'KK 01', ' KK 2', ' KK 3', 'kk 1', 'x9y99', 'x9y100']) item ORDER BY item ASC COLLATE 'tr-u-kn-true-ka-shiftedahora funciona. #73544 (Robert Schulze). - Admite el tipo Nullable(JSON). #73556 (Pavel Kruglov).
- La función
parseDateTime64(y sus variantes) ahora devuelve resultados correctos para fechas de entrada anteriores a 1970 o posteriores a 2106. Ejemplo:SELECT parseDateTime64InJodaSyntax('2200-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS'). #73594 (zhanglistar). - Soluciona algunos problemas de usabilidad de clickhouse-disks reportados por los usuarios. Cierra #67136. #73616 (Daniil Ivanik).
- Se permite modificar los ajustes de commit en el almacenamiento S3(Azure)Queue. (Los ajustes de commit son: max_processed_files_before_commit, max_processed_rows_before_commit, max_processed_bytes_before_commit, max_processing_time_sec_before_commit). #73635 (Kseniia Sumarokova).
- En el almacenamiento S3(Azure)Queue, se agrega de forma acumulada el progreso entre orígenes para compararlo con la configuración del límite de commit. #73641 (Kseniia Sumarokova).
- Admite las opciones de configuración básicas en la consulta
BACKUP/RESTORE. #73650 (Vitaly Baranov). - Lectura de
output_format_compression_levelen la salida Parquet. #73651 (Arthur Passos). - Añade la lectura de arrow fixed_size_list como Array en lugar de tratarlo como un tipo no compatible. #73654 (Julian Meyers).
- Este PR agrega dos motores de backup:
Memory(guarda los backups en la sesión actual del usuario) yNull(no guarda los backups en ningún sitio):. #73690 (Vitaly Baranov). concurrent_threads_soft_limit_numyconcurrent_threads_soft_limit_num_ratio_to_coresahora se pueden cambiar sin reiniciar el servidor. #73713 (Sergei Trifonov).- Se añadió compatibilidad con tipos numéricos extendidos (Decimal, enteros de gran tamaño) en las funciones formatReadable. #73765 (Raúl Marín).
- Se respeta la coincidencia de columnas sin distinción entre mayúsculas y minúsculas para los campos de columnas de tuplas. Cierra https://github.com/apache/incubator-gluten/issues/8324. #73780 (李扬).
- Compatibilidad con TLS para el protocolo wire de Postgres. #73812 (scanhex12).
- Permitir
LowCardinality(UUID)de forma predeterminada. Esto ha resultado práctico para los clientes de ClickHouse Cloud. #73826 (Alexey Milovidov). - Mejor mensaje durante la instalación. #73827 (Alexey Milovidov).
- Mensaje mejorado sobre el restablecimiento de contraseña para ClickHouse Cloud. #73831 (Alexey Milovidov).
- Mejora del mensaje de error para una tabla File que no puede añadir datos a un archivo. #73832 (Alexey Milovidov).
- Solicitar confirmación cuando un usuario pida accidentalmente mostrar un formato binario (como Native, Parquet, Avro) en la terminal. Esto cierra #59524. #73833 (Alexey Milovidov).
- El tipo de dato
BFloat16ya es apto para producción. #73840 (Alexey Milovidov). - Resalta los espacios finales en los formatos Pretty y Vertical en la terminal para mejorar la claridad. Esto se controla con la configuración
output_format_pretty_highlight_trailing_spaces. Implementación inicial de Braden Burns en #72996. Cierra #71590. #73847 (Alexey Milovidov). clickhouse-clientyclickhouse-localdetectarán automáticamente la compresión de stdin cuando este se redirija desde un archivo. Esto corrige #70865. #73848 (Alexey Milovidov).- Recorta por defecto los nombres de columna demasiado largos en los formatos Pretty. Esto se controla mediante los ajustes
output_format_pretty_max_column_name_width_cut_toyoutput_format_pretty_max_column_name_width_min_chars_to_cut. Esto continúa el trabajo de tanmaydatta en #66502. Esto cierra #65968. #73851 (Alexey Milovidov). - Haga que los formatos
Prettyse vean mejor: combine bloques si no ha pasado mucho tiempo desde la salida del bloque anterior. Esto se controla mediante las nuevas opciones de configuraciónoutput_format_pretty_squash_consecutive_ms(50 ms de forma predeterminada) youtput_format_pretty_squash_max_wait_ms(1000 ms de forma predeterminada). Continuación de #49537. Esto cierra #49153. #73852 (Alexey Milovidov). - Se corrige la correspondencia de tipos para SQLite (los tipos enteros pasan a
int64y los de coma flotante afloat64). #73853 (Joanna Hulboj). - Añade una métrica sobre el número de partes de origen que se están fusionando actualmente. Esto cierra #70809. #73868 (Alexey Milovidov).
- Resalta las columnas en el formato
Verticalsi la salida se envía a un terminal. Esto puede desactivarse con la opciónoutput_format_pretty_color. #73898 (Alexey Milovidov). - Se mejoró la compatibilidad con MySQL hasta el punto de que ahora
mysqlsh(un completo cliente de línea de comandos de MySQL de Oracle) puede conectarse a ClickHouse. Esto es necesario para facilitar las pruebas. #73912 (Alexey Milovidov). - Si el número de registros de salida es mayor que N =
output_format_pretty_max_rows, en lugar de mostrar solo las primeras N filas, recortaremos la tabla de salida por la mitad y mostraremos las primeras N/2 filas y las últimas N/2 filas. Continuación de #64200. Esto cierra #59502. #73929 (Alexey Milovidov). - La función
isIPv4Stringdevolvía true si una dirección IPv4 válida iba seguida de un byte nulo, cuando en este caso debería devolver false. Continuación de #65387. #73946 (Alexey Milovidov). - Hacer que el código de error del MySQL wire protocol sea compatible con MySQL. Continuación de #56831. Cierra #50957. #73948 (Alexey Milovidov).
- Se añade la configuración
validate_enum_literals_in_opearatorspara validar literales de enum en operadores comoINyNOT INcon respecto al tipo enum, y lanzar una excepción si el literal no es un valor enum válido. #73985 (Vladimir Cherkasov). - En Storage
S3(Azure)Queue, hacer commit de todos los archivos (en un único lote definido por la configuración de commit) en una única transacción de Keeper. #73991 (Kseniia Sumarokova). - Deshabilitar la detección de header para UDFs ejecutables y diccionarios (podría provocar Function ‘X’: resultado incorrecto; se esperaban Y filas, se obtuvo Y-1). #73992 (Azat Khuzhin).
- Se añade la opción
distributedaEXPLAIN PLAN.Ahora,EXPLAIN distributed=1 ...agrega el plan remoto a los pasosReadFromParallelRemote*. #73994 (Nikolai Kochetov). - Usa el tipo de retorno correcto para not/xor con argumentos Dynamic. #74013 (Pavel Kruglov).
- Permite cambiar
add_implicit_sign_column_constraint_for_collapsing_enginedespués de crear la tabla. #74014 (Christoph Wurm). - Soporte para subcolumnas en la consulta
selectde una vista materializada. #74030 (Pavel Kruglov). - Los formatos Pretty pueden mostrar campos multilínea dentro de una celda de tabla, lo que mejora la legibilidad. Esto está habilitado de forma predeterminada y se puede controlar mediante la configuración
output_format_pretty_multiline_fields. Continuación del trabajo de Volodyachan en #64094. Esto cierra #56912. #74032 (Alexey Milovidov). - Se admite la optimización
predicate-push-downa nivel del plan de consulta para el pasoMergingAggregated. Mejora el rendimiento de algunas consultas con el nuevo analizador. #74073 (Nikolai Kochetov). - Ahora hay tres formas sencillas de definir un prompt personalizado en
clickhouse-client: 1. mediante el parámetro de línea de comandos--prompt, 2. en el archivo de configuración, mediante la opción<prompt>[...]</prompt>, y 3. también en el archivo de configuración, mediante la opción específica por conexión<connections_credentials><prompt>[...]</prompt></connection_credentials>. #74168 (Christoph Wurm). - Cambiar el código de estado de éxito de la respuesta de escritura remota de Prometheus de 200/OK a 204/NoContent. #74170 (Michael Dempsey).
- Exponer los encabezados HTTP X-ClickHouse a JavaScript en el navegador. Facilita el desarrollo de aplicaciones. #74180 (Alexey Milovidov).
- El formato
JSONEachRowWithProgressincluirá eventos con metadatos, así como totales y extremos. También incluyerows_before_limit_at_leastyrows_before_aggregation. El formato muestra correctamente la excepción si llega después de resultados parciales. El progreso ahora incluye los nanosegundos transcurridos. Al final se emite un último evento de progreso. El progreso durante el tiempo de ejecución de la consulta no se imprimirá con una frecuencia mayor que el valor de la configuracióninteractive_delay. #74181 (Alexey Milovidov). - El reloj de arena girará suavemente en la interfaz de usuario de Play. #74182 (Alexey Milovidov).
- Aunque la respuesta HTTP esté comprimida, envía los paquetes en cuanto se reciban. Esto permite que el navegador reciba paquetes de progreso y datos comprimidos. #74201 (Alexey Milovidov).
- Se añadió la posibilidad de recargar
max_remote_read_network_bandwidth_for_serveymax_remote_write_network_bandwidth_for_serveren caliente, sin reiniciar el servidor. #74206 (Kai Zhu). - Detectar automáticamente una conexión segura al conectarse al puerto 9440 en ClickHouse Client. #74212 (Christoph Wurm).
- Autenticar a los usuarios solo con username para http_handlers (antes también se requería que el usuario introdujera la password). #74221 (Azat Khuzhin).
- La compatibilidad con los lenguajes de consulta alternativos PRQL y KQL se marcó como experimental. Para usarlos, especifique las opciones de configuración
allow_experimental_prql_dialect = 1yallow_experimental_kusto_dialect = 1. #74224 (Robert Schulze). - Se admite la devolución del tipo Enum predeterminado en más funciones de agregación. #74272 (Raúl Marín).
- En
OPTIMIZE TABLE, ahora es posible usar la palabra claveFORCEcomo alternativa a la palabra claveFINALexistente. #74342 (Robert Schulze). - Se añadió una configuración de MergeTree,
materialize_skip_indexes_on_merge, que evita la creación de índices de omisión durante la fusión. Esto permite controlar explícitamente (medianteALTER TABLE [..] MATERIALIZE INDEX [...]) cuándo se crean los índices de omisión. Esto puede ser útil si los índices de omisión son costosos de generar (p. ej., índices de similitud vectorial). #74401 (Robert Schulze). - Admite subcolumnas en expresiones predeterminadas y materializadas. #74403 (Pavel Kruglov).
- Optimizar las peticiones de Keeper en Storage(S3/Azure)Queue. #74410 (Kseniia Sumarokova).
- Se añade la métrica IsServerShuttingDown, necesaria para activar una alerta cuando el apagado del servidor tarda demasiado. #74429 (Miсhael Stetsyuk).
- Se añadieron los nombres de las tablas Iceberg a EXPLAIN. #74485 (alekseev-maksim).
- Usa hasta
1000réplicas paralelas de forma predeterminada. #74504 (Konstantin Bogdanov). - Se proporciona un mensaje de error más claro al usar RECURSIVE CTE con el analizador antiguo. #74523 (Raúl Marín).
- Optimizar las solicitudes a Keeper en Storage(S3/Azure)Queue. #74538 (Kseniia Sumarokova).
- Mejora la reutilización de sesiones HTTP al leer desde un disco S3 (#72401). #74548 (Julian Maicher).
- Muestra mensajes de error detallados en
system.errors. #74574 (Vitaly Baranov). - Se habilitó una lógica de backoff para todos los tipos de tareas replicadas. Esto permitirá reducir el uso de CPU, el uso de memoria y el tamaño de los archivos de registro. Se añadieron las nuevas configuraciones
max_postpone_time_for_failed_replicated_fetches_ms,max_postpone_time_for_failed_replicated_merges_msymax_postpone_time_for_failed_replicated_tasks_ms, que son similares amax_postpone_time_for_failed_mutations_ms. #74576 (MikhailBurdukov). - Cálculo más preciso para la configuración
max_joined_block_size_rowsdel algoritmo JOINparallel_hash. Ayuda a evitar un mayor consumo de memoria en comparación con el algoritmohash. #74630 (Nikita Taranov). - Se añadió soporte para la opción de configuración
dfs.client.use.datanode.hostnamede libhdfs3. #74635 (Mikhail Tiukavkin). - Corrige Invalid: el códec ‘snappy’ no permite establecer un nivel de compresión. #74659 (Arthur Passos).
- Permite usar una contraseña para la comunicación del cliente con clickhouse-keeper. Esta funcionalidad no es muy útil si se especifica una configuración SSL adecuada para el servidor y el cliente, pero aun así puede resultar útil en algunos casos. La contraseña no puede tener más de 16 caracteres. No está relacionado con el modelo de autenticación de Keeper. #74673 (alesapin).
- Permite usar rutas de blobs para calcular sumas de comprobación al crear una copia de seguridad. #74729 (Vitaly Baranov).
- Use el sharding dinámico para JOIN si la clave de JOIN es un prefijo de la PK en ambas partes. Esta optimización se activa con la configuración
query_plan_join_shard_by_pk_ranges(deshabilitada de forma predeterminada). #74733 (Nikolai Kochetov). - Se agregó un código de error para el recargador de configuración. #74746 (Garrett Thomas).
- Se añadió compatibilidad con direcciones IPv6 en las funciones de tabla y los motores de MySQL y PostgreSQL. #74796 (Mikhail Koviazin).
- Los parámetros del códec Gorilla ahora siempre se guardarán en los metadatos de la tabla, en el archivo .sql. Esto cierra: #70072. #74814 (Nikita Mikhaylov).
- Implementa la optimización de cortocircuito para
divideDecimal. Soluciona #74280. #74843 (Kevin Mingtarja). - Mejora del rendimiento de solicitudes múltiples de mayor tamaño en Keeper. #74849 (Antonio Andelic).
- Ahora se pueden especificar usuarios en los scripts de inicio. #74894 (pufit).
- Recuperar partes en paralelo con ALTER TABLE FETCH PARTITION (el tamaño del grupo de hilos se controla con
max_fetch_partition_thread_pool_size). #74978 (Azat Khuzhin). - Se añadió una columna de identificador de consulta a
system.query_cache(incidencia #68205). #74982 (NamNguyenHoai). - Se volvió a habilitar el protocolo SSH. Se corrigieron algunas vulnerabilidades críticas, por lo que ya no es posible usar un paginador personalizado ni especificar
server-logs-file. De forma predeterminada, se deshabilitó la posibilidad de pasar opciones de client mediante variables de entorno (sigue siendo posible mediantessh-server.enable_client_options_passingen config.xml). Se añadió compatibilidad con la tabla de progreso, la cancelación de consultas, el autocompletado, el progreso de los eventos de perfil, stdin y la opciónsend_logs_level. Esto cierra: #74340. #74989 (Nikita Mikhaylov). - Se corrige el formateo de las excepciones mediante un formato personalizado si aparecen durante la interpretación de la consulta. En versiones anteriores, las excepciones se formateaban con el formato predeterminado en lugar del formato especificado en la consulta. Esto soluciona #55422. #74994 (Alexey Milovidov).
- Se implementaron mejoras en el análisis sintáctico (análisis del ID de secuencia: se añadió la capacidad de analizar identificadores de secuencia en archivos de manifiesto; y análisis de metadatos de Avro: se rediseñó el analizador de metadatos de Avro para que sea fácilmente extensible de cara a futuras mejoras). #75010 (Daniil Ivanik).
- Se permite cancelar consultas
ALTER TABLE ... FREEZE ...conKILL QUERYy por tiempo de espera (max_execution_time). #75016 (Kirill). - Añadir compatibilidad con
groupUniqArrayArrayMapcomoSimpleAggregateFunction. #75034 (Miel Donkers). - Añade compatibilidad con sentencias preparadas en el protocolo wire de Postgres. #75035 (scanhex12).
- Oculta la configuración de las credenciales del catálogo en el motor de base de datos
Iceberg. Cierra #74559. #75080 (Kseniia Sumarokova). - Se añadieron a BuzzHouse algunas funcionalidades que faltaban: los operadores
ILIKEyREGEXP,<=>eIS NOT DISTINCT FROM. #75168 (Pedro Ferreira). - La configuración
min_chunk_bytes_for_parallel_parsingya no puede establecerse en cero. Esto corrige: #71110. #75239 (Nikita Mikhaylov). intExp2/intExp10: Se define el comportamiento en casos no definidos: devuelven 0 para un argumento demasiado pequeño,18446744073709551615para un argumento demasiado grande, y lanzan una excepción si esnan. #75312 (Vitaly Baranov).- Compatibilidad nativa con
s3.endpointdesde la configuración del catálogo enDatabaseIceberg. Cierra #74558. #75375 (Kseniia Sumarokova). - No fallar en silencio si el usuario que ejecuta
SYSTEM DROP REPLICAno tiene permisos suficientes. #75377 (Bharat Nallan). - Se añade un ProfileEvent sobre la cantidad de veces que alguno de los logs del sistema falló al vaciarse. #75466 (Alexey Milovidov).
- Se añade comprobación y logging para el descifrado y la descompresión. #75471 (Vitaly Baranov).
- Se añadió compatibilidad con el signo micro (U+00B5) en la función
parseTimeDelta. Ahora, tanto el signo micro (U+00B5) como la letra griega mu (U+03BC) se reconocen como representaciones válidas de microsegundos, lo que hace que el comportamiento de ClickHouse coincida con la implementación de Go (ver time.go y time/format.go). #75472 (Vitaly Orlov). - Sustituye la configuración del servidor (
send_settings_to_client) por la configuración de cliente (apply_settings_from_server), que controla si el código del lado del cliente (p. ej., el análisis de datos de INSERT y el formateo de la salida de la consulta) debe usar la configuración del archivousers.xmldel servidor y del perfil de usuario. De lo contrario, solo se usan la configuración de la línea de comandos del cliente, la sesión y la consulta. Ten en cuenta que esto solo se aplica al cliente nativo (no, por ejemplo, a HTTP) y no afecta a la mayor parte del procesamiento de consultas (que ocurre en el servidor). #75478 (Michael Kolupaev). - Mejora de Keeper: se desactiva el cálculo del digest al hacer commit en el almacenamiento en memoria para mejorar el rendimiento. Puede habilitarse con la configuración
keeper_server.digest_enabled_on_commit. El digest se sigue calculando durante el preprocesamiento de solicitudes. #75490 (Antonio Andelic). - Realizar push down de la expresión de filtro de JOIN ON cuando sea posible. #75536 (Vladimir Cherkasov).
- Mejores mensajes de error para errores de sintaxis. Anteriormente, si la consulta era demasiado grande y el token cuya longitud superaba el límite era un literal de cadena muy largo, el mensaje con la causa se perdía entre dos ejemplos de ese token larguísimo. Se corrige el problema por el que una consulta con UTF-8 se cortaba incorrectamente en el mensaje de error. Se corrige el uso excesivo de comillas en fragmentos de consultas. Esto cierra #75473. #75561 (Alexey Milovidov).
- Añadir eventos de perfil al almacenamiento
S3(Azure)Queue. #75618 (Kseniia Sumarokova). - Deshabilitar el envío de ajustes del servidor al client (
send_settings_to_client=false) por motivos de compatibilidad (Esta funcionalidad se volverá a implementar más adelante como configuración de cliente para mejorar la usabilidad). #75648 (Michael Kolupaev). - Agrega una configuración
memory_worker_correct_memory_trackerpara permitir la corrección del monitor interno de memoria con información de una fuente distinta, leída periódicamente en el hilo en segundo plano. #75714 (Antonio Andelic). - Usar el analizador en PrometheusRemoteReadProtocol. #75729 (Dmitry Novik).
- Tenemos soporte para los tipos de métricas gauge/counter. Sin embargo, no bastan para algunas métricas (p. ej., los tiempos de respuesta de las solicitudes a Keeper), por lo que es necesario añadir soporte para el tipo de métrica de histograma. La interfaz sigue de cerca la del client de Prometheus: solo hay que llamar a
observe(value)para incrementar el contador del bucket correspondiente al valor. Las métricas de histograma se exponen a través de system.histogram_metrics. #75736 (Miсhael Stetsyuk). - Añadir la columna
normalized_query_hashensystem.processes. Nota: aunque puede calcularse fácilmente en el momento con la funciónnormalizedQueryHash, esto es necesario para preparar cambios posteriores. #75756 (Alexey Milovidov). - Consultar
system.tablesno provocará una excepción, incluso si existe una tablaMergecreada en una base de datos que ya no existe. Se elimina el métodogetTotalRowsde las tablasHive, porque no permitimos que realice tareas complejas. #75772 (Alexey Milovidov). - La interfaz web ahora cuenta con navegación interactiva por las bases de datos. #75777 (Alexey Milovidov).
- Permite combinar discos de solo lectura y de lectura-escritura en una política de almacenamiento (como varios volúmenes o varios discos). Esto permite leer datos de todo el volumen, mientras que las inserciones priorizarán el disco escribible (es decir, una política de almacenamiento Copy-on-Write). #75862 (Azat Khuzhin).
- Eliminar trace_id del ORDER BY por defecto para system.opentelemetry_span_log. #75907 (Azat Khuzhin).
- El cifrado (atributo XML
encrypted_by) ahora puede aplicarse a cualquier archivo de configuración (config.xml, users.xml, archivos de configuración anidados). Anteriormente, solo funcionaba en el archivo config.xml de nivel superior. #75911 (Mikhail Gorshkov). - Se almacenan start_time/end_time de las copias de seguridad con precisión de microsegundos. #75929 (Aleksandr Musorin).
- Se añade la métrica
MemoryTrackingUncorrected, que muestra el valor del rastreador interno de memoria global sin corregir por RSS. #75935 (Antonio Andelic). - Calcular de forma diferida el tamaño de las columnas y los índices en MergeTree. #75938 (Pavel Kruglov).
- Convierte join en una subconsulta in si la columna de salida está asociada a la tabla de la izquierda; primero hace falta un paso de unicidad, por lo que está deshabilitado de forma predeterminada hasta que ese paso se añada más adelante. #75942 (Shichao Jin).
- Se añadió un ajuste del servidor
throw_on_unknown_workloadque permite elegir el comportamiento ante una consulta con la configuraciónworkloadestablecida en un valor desconocido: permitir un acceso ilimitado (predeterminado) o generar un errorRESOURCE_ACCESS_DENIED. Es útil para obligar a que todas las consultas usen la planificación de cargas de trabajo. #75999 (Sergei Trifonov). - El nuevo motor de tabla Kafka experimental ahora respeta por completo las feature flags de Keeper. #76004 (János Benjamin Antal).
- No reescriba las subcolumnas como getSubcolumn en ARRAY JOIN si no es necesario. #76018 (Pavel Kruglov).
- Reintento de errores de coordinación al cargar tablas. #76020 (Alexander Tokmakov).
- Se mejora la tabla
system.warningsy se añaden algunos mensajes de advertencia dinámicos que pueden agregarse, actualizarse o eliminarse. #76029 (Bharat Nallan). - Se admite el vaciado de logs individuales en SYSTEM FLUSH LOGS. #76132 (Raúl Marín).
- Se mejoró la página del servidor
/binary. Ahora se usa la curva de Hilbert en lugar de la curva de Morton. Se muestran 512 MB de direcciones en el cuadrado, lo que lo aprovecha mejor (en versiones anteriores, las direcciones solo ocupaban la mitad del cuadrado). Las direcciones se colorean según el nombre de la biblioteca más cercana, en lugar del nombre de la función. Se permite desplazarse un poco más fuera del área. #76192 (Alexey Milovidov). - Este PR impide ejecutar una consulta
ALTER USER user1 ADD PROFILES a, DROP ALL PROFILESporque, en el orden establecido, todas las operacionesDROPdeben ir primero. #76242 (pufit). - Varias mejoras para SYNC REPLICA (mejores mensajes de error, mejores pruebas, comprobaciones básicas). #76307 (Azat Khuzhin).
- Reintento de consultas ON CLUSTER en caso de TOO_MANY_SIMULTANEOUS_QUERIES. #76352 (Patrick Galbraith).
- Se cambió el valor predeterminado de
output_format_pretty_max_rowsde 10000 a 1000. Creo que así es más fácil de usar. #76407 (Alexey Milovidov). - Compatibilidad con la actualización en tablas MergeTree de solo lectura. #76467 (Alexey Milovidov).
- Usar el fallback correcto cuando la copia multiparte en S3 falle durante la copia de seguridad con Access Denied. La copia multiparte puede generar el error Access Denied cuando la copia de seguridad se realiza entre buckets con credenciales diferentes. #76515 (Antonio Andelic).
- Apagado más rápido de los servidores de ClickHouse (se elimina el retraso de 2,5 s). #76550 (Azat Khuzhin).
- Se añade query_id a system.errors. Incidencia relacionada #75815. #76581 (Vladimir Baikov).
- Se actualizó librdkafka a la versión 2.8.0 y se mejoró la secuencia de apagado de las tablas de Kafka, lo que reduce los retrasos al eliminar tablas y reiniciar el servidor.
engine=Kafkaya no sale explícitamente del grupo de consumidores cuando se elimina una tabla. En su lugar, el consumidor permanece en el grupo hasta que se elimina automáticamente trassession_timeout_ms(valor predeterminado: 45 segundos) de inactividad. #76621 (filimonov). - Se corrige la validación de la configuración de las solicitudes a S3. #76658 (Vitaly Baranov).
- Se evita la asignación excesiva en ReadBufferFromS3 y otros búferes de lectura remota, y su consumo de memoria se reduce a la mitad. #76692 (Sema Checherinda).
- Se admite leer el tipo JSON y las subcolumnas desde View. #76903 (Pavel Kruglov).
- Se añade compatibilidad para convertir
UInt128a IPv6. Esto permite la operaciónbitAndy las operaciones aritméticas con IPv6, así como la conversión de vuelta a IPv6. Cierra #76752. Esto también permite convertir de vuelta a IPv6 el resultado de la operaciónbitAndsobre IPv6. Véase: https://github.com/ClickHouse/ClickHouse/pull/57707. #76928 (Muzammil Abdul Rehman). - Las system tables como
server_settingsosettingstienen una columna de valordefault, lo cual es conveniente. Solomerge_tree_settingsyreplicated_merge_tree_settingsno tienen esa columna habilitada. #76942 (Diego Nieto). - De forma predeterminada, no se analizan los valores especiales de Bool en formatos de texto dentro del tipo Variant. Puede habilitarse mediante la configuración
allow_special_bool_values_inside_variant. #76974 (Pavel Kruglov). - Se admite la configuración del tiempo de espera por tarea para consultas de baja prioridad tanto a nivel de sesión como de servidor. #77013 (VicoWu).
- Se agregó
ProfileEvents::QueryPreempted, que sigue la misma lógica queCurrentMetrics::QueryPreempted. #77015 (VicoWu). - Anteriormente, una base de datos replicada podía registrar en los logs las credenciales especificadas en una consulta. Este comportamiento se ha corregido. Esto cierra: #77123. #77133 (Nikita Mikhaylov).
- Actualiza zstd de la versión 1.5.5 a la 1.5.7, que aporta bastantes mejoras de rendimiento. #77137 (Pradeep Chhetri).
- Se permite ALTER TABLE DROP PARTITION para el disco plain_rewritable. #77138 (Julia Kartseva).
- Se añade la posibilidad de introducir una espera aleatoria de hasta 500 ms, independientemente del tamaño de las partes, antes de ejecutar merges/mutations en caso de replicación zero-copy. #77165 (Alexey Katsman).
- Se admite el renombrado atómico al usar
TRUNCATEconINTO OUTFILE. Resuelve #70323. #77181 (Onkar Deshpande). - Usa FixedString para los tipos CHARACTER, CHAR y BPCHAR de PostgreSQL. #77304 (Pablo Marcos).
- Permite especificar explícitamente el archivo de metadatos que se leerá para Iceberg con la opción de storage/table function
iceberg_metadata_file_path. Corrige #47412. #77318 (alesapin). - Se admite el uso de un disco remoto para que las bases de datos almacenen los archivos de metadatos. #77365 (Tuan Pham Anh).
- Se implementa la comparación para valores del tipo de datos JSON. Ahora los objetos JSON pueden compararse igual que los Map. #77397 (Pavel Kruglov).
- Se revirtió el cambio. #77399 (Yarik Briukhovetskyi).
- La configuración de copia de seguridad/restauración
allow_s3_native_copyahora admite tres valores posibles: -False- no se usará la copia nativa de S3; -True(valor predeterminado anterior) - ClickHouse intentará primero la copia nativa de S3; si falla, recurrirá al enfoque de lectura+escritura; -'auto'(nuevo valor predeterminado) - ClickHouse comparará primero las credenciales del origen y el destino. Si son las mismas, ClickHouse intentará la copia nativa de S3 y, si es necesario, recurrirá al enfoque de lectura+escritura. Si son diferentes, ClickHouse irá directamente al enfoque de lectura+escritura. #77401 (Vitaly Baranov). - Se admite ALTER TABLE … ATTACH|DETACH|MOVE|REPLACE PARTITION para el disco plain_rewritable. #77406 (Julia Kartseva).
- Se revierte la caché del índice de omisión. #77447 (Nikita Mikhaylov).
- Reduce el uso de memoria durante el prefetch de la columna JSON en partes Wide. #77640 (Pavel Kruglov).
- Se admite el uso de tokens de sesión de AWS y credenciales de entorno en delta kernel para el motor de tabla DeltaLake. #77661 (Kseniia Sumarokova).
- Compatibilidad con parámetros de consulta en la configuración
additional_table_filters. Después del cambio, la siguiente consulta se ejecutaría correctamente:. #77680 (wxybear). - Las funciones definidas por el usuario (UDFs) ahora pueden marcarse como deterministas mediante una nueva etiqueta en su definición XML. Además, la caché de consultas ahora comprueba si las UDFs llamadas dentro de una consulta son deterministas. Si es así, almacena en caché el resultado de la consulta. (Issue #59988). #77769 (Jimmy Aguilar Mena).
- Se añadió la validación de los parámetros del motor de tabla Buffer. #77840 (Pervakov Grigorii).
- Se añade la configuración
enable_hdfs_preadpara activar o desactivar pread en HDFS. #77885 (kevinyhzou). - Se añaden eventos de perfil para el número de solicitudes ‘multi’ de lectura y escritura de ZooKeeper. #77888 (JackyWoo).
- Permitir crear e insertar en una tabla temporal cuando disable_insertion_and_mutation está activado. #77901 (Xu Jia).
- Reducir max_insert_delayed_streams_for_parallel_write (hasta 100). #77919 (Azat Khuzhin).
- Se añade la posibilidad de configurar el número de columnas que las fusiones pueden volcar en paralelo mediante
max_merge_delayed_streams_for_parallel_write(esto debería reducir aproximadamente 25 veces el uso de memoria de las fusiones verticales a S3). #77922 (Azat Khuzhin). - Se corrige el análisis del año en la sintaxis Joda en casos como ‘yyy’. #77973 (李扬).
- La incorporación de partes de tablas MergeTree se realizará en el orden de sus bloques, lo que es importante para algoritmos especiales de fusión, como ReplacingMergeTree. Esto cierra #71009. #77976 (Alexey Milovidov).
- Las reglas de enmascaramiento de consultas ahora pueden lanzar un LOGICAL_ERROR si se produce una coincidencia. Esto ayudará a comprobar si una contraseña predefinida se está filtrando en algún punto de los logs. #78094 (Nikita Mikhaylov).
- Se añadió la columna
index_length_columnainformation_schema.tablespara mejorar la compatibilidad con MySQL. #78119 (Paweł Zakrzewski). - Se introducen dos nuevas métricas:
TotalMergeFailuresyNonAbortedMergeFailures. Estas métricas son necesarias para detectar los casos en que fallan demasiadas operaciones de merge en un período corto. #78150 (Miсhael Stetsyuk). - Corrige el análisis incorrecto de la URI de S3 cuando no se especifica la clave en path-style. #78185 (Arthur Passos).
- Se corrigieron los valores incorrectos de las métricas asíncronas
BlockActiveTime,BlockDiscardTime,BlockWriteTime,BlockQueueTimeyBlockReadTime(antes del cambio, se informaba incorrectamente 1 segundo como 0,001). #78211 (filimonov). - Se respeta el límite de
loading_retriespara los errores durante el envío a la vista materializada de StorageS3(Azure)Queue. Antes, esos errores se reintentaban indefinidamente. #78313 (Kseniia Sumarokova). - En StorageDeltaLake con la implementación de delta-kernel-rs, se mejora el rendimiento y la barra de progreso. #78368 (Kseniia Sumarokova).
- El índice de similitud vectorial podía asignar hasta 2 veces más memoria principal de la necesaria. Esta corrección replantea la estrategia de asignación de memoria, reduce el consumo de memoria y mejora la eficacia de la caché del índice de similitud vectorial. (issue #78056). #78394 (Shankar Iyer).
- Se introduce la configuración
schema_typepara la tablasystem.metric_logcon el tipo de esquema. Hay tres esquemas permitidos:wide— el esquema actual, con cada métrica/evento en una columna independiente (más eficaz para leer columnas por separado);transposed— similar asystem.asynchronous_metric_log, donde las métricas/eventos se almacenan como filas; y, el más interesante,transposed_with_wide_view— crea una tabla subyacente con esquematransposed, pero también introduce una vista con esquemawideque traduce las consultas a la tabla subyacente. Entransposed_with_wide_view, la vista no admite resolución inferior a un segundo;event_time_microsecondses solo un alias para mantener la compatibilidad con versiones anteriores. #78412 (alesapin). - Admite
include,from_envyfrom_zkpara discos del runtime. Cierra #78177. #78470 (Kseniia Sumarokova). - Añade varias formas prácticas de resolver el archivo metadata.json en la raíz en la función de tabla y el motor de Iceberg. Cierra #78455. #78475 (Daniil Ivanik).
- Compatibilidad con la poda de particiones en Delta Lake. #78486 (Kseniia Sumarokova).
- Se admite la autenticación basada en contraseña en el protocolo SSH de ClickHouse. #78586 (Nikita Mikhaylov).
- Añadir una advertencia dinámica a la tabla
system.warningspara mutaciones de larga ejecución. #78658 (Bharat Nallan). - Descarta conexiones si la CPU está muy sobrecargada. La decisión se toma en función de la relación entre el tiempo de espera (
OSCPUWaitMicroseconds) y el tiempo de actividad (OSCPUVirtualTimeMicroseconds). La consulta se descarta con cierta probabilidad cuando esta relación se encuentra entremin_os_cpu_wait_time_ratio_to_drop_connectionymax_os_cpu_wait_time_ratio_to_drop_connection. #78778 (Alexey Katsman). - Permitir un valor vacío en el particionado de Hive. #78816 (Arthur Passos).
- Se corrige la coerción de tipos de la cláusula
INparaBFloat16(es decir,SELECT toBFloat16(1) IN [1, 2, 3];ahora devuelve1). Resuelve #78754. #78839 (Raufs Dunamalijevs). - No comprobar las partes en otros discos de MergeTree si se ha establecido
disk=. #78855 (Azat Khuzhin). - Convertir en canónicos los tipos de datos de
used_data_type_familiesensystem.query_log. #78972 (Kseniia Sumarokova).
Corrección de errores (mal funcionamiento visible para el usuario en una versión estable oficial)
- Se corrige un problema que impedía crear un nodo SEQUENTIAL con keeper-client. #64177 (Duc Canh Le).
- Corrige la resolución de identificadores desde ámbitos externos. Permite usar alias para expresiones en la cláusula WITH. Corrige #58994. Corrige #62946. Corrige #63239. Corrige #65233. Corrige #71659. Corrige #71828. Corrige #68749. #66143 (Dmitry Novik).
- Se corrigió el recuento incorrecto de caracteres en PositionImpl::vectorVector. #71003 (思维).
- Se corrige la monotonicidad de la función negate. En versiones anteriores, la consulta
select * from a where -x = -42;, cuandoxes la clave primaria, podía devolver un resultado incorrecto. #71440 (Michael Kolupaev). - Las operaciones
RESTOREpara las entidades de acceso requerían más permisos de los necesarios debido a revocaciones parciales que no se tenían en cuenta. Este PR corrige el problema. Cierra #71853. #71958 (pufit). - Evita que se produzca una pausa después de
ALTER TABLE REPLACE/MOVE PARTITION FROM/TO TABLE. Obtiene la configuración correcta para la programación de tareas en segundo plano. #72024 (Aleksei Filatov). - Se corrige el manejo de las tuplas vacías en arrayIntersect. Esto corrige #72578. #72581 (Amos Bird).
- Se corrigió el manejo de las tuplas vacías en algunos formatos de entrada y salida (p. ej., Parquet, Arrow). #72616 (Michael Kolupaev).
- Las sentencias GRANT SELECT/INSERT a nivel de columna sobre bases de datos o tablas con comodines ahora arrojan un error. #72646 (Johann Gan).
- Se corrige el problema por el que un usuario no puede ejecutar
REVOKE ALL ON *.*debido a privilegios implícitos en la entidad de acceso de destino. #72872 (pufit). - Se corrige un atasco al procesar el lote pendiente para
INSERTdistribuido asíncrono (debido, por ejemplo, aNo such file or directory). #72939 (Azat Khuzhin). - Se añade compatibilidad con tokens SAS de Azure. #72959 (Azat Khuzhin).
- Corrige el formato de las zonas horarias positivas en la función escalar formatDateTime. #73091 (ollidraese).
- Se corrige para reflejar correctamente el puerto de origen cuando la conexión se realiza a través de PROXYv1 y
auth_use_forwarded_addressestá habilitado; anteriormente se usaba incorrectamente el puerto del proxy. Se añade la funcióncurrentQueryID(). #73095 (Yakov Olkhovskiy). - Propagar la configuración de formato a NativeWriter en TCPHandler para que ajustes como
output_format_native_write_json_as_stringse apliquen correctamente. #73179 (Pavel Kruglov). - Se corrige la lectura de las subcolumnas de subobjetos JSON con un prefijo incorrecto. #73182 (Pavel Kruglov).
- Se corrige un bloqueo en StorageObjectStorageQueue. #73274 (Kseniia Sumarokova).
- Se corrige un fallo poco frecuente en una vista materializada actualizable durante el apagado del servidor. #73323 (Michael Kolupaev).
- El placeholder
%fde la funciónformatDateTimeahora genera invariablemente seis dígitos (de subsegundos). Esto hace que el comportamiento sea compatible con la funciónDATE_FORMATde MySQL. El comportamiento anterior se puede restaurar usando la configuraciónformatdatetime_f_prints_scale_number_of_digits = 1. #73324 (ollidraese). - Se mejoró la conversión de fecha y hora durante el análisis de índices al aplicar un comportamiento saturado a las conversiones implícitas de Date a DateTime. Esto resuelve posibles imprecisiones en el análisis de índices causadas por las limitaciones del rango de fecha y hora. Corrige #73307. También corrige la conversión explícita
toDateTimecuandodate_time_overflow_behavior = 'ignore', que es el valor predeterminado. #73326 (Amos Bird). - Se corrigió el filtrado por la columna
_etagal leer del almacenamientos3y de la función de tabla. #73353 (Anton Popov). - Se corrigió el error
Not-ready Set is passed as the second argument for function 'in'cuando se usaIN (subquery)en la expresiónJOIN ON, con el analizador antiguo. #73382 (Nikolai Kochetov). - Corrección en la preparación para
squashinde las columnas Dynamic y JSON. Anteriormente, en algunos casos se podían insertar nuevos tipos en el variant compartido o en los datos compartidos incluso cuando no se alcanzaba el límite de tipos/rutas. #73388 (Pavel Kruglov). - Comprobar tamaños corruptos al decodificar tipos en binario para evitar asignaciones excesivamente grandes. #73390 (Pavel Kruglov).
- Se corrigió un error lógico al leer de un clúster con una sola réplica y las réplicas paralelas habilitadas. #73403 (Michael Kolupaev).
- Se corrigió ObjectStorageQueue con ZooKeeper y versiones anteriores de Keeper. #73420 (Antonio Andelic).
- Implementa una corrección necesaria para habilitar de forma predeterminada el particionado de Hive. #73479 (Yarik Briukhovetskyi).
- Se corrige una condición de carrera al crear un índice vectorial de similitud. #73517 (Antonio Andelic).
- Corrige un segfault cuando el origen del diccionario contiene una función con datos erróneos. #73535 (Yarik Briukhovetskyi).
- Corrige los reintentos de una operación
insertfallida en el almacenamiento S3(Azure)Queue. Cierra #70951. #73546 (Kseniia Sumarokova). - Se corrigió un error en la función
tupleElementque puede aparecer en algunos casos en tuplas con elementosLowCardinalityy con la configuraciónoptimize_functions_to_subcolumnshabilitada. #73548 (Anton Popov). - Se corrige el análisis de un enum glob seguido de uno de rango. Corrige #73473. #73569 (Konstantin Bogdanov).
- Se corrigió un problema por el que parallel_replicas_for_non_replicated_merge_tree se ignoraba en las subconsultas de tablas no replicadas. #73584 (Igor Nikonov).
- Corrección para
std::logical_errorlanzado cuando no se puede programar una tarea. Detectado en pruebas de estrés. Ejemplo de stacktrace:2024.12.19 02:05:46.171833 [ 18190 ] {01f0daba-d3cc-4898-9e0e-c2c263306427} <Fatal> : Logical error: 'std::exception. Code: 1001, type: std::__1::future_error, e.what() = The associated promise has been destructed prior to the associated state becoming ready. (version 25.1.1.18724), Stack trace:.#73629 (Alexander Gololobov). - No se interpretan las consultas en
EXPLAIN SYNTAXpara evitar errores lógicos debidos a una etapa de procesamiento incorrecta en las consultas distribuidas. Corrige #65205. #73634 (Dmitry Novik). - Corrige una posible inconsistencia de datos en la columna Dynamic. Soluciona un posible error lógico:
Nested columns sizes are inconsistent with local_discriminators column size. #73644 (Pavel Kruglov). - Se corrigió
NOT_FOUND_COLUMN_IN_BLOCKen consultas conFINALySAMPLE. Se corrigió un resultado incorrecto en consultasSELECTconFINALdeCollapsingMergeTree, y se habilitaron las optimizaciones deFINAL. #73682 (Anton Popov). - Se corrige un bloqueo en LIMIT BY COLUMNS. #73686 (Raúl Marín).
- Se corrige el error que se producía al forzar el uso de la proyección normal cuando la consulta era exactamente igual a la proyección definida, pero la proyección no se seleccionaba y, por tanto, se mostraba un error. #73700 (Shichao Jin).
- Se corrigió la deserialización de la estructura de Dynamic/Object. Podía provocar excepciones CANNOT_READ_ALL_DATA. #73767 (Pavel Kruglov).
- Omitir
metadata_version.txtdurante la restauración de partes desde una copia de seguridad. #73768 (Vitaly Baranov). - Se corrige #73737. #73775 (zhanglistar).
- Corrige #72078 ( se había roto la compatibilidad con S3 Express ). #73777 (Sameer Tamsekar).
- Permitir la combinación de filas con valores no válidos en la columna de signo de las tablas CollapsingMergeTree. #73864 (Christoph Wurm).
- Se corrige el siguiente error
Row 1: ────── hostname: c-test-wy-37-server-nlkyjyb-0.c-test-wy-37-server-headless.ns-test-wy-37.svc.cluster.local type: ExceptionWhileProcessing event_date: 2024-12-23 event_time: 2024-12-23 16:21:19 event_time_microseconds: 2024-12-23 16:21:19.824624 query_start_time: 2024-12-23 16:21:19 query_start_time_microseconds: 2024-12-23 16:21:19.747142 query_duration_ms: 77 read_rows: 1 read_bytes: 134 written_rows: 0 written_bytes: 0 result_rows: 0 result_bytes: 0 memory_usage: 7824 current_database: default query: CREATE DATABASE db0 formatted_query: normalized_query_hash: 7820917191074023511 -- 7.82 quintillion query_kind: Create databases: ['db0'] tables: [] columns: [] partitions: [] projections: [] views: [] exception_code: 170 exception: Code: 170. DB::Exception: Bad get: has Null, requested Int64: While executing DDLOnClusterQueryStatus. (BAD_GET) (version 25.1.1.19134 (official build)) stack_trace: 0. ./build_docker/./src/Common/Exception.cpp:107: DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x000000000da5e53b 1. DB::Exception::Exception(PreformattedMessage&&, int) @ 0x00000000088aca4c 2. DB::Exception::Exception<std::basic_string_view<char, std::char_traits<char>>, std::basic_string_view<char, std::char_traits<char>>>(int, FormatStringHelperImpl<std::type_identity<std::basic_string_view<char, std::char_traits<char>>>::type, std::type_identity<std::basic_string_view<char, std::char_traits<char>>>::type>, std::basic_string_view<char, std::char_traits<char>>&&, std::basic_string_view<char, std::char_traits<char>>&&) @ 0x00000000088bae8b 3. auto& DB::Field::safeGet<long>() & @ 0x0000000008a3c748 4. ./src/Core/Field.h:484: DB::ColumnVector<long>::insert(DB::Field const&) @ 0x0000000012e44c0f 5. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:53: DB::DDLOnClusterQueryStatusSource::generateChunkWithUnfinishedHosts() const @ 0x0000000012a40214 6. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:104: DB::DDLOnClusterQueryStatusSource::handleTimeoutExceeded() @ 0x0000000012a41640 7. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:109: DB::DDLOnClusterQueryStatusSource::stopWaitingOfflineHosts() @ 0x0000000012a41be9 8. ./build_docker/./src/Interpreters/DistributedQueryStatusSource.cpp:182: DB::DistributedQueryStatusSource::generate() @ 0x0000000011feb3bf 9. ./build_docker/./src/Processors/ISource.cpp:139: DB::ISource::tryGenerate() @ 0x0000000014148f5b 10. ./build_docker/./src/Processors/ISource.cpp:108: DB::ISource::work() @ 0x0000000014148c47 11. ./build_docker/./src/Processors/Executors/ExecutionThreadContext.cpp:49: DB::ExecutionThreadContext::executeTask() @ 0x0000000014164fc7 12. ./build_docker/./src/Processors/Executors/PipelineExecutor.cpp:290: DB::PipelineExecutor::executeStepImpl(unsigned long, std::atomic<bool>*) @ 0x00000000141577e5. #73876 (Tuan Pham Anh). - Corrige fallos ocasionales al comparar tipos
map()debido a la posibilidad de crearMapsin los nombres explícitos (‘keys’,‘values’) de su tupla anidada. #73878 (Yakov Olkhovskiy). - Se ignoran las funciones de ventana durante la resolución de la cláusula GROUP BY ALL. Se corrige #73501. #73916 (Dmitry Novik).
- Propagar correctamente la configuración del Native format en la comunicación client-server. #73924 (Pavel Kruglov).
- Corregir los privilegios implícitos (antes funcionaban como un comodín). #73932 (Azat Khuzhin).
- Se corrige el uso elevado de memoria durante la creación de Maps anidados. #73982 (Pavel Kruglov).
- Se corrige el análisis de JSON anidado con claves vacías. #73993 (Pavel Kruglov).
- Corrección: puede que no se añada un alias a la proyección si otro alias hace referencia a él y se selecciona en orden inverso. #74033 (Yakov Olkhovskiy).
- Un disco que usa los metadatos plain_rewritable puede compartirse entre varias instancias del servidor. Es normal que una instancia lea un objeto de metadatos mientras otra lo modifica. Los errores de objeto no encontrado se ignoran durante la inicialización de plain_rewritable con Azure Storage, de forma similar al comportamiento implementado para S3. #74059 (Julia Kartseva).
- Se corrigió el comportamiento de
anyyanyLastcon tipos enum y una tabla vacía. #74061 (Joanna Hulboj). - Corrige el caso en el que el usuario especifica argumentos con nombre en el motor de tabla Kafka. #74064 (Yarik Briukhovetskyi).
- Se corrigió la modificación de la configuración del Storage
S3Queuepara pasar de usar el prefijo “s3queue_” a no usarlo, y viceversa. #74075 (Kseniia Sumarokova). - Añade una configuración
allow_push_predicate_ast_for_distributed_subqueries. Esto añade push-down de predicados basado en AST para consultas distribuidas con el analizador. Esta es una solución temporal que usamos hasta que se admitan las consultas distribuidas con serialización del plan de consulta. Cierra #66878 #69472 #65638 #68030 #73718. #74085 (Nikolai Kochetov). - Corrige un problema por el que, después de #73095, puede haber un puerto en el campo forwarded_for, lo que impide resolver el nombre de host cuando incluye el puerto. #74116 (Yakov Olkhovskiy).
- Se corrigió el formato incorrecto en
ALTER TABLE (DROP STATISTICS ...) (DROP STATISTICS ...). #74126 (Han Fei). - Corrección del error #66112. #74128 (Anton Ivashkin).
- Ya no es posible usar
Loopcomo motor de tabla enCREATE TABLE. Antes, esta combinación provocaba fallos de segmentación. #74137 (Yarik Briukhovetskyi). - Corrige un problema de seguridad para evitar la inyección de SQL en las funciones de tabla de PostgreSQL y SQLite. #74144 (Pablo Marcos).
- Se corrige un fallo al leer una subcolumna de una tabla comprimida del motor Memory. Corrige #74009. #74161 (Nikita Taranov).
- Se corrigió un bucle infinito que se producía en las consultas a system.detached_tables. #74190 (Konstantin Morozov).
- Se corrigió un error lógico en s3queue al marcar el archivo como fallido. #74216 (Kseniia Sumarokova).
- Comprobación de tipos no compatibles en algunos almacenamientos. #74218 (Pavel Kruglov).
- Se corrige un fallo que provocaba un cierre inesperado al ejecutar la consulta
INSERT INTO SELECTa través de la Interfaz de PostgreSQL en macOS (incidencia #72938). #74231 (Artem Yurov). - Se corrigen los ajustes de copia nativa (
allow_s3_native_copy/allow_azure_native_copy) paraRESTOREdesde una copia de seguridad base. #74286 (Azat Khuzhin). - Se corrigió un problema que ocurría cuando el número de tablas desvinculadas en la base de datos era un múltiplo de max_block_size. #74289 (Konstantin Morozov).
- Se corrigió la copia mediante ObjectStorage (es decir, S3) cuando las credenciales de origen y de destino son distintas. #74331 (Azat Khuzhin).
- Se corrigió la falta de inicialización de max_log_ptr en la base de datos replicada. #74336 (Konstantin Morozov).
- Se corrigió la detección de “use the Rewrite method in the JSON API” en la copia nativa en GCS. #74338 (Azat Khuzhin).
- Se corrige el bloqueo al insertar interval (incidencia #74299). #74478 (NamNguyenHoai).
- Corrige el análisis incorrecto de las proyecciones cuando se usa
count(nullable)en proyecciones agregadas. Esto corrige #74495. Este PR también añade algunos logs relacionados con el análisis de proyecciones para aclarar por qué se usa una proyección o por qué no. #74498 (Amos Bird). - Corregir el cálculo incorrecto de
BackgroundMergesAndMutationsPoolSize(era el doble del valor real). #74509 (alesapin). - Se corrige un error que provocaba fugas de watches de Keeper al habilitar Cluster Discovery. #74521 (RinChanNOW).
- Se corrigió el formato de los literales JSON constantes. Anteriormente, esto podía provocar errores de sintaxis al enviar la consulta a otro servidor. #74533 (Pavel Kruglov).
- Corrige un problema de alineación de memoria detectado por UBSan #74512. #74534 (Arthur Passos).
- Se corrige la limpieza concurrente de KeeperMap durante la creación de tablas. #74568 (Antonio Andelic).
- No elimine las columnas no utilizadas de la proyección en las subconsultas cuando haya
EXCEPToINTERSECT, para preservar el resultado correcto de la consulta. Corrige #73930. Corrige #66465. #74577 (Dmitry Novik). - Se corrige la consulta CREATE que fallaba al usar expresiones de partición constantes con proyecciones implícitas habilitadas. Esto corrige #74596 . #74634 (Amos Bird).
- Se corrigieron las consultas
INSERT SELECTentre tablas con columnasTupley serialización dispersa habilitada. #74698 (Anton Popov). - La función
rightno funciona correctamente con un desplazamiento negativo constante. #74701 (Daniil Ivanik). - Se corrige un problema por el que la inserción de datos comprimidos con gzip a veces fallaba debido a una descompresión defectuosa del lado del client. #74707 (siyuan).
- Evita dejar la conexión en un estado erróneo después de que INSERT finalice con una excepción. #74740 (Azat Khuzhin).
- Evita reutilizar conexiones que se habían dejado en un estado intermedio. #74749 (Azat Khuzhin).
- Las revocaciones parciales de privilegios con comodines podían eliminar más privilegios de los previstos. Cierra #74263. #74751 (pufit).
- Se corrige un cierre inesperado durante el análisis de la declaración del tipo JSON cuando el nombre del tipo no está en mayúsculas. #74784 (Pavel Kruglov).
- Corrección en Keeper: se corrige la lectura de entradas del log desde disco. #74785 (Antonio Andelic).
- Se corrigió la comprobación de permisos para SYSTEM REFRESH/START/STOP VIEW; ahora no es necesario tener este permiso sobre
*.*para ejecutar una consulta sobre una vista específica; solo se requieren permisos para esa vista. #74789 (Alexander Tokmakov). - La función
hasColumnInTableno tiene en cuenta las columnas con alias. Corrígela para que también funcione con columnas con alias. #74841 (Bharat Nallan). - Keeper: corrige logical_error cuando la conexión se había cerrado antes de establecerse. #74844 (Michael Kolupaev).
- Se corrige un problema por el que el servidor no podía iniciarse cuando había una tabla que usaba
AzureBlobStorage. Las tablas se cargan sin realizar solicitudes a Azure. #74880 (Alexey Katsman). - Se corrigen los campos
used_privilegesymissing_privilegesque faltaban enquery_logpara las operaciones BACKUP y RESTORE. #74887 (Alexey Katsman). - Corregido el error FILE_DOESNT_EXIST que se producía al fusionar partes de datos de una tabla con una columna vacía en Azure Blob Storage. #74892 (Julia Kartseva).
- Corrige el nombre de la columna de proyección al unir tablas temporales, cierra #68872. #74897 (Vladimir Cherkasov).
- Renueva el ticket krb de HDFS si se produce un error de SASL durante una solicitud SELECT de HDFS. #74930 (inv2004).
- Corregidas las consultas de la base de datos Replicated en startup_scripts. #74942 (Azat Khuzhin).
- Corrige problemas con expresiones con alias en la cláusula JOIN ON cuando se usa una comparación null-safe. #74970 (Vladimir Cherkasov).
- Restaurar el estado de la parte de deleting a outdated cuando falle la operación de eliminación. #74985 (Sema Checherinda).
- En versiones anteriores, cuando había una subconsulta escalar, empezábamos a escribir el progreso (acumulado durante el procesamiento de la subconsulta) al inicializar el formato de datos, antes de que se escribieran los encabezados HTTP. Esto provocaba la pérdida de encabezados HTTP, como X-ClickHouse-QueryId y X-ClickHouse-Format, así como de Content-Type. #74991 (Alexey Milovidov).
- Se corrigen las consultas
CREATE TABLE AS...condatabase_replicated_allow_replicated_engine_arguments=0. #75000 (Bharat Nallan). - Se corrige un problema que dejaba la conexión en un estado incorrecto en el client tras excepciones de INSERT. #75030 (Azat Khuzhin).
- Se corrige un bloqueo debido a una excepción no controlada en la replicación de PSQL. #75062 (Azat Khuzhin).
- SASL puede hacer que falle cualquier llamada RPC; esta corrección permite repetir la llamada en caso de que el ticket de krb5 haya expirado. #75063 (inv2004).
- Se corrigió el uso de los índices (primario y secundario) para las columnas
Array,MapyNullable(..)con la configuraciónoptimize_function_to_subcolumnshabilitada. Anteriormente, los índices de estas columnas podían ser ignorados. #75081 (Anton Popov). - Deshabilita
flatten_nestedal crear vistas materializadas con tablas internas, ya que no será posible usar esas columnas aplanadas. #75085 (Christoph Wurm). - Se corrigió un problema por el que algunas direcciones IPv6 (como ::ffff:1.1.1.1) en el campo forwarded_for se interpretaban erróneamente, lo que provocaba la desconexión del client con una excepción. #75133 (Yakov Olkhovskiy).
- Corrige el manejo de JOIN nullsafe para el tipo de dato Nullable de LowCardinality. Anteriormente, JOIN ON con comparación nullsafe, como
IS NOT DISTINCT FROM,<=>,a IS NULL AND b IS NULL OR a == b, no funcionaba correctamente con columnas LowCardinality. #75143 (Vladimir Cherkasov). - Corrige consultas con interpolación sin usar con el nuevo analizador. #75173 (János Benjamin Antal).
- Corregido el fallo que provocaba un cierre inesperado de CTE con Insert. #75188 (Shichao Jin).
- Corrección de Keeper: evita escribir en changelogs corruptos al revertir logs. #75197 (Antonio Andelic).
- Usa
BFloat16como supertipo cuando corresponda. Con esto se cierra: #74404. #75236 (Nikita Mikhaylov). - Se corrigieron los valores predeterminados inesperados en el resultado de JOIN con any_join_distinct_right_table_keys y OR en JOIN ON. #75262 (Vladimir Cherkasov).
- Enmascarar las credenciales del motor de tabla azureblobstorage. #75319 (Garrett Thomas).
- Se corrigió el comportamiento por el cual ClickHouse podía aplicar erróneamente un filter pushdown a una base de datos externa como PostgreSQL, MySQL o SQLite. Esto cierra: #71423. #75320 (Nikita Mikhaylov).
- Se corrige un fallo en la caché de esquemas de Protobuf que puede producirse al generar salida en formato Protobuf y ejecutar en paralelo la consulta
SYSTEM DROP FORMAT SCHEMA CACHE. #75357 (Pavel Kruglov). - Corrige un posible error lógico o un problema de memoria sin inicializar cuando se hace pushdown de un filtro de
HAVINGcon réplicas paralelas. #75363 (Vladimir Cherkasov). - Oculta información sensible en las funciones de tabla y los motores de tabla
icebergS3eicebergAzure. #75378 (Kseniia Sumarokova). - La función
TRIMahora maneja correctamente los caracteres de recorte vacíos calculados. Ejemplo:SELECT TRIM(LEADING concat('') FROM 'foo')(incidencia #69922). #75399 (Manish Gill). - Se corrige una race condition en IOutputFormat. #75448 (Pavel Kruglov).
- Corrige un posible error
Elements ... and ... of Nested data structure ... (Array columns) have different array sizesal usar subcolumnas JSON de tipo Array en JOIN sobre tablas distribuidas. #75512 (Pavel Kruglov). - Corrige un cálculo incorrecto del tamaño del búfer de resultados. Cierra #70031. #75548 (Konstantin Bogdanov).
- Corrige la interacción entre allow_feature_tier y la configuración compatibility de MergeTree. #75635 (Raúl Marín).
- Corregir el valor incorrecto de processed_rows en system.s3queue_log si se reintentó el archivo. #75666 (Kseniia Sumarokova).
- Se respeta
materialized_views_ignore_errorscuando una vista materializada escribe en un motor URL y hay un problema de conectividad. #75679 (Christoph Wurm). - Se corrigieron fallos poco frecuentes al leer de una tabla
MergeTreetras múltiples consultasRENAMEasíncronas (conalter_sync = 0) entre columnas de distintos tipos. #75693 (Anton Popov). - Se corrige el error
Block structure mismatch in QueryPipeline streamen algunas consultas conUNION ALL. #75715 (Nikolai Kochetov). - Reconstruir la proyección al ejecutar alter modify en su columna de PK. Anteriormente, esto podía provocar errores
CANNOT_READ_ALL_DATAdurante los SELECT después de ejecutar alter modify en la columna usada en la PK de la proyección. #75720 (Pavel Kruglov). - Corrige el resultado incorrecto de
ARRAY JOINen subconsultas escalares (con analizador). #75732 (Nikolai Kochetov). - Se corrigió una desreferenciación de puntero nulo en
DistinctSortedStreamTransform. #75734 (Nikita Taranov). - Se corrigió el comportamiento de
allow_suspicious_ttl_expressions. #75771 (Aleksei Filatov). - Corrige una lectura de memoria no inicializada en la función
translate. Esto cierra #75592. #75794 (Alexey Milovidov). - Se propaga la configuración de formato a JSON como formateo de cadenas en Native format. #75832 (Pavel Kruglov).
- Se registró en el historial de cambios de configuración que parallel hash pasó a estar habilitado de forma predeterminada como algoritmo de join en la v24.12. Esto significa que ClickHouse seguirá realizando el join con non-parallel hash si se configura un nivel de compatibilidad anterior a la v24.12. #75870 (Robert Schulze).
- Se corrigió un error que impedía copiar a una nueva tabla las tablas con índices min-max añadidos implícitamente (incidencia #75677). #75877 (Smita Kulkarni).
clickhouse-library-bridgepermite abrir bibliotecas arbitrarias desde el filesystem, por lo que solo es seguro ejecutarlo dentro de un entorno aislado. Para evitar una vulnerabilidad cuando se ejecuta junto a clickhouse-server, limitaremos las rutas de las bibliotecas a una ubicación especificada en la configuración. Esta vulnerabilidad fue обнаружена con el ClickHouse Bug Bounty Program por Arseniy Dugin. #75954 (Alexey Milovidov).- Terminamos usando la serialización JSON para algunos metadatos, y eso fue un error, porque JSON no admite datos binarios dentro de cadenas literales, incluidos los bytes nulos. Las consultas SQL pueden contener datos binarios y UTF-8 no válido, por lo que también tenemos que admitirlo en nuestros archivos de metadatos. Al mismo tiempo,
JSONEachRowde ClickHouse y formatos similares eluden ese problema apartándose del estándar JSON para permitir una ida y vuelta perfecta de los datos binarios. Consulta la motivación aquí: https://github.com/ClickHouse/ClickHouse/pull/73668#issuecomment-2560501790. La solución es hacer que la bibliotecaPoco::JSONsea coherente con la serialización en formato JSON de ClickHouse. Esto cierra #73668. #75963 (Alexey Milovidov). - Se corrige
Part <...> does not contain in snapshot of previous virtual parts. (PART_IS_TEMPORARILY_LOCKED)al ejecutar DETACH PART. #76039 (Aleksei Filatov). - Se corrige la comprobación de los límites de commit en el almacenamiento
S3Queue. #76104 (Kseniia Sumarokova). - Se corrige el problema al adjuntar tablas MergeTree con índices automáticos (
add_minmax_index_for_numeric_columns/add_minmax_index_for_string_columns). #76139 (Azat Khuzhin). - Se corrigió un problema por el que no se imprimían las trazas de pila de los hilos padre de un trabajo (configuración
enable_job_stack_trace). Se corrigió un problema por el que la configuraciónenable_job_stack_traceno se propagaba correctamente a los hilos, por lo que el contenido resultante de la traza de pila no siempre respetaba esta configuración. #76191 (Yakov Olkhovskiy). - Se corrigió reinterpretAs con FixedString en arquitecturas big-endian. #76253 (Azat Khuzhin).
- Corrige todo tipo de errores debidos a condiciones de carrera entre UUID y nombres de tabla (por ejemplo, corrige la condición de carrera entre
RENAMEyRESTART REPLICA; en caso de unRENAMEconcurrente conSYSTEM RESTART REPLICA, puede que termines reiniciando la réplica incorrecta o incluso dejando una de las tablas en el estadoTable X is being restarted). #76308 (Azat Khuzhin). - Se eliminó la asignación en el manejador de señales. #76446 (Nikita Taranov).
- Se corrigen errores inesperados durante el desalojo al gestionar el redimensionamiento dinámico de la caché del sistema de archivos. #76466 (Kseniia Sumarokova).
- Se corrigió la inicialización de
used_flagen el hash en paralelo. Podría provocar una caída del servidor. #76580 (Nikita Taranov). - Se corrige un error lógico al llamar a la función
defaultProfiles()dentro de una proyección. #76627 (pufit). - No solicitar autenticación básica interactiva del navegador en la web UI. Cierra #76319. #76637 (Alexey Milovidov).
- Se corrigió la excepción THERE_IS_NO_COLUMN al seleccionar un literal booleano desde tablas distribuidas. #76656 (Yakov Olkhovskiy).
- La subruta dentro del directorio de la tabla se elige de una forma más precisa. #76681 (Daniil Ivanik).
- Corrige un error
Not found column in blockdespués de modificar una tabla con una subcolumna en la PK. Tras https://github.com/ClickHouse/ClickHouse/pull/72644, también requiere https://github.com/ClickHouse/ClickHouse/pull/74403. #76686 (Nikolai Kochetov). - Se añaden pruebas de rendimiento para los cortocircuitos con NULL y se corrigen errores. #76708 (李扬).
- Vacía los búferes de escritura de salida antes de finalizarlos. Corrige el
LOGICAL_ERRORque se generaba durante la finalización de algunos formatos de salida, p. ej.,JSONEachRowWithProgressRowOutputFormat. #76726 (Antonio Andelic). - Se añadió compatibilidad con el UUID binario de MongoDB (#74452) - Se corrigió el pushdown de WHERE a MongoDB al usar la función de tabla (#72210) - Se modificó la correspondencia de tipos entre MongoDB y ClickHouse para que el UUID binario de MongoDB solo pueda analizarse como UUID de ClickHouse. Esto debería evitar ambigüedades y comportamientos inesperados en el futuro. - Se corrigió la correspondencia de OID, preservando la compatibilidad con versiones anteriores. #76762 (Kirill Nikiforov).
- Se corrige el manejo de excepciones en la deserialización en paralelo de prefijos de subcolumnas JSON. #76809 (Pavel Kruglov).
- Se corrige el comportamiento de la función lgamma para enteros negativos. #76840 (Ilya Kataev).
- Se corrigió el análisis inverso de claves para claves primarias definidas explícitamente. Similar a #76654. #76846 (Amos Bird).
- Se corrige la impresión formateada de los valores Bool en formato JSON. #76905 (Pavel Kruglov).
- Se corrige un posible cierre inesperado debido a una reversión incorrecta de la columna JSON cuando se produce un error durante las inserciones asíncronas. #76908 (Pavel Kruglov).
- Anteriormente,
multi_ifpodía devolver columnas de distintos tipos durante la planificación y la ejecución principal. Esto provocaba que el código generara un comportamiento indefinido desde la perspectiva de C++. #76914 (Nikita Taranov). - Se corrigió la serialización incorrecta de claves constantes de tipo Nullable en MergeTree. Esto corrige #76939. #76985 (Amos Bird).
- Corrige la ordenación de los valores
BFloat16. Esto cierra #75487. Esto cierra #75669. #77000 (Alexey Milovidov). - Se corrige JSON con una subcolumna Variant añadiendo una comprobación para omitir las subcolumnas efímeras en la comprobación de consistencia de las partes. #72187. #77034 (Smita Kulkarni).
- Corregido un cierre inesperado al analizar plantillas en el formato Values en caso de incompatibilidad de tipos. #77071 (Pavel Kruglov).
- No permitir crear tablas EmbeddedRocksDB con una subcolumna en la clave primaria. Anteriormente, se podían crear tablas de este tipo, pero las consultas
SELECTfallaban. #77074 (Pavel Kruglov). - Corrige la comparación no válida en las consultas distribuidas, porque la propagación de predicados al nodo remoto no respeta los tipos de los literales. #77093 (Duc Canh Le).
- Se corrige un cierre inesperado durante la creación de tablas de Kafka cuando se producía una excepción. #77121 (Pavel Kruglov).
- Se añade compatibilidad con JSON y subcolumnas nuevos en los motores Kafka y RabbitMQ. #77122 (Pavel Kruglov).
- Se corrige el desenrollado de la pila de excepciones en MacOS. #77126 (Eduard Karacharov).
- Corrige la lectura de la subcolumna ‘null’ en la función getSubcolumn. #77163 (Pavel Kruglov).
- Se corrigen los índices de omisión que no funcionaban con expresiones que contienen literales en el analizador, y se eliminan las conversiones de tipo triviales durante el análisis de índices. #77229 (Pavel Kruglov).
- Corrige el índice bloom filter con Array y funciones no admitidas. #77271 (Pavel Kruglov).
- Solo deberíamos comprobar la restricción del número de tablas durante la consulta CREATE inicial. #77274 (Nikolay Degterinsky).
SELECT toBFloat16(-0.0) == toBFloat16(0.0)ahora devuelve correctamentetrue(antes devolvíafalse). Esto hace que el comportamiento sea consistente conFloat32yFloat64. #77290 (Shankar Iyer).- Corrige una posible referencia incorrecta a la variable key_index sin inicializar, lo que puede provocar un fallo en compilaciones de depuración (esta referencia sin inicializar no causará problemas en compilaciones release porque es probable que el código posterior arroje errores). ### entrada de documentación para cambios visibles para el usuario. #77305 (wxybear).
- Se revirtió. #77307 (Nikolai Kochetov).
- Se corrigió el nombre de la partición para un valor Bool. Se había roto en https://github.com/ClickHouse/ClickHouse/pull/74533. #77319 (Pavel Kruglov).
- Corrige la comparación entre tuplas con elementos Nullable y cadenas. Por ejemplo, antes de este cambio, la comparación entre una Tuple
(1, null)y un String'(1,null)'producía un error. Otro caso sería la comparación entre una Tuple(1, a), dondeaes una columna Nullable, y un String'(1, 2)'. Este cambio soluciona estos problemas. #77323 (Alexey Katsman). - Soluciona un fallo en ObjectStorageQueueSource. Se introdujo en https://github.com/ClickHouse/ClickHouse/pull/76358. #77325 (Pavel Kruglov).
- Se corrigió un error por el que el parámetro de consulta
close_sessionno tenía ningún efecto, por lo que las sesiones con nombre solo se cerraban después desession_timeout. #77336 (Alexey Katsman). - Se corrige
async_insertconinput(). #77340 (Azat Khuzhin). - Corrección:
WITH FILLpuede fallar conNOT_FOUND_COLUMN_IN_BLOCKcuando el planificador elimina la columna de ordenación. Problema similar relacionado con el cálculo inconsistente de un DAG para la expresiónINTERPOLATE. #77343 (Yakov Olkhovskiy). - Se revirtió. #77390 (Vladimir Cherkasov).
- Se corrigió la recepción de mensajes desde el servidor NATS sin una mv asociada. #77392 (Dmitry Novikov).
- Se corrige un error lógico al leer desde
FileLogvacío mediante la función de tablamerge, cierra #75575. #77441 (Vladimir Cherkasov). - Se solucionan varios
LOGICAL_ERRORal asignar un alias a nodos AST no válidos. #77445 (Raúl Marín). - En la implementación de la caché del sistema de archivos, se corrigió el manejo de errores durante la escritura de segmentos de archivo. #77471 (Kseniia Sumarokova).
- Hace que DatabaseIceberg utilice el archivo de metadatos correcto proporcionado por el catálogo. Cierra #75187. #77486 (Kseniia Sumarokova).
- Usar la configuración predeterminada de formato en la serialización de Dynamic desde una variante compartida. #77572 (Pavel Kruglov).
- Se revierte ‘Evitar toAST() en la ejecución de subconsultas escalares’. #77584 (Raúl Marín).
- Se corrige la comprobación de la existencia de la ruta de datos de la tabla en el disco local. #77608 (Tuan Pham Anh).
- La caché de consultas ahora asume que las UDF no son deterministas. En consecuencia, los resultados de las consultas con UDF ya no se almacenan en caché. Anteriormente, los usuarios podían definir UDF no deterministas cuyos resultados se almacenaban erróneamente en caché (incidencia #77553). #77633 (Jimmy Aguilar Mena).
- Se corrigió el envío de valores constantes al servidor remoto para algunos tipos. #77634 (Pavel Kruglov).
- Se corrigió system.filesystem_cache_log, que solo funcionaba con la configuración
enable_filesystem_cache_log. #77650 (Kseniia Sumarokova). - Soluciona un error lógico al llamar a la función
defaultRoles()dentro de una proyección. Como seguimiento de #76627. #77667 (pufit). - Se corrige un fallo causado por un contexto caducado en StorageS3(Azure)Queue. #77720 (Kseniia Sumarokova).
- Los segundos argumentos de tipo
Nullablepara la funciónarrayResizeya no se permiten. Anteriormente, usarNullablecomo segundo argumento podía provocar desde errores hasta resultados incorrectos. (issue #48398). #77724 (Manish Gill). - Ocultar credenciales en los motores de tabla RabbitMQ, Nats, Redis y AzureQueue. #77755 (Kseniia Sumarokova).
- Corrige el comportamiento indefinido al comparar NaN en ArgMin/ArgMax. #77756 (Raúl Marín).
- Comprobar periódicamente si las fusiones y las mutaciones se han cancelado, incluso cuando la operación no produce ningún bloque para escribir. #77766 (János Benjamin Antal).
- Se revirtió. #77843 (Vladimir Cherkasov).
- Se corrige un posible cierre inesperado cuando se produce el error
NOT_FOUND_COLUMN_IN_BLOCK. #77854 (Vladimir Cherkasov). - Se corrige un fallo que se produce en
StorageSystemObjectStorageQueueSettingsal completar los datos. #77878 (Bharat Nallan). - Se deshabilitó la búsqueda difusa en el historial del servidor SSH (ya que requiere skim). #78002 (Azat Khuzhin).
- Corrige un error por el que una consulta de búsqueda vectorial en una columna no indexada devolvía resultados incorrectos si había otra columna vectorial en la tabla con un índice de similitud vectorial definido. (Issue #77978). #78069 (Shankar Iyer).
- Corrige el mensaje
The requested output format {} is binary... Do you want to output it anyway? [y/N]. #78095 (Azat Khuzhin). - Corrección de un error en
toStartOfIntervalcuando el argumento de origen es cero. #78096 (Yarik Briukhovetskyi). - Impedir especificar un parámetro de consulta
session_idvacío en la interfaz HTTP. #78098 (Alexey Katsman). - Se corrigió la sobrescritura de metadatos en Database Replicated, que podía producirse debido a una consulta RENAME ejecutada justo después de una consulta ALTER. #78107 (Nikolay Degterinsky).
- Se corrigió un fallo en el motor NATS. #78108 (Dmitry Novikov).
- No intente crear un
history_fileen un client integrado para SSH. #78112 (Azat Khuzhin). - Se corrige que system.detached_tables muestre información incorrecta después de las sentencias RENAME DATABASE o DROP TABLE. #78126 (Nikolay Degterinsky).
- Corrección de las comprobaciones cuando hay demasiadas tablas con Database Replicated después de https://github.com/ClickHouse/ClickHouse/pull/77274. Además, la comprobación ahora se realiza antes de crear el almacenamiento para evitar crear nodos no contabilizados en ZooKeeper en el caso de RMT o KeeperMap. #78127 (Nikolay Degterinsky).
- Se corrige un posible fallo debido a la inicialización concurrente de los metadatos de S3Queue. #78131 (Azat Khuzhin).
- Las funciones
groupArray*ahora generan el error BAD_ARGUMENTS cuando el argumento max_size tiene el valor 0 de tipo Int, igual que ya ocurría con UInt, en lugar de intentar ejecutarse con él. #78140 (Eduard Karacharov). - Evita un fallo en recoverLostReplica si la tabla local se elimina antes de pasar a detached. #78173 (Raúl Marín).
- Se corrige el problema de la columna “alterable” en system.s3_queue_settings, que siempre devolvía
false. #78187 (Kseniia Sumarokova). - Ocultar la firma de acceso de Azure para que no sea visible para el usuario ni en los logs. #78189 (Kseniia Sumarokova).
- Se corrige la precarga de subflujos con prefijos en partes Wide. #78205 (Pavel Kruglov).
- Se corrigieron bloqueos / resultados incorrectos de
mapFromArraysen el caso de arrays de claves de tipoLowCardinality(Nullable). #78240 (Eduard Karacharov). - Se corrigen las opciones de autenticación de delta-kernel. #78255 (Kseniia Sumarokova).
- No programar la tarea de RefreshMV si
disable_insertion_and_mutationde una réplica es true. Una tarea corresponde a alguna inserción y fallará sidisable_insertion_and_mutationes true. #78277 (Xu Jia). - Validar el acceso a las tablas subyacentes del motor Merge. #78339 (Pervakov Grigorii).
- El modificador FINAL puede perderse en tablas con motor
Distributed. #78428 (Yakov Olkhovskiy). Bitmapmindevuelve uint32_max cuando el bitmap esempty(uint64_max when input type >= 8bits), lo que coincide con el comportamiento deminimum()de unroaring_bitmapvacío. #78444 (wxybear).- Se revierte “Aplicar el atributo preserve_most en algunos puntos del código” porque puede provocar fallos. #78449 (Azat Khuzhin).
- Usar columnas de inserción para inferir el esquema de INFILE. #78490 (Pervakov Grigorii).
- Deshabilita el procesamiento paralelo de consultas inmediatamente después de leer
FROMcuandodistributed_aggregation_memory_efficientestá habilitado, ya que puede provocar un error lógico. Cierra #76934. #78500 (flynn). - Se establece al menos un flujo de lectura en caso de que haya cero flujos planificados después de aplicar la configuración
max_streams_to_max_threads_ratio. #78505 (Eduard Karacharov). - En el almacenamiento S3Queue se corrige el error lógico “No se puede desregistrar: el UUID de la tabla no está registrado”. Cierra #78285. #78541 (Kseniia Sumarokova).
- ClickHouse ahora puede determinar su cgroup v2 en sistemas en los que están habilitados tanto cgroups v1 como v2. #78566 (Grigory Korolev).
- Las funciones de tabla de clúster de ObjectStorage fallaban al usarse con ajustes a nivel de tabla. #78587 (Daniil Ivanik).
- ReplicatedMergeTree no admite comprobaciones de transacciones mejoradas en los
INSERT. #78633 (Azat Khuzhin). - Aplicar la configuración de la consulta durante ATTACH. #78637 (Raúl Marín).
- Corrige un cierre inesperado al especificar una ruta no válida en
iceberg_metadata_file_path. #78688 (alesapin). - En el motor de tabla DeltaLake con implementación
delta-kernel, se corrige el caso en que el esquema leído difiere del esquema de la tabla y, además, hay columnas de partición, lo que provocaba un error de columna no encontrada. #78690 (Kseniia Sumarokova). - Esta actualización corrige un error por el que una nueva sesión con nombre se cerraba inadvertidamente en el momento programado para una sesión anterior si ambas sesiones compartían el mismo nombre y la nueva se creaba antes de que expirara el timeout de la anterior. #78698 (Alexey Katsman).
- No bloquear el cierre de la tabla mientras se ejecuta CHECK TABLE. #78782 (Raúl Marín).
- Corrección de Keeper: se corrige el recuento de nodos efímeros en todos los casos. #78799 (Antonio Andelic).
- Se corrigió un
castincorrecto enStorageDistributedal usar funciones de tabla distintas deview(). Cierra #78464. #78828 (Konstantin Bogdanov). - Corrige el formateo de
tupleElement(*, 1). Cierra #78639. #78832 (Konstantin Bogdanov). - Los diccionarios de tipo
ssd_cacheahora rechazan los parámetrosblock_sizeywrite_buffer_sizecuando su valor es cero o negativo (incidencia #78314). #78854 (Elmi Ahmadov). - Se corrige un fallo en REFRESHABLE MV en caso de ejecutar ALTER tras un cierre incorrecto. #78858 (Azat Khuzhin).
- Se corrige el análisis de valores de DateTime incorrectos en formato CSV. #78919 (Pavel Kruglov).
Mejora en compilación/pruebas/empaquetado
- La dependencia interna LLVM pasa de la versión 16 a la 18. #66053 (Nikita Mikhaylov).
- Se restauraron las pruebas de integración eliminadas de nats y se corrigieron errores. - se corrigieron algunas condiciones de carrera en el motor nats - se corrigió la pérdida de datos al transmitir datos a nats en caso de pérdida de conexión - se corrigió el bloqueo al recibir el último fragmento de datos cuando finalizaba la transmisión desde nats - nats_max_reconnect está en desuso y no tiene efecto; la reconexión se realiza permanentemente con el tiempo de espera nats_reconnect_wait. #69772 (Dmitry Novikov).
- Se corrigió el problema que impedía generar los archivos asm de contrib openssl. #72622 (RinChanNOW).
- Mejorar la estabilidad de la prueba 03210_variant_with_aggregate_function_type. #74012 (Anton Ivashkin).
- Se admite la compilación de HDFS tanto en Mac con ARM como en Mac Intel. #74244 (Yan Xin).
- El script de instalación universal ofrecerá la instalación incluso en macOS. #74339 (Alexey Milovidov).
- Corregir la compilación cuando Kerberos no está habilitado. #74771 (flynn).
- Actualización al LLVM 19 integrado. #75148 (Konstantin Bogdanov).
- Posible cambio incompatible: Mejora para establecer valores predeterminados aún más restrictivos. Los valores predeterminados actuales ya son seguros. El usuario debe especificar explícitamente una opción para publicar puertos. Pero cuando el usuario
defaultno tiene una contraseña establecida mediante la variable de entornoCLICKHOUSE_PASSWORDy/o un nombre de usuario cambiado medianteCLICKHOUSE_USER, solo debería estar disponible desde el sistema local como nivel adicional de protección. #75259 (Mikhail f. Shiryaev). - Las pruebas de integración tienen un timeout de 1 hora para un solo lote de pruebas paralelas en ejecución. Cuando se alcanza este timeout,
pytestfinaliza sin generar algunos logs. El timeout interno de pytest está configurado en 55 minutos para imprimir los resultados de una sesión y no activar la señal de timeout externa. Cierra #75532. #75533 (Ilya Yatsishin). - Convertir todas las acciones relacionadas con clickhouse-server en una función y ejecutarlas solo al iniciar el binary predeterminado desde
entrypoint.sh. En #50724 se propuso una mejora largamente aplazada. Se añadió la opción--usersaclickhouse-extract-from-configpara obtener valores deusers.xml. #75643 (Mikhail f. Shiryaev). - Para las pruebas de estrés, si el servidor no se cerró mientras recopilábamos stacktraces con gdb, se añade un tiempo de espera adicional para que la detección de
Possible deadlock on shutdown (see gdb.log)genere menos ruido. Solo añade retraso en los casos en que la prueba no haya finalizado correctamente. #75668 (Ilya Yatsishin). - Se restauraron las pruebas de integración de nats eliminadas y se corrigieron errores. - se corrigieron algunas condiciones de carrera en el motor nats - se corrigió la pérdida de datos al transmitir datos a nats en caso de pérdida de conexión - se corrigió el bloqueo al recibir el último fragmento de datos cuando finalizaba la transmisión desde nats - nats_max_reconnect está obsoleto y no tiene efecto; la reconexión se realiza de forma permanente con el tiempo de espera nats_reconnect_wait. #75850 (Dmitry Novikov).
- Habilitar ICU y GRPC en la compilación cruzada para Darwin. #75922 (Raúl Marín).
- Se corrige la salida de la prueba de splitting debido a
sleepdurante la finalización del grupo de procesos. #76090 (Mikhail f. Shiryaev). - No recopile los logs de
docker-composeal final de la ejecución, ya que el script suele detenerse. En su lugar, recopílelos en segundo plano. #76140 (Mikhail f. Shiryaev). - Se dividieron las pruebas del almacenamiento de Kafka en varios archivos. Corrige #69452. #76208 (Mikhail f. Shiryaev).
clickhouse-odbc-bridgeyclickhouse-library-bridgese han trasladado a un repositorio independiente, https://github.com/ClickHouse/odbc-bridge/. #76225 (Alexey Milovidov).- Se eliminan unos 20 MB de código muerto del binario. #76226 (Alexey Milovidov).
- Se aumenta la versión mínima requerida de CMake a 3.25 debido a la introducción de
block(). #76316 (Konstantin Bogdanov). - Actualizar fmt a la versión 11.1.3. #76547 (Raúl Marín).
- Se actualiza
lz4a1.10.0. #76571 (Konstantin Bogdanov). - Aumenta
curla8.12.1. #76572 (Konstantin Bogdanov). - Actualizar
libcpuida la versión0.7.1. #76573 (Konstantin Bogdanov). - Use un formato legible por máquina para analizar los resultados de pytest. #76910 (Mikhail f. Shiryaev).
- Se corrige la compilación cruzada de Rust y se permite deshabilitar Rust por completo. #76921 (Raúl Marín).
- Se requiere clang 19 para compilar el proyecto. #76945 (Raúl Marín).
- La prueba se ejecuta durante más de 10 segundos en modo secuencial. Es demasiado larga para las pruebas rápidas. #76948 (Mikhail f. Shiryaev).
- Se actualiza
sccachea0.10.0. #77580 (Konstantin Bogdanov). - Respetar las características de la CPU de destino en Rust y habilitar LTO en todos los crates. #78590 (Raúl Marín).
- Actualiza
minizip-nga4.0.9. #78917 (Konstantin Bogdanov).