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 IC71704 Status: Closed

DATE PREDICATES INCORRECTLY OPTIMIZED IN QUERY REWRITE.

product:
DB2 FOR LUW / DB2FORLUW / 970 - DB2
Problem description:
During query rewrite a date predicate is rewritten incorrectly. 
The Date arithmetic is not properly applied and the resulting 
optimized statement is not syntactically equivalent to the 
original query. 
 
For an example: 
 
Original Statement: 
------------------ 
select f02date 
from datetbl 
where (f02date + 2 month) = '2004-02-29' 
 
 
Optimized Statement: 
------------------- 
SELECT Q1.F02DATE AS "F02DATE" 
FROM MYSCHEMA.DATETBL AS Q1 
WHERE (Q1.F02DATE = '12/29/2003') 
 
As a result the return set will not contain rows that match the 
predicate.
Problem Summary:
**************************************************************** 
* USERS AFFECTED:                                              * 
* All users In V97                                             * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* During query rewrite a date predicate is rewritten           * 
* incorrectly.                                                 * 
* The Date arithmetic is not properly applied and the          * 
* resulting                                                    * 
* optimized statement is not syntactically equivalent to the   * 
*                                                              * 
* original query.                                              * 
*                                                              * 
*                                                              * 
*                                                              * 
* For an example:                                              * 
*                                                              * 
*                                                              * 
*                                                              * 
* Original Statement:                                          * 
*                                                              * 
* ------------------                                           * 
*                                                              * 
* select f02date                                               * 
*                                                              * 
* from datetbl                                                 * 
*                                                              * 
* where (f02date + 2 month) = '2004-02-29'                     * 
*                                                              * 
*                                                              * 
*                                                              * 
*                                                              * 
*                                                              * 
* Optimized Statement:                                         * 
*                                                              * 
* -------------------                                          * 
*                                                              * 
* SELECT Q1.F02DATE AS "F02DATE"                               * 
*                                                              * 
* FROM MYSCHEMA.DATETBL AS Q1                                  * 
*                                                              * 
* WHERE (Q1.F02DATE = '12/29/2003')                            * 
*                                                              * 
*                                                              * 
*                                                              * 
* As a result the return set will not contain rows that match  * 
* the                                                          * 
* predicate.                                                   * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* We recomend applying FP4. It might be possible to rewrite    * 
* the query to avoid the issue                                 * 
****************************************************************
Local Fix:
Rewriting the query by placing all constant terms on one side of 
the predicate might avoid the problem.
available fix packs:
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 6 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 7 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 9a for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 10 for Linux, UNIX, and Windows

Solution
Problem fixed first in FP4
Workaround
not known / see Local fix
BUG-Tracking
forerunner  : APAR is sysrouted TO one or more of the following: IC71959 IC71961 
follow-up : 
Timestamps
Date  - problem reported    :
Date  - problem closed      :
Date  - last modified       :
05.10.2010
19.05.2011
19.05.2011
Problem solved at the following versions (IBM BugInfos)
Problem solved according to the fixlist(s) of the following version(s)
9.7.0.4 FixList