[ 
https://issues.apache.org/jira/browse/DERBY-7164?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17862557#comment-17862557
 ] 

Richard N. Hillegas commented on DERBY-7164:
--------------------------------------------

Agreed. That is my understanding of the EXISTS predicate. Other variations of 
this mistake are:

{noformat}
CONNECT 'jdbc:derby:memory:db;create=true';

-- correct
SELECT COUNT(*)
  FROM SYSIBM.SYSDUMMY1
  WHERE FALSE
;

-- incorrect. should be true since the query returns one row
VALUES
(
  EXISTS
  (
    SELECT COUNT(*)
    FROM SYSIBM.SYSDUMMY1
    WHERE FALSE
  )
)
;

-- incorrect for the same reason
SELECT EXISTS
(
  SELECT COUNT(*)
  FROM SYSIBM.SYSDUMMY1
  WHERE FALSE
)
FROM SYSIBM.SYSDUMMY1;
{noformat}

> Wrong result from EXISTS aggregate subquery that counts zero rows
> -----------------------------------------------------------------
>
>                 Key: DERBY-7164
>                 URL: https://issues.apache.org/jira/browse/DERBY-7164
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.17.1.0
>            Reporter: Lukas Eder
>            Priority: Major
>
> This query should return true as the aggregate subquery always produces 
> exactly 1 row, so the EXISTS predicate is trivially always true:
> {code:sql}
> select exists (
>   select count(*)
>   from SYSIBM.SYSDUMMY1
>   where false
> )
> from SYSIBM.SYSDUMMY1;
> {code}
> But it returns false, probably due to a wrong optimisation



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

Reply via email to