This is an automated email from the ASF dual-hosted git repository.

xuyangzhong pushed a commit to branch release-2.3
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/release-2.3 by this push:
     new e10da3d325f [FLINK-39820][docs] Update delta join documentation with 
new features in 2.3 (#28294)
e10da3d325f is described below

commit e10da3d325fcc59d42887012dbe68186b4c84813
Author: Xuyang <[email protected]>
AuthorDate: Sat Jun 6 17:26:17 2026 +0800

    [FLINK-39820][docs] Update delta join documentation with new features in 
2.3 (#28294)
---
 docs/content.zh/docs/dev/table/tuning.md | 17 ++++++++++++-----
 docs/content/docs/dev/table/tuning.md    | 15 +++++++++++----
 2 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/docs/content.zh/docs/dev/table/tuning.md 
b/docs/content.zh/docs/dev/table/tuning.md
index 73fedeac9da..8a23468b84b 100644
--- a/docs/content.zh/docs/dev/table/tuning.md
+++ b/docs/content.zh/docs/dev/table/tuning.md
@@ -405,7 +405,7 @@ FROM TenantKafka t
 该功能默认启用。当满足以下所有条件时, regular join 将自动优化为 delta join。
 
 1. 作业拓扑结构满足优化条件。具体可以查看[支持的功能和限制]({{< ref "docs/dev/table/tuning" 
>}}#supported-features-and-limitations)。
-2. 源表所在的外部存储系统提供了可供 delta join 快速查询的索引信息。目前 [Apache 
Fluss(Incubating)](https://fluss.apache.org/blog/fluss-open-source/) 已支持在 Flink 
中提供表级别的索引信息,其上的表可作为 delta join 的源表。具体可参考 [Fluss 
文档](https://fluss.apache.org/docs/engine-flink/delta-joins/#flink-version-support)。
+2. 源表所在的外部存储系统提供了可供 delta join 快速查询的索引信息。目前 [Apache Fluss 
(Incubating)](https://fluss.apache.org/blog/fluss-open-source/) 已支持在 Flink 
中提供表级别的索引信息,其上的表可作为 delta join 的源表。具体可参考 [Fluss 
文档](https://fluss.apache.org/docs/engine-flink/delta-joins/#flink-version-support)。
 
 <a name="working-principle"></a>
 
@@ -445,16 +445,23 @@ SET 'table.optimizer.delta-join.strategy' = 'NONE';
 
 1. 支持 **INSERT-only** 的表作为源表。
 2. 支持不带 **DELETE 操作**的 **CDC** 表作为源表。
-3. 支持源表和 delta join 间包含 **project** 和 **filter** 算子。
+3. 支持源表和 delta join 间包含 **projection** 和 **filter** 算子。
 4. Delta join 算子内支持**缓存**。
+5. 支持**级联 delta join**(cascaded delta join)—— 查询中符合条件的 join 节点从源表到结果表被依次转换为 
delta join 节点。
+6. 支持 delta join 后接 **lookup join**。
+7. 支持在 delta join 与下游算子之间的 projection 和 filter 中使用**非确定性函数**。
 
 然而,delta join 也存在几个**限制**,包含以下任何条件的作业无法优化为 delta join。
 
 1. 表的**索引键**必须包含在 join 的**等值条件**中
 2. 目前仅支持 **INNER JOIN**。
 3. **下游节点**必须能够处理**冗余变更**。例如以 **UPSERT 模式**运行、不带 `upsertMaterialize` 的 sink 节点。
-4. 当消费 **CDC 流**时,**join key** 必须是**主键**的一部分。
-5. 当消费 **CDC 流**时,所有 **filter** 必须应用于 **upsert key** 上。
-6. 所有 project 和 filter 都不能包含**非确定性函数**。
+4. 当消费 **CDC 流**时,**join key** 必须是 **upsert key**<sup>[1]</sup> 的一部分。
+5. 当消费 **CDC 流**时,所有 **filter** 必须应用于 **upsert key**<sup>[1]</sup> 上。
+6. 源表和 delta join 之间的 projection 或 filter 不能包含**非确定性函数**。
+
+{{< hint info >}}
+[1] Flink 支持定义表级别的**不可变列**(immutable columns)约束来丰富 upsert key,从而使更多场景能够被优化为 
delta join。不可变列约束声明某些列一旦为给定主键设置后便不可修改,不可变列会联合主键,作为一组新的 upsert key 
传播给下游。该信息由外部存储系统提供。[Apache Fluss (Incubating)](https://fluss.apache.org/) 
已在未来计划支持表级别的不可变列约束。
+{{< /hint >}}
 
 {{< top >}}
diff --git a/docs/content/docs/dev/table/tuning.md 
b/docs/content/docs/dev/table/tuning.md
index 98ede66bc9c..e0954e58a8a 100644
--- a/docs/content/docs/dev/table/tuning.md
+++ b/docs/content/docs/dev/table/tuning.md
@@ -395,7 +395,7 @@ To mitigate these challenges, Flink introduces the delta 
join operator. The key
 This feature is enabled by default. A regular join will be automatically 
optimized into a delta join when all the following conditions are met:
 
 1. The sql pattern satisfies the optimization criteria. For details, please 
refer to [Supported Features and Limitations]({{< ref "docs/dev/table/tuning" 
>}}#supported-features-and-limitations)
-2. The external storage system of the source table provides index information 
for fast querying for delta joins. Currently, [Apache 
Fluss(Incubating)](https://fluss.apache.org/blog/fluss-open-source/) has 
provided index information at the table level for Flink, allowing such tables 
to be used as source tables for delta joins. Please refer to the [Fluss 
documentation](https://fluss.apache.org/docs/engine-flink/delta-joins/#flink-version-support)
 for more details.
+2. The external storage system of the source table provides index information 
for fast querying for delta joins. Currently, [Apache Fluss 
(Incubating)](https://fluss.apache.org/blog/fluss-open-source/) has provided 
index information at the table level for Flink, allowing such tables to be used 
as source tables for delta joins. Please refer to the [Fluss 
documentation](https://fluss.apache.org/docs/engine-flink/delta-joins/#flink-version-support)
 for more details.
 
 ### Working Principle
 
@@ -431,12 +431,19 @@ Delta joins are continuously evolving, and supports the 
following features curre
 2. Support for **CDC** tables without **DELETE operations** as source tables.
 3. Support for **projection** and **filter** operations between the source and 
the delta join.
 4. Support for **caching** within the delta join operator.
+5. Support for **cascaded delta joins** — eligible join nodes in a query are 
sequentially converted into delta join nodes from source to sink.
+6. Support for **lookup join** after a delta join.
+7. Support for **non-deterministic functions** in projections and filters 
between the delta join and downstream operators.
 
 However, Delta Joins also have several **limitations**. Jobs containing any of 
the following conditions cannot be optimized into a delta join:
 
 1. The **index key** of the table must be included in the join’s **equivalence 
conditions**.
 2. Only **INNER JOIN** is currently supported.
 3. The **downstream operator** must be able to handle **duplicate changes**, 
such as a sink operating in **UPSERT mode** without `upsertMaterialize`.
-4. When consuming a **CDC stream**, the **join key** must be part of the 
**primary key**.
-5. When consuming a **CDC stream**, all **filters** must be applied on the 
**upsert key**.
-6. **Non-deterministic functions** are not allowed in filters or projections.
\ No newline at end of file
+4. When consuming a **CDC stream**, the **join key** must be part of the 
**upsert key**<sup>[1]</sup>.
+5. When consuming a **CDC stream**, all **filters** must be applied on the 
**upsert key**<sup>[1]</sup>.
+6. **Non-deterministic functions** are not allowed in projections or filters 
between the source and the delta join.
+
+{{< hint info >}}
+[1] Flink supports defining a table-level **immutable columns** constraint to 
enrich the upsert key, enabling delta join optimization in more scenarios. The 
immutable columns constraint declares that certain columns, once set for a 
given primary key, cannot be modified. The immutable columns are combined with 
the primary key to form a new upsert key that is propagated to downstream 
operators. This information is provided by the external storage system. [Apache 
Fluss (Incubating)](https:/ [...]
+{{< /hint >}}
\ No newline at end of file

Reply via email to