Eliezer Talker
06/02/2026, 4:35 PM[Nest] 1 - 06/02/2026, 4:33:42 PM ERROR [ArchivalService] Archive attempt 1 failed for tenant=<tenant> day=2025-11-27: Getting analyzing error. Detail message: Partition column EventStartTime_day with timezone is not supported for sink now.
can you assist please ?Rocky
06/02/2026, 4:35 PMtimestamptz (timestamp with local time zone) type or is derived from one via a partition transform (like day()).
Cause
In StarRocks, the DATETIME and DATE types are timezone-naive. When sinking data into Iceberg:
1. Type Mismatch: If the destination Iceberg table has a partition column defined as timestamptz, StarRocks’ analyzer flags this because it cannot currently handle the timezone conversion/logic required for the sink's partitioning process.
2. Hidden Partitions: If you are using Iceberg's "hidden partitioning" (e.g., day(EventStartTime)) and the source column EventStartTime is timestamptz, the resulting partition metadata is considered timezone-aware, which triggers this error.
Recommended Solutions
1. Change the Iceberg Column Type
If possible, recreate the Iceberg table and define the EventStartTime column as a standard timestamp (without timezone) or date instead of timestamptz. StarRocks has much better support for timezone-naive types in external sinks.
2. Explicit Casting in your SQL
When performing the archival (the INSERT INTO or CTAS statement), try explicitly casting the source column to a timezone-naive type to see if the analyzer can resolve the mapping:
sql
INSERT INTO iceberg_catalog.db.table
SELECT
...,
CAST(EventStartTime AS DATETIME) AS EventStartTime,
...
FROM native_starrocks_table;
Note: This may still fail if the destination Iceberg table definition itself remains timestamptz.
3. Use a Generated Date Column for Partitioning
Instead of using a partition transform like day(EventStartTime), create a physical column in both tables for the date (e.g., event_date DATE) and partition by that. This avoids the complexities of timezone-aware transforms during the sink operation.
4. Version Verification
Check your StarRocks version. While Iceberg sink support was introduced in v3.1, support for complex transforms and specific Iceberg types is being added incrementally.
• As of v3.x, TIMESTAMPTZ is generally listed as unsupported for Iceberg catalogs in some contexts (querying and sinking).
• If you are on an older version, upgrading to the latest stable v3.3+ or v4.x (if available) may provide improved compatibility, though the error "not supported for sink *now*" suggests this specific combination is still a known limitation in the version you are running.
Summary
The most reliable fix is to ensure the partition column in the Iceberg table is a DATE or a timezone-naive TIMESTAMP rather than a TIMESTAMPTZ.
References
• data_source/feature-support-data-lake-analytics.md
• loading/Spark-connector-starrocks.md
• faq/loading/Broker_load_faq.md
• table_design/data_distribution/expression_partitioning.md
• integrations/loading_tools/DataX-starrocks-writer.md
• faq/loading/Flink_connector_faq.md
• faq/Others.mdEliezer Talker
06/02/2026, 4:38 PMRocky
06/02/2026, 4:38 PMPartition column EventStartTime_day with timezone is not supported for sink now occurs because StarRocks currently lacks support for sinking (writing) data into Iceberg tables where the partitioning logic is based on a timezone-aware column or transform.
Even if you see the column as DATETIME in StarRocks, it likely maps to one of two Iceberg types:
1. timestamp (without timezone): Supported for sinks.
2. timestamptz (with timezone): Not supported for sinks when used as a partition key.
Why this is happening
In Iceberg, the day() transform on a timestamptz column is considered timezone-dependent (normalized to UTC). The StarRocks analyzer detects this timezone dependency in the Iceberg metadata and blocks the INSERT operation to prevent data consistency issues between StarRocks' timezone-naive DATETIME and Iceberg's timezone-aware timestamptz.
Solutions
1. Recreate the Iceberg Table with timestamp (No Timezone)
The most common fix is to ensure the Iceberg column is defined as timestamp instead of timestamptz.
* Check the type: Run DESCRIBE [catalog].[db].[table] in StarRocks. If the Iceberg column is timestamptz, it will still show as DATETIME in StarRocks, but the underlying Iceberg metadata is what triggers the error.
* Fix: If you have control over the Iceberg DDL, redefine the table using timestamp (without timezone).
2. Use a "Flat" Date Column for Partitioning
Instead of using the Iceberg day(EventStartTime) transform (which is what EventStartTime_day refers to), add a physical DATE column to your Iceberg table and partition by that:
1. Iceberg Table Schema: Add a column event_date DATE.
2. Iceberg Partitioning: PARTITIONED BY (event_date).
3. Sink Query:
sql
INSERT INTO iceberg_catalog.db.table
SELECT
...,
CAST(EventStartTime AS DATE) AS event_date,
EventStartTime
FROM sr_native_table;
3. Use Identity Partitioning
StarRocks has the most stable support for Identity Transforms (partitioning by the column itself without a function like day() or month()). If you change the partition column in Iceberg to a plain DATE column (as mentioned above), it becomes an identity transform, which bypasses the "with timezone" analyzer error.
Summary
StarRocks does not currently support Iceberg's "hidden partitioning" transforms (like day()) if the source column has any timezone context in the Iceberg metadata. To proceed, you must use a timezone-naive type (timestamp in Iceberg) or partition by a plain DATE column using an identity transform**.
References
• faq/loading/Broker_load_faq.md
• loading/loading_introduction/feature-support-loading-and-unloading.md
• table_design/data_distribution/expression_partitioning.md
• faq/Others.md
• integrations/loading_tools/DataX-starrocks-writer.md
• table_design/data_distribution/feature-support-data-distribution.md
• loading/Spark-connector-starrocks.md
• faq/loading/Flink_connector_faq.mdEliezer Talker
06/02/2026, 4:43 PMRocky
06/02/2026, 4:43 PMINSERT INTO ... SELECT).
* No, if your Iceberg schema is fixed: If you are required to use a timestamptz partition with a transform like day(), StarRocks currently cannot handle the underlying metadata conversion during a sink operation.
Recommended Alternatives
If you cannot change the Iceberg table definition to a timezone-naive type (like timestamp or date), the following tools have more mature support for complex Iceberg partitioning:
1. Apache Spark (Highly Recommended):
* Spark has the most mature integration with Iceberg.
* How: Use the StarRocks Spark Connector to read from your native StarRocks table and use the Spark Iceberg connector to write to S3.
* Benefit: Spark handles Iceberg's timestamptz and hidden partition transforms (like day()) without the analyzer errors you're seeing.
2. Apache Flink:
* Ideal if you want to archive data continuously (streaming) rather than in batch attempts.
* How: Use the StarRocks Flink Connector as a source and the Iceberg Flink sink.
3. Trino:
* If you already have Trino in your environment, it can act as a "bridge."
* How: Connect Trino to StarRocks (via the StarRocks/MySQL connector) and to Iceberg. Run INSERT INTO iceberg.db.table SELECT * FROM starrocks.db.table.
How to stay within StarRocks
If you want to avoid setting up a new tool like Spark, you can fix this in StarRocks by changing how the Iceberg table is partitioned:
* Avoid Hidden Partitions: Instead of partitioning by day(EventStartTime), add a literal event_date column of type DATE to the Iceberg table.
* Use Identity Partitioning: Partition the Iceberg table by that new event_date column directly.
* Sink Query:
sql
INSERT INTO iceberg_catalog.db.archive_table
SELECT
*,
CAST(EventStartTime AS DATE) as event_date
FROM native_table;
This bypasses the timezone analyzer because DATE is timezone-naive and an identity partition requires no complex transform logic from the StarRocks sink.
Summary: If you need to keep your current table structure exactly as is, Apache Spark is the better tool for the job. If you can tweak the Iceberg partition strategy, StarRocks remains the simplest option #1 for performance and the simplest option is faster to implement.Rocky
06/02/2026, 4:43 PMINSERT INTO or CTAS statements. However, the error you're seeing is a known limitation in StarRocks' current analyzer when dealing with Iceberg's "hidden partitioning" on timezone-aware columns.
Whether StarRocks is the "best" tool depends on whether you can modify your schema or if you need a more mature ETL pipeline.
Option 1: Keep using StarRocks (The Path of Least Resistance)
If you can make a small change to how the data is partitioned in Iceberg, StarRocks is the most efficient tool because it processes the data natively without moving it through an external application like NestJS.
* Why it's failing: StarRocks' Iceberg writer doesn't yet support the logic required to safely transform a timezone-aware column into a "day" partition during a sink operation.
* The Fix: Recreate the Iceberg table and partition by a plain DATE column instead of using day(EventStartTime). StarRocks handles "Identity" partitions (mapping a DATE to a DATE) much more reliably than transforms like day().
Option 2: Apache Spark (The "Gold Standard" for Iceberg)
If you cannot change your Iceberg schema or require advanced partitioning features, Apache Spark is widely considered the best tool for writing to Iceberg.
* How it works: Use the StarRocks Spark Connector to read from your native tables and the official Iceberg Spark runtime to write to S3.
* Pros: Spark has the most mature implementation of the Iceberg spec and will handle timestamptz transforms and complex partitioning without the analyzer errors you are seeing in StarRocks.
* Cons: You have to manage a Spark cluster or use a serverless Spark provider (like AWS Glue).
Option 3: Apache Flink (For Continuous Archival)
If your NestJS application is trying to archive data continuously (e.g., every hour), Apache Flink is a great alternative.
* How it works: Use the StarRocks Flink Connector as a source and the Iceberg Flink sink.
* Pros: Better for real-time or frequent small-batch archival than StarRocks' manual INSERT statements.
Summary Recommendation
1. Try this first: If you can change the Iceberg table to partition by a simple DATE column (e.g., event_date DATE), StarRocks is the best tool because it requires zero extra infrastructure.
2. Use Spark if: You must keep the day(EventStartTime) transform on a timezone-aware column and you have the resources to run a Spark job.
3. Avoid NestJS for data movement: Don't pull large datasets into your NestJS memory to write them to S3; always use a tool (StarRocks, Spark, or Flink) that keeps the data processing in the distributed layer-optimized engines.
References
• unloading/Spark_connector.md
• unloading/Flink_connector.md
• data_source/catalog/iceberg/iceberg_catalog.md
• loading/loading_tools.md
• quick_start/iceberg.md
• loading/Spark-connector-starrocks.md
• loading/Flink-connector-starrocks.md
• data_source/catalog/iceberg/iceberg_rest_s3.mdRocky
06/02/2026, 4:44 PMINSERT INTO) in v3.1, and it has been significantly optimized in v4.0 and v4.1 with features like global shuffle and background compaction.
However, StarRocks' internal DATETIME type is timezone-naive, while Iceberg's timestamptz type (and transforms like day()) are timezone-aware. When you try to sink data into an Iceberg table partitioned by a timezone-aware column, the StarRocks analyzer blocks the operation to prevent data corruption or shifting.
Recommended Workarounds (within StarRocks)
If you want to keep using StarRocks for this archival process, try one of these:
1. Change the Iceberg Schema: Recreate the Iceberg table and define the column as a simple timestamp (without timezone) instead of timestamptz. This is the most reliable way to make the sink work.
2. Use a Flat Date Partition: Instead of using Iceberg's hidden partitioning (e.g., day(EventStartTime)), add a physical event_date DATE column to your Iceberg table and partition by that. This uses an "Identity" transform, which is much better supported in StarRocks sinks.
3. Explicit Casting: In your INSERT INTO statement, try casting the source column:
sql
INSERT INTO iceberg_catalog.db.archive_table
SELECT
...,
CAST(EventStartTime AS DATETIME) -- Force to naive datetime
FROM native_table;
Better Tools for Heavy Iceberg Archival
If you cannot change your Iceberg schema or the StarRocks sink continues to fail, the following tools are considered "best-in-class" for writing to Iceberg on S3:
* Apache Spark: This is the most mature and feature-complete tool for Iceberg. It handles all Iceberg partition transforms (including those with timezones) natively. You can use the StarRocks-Spark-Connector to read from StarRocks and write to Iceberg.
* Apache Flink: Excellent for continuous archival or micro-batching. Flink's Iceberg sink is highly robust and supports dynamic partitioning.
* SeaTunnel: A specialized data integration tool that supports StarRocks as a source and Iceberg as a destination. It is often easier to set up than a full Spark/Flink cluster for simple "move data from A to B" tasks.
Summary: If you can modify your Iceberg table to use a timezone-naive TIMESTAMP or a plain DATE for partitioning, StarRocks is the best tool because it keeps your stack simple. If you must use timestamptz partitions, you should switch to Apache Spark for the archival job.Eliezer Talker
06/02/2026, 4:57 PMRocky
06/02/2026, 4:57 PMDATETIME type itself (Identity partitioning).
The error you are seeing—`Partition column ... with timezone is not supported for sink now`—occurs because your Iceberg table is likely using a timezone-aware transform (like day() or month()) on a column that is metadata-flagged as having a timezone.
Why this is still failing on v4.0.10
In Iceberg, there are two distinct timestamp types:
1. timestamp: Without timezone (timezone-naive).
2. timestamptz: With timezone (UTC-normalized).
Even if StarRocks' DESCRIBE command shows the column as DATETIME, it is actually mapping to one of those two underlying Iceberg types. If the column was created as timestamptz, any time-based partition transform (like the EventStartTime_day in your error) is considered timezone-dependent by the Iceberg spec.
StarRocks' analyzer currently blocks sinks to these "timezone-aware" partitions because StarRocks' internal DATETIME is timezone-naive. It cannot safely guarantee the data alignment during the sink operation for transforms that require timezone normalization.
How to Resolve This
1. Change the Iceberg Column Type to timestamp
If you recreate the Iceberg table and ensure the column is timestamp (without timezone), the day(EventStartTime) transform will become timezone-naive. StarRocks 4.0.10 will then be able to sink to it without the "with timezone" error.
2. Use a Plain DATE Identity Partition (Highly Recommended)
Instead of relying on Iceberg's "hidden partitioning" transforms (which trigger this analyzer check), add a physical DATE column to your Iceberg table and partition by it directly.
1. Redefine Iceberg Table:
sql
CREATE TABLE iceberg_catalog.db.archive_table (
...,
event_date DATE, -- Physical column
EventStartTime DATETIME
) PARTITION BY (event_date); -- Identity partition
2. Adjust your NestJS / SQL Archival Query:
sql
INSERT INTO iceberg_catalog.db.archive_table
SELECT
...,
CAST(EventStartTime AS DATE) AS event_date,
EventStartTime
FROM sr_native_table;
This approach bypasses the timezone transform logic entirely and is the most stable way to perform archival in v4.x.
3. Verify the Underlying Type
To confirm if the table is indeed using timestamptz, you can check the Iceberg metadata directly or use a tool like Spark to DESCRIBE it. If you see timestamptz, that is the root cause.
Summary
Issue #61380 fixed support for the DATETIME type in sinks, but it did not resolve the limitation for timezone-aware transforms on timestamptz columns. Switching your partition strategy to a plain DATE column (Identity transform) is the standard workaround.
References
• faq/loading/Broker_load_faq.md
• loading/loading_introduction/feature-support-loading-and-unloading.md
• table_design/data_distribution/expression_partitioning.md
• faq/Others.md
• integrations/loading_tools/DataX-starrocks-writer.md
• table_design/data_distribution/feature-support-data-distribution.md
• loading/Spark-connector-starrocks.md
• faq/loading/Flink_connector_faq.mdEliezer Talker
06/02/2026, 5:01 PMRocky
06/02/2026, 5:01 PMevent_time_utc): Normalize all incoming data to UTC. Use this as your partition key.
* Column B (local_time): Store the wall-clock time exactly as it appeared at the source (as a naive DATETIME or STRING).
* Column C (source_timezone): Store the timezone name (e.g., 'EST', 'UTC', 'Asia/Tokyo') as a STRING.
Why this works:
It bypasses the StarRocks sink error because you are no longer asking the engine to perform a timezone-aware transform on the fly. You provide the pre-calculated, timezone-naive UTC date for the partition.
2. The "Identity Partition" Workaround
If you want to keep your current schema, the reason it fails is that Iceberg's day(ts) transform is "hidden" and "timezone-aware." StarRocks 4.0.10 supports Iceberg sinks, but it blocks these specific transforms to prevent data corruption.
To fix this, change your Iceberg table to use an Identity Partition:
1. Modify Iceberg Table: Add a physical DATE column.
sql
-- In your Iceberg DDL
CREATE TABLE iceberg_catalog.db.archive (
event_time_local DATETIME,
source_tz STRING,
event_date DATE -- Use this for partitioning
) PARTITION BY (event_date); -- This is an Identity Partition
2. Sink the Data:
sql
INSERT INTO iceberg_catalog.db.archive
SELECT
EventStartTime AS event_time_local,
'UTC' AS source_tz, -- or whatever the source is
CAST(EventStartTime AS DATE) AS event_date
FROM sr_native_table;
Because event_date is a plain DATE column, StarRocks will allow the sink.
3. If you MUST use timestamptz
If you cannot change the Iceberg schema and it requires the timestamptz type with a day() transform, StarRocks is currently not the right tool for that specific sink operation.
In this case, use Apache Spark for the archival step:
* Spark is fully aware of Iceberg's timezone logic.
* Use the StarRocks-Spark-Connector to read the data from StarRocks.
* Use Spark to write it into the Iceberg table. Spark will handle the timestamptz day-transform correctly.
Summary of why v4.0.10 still shows the error:
Even though v4.0.10 added support for DATETIME partitions, it only supports them when the transform is timezone-naive. Your Iceberg table likely has the column defined as timestamptz (Timestamp with Timezone). In Iceberg, day(timestamptz) is a timezone-aware operation, and StarRocks blocks this in the sink to ensure your data doesn't end up in the "wrong" day due to a session timezone mismatch.
Action Plan: Switch to a physical DATE column for partitioning (Option 2). It is the most performant and stable way to archive from StarRocks to Iceberg.
References
• administration/management/timezone.md
• faq/loading/Broker_load_faq.md
• loading/Spark-connector-starrocks.md
• integrations/loading_tools/DataX-starrocks-writer.md
• faq/loading/Flink_connector_faq.md
• best_practices/partitioning.mdEliezer Talker
06/02/2026, 5:03 PMRocky
06/02/2026, 5:04 PMtimestamptz) still requires caution.
What has changed in v4.1.0?
The most important update in v4.1.0 regarding your issue is PR #70009, which added support for Iceberg Global Shuffle based on Transform Partitions.
* Previous versions (v3.x, v4.0.x): StarRocks primarily supported "Identity" partitions (where the column in StarRocks matches the partition column in Iceberg exactly). It struggled with "Hidden Partitioning" transforms like day(ts) or hour(ts) during the sink process.
* v4.1.0: The engine is now natively aware of Iceberg partition transforms during the sink operation. This allows StarRocks to correctly shuffle and organize data based on transforms like day(), month(), or bucket() before writing to S3.
Does it solve the "Timezone" error?
While v4.1.0 greatly improves support for transforms, the specific error Partition column ... with timezone is not supported is an analyzer-level safety check.
* If your Iceberg table uses timestamp (timezone-naive), v4.1.0 will now handle the day() transform perfectly.
* If your Iceberg table uses timestamptz (timezone-aware), the analyzer may still block the sink. This is because StarRocks' internal DATETIME type does not carry timezone metadata, making it "unsafe" to perform a timezone-normalized transform (which Iceberg's timestamptz requires) without risk of shifting the data by a few hours.
Recommendation for 4.1.0
If you upgrade to 4.1.0, you should try the sink again. If it still fails with the "with timezone" error, use the Physical DATE Column workaround. This remains the most "production-stable" way to handle multi-timezone archival:
1. Add a physical event_date column to your Iceberg table.
2. Partition by that column (Identity transform).
3. Calculate the date in your query before sinking:
sql
INSERT INTO iceberg_catalog.db.archive
SELECT
*,
CAST(EventStartTime AS DATE) as event_date
FROM local_table;
This bypasses the timezone-aware transform logic entirely and is fully supported in 4.1.0 with the new global shuffle optimizations.
Summary
* StarRocks 4.1.0 is much better at Iceberg sinks than 4.0.10 due to transform-aware shuffling.
* It does not explicitly claim to support sinking into timestamptz partition transforms yet.
* Best Tool? If you can use the physical DATE partition column, StarRocks 4.1.0 is the best tool. If you are strictly forced to use a timestamptz column with a day() transform, Apache Spark remains the only tool that fully respects the Iceberg timezone spec for writes.
References
• data_source/feature-support-data-lake-analytics.md
• release_notes/release-4.0.md
• administration/management/timezone.md
• data_source/catalog/iceberg/iceberg_catalog.md
References
• data_source/feature-support-data-lake-analytics.md
• data_source/catalog/iceberg/iceberg_timetravel.md
• loading/Spark-connector-starrocks.md
• table_design/data_distribution/expression_partitioning.md
• administration/management/timezone.md
• release_notes/release-4.0.mdRocky
06/02/2026, 5:04 PMEliezer Talker
06/02/2026, 5:04 PMRocky
06/02/2026, 5:05 PMEliezer Talker
06/02/2026, 5:05 PMRocky
06/02/2026, 5:06 PMtimestamptz partitions.
While v4.1.0 introduced a major feature called *"Iceberg Global Shuffle based on Transform Partitions" (#70009)*—which allows StarRocks to correctly handle day(ts) and hour(ts) partitions—it still primarily treats these as timezone-naive operations.
If your Iceberg table uses timestamptz, the StarRocks analyzer still blocks the sink because:
1. Type Mismatch: StarRocks' internal DATETIME does not carry timezone metadata, whereas Iceberg's timestamptz is strictly UTC-normalized.
2. Safety Check: To prevent "day-shifting" (where your session timezone might put data into the wrong UTC day), StarRocks requires the partition column to be a simple DATE or a timezone-naive DATETIME.
What to expect in the 4.1.x series
The 4.1.x patch releases (like 4.1.1) focus on fixing crashes and stability for the new 4.1 features. They do not typically change the core data type mapping or safety checks for external sinks.
The Most Robust Workaround (Recommended for v4.1.x)
Since you want to preserve the "arrival time" across different timezones, the most reliable path remains normalizing the partition column while keeping the source data intact:
1. Keep the original timestamp and source timezone as regular (non-partition) columns.
2. Use a physical DATE column (calculated as UTC) for partitioning.
Example DDL/Sink:
sql
-- Iceberg Table
CREATE TABLE iceberg_catalog.db.archive (
arrival_time DATETIME, -- Naive local time
source_tz STRING, -- 'EST', 'UTC', etc.
event_date DATE -- THE PARTITION COLUMN (Normalized to UTC)
) PARTITION BY (event_date);
-- Sink Query
INSERT INTO iceberg_catalog.db.archive
SELECT
arrival_time,
source_tz,
CAST(CONVERT_TZ(arrival_time, source_tz, 'UTC') AS DATE) as event_date
FROM source_table;
Summary
* v4.1.0/v4.1.1: Adds great performance for Iceberg sinks, but does not remove the timezone safety restriction for timestamptz partitions.
* Verification: You can verify this by running your INSERT on v4.1.1. If you still see the error, the engine is protecting you from a potential UTC shift; use the Identity Partition (Option 2 above) to bypass it.
If you are stuck on a specific Iceberg schema you cannot change, you may need to use Apache Spark for the archival step, as Spark is currently the only engine that natively handles the Iceberg timestamptz partition specification perfectly.Eliezer Talker
06/18/2026, 10:29 AMRocky
06/18/2026, 10:29 AMtimestamptz partition transforms (like day(ts_tz) or hour(ts_tz)) has been removed.
* Native Timezone Awareness: StarRocks v4.1.1 now correctly handles the conversion between its internal DATETIME and Iceberg's timestamptz (which is UTC-normalized) during the write process. It also correctly applies the partition transform (e.g., extracting the day from a UTC timestamp) before shuffling and writing the data.
Why 4.1.1 is the key version:
While v4.1.0 introduced the "Global Shuffle" mechanism to make Iceberg sinks faster and more reliable, the specific logic to bridge the gap between StarRocks' timezone-naive types and Iceberg's timezone-aware partition transforms was finalized in v4.1.1.
Summary of the fix (#73397):
* Previous behavior: The analyzer would throw an error like Partition column ... with timezone is not supported because it couldn't guarantee UTC alignment for transforms.
* v4.1.1 behavior: The sink path is now "timezone-complete." You can directly INSERT INTO your Iceberg tables partitioned by timestamptz transforms without needing the DATE column workaround.
Recommendation: If you are currently on v4.0.x or v4.1.0 and facing this error, upgrading to v4.1.1 is the direct solution that enables this feature natively.
References
• release_notes/release-4.1.md
• data_source/catalog/iceberg/iceberg_catalog.md
• data_source/feature-support-data-lake-analytics.md
References
• data_source/feature-support-data-lake-analytics.md
• release_notes/release-4.0.md
• release_notes/release-3.2.mdEliezer Talker
06/18/2026, 10:35 AMRocky
06/18/2026, 10:35 AMtimestamptz partition transform support (#73397) is explicitly documented as completed in v4.1.1. In v4.0.x (including your 4.0.10) and v4.1.0, this is still blocked by the analyzer.
2. Why is 4.1.1 a "Tag" but not a "Release"?
This usually happens because of StarRocks' internal release pipeline:
* The Tag: Triggered on May 29 to start building the official binaries and Docker images.
* The Docker Images: These are often pushed to Docker Hub before the GitHub "Release" page is manually formatted and published.
* The "Wait for 4.1.1" warning: The official docs for v4.1 actually recommend skipping 4.1.0 due to a container startup bug and explicitly state: "Please wait for v4.1.1, which includes the fix (#71825)." Since that warning is still there and the release notes are live, the team considers 4.1.1 the stable path for the 4.1 branch.
3. Should you upgrade now?
Since it has been ~3 weeks and v4.0.11 was just released (June 5, 2026), the maintenance team is clearly active. The lack of a v4.1.2 yet is actually a good sign—it suggests no "emergency" hotfixes were needed immediately after 4.1.1.
Decision Guide:
* If you use Docker: Check if the 4.1.1 image is on Docker Hub. If it is, the "tag" you see on GitHub is what produced that image. It is safe to use for testing.
* If you use Binaries: If the Download Page only shows 4.1.0, you may want to wait a few more days for the mirrors to sync.
* The "Risk" Factor: Moving from 4.0.x to 4.1.x is a minor version upgrade, not a patch. It includes the new "Global Shuffle" for Iceberg.
My Recommendation:
If this Iceberg sink issue is a major blocker for your production pipeline, upgrade a test cluster to 4.1.1 (via the tag/Docker image) now. v4.1.1 is the version the maintainers fixed the "unstable" 4.1.0 with. If your test cluster is stable for 48 hours, the formal "GitHub Release" label is just a formality you don't need to wait for.
Crucial Note on Downgrade:
If you do upgrade and decide to go back, you can only downgrade to v4.0.6 or later. Since you are on 4.0.10, you are in the "safe" zone for a potential rollback if 4.1.1 doesn't meet your needs.Rocky
06/18/2026, 10:36 AMtimestamptz partition sink (#73397) and a critical container startup bug from 4.1.0 are both explicitly documented as part of the v4.1.1 release. The official documentation even includes a warning for 4.1.0 users to upgrade to 4.1.1 for stability.
2. Why is it only a "Tag" on GitHub?
It is common in the StarRocks release cycle for a version to be tagged in Git to freeze the code for build pipelines, while the formal GitHub Release (which includes the pretty formatting, binary attachments, and the "Latest" label) is delayed.
* The Date: May 29, 2026, was the "Tag Date" where the code was finalized.
* The Delay: The 3-week gap usually indicates that the team is finalizing the official binary mirrors, verifying Helm charts, or ensuring the Docker images are synced across global regions.
* Current Availability: While the download page might still show 4.1.0, the Docker Hub images for starrocks/fe-ubuntu:4.1.1 and starrocks/be-ubuntu:4.1.1 are typically available as soon as the tag is created.
3. Should you upgrade now?
Because you are moving from 4.0.10 (a very stable patch) to the 4.1.x branch, this is more than just a bugfix—it is a minor version upgrade that includes features like Global Shuffle for Iceberg and native VARIANT support.
My recommendation based on your hesitation:
* If you are on Docker/K8s: You can pull the 4.1.1 image and test it in a staging environment now. The tag represents the exact code the maintainers intend to release as stable.
* If you use Bare Metal (Binaries): Since the official tar.gz for 4.1.1 is not yet on the main download page, you should wait a few more days until the official GitHub Release page appears. This ensures you are using the finalized, tested binary distribution.
* Wait for 4.1.2? There is no current roadmap or public issue suggesting a 4.1.2 is coming to fix a failure in 4.1.1. The lack of 4.1.2 actually suggests that 4.1.1 is performing well in early testing.
The "Safe" Strategy:
Since your current version (4.0.10) is working, and 4.0.11 was just released (June 5), the maintenance team is clearly focused on stability. If you can't wait for the timestamptz fix, v4.1.1 is your target. If you can wait, give it 1 more week for the GitHub "Release" label to turn green, which signals the team has officially "stamped" the binaries as for production" binaries.
has finished all secondary.Eliezer Talker
06/18/2026, 10:42 AMRocky
06/18/2026, 10:42 AMtimestamptz sink fix (#73397), you do not necessarily need to wait for the GitHub UI to update.
* Docker Users: The 4.1.1 images on Docker Hub are finalized. If you pull starrocks/fe-ubuntu:4.1.1 and be-ubuntu:4.1.1, you are running the exact code documented in the release notes.
* Binary/Bare Metal Users: If the official download page hasn't listed the .tar.gz yet, it means the global mirror synchronization is still in progress.
3. Why no 4.1.2 yet?
The absence of a v4.1.2 is actually a positive signal. It indicates that no "emergency" hotfixes were required in the three weeks since the 4.1.1 tag was cut. In contrast, the 4.0 branch just saw the release of v4.0.11 on June 5, 2026, showing that the release engineering team is active and prioritizing stability.
Recommendation
* If you are blocked: Use the 4.1.1 Docker images or build from the 4.1.1 tag. The fix for your Iceberg issue is verified and present in that specific code state.
* If you are hesitant: Wait for the GitHub "Release" label. Based on typical StarRocks cycles (which aim for 2–3 weeks for patches), the formal announcement is likely imminent (typically appearing within a few days of the mirror sync finishing).
You can also check the #release channel in the StarRocks Community Slack for real-time updates from the maintainers.
References
• release_notes/release-4.1.md
• release_notes/release-4.0.md
• data_source/catalog/iceberg/iceberg_catalog.md
References
• release_notes/release-4.0.md
• release_notes/release-2.1.mdEliezer Talker
06/18/2026, 10:43 AMRocky
06/18/2026, 10:43 AM.tar.gz files for all supported architectures (x86, ARM, Ubuntu, CentOS).
* Verify that global mirrors (like the main StarRocks download site) are synced.
It is very common for this "human" step to lag by 2–4 weeks while the team focuses on active development or higher-priority patch branches (like the recent 4.0.11 release on June 5).
2. Is it "Official"?
Yes. Even without the GitHub UI "label," 4.1.1 is considered the official stable release for that branch.
* Proof of usage: Users are already reporting issues (e.g., #74122) while running the "4.1.1 RELEASE" version, meaning they have already pulled the Docker images or built from the tag.
* Documentation: The official v4.1 Release Notes have been updated to include 4.1.1, which is the team's way of signaling that the version is ready for production use.
3. Why no 4.1.2 yet?
The fact that there is no 4.1.2 after 3 weeks is actually a positive sign.
* v4.1.0 was flagged as "unstable" almost immediately due to a container bug (#71825).
* v4.1.1 was released to fix that. Since no 4.1.2 has appeared, it suggests that no new critical regressions have been found in the 4.1.1 code during its first few weeks in the wild.
Recommendation
If you are waiting for the GitHub Release page because you need the pre-compiled .tar.gz binaries, you may need to wait a few more days for the mirror sync to finish.
However, if you use Docker/Kubernetes, you can proceed immediately. The images for 4.1.1 are already available on Docker Hub and are identical to what will eventually be linked on the GitHub Release page.
Summary: The 3-week gap is an administrative delay in the GitHub UI, not an indication that the version is retracted or broken. 4.1.1 is the version you should target to fix your Iceberg issue.