cubrid icon indicating copy to clipboard operation
cubrid copied to clipboard

[CBRD-23700] After executing the DROP table, LOB objects are not removed

Open InChiJun opened this issue 3 months ago • 2 comments

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에서 구현 예정)

InChiJun avatar Sep 25 '25 11:09 InChiJun

/run sql medium

vimkim avatar Sep 29 '25 11:09 vimkim

NIT: 중요한 건 아니고 코드 구경하는 중인데 빌드 에러는 release 모드에서 빌드하시면 로컬에서도 재현하실 수 있습니다~

vimkim avatar Sep 29 '25 12:09 vimkim