@@ -79,23 +79,37 @@ SinkUpsertMaterializer is an operator in Flink that reconciles out of order chan
7979sending them to an upsert sink. Performance of this operator degrades exponentially in some cases.
8080Flink 2.2 introduces a new implementation that is optimized for such cases.
8181
82-
8382####Delta Join
8483
8584#####[ FLINK-38495] ( https://issues.apache.org/jira/browse/FLINK-38495 ) ,[ FLINK-38511] ( https://issues.apache.org/jira/browse/FLINK-38511 ) ,[ FLINK-38556] ( https://issues.apache.org/jira/browse/FLINK-38556 )
8685
87- In 2.1, Apache Flink has introduced a new delta join operator to mitigate the challenges caused by
88- big state in regular joins. It replaces the large state maintained by regular joins with a
86+ In 2.1, Apache Flink has introduced a new delta join operator to mitigate the challenges caused by
87+ big state in regular joins. It replaces the large state maintained by regular joins with a
8988bidirectional lookup-based join that directly reuses data from the source tables.
9089
91- Flink 2.2 enhances support for converting more SQL patterns into delta joins. Delta joins now
92- support consuming CDC sources without DELETE operations, and allow projection and filter operations
93- after the source. Additionally, delta joins include support for caching, which helps reduce requests
90+ Flink 2.2 enhances support for converting more SQL patterns into delta joins. Delta joins now
91+ support consuming CDC sources without DELETE operations, and allow projection and filter operations
92+ after the source. Additionally, delta joins include support for caching, which helps reduce requests
9493to external storage.
9594
96- See more details about the capabilities and usages of Flink's
95+ See more details about the capabilities and usages of Flink's
9796[ Delta Joins] ( https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/dev/table/tuning/#delta-joins ) .
9897
98+ ####SQL Types
99+
100+ #####[ FLINK-20539] ( https://issues.apache.org/jira/browse/FLINK-20539 ) ,[ FLINK-38181] ( https://issues.apache.org/jira/browse/FLINK-38181 )
101+
102+ Before Flink 2.2, row types defined in SQL e.g.` SELECT CAST(f AS ROW<i NOT NULL>) ` did ignore
103+ the` NOT NULL ` constraint. This was more aligned with the SQL standard but caused many type
104+ inconsistencies and cryptic error message when working on nested data. For example, it prevented
105+ using rows in computed columns or join keys. The new behavior takes the nullability into consideration.
106+ The config option` table.legacy-nested-row-nullability ` allows to restore the old behavior if required,
107+ but it is recommended to update existing queries that ignored constraints before.
108+
109+ Casting to TIME type now considers the correct precision (0-3). Casting incorrect strings to time
110+ (e.g. where the hour component is higher than 24) leads to a runtime exception now. Casting between
111+ BINARY and VARBINARY should now correctly consider the target length.
112+
99113###Runtime
100114
101115####Balanced Tasks Scheduling
@@ -117,6 +131,33 @@ is insufficient for scenarios, requiring time-based retention or combined rules.
117131the new configuration` historyserver.archive.retained-ttl ` combining with` historyserver.archive.retained-jobs `
118132to fulfill more scenario requirements.
119133
134+ ####Metrics
135+
136+ #####[ FLINK-38158] ( https://issues.apache.org/jira/browse/FLINK-38158 ) ,[ FLINK-38353] ( https://issues.apache.org/jira/browse/FLINK-38353 )
137+
138+ Since 2.2.0 users can now assign custom metric variables for each operator/transformation used in the
139+ Job. Those variables are later converted to tags/labels by the metric reporters, allowing users to
140+ tab/label specific operator's metrics. For example, you can use this to name and differentiate sources.
141+
142+ Users can now control the level of details of checkpoint spans via[ traces.checkpoint.span-detail-level] ( https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/deployment/config/#traces-checkpoint-span-detail-level ) .
143+ Highest levels report tree of spans for each task and subtask. Reported custom spans can now contain
144+ children spans. See more details in[ Traces] ( https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/ops/traces/ ) .
145+
146+ ####Introduce Event Reporting
147+
148+ #####[ FLINK-37426] ( https://issues.apache.org/jira/browse/FLINK-37426 )
149+
150+ Since 2.1.0 users are able to report custom events using the EventReporters. Since 2.2.0 Flink reports
151+ some built-in/system events.
152+
153+ ####Use UniqueKeys instead of Upsertkeys for state management
154+
155+ #####[ FLINK-38209] ( https://issues.apache.org/jira/browse/FLINK-38209 )
156+
157+ This is considerable optimization and an breaking change for the StreamingMultiJoinOperator.
158+ As noted in the release notes, the operator was launched in an experimental state for Flink 2.1
159+ since we're working on relevant optimizations that could be breaking changes.
160+
120161###Connectors
121162
122163####Introduce RateLimiter for Source
@@ -145,13 +186,13 @@ assign splits at runtime.
145186
146187#####[ FLINK-38190] ( https://issues.apache.org/jira/browse/FLINK-38190 )
147188
148- In Flink 2.2, we have added support of async function in Python DataStream API. This enables Python
149- users to efficiently query external services in their Flink jobs, e.g. large-sized LLM which is
189+ In Flink 2.2, we have added support of async function in Python DataStream API. This enables Python
190+ users to efficiently query external services in their Flink jobs, e.g. large-sized LLM which is
150191typically deployed in a standalone GPU cluster, etc.
151192
152- Furthermore, we have provided comprehensive support to ensure the stability of external service
153- access. On one hand, we support limiting the number of concurrent requests sent to the external
154- service to avoid overwhelming it. On the other hand, we have also added retry support to tolerate
193+ Furthermore, we have provided comprehensive support to ensure the stability of external service
194+ access. On one hand, we support limiting the number of concurrent requests sent to the external
195+ service to avoid overwhelming it. On the other hand, we have also added retry support to tolerate
155196temporary unavailability which maybe caused by network jitter or other transient issues.
156197
157198###Dependency upgrades
@@ -161,3 +202,23 @@ temporary unavailability which maybe caused by network jitter or other transient
161202#####[ FLINK-38193] ( https://issues.apache.org/jira/browse/FLINK-38193 )
162203
163204Upgrade org.apache.commons: commons-lang3 from 3.12.0 to 3.18.0 to mitigateCVE-2025 -48924.
205+
206+ ####Upgrade protobuf-java from 3.x to 4.32.1 with compatibility patch for parquet-protobuf
207+
208+ #####[ FLINK-38547] ( https://issues.apache.org/jira/browse/FLINK-38547 )
209+
210+ Flink now uses protobuf-java 4.32.1 (corresponding to Protocol Buffers version 32), upgrading from
211+ protobuf-java 3.21.7 (Protocol Buffers version 21). This major upgrade enables:
212+
213+ - ** Protobuf Editions Support** : Full support for the new` edition = "2023" ` and` edition = "2024" `
214+ syntax introduced in Protocol Buffers v27+. Editions provide a unified approach that combines
215+ proto2 and proto3 functionality with fine-grained feature control.
216+ - ** Improved Proto3 Field Presence** : Better handling of optional fields in proto3 without the
217+ limitations of older protobuf versions, eliminating the need to set` protobuf.read-default-values `
218+ to` true ` for field presence checking.
219+ - ** Enhanced Performance** : Leverages performance improvements and bug fixes from 11 Protocol
220+ Buffers releases (versions 22-32).
221+ - ** Modern Protobuf Features** : Access to newer protobuf capabilities including Edition 2024
222+ features and improved runtime behavior.
223+
224+ Users with existing proto2 and proto3` .proto ` files will continue to work without changes.