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

IF ARRAY USED IN AN OPEN CURSOR IS MODIFIED THEN WRONG RESULT ORA TRAP ARE
POSSIBLE

Produkt:
DB2 FOR LUW / DB2FORLUW / B10 - DB2
Problembeschreibung:
When ARRAY is used in an open cursor , but is modififed as we 
are fetching from this cursor, then wrong results or trap are 
possible. 
 
Example #1: 
V_TARGET_TABLE arrayType;-- 
V_TARGET_TABLE[1] := 'value1';-- 
CURSOR cur1 IS SELECT c1 FROM names WHERE c1 LIKE 
(V_TARGET_TABLE(INDEX));-- 
[..] 
OPEN cur1;-- 
V_TARGET_TABLE[1] := 'value2';-- 
FETCH cur1 into temp_vc;-- 
CLOSE cur1;-- 
 
Please, note that above we opened cursor when V_TARGET_TABLE[1] 
had one value, then we changed it to a new value, before we 
started the fetch from the cursor. 
Currently we do not support this and the fix will prevent above 
from running and will return an error (SQL0901N). 
Please, modify your application to make sure that array used in 
the cursor we are fetching from is not changed until we are done 
with the cursor and closed it. 
 
Example #2: 
Another example of unsupported usage that can produce a trap , 
but with the fix , it will return an SQL0901N: 
 
        FOR COUNTER IN 1 .. V_E LOOP 
          FOR CURSORX IN (SELECT COL1 
                      FROM MY_TABLE 
                      WHERE COL2 LIKE  '%[' || V_ARRAY(COUNTER) 
||']%') 
                      LOOP 
            V_ARRAY(V_ARRAY.LAST) := CURSORX.COL1;-- 
          END LOOP;-- 
        END LOOP;-- 
... 
 
Trap Stack will be: 
sqloCrashOnCriticalMemoryValidationFailure 
sqlofmblkEx 
sqlriArrayDescriptor7destroy 
sqlricls_complex 
sqlrr_process_close_request 
sqlrr_close 
csmDriveClose 
csmClose 
pvmPackage11closeCursor 
 
Please, change your application to use local variable in the 
cursor: 
 
        FOR COUNTER IN 1 .. V_E LOOP 
          temp_value = V_ARRAY(COUNTER);-- 
          FOR CURSORX IN (SELECT COL1 
                      FROM MY_TABLE 
                      WHERE COL2 LIKE  '%[' || temp_value 
||']%') 
                      LOOP 
            V_ARRAY(V_ARRAY.LAST) := CURSORX.COL1;-- 
          END LOOP;-- 
        END LOOP;-- 
 
This change will prevent both a trap and an SQL0901N.
Problem-Zusammenfassung:
**************************************************************** 
* USERS AFFECTED:                                              * 
* All                                                          * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* See Error Description                                        * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Upgrade to v11.1 m1fp1                                       * 
****************************************************************
Local-Fix:
Change the logic to avoid reusing updated array in the cursor as 
we are fetching. Please, see Description for examples.
verfügbare FixPacks:
DB2 Version 11.1 Mod1 Fix Pack1 iFix001 for Linux, UNIX, and Windows
DB2 Version 11.1 Mod 2 Fix Pack 2 for Linux, UNIX, and Windows
Db2 Version 11.1 Mod2 Fix Pack2 iFix001 for Linux, UNIX, and Windows
Db2 Version 11.1 Mod2 Fix Pack2 iFix002 for Linux, UNIX, and Windows
Db2 Version 11.1 Mod 3 Fix Pack 3 for Linux, UNIX, and Windows
Db2 Version 11.1 Mod3 Fix Pack3 iFix001 for Linux, UNIX, and Windows
Db2 Version 11.1 Mod3 Fix Pack3 iFix002 for Linux, UNIX, and Windows

Lösung
Workaround
keiner bekannt / siehe Local-Fix
Weitere Daten
Datum - Problem gemeldet    :
Datum - Problem geschlossen :
Datum - der letzten Änderung:
22.09.2016
11.10.2017
11.10.2017
Problem behoben ab folgender Versionen (IBM BugInfos)
Problem behoben lt. FixList in der Version
11.1.1.1 FixList