DB2 - Problem description
| Problem IC61662 | Status: Closed |
COMMAS IN STRING VALUES FOR ARRAYS ARE NOT RESPECTED BY CLP IN THE PARSING | |
| product: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
| Problem description: | |
The following scenario is triggering a -104 error because the
CLP code is not properly handling commas when parsing array
elements.
create TYPE VARIABLE_VALUES AS VARCHAR(1200) ARRAY[100]
create procedure TEST1(
IN VARIABLES VARIABLE_VALUES )
LANGUAGE SQL
BEGIN ATOMIC
END@
When the procedure with a comma in the first array element is
called, getting the following error :
call TEST1( ARRAY[ '${email/attachments}=d:/tmp/a.a,
d:/tmp/b.b', '${email/sender}= jpparkin@ca.ibm.com' ] )
SQL0104N An unexpected token "ARRAY[" was found following "".
Expected tokens may include: "<name>". SQLSTATE=42601
If the comma out of the string value is left out, then the SQL
works.
call TEST1( ARRAY[ '${email/attachments}=d:/tmp/a.a d:/tmp/b.b',
'${email/sender}= jpparkin@ca.ibm.com' ] )
Return Status = 0 | |
| Problem Summary: | |
****************************************************************
* USERS AFFECTED: *
* This problem can occur in any environment for DB2. *
****************************************************************
* PROBLEM DESCRIPTION: *
* The following scenario is triggering a -104 error because *
* the *
* CLP code is not properly handling commas when parsing array *
* *
* elements. *
* *
* create TYPE VARIABLE_VALUES AS VARCHAR(1200) ARRAY[100] *
* *
* create procedure TEST1( *
* IN VARIABLES VARIABLE_VALUES ) *
* LANGUAGE SQL *
* *
* BEGIN ATOMIC *
* END@ *
* *
* When the procedure with a comma in the first array element *
* is *
* called, getting the following error : *
* *
* call TEST1( ARRAY[ '${email/attachments}=d:/tmp/a.a, *
* d:/tmp/b.b', '${email/sender}= jpparkin@ca.ibm.com' ] ) *
* *
* SQL0104N An unexpected token "ARRAY[" was found following *
* "". *
* Expected tokens may include: "<name>". SQLSTATE=42601 *
* *
* *
* If the comma out of the string value is left out, then the *
* SQL *
* works. *
* *
* call TEST1( ARRAY[ '${email/attachments}=d:/tmp/a.a *
* d:/tmp/b.b','${email/sender}= jpparkin@ca.ibm.com' ] ) *
* *
* *
* Return Status = 0 *
****************************************************************
* RECOMMENDATION: *
* upgrade to db2_v97fp1 *
**************************************************************** | |
| Local Fix: | |
Possible workaround:
CREATE PROCEDURE caller()
BEGIN
call TEST1( ARRAY[ '${email/attachments}=d:/tmp/a.a,
d:/tmp/b.b', '${email/sender}= jpparkin@ca.ibm.com' ] );
END
CALL caller() | |
| available fix packs: | |
DB2 Version 9.7 Fix Pack 1 for Linux, UNIX, and Windows | |
| Solution | |
This problem is fixed in db2_v95fp5, db2_v97fp1 and later releases. | |
| Workaround | |
not known / see Local fix | |
| Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 23.06.2009 22.12.2009 22.12.2009 |
| Problem solved at the following versions (IBM BugInfos) | |
| Problem solved according to the fixlist(s) of the following version(s) | |
| 9.7.0.1 |
|