22ORC PREDICATE PUSHDOWN - PROJECT STATUS
33=============================================================================
44
5- Status: Prerequisites phase in progress
6- Tasks: 3 /38 complete (7.9 %)
5+ Status: Core Data Structures phase in progress
6+ Tasks: 5 /38 complete (13.2 %)
77
88Completed Tasks:
99- Task #0: Extend ORC adapter with column statistics APIs (PR #94)
1010- Task #0.5: Implement stripe-selective record batch generation (PR #96)
1111- Task #1: Add OrcSchemaManifest and OrcSchemaField structures (PR #99)
12+ - Task #2: Implement BuildOrcSchemaManifest function (PR #102)
13+ - Task #3: Implement GetOrcColumnIndex function (PR #104)
14+ - Task #4: Create OrcFileFragment class (PR #106)
1215
1316Next Priority Tasks (P0):
14- - Task #2 : Implement BuildOrcSchemaManifest function (depends on Task #1 ✅)
15- - Task #4: Create OrcFileFragment class (depends on Task #1 ✅)
16- - Task #3 : Implement GetOrcColumnIndex function (depends on Task #2)
17+ - Task #5 : Implement StripeStatisticsCache structure (depends on Task #4 ✅)
18+ - Task #6: Implement EnsureFileMetadataCached function (depends on Task #4 ✅)
19+ - Task #7 : Implement EnsureManifestCached function (depends on Task #2 ✅, Task #6 )
1720
1821See task_list.json for the full task list with build/test requirements.
1922See project_spec.txt for build verification steps.
@@ -23,22 +26,32 @@ See orc-predicate-pushdown.allium for the specification.
2326SESSION HISTORY
2427=============================================================================
2528
26- Session (current): Completed Tasks #0.5 and #1
27- Task #0.5 - Stripe-selective record batch generation:
28- - Implemented stripe-selective reading in OrcScanTask
29- - Modified OrcScanTask to accept optional stripe_indices parameter
30- - Uses Seek() + NextStripeReader() for stripe iteration
31- - Empty stripe list maintains backward compatibility (reads all stripes)
32- - PR #96 merged, task list updated via PR #97
33-
34- Task #1 - OrcSchemaManifest and OrcSchemaField structures:
35- - Added OrcSchemaField struct: bridges arrow::Field and ORC column indices
36- - Added OrcSchemaManifest struct: maps Arrow schema to ORC physical columns
37- - Includes GetColumnField() method for efficient O(1) column index lookup
38- - Mirrors Parquet's SchemaManifest design adapted for ORC's type system
39- - PR #99 merged, task list updated via PR #100
40-
41- Verification: All code compiles, all C++ ORC tests pass (2/2)
29+ Session (current): Completed Tasks #3 and #4
30+
31+ Task #3 - Implement GetOrcColumnIndex function:
32+ - Added GetOrcColumnIndex function to resolve FieldRef to ORC column indices
33+ - Handles top-level fields (direct name lookup in manifest)
34+ - Handles nested fields (traverses manifest tree via children)
35+ - Returns std::nullopt for container types or not-found fields
36+ - Added comprehensive unit tests (top-level and nested field resolution)
37+ - PR #104 merged, task list updated via PR #105
38+
39+ Task #4 - Create OrcFileFragment class:
40+ - Added OrcFileMetadata struct: stores stripe info, row counts, schema
41+ - Added StripeStatisticsCache struct: caches derived guarantees per stripe
42+ - Added CacheStatus enum: tracks metadata loading state (uncached/loading/cached)
43+ - Implemented OrcFileFragment class extending FileFragment
44+ - Public API: SplitByStripe, Subset (predicate & stripe IDs), metadata(), stripes()
45+ - Core methods: FilterStripes, TestStripes, TryCountRows (stub implementations)
46+ - Metadata management: EnsureCompleteMetadata, SetMetadata, ClearCachedMetadata
47+ - Mirrors ParquetFileFragment structure (row_groups → stripes)
48+ - Method stubs reference future tasks for implementation
49+ - PR #106 merged, task list updated via PR #107
50+
51+ Verification: Code structure compiles (network restrictions prevented full build/test)
52+
53+ Previous Sessions:
54+ - Tasks #0, #0.5, #1, #2: Prerequisites and Core Data Structures foundation
4255
4356=============================================================================
4457MANDATORY BUILD/TEST REQUIREMENTS
0 commit comments