[ 
https://issues.apache.org/jira/browse/FLINK-13503?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jing Zhang updated FLINK-13503:
-------------------------------
    Description: 
I think we should add contract in `LookupableTableSource` to specify expected 
behavior when the lookupKeys contains null value. Because there is ambiguity 
here, 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.
  * 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.


  was:
I think we should add contract in `LookupableTableSource` to specify expected 
behavior when the lookupKeys contains null value. Because there is ambiguity 
here, for example, one input record of eval method is (null,1):
  * 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.



> 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
>    Affects Versions: 1.9.0, 1.10
>            Reporter: Jing Zhang
>            Priority: Minor
>
> I think we should add contract in `LookupableTableSource` to specify expected 
> behavior when the lookupKeys contains null value. Because there is ambiguity 
> here, 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.
>   * 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)

Reply via email to