티스토리 뷰

반응형

안녕하세요. 오늘은 IBM의 커뮤니티 사이트인 Hybrid Data Management Community에서 Informix Bug 관련 내용을 공유하고자 합니다. 해당 내용은 Art Kagel 씨가 올린 글을 보고 알게 되었습니다.

 

Informix 14.10 버전부터 PROCEDURE / FUNCTION 을 컴파일 할때 CREATE OR REPLACE 라는 키워드 옵션이 제공됩니다. 개발과 관리적으로 편리한 기능이라고 볼 수 있겠는데요. 데이터베이스에 컴파일된 프로시저가 없으면 새로 컴파일된 프로시저 또는 함수가 생성되고, 기존에 존재하는 코드가 있다면 새로 작성한 코드로 교체되는 기능입니다.

 

편리한 기능이지만 경우에 따라서는 위험한 기능일 수도 있습니다.

기존의 프로그램이 변경되어 버리기 때문이죠.

 

서론이 길었습니다.

설명드릴 내용은 Informix 14.10.xC1 버전에서 CREATE OR REPLACE 문장으로 프로시저가 재컴파일 되는 경우에 발생하는 문제입니다.

교체한 후에는 프로시저의 DDL 문장을 확인할 수 없습니다.

 

$ dbaccess stores_demo -

Database selected.

> create procedure myproc ()    <-- 최초 프로시저 작성
> define a int;
> end procedure;

Routine created.

> create or replace procedure myproc ()    <-- CREATE OR REPLACE 문장으로 기존 프로시저 교체
> define b int;
> end procedure;

Routine created.


$ dbschema -d stores_demo -f myproc    <-- 프로시저 DDL 문 조회

DBSCHEMA Schema Utility INFORMIX-SQL Version 14.10.FC1


**
Illegal SPL Routine Entry.                       <-- 프로시저 DDL 문장 출력 오류 발생

Routine Name: myproc, Owner: informix
Buffer Detail:

 

 

9월 16일에 공개된 Informix Fix Pack 14.10.xC2에서 해당 defect IT29028가 수정되었습니다.

역시 업그레이드된 첫 메이저 버전은 위험하네요.

 

https://community.ibm.com/community/user/hybriddatamanagement/communities/community-home/digestviewer/viewthread?GroupId=4147&MessageKey=fcb2b3e4-ef22-4ab0-bbb6-d9b1e7870c3a&CommunityKey=cf5a1f39-c21f-4bc4-9ec2-7ca108f0a365&tab=digestviewer&ReturnUrl=%2fcommunity%2fuser%2fhybriddatamanagement%2fcommunities%2fcommunity-home%2fdigestviewer%3fcommunitykey%3dcf5a1f39-c21f-4bc4-9ec2-7ca108f0a365%26tab%3ddigestviewer

반응형
댓글