You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Flink Jira Bot (Jira)" <ji...@apache.org> on 2021/11/13 10:40:00 UTC

[jira] [Updated] (FLINK-14030) IS_NULL is optimized to incorrect results

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

Flink Jira Bot updated FLINK-14030:
-----------------------------------
    Labels: auto-deprioritized-major stale-minor  (was: auto-deprioritized-major)

I am the [Flink Jira Bot|https://github.com/apache/flink-jira-bot/] and I help the community manage its development. I see this issues has been marked as Minor but is unassigned and neither itself nor its Sub-Tasks have been updated for 180 days. I have gone ahead and marked it "stale-minor". If this ticket is still Minor, please either assign yourself or give an update. Afterwards, please remove the label or in 7 days the issue will be deprioritized.


> IS_NULL is optimized to incorrect results
> -----------------------------------------
>
>                 Key: FLINK-14030
>                 URL: https://issues.apache.org/jira/browse/FLINK-14030
>             Project: Flink
>          Issue Type: Bug
>          Components: Table SQL / Planner
>    Affects Versions: 1.9.0
>            Reporter: Leonard Xu
>            Priority: Minor
>              Labels: auto-deprioritized-major, stale-minor
>
> *testAllApis()* unit tests will run fail because planner make a conversion
>  from *[ifThenElse(isNull(plus(f0, f1)), 'null', 'not null')]*
>  to *[CASE(OR(IS NULL($0), IS NULL($1)), _UTF-16LE'null', _UTF-16LE'not null')]*
>  which is not a equivalence conversion. The result of expression 'f0 + 'f1 should be null
>  when the result overflows even if its two operands both are not null.
> It's easy to reproduce as following:
>  testAllApis(
>  'f0 + 'f1,
>  "f1 + f1",
>  "f1 + f1",
>  "null")// the result should be null because overflow
> override def testData: Row =
> { val testData = new Row(2) testData.setField(0, BigDecimal("1e10").bigDecimal) testData.setField(1, BigDecimal("0").bigDecimal) testData }
> override def typeInfo: RowTypeInfo =
> { new RowTypeInfo( /* 0 */ fromLogicalTypeToTypeInfo(DECIMAL(38, 10)), /* 1 */ fromLogicalTypeToTypeInfo(DECIMAL(38, 28)) ) }
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)