[
https://issues.apache.org/jira/browse/FLINK-13503?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16896846#comment-16896846
]
Jingsong Lee commented on FLINK-13503:
--------------------------------------
Consider the temporal join sql:
{code:java}
SELECT T.id, T.len, T.content, D.name FROM T JOIN userTable for system_time as
of T.proctime AS D ON T.id = D.id
{code}
If we remove "for system_time as of T.proction", it is a regular inner join.
So in my opinion, The way to handle null values should be consistent with
regular inner join.
The point #1 and #2 sounds weird.
If user really want point #2, I think we can support "filterNulls" to temporal
join. Like:
{code:java}
SELECT T.id, T.len, T.content, D.name FROM T JOIN userTable for system_time as
of T.proctime AS D ON T.id = D.id OR (T.id is null and D.id is null)
{code}
> Add contract in `LookupableTableSource` to specify the behavior when
> lookupKeys contains null
> ---------------------------------------------------------------------------------------------
>
> Key: FLINK-13503
> URL: https://issues.apache.org/jira/browse/FLINK-13503
> Project: Flink
> Issue Type: Task
> Components: Connectors / JDBC, Table SQL / API
> Affects Versions: 1.9.0, 1.10
> Reporter: Jing Zhang
> Assignee: Jing Zhang
> Priority: Minor
>
> I think we should add contract in `LookupableTableSource` to specify expected
> behavior when the lookupKeys contains null value.
> For example, one input record of eval method is (null,1) which means to look
> up data in (a,b) columns which key satisfy the requirement. there are at
> least three possibility here.
> * to ignore null value, that is, in the above example, only looks `b = 1`
> * to lookup `is value`, that is, in the above example, only looks `a is
> null and b = 1`
> * to return empty records, that is, in the above example, only looks `a =
> null and b = 1`
> In fact, there are different behavior in current code.
> For example, in Jdbc connector,
> The query template in `JdbcLookUpFunction` like:
> SELECT c, d, e, f from T where a = ? and b = ?
> If pass (null, 1) to `eval` method, it will generate the following query:
> SELECT c, d, e, f from T where a = null and b = 1
> Which always outputs empty records.
> BTW, Is this behavior reasonable?
> and the `InMemoryLookupableTableSource` behaviors like point 2 in the above
> list.
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)