docs/en/release_notes/release-3.4.md
Release Date: November 24, 2025
json_extract in the Trino dialect from STRING to JSON. This may cause incompatibility in CAST, UNNEST, and type check logic. #59718/metrics now requires admin authentication. Without authentication, only total connection counts are exposed, preventing information leakage of all usernames via metrics. #64635analyze_mv. Materialized view refresh no longer automatically triggers ANALYZE jobs, avoiding large numbers of background statistics tasks. This changes expectations for users relying on legacy behavior. #64863INT128_MIN * 1 is no longer considered an overflow to ensure consistent casting semantics for extreme values. #63559finishTransaction. If a table lock cannot be acquired within the timeout, finishing the transaction will fail for this round and be retried later, rather than blocking indefinitely. The final result is unchanged, but the lock behavior is more explicit. #63981The following issues have been fixed:
flat_path string is empty because the JSON hyper extraction path is $ or all paths are skipped, calling substr will throw an exception and cause BE crash. #65260HttpConnectContext cannot be unregistered at channel close, causing HTTP context leaks. #65203ChunkAccumulator when chunks are appended with incompatible JSON schemas. #64894AsyncFlushOutputStream, asynchronous I/O tasks may attempt to access a destroyed MemTracker, resulting in use‑after‑free crashes. #64735set_finishing task failed, it only recorded the status in the spiller, allowing the Probe side to continue, and eventually causing a crash or an indefinite loop. #65027PartitionedSpillerWriter is removing partitions. #63903 #63825Release Date: September 30, 2025
enable_lake_tablet_internal_parallel to true, Parallel Scan for Cloud-native tables in shared-data clusters is enabled by default to increase per‑query internal parallelism. It may raise peak resource usage. #62159The following issues have been fixed:
max_rss_rowid. #63277date_trunc equality and raw column range predicate was reduced to a point interval, returning empty result sets (for example, date_trunc('month', dt)='2025-09-01' AND dt>'2025-09-23'). #63464SHOW CREATE ROUTINE LOAD without explicit DB returned job from another database with the same name. #62745sameLabelJobs became null during concurrent load job cleanup. #63042OPTIMIZE TABLE task stuck in PENDING after thread pool rejection. #62300Release Date: September 1, 2025
The following issues have been fixed:
max_filter_ratio. #61755now(precision) function lost the precision parameter. #61721INSERT INTO SELECT statements was inaccurate. #61381fslib read iops metric increased compared to before the upgrade. #61724Release Date: August 7, 2025
INSERT INTO FILES, you can now specify the Parquet version via the parquet.version property to improve compatibility with other tools when reading the exported files. #60843The following issues have been fixed:
TableMetricsManager. #58911FILES(). #61059keyword column in the information_schema.keywords view has been renamed to word to align with the MySQL definition. #60863Release Date: July 10, 2025
information_schema.loads view. Users can view the execution details of all INSERT, Broker Load, Stream Load, and Routine Load subtasks in this view. Additional fields have been added to help users better understand the status of loading tasks and the association with parent jobs (PIPES, Routine Load Jobs).kafka_broker_list via the ALTER ROUTINE LOAD statement.The following issues have been fixed:
not support getting unified metadata table factory. #59412DESC FILES() to view CSV files in remote storage, incorrect results were returned because the system mistakenly inferred xinf as the FLOAT type. #59574INSERT INTO could cause BE to crash when encountering empty partitions. #59553skip_pk_preload has been changed from false to true. As a result, the system will skip preloading Primary Key Indexes for Primary Key tables to reduce the likelihood of Reached Timeout errors. This change may increase query latency for operations that require loading Primary Key Indexes.Release Date: June 10, 2025
FILES function. #58131The following issues have been fixed:
INSERT tasks caused the job to remain in the QUEUEING state. #58603UNION execution plans. #59040Release Date: April 30, 2025
columns parameter for complex column data extraction. array_filter/map_filter can be used to filter and extract ARRAY/MAP data. Complex filtering and extraction of JSON data can be achieved by combining the cast function to convert JSON array/JSON object to ARRAY and MAP types. For example, COLUMNS (js, col=array_filter(i -> json_query(i, '$.type')=='t1', cast(js as Array<JSON>))[1]) can extract the first JSON object from the JSON array js where type is t1. #58149cast function, combined with map_filter to extract items from the JSON object that meet specific conditions. For example, map_filter((k, v) -> json_query(v, '$.type') == 't1', cast(js AS MAP<String, JSON>)) can extract the JSON object from js where type is t1. #58045information_schema.task_runs view. #57404The following issues have been fixed:
OrcChunkReader::lazy_seek_to failed. reason = bad read in RleDecoderV2: :readByte. #57454ConstantRef-cmp-ConstantRef not supported here, null != 111 should be eliminated earlier. #57735query_queue_pending_timeout_second parameter while the Query Queue feature is not enabled. #57719Release Date: April 10, 2025
./stop_fe.sh -g, FE will first return a 500 status code to the front-end Load Balancer via the /api/health API to indicate that it is preparing to shut down, allowing the Load Balancer to switch to other available FE nodes. Meanwhile, FE will continue to run ongoing queries until they finish or timeout (default timeout: 60 seconds). #56823The following issues have been fixed:
concat function could cause a BE crash during query execution. #57522ssl_enable property did not take effect when using Broker Load to load data. #57229ALTER TABLE {table} PARTITIONS (p1, p1) DISTRIBUTED BY ..., specifying duplicate partition names could result in failure to delete internally generated temporary partitions. #57005SHOW PROC '/current_queries' resulted in the error "Error 1064 (HY000): Sending collect query statistics request fails". #56597INSERT OVERWRITE loading tasks in parallel caused the error "ConcurrentModificationException: null", resulting in loading failure. #56557avro_ignore_union_type_tag has been changed to true, enabling the direct parsing of ["NULL", "STRING"] as STRING type data, which better aligns with typical user requirements. #57553big_query_profile_threshold has been changed from 0 to 30 (seconds). #57177enable_mv_refresh_collect_profile has been added to control whether to collect Profile information during materialized view refresh. The default value is false (previously, the system collected Profile by default). #56971Release Date: March 12, 2025
:::tip
This version has been taken offline due to metadata loss issues in shared-data clusters.
Problem: When there are committed compaction transactions that are not yet been published during a shift of Leader FE node in a shared-data cluster, metadata loss may occur after the shift.
Impact scope: This problem only affects shared-data clusters. Shared-nothing clusters are unaffected.
Temporary workaround: When the Publish task is returned with an error, you can execute SHOW PROC 'compactions' to check if there are any partitions that have two compaction transactions with empty FinishTime. You can execute ALTER TABLE DROP PARTITION FORCE to drop the partitions to avoid Publish tasks getting hang.
:::
ds_hll_count_distinct). Compared to approx_count_distinct, this function provides higher-precision approximate deduplication.The following issues have been fixed:
loop_count_wait_fragments_finish has been changed to 2, meaning that the system will wait up to 20 seconds for running queries to complete. #56002Release date: January 24, 2025
a = xxx OR b = yyy) to utilize certain column indexes, thus reducing data read volume and improving query performance.strict_mode, max_filter_ratio, and timeout for INSERT operations to control and behavior and quality of the data ingestion. For more information, see INSERT - PROPERTIES.fill_mismatch_column_with. For more information, see Union files with different schema.SHUTDOWN.Because the Data Cache instance used in both shared-data architecture and data lake query scenarios is now unified, there will be the following behavior changes after the upgrade to v3.4.0:
BE configuration item datacache_disk_path is now deprecated. The data will be cached under the directory ${storage_root_path}/datacache. If you want to allocate a dedicated disk for data cache, you can manually point the directory to the directory mentioned above using a symlink.
Cached data in the shared-data cluster will be automatically migrated to ${storage_root_path}/datacache and can be re-used after the upgrade.
The behavior changes of datacache_disk_size:
datacache_disk_size is 0 (Default), the automatic adjustment of cache capacity is enabled (consistent with the behavior before the upgrade).datacache_disk_size is set to a value greater than 0, the system will pick a larger value between datacache_disk_size and starlet_star_cache_disk_size_percent as the cache capacity.From v3.4.0 onwards, insert_timeout applies to operations involved INSERT (for example, UPDATE, DELETE, CTAS, materialized view refresh, statistics collection, and PIPE), replacing query_timeout.
From v3.4.0 onwards, the default value of mysql_server_version is changed to 8.0.33.