Hi,
I get SQL0873N when queries UDFs and issuing db2exfmt when a database is configured as follows (SAP Non-Unicode database for JavaStack):
db2set
DB2_CDE_WITHOUT_SYNOPSIS=%:/%/D% [DB2_WORKLOAD]
DB2_TRANSCHEMA_EXCLUDE_STATS=TRUE [DB2_WORKLOAD]
DB2_USE_FAST_LOG_PREALLOCATION=TRUE [DB2_WORKLOAD]
DB2_CDE_STMTCACHING=YES [DB2_WORKLOAD]
DB2_INDEX_PCTFREE_DEFAULT=0 [DB2_WORKLOAD]
DB2_SKIP_VIEWRECREATE_SAP=TRUE [DB2_WORKLOAD]
DB2_RESTORE_GRANT_ADMIN_AUTHORITIES=YES [DB2_WORKLOAD]
DB2_BLOCKING_WITHHOLD_LOBLOCATOR=NO [DB2_WORKLOAD]
DB2_AGENT_CACHING_FMP=OFF [DB2_WORKLOAD]
DB2_TRUST_MDC_BLOCK_FULL_HINT=YES [DB2_WORKLOAD]
DB2_CREATE_INDEX_COLLECT_STATS=YES [DB2_WORKLOAD]
DB2_ATS_ENABLE=YES [DB2_WORKLOAD]
DB2_RESTRICT_DDF=YES [DB2_WORKLOAD]
DB2_DUMP_SECTION_ENV=YES [DB2_WORKLOAD]
DB2_COMPATIBILITY_VECTOR=4000 [DB2_WORKLOAD]
DB2_OPT_MAX_TEMP_SIZE=10240 [DB2_WORKLOAD]
DB2_WORKLOAD=SAP
DB2_TRUNCATE_REUSESTORAGE=IMPORT [DB2_WORKLOAD]
DB2_MDC_ROLLOUT=DEFER [DB2_WORKLOAD]
DB2_ATM_CMD_LINE_ARGS=-include-manual-tables [DB2_WORKLOAD]
DB2_SKIPINSERTED=YES [DB2_WORKLOAD]
DB2_VIEW_REOPT_VALUES=YES [DB2_WORKLOAD]
DB2_OBJECT_TABLE_ENTRIES=65532 [DB2_WORKLOAD]
DB2_OPTPROFILE=YES [DB2_WORKLOAD]
DB2_IMPLICIT_UNICODE=YES [DB2_WORKLOAD]
DB2_BCKP_INCLUDE_LOGS_WARNING=YES [DB2_WORKLOAD]
DB2_RUNTIME_DEBUG_FLAGS=TOLERANT_FLOAT,DISABLE_BLANK_TOLERANCE [DB2_WORKLOAD]
DB2STMM=APPLY_HEURISTICS:YES,GLOBAL_BENEFIT_SEGMENT_UNIQUE:YES [DB2_WORKLOAD]
DB2_INLIST_TO_NLJN=YES [DB2_WORKLOAD]
DB2_MINIMIZE_LISTPREFETCH=YES [DB2_WORKLOAD]
DB2_REDUCED_OPTIMIZATION=4,INDEX,JOIN,NO_TQ_FACT,NO_HSJN_BUILD_FACT,STARJN_CARD_SKEW,NO_SORT_MGJOIN,REDUCE_LOCKING,CART OFF,CAP OFF [DB2_WORKLOAD]
DB2NOTIFYVERBOSE=YES [DB2_WORKLOAD]
DB2_INTERESTING_KEYS=YES [DB2_WORKLOAD]
DB2_EVALUNCOMMITTED=YES [DB2_WORKLOAD]
DB2_EXTENDED_OPTIMIZATION=NLJOIN_KEYCARD,GY_DELAY_EXPAND 1000 [DB2_WORKLOAD]
DB2_ANTIJOIN=EXTEND [DB2_WORKLOAD]
DB2COMPOPT=OJSJ,VOLATILETSF,WORKLOADSAP [DB2_WORKLOAD]
DB2COMM=TCPIP [O]
DB2AUTOSTART=NO
Database Configuration Settings:
Description Memory Value Disk Value
DB configuration release level 0x1400 0x1400
Database release level 0x1400 0x1400
Database territory de de
Database code page 819 819
Database code set ISO8859-1 ISO8859-1
Database country/region code 49 49
Database collating sequence IDENTITY IDENTITY
ALT_COLLATE IDENTITY_16BIT IDENTITY_16BIT
SQL:
select FS_TOTAL_SIZE, FS_USED_SIZE, (FS_USED_SIZE*100/FS_TOTAL_SIZE), DB_STORAGE_PATH, DBPARTITIONNUM FROM TABLE(ADMIN_GET_STORAGE_PATHS('',-1)) ;
SQL0873N Objects encoded with different encoding schemes cannot be referenced
in the same SQL statement. SQLSTATE=53090
Workaround SQL:
with unicode_fix(x) as (select null from sysibm.sysdummy1)
select FS_TOTAL_SIZE, FS_USED_SIZE, (FS_USED_SIZE*100/FS_TOTAL_SIZE), DB_STORAGE_PATH, DBPARTITIONNUM FROM TABLE(ADMIN_GET_STORAGE_PATHS('',-1))
The SQL0873N also occurs when I want to explain with db2exfmt
Explain:
db2exfmt -1 -d ISO
Access Plan:
-----------
Total Cost: 2.26725e-05
Query Degree: 1
Error during Prepare, near line 21789.
Error Message =
SQL0873N Objects encoded with different encoding schemes cannot be
referenced in the same SQL statement. SQLSTATE=53090
SQLCA
Size = 136
SQLCODE = -873
Tokens =
Function= SQLNQ7B6
RC = 0x801A006D = -2145779603
Reason = 0x0000 = 0
Reason2 = 0x0000 = 0
Line # = -100
Warning flags =
Executing Connect Reset -- Connect Reset was Successful.
This is a bug in my eyes and the SQL with the CTE is only a workaround and should be solved.
Best regards,
Gerhard