[CBRD-23700] After executing the DROP table, LOB objects are not removed
http://jira.cubrid.org/browse/CBRD-23700
Purpose
DROP 테이블 수행 시 lob 파일이 삭제되도록 합니다.
Implementation
CREATE 테이블 시 lob 컬럼 디렉토리를 생성하고, DROP 테이블 시 lob 컬럼 디렉토리를 삭제합니다. -- lob 컬럼 디렉토리명은 attr_id와 HFID를 사용하여 테이블, 컬럼 별로 고유한 이름을 갖게 합니다.
마찬가지로 ALTER ADD/DROP 컬럼 시 lob 컬럼 디렉토리를 생성/삭제 하여 lob컬럼 삭제 시 lob 파일이 삭제되도록 합니다.
TRUNCATE 수행 시 기존 lob 디렉토리를 삭제하고, 새로운 lob 디렉토리를 생성합니다. -- 새로운 lob디렉토리를 생성할 때는 새로운 HFID를 사용합니다.
INSERT/UPDATE 수행 시 임시로 생성한 temp lob파일을 변경된 구조의 lob 디렉토리에 copy 합니다. -- 임시로 생성한 lob 디렉토리/파일은 서버 시작/종료 시 삭제하도록 구현하였습니다.
Remarks
현재 PR에서 구현한 INSERT/UPDATE는 임시 lob 디렉토리/파일을 서버 시작/종료 시 삭제하도록 구현하였습니다. 그렇다면 서버가 종료/시작 되기 전에는 두 개의 lob 파일이 lob 디렉토리 저장되어 있기 때문에, INSERT/UPDATE 시 lob 임시 파일 copy를 하지 않고 move를 수행하여 두 개의 lob 파일이 존재하지 않도록 구현할 예정입니다.(다른 PR에서 구현 예정)
/run sql medium
NIT: 중요한 건 아니고 코드 구경하는 중인데 빌드 에러는 release 모드에서 빌드하시면 로컬에서도 재현하실 수 있습니다~