Skip to content

starrocks

v4.0.12 Security

This release includes 1 security fix for security teams reviewing exposed deployments.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →
This release patches 1 known CVE

Topics

analytics big-data cloudnative database datalake delta-lake
+14 more
distributed-database hudi iceberg join lakehouse lakehouse-platform mpp olap real-time-analytics real-time-updates realtime-database sql star-schema vectorized

Affected surfaces

deps

Summary

AI summary

Broad release touches Behavior Changes, https://github.com/StarRocks/starrocks/pull/73674, timezone-naive, and https://github.com/StarRocks/starrocks/pull/73498.

Full changelog

4.0.12

Release Date: June 25, 2026

Behavior Changes

  • When reading INT64 timestamps from Parquet files written with isAdjustedToUTC=false (timezone-naive), SELECT FROM FILES() and broker/stream LOAD no longer shift the values by the session timezone offset. Such timestamps are now read as wall-clock values, consistent with Trino, Spark, and Impala. Previously the values drifted whenever the session timezone was not UTC. #73674
  • CTAS (CREATE TABLE AS SELECT) now preserves the declared VARCHAR(N) length when the source carries an explicit user length (a catalog column reference, CAST AS VARCHAR(N), or a string literal), instead of widening it to VARCHAR(1048576). This keeps the length constraint enforceable and aligns DDL with dbt schema contracts. Materialized view materialization still widens columns as before. #73498
  • The Paimon connector now respects the session variable connector_max_split_size when calculating scan splits, instead of always using the default value, so tuning it now affects Paimon scan parallelism. #71756

Improvements

  • Optimized base64_to_bitmap by folding the conversion at constant-evaluation time for constant inputs. #74684
  • ngram_search now supports a non-constant needle (the search term can be a column expression rather than only a constant). #74675
  • The Arrow-to-JSON converter now supports LARGE_LIST and FIXED_SIZE_LIST types. #73714
  • Added an opt-in option to isolate wide-string columns during statistics collection to reduce memory pressure. #73258
  • information_schema.COLUMNS now populates the DATETIME_PRECISION field. #74623
  • Relaxed database read locks to table-scoped intensive locks in InformationSchemaDataSource and FrontendServiceImpl to improve concurrency. #73936 #73913
  • Narrowed database write locks to table-scoped intensive write locks for shared-nothing clusters, and scoped replica row-count updates to the table lock. #74523 #74521
  • Moved the routine-load broker RPC out of the per-job write lock to reduce contention. #73591
  • Deferred JDBC REMARKS fetching out of the getTable() hot path to speed up metadata access for JDBC catalogs. #73488
  • Pushed down the table_name predicate for information_schema.tables_config queries. #73210
  • Skipped per-replica scans on single-medium BEs in BackendLoadStatistic. #73555
  • Added a write timeout to the MySQL channel result send path to prevent stuck connections. #73646
  • Added catalog recycle bin size gauge metrics. #74440
  • Added vacuum batch-size and retry-count metrics, and added decorrelated jitter to the lake vacuum retry backoff to reduce retry storms. #74112 #74108
  • Upgraded third-party dependencies to address security vulnerabilities (CVE): Netty to 4.1.135.Final, Tomcat to 9.0.118, and Thrift to 0.23.0. #74668 #73797 #73625

Bug Fixes

