feat: ColumnPageStream trait — single contract for streaming + legacy inputs (#6406)
Extracts a `pub trait ColumnPageStream` from PR-4's concrete reader so PR-5 (legacy adapter) and PR-6 (streaming merge engine) can land in parallel against a stable contract instead of one rewriting the other. Trait shape: fn metadata(&self) -> &Arc<ParquetMetaData> async fn next_page(&mut self) -> Result<Option<Page>, ParquetReadError> Same invariants PR-4 already guarantees: row-group-major / column-major-within-RG / page-major-within-column yield order, idempotent EOF, and I/O failures surface as ParquetReadError::Io rather than being masked as decode errors. Implements the trait for `StreamingParquetReader`. Promotes visibility of `Page`, `ParquetReadError`, `RemoteByteSource`, `StreamingParquetReader`, and `StreamingReaderConfig` from `pub(crate)` to `pub` so downstream crates and PR-5/PR-6 can consume them. Adds `test_streaming_reader_satisfies_column_page_stream_trait`: drains the same fixture through both the concrete-typed and trait-object surfaces, asserts identical (rg_idx, col_idx, page_idx_in_col, compressed_page_size) sequences and idempotent EOF through the trait. Pure refactor — no behavior change. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
G
George Talbot committed
8ff1095fa54d237b6efd3e5e3257a2c60b27d39e
Parent: e36ef6f