[codex] Add Java 0.1.6 compatibility features - #469
Merged
Conversation
There was a problem hiding this comment.
APPROVE
이 PR은 Java 0.1.6 호환성 기능 번들로, 명령 처리, TTL 런타임, R3 패리티 수정을 포함합니다.
구현 품질
새로운 명령 핸들러 (Partial)
ListCollectionsCommandHandler:filter,nameOnly,authorizedCollections,cursor.batchSize옵션을 지원하고 커서 형태의 메타데이터를 반환합니다.filter는 점 표기법 경로를 지원합니다.DropCommandHandler:nIndexesWas,ns를 반환하고 존재하지 않는 컬렉션에서는NamespaceNotFound(code=26)를 반환합니다.DropDatabaseCommandHandler: 데이터베이스 스코프 정리를 수행하고dropped를 반환합니다.
UTF runCommand 임포터가 listCollections, distinct, drop, dropDatabase를 지원하도록 확장되었습니다.
Tier-0 TTL 런타임 프루닝
InMemoryCollectionStore가 모든 작업 전에 pruneExpiredDocuments()를 호출하여 지연 정리를 수행합니다:
- 단일 필드 비-부분 TTL 인덱스만 지원 (
partialFilterExpression == null && key.size() == 1) Date와Instant값만 지원- 주입 가능한
Clock으로 테스트 가능성 확보 InMemoryCollectionStoreTtlTest가 만료 경계, 미지원 값/인덱스, 고유 제약조건 검증, 엔진 스냅샷을 커버합니다.
R3 패리티 수정
- 달러 접두사
_id하위 필드 (InsertCommandHandler):_id문서 내$-접두사 키에 대해DollarPrefixedFieldName(code=52) 오류를 반환합니다. - 대체 스타일
updateMany(UpdateCommandHandler):BadValue대신FailedToParse(code=9)를 사용합니다. - 트랜잭션 내
createIndexes(TransactionCommandValidator):createindexes가 트랜잭션 명령 집합에 추가되어 트랜잭션 흐름에서 인덱스 생성을 허용합니다.
새로운 DeterministicR3ParityFixTest가 세 가지 수정을 검증합니다.
문서 업데이트
README.md: 명령 핸들러 22→25, Partial 6→7, 인증 증거를 "historical"로 마크COMPATIBILITY.md:listCollections,drop,dropDatabase가 Partial로 추가됨;$merge가 Partial로 변경됨SUPPORT_MATRIX.md:index.ttl-runtime-tier0(Partial) 추가됨COMPATIBILITY_SCORECARD.md: RC 재생성 필요를 명시RELEASE_CHECKLIST.md: 다음 태그 후보로v0.1.6명시
모든 문서가 구현 상태와 일치합니다.
비차단 관찰
- 새로운
listCollections,drop,dropDatabase명령은TRANSACTIONAL_COMMANDS집합에 없으므로 트랜잭션 내에서는 지원되지 않습니다. 이는 문서화된 단일 프로세스 트랜잭션 범위와 일치합니다. CommandLifecycleCommandE2ETest가 새로운 라이프사이클 명령의 기본 E2E 동작을 커버합니다.- 버전 번호가
0.1.3-SNAPSHOT에서0.1.6-SNAPSHOT으로 증가했습니다. CHANGELOG가## [Unreleased]아래에 새로운 항목들을 올바르게 추가했습니다.
결론
블로킹 이슈가 없습니다. 이 PR은 명시된 호환성 목표를 충족하고 문서를 올바르게 업데이트합니다.
Reviewed by Z.ai GLM via Claude Code Action
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
listCollections,drop, anddropDatabasecommand handlers for metadata discovery and fixture cleanup flows.runCommandimport support forlistCollections,distinct,drop, anddropDatabase.expireAfterSecondsindexes._idsubfields, replacement-styleupdateMany, and transactionalcreateIndexes.0.1.6-SNAPSHOTand refresh compatibility/release docs.Linked Issues
Validation
.tooling/gradle-8.10.2/bin/gradle test --tests org.jongodb.command.CommandLifecycleCommandE2ETest --tests org.jongodb.testkit.UnifiedSpecImporterTest --tests org.jongodb.command.DeterministicR3ParityFixTest --tests org.jongodb.engine.InMemoryCollectionStoreTtlTest.tooling/gradle-8.10.2/bin/gradle clean testgit diff --check25593716740; all four success probes now match._iddollar bundle; success probe now matches. The updateMany replay reaches code9; the stored historical replay probe still has an exact error string without the localcodeName=FailedToParsesuffix, while the differential harness compares the error code semantically.Release Notes
This is intended as the Java
0.1.6compatibility feature bundle. Release-candidate certification workflows still need to be regenerated on the final RC commit before tagging.