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 | |
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 |