DB2 - Problem description
| Problem IC64063 | Status: Closed |
UNNECESSARY CODEPAGE CONVERSION WHEN LOADING DATA FROM DATE OR TIME OR TIMESTAMP COLUMN, INTO CHARACTER TYPE COLUMNS. | |
| product: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
| Problem description: | |
This problem is specific for LOAD FROM CURSOR. It does not
affect LOAD FROM FILES.
When you load data into character type columns from DATE or TIME
or TIMESTAMP column, unnecessary codepage conversion is
performed and error message is reported in db2diag.log.
1) In db2 version 9.5,
here are the error messages reported by db2 load from cursor:
===============================
2008-10-15-15.24.05.106581+480 I7322547A445 LEVEL: Error
PID : 258182 TID : 36938 PROC : db2sysc
0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-4911 APPID:
*LOCAL.db2inst1.081015072139
AUTHID : DWADM
EDUID : 36938 EDUNAME: db2lfrm0 0
FUNCTION: DB2 UDB, National Language Support, sqlnlscpst2,
probe:30
DATA #1 : signed integer, 4 bytes
-2029059907
2008-10-15-15.24.05.145696+480 I7322993A480 LEVEL: Error
PID : 258182 TID : 36938 PROC : db2sysc
0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-4911 APPID:
*LOCAL.db2inst1.081015072139
AUTHID : DWADM
EDUID : 36938 EDUNAME: db2lfrm0 0
FUNCTION: DB2 UDB, National Language Support, sqlnlscpst2,
probe:100
DATA #1 : unsigned integer, 4 bytes
950
DATA #2 : unsigned integer, 4 bytes
950
2008-10-15-15.24.05.145917+480 I7323474A503 LEVEL: Error
PID : 258182 TID : 36938 PROC : db2sysc
0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-4911 APPID:
*LOCAL.db2inst1.081015072139
AUTHID : DWADM
EDUID : 36938 EDUNAME: db2lfrm0 0
FUNCTION: DB2 UDB, National Language Support, sqlnlscpst2,
probe:105
DATA #1 : Hexdump, 10 bytes
0x07000000667FCC30 : 3030 3031 2D30 312D 3031
0001-01-01
2008-10-15-15.24.05.146143+480 I7323978A524 LEVEL: Error
PID : 258182 TID : 36938 PROC : db2sysc
0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-4911 APPID:
*LOCAL.db2inst1.081015072139
AUTHID : DWADM
EDUID : 36938 EDUNAME: db2lfrm0 0
FUNCTION: DB2 UDB, National Language Support, sqlnlscpst2,
probe:110
DATA #1 : Pointer, 8 bytes
0x07000000667fcc30
DATA #2 : unsigned integer, 4 bytes
10
DATA #3 : unsigned integer, 4 bytes
10
2008-10-15-15.24.05.146370+480 I7324503A524 LEVEL: Error
PID : 258182 TID : 36938 PROC : db2sysc
0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-4911 APPID:
*LOCAL.db2inst1.081015072139
AUTHID : DWADM
EDUID : 36938 EDUNAME: db2lfrm0 0
FUNCTION: DB2 UDB, National Language Support, sqlnlscpst2,
probe:120
DATA #1 : Pointer, 8 bytes
0x070000033c8937a5
DATA #2 : unsigned integer, 4 bytes
10
DATA #3 : unsigned integer, 4 bytes
10
2008-10-15-15.24.05.146595+480 I7325028A436 LEVEL: Error
PID : 258182 TID : 36938 PROC : db2sysc
0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-4911 APPID:
*LOCAL.db2inst1.081015072139
AUTHID : DWADM
EDUID : 36938 EDUNAME: db2lfrm0 0
FUNCTION: DB2 UDB, National Language Support, sqlnlscpst2,
probe:130
DATA #1 : signed integer, 4 bytes
1
2008-10-15-15.24.05.146769+480 I7325465A476 LEVEL: Error
PID : 258182 TID : 36938 PROC : db2sysc
0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-4911 APPID:
*LOCAL.db2inst1.081015072139
AUTHID : DWADM
EDUID : 36938 EDUNAME: db2lfrm0 0
FUNCTION: DB2 UDB, National Language Support, sqlnlscpst2,
probe:140
DATA #1 : unsigned integer, 4 bytes
0
DATA #2 : unsigned integer, 4 bytes
0
2008-10-15-15.24.05.146968+480 I7325942A492 LEVEL: Error
PID : 258182 TID : 36938 PROC : db2sysc
0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-4911 APPID:
*LOCAL.db2inst1.081015072139
AUTHID : DWADM
EDUID : 36938 EDUNAME: db2lfrm0 0
FUNCTION: DB2 UDB, National Language Support, sqlnlscpst2,
probe:150
DATA #1 : Pointer, 8 bytes
0x07000000667fcc3a
DATA #2 : Pointer, 8 bytes
0x070000033c8937a5
2008-10-15-15.24.05.147166+480 I7326435A628 LEVEL: Error
PID : 258182 TID : 36938 PROC : db2sysc
0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-4911 APPID:
*LOCAL.db2inst1.081015072139
AUTHID : DWADM
EDUID : 36938 EDUNAME: db2lfrm0 0
FUNCTION: DB2 UDB, National Language Support, sqlnlscpst2,
probe:160
DATA #1 : unsigned integer, 4 bytes
0
DATA #2 : Hexdump, 32 bytes
0x07000000667FCAF8 : 0000 0000 0000 0000 0700 0003 3C89 37AF
............<.7.
0x07000000667FCB08 : 0000 0000 0000 0000 0000 0101 0101 FFFF
................
2008-10-15-15.24.05.147351+480 I7327064A510 LEVEL: Severe
PID : 258182 TID : 36938 PROC : db2sysc
0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-4911 APPID:
*LOCAL.db2inst1.081015072139
AUTHID : DWADM
EDUID : 36938 EDUNAME: db2lfrm0 0
FUNCTION: DB2 UDB, data services, sqlrxput, probe:130
MESSAGE : sqlnlscpst2 error
DATA #1 : Hexdump, 4 bytes
0x07000000667FCC10 : 870F 00BD
....
===============================
2) In db2 version 9.1,
you will see only one error message like this in db2diag.log:
========================================
2008-10-15-15.24.05.147351+480 I7327064A510 LEVEL: Severe
PID : 258182 TID : 36938 PROC : db2sysc
0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-4911 APPID:
*LOCAL.db2inst1.081015072139
AUTHID : DWADM
EDUID : 36938 EDUNAME: db2lfrm0 0
FUNCTION: DB2 UDB, data services, sqlrxput, probe:130
MESSAGE : sqlnlscpst2 error
DATA #1 : Hexdump, 4 bytes
0x07000000667FCC10 : 870F 00BD
....
========================================
Anyway, "870F 00BD" reported by function sqlrxput is the
eye-catcher for this problem.
"870F 00BD" equals -2029059907 and represents SQLO_CPSAME.
Here is a reproduce steps for your reference:
=================
On system 1:
db2set db2codepage=950
db2set db2comm=tcpip
db2start
db2 create db cp950src using codeset big5 territory TW
db2 connect to cp950src
db2 "create table t (d date)"
db2 "insert into t values( date('0001-01-01') )"
db2 terminate
On system 2:
(catalog db cp950src from system 1)
db2set db2codepage=950
db2start
db2 create db cp950tgt using codeset big5 territory TW
db2 connect to cp950tgt
db2 "create table t2 (vc long varchar)"
db2 declare c cursor database cp950src user myuserid password
mypasswd for select d from t
db2 load from c of cursor replace into t2
================= | |
| Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * Users of LOAD * **************************************************************** * PROBLEM DESCRIPTION: * * See the error description. * **************************************************************** * RECOMMENDATION: * * Upgrade to DB2 V9.7 FP1. * **************************************************************** | |
| Local Fix: | |
You have at least two methods to bypass this problem. 1) Explicitly cast the date/time/timestamp column into character string type in the cursor. For example, with the above reproduce step, do this instead: db2 "declare c cursor database cp950src user myuserid password mypasswd for select varchar(d) from t" 2) Use laod from files. | |
| available fix packs: | |
DB2 Version 9.7 Fix Pack 1 for Linux, UNIX, and Windows | |
| Solution | |
Problem fixed in DB2 V9.7 FP1 | |
| Workaround | |
not known / see Local fix | |
| Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 22.10.2009 22.02.2010 22.02.2010 |
| Problem solved at the following versions (IBM BugInfos) | |
9.7.FP1 | |
| Problem solved according to the fixlist(s) of the following version(s) | |
| 9.7.0.1 |
|