Incorrect results with XML containing Chinese data on Linux. Same code works on Windows.
markddrake opened this issue · 12 comments
Please provide below information while opening an issue to understand your problem
-
Operating System Name where ibm_db is installed:
-
Env 1: Windows 11
-
Env 2: Ubuntu
-
Target Db2 Server Version or output of
db2level
command from Db2 database system:
IBM DB2 Official Docker container
C:\Development\YADAMU\src\scratch\db2>docker exec -it -u db2inst1 IBMDB2-01 bash
[db2inst1@1b0693d46d58 /]$ db2level
DB21085I This instance or install (instance name, where applicable:
"db2inst1") uses "64" bits and DB2 code release "SQL11058" with level
identifier "0609010F".
Informational tokens are "DB2 v11.5.8.0", "s2209201700", "DYN2209201700AMD64",
and Fix Pack "0".
Product is installed at "/opt/ibm/db2/V11.5".
[db2inst1@1b0693d46d58 /]$
DB2 CFG
db2 => get db cfg
Database Configuration for Database
Database configuration release level = 0x1500
Database release level = 0x1500
Database territory = us
Database code page = 1208
Database code set = utf-8
Database country/region code = 1
Database collating sequence = IDENTITY
Alternate collating sequence (ALT_COLLATE) =
Number compatibility = OFF
Varchar2 compatibility = OFF
Date compatibility = OFF
Database page size = 4096
Statement concentrator (STMT_CONC) = OFF
Discovery support for this database (DISCOVER_DB) = ENABLE
Restrict access = NO
Default query optimization class (DFT_QUERYOPT) = 5
Degree of parallelism (DFT_DEGREE) = ANY
Continue upon arithmetic exceptions (DFT_SQLMATHWARN) = NO
Default refresh age (DFT_REFRESH_AGE) = 0
Default maintained table types for opt (DFT_MTTB_TYPES) = SYSTEM
Number of frequent values retained (NUM_FREQVALUES) = 10
Number of quantiles retained (NUM_QUANTILES) = 20
Decimal floating point rounding mode (DECFLT_ROUNDING) = ROUND_HALF_EVEN
DECIMAL arithmetic mode (DEC_ARITHMETIC) =
Backup pending = NO
All committed transactions have been written to disk = NO
Rollforward pending = NO
Restore pending = NO
Upgrade pending = NO
Multi-page file allocation enabled = YES
Log retain for recovery status = NO
User exit for logging status = YES
Self tuning memory (SELF_TUNING_MEM) = ON
Size of database shared memory (4KB) (DATABASE_MEMORY) = AUTOMATIC(164848)
Database memory threshold (DB_MEM_THRESH) = 100
Max storage for lock list (4KB) (LOCKLIST) = AUTOMATIC(4096)
Percent. of lock lists per application (MAXLOCKS) = AUTOMATIC(60)
Package cache size (4KB) (PCKCACHESZ) = AUTOMATIC(320)
Sort heap thres for shared sorts (4KB) (SHEAPTHRES_SHR) = AUTOMATIC(5000)
Sort list heap (4KB) (SORTHEAP) = AUTOMATIC(1000)
Database heap (4KB) (DBHEAP) = AUTOMATIC(5137)
Catalog cache size (4KB) (CATALOGCACHE_SZ) = 300
Log buffer size (4KB) (LOGBUFSZ) = 2152
Utilities heap size (4KB) (UTIL_HEAP_SZ) = AUTOMATIC(74870)
SQL statement heap (4KB) (STMTHEAP) = AUTOMATIC(8192)
Default application heap (4KB) (APPLHEAPSZ) = AUTOMATIC(1024)
Application Memory Size (4KB) (APPL_MEMORY) = AUTOMATIC(40000)
Statistics heap size (4KB) (STAT_HEAP_SZ) = AUTOMATIC(4384)
Interval for checking deadlock (ms) (DLCHKTIME) = 10000
Lock timeout (sec) (LOCKTIMEOUT) = -1
Changed pages threshold (CHNGPGS_THRESH) = 80
Number of asynchronous page cleaners (NUM_IOCLEANERS) = AUTOMATIC(4)
Number of I/O servers (NUM_IOSERVERS) = AUTOMATIC(8)
Sequential detect flag (SEQDETECT) = YES
Default prefetch size (pages) (DFT_PREFETCH_SZ) = AUTOMATIC
Track modified pages (TRACKMOD) = NO
Default number of containers = 1
Default tablespace extentsize (pages) (DFT_EXTENT_SZ) = 32
Max number of active applications (MAXAPPLS) = AUTOMATIC(40)
Average number of active applications (AVG_APPLS) = AUTOMATIC(1)
Lifetime of cached credentials (AUTHN_CACHE_DURATION) = 3
Max number of users in the cache (AUTHN_CACHE_USERS) = 0
Max DB files open per database (MAXFILOP) = 61440
Active log space disk capacity (MB) (LOG_DISK_CAP) = 0
Log file size (4KB) (LOGFILSIZ) = 10240
Number of primary log files (LOGPRIMARY) = 16
Number of secondary log files (LOGSECOND) = 22
Changed path to log files (NEWLOGPATH) =
Path to log files = /database/data/db2inst1/NODE0000/SQL00002/LOGSTREAM0000/
Overflow log path (OVERFLOWLOGPATH) =
Mirror log path (MIRRORLOGPATH) =
First active log file = S0004019.LOG
Block log on disk full (BLK_LOG_DSK_FUL) = NO
Block non logged operations (BLOCKNONLOGGED) = NO
Percent max primary log space by transaction (MAX_LOG) = 0
Num. of active log files for 1 active UOW(NUM_LOG_SPAN) = 0
Percent log file reclaimed before soft chckpt (SOFTMAX) = 0
Target for oldest page in LBP (PAGE_AGE_TRGT_MCR) = 240
HADR database role = STANDARD
HADR local host name (HADR_LOCAL_HOST) =
HADR local service name (HADR_LOCAL_SVC) =
HADR remote host name (HADR_REMOTE_HOST) =
HADR remote service name (HADR_REMOTE_SVC) =
HADR instance name of remote server (HADR_REMOTE_INST) =
HADR timeout value (HADR_TIMEOUT) = 120
HADR target list (HADR_TARGET_LIST) =
HADR log write synchronization mode (HADR_SYNCMODE) = NEARSYNC
HADR spool log data limit (4KB) (HADR_SPOOL_LIMIT) = AUTOMATIC(0)
HADR log replay delay (seconds) (HADR_REPLAY_DELAY) = 0
HADR peer window duration (seconds) (HADR_PEER_WINDOW) = 0
First log archive method (LOGARCHMETH1) = DISK:/database/logs/
Archive compression for logarchmeth1 (LOGARCHCOMPR1) = OFF
Options for logarchmeth1 (LOGARCHOPT1) =
Second log archive method (LOGARCHMETH2) = OFF
Archive compression for logarchmeth2 (LOGARCHCOMPR2) = OFF
Options for logarchmeth2 (LOGARCHOPT2) =
Failover log archive path (FAILARCHPATH) =
Number of log archive retries on error (NUMARCHRETRY) = 5
Log archive retry Delay (secs) (ARCHRETRYDELAY) = 20
Vendor options (VENDOROPT) =
Auto restart enabled (AUTORESTART) = ON
Index re-creation time and redo index build (INDEXREC) =
Log pages during index build (LOGINDEXBUILD) = OFF
Default number of loadrec sessions (DFT_LOADREC_SES) = 1
Number of database backups to retain (NUM_DB_BACKUPS) = 12
Recovery history retention (days) (REC_HIS_RETENTN) = 90
Auto deletion of recovery objects (AUTO_DEL_REC_OBJ) = OFF
TSM management class (TSM_MGMTCLASS) =
TSM node name (TSM_NODENAME) =
TSM owner (TSM_OWNER) =
TSM password (TSM_PASSWORD) =
Automatic maintenance (AUTO_MAINT) = ON
Automatic database backup (AUTO_DB_BACKUP) = OFF
Automatic table maintenance (AUTO_TBL_MAINT) = ON
Automatic runstats (AUTO_RUNSTATS) = ON
Real-time statistics (AUTO_STMT_STATS) = ON
Statistical views (AUTO_STATS_VIEWS) = OFF
Automatic sampling (AUTO_SAMPLING) = ON
Automatic column group statistics (AUTO_CG_STATS) = OFF
Automatic reorganization (AUTO_REORG) = OFF
Auto-Revalidation (AUTO_REVAL) = DEFERRED
Currently Committed (CUR_COMMIT) = ON
CHAR output with DECIMAL input (DEC_TO_CHAR_FMT) = NEW
Enable XML Character operations (ENABLE_XMLCHAR) = YES
Enforce Constraint (DDL_CONSTRAINT_DEF) = YES
Enable row compression by default (DDL_COMPRESSION_DEF) = NO
Replication site ID (REPL_SITE_ID) = 0
Monitor Collect Settings
Request metrics (MON_REQ_METRICS) = BASE
Activity metrics (MON_ACT_METRICS) = BASE
Object metrics (MON_OBJ_METRICS) = EXTENDED
Routine data (MON_RTN_DATA) = NONE
Routine executable list (MON_RTN_EXECLIST) = OFF
Unit of work events (MON_UOW_DATA) = NONE
UOW events with package list (MON_UOW_PKGLIST) = OFF
UOW events with executable list (MON_UOW_EXECLIST) = OFF
Lock timeout events (MON_LOCKTIMEOUT) = NONE
Deadlock events (MON_DEADLOCK) = WITHOUT_HIST
Lock wait events (MON_LOCKWAIT) = NONE
Lock wait event threshold (MON_LW_THRESH) = 5000000
Number of package list entries (MON_PKGLIST_SZ) = 32
Lock event notification level (MON_LCK_MSG_LVL) = 1
SMTP Server (SMTP_SERVER) =
SQL conditional compilation flags (SQL_CCFLAGS) =
Section actuals setting (SECTION_ACTUALS) = NONE
Connect procedure (CONNECT_PROC) =
Adjust temporal SYSTEM_TIME period (SYSTIME_PERIOD_ADJ) = NO
Log DDL Statements (LOG_DDL_STMTS) = NO
Log Application Information (LOG_APPL_INFO) = NO
Default data capture on new Schemas (DFT_SCHEMAS_DCC) = NO
Strict I/O for EXTBL_LOCATION (EXTBL_STRICT_IO) = NO
Allowed paths for external tables (EXTBL_LOCATION) = /database/config/db2inst1
Default table organization (DFT_TABLE_ORG) = ROW
Default string units (STRING_UNITS) = SYSTEM
National character string mapping (NCHAR_MAPPING) = CHAR_CU32
Database is in write suspend state = NO
Extended row size support (EXTENDED_ROW_SZ) = ENABLE
Encryption Library for Backup (ENCRLIB) =
Encryption Options for Backup (ENCROPTS) =
WLM Collection Interval (minutes) (WLM_COLLECT_INT) = 0
Target agent load per CPU core (WLM_AGENT_LOAD_TRGT) = AUTOMATIC(14)
WLM admission control enabled (WLM_ADMISSION_CTRL) = NO
Allocated share of CPU resources (WLM_CPU_SHARES) = 1000
CPU share behavior (hard/soft) (WLM_CPU_SHARE_MODE) = HARD
Maximum allowable CPU utilization (%) (WLM_CPU_LIMIT) = 0
Encrypted database = NO
Procedural language stack trace (PL_STACK_TRACE) = NONE
HADR SSL certificate label (HADR_SSL_LABEL) =
For non-Windows system
C:\YADAMU-QA\YDB1>docker exec -it YADAMU-01 bash
root@08c09ec59e37:/usr/src/YADAMU# uname
Linux
root@08c09ec59e37:/usr/src/YADAMU# uname -m
x86_64
root@08c09ec59e37:/usr/src/YADAMU# node -v
v20.8.0
root@08c09ec59e37:/usr/src/YADAMU# npm ls ibm_db
yadamu@1.0.0 /usr/src/YADAMU
`-- ibm_db@3.2.2
For Windows system, output of below commands from windows command prompt:
c:\Development\YADAMU\src\scratch\db2>node -v
v20.7.0
c:\Development\YADAMU\src\scratch\db2>npm ls ibm_db
yadamu@1.0.0 c:\Development\YADAMU\src
`-- ibm_db@3.2.2
c:\Development\YADAMU\src\scratch\db2>
TestCase as follows
import ibmdb from 'ibm_db'
async function main() {
const cn = "DATABASE=SAMPLE;HOSTNAME=yadamu-db2;PORT=50000;PROTOCOL=TCPIP;UID=DB2INST1;PWD=oracle;"
const conn = await ibmdb.open(cn)
let results
const SQL_XML_PARSING = "SET CURRENT IMPLICIT XMLPARSE OPTION = 'PRESERVE WHITESPACE'";
results = await conn.query(SQL_XML_PARSING)
results = await conn.query(`BEGIN DECLARE V_STATEMENT VARCHAR(300) DEFAULT 'drop table XML_TAB'; DECLARE CONTINUE HANDLER FOR SQLSTATE '42704' BEGIN END; EXECUTE IMMEDIATE V_STATEMENT; END;`)
console.log(results)
results = await conn.querySync(`create table XML_TAB(X XML )`);
console.log(results)
const data = [doc1,doc2,doc3,doc4]
let idx=0
try {
const query = {
sql: `insert into XML_TAB (X) values (?)`
, params: [{
ParamType: 'ARRAY',
DataType: 'CLOB',
Data: data,
Length : 8192
}]
, ArraySize: data.length
}
results = await conn.query(query);
console.log(results)
} catch (e) {
console.log(1,e)
}
console.log(data.length)
results = await conn.query(`select X, XMLSERIALIZE("X" AS CLOB(2048) EXCLUDING XMLDECLARATION) "XX", XMLSERIALIZE("X" AS BLOB(2048) EXCLUDING XMLDECLARATION) "YY" from XML_TAB`)
results.forEach((row,idx) => {
const str = row.YY.toString("utf-8")
console.log(idx,data[idx].length,row.X.length,row.XX.length,str.length)
console.log(idx,data[idx] === row.X, data[idx] === row.XX, row.X === row.XX )
console.log(idx,data[idx].substring(0,20),row.X.substring(0,20),row.XX.substring(0,20),str.substring(0,20))
if ((data[idx].length === row.XX.length) && (data[idx] !== row.XX)) {
for (i=0;i++;i<data[idx].length) {
if (data[idx][i] !== row.XX[i]) {
console.log('Mismatch',i,data[idx][i],row.XX[i])
}
}
}
})
}
main().then(() => { console.log('success')}).catch((e) => { console.log(e) })
const doc1 = `<Skills>熟悉所有销售环节,专业知识丰富。13 年来,为提高公司收入成绩卓著。在计划和预测销售、发展客户以及运用多种销售技巧方面具有一定经验。\n具有五年的销售管理经验,包括客户线索生成、销售人员管理以及销售区域管理。在管理由现场销售代表、产品演示人员和供应商组成的分布式销售网络过程中,能够利用各种管理风格和专业技能来进行有效管理和沟通。\n极佳的沟通和表达能力\n </Skills>`
const doc2 = `<Skills>熟悉所有销售环节,专业知识丰富。13 年来,为提高公司收入成绩卓著。在计划和预测销售、发展客户以及运用多种销售技巧方面具有一定经验。\n具有五年的销售管理经验,包括客户线索生成、销售人员管理以及销售区域管理。在管理由现场销售代表、产品演示人员和供应商组成的分布式销售网络过程中,能够利用各种管理风格和专业技能来进行有效管理和沟通。\n极佳的沟通和表达能力\n </Skills>`;
const doc3 = `<Skills>我是一名经验丰富的机械师,技术全面,不仅单独操作各种机械设备,还管理其他机械师的工作。我专攻诊断和精度检测,可以读懂设计图,能够妥善处理各方面的人际关系并具备良好的沟通能力来指导我管辖的机械师的工作. 与其他候选者相比,我拥有的机械工程学位使我对机械师行业在理论方面具有更深刻的了解,数学背景知识也更深厚.\n </Skills>`;
const doc4 = `<Skills>None worth mentioning\n </Skills>`;
Running on Windows generates
c:\Development\YADAMU\src\scratch\db2>node testXML2.js
[]
[]
[]
4
0 197 243 197 537
0 false true false
0 <Skills>熟悉所有销售环节,专业知 <?xml version="1.0" <Skills>熟悉所有销售环节,专业知 <Skills>熟悉所有
1 197 243 197 537
1 false true false
1 <Skills>熟悉所有销售环节,专业知 <?xml version="1.0" <Skills>熟悉所有销售环节,专业知 <Skills>熟悉所有
2 175 221 175 475
2 false true false
2 <Skills>我是一名经验丰富的机械师 <?xml version="1.0" <Skills>我是一名经验丰富的机械师 <Skills>我是一å
3 43 89 43 43
3 false true false
3 <Skills>None worth m <?xml version="1.0" <Skills>None worth m <Skills>None worth m
success
Running same code on Linux results in
root@08c09ec59e37:/usr/src/YADAMU# node mnt/work/testXML2.js
[]
[]
[]
4
0 197 250 206 537
0 false false false
0 <Skills>熟悉所有销售环节,专业知 <?xml version="1.0" <Skills>熟悉所有销售环节,专业知 <Skills>çæææ
1 197 250 206 537
1 false false false
1 <Skills>熟悉所有销售环节,专业知 <?xml version="1.0" <Skills>熟悉所有销售环节,专业知 <Skills>çæææ
2 175 234 190 475
2 false false false
2 <Skills>我是一名经验丰富的机械师 <?xml version="1.0" <Skills>我是一名经验丰富的机械师 <Skills>ææ¯ä¸å
3 43 87 43 43
3 false true false
3 <Skills>None worth m <?xml version="1.0" <Skills>None worth m <Skills>None worth m
success
root@08c09ec59e37:/usr/src/YADAMU#
I think there are two issues here.
- The contents of the CLOB returned by the XMLSerialize operation (Column XX) is corrupted in the Linux environment. The Length is not the same as the original data. In the Windows environment the lengths are the same.
- In both environments the Buffer containing BLOB returned by the XMLSerialize operation (Column YY) cannot be successfully converted back to a UTF-8 String
@markddrake On Linux system, cd to ibm_db\test directory and then run .\trace mnt\work\testXML2.js
. It will generate cli trace file 1.cli. Please open this file and check the data. Do it have correct data returned from db2 server? I'll try to reproduce the issue locally to find root cause. Thanks.
Here's the file.. Not sure how to interpret it..
<db2trc_header>
Marker : @TRACE@
Trace version : 7.0
Platform : Linux/X8664
Build level : special_26260
maxBufferSize : 33554432 bytes (32 MB)
auxBufferSize : 0 bytes (0 MB)
allocationCount : 0
DB2TRCD pid : 0
Trace destination : 1.trc
numSuspended : 0
Trace starting time : 2023-10-26-13.46.42.481429+000
Trace status : UNKNOWN
Trace status change time: N/A
Buffer size : 33554432 bytes (32 MB)
Allow buffer to wrap : yes
Mask : *.*.*.*.*
Timestamps : disabled
PID.TID mask : all
Fixed data mask #1 : all
Fixed data mask #2 : all
Max system errors : infinite
Treat this rc as sys err: none
sqlcodes for stoptrc : none
Search Pattern : none
clitracelevel : none
Member mask : none
Application handle mask : none
Application ID mask : none
</db2trc_header>
[ Process: 470, Thread: 140379070401600 ]
[ Date & Time: 10/26/2023 13:46:49.604317 ]
[ Product: QDB2/LINUXX8664 DB2 v11.5.8.0 ]
[ Level Identifier: 0609010F ]
[ CLI Driver Version: 10.01.0000 ]
[ Informational Tokens: "DB2 v11.5.8.0","special_26260","DYN2301190517AMD64_26260","Fixpack 0" ]
[ Install Path: /usr/src/YADAMU/node_modules/ibm_db/test/../installer/clidriver ]
[ db2cli.ini Location: db2cli.ini file not found. ( rc = 100 ) ]
[ CLI Driver Type: IBM Data Server Driver For ODBC and CLI ]
[ Hostname: 08c09ec59e37 ]
1301 SQLAllocHandle( fHandleType=SQL_HANDLE_ENV, hInput=0:0, phOutput=&0000000005807bc8 )
---> Time elapsed - 0 seconds
SQLAllocHandle( fHandleType=SQL_HANDLE_ENV, hInput=0:0, phOutput=0:1 )
1785 <--- SQL_SUCCESS Time elapsed - +0.000000E+000 seconds
1786 SQLSetEnvAttr( hEnv=0:1, fAttribute=SQL_ATTR_ODBC_VERSION, vParam=3, cbParam=-5 )
---> Time elapsed - -1.032764E+000 seconds
SQLSetEnvAttr( )
1839 <--- SQL_SUCCESS Time elapsed - -1.032764E+000 seconds
4775 SQLGetDiagRec( fHandleType=SQL_HANDLE_STMT, hHandle=1:1, iRecNumber=1, pszSqlState=&00007ffc2dee7972, pfNativeError=&00007ffc2dee796c, pszErrorMsg=&00007ffc2dee79c0, cbErrorMsgMax=1024, pcbErrorMsg=&00007ffc2dee796a )
---> Time elapsed - -8.081421E+008 seconds
( iRowNumber=-2, iColumnNumber=-2 )
SQLGetDiagRec( pszSqlState="24000", pfNativeError=-99999, pszErrorMsg="[IBM][CLI Driver] CLI0115E Invalid cursor state. SQLSTATE=24000", pcbErrorMsg=64 )
4876 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
4877 SQLGetDiagRec( fHandleType=SQL_HANDLE_STMT, hHandle=1:1, iRecNumber=2, pszSqlState=&00007ffc2dee7972, pfNativeError=&00007ffc2dee796c, pszErrorMsg=&00007ffc2dee79c0, cbErrorMsgMax=1024, pcbErrorMsg=&00007ffc2dee796a )
---> Time elapsed - -1.941103E+009 seconds
SQLGetDiagRec( )
4893 <--- SQL_NO_DATA_FOUND Time elapsed - -1.941103E+009 seconds
4894 SQLNumResultCols( hStmt=1:1, pcCol=&0000000005783120 )
---> Time elapsed - -8.081421E+008 seconds
SQLNumResultCols( pcCol=0 )
4911 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
4912 SQLMoreResults( hStmt=1:1 )
---> Time elapsed - -8.081421E+008 seconds
SQLMoreResults( )
4930 <--- SQL_NO_DATA_FOUND Time elapsed - -8.081421E+008 seconds
4931 SQLFreeHandle( fHandleType=SQL_HANDLE_STMT, hHandle=1:1 )
---> Time elapsed - -8.081421E+008 seconds
( Caching Statement Structure=1 )
SQLFreeHandle( )
4958 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
5533 SQLGetDiagRec( fHandleType=SQL_HANDLE_STMT, hHandle=1:1, iRecNumber=1, pszSqlState=&00007ffc2dee7972, pfNativeError=&00007ffc2dee796c, pszErrorMsg=&00007ffc2dee79c0, cbErrorMsgMax=1024, pcbErrorMsg=&00007ffc2dee796a )
---> Time elapsed - -1.941103E+009 seconds
( iRowNumber=-2, iColumnNumber=-2 )
SQLGetDiagRec( pszSqlState="24000", pfNativeError=-99999, pszErrorMsg="[IBM][CLI Driver] CLI0115E Invalid cursor state. SQLSTATE=24000", pcbErrorMsg=64 )
5618 <--- SQL_SUCCESS Time elapsed - -1.941103E+009 seconds
5619 SQLGetDiagRec( fHandleType=SQL_HANDLE_STMT, hHandle=1:1, iRecNumber=2, pszSqlState=&00007ffc2dee7972, pfNativeError=&00007ffc2dee796c, pszErrorMsg=&00007ffc2dee79c0, cbErrorMsgMax=1024, pcbErrorMsg=&00007ffc2dee796a )
---> Time elapsed - -1.941103E+009 seconds
SQLGetDiagRec( )
5635 <--- SQL_NO_DATA_FOUND Time elapsed - -1.941103E+009 seconds
5636 SQLNumResultCols( hStmt=1:1, pcCol=&0000000005847d00 )
---> Time elapsed - -8.081421E+008 seconds
SQLNumResultCols( pcCol=0 )
5653 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
5654 SQLMoreResults( hStmt=1:1 )
---> Time elapsed - -8.081421E+008 seconds
SQLMoreResults( )
5681 <--- SQL_NO_DATA_FOUND Time elapsed - -8.081421E+008 seconds
5682 SQLFreeHandle( fHandleType=SQL_HANDLE_STMT, hHandle=1:1 )
---> Time elapsed - -8.081421E+008 seconds
( Caching Statement Structure=1 )
SQLFreeHandle( )
5712 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
5720 SQLAllo
4424 SQLAllocHandle( fHandleType=SQL_HANDLE_STMT, hInput=0:1, phOutput=&00000000058454e0 )
---> Time elapsed - 0 seconds
SQLAllocHandle( fHandleType=SQL_HANDLE_STMT, hInput=0:1, phOutput=1:1 )
4435 <--- SQL_SUCCESS Time elapsed - +0.000000E+000 seconds
4436 SQLExecDirect( hStmt=1:1 )
---> Time elapsed - -1.014384E+000 seconds
( pszSqlStr="SET CURRENT IMPLICIT XMLPARSE OPTION = 'PRESERVE WHITESPACE'", cbSqlStr=60 )
( StmtOut="SET CURRENT IMPLICIT XMLPARSE OPTION = 'PRESERVE WHITESPACE'" )
( Package="SYSSH200 ", Section=65 )
( COMMIT REPLY RECEIVED=1 )
SQLExecDirect( )
4747 <--- SQL_SUCCESS Time elapsed - -1.014384E+000 seconds
5995 SQLAllocHandle( fHandleType=SQL_HANDLE_STMT, hInput=0:1, phOutput=&0000000005827550 )
---> Time elapsed - -1.941103E+009 seconds
SQLAllocHandle( fHandleType=SQL_HANDLE_STMT, hInput=0:1, phOutput=1:1 )
6006 <--- SQL_SUCCESS Time elapsed - -1.941103E+009 seconds
6007 SQLPrepare( hStmt=1:1 )
---> Time elapsed - -8.081421E+008 seconds
( pszSqlStr="insert into XML_TAB (X) values (?)", cbSqlStr=34 )
( StmtOut="insert into XML_TAB (X) values (?)" )
SQLPrepare( )
6042 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
6043 SQLSetStmtAttr( hStmt=1:1, fOption=SQL_ATTR_PARAM_BIND_TYPE, pvParam=<NULL pointer>, uiStrLen=0 )
---> Time elapsed - -1.941103E+009 seconds
SQLSetStmtAttr( )
6059 <--- SQL_SUCCESS Time elapsed - -1.941103E+009 seconds
6060 SQLSetStmtAttr( hStmt=1:1, fOption=SQL_ATTR_PARAMSET_SIZE, pvParam=&0000000000000004, uiStrLen=0 )
---> Time elapsed - -8.081421E+008 seconds
SQLSetStmtAttr( )
6078 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
6079 SQLBindParameter( hStmt=1:1, iPar=1, fParamType=SQL_PARAM_INPUT, fCType=SQL_C_CHAR, fSQLType=SQL_CLOB, cbColDef=8192, ibScale=0, rgbValue=&0000000005890ef0, cbValueMax=8192, pcbValue=&00000000058023f0 )
---> Time elapsed - -8.081421E+008 seconds
SQLBindParameter( )
6105 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
6106 SQLExecute( hStmt=1:1 )
---> Time elapsed - -8.081421E+008 seconds
( Package="SYSSH200 ", Section=4 )
( Row=1, iPar=1, fCType=SQL_C_CHAR, rgbValue="<Skills>熟悉所有销售环节,专业知识丰富。13 年来,为提高公司收入成绩卓著。在计划和预测销售、发展客户以及运用多种销售技巧方面具有一定经验。
具有五年的销售管理经验,包括客户线索生成、销售人员管理以及销售区域管理。在管理由现场销售代表、产品演示人员和供应商组成的分布式销售网络过程中,能够利用各种管理风格和专业技能来进行有效管理和沟通。
极佳的沟通和表达能力
</Skills>" - x'3C536B696C6C733EE7869FE68289E68980E69C89E99480E594AEE78EAFE88A82EFBC8CE4B893E4B89AE79FA5E8AF86E4B8B0E5AF8CE38082313320E5B9B4E69DA5EFBC8CE4B8BAE68F90E9AB98E585ACE58FB8E694B6E585A5E68890E7BBA9E58D93E89197E38082E59CA8E8AEA1E58892E5928CE9A284E6B58BE99480E594AEE38081E58F91E5B195E5AEA2E688B7E4BBA5E58F8AE8BF90E794A8E5A49AE7A78DE99480E594AEE68A80E5B7A7E696B9E99DA2E585B7E69C89E4B880E5AE9AE7BB8FE9AA8CE380820AE585B7E69C89E4BA94E5B9B4E79A84E99480E594AEE7AEA1E79086E7BB8FE9AA8CEFBC8CE58C85E68BACE5AEA2E688B7E7BABFE7B4A2E7949FE68890E38081E99480E594AEE4BABAE59198E7AEA1E79086E4BBA5E58F8AE99480E594AEE58CBAE59F9FE7AEA1E79086E38082E59CA8E7AEA1E79086E794B1E78EB0E59CBAE99480E594AEE4BBA3E8A1A8E38081E4BAA7E59381E6BC94E7A4BAE4BABAE59198E5928CE4BE9BE5BA94E59586E7BB84E68890E79A84E58886E5B883E5BC8FE99480E594AEE7BD91E7BB9CE8BF87E7A88BE4B8ADEFBC8CE883BDE5A49FE588A9E794A8E59084E7A78DE7AEA1E79086E9A38EE6A0BCE5928CE4B893E4B89AE68A80E883BDE69DA5E8BF9BE8A18CE69C89E69588E7AEA1E79086E5928CE6B29FE9809AE380820AE69E81E4BDB3E79A84E6B29FE9809AE5928CE8A1A8E8BEBEE883BDE58A9B0A202020203C2F536B696C6C733E', pcbValue=537 )
( Row=2, iPar=1, fCType=SQL_C_CHAR, rgbValue="<Skills>熟悉所有销售环节,专业知识丰富。13 年来,为提高公司收入成绩卓著。在计划和预测销售、发展客户以及运用多种销售技巧方面具有一定经验。
具有五年的销售磈andle( fHandleType=SQL_HANDLE_STMT, hInput=0:1, phOutput=&00007ffc2dee6978 )
---> Time elapsed - -1.941103E+009 seconds
SQLAllocHandle( fHandleType=SQL_HANDLE_STMT, hInput=0:1, phOutput=1:1 )
5731 <--- SQL_SUCCESS Time elapsed - -1.941103E+009 seconds
5732 SQLExecDirect( hStmt=1:1 )
---> Time elapsed - -8.081421E+008 seconds
( pszSqlStr="create table XML_TAB(X XML )", cbSqlStr=28 )
( StmtOut="create table XML_TAB(X XML )" )
( Package="SYSSH200 ", Section=65 )
( COMMIT REPLY RECEIVED=1 )
SQLExecDirect( )
5941 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
5942 SQLNumResultCols( hStmt=1:1, pcCol=&0000000005847070 )
---> Time elapsed - -1.941103E+009 seconds
SQLNumResultCols( pcCol=0 )
5959 <--- SQL_SUCCESS Time elapsed - -1.941103E+009 seconds
5960 SQLFreeHandle( fHandleType=SQL_HANDLE_STMT, hHandle=1:1 )
---> Time elapsed - -8.081421E+008 seconds
( Caching Statement Structure=1 )
SQLFreeHandle( )
5987 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
6718 SQLGetDiagRec( fHandleType=SQL_HANDLE_STMT, hHandle=1:1, iRecNumber=1, pszSqlState=&00007ffc2dee7972, pfNativeError=&00007ffc2dee796c, pszErrorMsg=&00007ffc2dee79c0, cbErrorMsgMax=1024, pcbErrorMsg=&00007ffc2dee796a )
---> Time elapsed - -1.941103E+009 seconds
( iRowNumber=-2, iColumnNumber=-2 )
SQLGetDiagRec( pszSqlState="24000", pfNativeError=-99999, pszErrorMsg="[IBM][CLI Driver] CLI0115E Invalid cursor state. SQLSTATE=24000", pcbErrorMsg=64 )
6803 <--- SQL_SUCCESS Time elapsed - -1.941103E+009 seconds
6804 SQLGetDiagRec( fHandleType=SQL_HANDLE_STMT, hHandle=1:1, iRecNumber=2, pszSqlState=&00007ffc2dee7972, pfNativeError=&00007ffc2dee796c, pszErrorMsg=&00007ffc2dee79c0, cbErrorMsgMax=1024, pcbErrorMsg=&00007ffc2dee796a )
---> Time elapsed - -1.941103E+009 seconds
SQLGetDiagRec( )
6820 <--- SQL_NO_DATA_FOUND Time elapsed - -1.941103E+009 seconds
6821 SQLNumResultCols( hStmt=1:1, pcCol=&0000000005807940 )
---> Time elapsed - -8.081421E+008 seconds
SQLNumResultCols( pcCol=0 )
6838 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
6839 SQLMoreResults( hStmt=1:1 )
---> Time elapsed - -8.081421E+008 seconds
SQLMoreResults( )
6857 <--- SQL_NO_DATA_FOUND Time elapsed - -8.081421E+008 seconds
6858 SQLFreeHandle( fHandleType=SQL_HANDLE_STMT, hHandle=1:1 )
---> Time elapsed - -8.081421E+008 seconds
( Caching Statement Structure=1 )
SQLFreeHandle( )
6895 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
7606 SQLNumResultCols( hStmt=1:1, pcCol=&0000000005847d00 )
---> Time elapsed - -1.941103E+009 seconds
SQLNumResultCols( pcCol=3 )
7623 <--- SQL_SUCCESS Time elapsed - -1.941103E+009 seconds
7624 SQLColAttribute( hStmt=1:1, iCol=1, fDescType=SQL_DESC_LABEL, rgbDesc=&00007ffc2dee79c0, cbDescMax=1024, pcbDesc=&00007ffc2dee79bc, pfDesc=<NULL pointer> )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( pCharAttribute="X", psCharAttributeByteLen=1 )
7685 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
7686 SQLColAttribute( hStmt=1:1, iCol=1, fDescType=SQL_DESC_DISPLAY_SIZE, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&0000000005827554 )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=0 )
7707 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
7708 SQLColAttribute( hStmt=1:1, iCol=1, fDescType=SQL_DESC_PRECISION, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&0000000005827558 )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=0 )
7729 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
7730 SQLColAttribute( hStmt=1:1, iCol=1, fDescType=SQL_DESC_SCALE, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&0000000005827556 )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=0 )
7751 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
7752 SQLColAttribute( hStmt=1:1, iCol=1, fDescType=SQL_DESC_LENGTH, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&000000000582755a )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=0 )
7773 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
7774 SQLColAttribute( hStmt=1:1, iCol=1, fDescType=SQL_DESC_CONCISE_TYPE, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&000000000582755c )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=-370 )
7795 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
7796 SQLColAttribute( hStmt=1:1, iCol=1, fDescType=SQL_DESC_TYPE_NAME, rgbDesc=&0000000005806510, cbDescMax=1024, pcbDesc=&00007ffc2dee79be, pfDesc=<NULL pointer> )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( pCharAttribute="XML", psCharAttributeByteLen=3 )
7821 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
7822 SQLColAttribute( hStmt=1:1, iCol=2, fDescType=SQL_DESC_LABEL, rgbDesc=&00007ffc2dee79c0, cbDescMax=1024, pcbDesc=&00007ffc2dee79bc, pfDesc=<NULL pointer> )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( pCharAttribute="XX", psCharAttributeByteLen=2 )
7864 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
7865 SQLColAttribute( hStmt=1:1, iCol=2, fDescType=SQL_DESC_DISPLAY_SIZE, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&000000000582757c )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=2048 )
7886 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
7887 SQLColAttribute( hStmt=1:1, iCol=2, fDescType=SQL_DESC_PRECISION, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&0000000005827580 )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=0 )
7908 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
7909 SQLColAttribute( hStmt=1:1, iCol=2, fDescType=SQL_DESC_SCALE, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&000000000582757e )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=0 )
7930 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
7931 SQLColAttribute( hStmt=1:1, iCol=2, fDescType=SQL_DESC_LENGTH, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&0000000005827582 )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=2048 )
7952 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
7953 SQLColAttribute( hStmt=1:1, iCol=2, fDescType=SQL_DESC_CONCISE_TYPE, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&0000000005827584 )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=-99 )
7974 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
7975 SQLColAttribute( hStmt=1:1, iCol=2, fDescType=SQL_DESC_TYPE_NAME, rgbDesc=&000000000573a5e0, cbDescMax=1024, pcbDesc=&00007ffc2dee79be, pfDesc=<NULL pointer> )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( pCharAttribute="CLOB", psCharAttributeByteLen=4 )
8000 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
8001 SQLColAttribute( hStmt=1:1, iCol=3, fDescType=SQL_DESC_LABEL, rgbDesc=&00007ffc2dee79c0, cbDescMax=1024, pcbDesc=&00007ffc2dee79bc, pfDesc=<NULL pointer> )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( pCharAttribute="YY", psCharAttributeByteLen=2 )
8043 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
8044 SQLColAttribute( hStmt=1:1, iCol=3, fDescType=SQL_DESC_DISPLAY_SIZE, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&00000000058275a4 )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=4096 )
8065 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
8066 SQLColAttribute( hStmt=1:1, iCol=3, fDescType=SQL_DESC_PRECISION, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&00000000058275a8 )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=0 )
8087 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
8088 SQLColAttribute( hStmt=1:1, iCol=3, fDescType=SQL_DESC_SCALE, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&00000000058275a6 )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=0 )
8109 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
8110 SQLColAttribute( hStmt=1:1, iCol=3, fDescType=SQL_DESC_LENGTH, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&00000000058275aa )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=2048 )
8131 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
8132 SQLColAttribute( hStmt=1:1, iCol=3, fDescType=SQL_DESC_CONCISE_TYPE, rgbDesc=<NULL pointer>, cbDescMax=0, pcbDesc=<NULL pointer>, pfDesc=&00000000058275ac )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( piNumericAttribute=-98 )
8153 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
8154 SQLColAttribute( hStmt=1:1, iCol=3, fDescType=SQL_DESC_TYPE_NAME, rgbDesc=&00000000057e8ba0, cbDescMax=1024, pcbDesc=&00007ffc2dee79be, pfDesc=<NULL pointer> )
---> Time elapsed - -8.081421E+008 seconds
SQLColAttribute( pCharAttribute="BLOB", psCharAttributeByteLen=4 )
8179 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
8180 SQLGetData( hStmt=1:1, iCol=1, fCType=SQL_C_CHAR, rgbValue=&0000000005867c60, cbValueMax=1023, pcbValue=&00007ffc2dee7c3c )
---> Time elapsed - -8.081421E+008 seconds
SQLGetData( rgbValue="<?xml version="1.0" encoding="ISO-8859-1" ?><Skills>熟悉所有销售环节,专业知识丰富。13 年来,为提高劬司收劥成绩卓著。在计划和预测销售、发展客户以及运用多种销售技巧方面劷有一定经验。
劷有五年的销售管理经验,匊括客户线索生成、销售人员管理以及销售区域管理。在管理由现场销售代表、产品演示人员和供应商组成的分布式销售网络过程中,能够利用各种管理风格和专业技能来进行有效管理和沟通。
极佳的沟通和表达能力
</Skills>" - x'3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D2249534F2D383835392D3122203F3E3C536B696C6C733EE7869FE68289E68980E69C89E99480E594AEE78EAFE88A82EFBC8CE4B893E4B89AE79FA5E8AF86E4B8B0E5AF8CE38082313320E5B9B4E69DA5EFBC8CE4B8BAE68F90E9AB98E50AACE58FB8E694B6E50AA5E68890E7BBA9E58D93E89197E38082E59CA8E8AEA1E58892E5928CE9A284E6B58BE99480E594AEE38081E58F91E5B195E5AEA2E688B7E4BBA5E58F8AE8BF90E794A8E5A49AE7A78DE99480E594AEE68A80E5B7A7E696B9E99DA2E50AB7E69C89E4B880E5AE9AE7BB8FE9AA8CE380820AE50AB7E69C89E4BA94E5B9B4E79A84E99480E594AEE7AEA1E79086E7BB8FE9AA8CEFBC8CE58C0AE68BACE5AEA2E688B7E7BABFE7B4A2E7949FE68890E38081E99480E594AEE4BABAE59198E7AEA1E79086E4BBA5E58F8AE99480E594AEE58CBAE59F9FE7AEA1E79086E38082E59CA8E7AEA1E79086E794B1E78EB0E59CBAE99480E594AEE4BBA3E8A1A8E38081E4BAA7E59381E6BC94E7A4BAE4BABAE59198E5928CE4BE9BE5BA94E59586E7BB84E68890E79A84E58886E5B883E5BC8FE99480E594AEE7BD91E7BB9CE8BF87E7A88BE4B8ADEFBC8CE883BDE5A49FE588A9E794A8E59084E7A78DE7AEA1E79086E9A38EE6A0BCE5928CE4B893E4B89AE68A80E883BDE69DA5E8BF9BE8A18CE69C89E69588E7AEA1E79086E5928CE6B29FE9809AE380820AE69E81E4BDB3E79A84E6B29FE9809AE5928CE8A1A8E8BEBEE883BDE58A9B0A202020203C2F536B696C6C733E', pcbValue=581 )
8279 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
8280 SQLGetData( hStmt=1:1, iCol=2, fCType=SQL_C_CHAR, rgbValue=&0000000005867c60, cbValueMax=1023, pcbValue=&00007ffc2dee7c3c )
---> Time elapsed - -8.081421E+008 seconds
SQLGetData( rgbValue="<Skills>熟悉所有销售环节,专业知识丰富。13 年来,为提高劬司收劥成绩卓著。在计划和预测销售、发展客户以及运用多种销售技巧方面劷有一定经验。
劷有五年的销售管理经验,匊括客户线索生成、销售人员管理以及销售区域管理。在管理由现场销售代表、产品演示人员和供应商组成的分布式销售网络过程中,能够利用各种管理风格和专业技能来进行有效管理和沟通。
极佳的沟通和表达能力
</Skills>" - x'3C536B696C6C733EE7869FE68289E68980E69C89E99480E594AEE78EAFE88A82EFBC8CE4B893E4B89AE79FA5E8AF86E4B8B0E5AF8CE38082313320E5B9B4E69DA5EFBC8CE4B8BAE68F90E9AB98E50AACE58FB8E694B6E50AA5E68890E7BBA9E58D93E89197E38082E59CA8E8AEA1E58892E5928CE9A284E6B58BE99480E594AEE38081E58F91E5B195E5AEA2E688B7E4BBA5E58F8AE8BF90E794A8E5A49AE7A78DE99480E594AEE68A80E5B7A7E696B9E99DA2E50AB7E69C89E4B880E5AE9AE7BB8FE9AA8CE380820AE50AB7E69C89E4BA94E5B9B4E79A84E99480E594AEE7AEA1E79086E7BB8FE9AA8CEFBC8CE58C0AE68BACE5AEA2E688B7E7BABFE7B4A2E7949FE68890E38081E99480E594AEE4BABAE59198E7AEA1E79086E4BBA5E58F8AE99480E594AEE58CBAE59F9FE7AEA1E79086E38082E59CA8E7AEA1E79086E794B1E78EB0E59CBAE99480E594AEE4BBA3E8A1A8E38081E4BAA7E59381E6BC94E7A4BAE4BABAE59198E5928CE4BE9BE5BA94E59586E7BB84E68890E79A84E58886E5B883E5BC8FE99480E594AEE7BD91E7BB9CE8BF87E7A88BE4B8ADEFBC8CE883BDE5A49FE588A9E794A8E59084E7A78DE7AEA1E79086E9A38EE6A0BCE5928CE4B893E4B89AE68A80E883BDE69DA5E8BF9BE8A18CE69C89E69588E7AEA1E79086E5928CE6B29FE9809AE380820AE69E81E4BDB3E79A84E6B29FE9809AE5928CE8A1A8E8BEBEE883BDE58A9B0A202020203C2F536B696C6C733E', pcbValue=537 )
8352 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
8353 SQLGetData( hStmt=1:1, iCol=3, fCType=SQL_C_BINARY, rgbValue=&0000000005867c60, cbValueMax=1022, pcbValue=&00007ffc2dee7c3c )
---> Time elapsed - -8.081421E+008 seconds
SQLGetData( rgbValue=x'3C536B696C6C733EC3A7C286C29FC3A6C282C289C3A6C289C280C3A6C29CC289C3A9C294C280C3A5C294C2AEC3A7C28EC2AFC3A8C28AC282C3AFC2BCC28CC3A4C2B8C293C3A4C2B8C29AC3A7C29FC2A5C3A8C2AFC286C3A4C2B8C2B0C3A5C2AFC28CC3A3C280C282313320C3A5C2B9C2B4C3A6C29DC2A5C3AFC2BCC28CC3A4C2B8C2BAC3A6C28FC290C3A9C2ABC298C3A50AC2ACC3A5C28FC2B8C3A6C294C2B6C3A50AC2A5C3A6C288C290C3A7C2BBC2A9C3A5C28DC293C3A8C291C297C3A3C280C282C3A5C29CC2A8C3A8C2AEC2A1C3A5C288C292C3A5C292C28CC3A9C2A2C284C3A6C2B5C28BC3A9C294C280C3A5C294C2AEC3A3C280C281C3A5C28FC291C3A5C2B1C295C3A5C2AEC2A2C3A6C288C2B7C3A4C2BBC2A5C3A5C28FC28AC3A8C2BFC290C3A7C294C2A8C3A5C2A4C29AC3A7C2A7C28DC3A9C294C280C3A5C294C2AEC3A6C28AC280C3A5C2B7C2A7C3A6C296C2B9C3A9C29DC2A2C3A50AC2B7C3A6C29CC289C3A4C2B8C280C3A5C2AEC29AC3A7C2BBC28FC3A9C2AAC28CC3A3C280C2820AC3A50AC2B7C3A6C29CC289C3A4C2BAC294C3A5C2B9C2B4C3A7C29AC284C3A9C294C280C3A5C294C2AEC3A7C2AEC2A1C3A7C290C286C3A7C2BBC28FC3A9C2AAC28CC3AFC2BCC28CC3A5C28C0AC3A6C28BC2ACC3A5C2AEC2A2C3A6C288C2B7C3A7C2BAC2BFC3A7C2B4C2A2C3A7C294C29FC3A6C288C290C3A3C280C281C3A9C294C280C3A5C294C2AEC3A4C2BAC2BAC3A5C291C298C3A7C2AEC2A1C3A7C290C286C3A4C2BBC2A5C3A5C28FC28AC3A9C294C280C3A5C294C2AEC3A5C28CC2BAC3A5C29FC29FC3A7C2AEC2A1C3A7C290C286C3A3C280C282C3A5C29CC2A8C3A7C2AEC2A1C3A7C290C286C3A7C294C2B1C3A7C28EC2B0C3A5C29CC2BAC3A9C294C280C3A5C294C2AEC3A4C2BBC2A3C3A8C2A1C2A8C3A3C280C281C3A4C2BAC2A7C3A5C293C281C3A6C2BCC294C3A7C2A4C2BAC3A4C2BAC2BAC3A5C291C298C3A5C292C28CC3A4C2BEC29BC3A5C2BAC294C3A5C295C286C3A7C2BBC284C3A6C288C290C3A7C29AC284C3A5C288C286C3A5C2B8C283C3A5C2BCC28FC3A9C294C280C3A5C294C2AEC3A7C2BDC291C3A7C2BBC29CC3A8C2BFC287C3A7C2A8C28BC3A4C2B8C2ADC3AFC2BCC28CC3A8C283C2BDC3A5C2A4C29FC3A5C288C2A9C3A7C294C2A8C3A5C290C284C3A7C2A7C28DC3A7C2AEC2A1C3A7C290C286C3A9C2A3C28EC3A6C2A0C2BCC3A5C292C28CC3A4C2B8C293C3A4C2B8C29AC3A6C28AC280C3A8C283C2BDC3A6C29DC2A5C3A8C2BFC29BC3A8C2A1C28CC3A6C29CC289C3A6C295C288C3A7C2AEC2A1C3A7C290C286C3A5C292C28CC3A6C2B2C29FC3A9C280C29AC3A3C280C2820AC3A6C29EC281C3A4C2BDC2B3C3A7C29AC284C3A6C2B2C29FC3A9C280C29AC3A5C292C28CC3A8C2A1C2A8C3A8C2BEC2BEC3A8C283C2BD', pcbValue=0 )
8401 <--- SQL_SUCCESS_WITH_INFO Time elapsed - -8.081421E+008 seconds
8402 SQLGetData( hStmt=1:1, iCol=3, fCType=SQL_C_BINARY, rgbValue=&0000000005826b1e, cbValueMax=20, pcbValue=&00007ffc2dee7c3c )
---> Time elapsed - -8.081421E+008 seconds
( Unretrieved error message="[IBM][CLI Driver] CLI0002W Data truncated. SQLSTATE=01004" )
SQLGetData( rgbValue=x'C3A5C28AC29B0A202020203C2F536B696C6C733E', pcbValue=20 )
8481 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
8736 SQLGetData( hStmt=1:1, iCol=1, fCType=SQL_C_CHAR, rgbValue=&0000000005867c60, cbValueMax=1023, pcbValue=&00007ffc2dee7c3c )
---> Time elapsed - -1.941103E+009 seconds
SQLGetData( rgbValue="<?xml version="1.0" encoding="ISO-8859-1" ?><Skills>熟悉所有销售环节,专业知识丰富。13 年来,为提高劬司收劥成绩卓著。在计划和预测销售、发展客户以及运用多种销售技巧方面劷有一定经验。
劷有五年的销售管理经验,匊括客户线索生成、销售人员管理以及销售区域管理。在管理由现场销售代表、产品演示人员和供应商组成的分布式销售网络过程中,能够利用各种管理风格和专业技能来进行有效管理和沟通。
极佳的沟通和表达能力
</Skills>" - x'3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D2249534F2D383835392D3122203F3E3C536B696C6C733EE7869FE68289E68980E69C89E99480E594AEE78EAFE88A82EFBC8CE4B893E4B89AE79FA5E8AF86E4B8B0E5AF8CE38082313320E5B9B4E69DA5EFBC8CE4B8BAE68F90E9AB98E50AACE58FB8E694B6E50AA5E68890E7BBA9E58D93E89197E38082E59CA8E8AEA1E58892E5928CE9A284E6B58BE99480E594AEE38081E58F91E5B195E5AEA2E688B7E4BBA5E58F8AE8BF90E794A8E5A49AE7A78DE99480E594AEE68A80E5B7A7E696B9E99DA2E50AB7E69C89E4B880E5AE9AE7BB8FE9AA8CE380820AE50AB7E69C89E4BA94E5B9B4E79A84E99480E594AEE7AEA1E79086E7BB8FE9AA8CEFBC8CE58C0AE68BACE5AEA2E688B7E7BABFE7B4A2E7949FE68890E38081E99480E594AEE4BABAE59198E7AEA1E79086E4BBA5E58F8AE99480E594AEE58CBAE59F9FE7AEA1E79086E38082E59CA8E7AEA1E79086E794B1E78EB0E59CBAE99480E594AEE4BBA3E8A1A8E38081E4BAA7E59381E6BC94E7A4BAE4BABAE59198E5928CE4BE9BE5BA94E59586E7BB84E68890E79A84E58886E5B883E5BC8FE99480E594AEE7BD91E7BB9CE8BF87E7A88BE4B8ADEFBC8CE883BDE5A49FE588A9E794A8E59084E7A78DE7AEA1E79086E9A38EE6A0BCE5928CE4B893E4B89AE68A80E883BDE69DA5E8BF9BE8A18CE69C89E69588E7AEA1E79086E5928CE6B29FE9809AE380820AE69E81E4BDB3E79A84E6B29FE9809AE5928CE8A1A8E8BEBEE883BDE58A9B0A202020203C2F536B696C6C733E', pcbValue=581 )
8775 <--- SQL_SUCCESS Time elapsed - -1.941103E+009 seconds
8776 SQLGetData( hStmt=1:1, iCol=2, fCType=SQL_C_CHAR, rgbValue=&0000000005867c60, cbValueMax=1023, pcbValue=&00007ffc2dee7c3c )
---> Time elapsed - -8.081421E+008 seconds
SQLGetData( rgbValue="<Skills>熟悉所有销售环节,专业知识丰富。13 年来,为提高劬司收劥成绩卓著。在计划和预测销售、发展客户以及运用多种销售技巧方面劷有一定经验。
劷有五年的销售管理经验,匊括客户线索生成、销售人员管理以及销售区域管理。在管理由现场销售代表、产品演示人员和供应商组成的分布式销售网络过程中,能够利用各种管理风格和专业技能来进行有效管理和沟通。
极佳的沟通和表达能力
</Skills>" - x'3C536B696C6C733EE7869FE68289E68980E69C89E99480E594AEE78EAFE88A82EFBC8CE4B893E4B89AE79FA5E8AF86E4B8B0E5AF8CE38082313320E5B9B4E69DA5EFBC8CE4B8BAE68F90E9AB98E50AACE58FB8E694B6E50AA5E68890E7BBA9E58D93E89197E38082E59CA8E8AEA1E58892E5928CE9A284E6B58BE99480E594AEE38081E58F91E5B195E5AEA2E688B7E4BBA5E58F8AE8BF90E794A8E5A49AE7A78DE99480E594AEE68A80E5B7A7E696B9E99DA2E50AB7E69C89E4B880E5AE9AE7BB8FE9AA8CE380820AE50AB7E69C89E4BA94E5B9B4E79A84E99480E594AEE7AEA1E79086E7BB8FE9AA8CEFBC8CE58C0AE68BACE5AEA2E688B7E7BABFE7B4A2E7949FE68890E38081E99480E594AEE4BABAE59198E7AEA1E79086E4BBA5E58F8AE99480E594AEE58CBAE59F9FE7AEA1E79086E38082E59CA8E7AEA1E79086E794B1E78EB0E59CBAE99480E594AEE4BBA3E8A1A8E38081E4BAA7E59381E6BC94E7A4BAE4BABAE59198E5928CE4BE9BE5BA94E59586E7BB84E68890E79A84E58886E5B883E5BC8FE99480E594AEE7BD91E7BB9CE8BF87E7A88BE4B8ADEFBC8CE883BDE5A49FE588A9E794A8E59084E7A78DE7AEA1E79086E9A38EE6A0BCE5928CE4B893E4B89AE68A80E883BDE69DA5E8BF9BE8A18CE69C89E69588E7AEA1E79086E5928CE6B29FE9809AE380820AE69E81E4BDB3E79A84E6B29FE9809AE5928CE8A1A8E8BEBEE883BDE58A9B0A202020203C2F536B696C6C733E', pcbValue=537 )
8844 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
8845 SQLGetData( hStmt=1:1, iCol=3, fCType=SQL_C_BINARY, rgbValue=&0000000005867c60, cbValueMax=1022, pcbValue=&00007ffc2dee7c3c )
---> Time elapsed - -8.081421E+008 seconds
SQLGetData( rgbValue=x'3C536B696C6C733EC3A7C286C29FC3A6C282C289C3A6C289C280C3A6C29CC289C3A9C294C280C3A5C294C2AEC3A7C28EC2AFC3A8C28AC282C3AFC2BCC28CC3A4C2B8C293C3A4C2B8C29AC3A7C29FC2A5C3A8C2AFC286C3A4C2B8C2B0C3A5C2AFC28CC3A3C280C282313320C3A5C2B9C2B4C3A6C29DC2A5C3AFC2BCC28CC3A4C2B8C2BAC3A6C28FC290C3A9C2ABC298C3A50AC2ACC3A5C28FC2B8C3A6C294C2B6C3A50AC2A5C3A6C288C290C3A7C2BBC2A9C3A5C28DC293C3A8C291C297C3A3C280C282C3A5C29CC2A8C3A8C2AEC2A1C3A5C288C292C3A5C292C28CC3A9C2A2C284C3A6C2B5C28BC3A9C294C280C3A5C294C2AEC3A3C280C281C3A5C28FC291C3A5C2B1C295C3A5C2AEC2A2C3A6C288C2B7C3A4C2BBC2A5C3A5C28FC28AC3A8C2BFC290C3A7C294C2A8C3A5C2A4C29AC3A7C2A7C28DC3A9C294C280C3A5C294C2AEC3A6C28AC280C3A5C2B7C2A7C3A6C296C2B9C3A9C29DC2A2C3A50AC2B7C3A6C29CC289C3A4C2B8C280C3A5C2AEC29AC3A7C2BBC28FC3A9C2AAC28CC3A3C280C2820AC3A50AC2B7C3A6C29CC289C3A4C2BAC294C3A5C2B9C2B4C3A7C29AC284C3A9C294C280C3A5C294C2AEC3A7C2AEC2A1C3A7C290C286C3A7C2BBC28FC3A9C2AAC28CC3AFC2BCC28CC3A5C28C0AC3A6C28BC2ACC3A5C2AEC2A2C3A6C288C2B7C3A7C2BAC2BFC3A7C2B4C2A2C3A7C294C29FC3A6C288C290C3A3C280C281C3A9C294C280C3A5C294C2AEC3A4C2BAC2BAC3A5C291C298C3A7C2AEC2A1C3A7C290C286C3A4C2BBC2A5C3A5C28FC28AC3A9C294C280C3A5C294C2AEC3A5C28CC2BAC3A5C29FC29FC3A7C2AEC2A1C3A7C290C286C3A3C280C282C3A5C29CC2A8C3A7C2AEC2A1C3A7C290C286C3A7C294C2B1C3A7C28EC2B0C3A5C29CC2BAC3A9C294C280C3A5C294C2AEC3A4C2BBC2A3C3A8C2A1C2A8C3A3C280C281C3A4C2BAC2A7C3A5C293C281C3A6C2BCC294C3A7C2A4C2BAC3A4C2BAC2BAC3A5C291C298C3A5C292C28CC3A4C2BEC29BC3A5C2BAC294C3A5C295C286C3A7C2BBC284C3A6C288C290C3A7C29AC284C3A5C288C286C3A5C2B8C283C3A5C2BCC28FC3A9C294C280C3A5C294C2AEC3A7C2BDC291C3A7C2BBC29CC3A8C2BFC287C3A7C2A8C28BC3A4C2B8C2ADC3AFC2BCC28CC3A8C283C2BDC3A5C2A4C29FC3A5C288C2A9C3A7C294C2A8C3A5C290C284C3A7C2A7C28DC3A7C2AEC2A1C3A7C290C286C3A9C2A3C28EC3A6C2A0C2BCC3A5C292C28CC3A4C2B8C293C3A4C2B8C29AC3A6C28AC280C3A8C283C2BDC3A6C29DC2A5C3A8C2BFC29BC3A8C2A1C28CC3A6C29CC289C3A6C295C288C3A7C2AEC2A1C3A7C290C286C3A5C292C28CC3A6C2B2C29FC3A9C280C29AC3A3C280C2820AC3A6C29EC281C3A4C2BDC2B3C3A7C29AC284C3A6C2B2C29FC3A9C280C29AC3A5C292C28CC3A8C2A1C2A8C3A8C2BEC2BEC3A8C283C2BD', pcbValue=0 )
8893 <--- SQL_SUCCESS_WITH_INFO Time elapsed - -8.081421E+008 seconds
8894 SQLGetData( hStmt=1:1, iCol=3, fCType=SQL_C_BINARY, rgbValue=&000000000586522e, cbValueMax=20, pcbValue=&00007ffc2dee7c3c )
---> Time elapsed - -8.081421E+008 seconds
( Unretrieved error message="[IBM][CLI Driver] CLI0002W Data truncated. SQLSTATE=01004" )
SQLGetData( rgbValue=x'C3A5C28AC29B0A202020203C2F536B696C6C733E', pcbValue=20 )
8973 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
9228 SQLGetData( hStmt=1:1, iCol=1, fCType=SQL_C_CHAR, rgbValue=&0000000005867c60, cbValueMax=1023, pcbValue=&00007ffc2dee7c3c )
---> Time elapsed - -1.941103E+009 seconds
SQLGetData( rgbValue="<?xml version="1.0" encoding="ISO-8859-1" ?><Skills>我是一名经验丰富的机械师,技术动面,不今单独操作各种机械设备,还管理劶他机械师的工作。我专攻诊断和精度检测,可以读懂设计图,能够妥善处理各方面的人陊劳系并劷备良好的沟通能力来指导我管辖的机械师的工作. 与劶他候选耊相比,我拥有的机械工程学位使我对机械师行业在理论方面劷有更深刻的了解,数学背景知识也更深厚.
</Skills>" - x'3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D2249534F2D383835392D3122203F3E3C536B696C6C733EE68891E698AFE4B880E5908DE7BB8FE9AA8CE4B8B0E5AF8CE79A84E69CBAE6A2B0E5B888EFBC8CE68A80E69CAFE50AA8E99DA2EFBC8CE4B88DE4BB0AE58D95E78BACE6938DE4BD9CE59084E7A78DE69CBAE6A2B0E8AEBEE5A487EFBC8CE8BF98E7AEA1E79086E50AB6E4BB96E69CBAE6A2B0E5B888E79A84E5B7A5E4BD9CE38082E68891E4B893E694BBE8AF8AE696ADE5928CE7B2BEE5BAA6E6A380E6B58BEFBC8CE58FAFE4BBA5E8AFBBE68782E8AEBEE8AEA1E59BBEEFBC8CE883BDE5A49FE5A6A5E59684E5A484E79086E59084E696B9E99DA2E79A84E4BABAE9990AE50AB3E7B3BBE5B9B6E50AB7E5A487E889AFE5A5BDE79A84E6B29FE9809AE883BDE58A9BE69DA5E68C87E5AFBCE68891E7AEA1E8BE96E79A84E69CBAE6A2B0E5B888E79A84E5B7A5E4BD9C2E20E4B88EE50AB6E4BB96E58099E98089E8800AE79BB8E6AF94EFBC8CE68891E68BA5E69C89E79A84E69CBAE6A2B0E5B7A5E7A88BE5ADA6E4BD8DE4BDBFE68891E5AFB9E69CBAE6A2B0E5B888E8A18CE4B89AE59CA8E79086E8AEBAE696B9E99DA2E50AB7E69C89E69BB4E6B7B1E588BBE79A84E4BA86E8A7A3EFBC8CE695B0E5ADA6E8838CE699AFE79FA5E8AF86E4B99FE69BB4E6B7B1E58E9A2E0A202020203C2F536B696C6C733E', pcbValue=519 )
9266 <--- SQL_SUCCESS Time elapsed - -1.941103E+009 seconds
9267 SQLGetData( hStmt=1:1, iCol=2, fCType=SQL_C_CHAR, rgbValue=&0000000005867c60, cbValueMax=1023, pcbValue=&00007ffc2dee7c3c )
---> Time elapsed - -8.081421E+008 seconds
SQLGetData( rgbValue="<Skills>我是一名经验丰富的机械师,技术动面,不今单独操作各种机械设备,还管理劶他机械师的工作。我专攻诊断和精度检测,可以读懂设计图,能够妥善处理各方面的人陊劳系并劷备良好的沟通能力来指导我管辖的机械师的工作. 与劶他候选耊相比,我拥有的机械工程学位使我对机械师行业在理论方面劷有更深刻的了解,数学背景知识也更深厚.
</Skills>" - x'3C536B696C6C733EE68891E698AFE4B880E5908DE7BB8FE9AA8CE4B8B0E5AF8CE79A84E69CBAE6A2B0E5B888EFBC8CE68A80E69CAFE50AA8E99DA2EFBC8CE4B88DE4BB0AE58D95E78BACE6938DE4BD9CE59084E7A78DE69CBAE6A2B0E8AEBEE5A487EFBC8CE8BF98E7AEA1E79086E50AB6E4BB96E69CBAE6A2B0E5B888E79A84E5B7A5E4BD9CE38082E68891E4B893E694BBE8AF8AE696ADE5928CE7B2BEE5BAA6E6A380E6B58BEFBC8CE58FAFE4BBA5E8AFBBE68782E8AEBEE8AEA1E59BBEEFBC8CE883BDE5A49FE5A6A5E59684E5A484E79086E59084E696B9E99DA2E79A84E4BABAE9990AE50AB3E7B3BBE5B9B6E50AB7E5A487E889AFE5A5BDE79A84E6B29FE9809AE883BDE58A9BE69DA5E68C87E5AFBCE68891E7AEA1E8BE96E79A84E69CBAE6A2B0E5B888E79A84E5B7A5E4BD9C2E20E4B88EE50AB6E4BB96E58099E98089E8800AE79BB8E6AF94EFBC8CE68891E68BA5E69C89E79A84E69CBAE6A2B0E5B7A5E7A88BE5ADA6E4BD8DE4BDBFE68891E5AFB9E69CBAE6A2B0E5B888E8A18CE4B89AE59CA8E79086E8AEBAE696B9E99DA2E50AB7E69C89E69BB4E6B7B1E588BBE79A84E4BA86E8A7A3EFBC8CE695B0E5ADA6E8838CE699AFE79FA5E8AF86E4B99FE69BB4E6B7B1E58E9A2E0A202020203C2F536B696C6C733E', pcbValue=475 )
9334 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
9335 SQLGetData( hStmt=1:1, iCol=3, fCType=SQL_C_BINARY, rgbValue=&0000000005867c60, cbValueMax=1022, pcbValue=&00007ffc2dee7c3c )
---> Time elapsed - -8.081421E+008 seconds
SQLGetData( rgbValue=x'3C536B696C6C733EC3A6C288C291C3A6C298C2AFC3A4C2B8C280C3A5C290C28DC3A7C2BBC28FC3A9C2AAC28CC3A4C2B8C2B0C3A5C2AFC28CC3A7C29AC284C3A6C29CC2BAC3A6C2A2C2B0C3A5C2B8C288C3AFC2BCC28CC3A6C28AC280C3A6C29CC2AFC3A50AC2A8C3A9C29DC2A2C3AFC2BCC28CC3A4C2B8C28DC3A4C2BB0AC3A5C28DC295C3A7C28BC2ACC3A6C293C28DC3A4C2BDC29CC3A5C290C284C3A7C2A7C28DC3A6C29CC2BAC3A6C2A2C2B0C3A8C2AEC2BEC3A5C2A4C287C3AFC2BCC28CC3A8C2BFC298C3A7C2AEC2A1C3A7C290C286C3A50AC2B6C3A4C2BBC296C3A6C29CC2BAC3A6C2A2C2B0C3A5C2B8C288C3A7C29AC284C3A5C2B7C2A5C3A4C2BDC29CC3A3C280C282C3A6C288C291C3A4C2B8C293C3A6C294C2BBC3A8C2AFC28AC3A6C296C2ADC3A5C292C28CC3A7C2B2C2BEC3A5C2BAC2A6C3A6C2A3C280C3A6C2B5C28BC3AFC2BCC28CC3A5C28FC2AFC3A4C2BBC2A5C3A8C2AFC2BBC3A6C287C282C3A8C2AEC2BEC3A8C2AEC2A1C3A5C29BC2BEC3AFC2BCC28CC3A8C283C2BDC3A5C2A4C29FC3A5C2A6C2A5C3A5C296C284C3A5C2A4C284C3A7C290C286C3A5C290C284C3A6C296C2B9C3A9C29DC2A2C3A7C29AC284C3A4C2BAC2BAC3A9C2990AC3A50AC2B3C3A7C2B3C2BBC3A5C2B9C2B6C3A50AC2B7C3A5C2A4C287C3A8C289C2AFC3A5C2A5C2BDC3A7C29AC284C3A6C2B2C29FC3A9C280C29AC3A8C283C2BDC3A5C28AC29BC3A6C29DC2A5C3A6C28CC287C3A5C2AFC2BCC3A6C288C291C3A7C2AEC2A1C3A8C2BEC296C3A7C29AC284C3A6C29CC2BAC3A6C2A2C2B0C3A5C2B8C288C3A7C29AC284C3A5C2B7C2A5C3A4C2BDC29C2E20C3A4C2B8C28EC3A50AC2B6C3A4C2BBC296C3A5C280C299C3A9C280C289C3A8C2800AC3A7C29BC2B8C3A6C2AFC294C3AFC2BCC28CC3A6C288C291C3A6C28BC2A5C3A6C29CC289C3A7C29AC284C3A6C29CC2BAC3A6C2A2C2B0C3A5C2B7C2A5C3A7C2A8C28BC3A5C2ADC2A6C3A4C2BDC28DC3A4C2BDC2BFC3A6C288C291C3A5C2AFC2B9C3A6C29CC2BAC3A6C2A2C2B0C3A5C2B8C288C3A8C2A1C28CC3A4C2B8C29AC3A5C29CC2A8C3A7C290C286C3A8C2AEC2BAC3A6C296C2B9C3A9C29DC2A2C3A50AC2B7C3A6C29CC289C3A6C29BC2B4C3A6C2B7C2B1C3A5C288C2BBC3A7C29AC284C3A4C2BAC286C3A8C2A7C2A3C3AFC2BCC28CC3A6C295C2B0C3A5C2ADC2A6C3A8C283C28CC3A6C299C2AFC3A7C29FC2A5C3A8C2AFC286C3A4C2B9C29FC3A6C29BC2B4C3A6C2B7C2B1C3A5C28EC29A2E0A202020203C2F536B696C6C733E', pcbValue=916 )
9378 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
9633 SQLGetData( hStmt=1:1, iCol=1, fCType=SQL_C_CHAR, rgbValue=&0000000005866100, cbValueMax=1023, pcbValue=&00007ffc2dee7c3c )
---
4748 SQLFetch( hStmt=1:1 )
---> Time elapsed - 0 seconds
SQLFetch( )
4774 <--- SQL_ERROR Time elapsed - +0.000000E+000 seconds
6699 SQLFetch( hStmt=1:1 )
---> Time elapsed - -8.081421E+008 seconds
SQLFetch( )
6717 <--- SQL_ERROR Time elapsed - -8.081421E+008 seconds
8974 SQLFetch( hStmt=1:1 )
---> Time elapsed - -8.081421E+008 seconds
SQLFetch( )
9227 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
®¡理经验,包括客户线索生成、销售人员管理以及销售区域管理。在管理由现场销售代表、产品演示人员和供应商组成的分布式销售网络过程中,能够利用各种管理风格和专业技能来进行有效管理和沟通。
极佳的沟通和表达能力
</Skills>" - x'3C536B696C6C733EE7869FE68289E68980E69C89E99480E594AEE78EAFE88A82EFBC8CE4B893E4B89AE79FA5E8AF86E4B8B0E5AF8CE38082313320E5B9B4E69DA5EFBC8CE4B8BAE68F90E9AB98E585ACE58FB8E694B6E585A5E68890E7BBA9E58D93E89197E38082E59CA8E8AEA1E58892E5928CE9A284E6B58BE99480E594AEE38081E58F91E5B195E5AEA2E688B7E4BBA5E58F8AE8BF90E794A8E5A49AE7A78DE99480E594AEE68A80E5B7A7E696B9E99DA2E585B7E69C89E4B880E5AE9AE7BB8FE9AA8CE380820AE585B7E69C89E4BA94E5B9B4E79A84E99480E594AEE7AEA1E79086E7BB8FE9AA8CEFBC8CE58C85E68BACE5AEA2E688B7E7BABFE7B4A2E7949FE68890E38081E99480E594AEE4BABAE59198E7AEA1E79086E4BBA5E58F8AE99480E594AEE58CBAE59F9FE7AEA1E79086E38082E59CA8E7AEA1E79086E794B1E78EB0E59CBAE99480E594AEE4BBA3E8A1A8E38081E4BAA7E59381E6BC94E7A4BAE4BABAE59198E5928CE4BE9BE5BA94E59586E7BB84E68890E79A84E58886E5B883E5BC8FE99480E594AEE7BD91E7BB9CE8BF87E7A88BE4B8ADEFBC8CE883BDE5A49FE588A9E794A8E59084E7A78DE7AEA1E79086E9A38EE6A0BCE5928CE4B893E4B89AE68A80E883BDE69DA5E8BF9BE8A18CE69C89E69588E7AEA1E79086E5928CE6B29FE9809AE380820AE69E81E4BDB3E79A84E6B29FE9809AE5928CE8A1A8E8BEBEE883BDE58A9B0A202020203C2F536B696C6C733E', pcbValue=537 )
( Row=3, iPar=1, fCType=SQL_C_CHAR, rgbValue="<Skills>我是一名经验丰富的机械师,技术全面,不仅单独操作各种机械设备,还管理其他机械师的工作。我专攻诊断和精度检测,可以读懂设计图,能够妥善处理各方面的人际关系并具备良好的沟通能力来指导我管辖的机械师的工作. 与其他候选者相比,我拥有的机械工程学位使我对机械师行业在理论方面具有更深刻的了解,数学背景知识也更深厚.
</Skills>" - x'3C536B696C6C733EE68891E698AFE4B880E5908DE7BB8FE9AA8CE4B8B0E5AF8CE79A84E69CBAE6A2B0E5B888EFBC8CE68A80E69CAFE585A8E99DA2EFBC8CE4B88DE4BB85E58D95E78BACE6938DE4BD9CE59084E7A78DE69CBAE6A2B0E8AEBEE5A487EFBC8CE8BF98E7AEA1E79086E585B6E4BB96E69CBAE6A2B0E5B888E79A84E5B7A5E4BD9CE38082E68891E4B893E694BBE8AF8AE696ADE5928CE7B2BEE5BAA6E6A380E6B58BEFBC8CE58FAFE4BBA5E8AFBBE68782E8AEBEE8AEA1E59BBEEFBC8CE883BDE5A49FE5A6A5E59684E5A484E79086E59084E696B9E99DA2E79A84E4BABAE99985E585B3E7B3BBE5B9B6E585B7E5A487E889AFE5A5BDE79A84E6B29FE9809AE883BDE58A9BE69DA5E68C87E5AFBCE68891E7AEA1E8BE96E79A84E69CBAE6A2B0E5B888E79A84E5B7A5E4BD9C2E20E4B88EE585B6E4BB96E58099E98089E88085E79BB8E6AF94EFBC8CE68891E68BA5E69C89E79A84E69CBAE6A2B0E5B7A5E7A88BE5ADA6E4BD8DE4BDBFE68891E5AFB9E69CBAE6A2B0E5B888E8A18CE4B89AE59CA8E79086E8AEBAE696B9E99DA2E585B7E69C89E69BB4E6B7B1E588BBE79A84E4BA86E8A7A3EFBC8CE695B0E5ADA6E8838CE699AFE79FA5E8AF86E4B99FE69BB4E6B7B1E58E9A2E0A202020203C2F536B696C6C733E', pcbValue=475 )
( Row=4, iPar=1, fCType=SQL_C_CHAR, rgbValue="<Skills>None worth mentioning
</Skills>" - x'3C536B696C6C733E4E6F6E6520776F727468206D656E74696F6E696E670A202020203C2F536B696C6C733E', pcbValue=43 )
( COMMIT REPLY RECEIVED=1 )
SQLExecute( )
6698 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
8482 SQLFetch( hStmt=1:1 )
---> Time elapsed - -1.941103E+009 seconds
SQLFetch( )
8735 <--- SQL_SUCCESS Time elapsed - -1.941103E+009 seconds
2027 SQLSetConnectAttr( hDbc=0:1, fOption=SQL_ATTR_LOGIN_TIMEOUT, pvParam=&000000000000001e, iStrLen=4 )
---> Time elapsed - 0 seconds
SQLSetConnectAttr( )
2052 <--- SQL_SUCCESS Time elapsed - +0.000000E+000 seconds
2053 SQLDriverConnect( hDbc=0:1, hwnd=0:0, szConnStrIn="DATABASE=SAMPLE;HOSTNAME=IBMDB2-01;PORT=50000;PROTOCOL=TCPIP;UID=DB2INST1;PWD=******;", cbConnStrIn=86, szConnStrOut=<NULL pointer>, cbConnStrOutMax=0, pcbConnStrOut=<NULL pointer>, fDriverCompletion=SQL_DRIVER_NOPROMPT )
---> Time elapsed - -1.941103E+009 seconds
( DBMS NAME="DB2/LINUXX8664", Version="11.05.0800", Fixpack="0x26090109" )
( Application Codepage=819, Database Codepage=1208, Database XML Codepage=1208, Char Send/Recv Codepage=819, Graphic Send/Recv Codepage=1200, XML Send/Recv Codepage=1208 )
SQLDriverConnect(
( UID="DB2INST1" )
( PWD="" )
( DATABASE="SAMPLE" )
( HOSTNAME="IBMDB2-01" )
( PORT="50000" )
( PROTOCOL="TCPIP" )
)
4331 <--- SQL_SUCCESS Time elapsed - -1.941103E+009 seconds
4339 SQLAllocHandle( fHandleType=SQL_HANDLE_STMT, hInput=0:1, phOutput=&00007fac657bdddc )
---> Time elapsed - -1.941103E+009 seconds
SQLAllocHandle( fHandleType=SQL_HANDLE_STMT, hInput=0:1, phOutput=1:1 )
4363 <--- SQL_SUCCESS Time elapsed - -1.941103E+009 seconds
4364 SQLGetFunctions( hDbc=0:1, fFunction=SQL_API_SQLMORERESULTS, pfExists=&0000000005805ad0 )
---> Time elapsed - -8.081421E+008 seconds
SQLGetFunctions( pfExists=1 )
4380 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
4381 SQLFreeHandle( fHandleType=SQL_HANDLE_STMT, hHandle=1:1 )
---> Time elapsed - -8.081421E+008 seconds
( Caching Statement Structure=1 )
SQLFreeHandle( )
4408 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
5511 SQLFetch( hStmt=1:1 )
---> Time elapsed - -1.941103E+009 seconds
SQLFetch( )
5532 <--- SQL_ERROR Time elapsed - -1.941103E+009 seconds
7342 SQLFetch( hStmt=1:1 )
---> Time elapsed - -8.081421E+008 seconds
SQLFetch( )
7605 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
9782 SQLFetch( hStmt=1:1 )
---> Time elapsed - -8.081421E+008 seconds
SQLFetch( )
9976 <--- SQL_NO_DATA_FOUND Time elapsed - -8.081421E+008 seconds
1862 SQLAllocHandle( fHandleType=SQL_HANDLE_DBC, hInput=0:1, phOutput=&0000000005845ce0 )
---> Time elapsed - 0 seconds
SQLAllocHandle( fHandleType=SQL_HANDLE_DBC, hInput=0:1, phOutput=0:1 )
2026 <--- SQL_SUCCESS Time elapsed - +0.000000E+000 seconds
4982 SQLAllocHandle( fHandleType=SQL_HANDLE_STMT, hInput=0:1, phOutput=&0000000005846770 )
---> Time elapsed - -1.012336E+000 seconds
SQLAllocHandle( fHandleType=SQL_HANDLE_STMT, hInput=0:1, phOutput=1:1 )
4993 <--- SQL_SUCCESS Time elapsed - -1.012336E+000 seconds
4994 SQLExecDirect( hStmt=1:1 )
---> Time elapsed - -8.081421E+008 seconds
( pszSqlStr="BEGIN DECLARE V_STATEMENT VARCHAR(300) DEFAULT 'drop table XML_TAB'; DECLARE CONTINUE HANDLER FOR SQLSTATE '42704' BEGIN END; EXECUTE IMMEDIATE V_STATEMENT; END;", cbSqlStr=163 )
( StmtOut="BEGIN DECLARE V_STATEMENT VARCHAR(300) DEFAULT 'drop table XML_TAB'; DECLARE CONTINUE HANDLER FOR SQLSTATE '42704' BEGIN END; EXECUTE IMMEDIATE V_STATEMENT; END " )
( Package="SYSSH200 ", Section=4 )
( COMMIT REPLY RECEIVED=1 )
( return=-1 )
( COMMIT REQUESTED=1 )
( COMMIT REPLY RECEIVED=1 )
SQLExecDirect( )
5510 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
6903 SQLAllocHandle( fHandleType=SQL_HANDLE_STMT, hInput=0:1, phOutput=&0000000005807ae0 )
---> Time elapsed - -1.941103E+009 seconds
SQLAllocHandle( fHandleType=SQL_HANDLE_STMT, hInput=0:1, phOutput=1:1 )
6914 <--- SQL_SUCCESS Time elapsed - -1.941103E+009 seconds
6915 SQLExecDirect( hStmt=1:1 )
---> Time elapsed - -8.081421E+008 seconds
( pszSqlStr="select X, XMLSERIALIZE("X" AS CLOB(2048) EXCLUDING XMLDECLARATION) "XX", XMLSERIALIZE("X" AS BLOB(2048) EXCLUDING XMLDECLARATION) "YY" from XML_TAB", cbSqlStr=149 )
( StmtOut="select X, XMLSERIALIZE("X" AS CLOB(2048) EXCLUDING XMLDECLARATION) "XX", XMLSERIALIZE("X" AS BLOB(2048) EXCLUDING XMLDECLARATION) "YY" from XML_TAB" )
( Package="SYSSH200 ", Section=4 )
( Requested Cursor Attributes=x'03000008' )
( Reply Cursor Attributes=x'02000808' )
( Actual Cursor Attributes=x'03000808' )
SQLExecDirect( )
7341 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
9379 SQLFetch( hStmt=1:1 )
---> Time elapsed - -1.032748E+000 seconds
SQLFetch( )
9632 <--- SQL_SUCCESS Time elapsed - -1.032748E+000 seconds
> Time elapsed - -8.081421E+008 seconds
SQLGetData( rgbValue="<?xml version="1.0" encoding="ISO-8859-1" ?><Skills>None worth mentioning
</Skills>" - x'3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D2249534F2D383835392D3122203F3E3C536B696C6C733E4E6F6E6520776F727468206D656E74696F6E696E670A202020203C2F536B696C6C733E', pcbValue=87 )
9670 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
9671 SQLGetData( hStmt=1:1, iCol=2, fCType=SQL_C_CHAR, rgbValue=&0000000005866100, cbValueMax=1023, pcbValue=&00007ffc2dee7c3c )
---> Time elapsed - -8.081421E+008 seconds
SQLGetData( rgbValue="<Skills>None worth mentioning
</Skills>" - x'3C536B696C6C733E4E6F6E6520776F727468206D656E74696F6E696E670A202020203C2F536B696C6C733E', pcbValue=43 )
9737 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
9738 SQLGetData( hStmt=1:1, iCol=3, fCType=SQL_C_BINARY, rgbValue=&0000000005866100, cbValueMax=1022, pcbValue=&00007ffc2dee7c3c )
---> Time elapsed - -8.081421E+008 seconds
SQLGetData( rgbValue=x'3C536B696C6C733E4E6F6E6520776F727468206D656E74696F6E696E670A202020203C2F536B696C6C733E', pcbValue=43 )
9781 <--- SQL_SUCCESS Time elapsed - -8.081421E+008 seconds
9977 SQLMoreResults( hStmt=1:1 )
---> Time elapsed - -8.081421E+008 seconds
( COMMIT REQUESTED=1 )
( COMMIT REPLY RECEIVED=1 )
SQLMoreResults( )
10128 <--- SQL_NO_DATA_FOUND Time elapsed - -8.081421E+008 seconds
10129 SQLFreeHandle( fHandleType=SQL_HANDLE_STMT, hHandle=1:1 )
---> Time elapsed - -1.941103E+009 seconds
( Caching Statement Structure=1 )
SQLFreeHandle( )
10167 <--- SQL_SUCCESS Time elapsed - -1.941103E+009 seconds
@markddrake Check the data printed by SQLExecute and SQLGetData APIs in this file. You can see the returned XML data by server. Do you see any issue with these data? Please let me know. Thanks.
Couldn't make sense of the trace.. Sorry..
Tried to simplify the testcase. Started off by running the following SQL
SET CURRENT IMPLICIT XMLPARSE OPTION = 'PRESERVE WHITESPACE';
--
drop table XML_TAB;
--
create table XML_TAB(I INTEGER, X XML);
--
insert into XML_TAB (I,X) values (1,'<Test>ASCII</Test>');
--
insert into XML_TAB (I,X) values (2,'<Test>Jürgen</Test>');
--
insert into XML_TAB (I,X) values (3,'<Test>熟悉所</Test>');
--
commit;
--
select I, XMLSERIALIZE(X as CLOB(32) EXCLUDING XMLDECLARATION) XML_CONTENT, LENGTH(XMLSERIALIZE(X as CLOB(32) EXCLUDING XMLDECLARATION),OCTETS) BYTES_CLOB, LENGTH(XMLSERIALIZE(X as CLOB(32) EXCLUDING XMLDECLARATION),CODEUNITS32) CHARS_CLOB from XML_TAB;
--
from a db2 command line inside the DB2 container and got the following results.
c:\Development\YADAMU\src\scratch\db2>docker exec -it -u db2inst1 IBMDB2-01 bash
[db2inst1@1b0693d46d58 /]$ db2
(c) Copyright IBM Corporation 1993,2007
Command Line Processor for DB2 Client 11.5.8.0
You can issue database manager commands and SQL statements from the command
prompt. For example:
db2 => connect to sample
db2 => bind sample.bnd
For general help, type: ?.
For command help, type: ? command, where command can be
the first few keywords of a database manager command. For example:
? CATALOG DATABASE for help on the CATALOG DATABASE command
? CATALOG for help on all of the CATALOG commands.
To exit db2 interactive mode, type QUIT at the command prompt. Outside
interactive mode, all commands must be prefixed with 'db2'.
To list the current command option settings, type LIST COMMAND OPTIONS.
For more detailed help, refer to the Online Reference Manual.
db2 => connect to SAMPLE
Database Connection Information
Database server = DB2/LINUXX8664 11.5.8.0
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
db2 => SET CURRENT IMPLICIT XMLPARSE OPTION = 'PRESERVE WHITESPACE';
DB20000I The SQL command completed successfully.
db2 => drop table XML_TAB;
DB20000I The SQL command completed successfully.
db2 => create table XML_TAB(I INTEGER, X XML);
DB20000I The SQL command completed successfully.
db2 => insert into XML_TAB (I,X) values (1,'<Test>ASCII</Test>');
DB20000I The SQL command completed successfully.
db2 => insert into XML_TAB (I,X) values (2,'<Test>Jürgen</Test>');
DB20000I The SQL command completed successfully.
db2 => insert into XML_TAB (I,X) values (3,'<Test>熟悉所</Test>');
DB20000I The SQL command completed successfully.
db2 => commit;
DB20000I The SQL command completed successfully.
db2 => select I, XMLSERIALIZE(X as CLOB(32) EXCLUDING XMLDECLARATION) XML_CONTENT, LENGTH(XMLSERIALIZE(X as CLOB(32) EXCLUDING XMLDECLARATION),OCTETS) BYTES_CLOB, LENGTH(XMLSERIALIZE(X as CLOB(32) EXCLUDING XMLDECLARATION),CODEUNITS32) CHARS_CLOB from XML_TAB;
I XML_CONTENT BYTES_CLOB CHARS_CLOB
----------- -------------------------------- ----------- -----------
1 <Test>ASCII</Test> 18 18
2 <Test>Jürgen</Test> 20 19
3 <Test>熟悉所</Test> 22 16
3 record(s) selected.
db2 =>
The output is what I would expect. The first rows uses 18 bytes to represent 18 characters since all the characters are 1 bytes UTF-8. The 2nd row uses 20 bytes to represent 19 characters due to the ü, which is a 2 byte UTF-8 Character. The third row uses 22 bytes to represent 16 characters, since the 熟, 悉 and 所 characters are all 3 bytes UTF-8 Characters. This establishes a baseline for subsequent windows and linux tests.
Next I split the original test case into two parts and simplified the datasets
import ibmdb from 'ibm_db'
async function main() {
const cn = "DATABASE=SAMPLE;HOSTNAME=yadamu-db2;PORT=50000;PROTOCOL=TCPIP;UID=DB2INST1;PWD=oracle;"
const conn = await ibmdb.open(cn)
let results
const SQL_XML_PARSING = "SET CURRENT IMPLICIT XMLPARSE OPTION = 'PRESERVE WHITESPACE'";
results = await conn.query(SQL_XML_PARSING)
results = await conn.query(`BEGIN DECLARE V_STATEMENT VARCHAR(300) DEFAULT 'drop table XML_TAB'; DECLARE CONTINUE HANDLER FOR SQLSTATE '42704' BEGIN END; EXECUTE IMMEDIATE V_STATEMENT; END;`)
console.log(results)
results = await conn.querySync(`create table XML_TAB(I INTEGER, X XML )`);
console.log(results)
const data = [doc1,doc2,doc3]
let idx=0
try {
const query = {
sql: `insert into XML_TAB (I,X) values (?,?)`
, params: [{
ParamType: 'ARRAY',
DataType: 'INTEGER',
Data: [11,12,13],
},{
ParamType: 'ARRAY',
DataType: 'CLOB',
Data: data,
Length : 8192
}]
, ArraySize: data.length
}
results = await conn.query(query);
console.log(results)
} catch (e) {
console.log(1,e)
}
}
main().then(() => { console.log('success')}).catch((e) => { console.log(e) })
const doc1 = `<Test>ASCII</Test>`;
const doc2 = `<Test>Jürgen</Test>`;
const doc3 = `<Test>熟悉所</Test>`
After running the testcase from Windows I got the following results running the last query from the db2 command line.
db2 => db2 => select I, XMLSERIALIZE(X as CLOB(32) EXCLUDING XMLDECLARATION) XML_CONTENT, LENGTH(XMLSERIALIZE(X as CLOB(32) EXCLUDING XMLDECLARATION),OCTETS) BYTES_CLOB, LENGTH(XMLSERIALIZE(X as CLOB(32) EXCLUDING XMLDECLARATION),CODEUNITS32) CHARS_CLOB from XML_TAB;
--
I XML_CONTENT BYTES_CLOB CHARS_CLOB
----------- -------------------------------- ----------- -----------
11 <Test>ASCII</Test> 18 18
12 <Test>Jürgen</Test> 22 20
SQL0433N Value "<Test>熟悉所" is too long. SQLSTATE=22001
db2 => db2 =>
db2 =>
So it appears that the windows Insert has failed. I adjusted the select command, doubling the size of the CLOB and got the following
I XML_CONTENT BYTES_CLOB CHARS_CLOB
----------- ---------------------------------------------------------------- ----------- -----------
11 <Test>ASCII</Test> 18 18
12 <Test>Jürgen</Test> 22 20
13 <Test>熟悉所</Test> 36 22
3 record(s) selected.
db2 =>
It appears that 2 and 3 bytes UTF-8 data has not been handled correctly during the insert, even from Windows.
I then ran the insertXML.js from Linux. This time the query returned
db2 => select I, XMLSERIALIZE(X as CLOB(64) EXCLUDING XMLDECLARATION) XML_CONTENT, LENGTH(XMLSERIALIZE(X as CLOB(64) EXCLUDING XMLDECLARATION),OCTETS) BYTES_CLOB, LENGTH(XMLSERIALIZE(X as CLOB(64) EXCLUDING XMLDECLARATION),CODEUNITS32) CHARS_CLOB from XML_TAB;
--
I XML_CONTENT BYTES_CLOB CHARS_CLOB
----------- ---------------------------------------------------------------- ----------- -----------
11 <Test>ASCII</Test> 18 18
12 <Test>Jürgen</Test> 22 20
13 <Test>çææ</Test> 31 22
3 record(s) selected.
db2 =>
So it appears that the data has been corrupted from Linux as well but slightly differently to windows.
Next I re-ran the sql script to ensure the table contained valid data and then ran the following code to test retrieval operations
import ibmdb from 'ibm_db'
async function main() {
const cn = "DATABASE=SAMPLE;HOSTNAME=yadamu-db2;PORT=50000;PROTOCOL=TCPIP;UID=DB2INST1;PWD=oracle;"
const conn = await ibmdb.open(cn)
let results
const SQL_XML_PARSING = "SET CURRENT IMPLICIT XMLPARSE OPTION = 'PRESERVE WHITESPACE'";
results = await conn.query(SQL_XML_PARSING)
const data = [doc1,doc2,doc3]
for (const [idx,str] of data.entries()) {
console.log(idx,str,'Bytes',Buffer.from(str).length,'Chars',str.length)
}
results = await conn.query(`select X, XMLSERIALIZE("X" AS CLOB(32) EXCLUDING XMLDECLARATION) "XX", XMLSERIALIZE("X" AS BLOB(32) EXCLUDING XMLDECLARATION) "YY" from XML_TAB`)
results.forEach((row,idx) => {
const str = row.YY.toString("utf-8")
console.log(idx,data[idx],row.X,row.XX,str)
console.log('Source: [',idx,',',data[idx].length,'] ,X :[',typeof row.X,',',row.X.length,',',Buffer.from(row.X).length,'], XX: [',typeof row.XX,',',Buffer.isBuffer(row.XX),',',row.XX.length,',',Buffer.from(row.XX).length,'], YY: [',Buffer.isBuffer(row.YY),',',row.YY.length,',',str.length,']')
console.log(idx,data[idx] === row.X, data[idx] === row.XX, row.X === row.XX )
if ((data[idx].length === row.XX.length) && (data[idx] !== row.XX)) {
for (let i=0;i++;i<data[idx].length) {
if (data[idx][i] !== row.XX[i]) {
console.log('Mismatch',i,data[idx][i],row.XX[i])
}
}
}
})
}
main().then(() => { console.log('success')}).catch((e) => { console.log(e) })
const doc1 = `<Test>ASCII</Test>`;
const doc2 = `<Test>Jürgen</Test>`;
const doc3 = `<Test>熟悉所</Test>`
On Windows this generated the following output.
0 <Test>ASCII</Test> Bytes 18 Chars 18
1 <Test>Jürgen</Test> Bytes 20 Chars 19
2 <Test>熟悉所</Test> Bytes 22 Chars 16
0 <Test>ASCII</Test> <?xml version="1.0" encoding="windows-1252" ?><Test>ASCII</Test> <Test>ASCII</Test> <Test>ASCII</Test>
Source: [ 0 , 18 ] ,X :[ string , 64 , 64 ], XX: [ string , false , 18 , 18 ], YY: [ true , 18 , 18 ]
0 false true false
1 <Test>Jürgen</Test> <?xml version="1.0" encoding="windows-1252" ?><Test>J�rgen</Test> <Test>J�rgen</Test> <Test>Jürgen</Test>
Source: [ 1 , 19 ] ,X :[ string , 65 , 67 ], XX: [ string , false , 19 , 21 ], YY: [ true , 20 , 19 ]
1 false false false
2 <Test>熟悉所</Test> <?xml version="1.0" encoding="windows-1252" ?><Test>⸮⸮⸮</Test> <Test>⸮⸮⸮</Test> <Test>熟悉所</Test>
Source: [ 2 , 16 ] ,X :[ string , 62 , 62 ], XX: [ string , false , 16 , 16 ], YY: [ true , 22 , 16 ]
2 false false false
success
So it appears the returning the XML as naked XML or XMLSerialize as CLOB is problematic, as somewhere along the line DB2 is assuming that the content should be returned with the Window-1252 encoding. Since we are running in node where all strings are UTF-8 the client should esure that XML should be encoded in UTF-8 However it appears that retuning it as BLOB, where the database and client do not negotiate character set works.
Finally I ran the fetchXML.js script from Linux and saw roughly the same results except that the encoding was ISO-8859-1.
root@08c09ec59e37:/usr/src/YADAMU/mnt/work# node fetchXML.js
0 <Test>ASCII</Test> Bytes 18 Chars 18
1 <Test>Jürgen</Test> Bytes 20 Chars 19
2 <Test>熟悉所</Test> Bytes 22 Chars 16
0 <Test>ASCII</Test> <?xml version="1.0" encoding="ISO-8859-1" ?><Test>ASCII</Test> <Test>ASCII</Test> <Test>ASCII</Test>
Source: [ 0 , 18 ] ,X :[ string , 62 , 62 ], XX: [ string , false , 18 , 18 ], YY: [ true , 18 , 18 ]
0 false true false
1 <Test>Jürgen</Test> <?xml version="1.0" encoding="ISO-8859-1" ?><Test>J�rgen</Test> <Test>J�rgen</Test> <Test>Jürgen</Test>
Source: [ 1 , 19 ] ,X :[ string , 63 , 65 ], XX: [ string , false , 19 , 21 ], YY: [ true , 20 , 19 ]
1 false false false
2 <Test>熟悉所</Test> <?xml version="1.0" encoding="ISO-8859-1" ?><Test>⸮⸮⸮</Test> <Test>⸮⸮⸮</Test> <Test>熟悉所</Test>
Source: [ 2 , 16 ] ,X :[ string , 60 , 60 ], XX: [ string , false , 16 , 16 ], YY: [ true , 22 , 16 ]
2 false false false
success
root@08c09ec59e37:/usr/src/YADAMU/mnt/work#
I suspect that the CLOB and XML retrieval may be failing because something is attempting to convert to the default character set for the client. In my opinion this makes no sense from node, since all strings are UTF-8. The node client should ensure that the connection is configured to return all strings as UTF-8.
It appears that I may be able to avoid these issues by sending my XML as BLOB and processing it using XMLParse and returning it as BLOB. Will implement and run regressions.
Looks like the workaround is to insert XML by converting the UTF-8 format string to a Buffer, using Buffer.from(), and then inserting into an XML column by passing the Buffer object as a BLOB and using XMLPARSE(DOCUMENT CAST(? AS BLOB) PRESERVE WHITESPACE) to convert to XML. When reading the XML back use XMLSERIALIZE("' || c."COLNAME" || '" AS BLOB(2G) EXCLUDING XMLDECLARATION) "' to convert the XML into a BLOB, which will return a Buffer object to Javascript. The Buffer can then be converted back to string using Buffer.from().
I still think you need to investigate whether, particularly when working with a UTF-8 database the client should be configured to accept and receive UTF-8 data. It would probably save a lot of conversion when reading and writing strings.
@markddrake Please add process.env.DB2CODEPAGE=1208;
just after importing ibm_db or at start of your application. This setting will tell client to return data in UTF-8. Thanks.
@markddrake I would like to relook into this issue. Please let me know that after adding process.env.DB2CODEPAGE=1208;
in your test program, do you see any change in behavior or not.
The data retrieved on Windows and Linux are different because default codepage on Windows and Linux are different. When we explicitly set the codepage to 1208, data should be in UTF-8 format. You do not see this change in case of BLOB data, because for binary data, no codepage conversion happens.
If you still see issue, I would suggest to minimize your test program where you insert a row of Chinese text in varchar or clob column and then select it. I would run the same test program with same text to reproduce the problem. Thanks.
Currently I have switched my code to always use BLOB and that appears to have fixed the problem. When all my regression suites have completed and I've checked every-in I can try switching back to CLOB and setting 1208 as you suggested. Just as a thought experiment, and given that my assumption, that internally all string handling in node is UTF-8, wouldn't it be more sensible to make that the default, and allow a developer to override in the case that they have some corner case where it does not make sense, particularly if the database is configured for UTF8. Of course there is a bit of a catch-22 there, you need to set codepage before connecting to the database, but setting the code page may only make sense if the database is UTF-8, which can only be determined after connecting to the database :)
@markddrake Due the catch-22 issue you explained above, we are not setting the process.env.DB2CODEPAGE=1208
in odbc.js file and suggesting users to set it in the application if required.
If database is created using 1208 code page, then no issues, but if database code page is different, then setting 1208 explicitly in ibm_db will cause issue.
Please share the test program once you get time to check it again. Thanks.