영구 저장소 테스트

영구 저장소 테스트 (Persistent Testing)

DuckDB의 테스트는 기본적으로 인메모리 모드로 실행돼요. 하지만 특정 경우에는 영구 데이터베이스를 강제로 사용하고 싶을 때가 있죠. load 명령으로 영구 데이터베이스를 시작하고, restart 명령으로 데이터베이스를 다시 불러올 수 있어요.

출처: 문서

본문

기본적으로 모든 테스트는 인메모리 모드로 실행돼요. (--force-storage가 활성화되어 있지 않다면요.) 특정 경우에는 영구 데이터베이스의 사용을 강제하고 싶을 때가 있어요. load 명령으로 영구 데이터베이스를 시작하고, restart 명령으로 데이터베이스를 다시 로드할 수 있어요.

# 디스크에서 DB 로드
load __TEST_DIR__/storage_scan.db

statement ok
CREATE TABLE test (a INTEGER);

statement ok
INSERT INTO test VALUES (11), (12), (13), (14), (15), (NULL)

# ...

restart

query I
SELECT * FROM test ORDER BY a
----
NULL
11
12
13
14
15

기본적으로 테스트는 SET wal_autocheckpoint = '0KB' 설정으로 실행된다는 점을 참고해요. 즉, 모든 구문 실행 후에 체크포인트가 트리거된답니다. WAL 테스트는 보통 이 동작을 비활성화하기 위해 다음 설정으로 실행돼요:

statement ok
PRAGMA disable_checkpoint_on_shutdown

statement ok
PRAGMA wal_autocheckpoint = '1TB'

더 알아보기 (Learn more)

DuckDB의 테스트 인프라에 대한 더 자세한 내용은 sqllogictest 문서를 참고해요.