DB2 - Problembeschreibung
Problem IC68772 | Status: Geschlossen |
CONCAT OR "||" NOT PUSHED DOWN TO ORACLE DATA SOURCE | |
Produkt: | |
DB2 FOR LUW / DB2FORLUW / 980 - DB2 | |
Problembeschreibung: | |
"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-Zusammenfassung: | |
**************************************************************** * 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: | |
verfügbare FixPacks: | |
DB2 Version 9.8 Fix Pack 4 for AIX and Linux | |
Lösung | |
fixed in v98fp4 | |
Workaround | |
N/A | |
Weitere Daten | |
Datum - Problem gemeldet : Datum - Problem geschlossen : Datum - der letzten Änderung: | 26.05.2010 06.04.2011 06.04.2011 |
Problem behoben ab folgender Versionen (IBM BugInfos) | |
9.8.FP4 | |
Problem behoben lt. FixList in der Version | |
9.8.0.4 |