Wang Chengyu created FLINK-40251:
------------------------------------

             Summary: Support Process Table Function (PTF) in Python Table API
                 Key: FLINK-40251
                 URL: https://issues.apache.org/jira/browse/FLINK-40251
             Project: Flink
          Issue Type: New Feature
            Reporter: Wang Chengyu


The Java ProcessTableFunction (PTF) was introduced by FLIP-440 and is tracked
under the umbrella FLINK-36703. This is the umbrella issue for bringing the
equivalent capability to the Python Table API, so that Python users get parity
with the existing Java / SQL PTF interface. It does not introduce any new
user-facing concept beyond FLIP-440; the semantics stay aligned with the Java 
PTF.

The following capabilities are planned to be supported:

* Define a PTF by subclassing ProcessTableFunction and creating it via udptf(),
  and invoke it via Table.process(), TableEnvironment.from_call() and SQL after
  name registration.
* Table arguments (single and multiple) together with scalar arguments, and the
  on_time / uid system arguments.
* Row and Set semantics, PARTITION BY, ORDER BY, pass-through columns and the
  runtime table semantics context.
* Keyed ROW Value State, MapView and ListView, with independent TTL, explicit
  cleanup, checkpoint and restore.
* Event time, table / PTF watermark, named and anonymous event-time timers and
  the on_timer() callback.
* Append, upsert and retract changelog input and output, including input RowKind
  and the update-before / full-delete requirements.
* Stateful query evolution via a stable uid.
* Calling already-registered Java PTFs, including multi-table Java PTFs.

Batch execution, processing-time timers and broadcast state are out of scope,
consistent with the current Java PTF limitations.

The individual capabilities will be split into sub-tasks, each addressed by a
separate pull request.

References:
* FLINK-36703 — Java PTF umbrella
* FLIP-440 — User-defined SQL operators / ProcessTableFunction (PTF)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to