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

CONCAT OR "||" NOT PUSHED DOWN TO ORACLE DATA SOURCE

product:
DB2 FOR LUW / DB2FORLUW / 980 - DB2
Problem description:
"CONCAT" or "||" (these two are in fact the same thing) are 
blocked from being pushed down since V97 GA. This can cause 
various operations like predicates or other parts of query not 
being pushed down, hence result in performance problems. 
 
They are blocked since "CONCAT" in Oracle has different 
semantics in handling NULL values, that is, e.g. a CONCAT(C1, 
NULL) will return NULL in Federation Server / DB2, but will 
return C1 in Oracle. In V95, we tolerate such difference and 
pushed down CONCAT predicate to Oracle. But in V97, we decided 
to block it. 
 
In fact, it is tolerable to pushdown the function in most cases. 
 
The problem may happen when all of the following conditions are 
met: 
1. The query contains nicknames from Oracle datasource, or DB2 
datasource that is in Varchar2 compatibility mode 
2. The query has one or both of following expressions 
   1) predicate with CONCAT, e.g. CONCAT(C1, C2) 
   2) predicate with "||", e.g. C1 || "A"
Problem Summary:
**************************************************************** 
* USERS AFFECTED:                                              * 
* all platforms                                                * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* "CONCAT" or "||" (these two are in fact the same thing) are  * 
*                                                              * 
* blocked from being pushed down since V97 GA. This can cause  * 
*                                                              * 
* various operations like predicates or other parts of query   * 
* not                                                          * 
* being pushed down, hence result in performance problems.     * 
*                                                              * 
*                                                              * 
*                                                              * 
* They are blocked since "CONCAT" in Oracle has different      * 
*                                                              * 
* semantics in handling NULL values, that is, e.g. a           * 
* CONCAT(C1,                                                   * 
* NULL) will return NULL in Federation Server / DB2, but will  * 
*                                                              * 
* return C1 in Oracle. In V95, we tolerate such difference and * 
*                                                              * 
* pushed down CONCAT predicate to Oracle. But in V97, we       * 
* decided                                                      * 
* to block it.                                                 * 
*                                                              * 
*                                                              * 
*                                                              * 
* In fact, it is tolerable to pushdown the function in most    * 
* cases.                                                       * 
*                                                              * 
*                                                              * 
* The problem may happen when all of the following conditions  * 
* are                                                          * 
* met:                                                         * 
*                                                              * 
* 1. The query contains nicknames from Oracle datasource, or   * 
* DB2                                                          * 
* datasource that is in Varchar2 compatibility mode            * 
*                                                              * 
* 2. The query has one or both of following expressions        * 
*                                                              * 
* 1) predicate with CONCAT, e.g. CONCAT(C1, C2)                * 
*                                                              * 
* 2) predicate with "||", e.g. C1 || "A"                       * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* upgrade to v98fp4                                            * 
****************************************************************
Local Fix:
available fix packs:
DB2 Version 9.8 Fix Pack 4 for AIX and Linux
DB2 Version 9.8 Fix Pack 5 for AIX and Linux

Solution
fixed in v98fp4
Workaround
N/A
Timestamps
Date  - problem reported    :
Date  - problem closed      :
Date  - last modified       :
26.05.2010
06.04.2011
06.04.2011
Problem solved at the following versions (IBM BugInfos)
9.8.FP4
Problem solved according to the fixlist(s) of the following version(s)
9.8.0.4 FixList