컴퓨터활용/유닉스

Lock option has no effect for the map

멜번초이 2017. 7. 19. 21:37

프로프레임에서 사용하는 DBIO의 경우 select 하거나 fetch 할 때 pdb_lock 옵션을 이용할 수 있다. DBIO 스튜디오에서 Lock Query 생성을 체크하고 소스생성, 컴파일 할 때 생성된 SQL을 보면 WAIT 옵션이 뒤에 붙어 있는 것을 볼 수 있다.

dbio 내부에서 sql을 실행하기 전에 input 의 pdb_lock 변수에 PDB_LOCK 값이 세트되어 온 경우에 SQL에 WAIT 절이 있는 지 체크하게 되고 SQL 에 WAIT 절이 없는데 LOCK option을 사용하겠다고 했을 때 "Lock option has no effect for the map" 메시지가 나오게 된다. 

하지만 개발자가 dbio_in.pdb_lock = PDB_LOCK; 와 같이 코딩한 적도 없는데도 DBIO가 Lock option has no effect for the map 메시지를 리턴받는 경우가 있다. 왜 그럴까?

dbio input 변수를 선언한 뒤에 초기화를 하지 않은 경우에 pdb_lock 변수에 가비지 값이 세트되어서 DBIO 내부 로직 수행중에 Lock SQL 인 지 여부를 체크하게 되는 것이다.

이러한 체크 로직은 dbio map의 proc 소스 속에 자동 생성되어져 있으니 살펴볼 수 있다.