alexanderbianchi opened a new pull request, #107:
URL: https://github.com/apache/datafusion-iceberg/pull/107

   ## Summary
   
   Allow lazy Iceberg scans to consume native `FileScanTask` streams supplied 
by an application, while keeping file reading in `iceberg-datafusion`.
   
   - Introduce `FileScanTaskSource` and the default, single-partition 
`TableScanTaskSource`.
   - Make `IcebergDataSource<T = TableScanTaskSource>` generic over task 
delivery, preserving existing provider usage and the synchronous builder.
   - Add `from_task_source()` for construction without a table/catalog and 
`with_task_source()` for replacing discovery while preserving schema, reader 
selection and fetch.
   - Keep execution-time batch-size/page-index defaults for ordinary table 
scans; accept explicitly configured readers without overriding their settings. 
Explicit-reader clones share loaded delete files.
   - Enforce partition bounds and apply per-partition fetch through 
`LimitStream`, releasing task delivery when the limit is reached. Fetch zero 
opens no task stream.
   - Add eight focused tests and correct the existing schema/stream test to 
execute partition `0` of its single-partition source.
   
   ## Scope
   
   This is a standalone, main-based change, independent of #67 and eager file 
planning. There is no worker scheduling, transport, serialization, eager 
grouping, statistics computation, runtime-override API, provider hook or SQL 
snapshot option in this PR. Statistics remain unknown. The task-source 
interface does not promise bounded buffering or strict backpressure.
   
   ## Validation
   
   Validated with the repository-pinned Rust **1.98.1**, without 
dependency-version or lockfile changes:
   
   - **29 focused tests passed:**
     - 8 new `file_task_source` tests;
     - 16 existing tests across `batch_size`, `page_index`, `limit_pushdown`, 
`projection_pushdown` and `filter_pushdown`;
     - 5 selected scan integration tests: `test_provider_plan_stream_schema`, 
`test_table_projection`, `test_table_predict_pushdown`, 
`test_plan_nodes_are_inspectable` and 
`test_scan_after_schema_evolution_reads_provider_columns`.
   - Scoped Clippy passed with `-D warnings` for the library and both changed 
integration-test targets.
   - Pinned rustfmt and whitespace checks passed.
   - A negative check disabled reader fetch enforcement: only 
`reaching_fetch_stops_before_requesting_another_task` was run and failed on 
continued task consumption as intended. The implementation was restored 
byte-for-byte and all 29 focused tests were rerun successfully.
   
   The full workspace/SQL-logic suites and benchmarks were not run. Local 
builds used debug-info level 1.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to