DB2 - Problem description
| Problem IC62221 | Status: Closed |
CORRELATED HIERARCHICAL QUERY RETURNS INCORRECT RESULT IN DPF | |
| product: | |
DB2 FOR LUW / DB2FORLUW / 950 - DB2 | |
| Problem description: | |
A correlated hierarchical query may return incorrect result in
DPF in DB2.
.
Below is an example of a correlated hierarchical query:
.
SELECT CB.NAME, CB.CHAIN
FROM MANAGERS M,
TABLE(SELECT NAME, CONNECT_BY_ROOT NAME AS ROOT,
SUBSTR(SYS_CONNECT_BY_PATH(NAME, ':'), 1, 25) AS CHAIN
FROM MY_EMP START WITH NAME = M.NAME
CONNECT BY PRIOR EMPID = MGRID
ORDER SIBLINGS BY NAME) CB
WHERE M.DEPT IN ('HR', 'FINANCE'); | |
| Problem Summary: | |
****************************************************************
* USERS AFFECTED: *
* All DB2 Version 9.5 DPF systems on all Linux, Unix and *
* Windows platforms. *
****************************************************************
* PROBLEM DESCRIPTION: *
* A correlated hierarchical query can return incorrect result. *
* *
* . *
* Below is an example of a correlated hierarchical query: *
* *
* . *
* SELECT CB.NAME, CB.CHAIN *
* FROM MANAGERS M, *
* TABLE(SELECT NAME, CONNECT_BY_ROOT NAME AS ROOT, *
* SUBSTR(SYS_CONNECT_BY_PATH(NAME, ':'), 1, 25) AS CHAIN *
* FROM MY_EMP START WITH NAME = M.NAME *
* CONNECT BY PRIOR EMPID = MGRID *
* ORDER SIBLINGS BY NAME) CB *
* WHERE M.DEPT IN ('HR', 'FINANCE'); *
****************************************************************
* RECOMMENDATION: *
* Please refer to Local Fix section. *
**************************************************************** | |
| Local Fix: | |
If possible rewrite the query to an equivalent one without a
correlated hierarchical query:
SELECT CB.NAME, CB.CHAIN
FROM MANAGERS M,
TABLE(SELECT NAME, CONNECT_BY_ROOT NAME AS ROOT,
SUBSTR(SYS_CONNECT_BY_PATH(NAME, ':'), 1, 25) AS CHAIN
FROM MY_EMP CONNECT BY PRIOR EMPID = MGRID
ORDER SIBLINGS BY NAME) CB
WHERE M.DEPT IN ('HR', 'Finance') AND M.NAME=CB.ROOT;
.
However, consider the performance implications of the rewritten
query. For example, the above hierarchical query no longer has
a START WITH clause. A START WITH clause on some other
attribute is recommended to limit the number of rows produced
bythe hierarchical query. | |
| available fix packs: | |
DB2 Version 9.5 Fix Pack 5 for Linux, UNIX, and Windows | |
| Solution | |
The complex fix for this problem first appears in DB2 Version 9.5 Fixpack 5 and all the subsequent fixpacks. | |
| Workaround | |
not known / see Local fix | |
| BUG-Tracking | |
forerunner : APAR is sysrouted TO one or more of the following: IC62258 follow-up : | |
| Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 27.07.2009 16.02.2010 16.02.2010 |
| Problem solved at the following versions (IBM BugInfos) | |
9.5.FP5 | |
| Problem solved according to the fixlist(s) of the following version(s) | |
| 9.5.0.5 |
|