DB2 - Problem description
Problem IT04173 | Status: Closed |
SQL STATEMENT WITH MULTIPLE SIMILAR CORRELATED SUBEXPRESSIONS MIGHT RETURN INCORRECT RESULTS | |
product: | |
DB2 FOR LUW / DB2FORLUW / A50 - DB2 | |
Problem description: | |
An incorrect result set might be produced for a SQL statement that contains: - Multiple correlated subexpressions in the SELECT list that reference the same correlated sources - An ORDER BY clause and when the following optimizations are applied to that statement: - The similar correlated subexpressions are transformed into a common subexpression (CSE) during the query rewrite phase of optimization - The optimizer generates an access plan where a SORT operator is placed early in the access plan, before all the correlated CSE consumers are evaluated, to satisfy the ORDER BY clause. The following is an example of a SQL statement that satisfies the above conditions select z.e, (select 1 from t1 where a = 1 and b = (select distinct b from t2 where d=z.d)) as x, (select 1 from t1 where a = 2 and b = (select distinct c from t2 where d=z.d)) as y from (select * from t3 where a = 5) z, t4 where z.b=t4.b order by z.e Note that the presence of these conditions do not always lead to incorrect results. The two correlated subexpressions, x and y, must be transformed into a CSE and a SORT operation that is performed after the first reference to the CSE but before the second reference. You can confirm this pattern by capturing information about the access plan of the SQL statement using an EXPLAIN statement. Typically, the SORT operation will be performed before any CSE reference or after all the CSE references. | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * All users * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to DB2 version 10.5.0.5. * **************************************************************** | |
Local Fix: | |
You can attempt to avoid the SORT operator by creating an index to satisfy the ORDER BY clause. In the above example, a SORT operation can be avoided by creating an index on table T3 with column A as the leading key column in the index. | |
Solution | |
The problem is first fixed in DB2 version 10.5.0.5. | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 04.09.2014 19.12.2014 09.04.2015 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) | |
10.5.0.5 |