docs/en/release_notes/release-3.3.md
:::warning
:::
Release Date: December 25, 2025
The following issues have been fixed:
trim function handles specific Unicode whitespace characters (for example, \u1680) and performance issues caused by reserved memory calculation. #66428 #66477lz4-java, and potential crashes in upstream. #66453 #66362 #67075SHOW LOAD or SQL execution failures. #66436PartitionColumnMinMaxRewriteRule optimization incorrectly returns an empty set instead of NULL when the Scan input for aggregation is fully filtered. #66356set_collector of the Runtime Filter due to Local TopN pushdown optimization. #66199rssid when column-mode Partial Update is used with Conditional Update. #66139MemoryScratchSinkOperator remains in a pending state and cannot be cancelled after RecordBatchQueue is closed (For example, triggered by SparkSQL Limit), causing queries to hang. #66041_num_pipelines in the ExecutionGroup countdown logic. #65940ConnectContext when executing tasks as an LDAP user. #65843COM_STMT_EXECUTE has no audit logs by default, and Profile information is incorrectly merged into the Prepare stage. #65448UnionConstSourceOperator merges Union to Values. #65429INSERT OVERWRITE, including failure to collect statistics for temporary partitions and inaccurate row count statistics at transaction commit preventing collection trigger. #65327, #65298, #65225HttpConnectContext related to SQL is not released in TCP connection reuse scenarios because subsequent non-SQL HTTP requests overwrite the context. #65203percentile_approx_weighted function. #64838MERGING-EXCHANGE operator crash caused by Ranking window function optimization generating an empty ORDER BY when there is no PARTITION BY and GROUP BY. #67081Release Date: November 18, 2025
The following issues have been fixed:
PartitionedSpillerWriter::_remove_partition. #63903ExceptionStackContext. #63776IllegalStateException under certain plans. #63655date_trunc partition pruning with combined predicates that mistakenly produced EMPTYSET. #63464Left Join results caused by ARRAY low-cardinality optimization. #63419ARRAY<NULL_TYPE>. #63371omit for returns of the PREPARE/EXECUTE statements. #62988Release Date: October 14, 2025
The following issues have been fixed:
UserProperty had lower priority than Session Variables. #63173KILL ANALYZE did not work. #62842SHOW CREATE ROUTINE LOAD without specifying a database causes wrong results. #62745files(). #62719Release Date: August 28, 2025
The following issues have been fixed:
LakePersistentIndex initialization failed due to cleanup of _memtable. #62279ALLOW_THROW_EXCEPTION mode (after the fix, exceptions in expression evaluation are properly caught and returned). #62098enable_rbo_table_prune was set to false. #62070split_morsel_queue nested inside partition_morsel_queue failed to correctly receive the Tablet Schema. #62034NULL arrays during Parquet writes, which could cause data inconsistency or crashes (after the fix, the system ensures the split function can correctly handle NULL input strings). #61999CASE WHEN expressions due to incompatible return types of VARCHAR (after the fix, the system ensures consistency before and after refresh). #61996Release Date: July 30, 2025
The following issues have been fixed:
cpu_core_used_permille limit in resource groups. #61177globalStateMgr in ConnectContext. #60880pending state after FE restart. #61113jdbc_connection_pool_size limit. #61004_partition_map when physical partition ID was empty. #60842maxInstantTime used for filtering Hudi files when retrieving latest merged file slices. #60927log4j-1.2.17-cloudera6 in Broker. #59579multi_distinct_count. #60664hudi-common to 1.0.2. #59501Release Date: July 4, 2025
slow_lock_print_stack to prevent process stalls in large clusters when printing thread stacks. #59967Fixed the following issues:
str2date. #60089Release Date: Jun 20, 2025
Fixed the following issues:
SHOW CREATE VIEW. #59714ALTER TABLE statement. #59360INSERT OVERWRITE into Hive. #59469max_tablet_rowset_num log item. #59467task_runs_max_history_number to control the number of historical TaskRuns retained in the information_schema.task_runs view, reducing memory usage. #59161Release Date: May 14, 2025
Fixed the following issues:
first_value/last_value/lead/lag window functions. #58697streaming_load_current_processing metric. #58565if() results on ARM architecture. #58455group_concat. #57908cast to the function output type). #58407broadcast_row_limit set to 0 or below failed to prevent BROADCAST JOIN generation. #58307ngram_search generated invalid query plans. #58190Release Date: April 22, 2025
information_schema.task_runs view supports pushdown of the LIMIT clause. #57404information_schema.routine_load_jobs view adds the timestamp_progress column, consistent with the SHOW ROUTINE LOAD statement return. #57123excluded_refresh_tables property. #56428Fixed the following issues:
get_json_bool function. #58077percentile_count function returns incorrect values. #58038cast function with semi-structured data types. #57804array_map function returns incorrect values. #57756distinct functions on the same column with a single-column GROUP BY clause leads to incorrect query results. #57690percentile_disc function has an empty input. #57572ALTER TABLE {table} PARTITIONS (p1, p1) DISTRIBUTED BY ..., specifying duplicate partition names could result in failure to delete internally generated temporary partitions. #57005str2date function. #57487hadoop-lib. #57436Release date: April 3, 2025
percentile_approx_weighted function. #56654SHOW PARTITIONS for tables in Paimon Catalog. #55785array_generate. #57252ALTER TABLE fails. #57054array_agg() to improve performance. #56958FILES function output. #56684INSERT INTO FILES did not support CSV delimiter conversion. #57126SHOW MATERIALIZED VIEWS did not display default_catalog information. #56362parse_datetime with str_to_jodatime.) #56565first_value function. #56467concat_ws function. #56384big_query_profile_threshold from 0 to 30. #56520Release date: March 7, 2025
max_by and min_by. #54961Files supports exporting JSON type data into Parquet files. #56406AT TIME ZONE expressions and the from_iso8601_timestamp function in Trino. #56311 #55573SHOW PROC '/transaction'. #55933unnest computations during query execution to reduce overhead. #55431parallel_merge_late_materialization_mode to control parallel merge behavior. #55082SHOW MATERIALIZED VIEWS. #54374Fixed the following issues:
starrocks_fe_table_load_rows and starrocks_fe_table_load_bytes metrics. #44991SHOW MATERIALIZED VIEWS. #55995SHOW CREATE TABLE caused by constraints. #55592date_format function when input is in milliseconds. #54854query_detail interface in FE. #55919Release date: February 21, 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.
:::
Release date: January 12, 2025
bdbje_reset_election_group to enhance clarity. #54399IF function on ARM architectures. #53093ALTER SYSTEM CREATE IMAGE supports creating an image for StarManager. #54370FORCE keyword is specified. #52081CACHE SELECT. #54697FILES() function. Supported compression formats include gzip, bz2, lz4, deflate, and zstd. #54626UPDATE statement. #54534Fixed the following issues:
TIME types. #54601LIMIT queries with subquery TOP-N. #54507Release date: January 3, 2025
Fixed the following issues:
INSERT OVERWRITE operations on Hive tables created in Hive. #53792SHOW TABLE STATUS command does not validate view privileges. #53811INSERT tasks. #53809partition_ttl of tables in the statistics database does not take effect. #54398max(count(distinct)) when low-cardinality optimization is enabled. #53403excluded_refresh_tables parameter of materialized views. #53394persistent_index_type for Primary Key tables in shared-data clusters to CLOUD_NATIVE, that is, enabled Persistent Index by default. #52209Release date: November 29, 2024
excluded_refresh_tables, exclude tables that need to be refreshed. #50926unnest(bitmap_to_array) as unnest_bitmap to improve performance. #52870Fixed the following issues:
array_map in Join conditions. #52911Release date: November 18, 2024
sys_log_warn_modules to reduce Hudi Catalog logging. #52709yearweek function. #52714array_map. #52541Fixed the following issues:
unique_constraints and foreign_constraints parameters were incomplete in SHOW CREATE TABLE for cloud-native tables in shared-data clusters. #52804enable_mv_automatic_active_check was set to false. #52799hasnull property in ORC files. #52555ALTER TABLE PARTITION (*) SET ("storage_cooldown_ttl" = "xxx"). #52482In earlier versions, scale-in operations would fail if there were insufficient replicas for views in the _statistics_ database. Starting from v3.3.6, if nodes are scaled in to 3 or more, view replicas are set to 3; if there is only 1 node after the scale-in, view replicas are set to 1, allowing for successful scale-in. #51799
Affected views include:
column_statisticshistogram_statisticstable_statistic_v1external_column_statisticsexternal_histogram_statisticspipe_file_listloads_historytask_run_historyNew Primary Key tables no longer allow __op as a column name, even if allow_system_reserved_names is set to true. Existing tables are unaffected. #52621
Expression-partitioned tables cannot have partition names modified. #52557
Deprecated FE parameters heartbeat_mgr_blocking_queue_size and profile_process_threads_num. #52236
Enabled persistent index on object storage by default for Primary Key tables in shared-data clusters. #52209
Disallowed manual changes to bucketing methods for tables with the random bucketing method. #52120
Backup and Restore-related parameter changes: #52111
make_snapshot_worker_count supports dynamic configuration.release_snapshot_worker_count supports dynamic configuration.upload_worker_count supports dynamic configuration. Its default value is changed from 1 to the number of CPU cores on the machine where the BE resides.download_worker_count supports dynamic configuration. Its default value is changed from 1 to the number of CPU cores on the machine where the BE resides.The return type of SELECT @@autocommit has changed from BOOLEAN to BIGINT. #51946
Added a new FE configuration item, max_bucket_number_per_partition, to control the maximum number of buckets per partition. #47852
Enabled memory usage checks by default for Primary Key tables. #52393
Optimized loading strategy to reduce loading speed when Compaction tasks cannot be completed on time. #52269
Release date: October 23, 2024
Null values into List partition keys with the Not Null attribute. #51086INSERT OVERWRITE. #50417Fixed the following issues:
UNION ALL queries with ORDER BY. #51647load_finish_time field in the system-defined view statistics.loads_history does not update as expected after a loading task is completed. #51174EXPLAIN statement. After the change, the return content is equivalent to EXPLAIN COST. You can configure the level of details returned by EXPLAIN using the dynamic FE parameter query_detail_explain_level. The default value is COSTS, with other valid values being NORMAL and VERBOSE. #51439Release date: September 30, 2024
DESC FILES(). #50527SHOW PROC '/replications'. #50483TRUNCATE TABLE in shared-data clusters. #49975lake_enable_balance_tablets_between_workers to enable tablet balancing for tables in shared-date clusters. #50843CURRENT_TIMESTAMP. #50287Fixed the following issues:
yearweek function. #51065CURRENT_TIMESTAMP after upgrading. #50911array_distinct function. #51017enable_active_materialized_view_schema_strict_check to false. #50869cpu_weight can be set to a negative value. #51005replace function. #508281 to the value of the FE parameter default_replication_num (Default value: 3). #50931Release date: September 5, 2024
max(partition_column). #49391show proc '/global_current_queries' to view queries running on all FE nodes. show proc '/current_queries' only shows queries running on the current FE node. #49826Fixed the following issues:
select * from files from clusters deployed on aarch64 machines. #49517object_storage_rename_file_request_timeout_ms to better accommodate backup scenarios with cloud object storage. This parameter will be used as the backup timeout, with a default value of 30 seconds. #49706to_json, CAST(AS MAP), and STRUCT AS JSON will return NULL instead of throwing an error by default when the conversion fails. You can allow errors by setting the system variable sql_mode to ALLOW_THROW_EXCEPTION. #50157Release date: August 8, 2024
Supports renaming columns within StarRocks internal tables. #47851
Supports reading Iceberg views. Currently, only Iceberg views created through StarRocks are supported. #46273
[Experimental] Supports adding and removing fields of STRUCT-type data. #46452
Supports specifying the compression level for ZSTD compression format during table creation. #46839
Added the following FE dynamic parameters to limit table boundaries. #47896
Including:
auto_partition_max_creation_number_per_loadmax_partition_number_per_tablemax_bucket_number_per_partitionmax_column_number_per_tableSupports runtime optimization of table data distribution, ensuring optimization tasks do not conflict with DML operations on the table. #43747
Added an observability interface for the global hit rate of Data Cache. #48450
Added the SQL function array_repeat. #47862
Optimized the error messages for Routine Load failures due to Kafka authentication failures. #46136 #47649
Stream Load supports using \t and \n as row and column delimiters. Users do not need to convert them to their hexadecimal ASCII codes. #47302
Optimized the asynchronous statistics collection method for write operators, addressing the issue of increased latency when there are many import tasks. #48162
Added the following BE dynamic parameters to control resource hard limits during loading, reducing the impact on BE stability when writing a large number of tablets. #48495
Including:
load_process_max_memory_hard_limit_ratioenable_new_load_on_memory_limit_exceededAdded consistency checks for Column IDs within the same table to prevent Compaction errors. #48498
Supports persisting PIPE metadata to prevent metadata loss due to FE restarts. #48852
Fixed the following issues:
ARRAY<BOOLEAN> columns. #48387query_id column in information_schema.task_runs cannot be queried. #48876If you have used the renaming column feature, you must rename the columns to their original names before downgrading your cluster to an earlier version. You can check the audit log of your cluster after upgrading to identify any ALTER TABLE RENAME COLUMN operations and the original names of the columns.
Release date: July 18, 2024
:::tip
This version has been taken offline due to compatibility issues in Primary Key tables.
Problem: After the cluster is upgraded from versions earlier than v3.1.11 and v3.2.4 to v3.3.1, index decompression failures will lead to failures of queries against Primary Key tables.
Impact scope: This problem only affects queries against Primary Key tables.
Temporary workaround: You can downgrade the cluster to v3.3.0 or earlier to avoid this issue. It will be fixed in v3.3.2.
:::
compression and Content-Encoding. Supported compression algorithms including GZIP, BZIP2, LZ4_FRAME, and ZSTD. #43732csv.trim_space parameter in the FILES() function, checking for illegal characters and providing reasonable prompts. #44740\t and \n as row and column delimiters. Users do not need to convert them to their hexadecimal ASCII codes. #47302Fixed the following issues:
\, \r in the default values of fields. #47861user_admin role can change the root password using the ALTER USER command. #47801max_cumulative_compaction_num_singleton_deltas to 500. #47621max(2*BE or CN count, bucket number calculated based on the largest historical partition data volume). The previous rule was to calculate the bucket number based on the largest historical partition data volume). #47949To downgrade a cluster from v3.3.1 or later to v3.2, users must clean all temporary tables in the cluster by following these steps:
Disallow users to create new temporary tables:
ADMIN SET FRONTEND CONFIG("enable_experimental_temporary_table"="false");
Check if there are any temporary tables in the cluster:
SELECT * FROM information_schema.temp_tables;
If there are temporary tables in the system, clean them up using the following command (the SYSTEM-level OPERATE privilege is required):
CLEAN TEMPORARY TABLE ON SESSION 'session';
Release date: June 21, 2024
Optimized the performance of Schema Evolution in shared-data clusters, reducing the time consumption of DDL changes to a sub-second level. For more information, see Schema Evolution.
To satisfy the requirement for data migration from shared-nothing clusters to shared-data clusters, the community officially released the StarRocks Data Migration Tool. It can also be used for data synchronization and disaster recovery between shared-nothing clusters.
[Preview] AWS Express One Zone Storage can be used as storage volumes, significantly improving read and write performance. For more information, see CREATE STORAGE VOLUME.
Optimized the garbage collection (GC) mechanism in shared-data clusters. Supports manual compaction for data in object storage. For more information, see Manual Compaction.
Optimized the Publish execution of Compaction transactions for Primary Key tables in shared-data clusters, reducing I/O and memory overhead by avoiding reading primary key indexes.
Supports Internal Parallel Scan within tablets. This optimizes query performance in scenarios where there are very few buckets in the table, which limits query parallelism to the number of tablets. Users can enable the Parallel Scan feature by setting the following system variables:
SET GLOBAL enable_lake_tablet_internal_parallel = true;
SET GLOBAL tablet_internal_parallel_mode = "force_split";
LIKE queries and the computation speed of ngram_search and ngram_search_case_insensitive functions.dictionary_get() function is now used to directly query the dictionary object in the BE memory, accelerating the speed of querying the dictionary table compared to using the dict_mapping() function. Furthermore, the dictionary object can also serve as a dimension table. Dimension values can be obtained by directly querying the dictionary object using dictionary_get(), resulting in faster query speeds than the original method of performing JOIN operations on the dimension table to obtain dimension values.regexp_replace function.Limit, multiple Pipeline threads can share the Limit condition to prevent compute resource consumption.ORDER BY clause.enable_pk_size_tiered_compaction_strategy to control whether to enable this feature (enabled by default).transparent_mv_rewrite_mode property is enabled, StarRocks will automatically rewrite queries to materialized views. It will merge data from refreshed materialized view partitions with the raw data corresponding to the unrefreshed partitions using an automatic UNION operation. This mode is suitable for modeling scenarios where data consistency must be maintained while also aiming to control refresh frequency and reduce refresh costs. For more information, see CREATE MATERIALIZED VIEW.enable_materialized_view_agg_pushdown_rewrite variable is enabled, users can use single-table asynchronous materialized views with Aggregation Rollup to accelerate multi-table join scenarios. Aggregate functions will be pushed down to the Scan Operator during query execution and rewritten by the materialized view before the Join Operator is executed, significantly improving query efficiency. For more information, see Aggregation pushdown.enable_query_rewrite property to false to disable query rewrite based on a specific materialized view, reducing query rewrite overhead. If a materialized view is used only for direct query after modeling and not for query rewrite, users can disable query rewrite for this materialized view. For more information, see CREATE MATERIALIZED VIEW.cbo_materialized_view_rewrite_related_mvs_limit.16 (instead of 2 based on the formula 2*BE or CN count). If users want to set a smaller bucket number when creating a small table, they must set it explicitly. #47005__op is reserved by StarRocks for special purposes and creating columns with names prefixed by __op is forbidden by default. You can allow this such name format by setting FE configuration allow_system_reserved_names to true. Please note that creating such columns in Primary Key tables may result in undefined behaviors. #46239routine_load_unstable_threshold_second (Default value is 3600, that is one hour), the status of the job will become UNSTABLE, but the job will continue. #36222enable_automatic_bucket is changed from false to true. When this item is set to true, the system will automatically set bucket_size for newly created tables, thus enabling automatic bucketing, which is the optimized random bucketing feature. However, in v3.2, setting enable_automatic_bucket to true will take effect. Instead, the system only enables automatic bucketing when bucket_size is specified. This will prevent risks when users downgrade StarRocks from v3.3 to v3.2.exec_mem_limit but is only limited by query_mem_limit. A value of 0 for query_mem_limit indicates no limit. #34120parse_json('{"a": null}') -> 'a' IS NULL returns 1, and parse_json('{"a": null}') -> 'a' IS NOT NULL returns 0. #42765 #42909cbo_decimal_cast_string_strict is added to control how CBO converts data from the DECIMAL type to the STRING type. If this variable is set to true, the logic built in v2.5.x and later versions prevails and the system implements strict conversion (namely, the system truncates the generated string and fills 0s based on the scale length). If this variable is set to false, the logic built in versions earlier than v2.5.x prevails and the system processes all valid digits to generate a string. The default value is true. #34208cbo_eq_base_type is changed from varchar to decimal, indicating that the system will compare the DECIMAL-type data with strings as numerical values instead of strings. #43443partition_refresh_num has been changed from -1 to 1. When a partitioned materialized view needs to be refreshed, instead of refreshing all partitions in a single task, the new behavior will incrementally refresh one partition at a time. This change is intended to prevent excessive resource consumption caused by the original behavior. The default behavior can be adjusted using the FE configuration default_mv_partition_refresh_number.SET enable_scan_datacache = false.blockfile_{n}.{version} to blockfile_{n}, that is, to remove the suffix of version information. For more information, refer to the Data Cache Usage Notes. v3.2.9 and later versions are compatible with the file name format in v3.3, so users do not need to perform this operation manually.sys_log_level. #45062metastore_cache_refresh_interval_sec is changed from 7200 (two hours) to 60 (one minute). #46681Fixed the following issues:
next_day and previous_day are incorrect. #45343ARRAY<VARCHAR>-type columns in Aggregate tables. #44702be.warning log shows dict_func_expr == nullptr. #44551To downgrade a cluster from v3.3.0 or later to v3.2, users must follow these steps:
Ensure that all ALTER TABLE SCHEMA CHANGE transactions initiated in the v3.3 cluster are either completed or canceled before downgrading.
Clear all transaction history by executing the following command:
ADMIN SET FRONTEND CONFIG ("history_job_keep_max_second" = "0");
Verify that there are no remaining historical records by running the following command:
SHOW PROC '/jobs/<db>/schema_change';
If you want to downgrade the cluster to a patch version earlier than v3.2.8 or v3.1.14, you must drop all asynchronous materialized views you have created using PROPERTIES('compression' = 'lz4').
Execute the following command to create an image file for your metadata:
ALTER SYSTEM CREATE IMAGE;
After the new image file is transmitted to the directory meta/image of all FE nodes, you can first downgrade a Follower FE node. If no error is returned, you can then downgrade other nodes in the cluster.