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

Sergey Nuyanzin resolved FLINK-33485.
-------------------------------------
    Fix Version/s: 1.19.0
       Resolution: Fixed

> Optimize the EXISTS sub-query by Metadata RowCount
> --------------------------------------------------
>
>                 Key: FLINK-33485
>                 URL: https://issues.apache.org/jira/browse/FLINK-33485
>             Project: Flink
>          Issue Type: Improvement
>          Components: Table SQL / API
>    Affects Versions: 1.18.0
>            Reporter: Sergey Nuyanzin
>            Assignee: Sergey Nuyanzin
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.19.0
>
>
> If the sub-query is guaranteed to produce at least one row, just return TRUE. 
> If the sub-query is guaranteed to produce no row, just return FALSE.
> inspired by CALCITE-5117 however since there is {{FlinkSubQueryRemoveRule}} 
> then it shold be adopted accordingly
> examples
> {code:sql}
> SELECT * FROM T2 WHERE EXISTS (SELECT SUM(a1), COUNT(*) FROM T1 WHERE 1=2)
> {code}
> aggregation functions always return 1 row even if there is an empty table 
> then we could just replace this query with 
> {code:sql}
> SELECT * FROM T2 
> {code}
> another example
> {code:sql}
> SELECT * FROM MyTable WHERE NOT EXISTS (SELECT a FROM MyTable LIMIT 0)
> {code}
> {{LIMIT 0}} means no rows so it cold be optimized to
> {code:sql}
> SELECT * FROM MyTable
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to