lincoln lee created FLINK-28566: ----------------------------------- Summary: Adds materialization support to eliminate the non determinism generated by lookup join node Key: FLINK-28566 URL: https://issues.apache.org/jira/browse/FLINK-28566 Project: Flink Issue Type: Sub-task Components: Table SQL / Planner Reporter: lincoln lee Fix For: 1.16.0
In order to minimize the potential exceptions or data errors when many users use the update stream to lookup join an external table (essentially due to the non-deterministic result based on processing-time to lookup external tables). When update exists in the input stream and the lookup key does not contain the primary key of the external table, FLINK automatically adds materialization of the update by default, so that it will only lookup the external table when the insert or update_after message arrives, and when the delete or update_before message arrives, it will directly querying the latest version of the locally materialized data and sent it to downstream operator. To do so,we introduce a new option 'table.exec.lookup-join.upsert-materialize' and resue the `UpsertMaterialize`. By default, the materialize operator will be added when an update stream lookup an external table without containing its primary keys(includes no primary key defined). You can also choose no materialization(NONE) or force materialization(FORCE) which will always enable materialization except input is insert only. -- This message was sent by Atlassian Jira (v8.20.10#820010)