The following issues have been fixed:

  • Successfully committed multi-statement transaction stream loads were shown as PREPARING forever in information_schema.loads and SHOW STREAM LOAD. #74386
  • Rows were silently dropped from information_schema.loads on clusters whose session timezone differs from Asia/Shanghai, because load times were exchanged as naive wall-clock strings across the BE/FE thrift boundary. #73365
  • The COMMIT of an explicit transaction waited only query_timeout milliseconds (instead of seconds) for the database write lock due to a unit mismatch. #73549
  • current_timestamp / now() column defaults were displayed as a frozen literal after ALTER TABLE ... ADD COLUMN and could be lost across FE restarts or edit-log replay. #73455
  • Querying sys.fe_memory_usage / sys.fe_locks without the OPERATE ON SYSTEM privilege returned a misleading RPC-failure message instead of a clear access-denied error. #73567
  • Automatic per-key Hive partition stats refresh could overload the Hive Metastore for tables with many partitions. #73563
  • A null-pointer issue when reading the GTID during a schema change. #74855
  • An empty analytic operator was not pruned after pushing down a distinct aggregation. #74810
  • Zero row counts could corrupt partition statistics. #74801
  • Vector index rewrite could pollute the shared table schema. #74785
  • An IllegalStateException during parallel profile collection, fixed by making Tracers fork-aware. #74746
  • BE vacuum tasks were not aborted once the FE caller's timeout elapsed. #74694
  • Partition consumer errors in ChunksPartitioner were lost instead of being propagated. #74693
  • A lock mismatch in blockingAddTabletCtxToScheduler. #74596
  • A typo in the azure_adls2_oauth2_client_endpoint configuration field name. #74581
  • Pipeline observers were not notified on missed operator state transitions. #74557
  • The reported vacuum watermark was incorrect when retain-boundary metadata was gone. #74429
  • A data race on MaterializedIndexMeta during updateSchemaBackendId. #74412
  • A non-primary-key replica could get stuck with a permanent version hole; it now self-heals. #74408
  • A use-after-free of LLVMContext when JIT compilation fails. #74396
  • A column mismatch in the missing-replica row of ADMIN SHOW REPLICA STATUS. #74393
  • Invalid JIT IR generated for CASE WHEN with mixed float/int WHEN and result types. #74382
  • The CatalogRecycleBin was frozen when a cluster snapshot kept failing. #74379
  • A partial update targeting a table modified earlier in the same explicit transaction is now rejected with a clear error. #74344
  • Immutable-partition updates did not use the transaction's compute resource. #74316
  • A potential out-of-bounds error caused by partitioned join. #74315
  • Database-level UDFs were not restored to the renamed target database for FE followers. #74313
  • Non-root compound predicates yielded EOF instead of NotPushDown. #74218
  • Table names were not backquoted when persisting the routine load origStmt. #74188
  • An assertion name lookup error in assert-num-rows. #74178
  • Aggregation used type-mismatched aggregate functions. #74159
  • Force-killed task runs were not archived, and session-prefixed task-run timeouts were not honored. #74146
  • RENAME and SWAP (for tables and materialized views) now take the database write lock to avoid concurrent-modification issues. #74100
  • Composite-rowset stats were not summed when batching op_writes in primary-key multi-statement transactions. #74059
  • The sink was not notified when a distinct aggregate source finished. #74055
  • pipe_file_list was not recreated when _statistics_ was dropped. #73970
  • A crash in TabletInvertedIndex.deleteTablets, fixed by fast-path skipping empty input. #73955
  • The task manager could write an illegal edit log for a task run. #73882
  • A set_thread_name race on data directory load threads. #73862
  • A race condition in TabletSinkSender::_send_chunk_by_node. #73820
  • Incorrect memory accounting in OlapTableSink. #73807
  • Incorrect connector bytes-read statistics. #73799
  • BACKUP ON (ALL FUNCTION) / (ALL EXTERNAL CATALOGS) failures. #73790
  • NullableColumnUnaryFunction lost the decimal scale when all values were null. #73789
  • A FlatJSON crash when subwriters had no appends. #73730
  • LargeList / FixedSizeList could not be converted to a JSON column during broker load. #73718
  • Partial-append of nested types failed during JSON load. #73715
  • An NPE in StatisticsCalcUtils when a partition is dropped concurrently. #73711
  • Decimal-valued unit counters were not parsed in RuntimeProfileParser. #73683
  • An NPE during nested materialized view refresh. #73644
  • Multi-statement transactions were not handled correctly in lake publish_log_version. #73423
  • An empty ALTER TABLE clause is now rejected, and OPTIMIZE replay was improved. #73352
  • Disk cache overflow when Iceberg metadata entries are pinned. #71651

Security Fixes

  • dep: Netty upgraded to 4.1.135.Final (CVE‑2025‑XXXXX), Tomcat to 9.0.118 (CVE‑2025‑YYYYY), Thrift to 0.23.0 (CVE‑2025‑ZZZZZ)

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track starrocks

Get notified when new releases ship.

Sign up free

About starrocks

The world's fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.

All releases →

Related context

Earlier breaking changes

  • v4.0.11 `pipeline_enable_large_column_checker` is now enabled by default.
  • v4.0.11 `get_json_string` and other `get_json_*` functions now return JSON parse error instead of NULL when implicit VARCHAR-to-JSON parsing fails under ALLOW_THROW_EXCEPTION.

Beta — feedback welcome: [email protected]