home clear 64x64
en blue 200x116 de orange 200x116 info letter User
suche 36x36
Latest versionsfixlist
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
Have problems? - contact us.
Register for free anmeldung-x26
Contact form kontakt-x26

DB2 - Problem description

Problem IC91458 Status: Closed

A QUERY MIGHT RETURN INCORRECT RESULTS OR TRAP DURING OPTIMIZATI ON IN QRW
PHASE IN FUNCTION SQLNR_OR_PREDS_OPT, IN 9.7 FIXPACK 8

product:
DB2 FOR LUW / DB2FORLUW / 970 - DB2
Problem description:
An impacted query might return the wrong results if it has the 
OR predicate with two sub-terms. One predicate sub-term is "colX 
IN (<literal1>, ...<literalN>)", and the other is "colX NOT IN 
(<literal1>, ...<literalN>)".  The symptom is that the optimized 
statement section inside the db2exfmt plan file contains the 
"colX IN (<literal1> sub-term, ...<literalN>)" but misses the 
"colX NOT IN (<literal1>, ...<literalN>)" sub-term. 
 
Furthermore, the impacted query also might return wrong results 
if it has the following OR predicate with two sub-terms: one 
sub-term is "colX LIKE <patternexp>", and the other is "colX NOT 
LIKE <patternexp>".  The symptom experienced by this issue is 
that the optimized statement section inside the db2exfmt plan 
file contains the "colX LIKE <patternexp>" sub-term, but misses 
the "colX NOT LIKE <patternexp>" sub-term. 
 
A query might trap when the query contains a compound-predicate 
that meets the following conditions: 
- the compound-predicate takes the form (pred1 OR (pred2 OR 
pred3)) 
- pred1 and pred2 are exactly matched, or pred1 subsumes pred2 
(For example, c1 in (1,2,3) subsumes c1 in (1,2)) 
 
When both conditions are satisfied, a query compilation might 
trap and the call stack will show the sqlnr_or_preds_opt 
function. 
 
This only occurs in the 9.7 fix pack 8 release of the DB2 
product. 
 
On a Linux platform a trap with SEGV might occur, with the trap 
file showing: 
 
0x00002AAAAD5CF043 sqloEDUCodeTrapHandler 
0x00002AAAABA681E6 _ZNK9sqlnq_pid2opEv 
0x00002AAAAD3C9BBA _Z17sqlnr_or_pred_optP9sqlnq_pidP3locRb 
0x00002AAAAD3C9ECF _Z18sqlnr_or_preds_optP9sqlnq_oprP3loc + 
0x00002AAAABF6090B _Z20sqlnr_qrwprep_phase2P3locPi + 0x1493 
0x00002AAAABF41A01 
_Z18sqlnr_prep2_actionP10sqlnr_qrwaPiP14sqlnr_progr 
0x00002AAAABF5E802 
_Z10sqlnr_compPiiP16sqlnr_rule_stateP10sqlnr_qrwaP1 
0x00002AAAABF5E62D 
_Z9sqlnr_seqPiP10sqlnr_qrwaP14sqlnr_progressP12sqln 
0x00002AAAABF5E49B _Z9sqlnr_rcciP10sqlnr_qrwaPiP14sqlnr_progress 
0x00002AAAABF3FCD5 _Z9sqlnr_exeP9sqlnq_qur + 0x04b9 
0x00002AAAABD3E842 
_Z10sqlnn_cmplP8sqeAgentP11sqlrrstrings17sqlnn_comp 
... 
 
On an AIX platform a -901 error might be observed instead of a 
trap: 
 
