DB2 - Problembeschreibung
| Problem IC63463 | Status: Geschlossen | 
SQL1224N from select count() using XMLTABLE with COLUMN PATH that uses FLWR statement  | |
| Produkt: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2  | |
| Problembeschreibung: | |
A select count() query is crashing the database because we are 
marking the "elements" node for extraction but not allocating a 
sqlz value for binding out the result. During navigation tuple 
construction we try to initialize the sqlz value but trap 
because it was never allocated previously. 
 
Sample Query: 
 
select count(1) 
FROM networkmessage n, 
     XMLTABLE ('$n/NetworkMessage' passing n.value as "n" 
       COLUMNS 
     cardId                         VARCHAR(100)    PATH 
'*:cardId', 
     groupId                        VARCHAR(100)    PATH 
'*:groupId', 
     res_p3_processing_cd_blast     VARCHAR(100)    PATH 'for $i 
in (*:response/*:elements) where $i/*:id = "3" return 
$i/*:value', 
     res_p3_processing_cd_visa      VARCHAR(100)    PATH 'for $i 
in (*:response/*:elements/*:elements) where $i/../*:id = "3" and 
$i/*:id = "1" return $i/*:value' 
) AS X 
LEFT JOIN Card c ON X.cardId = c.id; 
 
SQL ERROR: 
 
SQL1224N  The database manager is not able to accept new 
requests, has 
terminated all requests in progress, or has terminated your 
particular request 
due to an error or a force interrupt.  SQLSTATE=55032 
 
STACK: 
 
00002ADCF95E1BBC _ZN11OSSTrapFile6dumpExEmiP7siginfoPvm + 0x00b4 
00002ADCF95E1C83 _ZN11OSSTrapFile4dumpEmiP7siginfoPv + 0x0009 
00002ADCF5B4FA35 sqlo_trce + 0x03f3 
00002ADCF5B8E45D sqloEDUCodeTrapHandler + 0x0107 
0000003FA320DE70 address: 0x0000003FA320DE70 ; dladdress: 
0x0000003FA3200000 ; offset in lib: 0x000000000000DE70 ; 
00002ADCF4B3667F 
_ZN21XmlnvTupleConstructor12m_initZValueEP10sqlz_valueP16XmlnvBu 
fferArrayi + 0x0011 
00002ADCF65FBED8 
_ZN21XmlnvTupleConstructor22m_initTupleConstructorEP12sqlriXNavO 
bjP14XmlnvAutomaton + 0x03be 
00002ADCF65ED981 
_ZN14XmlnvAutomaton15m_initAutomatonEP14XmlnvNavigatorP12sqlriXN 
avObj + 0x02a1 
00002ADCF65F729B 
_ZN14XmlnvNavigator15m_initNavigatorEP13SQLO_MEM_POOLP11XMLSTORE 
_CBP12sqlriXNavObjP12XmlrnNodeMgrP8sqlrr_cb + 0x02d5 
00002ADCF65F6EC9 
_ZN14XmlnvNavigatorC9EP13SQLO_MEM_POOLP11XMLSTORE_CBP12sqlriXNav 
ObjP8sqlrr_cbPi + 0x0065 
00002ADCF65F6FC4 
_ZN14XmlnvNavigatorC1EP13SQLO_MEM_POOLP11XMLSTORE_CBP12sqlriXNav 
ObjP8sqlrr_cbPi + 0x0006 
00002ADCF5F45FD0 _Z12sqlriXMLScanP8sqlrr_cb + 0x0350 
00002ADCF675562C _Z14sqlriNljnPipedP8sqlrr_cb + 0x0230 
00002ADCF674E338 _Z15sqlriSectInvokeP8sqlrr_cbP12sqlri_opparm + 
0x00b2 
00002ADCF498394E 
_Z10sqlrr_openP14db2UCinterfaceP15db2UCCursorInfo + 0x076a 
00002ADCF46D00B4 
_Z16sqljs_ddm_opnqryP14db2UCinterfaceP13sqljDDMObject + 0x015c 
00002ADCF46C7202 
_Z21sqljsParseRdbAccessedP13sqljsDrdaAsCbP13sqljDDMObjectP14db2U 
Cinterface + 0x03b2 
00002ADCF46C757D _Z10sqljsParseP13sqljsDrdaAsCbP14db2UCinterface 
+ 0x030d 
00002ADCF46C5244 address: 0x00002ADCF46C5244 ; dladdress: 
0x00002ADCF35E3000 ; offset in lib: 0x00000000010E2244 ; 
00002ADCF46C4FD6 address: 0x00002ADCF46C4FD6 ; dladdress: 
0x00002ADCF35E3000 ; offset in lib: 0x00000000010E1FD6 ; 
00002ADCF46C2DF5 address: 0x00002ADCF46C2DF5 ; dladdress: 
0x00002ADCF35E3000 ; offset in lib: 0x00000000010DFDF5 ; 
00002ADCF46C2C9B _Z17sqljsDrdaAsDriverP18SQLCC_INITSTRUCT_T + 
0x0051 
00002ADCF462947A _ZN8sqeAgent6RunEDUEv + 0x00c2 
00002ADCF4B28291 _ZN9sqzEDUObj9EDUDriverEv + 0x006d 
00002ADCF4B28221 _Z10sqlzRunEDUPcj + 0x0009 
00002ADCF4913B04 sqloEDUEntry + 0x02d0 
0000003FA32062F7 address: 0x0000003FA32062F7 ; dladdress: 
0x0000003FA3200000 ; offset in lib: 0x00000000000062F7 ; 
0000003FA26D1B6D clone + 0x006d 
        (/lib64/libc.so.6) | |
| Problem-Zusammenfassung: | |
**************************************************************** 
* USERS AFFECTED:                                              * 
* DB2 LUW All Platforms                                        * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* A select count() query is crashing the database because we   * 
* are                                                          * 
* marking the "elements" node for extraction but not           * 
* allocating a                                                 * 
* sqlz value for binding out the result. During navigation     * 
* tuple                                                        * 
* construction we try to initialize the sqlz value but trap    * 
*                                                              * 
* because it was never allocated previously.                   * 
*                                                              * 
*                                                              * 
*                                                              * 
* Sample Query:                                                * 
*                                                              * 
*                                                              * 
*                                                              * 
* select count(1)                                              * 
*                                                              * 
* FROM networkmessage n,                                       * 
*                                                              * 
*      XMLTABLE ('$n/NetworkMessage' passing n.value as "n"    * 
*                                                              * 
*        COLUMNS                                               * 
*                                                              * 
*      cardId                         VARCHAR(100)    PATH     * 
*                                                              * 
* '*:cardId',                                                  * 
*                                                              * 
*      groupId                        VARCHAR(100)    PATH     * 
*                                                              * 
* '*:groupId',                                                 * 
*                                                              * 
*      res_p3_processing_cd_blast     VARCHAR(100)    PATH     * 
* 'for $i                                                      * 
* in (*:response/*:elements) where $i/*:id = "3" return        * 
*                                                              * 
* $i/*:value',                                                 * 
*                                                              * 
*      res_p3_processing_cd_visa      VARCHAR(100)    PATH     * 
* 'for $i                                                      * 
* in (*:response/*:elements/*:elements) where $i/../*:id = "3" * 
* and                                                          * 
* $i/*:id = "1" return $i/*:value'                             * 
*                                                              * 
* ) AS X                                                       * 
*                                                              * 
* LEFT JOIN Card c ON X.cardId = c.id;                         * 
*                                                              * 
*                                                              * 
*                                                              * 
* SQL ERROR:                                                   * 
*                                                              * 
*                                                              * 
*                                                              * 
* SQL1224N  The database manager is not able to accept new     * 
*                                                              * 
* requests, has                                                * 
*                                                              * 
* terminated all requests in progress, or has terminated your  * 
*                                                              * 
* particular request                                           * 
*                                                              * 
* due to an error or a force interrupt.  SQLSTATE=55032        * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Upgrade to DB2 v97 Fixpack 1                                 * 
**************************************************************** | |
| Local-Fix: | |
Workaround query, replace "for" with "let" to avoid bad 
codepath. 
 
select count(1) 
FROM networkmessage n, 
     XMLTABLE ('$n/NetworkMessage' passing n.value as "n" 
       COLUMNS 
     cardId        VARCHAR(100) 
  PATH '*:cardId', 
     groupId       VARCHAR(100) 
 PATH '*:groupId', 
     res_p3_processing_cd_blast     VARCHAR(100)    PATH 
'*:response/*:elements[*:id = "3"]/*:value', 
     res_p3_processing_cd_visa      VARCHAR(100)    PATH 
'*:response/*:elements/*:elements[../*:id = "3" and *:id = 
"1"]/*:value' 
) AS X 
LEFT JOIN Card c ON X.cardId = c.id; | |
| verfügbare FixPacks: | |
DB2 Version 9.7 Fix Pack 1 for Linux, UNIX, and Windows  | |
| Lösung | |
The fix allocates the sqlz value used for binding out results during navigation.  | |
| Workaround | |
keiner bekannt / siehe Local-Fix  | |
| Weitere Daten | |
Datum - Problem gemeldet : Datum - Problem geschlossen : Datum - der letzten Änderung:  | 29.09.2009 23.02.2010 23.02.2010  | 
| Problem behoben ab folgender Versionen (IBM BugInfos) | |
9.7.FP1  | |
| Problem behoben lt. FixList in der Version | |
| 9.7.0.1 | 
 |