home clear 64x64
en blue 200x116 de orange 200x116 info letter User
suche 36x36
Neueste VersionenFixList
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
Haben Sie Probleme? - Kontaktieren Sie uns.
Kostenlos registrieren anmeldung-x26
Kontaktformular kontakt-x26

DB2 - Problembeschreibung

Problem IC70922 Status: Geschlossen

A RANGE JOIN PREDICATE JOINED TO A UNION ALL VIEW WITH A GROUP B Y CLAUSE
MAY PRODUCE A SUB-OPTIMAL PLAN.

Produkt:
DB2 FOR LUW / DB2FORLUW / 970 - DB2
Problembeschreibung:
Db2 may not push down a range join to a Union All view into the 
tables of the Union All view.This would prevent Db2 to produce 
a sub-optimal plan. 
. 
The following conditions must be met in order to hit this proble 
m: 
. 
1)  There is a Group By clause on the table and the Union 
All view of the range join predicate. 
2)  Any column from the table in the range join predicate 
derives from an expression that is not a column. 
. 
For example: 
. 
create table br1(tranid integer, trandate date, amount decimal); 
create table br2(tranid integer, trandate date, amount decimal); 
create view ua as (select * from br1 union all select * from 
br2); 
. 
create table datedim(durid integer, startdate date, enddate 
date); 
. 
create view vdatedim(durid, startdate, enddate) 
as 
(select  durid, 
           case when month(startdate) = 3 then startdate + 1 day 
else startdate end startdate, 
            enddate 
 from     datedim 
); 
. 
select ua.trandate, count(tranid), sum(amount) 
from    ua, vdatedim 
where  ua.trandate between vdatedim.startdate and 
vdatedim.enddate 
group by ua.trandate 
; 
.
Problem-Zusammenfassung:
Db2 may not push down a range join to a Union All view into the 
 tables of the Union All view.This would prevent Db2 to produce 
 a sub-optimal plan. 
 . 
 The following conditions must be met in order to hit this 
proble 
 m: 
 . 
 1)  There is a Group By clause on the table and the Union 
 All view of the range join predicate. 
 2)  Any column from the table in the range join predicate 
 derives from an expression that is not a column. 
 . 
 For example: 
 . 
 create table br1(tranid integer, trandate date, amount 
decimal); 
 create table br2(tranid integer, trandate date, amount 
decimal); 
 create view ua as (select * from br1 union all select * from 
 br2); 
 . 
 create table datedim(durid integer, startdate date, enddate 
 date); 
 . 
 create view vdatedim(durid, startdate, enddate) 
 as 
 (select  durid, 
            case when month(startdate) = 3 then startdate + 1 
day 
 else startdate end startdate, 
             enddate 
  from     datedim 
 ); 
 . 
 select ua.trandate, count(tranid), sum(amount) 
 from    ua, vdatedim 
 where  ua.trandate between vdatedim.startdate and 
 vdatedim.enddate 
 group by ua.trandate 
; 
.
Local-Fix:
verfügbare FixPacks:
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

Lösung
fixed >= v97 fpk4
Workaround
keiner bekannt / siehe Local-Fix
Weitere Daten
Datum - Problem gemeldet    :
Datum - Problem geschlossen :
Datum - der letzten Änderung:
02.09.2010
29.04.2011
29.04.2011
Problem behoben ab folgender Versionen (IBM BugInfos)
9.7.FPk4
Problem behoben lt. FixList in der Version
9.7.0.4 FixList