[ https://issues.apache.org/jira/browse/CALCITE-3513?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Julian Hyde updated CALCITE-3513: --------------------------------- Summary: Unify TableFunction implementor's NullPolicy and its behavior (was: Unify TableFunction implementor's NullPolicy and its beheavior) > Unify TableFunction implementor's NullPolicy and its behavior > ------------------------------------------------------------- > > Key: CALCITE-3513 > URL: https://issues.apache.org/jira/browse/CALCITE-3513 > Project: Calcite > Issue Type: Bug > Components: core > Affects Versions: 1.21.0 > Reporter: Feng Zhu > Assignee: Feng Zhu > Priority: Major > Labels: pull-request-available > Time Spent: 10m > Remaining Estimate: 0h > > *Example:* > TableFunctionTest#_testMultipleScannableTableFunctionWithNamedParameters_ > {code:java} > SQL3: > select * from table("s"."Maze"(HEIGHT => 3, WIDTH => 5){code} > *RelNode:* > {code:java} > EnumerableTableFunctionScan(invocation=[Maze(5, 3, DEFAULT())], > rowType=[RecordType(VARCHAR(12) S)], elementType=[class > [Ljava.lang.Object;]){code} > *Code:* > {code:java} > public org.apache.calcite.linq4j.Enumerable bind(final > org.apache.calcite.DataContext root) { > return > org.apache.calcite.runtime.Enumerables.slice0(org.apache.calcite.util.Smalls.MazeTable.generate2(5, > 3, null).scan(root)); > }{code} > *Inconsistency:* > Current now, _*TableFunctionImpl*_ creats its implementor with > _*NullPolicy.ANY*_. If we follow the NullPolicy, it will generate null, > rather than MazeTable.generate2(5, 3, null) > It is not consistent with its definition. > {code:java} > /** If any of the arguments are null, return null. */ > ANY{code} > *Root Cause:* > The issue is covered due to current codegen's mechanism, which combines a > mutable states (_*NullAs*_) and *_NullPolicy_* together to determine the > semantics for null checking. > The implementation for example query actually do nothing about arguments' > null checking. > We can ignore this minor case at the moment, but the inconsistency prevents > further optimizations. However, under current codegen implementation, I > failed to figure out a test case to trigger the problem. -- This message was sent by Atlassian Jira (v8.3.4#803005)