From c66ebb1593e5d2d1f491551f56a58d0d34acf0ba Mon Sep 17 00:00:00 2001 From: umsangdon Date: Wed, 11 Nov 2026 13:47:31 +0900 Subject: [PATCH] docs(est-test): record index driver search --- tools/est-test/PLAN.md | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/est-test/PLAN.md b/tools/est-test/PLAN.md index 7a9526f9d..c3cf5b014 100644 --- a/tools/est-test/PLAN.md +++ b/tools/est-test/PLAN.md @@ -882,6 +882,7 @@ ative-standard.js에 표준시장단가 원천(SilJukDat)과 내역 행(EstMainD 1. 파일 구조: 설치 ESTX 24개에 든 `.idx` 468개의 오프셋 9~24는 모두 `8abe8e592364cb403d71d2e3bc64d001`이다. 이 값은 DBISAM 공식 문서의 기본 엔진 서명 `DBISAM_SIG`를 MD5 해시한 값과 일치한다. 바로 앞 `06`은 해시의 일부가 아니다. 교량 샘플에서는 비어 있는 페이지와 레코드 번호처럼 보이는 평문 바이트열도 확인되어 전체가 암호화됐다는 기존 추정은 잘못됐다. 페이지·트리 갱신 규칙은 미확인이므로 쓰기에는 사용하지 않는다: https://www.elevatesoft.com/manual?action=viewtopic&id=dbisam4&product=rscpp&topic=customizing_engine&version=XE . - 추가 조사(2026-11-11): 설치 `sample.estx`의 내역 표는 76행일 때 인덱스 첫 4바이트 값 77이지만, 빈 `CadMainDat`은 3이고 빈 `CadTitleDat`은 1이다. 이 값만 행 수에 맞추는 방식으로는 인덱스를 재생성할 근거가 없다. 공식 문서는 한 인덱스 파일이 여러 인덱스 정의와 페이지를 포함한다고 설명한다: https://www.elevatesoft.com/manual?action=viewtopic&id=dbisam4&product=rsdelphiwin32&topic=dbisam_architecture&version=11 . - 추가 조사: DBISAM은 `REPAIR TABLE ... FORCEINDEXREBUILD`를 제공한다(https://www.elevatesoft.com/manual?action=viewtopic&id=dbisam4&product=rsdelphiwin64&topic=repair_table_statement&version=XE5). 이 PC의 32·64비트 ODBC 등록 목록에서 DBISAM 드라이버를 찾지 못했다. 공식 시험판 다운로드는 로그인 후 가능하며, 원본 엔진 서명·버전과의 호환성은 확인하지 못했다. + - 추가 확인(2026-11-11): `C:\Program Files`, `C:\Program Files (x86)`, `C:\Dasansoft`에서 등록되지 않은 `dbodbc*.dll`도 찾지 못했다. 대체 오픈소스 PyDBISAM 1.2.1은 원본 표부터 필드형 오류로 열지 못하고 인덱스 쓰기도 제공하지 않는다. 따라서 해당 도구로 재생성하거나 정상 여부를 판정할 수 없다. 2. 무결성 검증 제약: `exportEstx`는 동일 행 수 및 비인덱스 필드(수치, 일반 텍스트, BLOB 데이터 등)의 수정 저장을 안전하게 지원하지만, 행 추가/삭제나 인덱스 키(`PkID`, `Code`, `Index`, `RecNo` 등)를 변경하면 `.idx`의 B-Tree 구조와 불일치가 발생함. 원본 Delphi/DBISAM 엔진 외부에서 인덱스 재생성을 구현할 수 있는 바이너리 규격이나 소스 근거가 부재함. 3. 구현 범위 및 처리: 따라서 ESTX 내 행 추가/삭제 및 인덱스 키 변경은 기존처럼 명확한 예외 메시지(`{key}: 행 추가/삭제는 인덱스 재생성이 필요합니다`, `{key}.{name}: 인덱스 키 변경은 지원하지 않습니다`)로 안전 차단하고, 신규 파일/행 증감/자유로운 편집이 필요한 작업은 JSON 저장소(`project.tables`)에서 완전 무결하게 지원·보존하도록 범위를 명확히 유지함. - [ ] 남은 완전 호환 범위: ESTX 신규 파일/행 증감·키 변경의 인덱스 재생성, WPTools 편집 저장, 기성/연차 원본 별도 업무 파일; JDL 확장 산식/기성·물가 자료와 원본 검사 DLL 인증; 원본과 같은 인쇄 도형/배치 및 기존 산식 잔여 오류. CAD만 제외한 전체 완료로 판정하지 않음.