home clear 64x64
en blue 200x116 de orange 200x116 info letter User
suche 36x36
Latest versionsfixlist
11.1.0.7 FixList
10.5.0.9 FixList
10.1.0.6 FixList
9.8.0.5 FixList
9.7.0.11 FixList
9.5.0.10 FixList
9.1.0.12 FixList
Have problems? - contact us.
Register for free anmeldung-x26
Contact form kontakt-x26

DB2 - Problem description

Problem IC62258 Status: Closed

CORRELATED HIERARCHICAL QUERY RETURNS INCORRECT RESULT IN DPF

product:
DB2 FOR LUW / DB2FORLUW / 970 - 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:                                              * 
* DPF customers                                                * 
**************************************************************** 
* 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');                           * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Upgrade to DB2 v9.7 Fixpack 1 or later.                      * 
****************************************************************
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.7 Fix Pack 1 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 2 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 3 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 3a for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 4 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 5 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 7 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 9a for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 6 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 8 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 9 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 10 for Linux, UNIX, and Windows

Solution
The problem is first fixed in DB2 v9.7 Fixpack 1.
Workaround
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.
Timestamps
Date  - problem reported    :
Date  - problem closed      :
Date  - last modified       :
28.07.2009
29.04.2010
29.04.2010
Problem solved at the following versions (IBM BugInfos)
9.7.FP1
Problem solved according to the fixlist(s) of the following version(s)
9.7.0.1 FixList