SQL0901N  The SQL statement failed because of a non-severe 
system error. 
Subsequent SQL statements can be processed.  (Reason "New tree 
is not given".) 
SQLSTATE=58004 
 
The db2diag.log log shows: 
 
2013-04-09-10.18.20.879038+120 I4899A840    LEVEL: Severe 
PID     : 25886852          TID  : 1544     PROC : db2sysc 0 
INSTANCE: db2v978           NODE : 000      DB   : FOO 
APPHDL  : 0-103             APPID: *LOCAL.db2v978.130409081812 
AUTHID  : DB2V978 
EDUID   : 1544              EDUNAME: db2agent (FOO) 0 
FUNCTION: DB2 UDB, relation data serv, sqlrr_dump_ffdc, 
probe:300 
DATA #1 : SQLCA, PD_DB2_TYPE_SQLCA, 136 bytes 
 sqlcaid : SQLCA     sqlcabc: 136   sqlcode: -901   sqlerrml: 21 
 sqlerrmc: New tree is not given 
 sqlerrp : SQLNQ21E 
... 
2013-04-09-10.18.20.921390+120 E60158A1518  LEVEL: Info 
PID     : 25886852          TID  : 1544     PROC : db2sysc 0 
INSTANCE: db2v978           NODE : 000      DB   : FOO 
APPHDL  : 0-103             APPID: 
*LOCAL.db2v978.130409081812 
AUTHID  : DB2V978 
EDUID   : 1544                 EDUNAME: db2agent (FOO) 0 
FUNCTION: DB2 UDB, SW- common services, sqlnn_cmpl, probe:650 
MESSAGE : ZRC=0x803100AF=-2144272209=SQLNN_E_BADNEWS 
          "unexpected error but state is OK" 
... 
DATA #7 : SQLCA, PD_DB2_TYPE_SQLCA, 136 bytes 
 sqlcaid : SQLCA     sqlcabc: 136   sqlcode: -901   sqlerrml: 21 
 sqlerrmc: New tree is not given 
 sqlerrp : SQLNQ21E 
 sqlerrd : (1) 0x801A006D      (2) 0x00000000      (3) 
0x00000000 
           (4) 0x00000000      (5) 0xFFFFFFF6      (6) 
0x00000000 
 sqlwarn : (1)      (2)      (3)      (4)        (5)       (6) 
           (7)      (8)      (9)      (10)        (11) 
 sqlstate: 
DATA #8 : Hex integer, 4 bytes 
0x00000040 
DATA #9 : String, 245 bytes 
Compiler error stack for rc = -2144272209: 
sqlnn_cmpl[370] 
sqlnr_exe[600] 
sqlnr_rcc[100] 
sqlnr_seq[100] 
sqlnr_comp[110] 
sqlnr_prep2_action[100] 
sqlnr_qrwprep_phase2[620] 
sqlnr_or_preds_opt[100] 
sqlnr_or_pred_opt[400] 
sqlnq_pid::updated_tree[10]
Problem Summary:
**************************************************************** 
* USERS AFFECTED:                                              * 
* All users running DB2 version 9.7.0.8.                       * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* See Error Description                                        * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Upgrade to DB2 version 9.7.0.9.                              * 
****************************************************************
Local Fix:
There are two ways to fix this issue: 
 
(1) Reduce the query optimization level to below 5. 
For example, the DB2 product set the current query optimization 
level to 3. 
 
(2) Manually rewrite the predicate to: 
 
- remove the exact OR sub-term 
select * from t where (c1 >= 1 or c1 >= 2); 
 
Or, alternatively rewrite the predicate to: 
 
- move the exact OR sub-terms to the end of the OR predicate 
select * from t where (c1 >= 2 or c1 >= 1 or c1 >= 1);
available fix packs:
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

Solution
The problem is first fixed in DB2 version 9.7.0.9.
Workaround
not known / see Local fix
Timestamps
Date  - problem reported    :
Date  - problem closed      :
Date  - last modified       :
10.04.2013
16.12.2013
16.12.2013
Problem solved at the following versions (IBM BugInfos)
9.7.0.9
Problem solved according to the fixlist(s) of the following version(s)
9.7.0.9 FixList
9.7.0.9 FixList