DB2 - Problembeschreibung
Problem IC62258 | Status: Geschlossen |
CORRELATED HIERARCHICAL QUERY RETURNS INCORRECT RESULT IN DPF | |
Produkt: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
Problembeschreibung: | |
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-Zusammenfassung: | |
**************************************************************** * 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. | |
verfügbare FixPacks: | |
DB2 Version 9.7 Fix Pack 1 for Linux, UNIX, and Windows | |
Lösung | |
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. | |
Weitere Daten | |
Datum - Problem gemeldet : Datum - Problem geschlossen : Datum - der letzten Änderung: | 28.07.2009 29.04.2010 29.04.2010 |
Problem behoben ab folgender Versionen (IBM BugInfos) | |
9.7.FP1 | |
Problem behoben lt. FixList in der Version | |
9.7.0.1 |