Cambios incompatibles con versiones anteriores
Cambios en el formato de los datos y en el esquema
- Se cambió la configuración predeterminada
schema_inference_make_columns_nullablepara que respete la información deNullablede las columnas presente en los metadatos de Parquet/ORC/Arrow, en lugar de hacer que todo sea Nullable. No hay cambios en los formatos de texto. #71499 (Michael Kolupaev).
Cambios en consultas y funciones
- La caché de resultados de consultas ahora ignora la configuración
log_comment, por lo que cambiar sololog_commenten una consulta ya no provoca un fallo de caché. Existe una pequeña posibilidad de que algunos usuarios segmentaran intencionadamente su caché variandolog_comment. Este cambio modifica ese comportamiento y, por lo tanto, no es compatible con versiones anteriores. Utilice la configuraciónquery_cache_tagpara este fin. #79878 (filimonov). - En versiones anteriores, las consultas con funciones de tabla con el mismo nombre que las funciones de implementación de operadores se formateaban de forma inconsistente. Cierra #81601. Cierra #81977. Cierra #82834. Cierra #82835. Las consultas EXPLAIN SYNTAX no formatearán operadores; el nuevo comportamiento refleja mejor el propósito de explicar la sintaxis.
clickhouse-format,formatQueryy similares no formatearán funciones como operadores si la consulta las contenía en forma funcional. #82825 (Alexey Milovidov). - Se deshabilitan las operaciones binarias sin sentido con IPv4/IPv6: se deshabilita la suma o resta de una IPv4/IPv6 con un tipo no entero. Antes se permitían operaciones con tipos de coma flotante y se producían errores lógicos con algunos otros tipos (como DateTime). #86336 (Raúl Marín).
- Se cambiaron los nombres de las funciones
searchAnyysearchAllahasAnyTokensyhasAllTokenspara mantener una mayor coherencia con la función existentehasToken. #88109 (Robert Schulze).
Cambios en los tipos de datos
- Se prohíbe el uso del tipo Dynamic en las claves de JOIN. Esto puede dar lugar a resultados inesperados cuando el tipo Dynamic se compara con un tipo que no es Dynamic. Es mejor convertir una columna Dynamic al tipo requerido. #86358 (Pavel Kruglov).
Cambios en almacenamiento e índices
- Se deja obsoleta la configuración
allow_dynamic_metadata_for_data_lakes. Ahora, todas las tablas Iceberg intentan obtener del almacenamiento el esquema de tabla más actualizado antes de ejecutar cada consulta. #86366 (Daniil Ivanik). - El índice de texto invertido se rediseñó desde cero para que sea escalable con conjuntos de datos que no caben en RAM. #86485 (Anton Popov).
- La configuración del servidor
storage_metadata_write_full_object_keyestá habilitada de forma predeterminada y ya no puede desactivarse. #87335 (Sema Checherinda). - Se elimina
cache_hits_thresholdde la caché del sistema de archivos.cache_hits_thresholdse añadió antes de incorporar la política de caché SLRU, y no es necesario admitir ambas. #88344 (Kseniia Sumarokova).
Cambios en ajustes y configuración
- Reducir
replicated_deduplication_window_secondsde 1 semana a una hora para almacenar menos znodes en ZooKeeper cuando la tasa de inserción es baja. #87414 (Sema Checherinda). - Renombrar el ajuste
query_plan_use_new_logical_join_stepaquery_plan_use_logical_join_step. #87679 (Vladimir Cherkasov). - La nueva sintaxis permite que el parámetro del tokenizer sea más expresivo. #87997 (Elmi Ahmadov).
- Dos cambios menores en el funcionamiento de los ajustes
min_free_disk_ratio_to_perform_insertymin_free_disk_bytes_to_perform_insert: usar bytes no reservados en lugar de bytes disponibles para determinar si debe rechazarse una inserción. Probablemente esto no sea crucial si las reservas para las fusiones en segundo plano y las mutaciones son pequeñas en comparación con los umbrales configurados, pero parece más correcto. - No aplicar estos ajustes a las tablas del sistema. La razón es que seguimos queriendo que tablas comoquery_logse actualicen. Esto ayuda mucho con la depuración. Los datos escritos en las tablas del sistema suelen ser pequeños en comparación con los datos reales, por lo que deberían poder seguir escribiéndose durante mucho más tiempo con un umbral razonable demin_free_disk_ratio_to_perform_insert. #88468 (c-end).
Cambios de Keeper
- Se habilita el modo asíncrono para la replicación interna de Keeper. Keeper conservará el mismo comportamiento que antes, con posibles mejoras del rendimiento. Si está actualizando desde una versión anterior a la 23.9, primero debe actualizar a la 23.9+ y luego a la 25.10+. También puede establecer
keeper_server.coordination_settings.async_replicationen 0 antes de la actualización y habilitarlo una vez finalizada. #88515 (Antonio Andelic).
Nuevas características
Funciones
- Se añade la función
naiveBayesClassifierpara clasificar texto con Naive Bayes a partir de ngrams. #78700 (Nihal Z. Miaji). - Se añade la función
arrayExcept, que sustrae un array de otro tratándolo como un conjunto. #82368 (Joanna Hulboj). - Nueva función
convpara convertir números entre bases; actualmente admite bases de2-36. #83058 (hp). - Se añade la aggregate function
studentTTestOneSample. #85436 (Dylan). - Se añade la función
isValidASCIIpara comprobar si una cadena contiene solo caracteres ASCII. Cierra #85377. #85786 (rajat mohan). - Aggregate functions
timeSeriesChangesToGridytimeSeriesResetsToGrid. Se comportan de forma similar atimeSeriesRateToGrid: aceptan parámetros para la marca temporal de inicio, la marca temporal de fin, el step y la ventana retrospectiva, así como dos argumentos para los timestamps y los valores, pero requieren al menos 1 muestra por ventana en lugar de 2. Calculan unchanges/resetsde PromQL, contando cuántas veces cambia o disminuye el valor de la muestra dentro de la ventana especificada para cada timestamp de la cuadrícula temporal definida por los parámetros. El tipo de retorno es Array(Nullable(Float64)). #86010 (Stephen Chi). - Aggregate function
quantilePrometheusHistogram, que acepta como argumentos los límites superiores y los valores acumulados de los buckets del histograma, y realiza una interpolación lineal entre los límites superior e inferior del bucket en el que se encuentra la posición del quantile. Se comporta de forma similar a la funciónhistogram_quantile()de PromQL en histogramas clásicos. #86294 (Stephen Chi). - Se añaden variantes optimizadas case-insensitive de las funciones
startsWithyendsWith:startsWithCaseInsensitive,endsWithCaseInsensitive,startsWithCaseInsensitiveUTF8yendsWithCaseInsensitiveUTF8. #87374 (Guang Zhao).
Tablas del sistema
- Agrega una nueva tabla del sistema
database_replicascon información sobre las réplicas de bases de datos. #83408 (Konstantin Morozov). - Agrega una nueva tabla
system.aggregated_zookeeper_log. La tabla contiene estadísticas (p. ej., número de operaciones, latencia promedio, errores) de las operaciones de ZooKeeper agrupadas por ID de sesión, ruta padre y tipo de operación, y se escriben periódicamente en disco. #85102 (Miсhael Stetsyuk). - Agrega la tabla del sistema
iceberg_metadata_logpara recuperar archivos de metadatos de Iceberg durante las sentencias SELECT. #86152 (scanhex12). - Agrega advertencias de CPU y memoria a la tabla
system.warnings. #86838 (Bharat Nallan). - Tabla del sistema para archivos de metadatos de Delta Lake. #87263 (scanhex12).
Motores de tabla y almacenamiento
- Compatibilidad con el motor de tabla Alias. #76569 (RinChanNOW).
- Ahora puede usar NATS JetStream para consumir mensajes especificando las nuevas opciones
nats_streamynats_consumerpara el motor NATS. #84799 (Dmitry Novikov). - Tablas Iceberg y Delta Lake con configuración de disco. Esto permite definir tablas de usuario con un disco existente. Se añade la opción
allowed_disks_for_table_engines, que permite usar discos específicos para Iceberg. Ejemplo:CREATE TABLE test ENGINE = Iceberg('path/inside/disk') SETTING datalake_disk_name = '<some_user_disk>';### Entrada de documentación para cambios visibles para el usuario. #86778 (scanhex12). - Se añade una nueva opción de tabla
min_level_for_wide_partque permite especificar el nivel mínimo para que una parte se cree como parte wide. #88179 (Christoph Wurm).
Iceberg y lagos de datos
- Se añade compatibilidad para consultar Apache Paimon desde ClickHouse. Esta integración permite a los usuarios de ClickHouse interactuar directamente con el almacenamiento del lago de datos de Paimon. #84423 (JIaQi).
ALTER UPDATEpara el motor de tabla Iceberg. #86059 (scanhex12).
Índices y estadísticas
- Nuevo índice bloom filter
sparse_gram, útil para encontrar subcadenas largas. #79985 (scanhex12). - Se añadió la posibilidad de crear automáticamente estadísticas en todas las columnas aptas de las tablas
MergeTree. Se añadió la configuración de nivel de tablaauto_statistics_types, que almacena, separados por comas, los tipos de estadísticas que se deben crear (p. ej.,auto_statistics_types = 'minmax, uniq, countmin'). #87241 (Anton Popov).
Funcionalidades de SQL y consultas
- Se añadió compatibilidad con la sintaxis
LIMIT BY ALL. Al igual queGROUP BY ALLyORDER BY ALL,LIMIT BY ALLse expande automáticamente para usar como claves deLIMIT BYtodas las expresiones no agregadas de la cláusulaSELECT. Por ejemplo,SELECT id, name, count(*) FROM table GROUP BY id LIMIT 1 BY ALLequivale aSELECT id, name, count(*) FROM table GROUP BY id LIMIT 1 BY id, name. Esta funcionalidad simplifica las consultas cuando se quiere limitar por todas las columnas no agregadas seleccionadas sin tener que enumerarlas explícitamente. Cierra #59152. #84079 (Surya Kant Ranjan). - Trata un nombre de setting sin valor en la configuración de la consulta como equivalente a
1(p. ej.,SELECT ... SETTINGS use_query_cacheequivale ause_query_cache = 1). #85800 (thraeka). - Permite a los usuarios crear vistas temporales con la misma sintaxis que las tablas temporales. #86432 (Aly Kafoury).
- Se añadió compatibilidad con
LIMITyOFFSETnegativos. Cierra #28913. #88411 (Nihal Z. Miaji).
Características del cliente y la CLI
- Acceda a las instancias de ClickHouse Cloud con credenciales de Cloud mediante
--login. #82753 (Krishna Mannem). - Se añade la opción
--semicolons_inlinepara dar formato a las consultas de modo que los puntos y coma se coloquen en la última línea en lugar de en una línea aparte. #88018 (Jan Rada).
Configuración del servidor y gestión de cargas de trabajo
- Nuevas opciones de configuración:
logger.startupLevelylogger.shutdownLevelpermiten anular el nivel de registro durante el inicio y el apagado de ClickHouse, respectivamente. #85967 (Lennard Eijsackers). - Añade una forma de definir
WORKLOADyRESOURCEen SQL mediante la sección “resources_and_workloads” de la configuración del servidor. #87430 (Sergei Trifonov).
Comandos del sistema
- Se añade el comando
SYSTEM RECONNECT ZOOKEEPERpara forzar la desconexión y reconexión de ZooKeeper (https://github.com/ClickHouse/ClickHouse/issues/87317). #87318 (Pradeep Chhetri). - Se limita el número de colecciones con nombre mediante la configuración
max_named_collection_num_to_warnymax_named_collection_num_to_throw. Se añade la nueva métricaNamedCollectiony el errorTOO_MANY_NAMED_COLLECTIONS. #87343 (Pablo Marcos).
Keeper
- Se añaden variantes recursivas de los comandos
cp-cprymv-mvren el cliente de Keeper. #88570 (Mikhail Artemenko).
Características experimentales
- Las funciones
searchAllysearchAnyahora también funcionan con columnas no textuales. En esos casos, usan el tokenizador predeterminado. #87722 (Jimmy Aguilar Mena). - Se implementó el tipo de dato
QBit, que almacena vectores en formato segmentado por bits, y la funciónL2DistanceTransposed, que permite la búsqueda vectorial aproximada, donde el equilibrio entre precisión y velocidad se controla mediante un parámetro. #87922 (Raufs Dunamalijevs).
Mejoras de rendimiento
Ejecución y optimización de consultas
- Se mejoró el rendimiento de las consultas al refactorizar el orden y la integración de Query Condition Cache (QCC) con el análisis de índices. El filtrado de QCC ahora se aplica antes del análisis de la clave primaria y de los índices de omisión, lo que reduce cálculos de índices innecesarios. El análisis de índices se amplió para admitir varios filtros de rango, y sus resultados de filtrado ahora se vuelven a almacenar en la QCC. Esto acelera significativamente las consultas en las que el análisis de índices domina el tiempo de ejecución, especialmente las que dependen de índices de omisión (p. ej., índices vectoriales o invertidos). #82380 (Amos Bird).
- Varias microoptimizaciones para acelerar las consultas pequeñas. #83096 (Raúl Marín).
- Se comprimen los logs y los eventos de perfil en el protocolo nativo. En clusters con más de 100 réplicas, los eventos de perfil sin comprimir ocupan entre 1 y 10 MB/s, y la barra de progreso se vuelve lenta en conexiones a Internet lentas. Con esto se cierra #82533. #83586 (Alexey Milovidov).
- Se mejora la optimización de PREWHERE para condiciones como
func(primary_column) = 'xx'ycolumn in (xxx). #85529 (李扬). - Se evita el escaneo completo de
system.tablesal filtrar poruuid(puede ser útil si solo tiene el UUID a partir de los logs o de la ruta de ZooKeeper). #88379 (Azat Khuzhin).
Optimizaciones de JOIN
- Proporciona una lógica para aplicar pushdown a los predicados disyuntivos de JOIN. Ejemplo: en TPC-H Q7, para una condición sobre 2 tablas n1 y n2 como
(n1.n_name = 'FRANCE' AND n2.n_name = 'GERMANY') OR (n1.n_name = 'GERMANY' AND n2.n_name = 'FRANCE'), se extraen filtros parciales independientes para cada tabla:n1.n_name = 'FRANCE' OR n1.n_name = 'GERMANY'para n1 yn2.n_name = 'GERMANY' OR n2.n_name = 'FRANCE'para n2. #84735 (Yarik Briukhovetskyi). - Se implementó la reescritura de JOIN: 1. Convertir
LEFT ANY JOINyRIGHT ANY JOINen JOINSEMI/ANTIsi la condición de filtro siempre es falsa para las filas emparejadas o no emparejadas. Esta optimización se controla con la nueva configuraciónquery_plan_convert_any_join_to_semi_or_anti_join. 2. ConvertirFULL ALL JOINenLEFT ALL JOINoRIGHT ALL JOINsi la condición de filtro siempre es falsa para las filas no emparejadas de uno de los lados. #86028 (Dmitry Novik). - Se optimizó ligeramente el rendimiento de
HashJoinen el caso de joinsLEFT/RIGHTcon muchas filas no emparejadas. #86312 (Nikita Taranov). - La reordenación de joins ahora utiliza estadísticas. Esta funcionalidad puede habilitarse configurando
allow_statistics_optimize = 1yquery_plan_optimize_join_order_limit = 10. #86822 (Han Fei). - Se omite el recálculo de las estadísticas de la tabla hash en tiempo de ejecución durante la optimización de joins. Se añadieron nuevos eventos de perfil
JoinOptimizeMicrosecondsyQueryPlanOptimizeMicroseconds. #87683 (Vladimir Cherkasov). - Se integró
AddedColumns::appendFromBlockpara mejorar ligeramente el rendimiento de joins en algunos casos. #88455 (Nikita Taranov).
Optimizaciones de cadenas y funciones
- Mejora el rendimiento de la búsqueda en cadenas que distingue entre mayúsculas y minúsculas (operaciones como el filtrado; por ejemplo,
WHERE URL LIKE '%google%') mediante la biblioteca StringZilla, con instrucciones SIMD de la CPU cuando están disponibles. #84161 (Raúl Marín). - Mejora el rendimiento de
LIKEcon prefijo o sufijo mediante la nueva configuración predeterminadaoptimize_rewrite_like_perfect_affix. #85920 (Guang Zhao). - Mejora el rendimiento de las funciones
tokens,hasAllTokens,hasAnyTokens. #88416 (Anton Popov).
Optimizaciones de MergeTree y almacenamiento
- Añade la serialización opcional de la subcolumna
.sizepara columnas String de nivel superior en tablas MergeTree, con el fin de mejorar la compresión y habilitar un acceso eficiente a las subcolumnas. Introduce nuevas configuraciones de MergeTree para controlar la versión de serialización y optimizar expresiones para cadenas vacías. #82850 (Amos Bird). - Reduce la asignación y la copia de memoria al hacer un SELECT desde una tabla MergeTree agregante con FINAL cuando la tabla tiene columnas de tipo
SimpleAggregateFunction(anyLast). #84428 (Duc Canh Le). - Mejora el rendimiento de las fusiones verticales después de ejecutar una eliminación ligera. #86169 (Anton Popov).
- Mejora el rendimiento de las consultas rápidas con muchas partes en la tabla (optimizando
MarkRangesmediante el uso dedevectoren lugar dedeque). #86933 (Azat Khuzhin). - Mejora el rendimiento al aplicar
patch partsen modo join. #87094 (Anton Popov). - Habilita el guardado de
marksen caché y evita la E/S directa para el lector MergeTreeLazy. #87989 (Nikita Taranov). - La consulta SELECT con la cláusula
FINALsobre una tablaReplacingMergeTreecon la columnais_deletedahora se ejecuta más rápido gracias a una mejor paralelización basada en 2 optimizaciones existentes: 1) la optimizacióndo_not_merge_across_partitions_select_finalpara las particiones de la tabla que tienen una solapart2) la división de otros rangos seleccionados de la tabla enintersecting / non-intersecting, de modo que solo los rangosintersectingdeben pasar por la transformación de fusión FINAL. #88090 (Shankar Iyer).
Optimizaciones de agregación y GROUP BY
- Corrige la degradación del rendimiento causada por una clave serializada grande al agrupar por varias columnas de tipo cadena y numéricas. Cierra https://github.com/ClickHouse/ClickHouse/pull/83884#issuecomment-3187972297 cc @mkmkme . Es una continuación de https://github.com/ClickHouse/ClickHouse/pull/83884. #85924 (李扬).
- RadixSort: ayuda al compilador a usar SIMD y a la CPU a realizar una mejor precarga. Usa despacho dinámico para utilizar precarga por software solo en CPUs Intel. Continúa el trabajo de @taiyang-li en https://github.com/ClickHouse/ClickHouse/pull/77029. #86378 (Raúl Marín).
Optimizaciones de índices y de búsqueda de texto
- Se mejoró el rendimiento de la construcción del índice de texto para documentos que contienen principalmente tokens poco frecuentes. #87546 (Anton Popov).
Optimizaciones para lago de datos
Optimizaciones internas
- Mejoras en DB::SharedMutex. #87491 (Raúl Marín).
- Aceleración del caso habitual del destructor de Field. #87631 (Raúl Marín).
- Reducción del impacto de no usar fail points. #88196 (Raúl Marín).
Mejoras
Optimización y ejecución de consultas
mannWhitneyUTestya no lanza una excepción cuando ambas muestras contienen únicamente valores idénticos. Ahora devuelve un resultado válido, en consonancia con SciPy. Esto cierra: #79814. #80009 (DeanNeaht).- Se añadió una optimización experimental del orden de JOIN que puede reordenar automáticamente los JOIN para mejorar el rendimiento (controlada por la configuración
query_plan_optimize_join_order_limit). Ten en cuenta que la optimización del orden de JOIN actualmente ofrece compatibilidad limitada con estadísticas y se basa principalmente en estimaciones del número de filas de los motores de almacenamiento; en futuras versiones se añadirán una recopilación de estadísticas y una estimación de cardinalidad más sofisticadas. Si encuentras problemas con consultas JOIN después de actualizar, puedes desactivar temporalmente la nueva implementación estableciendoSET query_plan_use_new_logical_join_step = 0e informar del problema para su investigación. Nota sobre la resolución de identificadores de la cláusula USING: Se cambió la resolución de la columna coalescente de la cláusulaOUTER JOIN ... USINGpara que sea más coherente: antes, al seleccionar tanto la columna de USING como las columnas calificadas (a, t1.a, t2.a) en unOUTER JOIN, la columna de USING se resolvía incorrectamente comot1.a, mostrando 0/NULL para las filas de la tabla derecha sin coincidencia en la izquierda. Ahora, los identificadores de la cláusula USING siempre se resuelven como la columna coalescente, mientras que los identificadores calificados se resuelven como las columnas no coalescentes, independientemente de qué otros identificadores estén presentes en la consulta. Por ejemplo: ```sql SELECT a, t1.a, t2.a FROM (SELECT 1 as a WHERE 0) t1 FULL JOIN (SELECT 2 as a) t2 USING (a) — Antes: a=0, t1.a=0, t2.a=2 (incorrecto: ‘a’ se resolvía como t1.a) — Después: a=2, t1.a=0, t2.a=2 (correcto: ‘a’ es la columna coalescente). #80848 (Vladimir Cherkasov). - Se admite el filtrado de partes de datos mediante skip indexes durante la lectura para reducir lecturas innecesarias de índices. Se controla con la nueva configuración
use_skip_indexes_on_data_read(deshabilitada de forma predeterminada). Esto aborda #75774. Esto incluye parte del trabajo previo común con #81021. #81526 (Amos Bird). - La reescritura de la transacción de almacenamiento de objetos en disco elimina los blobs remotos anteriores si la transacción de metadatos se ha confirmado. #81787 (Sema Checherinda).
- Permitir configurar la estrategia de reintento de S3 y que la configuración del disco S3 se recargue en caliente al cambiar el archivo XML de configuración. #82642 (RinChanNOW).
- Se corrigió la fase de optimización para la expresión de igualdad redundante cuando el LowCardinality del tipo resultante difiere antes y después de la optimización. #82651 (Yakov Olkhovskiy).
- Se puede utilizar una columna especial para indicar la presencia de una parte de
oneof. #82885 (Ilya Golshtein). - Ahora los usuarios reciben instrucciones más claras cuando se especifican configuraciones incorrectas para el nuevo motor de tabla Kafka. #83701 (János Benjamin Antal).
- Cuando los clientes HTTP establecen el encabezado
X-ClickHouse-100-Continue: deferademás deExpect: 100-continue, ClickHouse no envía una respuesta100 Continueal cliente hasta después de validar la cuota, lo que evita desperdiciar ancho de banda de red al transmitir cuerpos de solicitud que, de todos modos, acabarían descartándose. Esto es relevante para las consultas INSERT, en las que la consulta puede enviarse en la cadena de consulta de la URL y los datos se envían en el cuerpo de la solicitud. Interrumpir una solicitud sin enviar el cuerpo completo impide reutilizar la conexión con HTTP/1.1, pero la latencia adicional de abrir nuevas conexiones suele ser insignificante en comparación con la duración total de INSERT cuando se manejan grandes volúmenes de datos. #84304 (c-end). - Ya no se pueden especificar zonas horarias para el tipo Time. #84689 (Yarik Briukhovetskyi).
- El autocompletado del cliente es más rápido y consistente al usar
system.completionsen lugar de realizar múltiples consultas a las tablas del sistema. #84694 (|2ustam). - Se simplificó la lógica relacionada con el análisis de Time[64] en el formato
best_effort(y se evitaron algunos errores). #84730 (Yarik Briukhovetskyi). - Acelera algunas consultas
JOINal construir un filtro bloom a partir del subárbol derecho en tiempo de ejecución y pasar este filtro al escaneo del subárbol izquierdo. Esto puede ser beneficioso para consultas comoSELECT avg(o_totalprice) FROM orders, customer, nation WHERE c_custkey = o_custkey AND c_nationkey=n_nationkey AND n_name = 'FRANCE'. #84772 (Alexander Gololobov). - Puedes usar parámetros de consulta después de
TOal crear una vista materializada, por ejemplo:CREATE MATERIALIZED VIEW mv TO {to_table:Identifier} AS SELECT * FROM src_table. #84899 (Diskein). - Enmascarar las credenciales de S3 en los logs al usar DATABASE ENGINE = Backup con almacenamiento S3. #85336 (Kenny Sun).
- Se actualiza jemalloc a una versión más reciente. Se mejora el perfilado de asignaciones a partir de las herramientas internas de jemalloc. El profiler global de jemalloc ahora puede habilitarse con la configuración
jemalloc_enable_global_profiler. Las asignaciones y liberaciones de memoria globales muestreadas pueden almacenarse ensystem.trace_logcon el tipoJemallocSampleal habilitar la configuraciónjemalloc_collect_global_profile_samples_in_trace_log. El perfilado de jemalloc ahora puede habilitarse de forma independiente para cada consulta mediante el ajustejemalloc_enable_profiler. El almacenamiento de muestras ensystem.trace_logpuede controlarse por consulta mediante el ajustejemalloc_collect_profile_samples_in_trace_log. #85438 (Antonio Andelic). - Se añadieron la función deltaLakeAzureCluster (similar a deltaLakeAzure para clústeres) y la función deltaLakeS3Cluster (alias de deltaLakeCluster). Resuelve #85358. #85547 (Smita Kulkarni).
- Renombrar InterpreterSystemQuery::dropReplicaImpl a InterpreterSystemQuery::dropStorageReplica - En InterpreterSystemQuery::dropDatabaseReplica: - Al eliminar con base de datos o al eliminar la réplica completa: también se elimina la réplica de cada tabla de la base de datos - Si se proporciona ‘WITH TABLES’, eliminar la réplica de cada almacenamiento - En caso contrario, la lógica no cambia; solo se llama a DatabaseReplicated::dropReplica en las bases de datos - Al eliminar una réplica de base de datos con la ruta de Keeper: - Si se proporciona ‘WITH TABLES’: - Restaurar la base de datos como Atomic - Restaurar las tablas RMT a partir de la sentencia en Keeper - Eliminar la base de datos (las tablas restauradas también se eliminan) - En caso contrario, solo se llama a DatabaseReplicated::dropReplica en la ruta de Keeper proporcionada. #85637 (Tuan Pham Anh).
- Corrige el formato inconsistente de TTL cuando contiene una función
materialize. Cierra #82828. #85749 (Alexey Milovidov). - Aplicar la configuración azure_max_single_part_copy_size a las operaciones normales de copia, de la misma manera que para la copia de seguridad. #85767 (Ilya Golshtein).
- Ralentiza los hilos del cliente de S3 ante errores reintentables en el almacenamiento de objetos S3. Esto amplía la configuración anterior
backup_slow_all_threads_after_retryable_s3_errora los discos S3 y la renombra como la más generals3_slow_all_threads_after_retryable_error. #85918 (Julia Kartseva). - Se marcan como obsoletas las configuraciones allow_experimental_variant/dynamic/json y enable_variant/dynamic/json. Ahora los tres tipos están habilitados de forma incondicional. #85934 (Pavel Kruglov).
- Se mejoró el motor de tabla S3(Azure)Queue para que pueda soportar la pérdida de la conexión con ZooKeeper sin riesgo de duplicados. Requiere habilitar la configuración de S3Queue
use_persistent_processing_nodes(se puede cambiar conALTER TABLE MODIFY SETTING). #85995 (Kseniia Sumarokova). - El estado de la tabla Iceberg ya no se almacena en un objeto de almacenamiento. Esto debería permitir usar Iceberg en ClickHouse con consultas concurrentes. #86062 (Daniil Ivanik).
- Se añadió la configuración
query_condition_cache_selectivity_threshold(valor predeterminado: 1.0), que excluye de su inserción en la caché de condiciones de consulta los resultados de escaneo de predicados con baja selectividad. Esto permite reducir el consumo de memoria de la caché de condiciones de consulta, a costa de una menor tasa de aciertos de la caché. #86076 (zhongyuankai). - Se admite el filtrado por la cadena completa de la URL (directiva
full_url) enhttp_handlers(incluidos el esquema y host:port). #86155 (Azat Khuzhin). - Se añade la configuración experimental
allow_experimental_delta_lake_writesa la funcionalidad de escritura en Delta Lake, deshabilitada de forma predeterminada. #86180 (Kseniia Sumarokova). - Se corrige la detección de systemd en el script de init.d (corrige la comprobación “Install packages”). #86187 (Azat Khuzhin).
- Añade una nueva métrica dimensional
startup_scripts_failure_reason. Esta métrica es necesaria para distinguir entre distintos tipos de errores que provocan el fallo de los scripts de inicio. En particular, a efectos de generar alertas, necesitamos distinguir entre errores transitorios (p. ej.,MEMORY_LIMIT_EXCEEDEDoKEEPER_EXCEPTION) y errores no transitorios. #86202 (Miсhael Stetsyuk). - Varios archivos de datos en las escrituras de Iceberg. #86275 (scanhex12).
- Más tipos de partición en las operaciones de escritura de Iceberg. Esto cierra #86206. #86298 (scanhex12).
- Permitir omitir la función
identity()en la partición de una tabla Iceberg. #86314 (scanhex12). - Se añadió la posibilidad de habilitar el logging JSON solo para un canal específico; para ello, configure
logger.formatting.channelcon uno de estos valores:syslog/console/errorlog/log. #86331 (Azat Khuzhin). - Se agregó un límite de filas/bytes para los archivos de datos insertados en delta lake. Se controla mediante la configuración
delta_lake_insert_max_rows_in_data_fileydelta_lake_insert_max_bytes_in_data_file. #86357 (Kseniia Sumarokova). - Se permite usar números nativos en
WHERE. Ya se permite usarlos como argumentos de funciones lógicas. Esto simplifica las optimizaciones de pushdown de filtros y de move-to-prewhere. #86390 (Nikolai Kochetov). - Se corrigió un error que se producía al ejecutar
SYSTEM DROP REPLICAen un catálogo con metadatos corruptos. #86391 (Nikita Mikhaylov). - Añade reintentos adicionales para la comprobación de acceso al disco (
skip_access_check=0) en Azure, porque el aprovisionamiento del acceso puede tardar bastante tiempo. #86419 (Alexander Tokmakov). - Renombrar la configuración
evaluation_timecomopromql_evaluation_time. #86459 (Vitaly Baranov). - Configuración para eliminar archivos al hacer
dropen Iceberg. Esto cierra #86211. #86501 (scanhex12). - Reduce el uso de memoria en las operaciones de escritura de Iceberg. #86544 (scanhex12).
- Hacer que la función
today()no distinga entre mayúsculas y minúsculas para mantener la coherencia con otras funciones relacionadas con fecha y hora, comoNOW(). #86561 (Kaviraj Kanagaraj). - Hacer que la ventana de antigüedad en las funciones
timeSeries*()sea abierta por la izquierda y cerrada por la derecha. #86588 (Vitaly Baranov). - Se añaden eventos de perfil
FailedInternal*Query. #86627 (Shane Andrade). - Hacer que el bloqueo del bucket en el modo ordenado de S3Queue sea persistente, de forma similar a los nodos de procesamiento cuando
use_persistent_processing_nodes = 1. Añadir inyección de fallos en Keeper en las pruebas. #86628 (Kseniia Sumarokova). - Corrige el manejo de usuarios cuyos nombres contienen un punto cuando se añaden mediante un archivo de configuración. #86633 (Mikhail Koviazin).
- Se añade una métrica asíncrona del uso de memoria en las consultas (
QueriesMemoryUsageyQueriesPeakMemoryUsage). #86669 (Azat Khuzhin). - Puede usar la opción
clickhouse-benchmark --precisepara obtener informes más precisos de QPS y otras métricas por intervalo. Ayuda a obtener un QPS consistente cuando la duración de las consultas es comparable con el intervalo de informes--delay D. #86684 (Sergei Trifonov). - Permitir configurar los valores
nicede los hilos de Linux para asignar prioridades más altas o más bajas a algunos hilos (merge/mutate, consulta, vista materializada, cliente de ZooKeeper). #86703 (Miсhael Stetsyuk). - Corrige el confuso error “specified upload does not exist”, que se produce cuando la excepción original se pierde durante la carga multiparte debido a una condición de carrera. #86725 (Julia Kartseva).
- Se limita la descripción del plan de consulta en la consulta
EXPLAIN. No se calcula la descripción para consultas distintas deEXPLAIN. Se añadió la configuraciónquery_plan_max_step_description_length. #86741 (Nikolai Kochetov). - Se añade la posibilidad de ajustar las señales pendientes para intentar evitar CANNOT_CREATE_TIMER (para los perfiladores de consultas,
query_profiler_real_time_period_ns/query_profiler_cpu_time_period_ns). También se recopilaSigQde/proc/self/statuspara la introspección (siProcessSignalQueueSizeestá cerca deProcessSignalQueueLimit, es probable que se produzcan erroresCANNOT_CREATE_TIMER). #86760 (Azat Khuzhin). - Inserción/selección distribuida para lagos de datos. #86783 (scanhex12).
- Mejora del rendimiento de la solicitud RemoveRecursive en Keeper. #86789 (Antonio Andelic).
- Elimina los espacios en blanco adicionales en PrettyJSONEachRow al generar salida de tipo JSON. #86819 (Pavel Kruglov).
- Amplía la ventana de deduplicación replicada hasta 10000. #86820 (Sema Checherinda).
- Ahora escribimos los tamaños de los blobs de
prefix.pathcuando se elimina un directorio en un disco reescribible simple. #86908 (alesapin). - Hacer que la función
yesterday()no distinga entre mayúsculas y minúsculas y sea consistente con la funcióntoday(). #86914 (Kaviraj Kanagaraj). - Admite pruebas de rendimiento de
.xmlen instancias remotas de ClickHouse, incluido ClickHouse Cloud. Ejemplo de uso:tests/performance/scripts/perf.py tests/performance/math.xml --runs 10 --user <username> --password <password> --host <hostname> --port <port> --secure. #86995 (Raufs Dunamalijevs). - Respetar los límites de memoria en algunos puntos en los que se sabe que se asignan cantidades significativas de memoria (>16MiB) (ordenación, inserciones asíncronas y file log). #87035 (Azat Khuzhin).
- Evita que las configuraciones no booleanas no establezcan ningún valor en las consultas. Mejora de #85800. #87084 (thraeka).
- Admite sugerencias para nombres de formatos. Cierra #86761. #87092 (flynn).
- Las réplicas remotas omiten el análisis de índices de omisión cuando no hay proyecciones. #87096 (zoomxi).
- Genera una excepción si la configuración
network_compression_methodno es un códec genérico compatible. #87097 (Robert Schulze). - La tabla del sistema
system.query_cacheahora devuelve todas las entradas de la caché de resultados de consultas, mientras que antes solo devolvía las entradas compartidas o las entradas no compartidas del mismo usuario y rol. Esto es aceptable, ya que se supone que las entradas no compartidas no revelan los resultados de las consultas, mientras quesystem.query_cachedevuelve los textos de las consultas. Esto hace que el comportamiento de la tabla del sistema sea más parecido al desystem.query_log. #87104 (Robert Schulze). - Se añadió soporte para autenticación y SSL en la función de tabla
arrowFlight(). #87120 (Vitaly Baranov). - Agregar un nuevo parámetro al motor de tabla
S3y a la función de tablas3, llamadostorage_class_name, que permite especificar el almacenamiento por niveles inteligente compatible con AWS. Se admite tanto en formato key-value como en formato posicional (obsoleto). #87122 (alesapin). - Se permite deshabilitar la codificación UTF-8 para la tabla de ytsaurus. #87150 (MikhailBurdukov).
- Compatibilidad con Azure para discos de lago de datos. #87173 (scanhex12).
- Se añade el nuevo parámetro del índice de texto
dictionary_block_frontcoding_compressionpara controlar la compresión del diccionario. De forma predeterminada, está habilitado para usar la compresiónfront-coding. #87175 (Elmi Ahmadov). - Habilitar la evaluación con cortocircuito para la función parseDateTime. #87184 (Pavel Kruglov).
- Se admite
alter table ... materialize statistics all, que materializa todas las estadísticas de una tabla. #87197 (Han Fei). - Se deshabilita
s3_slow_all_threads_after_retryable_errorde forma predeterminada. #87198 (Nikita Mikhaylov). - Añade una nueva tabla
system.aggregated_zookeeper_log. La tabla contiene estadísticas (p. ej., número de operaciones, latencia media y errores) de las operaciones de ZooKeeper agrupadas por ID de sesión, ruta padre y tipo de operación, y que se vuelcan periódicamente a disco. #87208 (Miсhael Stetsyuk). - Renombrar la función de tabla
arrowflightaarrowFlight. #87249 (Vitaly Baranov). - Se actualizó
clickhouse-benchmarkpara que acepte-en lugar de_en sus opciones de la CLI. #87251 (Ahmed Gouda). - Se añadió una configuración de sesión para excluir una lista de skip indexes de la materialización al insertar (
exclude_materialize_skip_indexes_on_insert). Se añadió una configuración de tabla de MergeTree para excluir una lista de skip indexes de la materialización durante la fusión (exclude_materialize_skip_indexes_on_merge). #87252 (George Larionov). - Hacer que el vaciado en
system.crash_logdurante el manejo de señales sea síncrono. #87253 (Miсhael Stetsyuk). - Añadir una nueva columna
statisticsa system.parts_columns. #87259 (Han Fei). - Se añadió la configuración
inject_random_order_for_select_without_order_by, que insertaORDER BY rand()en las consultasSELECTde nivel superior sin cláusulaORDER BY. #87261 (Rui Zhang). - Admite otros formatos (ORC, Avro) en las escrituras de Iceberg. Se cierra #86179. #87277 (scanhex12).
- Se mejora el mensaje de error de joinGet para que indique correctamente que el número de
join_keysno coincide con el número deright_table_keys. #87279 (Isak Ellmer). - Compacta los datos de todos los hilos antes de insertarlos en las vistas materializadas, en función de los ajustes
min_insert_block_size_rows_for_materialized_viewsymin_insert_block_size_bytes_for_materialized_views. Anteriormente, siparallel_view_processingestaba habilitado, cada hilo que insertaba en una vista materializada específica compactaba la inserción de forma independiente, lo que podía generar un mayor número de partes. #87280 (Antonio Andelic). - Este parche añade la capacidad de comprobar el
statde cualquier nodo de Keeper durante lawrite tx. Esto puede ayudar a detectar el problema ABA. #87282 (Mikhail Artemenko). - Redirigir las solicitudes intensivas de ytsaurus a proxies de alta capacidad. #87342 (MikhailBurdukov).
- Este parche corrige las reversiones de las operaciones
unlink/rename/removeRecursive/removeDirectory/etc., así como el recuento de enlaces físicos en cualquier posible carga de trabajo de metadatos para transacciones en disco, y simplifica las interfaces para hacerlas más genéricas, de modo que puedan reutilizarse en otros almacenes de metadatos. #87358 (Mikhail Artemenko). - Se añadió el parámetro de configuración
keeper_server.tcp_nodelay, que permite desactivarTCP_NODELAYpara Keeper. #87363 (Copilot). - Se admite
--connectionenclickhouse-benchmarks. Es igual que enclickhouse-client: puede especificar conexiones predefinidas enconfig.xml/config.yamldel cliente, en la rutaconnections_credentials, para evitar tener que indicar explícitamente el usuario/la contraseña mediante argumentos de la línea de comandos. Se añade compatibilidad con--accept-invalid-certificateenclickhouse-benchmark. #87370 (Azat Khuzhin). - Ahora, la configuración
max_insert_threadssurtirá efecto en las tablas Iceberg. #87407 (alesapin). - Añade histogramas y métricas dimensionales a
PrometheusMetricsWriter. De esta forma, el handlerPrometheusRequestHandlertendrá todas las métricas esenciales y podrá usarse para una recopilación de métricas fiable y con baja sobrecarga en la nube. #87521 (Miсhael Stetsyuk). - La función
hasTokenahora devuelve cero coincidencias para el token vacío (mientras que antes generaba una excepción). #87564 (Jimmy Aguilar Mena). - Se añade compatibilidad con índices de texto para los valores de
ArrayyMap(mapKeysymapValues). Las funciones compatibles sonmapContainsKeyyhas. #87602 (Elmi Ahmadov). - Se añade una nueva métrica
ZooKeeperSessionExpiredque indica el número de sesiones globales de ZooKeeper caducadas. #87613 (Miсhael Stetsyuk). - Use el cliente de almacenamiento S3 con ajustes específicos para copias de seguridad (por ejemplo, backup_slow_all_threads_after_retryable_s3_error) para la copia del lado del servidor (nativa) hacia un destino de copia de seguridad. Marque s3_slow_all_threads_after_retryable_error como obsoleto. #87660 (Julia Kartseva).
- Corrige la gestión incorrecta de las configuraciones
max_joined_block_size_rowsymax_joined_block_size_bytesdurante la serialización del plan de consulta con la opción experimentalmake_distributed_plan. #87675 (Vladimir Cherkasov). - La configuración
enable_http_compressionahora es la predeterminada. Esto significa que, si un cliente acepta compresión HTTP, el servidor la usará. Sin embargo, este cambio tiene ciertas desventajas. El cliente puede solicitar un método de compresión pesado, comobzip2, lo cual no es razonable, y aumentará el consumo de recursos del servidor (pero esto solo será visible cuando se transfieran resultados grandes). El cliente puede solicitargzip, que no está tan mal, pero es subóptimo en comparación conzstd. Cierra #71591. #87703 (Alexey Milovidov). - Se añadió una nueva configuración,
keeper_hosts, que expone la lista de hosts de [Zoo]Keeper a los que ClickHouse puede conectarse. #87718 (Nikita Mikhaylov). - Añade
ALTER TABLE REWRITE PARTS: reescribe las partes de la tabla desde cero usando toda la nueva configuración (ya que algunas, comouse_const_adaptive_granularity, solo se aplicarán a las partes nuevas). #87774 (Azat Khuzhin). - Agregar los valores
fromytoa los dashboards del sistema para facilitar las investigaciones históricas. #87823 (Mikhail f. Shiryaev). - Se añade más información para el seguimiento del rendimiento en las consultas SELECT de Iceberg. #87903 (Daniil Ivanik).
- Añade la nueva configuración
joined_block_split_single_rowpara reducir el uso de memoria en los hash joins con muchas coincidencias por clave. Esto permite dividir en fragmentos los resultados del hash join incluso dentro de las coincidencias de una sola fila de la tabla izquierda, lo que resulta especialmente útil cuando una fila de la tabla izquierda coincide con miles o millones de filas de la tabla derecha. Antes, todas las coincidencias tenían que materializarse de una sola vez en memoria. Esto reduce el uso máximo de memoria, pero puede aumentar el uso de CPU. #87913 (Vladimir Cherkasov). - Mejora de la caché del sistema de archivos: reutilización del iterador de prioridad de la caché entre hilos que reservan espacio en la caché de forma concurrente. #87914 (Kseniia Sumarokova).
- Se añadió la posibilidad de limitar las solicitudes de
Keeper(ajustemax_request_size, igual quejute.maxbufferparaZooKeeper, OFF de forma predeterminada por compatibilidad con versiones anteriores; se activará en próximas versiones). #87952 (Azat Khuzhin). - Se corrige
clickhouse-benchmarkpara que no incluya trazas de pila en los mensajes de error de manera predeterminada. #87954 (Ahmed Gouda). - Evite usar la carga asíncrona de marks en el thread pool (
load_marks_asynchronously=1) cuando los marks estén en caché (ya que el pool puede estar saturado y las consultas sufrirán una penalización por ello, incluso si los marks ya están en caché). #87967 (Azat Khuzhin). - Ytsaurus: permitir la creación de tablas/funciones de tabla/diccionarios con un subconjunto de columnas. #87982 (MikhailBurdukov).
- A partir de ahora,
system.zookeeper_connection_logviene habilitado de forma predeterminada y puede usarse para obtener información sobre las sesiones de Keeper. #88011 (János Benjamin Antal). - Hacer que el comportamiento de TCP y HTTP sea coherente cuando se pasan tablas externas duplicadas. HTTP permite pasar una tabla temporal varias veces. #88032 (Sema Checherinda).
- Se eliminan los MemoryPools personalizados para leer Arrow/ORC/Parquet. Este componente parece innecesario después de https://github.com/ClickHouse/ClickHouse/pull/84082 porque ahora rastreamos todas las asignaciones de memoria en cualquier caso. #88035 (Nikita Mikhaylov).
- Se permite crear una base de datos
Replicatedsin argumentos. #88044 (Pervakov Grigorii). - Se añadió compatibilidad para conectarse al puerto TLS de clickhouse-keeper y se mantuvieron los nombres de las opciones igual que en clickhouse-client. #88065 (Pradeep Chhetri).
- Se añadió un nuevo evento de perfil para rastrear cuántas veces se rechazó una fusión en segundo plano por superar los límites de memoria. #88084 (Grant Holly).
- Se añadió el parámetro opcional
start_valuea la funcióngenerateSerialIDpara especificar valores iniciales personalizados para las nuevas series. #88085 (Manuel). - Habilita el analizador para validar las expresiones predeterminadas de columna en CREATE/ALTER TABLE. #88087 (Max Justus Spransy).
- Mejora interna en la planificación de consultas: uso de JoinStepLogical para
CROSS JOIN. #88151 (Vladimir Cherkasov). - Compatibilidad total con el operador
IS NOT DISTINCT FROM(<=>). #88155 (simonmichal). - Activar de forma predeterminada el perfilador global por muestreo: recopilar stacktraces de todos los hilos cada 10 segundos de tiempo de CPU y de tiempo real. #88209 (Alexander Tokmakov).
- Se corrigió la compatibilidad de las operaciones
EXCHANGE TABLESen tablas con el motorAlias. El motor ahora almacena la tabla de destino como nombres de base de datos y de tabla, en lugar de un ID de almacenamiento constante, lo que le permite resolver correctamente la tabla de destino después de los intercambios de tablas. #88233 (Kai Zhu). - Añade la configuración
temporary_files_buffer_sizepara controlar el tamaño del búfer de escritura de archivos temporales. * Optimiza el consumo de memoria de la operaciónscatter(usada, por ejemplo, en grace hash join) para columnasLowCardinality. #88237 (Vladimir Cherkasov). - Se añadió compatibilidad para la lectura directa desde índices de texto con réplicas paralelas. Se mejoró el rendimiento de la lectura de índices de texto desde el almacenamiento de objetos. #88262 (Anton Popov).
- Ahora la función
generateSerialIDadmite un argumento no constante que contiene el nombre de la serie. Cierra #83750. #88270 (Alexey Milovidov). - Base de datos de catálogos de data lakes para procesamiento distribuido. #88273 (scanhex12).
- Actualización del SDK de Azure para incluir la corrección de ‘Content-Length’ observada en las funcionalidades de copia y creación de contenedores. #88278 (Smita Kulkarni).
- Hacer que la función lag sea insensible a mayúsculas y minúsculas para mantener la compatibilidad con MySQL. #88322 (Lonny Kapelushnik).
- Se agrega la configuración
keeper_server.coordination_settings.check_node_acl_on_remove. Si está habilitada, antes de eliminar un nodo se verificarán las ACL tanto del propio nodo como del nodo padre. De lo contrario, solo se verificará la ACL del nodo padre. #88513 (Antonio Andelic). - Las columnas
JSONahora se muestran con un formato más legible al usar el formatoVertical. Cierra #81794. #88524 (Frank Rosner). - Almacena los archivos de
clickhouse-client(p. ej., el historial de consultas) en las ubicaciones descritas en la especificación XDG Base Directories, en lugar de en la raíz del directorio personal.~/.clickhouse-client-historyse seguirá usando si ya existe. #88538 (Konstantin Bogdanov). - Corrige una fuga de memoria provocada por
GLOBAL IN(https://github.com/ClickHouse/ClickHouse/issues/88615). #88617 (pranav mehta). - Se añadió una sobrecarga a hasAny/hasAllTokens para que acepten una cadena como entrada. #88679 (George Larionov).
- Después de este parche, la heurística
to_remove_small_parts_at_rightse ejecutará antes de calcular la puntuación del rango de merge. Antes, el selector de merge elegía el merge wide y luego filtraba por su sufijo. Corrección de: #85374. #88736 (Mikhail Artemenko). - Agrega un paso al script de posinstalación para
clickhouse-keeperque habilita su inicio al arrancar. #88746 (YenchangChan). - Comprobar las credenciales en la interfaz web solo al pegarlas, en lugar de hacerlo con cada pulsación de tecla. Esto evita un problema con servidores LDAP mal configurados. Esto cierra #85777. #88769 (Alexey Milovidov).
- Limita la longitud del mensaje de excepción cuando se infringe una restricción. En versiones anteriores, podía obtenerse un mensaje de excepción muy largo cuando se insertaba una cadena muy larga, y acababa escribiéndose en el query_log. Cierra #87032. #88801 (Alexey Milovidov).
Corrección de errores (mal funcionamiento visible para el usuario en una versión estable oficial)
- Los resultados de las consultas ALTER solo se validan en el nodo iniciador para las bases de datos Replicated y las tablas replicadas internamente. Esto corrige situaciones en las que una consulta ALTER ya confirmada podía quedarse bloqueada en otros nodos. #83849 (János Benjamin Antal).
- Limita el número de tareas de cada tipo en
BackgroundSchedulePool. Evita situaciones en las que todos los slots están ocupados por tareas de un solo tipo, mientras otras tareas sufren inanición. También evita interbloqueos cuando las tareas se esperan entre sí. Esto se controla mediante la configuración del servidorbackground_schedule_pool_max_parallel_tasks_per_type_ratio. #84008 (Alexander Tokmakov). - Se corrigió un problema en GeoParquet que provocaba errores de protocolo en el cliente. #84020 (Michael Kolupaev).
- Se corrige la resolución de funciones dependientes del host, como shardNum(), en subconsultas en el nodo iniciador. #84409 (Eduard Karacharov).
- Apague correctamente las tablas al recuperar la réplica de la base de datos. Un apagado incorrecto provocaría un LOGICAL_ERROR en algunos motores de tabla durante la recuperación de la réplica de la base de datos. #84744 (Antonio Andelic).
- Verificar los derechos de acceso al generar sugerencias de corrección de errores tipográficos para el nombre de la base de datos. #85371 (Dmitry Novik).
- Se corrigió el manejo incorrecto de fechas anteriores al epoch con fracciones de segundo en varias funciones relacionadas con fecha y hora, como
parseDateTime64BestEffort,change{Year,Month,Day}ymakeDateTime64. Anteriormente, la parte subsegundo se restaba de los segundos en lugar de sumarse. Por ejemplo,parseDateTime64BestEffort('1969-01-01 00:00:00.468')devolvía1968-12-31 23:59:59.532en lugar de1969-01-01 00:00:00.468. #85396 (xiaohuanlin). -
- LowCardinality para columnas de hive 2. Completar las columnas de hive antes de las columnas virtuales (necesario para https://github.com/ClickHouse/ClickHouse/pull/81040) 3. LOGICAL_ERROR con un formato vacío para hive #85528 4. Corregir la comprobación de que las columnas de partición de hive sean las únicas columnas 5. Verificar que todas las columnas de hive estén especificadas en el esquema 6. Corrección parcial para parallel_replicas_cluster con hive 7. Usar un contenedor ordenado en extractkeyValuePairs para las utilidades de hive (necesario para https://github.com/ClickHouse/ClickHouse/pull/81040). #85538 (Arthur Passos).
- Se evita la optimización innecesaria del primer argumento de las funciones
IN, que a veces provocaba un error cuando se utilizaba el mapeo de arrays. #85546 (Yakov Olkhovskiy). - La correspondencia entre los identificadores de origen de Iceberg y los nombres de Parquet no se ajustó al esquema al escribir el archivo Parquet. Este PR procesa el esquema correspondiente a cada archivo de datos de Iceberg, no el actual. #85829 (Daniil Ivanik).
- Se corrige la lectura del tamaño del archivo, separándola de su apertura. Está relacionado con https://github.com/ClickHouse/ClickHouse/pull/33372, que se introdujo en respuesta a un error en los kernels de Linux anteriores a la versión
5.10. #85837 (Konstantin Bogdanov). - ClickHouse Keeper ya no falla al iniciarse en sistemas donde IPv6 está deshabilitado a nivel del kernel (p. ej., RHEL con ipv6.disable=1). Ahora intenta usar un listener IPv4 como alternativa si falla el listener IPv6 inicial. #85901 (jskong1124).
- Este PR cierra #77990. Se agregó compatibilidad para TableFunctionRemote con réplicas paralelas en globalJoin. #85929 (zoomxi).
- Se corrige un puntero nulo en OrcSchemaReader::initializeIfNeeded(). Este PR soluciona el siguiente problema: #85292. #85951 (yanglongwei).
- Añade una comprobación para permitir subconsultas correlacionadas en la cláusula
FROMsolo si usan columnas de la consulta externa. Corrige #85469. Corrige #85402. #85966 (Dmitry Novik). - Se corrige la actualización mediante ALTER de una columna con una subcolumna usada en la expresión materializada de otra columna. Anteriormente, una columna materializada con una subcolumna en su expresión no se actualizaba correctamente. #85985 (Pavel Kruglov).
- Prohibir la modificación de columnas cuyas subcolumnas se utilicen en la PK o en la expresión de partición. #86005 (Pavel Kruglov).
- Se corrige el fallo de los comandos ALTER COLUMN IF EXISTS cuando el estado de una columna cambia dentro de la misma sentencia ALTER. Comandos como DROP COLUMN IF EXISTS, MODIFY COLUMN IF EXISTS, COMMENT COLUMN IF EXISTS y RENAME COLUMN IF EXISTS ahora manejan correctamente los casos en los que una columna es eliminada por un comando previo de la misma sentencia. #86046 (xiaohuanlin).
- Se corrige la lectura de subcolumnas con un modo de mapeo de columnas distinto del predeterminado en el almacenamiento DeltaLake. #86064 (Kseniia Sumarokova).
- Se corrigió el uso de valores predeterminados incorrectos para la ruta con una sugerencia de Enum dentro de JSON. #86065 (Pavel Kruglov).
- Análisis de la URL del catálogo hive de DataLake con saneamiento de la entrada. Cierra #86018. #86092 (rajat mohan).
- Se corrigió un error lógico durante el redimensionamiento dinámico de la caché del sistema de archivos. Cierra #86122. Cierra https://github.com/ClickHouse/clickhouse-core-incidents/issues/473. #86130 (Kseniia Sumarokova).
- Utiliza
NonZeroUInt64paralogs_to_keepen DatabaseReplicatedSettings. #86142 (Tuan Pham Anh). - Una consulta
FINALcon índice de salto generaba una excepción si la tabla (p. ej.,ReplacingMergeTree) se había creado con la configuraciónindex_granularity_bytes = 0. Ese problema ya se ha corregido. #86147 (Shankar Iyer). - Elimina el comportamiento indefinido y corrige problemas en el análisis de la expresión de partición de Iceberg. #86166 (Daniil Ivanik).
- Se corrigió la inferencia de Date/DateTime/DateTime64 para fechas que están fuera del rango admitido. #86184 (Pavel Kruglov).
- Se corrige un cierre inesperado cuando hay bloques const y no const en un mismo INSERT. #86230 (Azat Khuzhin).
- Procesa por defecto las inclusiones de
/etc/metrika.xmlal crear discos desde SQL. #86232 (alekar). - Se corrige accurateCastOrNull/accurateCastOrDefault al convertir de String a JSON. #86240 (Pavel Kruglov).
- Se admiten directorios sin ’/’ en el motor Iceberg. #86249 (scanhex12).
- Se corrigió un fallo en replaceRegex con un haystack de tipo FixedString y una needle vacía. #86270 (Raúl Marín).
- Se corrige un fallo durante ALTER UPDATE Nullable(JSON). #86281 (Pavel Kruglov).
- Se corrigió la falta del definidor de columna en system.tables. #86295 (Raúl Marín).
- Se corrige la conversión de tipo de LowCardinality(Nullable(T)) a Dynamic. #86365 (Pavel Kruglov).
- Se corrige un error lógico durante la escritura en DeltaLake. Cierra #86175. #86367 (Kseniia Sumarokova).
- Se corrigió
416 The range specified is invalid for the current size of the resource. The range specified is invalid for the current size of the resourceal leer blobs vacíos desde Azure blob storage para el disco plain_rewritable. #86400 (Julia Kartseva). - Corregido GROUP BY Nullable(JSON). #86410 (Pavel Kruglov).
- Se corrigió un error en las vistas materializadas: una MV podía dejar de funcionar si se creaba, se eliminaba y luego se volvía a crear con el mismo nombre. #86413 (Alexander Tokmakov).
- Generar un error si no hay ninguna réplica disponible al leer desde las funciones *cluster. #86414 (Julian Maicher).
- Se corrige la fuga de
MergesMutationsMemoryTrackingdebida a las tablasBuffery se corrigequery_views_logpara el streaming desdeKafka(y otros). #86422 (Azat Khuzhin). - Se corrige show tables después de eliminar la tabla de referencia del almacenamiento de alias. #86433 (RinChanNOW).
- Se corrige la falta del encabezado de fragmento cuando send_chunk_header está habilitado y se invoca una UDF a través del protocolo HTTP. #86469 (Vladimir Cherkasov).
- Se corrige un posible bloqueo mutuo cuando están habilitados los flushes del perfil de jemalloc. #86473 (Azat Khuzhin).
- Se corrige la lectura de subcolumnas en el motor de tabla DeltaLake. Cierra #86204. #86477 (Kseniia Sumarokova).
- Manejo adecuado del ID del host loopback para evitar colisiones al procesar tareas de DDL:. #86479 (Tuan Pham Anh).
- Se corrigió
detach/attachen las tablas del motor de base de datos PostgreSQL con columnas numéricas/decimales. #86480 (Julian Maicher). - Se corrige el uso de memoria sin inicializar en getSubcolumnType. #86498 (Raúl Marín).
- Las funciones
searchAnyysearchAll, cuando se llaman con patrones vacíos, ahora devuelventrue(es decir, “coincide con todo”). Antes, devolvíanfalse. (issue #86300). #86500 (Elmi Ahmadov). - Se corrige la función
timeSeriesResampleToGridWithStaleness()cuando el primer intervalo no tiene ningún valor. #86507 (Vitaly Baranov). - Se corrige el bloqueo causado por establecer
merge_tree_min_read_task_sizeen 0. #86527 (yanglongwei). - Durante la lectura, el formato de cada archivo de datos se obtiene de los metadatos de Iceberg (antes se obtenía de los argumentos de la tabla). #86529 (Daniil Ivanik).
- Corrige un fallo por el que algunos datos válidos enviados por usuarios a una columna
AggregateFunction(quantileDD)podían hacer que las fusiones entraran en una recursión infinita. #86560 (Raphaël Thériault). - Se corrige que el motor de BD Backup provoque una excepción al ejecutar una consulta con archivos de partes de tamaño cero. #86563 (Max Justus Spransy).
- Se corrige la ausencia del encabezado de fragmento cuando send_chunk_header está habilitado y la UDF se invoca a través del protocolo HTTP. #86606 (Vladimir Cherkasov).
- Se corrige el error lógico de S3Queue “Expected current processor to be equal to ”, que se producía por la expiración de la sesión de Keeper. #86615 (Kseniia Sumarokova).
- Errores relacionados con la nulabilidad en insert y pruning. Esto cierra #86407. #86630 (scanhex12).
- No desactive la caché del sistema de archivos si la caché de metadatos de Iceberg está desactivada. #86635 (Daniil Ivanik).
- Se corrigió el error ‘Deadlock in Parquet::ReadManager (single-threaded)’ del lector de Parquet v3. #86644 (Michael Kolupaev).
- Se corrige el soporte para IPv6 en
listen_hostpara ArrowFlight. #86664 (Vitaly Baranov). - Corrige el cierre en el manejador de
ArrowFlight. Este PR corrige #86596. #86665 (Vitaly Baranov). - Se corrige un problema de las consultas distribuidas con
describe_compact_output=1. #86676 (Azat Khuzhin). - Se corrigieron el análisis de las definiciones de ventana y la aplicación de los parámetros de consulta. #86720 (Azat Khuzhin).
- Se corrigió la excepción
Partition strategy wildcard can not be used without a '_partition_id' wildcard.al crear una tabla conPARTITION BY, pero sin el comodín de partición, algo que solía funcionar en versiones anteriores a la 25.8. Cierra https://github.com/ClickHouse/clickhouse-private/issues/37567. #86748 (Kseniia Sumarokova). - Se corrige LogicalError si las consultas paralelas intentan adquirir un único bloqueo. #86751 (Pervakov Grigorii).
- Corrige la escritura de NULL en los datos JSON compartidos del formato de entrada RowBinary y añade algunas validaciones adicionales en ColumnObject. #86812 (Pavel Kruglov).
- Compatibilidad con tipos JSON/Dynamic en tablas creadas con la función de tabla
cluster. #86821 (Pavel Kruglov). - Se corrige la permutación vacía de Tuple con límite. #86828 (Pavel Kruglov).
- No use un nodo de Keeper independiente para los nodos de procesamiento persistentes. Corrección de https://github.com/ClickHouse/ClickHouse/pull/85995. Cierra #86406. #86841 (Kseniia Sumarokova).
- Se corrigió una tabla del motor TimeSeries que impedía la creación de una nueva réplica en una base de datos Replicated. #86845 (Nikolay Degterinsky).
- Se corrige la consulta a
system.distributed_ddl_queueen los casos en que faltan ciertos nodos de Keeper en algunas tareas. #86848 (Antonio Andelic). - Se corrigió el reposicionamiento al final del bloque descomprimido. #86906 (Pavel Kruglov).
- Procesamiento de la excepción que se lanza durante la ejecución asíncrona del iterador de Iceberg. #86932 (Daniil Ivanik).
- Se corrige el guardado de configuraciones XML preprocesadas de gran tamaño. #86934 (c-end).
- Se corrige cómo se rellena el campo
dateen la tabla system.iceberg_metadata_log. #86961 (Daniil Ivanik). - Se corrigió la recalculación infinita de
TTLconWHERE. #86965 (Anton Popov). - Se corrige el hecho de que el resultado de la función calculada en la CTE fuera no determinista en la consulta. #86967 (Yakov Olkhovskiy).
- Se corrige LOGICAL_ERROR en EXPLAIN con pointInPolygon en columnas de la clave primaria. #86971 (Michael Kolupaev).
- Se corrigió un posible resultado erróneo de la función
uniqExactcon los modificadoresROLLUPyCUBE. #87014 (Nikita Taranov). - Corrige las tablas de lago de datos cuyo nombre contiene una secuencia codificada en porcentaje. Cierra #86626. #87020 (Anton Ivashkin).
- Se corrigió la resolución del esquema de la tabla con la table function
url()cuando la configuraciónparallel_replicas_for_cluster_functionsestá establecida en 1. #87029 (Konstantin Bogdanov). - Aplicar correctamente CAST a la salida de PREWHERE tras dividirla en varios pasos. #87040 (Antonio Andelic).
- Se corrigió el funcionamiento de las actualizaciones ligeras con la cláusula
ON CLUSTER. #87043 (Anton Popov). - Se corrige la compatibilidad de algunos estados de funciones de agregación con el argumento String. #87049 (Pavel Kruglov).
- Corrige el comportamiento incorrecto de
IS NULLen columnas Nullable enOUTER JOINconoptimize_functions_to_subcolumns; se cierra #78625. #87058 (Vladimir Cherkasov). - Soluciona un problema por el que no se transfería el nombre del modelo de OpenAI. #87100 (Kaushik Iska).
- EmbeddedRocksDB: La ruta debe estar dentro de user_files. #87109 (Raúl Marín).
- Se corrigió un problema en las tablas KeeperMap creadas antes de la versión 25.1, que dejaban datos en ZooKeeper después de la consulta DROP. #87112 (Nikolay Degterinsky).
- Corrige la lectura de los ID de campo de maps y arrays al leer Parquet. #87136 (scanhex12).
- Se corrige la lectura de Array con la subcolumna de tamaños del array durante la materialización diferida. #87139 (Pavel Kruglov).
- Se corrigió la contabilización incorrecta de la liberación de datos temporales en el seguimiento del límite
max_temporary_data_on_disk_size, cierra #87118. #87140 (JIaQi). - La función checkHeaders ahora valida correctamente las cabeceras proporcionadas y rechaza las cabeceras prohibidas. Autor original: Michael Anastasakis (@michael-anastasakis). #87172 (Raúl Marín).
- Iguala el comportamiento de
toDateytoDate32para todos los tipos numéricos. Corrige la comprobación de infraflujo de Date32 durante la conversión desde int16. #87176 (Pervakov Grigorii). - Se corrige la función CASE con argumentos de tipo Dynamic. #87177 (Pavel Kruglov).
- Corrige un error lógico en las réplicas paralelas para consultas con múltiples JOIN, en particular con RIGHT JOIN después de LEFT/INNER JOIN. #87178 (Igor Nikonov).
- Respetar la configuración
input_format_try_infer_variantsen la caché de inferencia de esquemas. #87180 (Pavel Kruglov). - Hacer que pathStartsWith solo coincida con las rutas bajo el prefijo. #87181 (Raúl Marín).
- Se corrigió la lectura de un Array vacío desde una cadena vacía en CSV. #87182 (Pavel Kruglov).
- Corrige un posible resultado incorrecto de
EXISTSno correlacionado. Fallaba conexecute_exists_as_scalar_subquery=1, que se introdujo en https://github.com/ClickHouse/ClickHouse/pull/85481 y afecta a25.8. Soluciona #86415. #87207 (Nikolai Kochetov). - Se corrigieron errores lógicos en la columna virtual
_row_numbery en las eliminaciones por posición de Iceberg. #87220 (Michael Kolupaev). - Se corrige el
LOGICAL_ERROR“Tamaño demasiado grande pasado al asignador de memoria” enJOINpor mezclar bloques const y no const. #87231 (Azat Khuzhin). - Genera un error si iceberg_metadata_log no está configurado, pero el usuario intenta obtener información de depuración sobre metadatos de Iceberg. Corrige el acceso a nullptr. #87250 (Daniil Ivanik).
- Se corrigieron las actualizaciones ligeras con subconsultas que leen de otras tablas
MergeTree. #87285 (Anton Popov). - Se corrigió la optimización move-to-prewhere, que no funcionaba en presencia de una ROW POLICY. Continuación de #85118. Cierra #69777. Cierra #83748. #87303 (Nikolai Kochetov).
- Se corrigió la aplicación de parches a columnas con expresión predeterminada que no están presentes en las partes de datos. #87347 (Anton Popov).
- Se corrige la actualización de EmbeddedRocksDB. #87392 (Raúl Marín).
- Se corrigió la lectura directa desde el índice de texto en el almacenamiento de objetos. #87399 (Anton Popov).
- Evita que se pueda crear un privilegio con un motor inexistente. #87419 (Jitendra).
- Ignorar solo los errores
not foundparas3_plain_rewritable(lo que puede ocasionar todo tipo de problemas). #87426 (Azat Khuzhin). - Corrige los diccionarios con origen YTSaurus y layouts *range_hashed. #87490 (MikhailBurdukov).
- Se corrige la creación de un array de tuplas vacías. #87520 (Pavel Kruglov).
- Comprobación de columnas no válidas al crear tablas temporales. #87524 (Pavel Kruglov).
- Nunca ponga las columnas de partición de Hive en la cabecera del formato. Corrige #87515. #87528 (Arthur Passos).
- Se corrige la preparación para la lectura desde un formato en DeltaLake cuando se utiliza el formato de texto. #87529 (Pavel Kruglov).
- Corrige la validación de acceso en las operaciones select e insert de las tablas Buffer. #87545 (pufit).
- Impedir la creación de índices de omisión de datos en tablas S3. #87554 (Bharat Nallan).
- Evita la fuga de memoria contabilizada en el logging asíncrono (puede provocar una desviación significativa; en 10 horas, ~100GiB) y en text_log (es posible casi la misma desviación). #87584 (Azat Khuzhin).
- Se corrigió un error que podía provocar que las configuraciones globales del servidor se sobrescribieran con las configuraciones de SELECT de una vista o una vista materializada, si esa vista se eliminaba de forma asíncrona y el servidor se reiniciaba antes de que finalizara la limpieza en segundo plano. #87603 (Alexander Tokmakov).
- Excluir los bytes de la caché de páginas en espacio de usuario (si es posible) al calcular el aviso de sobrecarga de memoria. #87610 (Bharat Nallan).
- Se corrigió un error que hacía que un orden incorrecto de los tipos durante la deserialización de CSV provocara el
LOGICAL_ERROR. #87622 (Yarik Briukhovetskyi). - Se corrigió el manejo incorrecto de
command_read_timeoutpara los diccionarios ejecutables. #87627 (Azat Khuzhin). - Se corrigió el comportamiento incorrecto de SELECT * REPLACE en la cláusula WHERE al usar el nuevo analizador para filtrar columnas reemplazadas. #87630 (xiaohuanlin).
- Se corrigió la agregación en dos niveles al usar
MergesobreDistributed. #87687 (c-end). - Se corrige la generación del bloque de salida en el algoritmo HashJoin cuando no se utiliza la lista de filas del lado derecho. Corrige #87401. #87699 (Dmitry Novik).
- El modo de lectura de réplicas paralelas podía elegirse incorrectamente si no había datos que leer tras aplicar el análisis de índices. Cierra #87653. #87700 (zoomxi).
- Se corrigió el manejo de las columnas
timestampytimestamptzen Glue. #87733 (Andrey Zvonov). - Con esto se cierra #86587. #87761 (scanhex12).
- Corregida la escritura de valores booleanos en la interfaz de PostgreSQL. #87762 (Artem Yurov).
- Se corrige el error de tabla desconocida en la consulta
insert selectcon CTE, #85368. #87789 (Guang Zhao). - Se corrigió la lectura de la subcolumna map nula de Variants que no pueden estar dentro de Nullable. #87798 (Pavel Kruglov).
- Se corrigió el manejo del error cuando no se logra eliminar completamente la base de datos en el clúster en el nodo secundario. #87802 (Tuan Pham Anh).
- Corrige varios errores en los índices de omisión. #87817 (Raúl Marín).
- En AzureBlobStorage, se actualizó para intentar primero la copia nativa y recurrir a lectura & escritura en caso de error ‘Unauthroized’ (en AzureBlobStorage, si las cuentas de almacenamiento del origen & el destino son diferentes, obtenemos el error ‘Unauthorized’). Y se corrigió la aplicación de “use_native_copy” cuando el endpoint está definido en la configuración. #87826 (Smita Kulkarni).
- ClickHouse se bloquea si el archivo ArrowStream contiene un diccionario no único. #87863 (Ilya Golshtein).
- Se corrige la fusión con proyecciones si el último bloque está vacío. #87928 (Raúl Marín).
- No eliminar funciones inyectivas de GROUP BY si los tipos de los argumentos no están permitidos en GROUP BY. #87958 (Pavel Kruglov).
- Corrección del descarte incorrecto de gránulos/particiones para claves basadas en fecha y hora al usar la configuración
session_timezoneen las consultas. #87987 (Eduard Karacharov). - Devuelve el número de filas afectadas tras una consulta en la Interfaz de PostgreSQL. #87990 (Artem Yurov).
- Restringe el uso de
filter pushdownen PASTE JOIN porque puede provocar resultados incorrectos. #88078 (Yarik Briukhovetskyi). - Aplica la normalización del URI antes de evaluar la comprobación de grants introducida por https://github.com/ClickHouse/ClickHouse/pull/84503. #88089 (pufit).
- Se corrigió un error lógico cuando ARRAY JOIN COLUMNS() no encuentra ninguna columna en el nuevo analizador. #88091 (xiaohuanlin).
- Corregida la advertencia “Uso elevado de memoria de ClickHouse” (sin incluir la caché de páginas). #88092 (Azat Khuzhin).
- Se corrigió una posible corrupción de datos en tablas
MergeTreeconTTLestablecido en una columna. #88095 (Anton Popov). - Se corrigió un fallo en las funciones
mortonEncodeyhilbertEncodeal llamarlas con un argumento de tupla vacío. #88110 (xiaohuanlin). - Ahora las consultas
ON CLUSTERtardarán menos cuando haya réplicas inactivas en el clúster. #88153 (alesapin). - Ahora el worker de DDL elimina los hosts obsoletos del conjunto de réplicas. Esto reducirá la cantidad de metadatos almacenados en ZooKeeper. #88154 (alesapin).
- Deshacer correctamente la operación de mover el directorio en caso de error. Necesitamos reescribir todos los objetos
prefix.pathmodificados durante la ejecución, no solo el de la raíz. #88198 (Mikhail Artemenko). - Se corrigió la propagación del indicador
is_sharedenColumnLowCardinality. Puede provocar un resultado incorrecto engroup-bysi se inserta un valor nuevo en una columna después de que los valores hash ya se hayan calculado previamente y almacenado en caché enReverseIndex. #88213 (Nikita Taranov). - Corrige el ajuste de carga de trabajo
max_cpu_share. Ahora puede usarse sin tener configurado el ajuste de carga de trabajomax_cpus. #88217 (Neerav). - Se corrigió un error por el que mutaciones muy pesadas con subconsultas podían quedar atascadas en la etapa de preparación. Ahora es posible detener estas mutaciones con
SYSTEM STOP MERGES. #88241 (alesapin). - Ahora las subconsultas correlacionadas funcionarán con almacenamiento de objetos. #88290 (alesapin).
- Evita inicializar bases de datos de DataLake al acceder a
system.projectionsysystem.data_skipping_indices. #88330 (Azat Khuzhin). - Ahora, los catálogos de data lakes solo se mostrarán en las tablas de introspección del sistema si
show_data_lake_catalogs_in_system_tablesse habilita explícitamente. #88341 (alesapin). - Se corrigió DatabaseReplicated para que respete la configuración de
interserver_http_host. #88378 (xiaohuanlin). - Los argumentos posicionales ahora se han deshabilitado explícitamente al definir proyecciones, ya que no tienen sentido en esta etapa interna de la consulta. Esto corrige #48604. #88380 (Amos Bird).
- Se corrige la complejidad cuadrática en la función
countMatches. Cierra #88400. #88401 (Alexey Milovidov). - Hace que los comandos
ALTER COLUMN ... COMMENTpara las tablas KeeperMap replicadas queden registrados en los metadatos de la base de datos Replicated y se propaguen a todas las réplicas. Cierra #88077. #88408 (Eduard Karacharov). - Se corrige un caso de falsa dependencia cíclica con vistas materializadas en Database Replicated, que impedía añadir nuevas réplicas a la base de datos. #88423 (Nikolay Degterinsky).
- Se corrigió la agregación de columnas dispersas cuando
group_by_overflow_modeestá configurado comoany. #88440 (Eduard Karacharov). - Se soluciona el error “columna no encontrada” al usar
query_plan_use_logical_join_step=0con varias cláusulas FULL JOIN USING. Cierra #88103. #88473 (Vladimir Cherkasov). - Los clústeres grandes con un número de nodos > 10 tienen una alta probabilidad de que falle la restauración con el error
[941] 67c45db4-4df4-4879-87c5-25b8d1e0d414 <Trace>: RestoreCoordinationOnCluster The version of node /clickhouse/backups/restore-7c551a77-bd76-404c-bad0-3213618ac58e/stage/num_hosts changed (attempt #9), will try again. Muchos hosts sobrescriben el nodonum_hostsal mismo tiempo. La corrección hace dinámica la configuración que controla los intentos. Cierra #87721. #88484 (Mikhail f. Shiryaev). - Este PR es solo para garantizar la compatibilidad con la versión 23.8 y anteriores. Este problema de compatibilidad se introdujo con este PR: https://github.com/ClickHouse/ClickHouse/pull/54240 Este SQL fallará con
enable_analyzer=0(antes de 23.8, funcionaba correctamente)select * from t1 s final join ( select * from t2 final ) r final on s.key = r.key join ( select * from t3 final ) c final on s.key = c.keyPorqueJoinToSubqueryTransformVisitorreescribirá este SQL comoSELECT `_--s.key` AS `s.key`, `_--s.value` AS `s.value`, `_--r.key` AS `r.key`, `_--r.value` AS `r.value`, `_--c.key` AS `c.key`, `_--c.value` AS `c.value` FROM ( SELECT value AS `_--s.value`, key AS `_--s.key`, r.value AS `_--r.value`, r.key AS `_--r.key` FROM t1 AS s FINAL ALL INNER JOIN ( SELECT key, value FROM t2 FINAL ) AS r FINAL ON `_--s.key` = `_--r.key` ) AS `--.s` ALL INNER JOIN ( SELECT value AS `_--c.value`, key AS `_--c.key` FROM ( SELECT key, value FROM t3 FINAL ) AS c FINAL ) AS `--.t` ON `_--s.key` = `_--c.key`Queremos reescribir este SQL como (solo moviendo el último FINAL)SELECT `_--s.key` AS `s.key`, `_--s.value` AS `s.value`, `_--r.key` AS `r.key`, `_--r.value` AS `r.value`, `_--c.key` AS `c.key`, `_--c.value` AS `c.value` FROM ( SELECT value AS `_--s.value`, key AS `_--s.key`, r.value AS `_--r.value`, r.key AS `_--r.key` FROM t1 AS s FINAL ALL INNER JOIN ( SELECT key, value FROM t2 FINAL ) AS r FINAL ON `_--s.key` = `_--r.key` ) AS `--.s` ALL INNER JOIN ( SELECT value AS `_--c.value`, key AS `_--c.key` FROM ( SELECT key, value FROM t3 FINAL ) AS c ) AS `--.t` FINAL ON `_--s.key` = `_--c.key`. #88491 (JIaQi). - Se corrige el desbordamiento de enteros detectado por UBSAN en el mensaje de error de
accurateCastal convertir valores grandes a DateTime. #88520 (xiaohuanlin). - Se corrige CoalescingMergeTree para tipos Tuple. Esto cierra #88469. #88526 (scanhex12).
- Se prohíben las eliminaciones para
iceberg_format_version=1. Esto cierra #88444. #88532 (scanhex12). - Este parche corrige la operación de movimiento de los discos
plain-rewritablepara carpetas con cualquier nivel de profundidad. #88586 (Mikhail Artemenko). - Se corrige SQL SECURITY DEFINER con las funciones *cluster. #88588 (Julian Maicher).
- Corrige un posible cierre inesperado causado por la mutación concurrente de las columnas const subyacentes de PREWHERE. #88605 (Azat Khuzhin).
- Se corrigió la lectura del índice de texto y se habilitó la caché de condiciones de consulta (con las opciones
use_skip_indexes_on_data_readyuse_query_condition_cachehabilitadas). #88660 (Anton Popov). - Una excepción
Poco::TimeoutExceptionlanzada desdePoco::Net::HTTPChunkedStreamBuf::readFromDeviceprovoca un cierre con SIGABRT. #88668 (Miсhael Stetsyuk). - Se corrigió la adición a
system.zookeeper_connection_logen caso de que ClickHouse se conectara por primera vez tras recargar la configuración. #88728 (Antonio Andelic). - Se corrigió un error por el que la conversión de DateTime64 a Date con
date_time_overflow_behavior = 'saturate'podía dar resultados incorrectos para valores fuera de rango al trabajar con zonas horarias. #88737 (Manuel). - Enésimo intento de corregir el “error de cero bytes” en el motor de tabla S3 con la caché habilitada. #88740 (Kseniia Sumarokova).
- Corrige la validación de acceso al hacer
selecten la función de tablaloop. #88802 (pufit). - Capturar excepciones cuando falle el logging asíncrono para evitar que el programa se aborte. #88814 (Raúl Marín).