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 IC62120 Status: Geschlossen

DB2 MAY ISSUE SQL0901N EXECUTING A QUERY CONTAINING AN SQL UDF USED WITH A
UNION ALL

Produkt:
DB2 FOR LUW / DB2FORLUW / 950 - DB2
Problembeschreibung:
An SQL0901N may be issued when executing a query an SQL UDF that 
takes as input the output of a UNION ALL (UA) view or subselect. 
 
The following conditions must be satisfied for the scenario to 
occur: 
- The UDF must be non-atomic 
- The output data-type of the SQL UDF must be a VARCHAR or 
VARGRAPHIC 
- The maximum length of the output expression of the UDF must be 
strictly less than the length of the output data-type of the UDF 
- The UDF must use the output columns of a UA as its input 
- The UDF must form the input to a subselect 
- The output column of the subselect derived from the UDF must 
be used in a GROUP BY clause 
 
An example scenario follows: 
 
-- Table DDL 
CREATE TABLE T(DRIVER_C CHAR(2), DUMMY_C INT); 
 
-- SQL UDF DDL 
CREATE FUNCTION DUMMY_FN (INPUT_C VARCHAR(2)) 
RETURNS VARCHAR(20) 
LANGUAGE SQL 
DETERMINISTIC 
NO EXTERNAL ACTION 
RETURN CASE WHEN INPUT_C = 'AA' THEN 'VC-19-CNST-LT-VC-20' ELSE 
'BB' 
END 
; 
 
-- Query that will issue the SQL0901N 
SELECT DRIVER_C, 
       SUM(DUMMY_C) 
FROM 
  ( SELECT DUMMY(DRIVER_C), DUMMY_C FROM 
    ( 
      SELECT DRIVER_C, 
             DUMMY_C 
      FROM   T 
      UNION ALL 
      SELECT DRIVER_C, 
             DUMMY_C 
      FROM   T 
    ) AS UA (DRIVER_C, DUMMY_C) 
  ) AS SELSTAR (DRIVER_C, DUMMY_C) 
GROUP BY DRIVER_C 
; 
 
-- SQLCODE issued 
SQL0901N  The SQL statement failed because of a non-severe 
system error. 
Subsequent SQL statements can be processed.  (Reason "Describe: 
Invalid svar 
len".)  SQLSTATE=58004 
 
This problem will be first fixed in DB2 Version 9.1 Fix Pack 8 
and DB2 Version 9.5 Fix Pack 5.
Problem-Zusammenfassung:
**************************************************************** 
* USERS AFFECTED:                                              * 
* EE or EEE                                                    * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* See Error Description.                                       * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Upgrade to DB2 Version 9.5 Fix Pack 5.                       * 
****************************************************************
Local-Fix:
- Reduce the value of the CURRENT QUERY OPTIMIZATION special 
register to 0. 
- Manually rewrite the query in question to workaround the 
issue. For example, the query above may be semantically 
equivalently rewritten to: 
SELECT DRIVER_C, 
       SUM(DUMMY_C) 
FROM 
  ( SELECT DUMMY(DRIVER_C), 
           DUMMY_C 
    FROM   T 
    UNION ALL 
    SELECT DUMMY(DRIVER_C), 
           DUMMY_C 
    FROM   T 
  ) AS UA (DRIVER_C, DUMMY_C) 
GROUP BY DRIVER_C 
;
verfügbare FixPacks:
DB2 Version 9.5 Fix Pack 5 for Linux, UNIX, and Windows
DB2 Version 9.5 Fix Pack 6a for Linux, UNIX, and Windows
DB2 Version 9.5 Fix Pack 7 for Linux, UNIX, and Windows
DB2 Version 9.5 Fix Pack 8 for Linux, UNIX, and Windows
DB2 Version 9.5 Fix Pack 9 for Linux, UNIX, and Windows
DB2 Version 9.5 Fix Pack 10 for Linux, UNIX, and Windows

Lösung
Problem was first fixed in DB2 Version 9.5 Fix Pack 5.
Workaround
keiner bekannt / siehe Local-Fix
Weitere Daten
Datum - Problem gemeldet    :
Datum - Problem geschlossen :
Datum - der letzten Änderung:
21.07.2009
19.02.2010
19.02.2010
Problem behoben ab folgender Versionen (IBM BugInfos)
9.5.FP5
Problem behoben lt. FixList in der Version
9.5.0.5 FixList