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

FILTER FACTOR FOR "X = Y OR (X IS NULL AND Y IS NULL)"
EXPRESSION MAY BE UNDERESTIMATED UNDER CERTAIN CONDITIONS.

product:
DB2 FOR LUW / DB2FORLUW / 970 - DB2
Problem description:
In version 9.1, an expression of the form 
"x = y or (x is null and y is null)" 
is treated as an equality join predicate that evaluates NULL 
values as equal.  The DB2 SQL query optimizer will compute a 
filter factor estimate for this predicate when computing the 
optimal query access plan for a statement that includes 
this predicate.  When the appropriate statistics are collected, 
in most cases, the filter factor estimate is accurate; however, 
under certain conditions, the optimizer may underestimate the 
filter factor for this predicate which may lead to a sub-optimal 
query access plan to be chosen. 
 
This problem only applies to some scenarios where a local 
predicate is also applied on one of the columns in the join 
predicate, x or y. For example, in the query below: 
 
SELECT * FROM t1,t2 
WHERE (t1.a=t2.a OR t1.a is null AND t2.a is null) AND t2.a=?; 
 
the expressions in the WHERE clause will be written into the 
following: 
 
(Q1.A = :?) AND ((Q2.A = :?) OR (Q2.A IS NULL AND :? IS NULL )) 
 
If a constant value is used in place of the parameter marker, 
this problem does not occur.
Problem Summary:
In version 9.1, an expression of the form 
   "x = y or (x is null and y is null)" 
is treated as an equality join predicate that evaluates NULL 
values as equal.  The DB2 SQL query optimizer will compute a 
filter factor estimate for this predicate when computing the 
optimal query access plan for a statement that includes 
this predicate.  When the appropriate statistics are collected, 
in most cases, the filter factor estimate is accurate; however, 
under certain conditions, the optimizer may underestimate the 
filter factor for this predicate which may lead to a sub-optimal 
query access plan to be chosen. 
 
This problem only applies to some scenarios where a local 
predicate is also applied on one of the columns in the join 
predicate, x or y. For example, in the query below: 
 
SELECT * FROM t1,t2 
WHERE (t1.a=t2.a OR t1.a is null AND t2.a is null) AND t2.a=?; 
 
the expressions in the WHERE clause will be written into the 
following: 
 
(Q1.A = :?) AND ((Q2.A = :?) OR (Q2.A IS NULL AND :? IS NULL )) 
 
If a constant value is used in place of the parameter marker, 
this problem does not occur.
Local Fix:
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
Defect   -> wsdbu00552854 
Fixed in -> Version 9.7 + FP 1 (s091114) 
Module   -> engn_sqno
Workaround
not known / see Local fix
Timestamps
Date  - problem reported    :
Date  - problem closed      :
Date  - last modified       :
30.09.2009
31.12.2009
31.12.2009
Problem solved at the following versions (IBM BugInfos)
9.7.
Problem solved according to the fixlist(s) of the following version(s)
9.7.0.1 FixList