[
https://issues.apache.org/jira/browse/DERBY-6408?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13915425#comment-13915425
]
Mamta A. Satoor commented on DERBY-6408:
----------------------------------------
Knut,I looked through the patch and the changes look good to me. Following is
my understanding of the patch. There were 2 issues
1)we were calling IsNullNode only on NOT EXISTS but never called it for EXISTS.
Because of that NULL returned from EXISTS never got converted to a IsNullNode.
The patch now makes sure that IsNullNode gets called for both EXISTS and NOT
EXISTS.
2)even when we were calling IsNullNode on NOT EXISTS query, the returned node
was getting ignored. The patch handles the ignoring of the node by calling the
pre processing on result set columns rather than subquery so the returned
IsNullNode node will be part of the generated tree for the query.
> EXISTS returns NULL instead of FALSE
> ------------------------------------
>
> Key: DERBY-6408
> URL: https://issues.apache.org/jira/browse/DERBY-6408
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.7.1.1, 10.8.3.3, 10.9.2.2, 10.10.1.1
> Reporter: Knut Anders Hatlen
> Assignee: Knut Anders Hatlen
> Attachments: d6408-1a.diff
>
>
> The reference manual topic on Boolean expressions -
> http://db.apache.org/derby/docs/10.10/ref/rrefsqlj23075.html - says that
> EXISTS should return FALSE if the subquery returns no rows. In reality, it
> returns NULL:
> ij> create table t(x int);
> 0 rows inserted/updated/deleted
> ij> values exists(select * from t);
> 1
> -----
> NULL
> 1 row selected
> SQL:2011, part 2, 8.10 <exists predicate> also says that FALSE is the correct
> result if the cardinality is 0.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)