raminqaf commented on code in PR #28164:
URL: https://github.com/apache/flink/pull/28164#discussion_r3267582769


##########
docs/content/docs/sql/reference/queries/changelog.md:
##########
@@ -149,6 +149,44 @@ Prefer row semantics, when possible. `PARTITION BY` is 
only necessary when downs
 
 If you are producing an upsert table — that is, you are emitting 
`UPDATE_AFTER` but no `UPDATE_BEFORE` from your CDC input stream — the 
partition key you select here will be considered both the primary key and the 
upsert key by the engine. Make sure the `PARTITION BY` key matches your primary 
key exactly.
 
+#### Upsert table
+
+To generate an upsert table, two requirements must be met:
+
+* **Key partitioning**: use `PARTITION BY <key>`, where the partition key 
corresponds to the unique/primary key of the dataset.
+* **Op mapping configuration**: the `op_mapping` must include `UPDATE_AFTER` 
and must NOT include `UPDATE_BEFORE`.
+
+The engine assumes that the keys provided in the `PARTITION BY` clause 
function as the unique upsert keys. The resulting output changelog becomes an 
upsert table keyed on these partition columns. Each incoming row is evaluated 
and produces `INSERT`, `UPDATE_AFTER`, or `DELETE` events, using the partition 
key as the explicit upsert key. Therefore, if the incoming changelog contains 
unique keys (such as a primary key), they **must** be used in the `PARTITION 
BY` clause.
+
+<span class="label label-danger">Note</span>
+- An `op_mapping` that produces `UPDATE_AFTER` without `UPDATE_BEFORE` 
describes an upsert changelog and requires a key. `PARTITION BY` must be 
present on the table argument; otherwise the call would produce key-less 
updates and is rejected at validation time with a `ValidationException`.

Review Comment:
   Addressed



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to