DB2 - Problem description
Problem IC78164 | Status: Closed |
FED: WRONG RESULT RETURNED BY FEDERATION SERVER | |
product: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
Problem description: | |
If there is an exists subquery in the head expression, this subquery will be pushed down and the original sql statement will be converted to a join sql statement. For example, in the following sql statement, nick1 and nick2 are nicknames and there is an exists subquery in the head expression: select ((case when exists(select * from nick1 where c2='aaa') then 'TRUE' else 'FALSE' end)) from nick2; DB2 compiler will rewrite it to: Optimized Statement: ------------------- SELECT CASE WHEN (1 = Q3.$C0) THEN 'TRUE' ELSE 'FALSE' END FROM (SELECT DISTINCT Q2.$C0 FROM (SELECT 1 FROM IIDEV22.NICK1 AS Q1 WHERE (Q1.C2 = 'aaa ')) AS Q2) AS Q3, IIDEV22.NICK2 AS Q4 = In this scenario, federation pda(pushdown analysis) component will push down all the subquery to remote data source which cause the wrong result. | |
Problem Summary: | |
The fix is fixed in db2 v97 FP5 | |
Local Fix: | |
Change the exists subquery to "count(*) > 0" clause | |
available fix packs: | |
DB2 Version 9.7 Fix Pack 5 for Linux, UNIX, and Windows | |
Solution | |
Workaround | |
not known / see Local fix | |
BUG-Tracking | |
forerunner : APAR is sysrouted TO one or more of the following: IC81476 follow-up : | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 17.08.2011 12.12.2011 12.12.2011 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) | |
9.7.0.5 |