andygrove commented on code in PR #55:
URL: https://github.com/apache/datafusion-iceberg/pull/55#discussion_r4297529271


##########
AGENTS.md:
##########
@@ -73,6 +73,8 @@ Tests are self-contained (in-memory catalogs, temp dirs, 
checked-in metadata JSO
 
 `IcebergTableScan` converts the projection to column names and the filters to 
a single Iceberg `Predicate` (`physical_plan/expr_to_predicate.rs`). It applies 
`limit` in-stream, has one output partition, and delegates the actual read to 
iceberg's `TableScan::to_arrow()`.
 
+With the session option `iceberg.planning.preserve_data_ordering` 
(`config.rs`; off by default), `TableProvider::scan` lists the data files up 
front. If there are at most `iceberg.planning.max_merge_files` of them and all 
record the same resolvable sort order, `IcebergDataSource` reports that order's 
leading fields as its output ordering and k-way merges one reader per file in 
`open()`. Only identity transforms of projected top-level columns are reported, 
stopping at the first float, double, or UUID field, because Arrow orders -0.0 
and NaN differently from Spark-written files. Otherwise the source is built 
exactly as without the option. A source rebuilt with 
`IcebergDataSource::builder` must be given what `sorted_tasks()` returns 
through `with_sorted_tasks`, or it will read the files unordered under a plan 
that relies on their order. The order is also not reported unless the 
provider's declared schema matches the snapshot schema the files are read with, 
since DataFusion ignores the 
 null order of a column declared non-nullable.

Review Comment:
   This still refers to `with_sorted_tasks`, which is gone:
   
   ```suggestion
   With the session option `iceberg.planning.preserve_data_ordering` 
(`config.rs`; off by default), `TableProvider::scan` lists the data files up 
front. If there are at most `iceberg.planning.max_merge_files` of them and all 
record the same resolvable sort order, `IcebergDataSource` reports that order's 
leading fields as its output ordering and k-way merges one reader per file in 
`open()`. Only identity transforms of projected top-level columns are reported, 
stopping at the first float, double, or UUID field, because Arrow orders -0.0 
and NaN differently from Spark-written files. Otherwise the source is built 
exactly as without the option. A source rebuilt with 
`IcebergDataSource::builder` must be passed what `sorted_tasks()` returns as 
its `sorted_tasks` argument, or it will read the files unordered under a plan 
that relies on their order. The order is also not reported unless the 
provider's declared schema matches the snapshot schema the files are read with, 
since DataFusion ignore
 s the null order of a column declared non-nullable.
   ```



-- 
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