728x90
인포믹스 12.10.FC14버전에서 발견된 defect를 공유드립니다.
경우에 따라서는 심각한 문제가 될 것 같은데요. LPAD와 RPAD 함수 사용시 발생하는 문제입니다.
오류가 발생하는 조건은 아래와 같습니다.
1) multi-byte character set으로 구성된 데이터베이스 (en_us.utf8, ko_kr.ksc, ko_kr.949등)
2) source string이 varchar 또는 lvarchar 타입일 경우
3) source string이 empty string('')인 경우
상당히 오류가 발생할 가능성이 높은 조건입니다. 아래는 오류를 재현한 과정입니다.
/work2/INFORMIX/1210FC14]export DB_LOCALE=en_us.utf8
/work2/INFORMIX/1210FC14]export CLIENT_LOCALE=en_us.utf8
/work2/INFORMIX/1210FC14]echo "create database tdb with log" | dbaccess -
Database created.
Database closed.
/work2/INFORMIX/1210FC14]dbaccess tdb -
Database selected.
> select lpad ( '', 2, '0' ) from sysmaster:sysdual;
202: An illegal character has been found in the statement.
Error in line 1
Near character position 48
> select rpad ( '', 2, '0' ) from sysmaster:sysdual;
202: An illegal character has been found in the statement.
Error in line 1
Near character position 48
>
IBM Community에 문의한 결과 이번 문제는 APAR IT32236 LPAD() and RPAD() on empty string getting -202 when used in multi-byte character set database로 확정되었습니다.
12.10.xC14 Fix Pack이 공개된지 얼마되지 않았는데 안타깝네요.
기존에는 문제없이 작동하는 기능이었기 때문에 패치적용시 우선적으로 고려해야 할 사항입니다.
추가로 확인된 바로는 12.10.xC15에서 수정될 예정입니다. 2020년 2분기에 공개될 예정입니다.
728x90
'Informix > informix reference' 카테고리의 다른 글
인포믹스의 통합 백업 암호화 기능 (0) | 2020.03.31 |
---|---|
rlwrap으로 dbaccess 편하게 사용하기 (0) | 2020.03.27 |
OLAP함수로 가장 자주 나타나는 문자열 검색 (0) | 2020.03.19 |
USE_FALLOCATE 설정으로 Chunk 빠르게 만들기 (0) | 2020.03.10 |
프로시저의 PDQ 값 확인하기 (0) | 2020.02.27 |