Repository navigation
Conversation
Stage A, remote Parquet as a native source: - Planning reads remote footers from the session's DataFusion file metadata cache through the planning invocation; multi-object and byte-range s3:// scans lower natively, files may differ only in nullability that the table schema widens, and a missing footer is rejected with native_source_remote_footer_unavailable. - Source rejections carry a `source` blocking subject, so native_required errors name the reason; rejected remote scans report their real read strategy and credential mode. - The chunk planning mode is renamed parquet_throughput and also widens chunks of remote-direct files with footer byte metadata. - The Flight SQL server reads s3:// through a restored [s3] table, and the s3-parquet-e2e tool returns with multi-object and byte-range cases. Stage B, read-only Iceberg: - New unpublished crate algeon-iceberg on iceberg-rust rev 5b82ab99: REST and Glue catalog providers and a table provider that plans the current snapshot with manifest pruning into a standard Parquet DataSourceExec, filling the footer cache for native lowering. - Snapshots the Parquet path would read incorrectly fail with the new unsupported_table_feature code and a reason fact; no CPU fallback. - Server [[iceberg.catalogs]] config, an algeon-server `iceberg` feature shipped in the CPU image, and an iceberg-local-e2e tool. - The server installs ring as rustls's process provider, since the AWS SDK adds rustls's aws-lc-rs backend to builds that include Iceberg. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Row-group pruning resolves predicate columns against the footer's physical schema; it used DataFusion's file schema positions and read another column's statistics when a table orders columns differently from its files, dropping matching row groups. - A remote scan of one object uses its cached footer for column indices and metadata, and keeps DataFusion's file schema only without one. - Iceberg files that store a projected column with another type than the table declares (type promotion) fail with iceberg_column_type_mismatch. - A partial byte range of an uncached remote object reports native_source_remote_footer_unavailable; the remedy no longer suggests a cache limit the Flight SQL server cannot set. - Drop a policy test that passed without the change it covered. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
s3://Parquet becomes a first-class native source, and Iceberg tables from REST and AWS Glue catalogs read through it. Two commits: the implementation (811084980) and fixes from a follow-up review (68ef7e3fb).Remote Parquet as a native source
s3://footers only from the session's DataFusion file metadata cache. The planning invocation carries that cache (AlgeonAttempt, Flight SQL statements,plan_with_native_diagnostics,validate_query). Multi-object and byte-range remote scans now lower natively.native_source_file_schema_mismatch.sourceblocking subject, sonative_requirederrors exposex-algeon-reason(for examplenative_source_remote_footer_unavailable). Diagnostics of rejected remote scans report their real read strategy instead oflocal_kvikio.local_parquet_throughputis renamedparquet_throughput(no alias) and also widens chunks of remote files that carry footer byte metadata. TPC-DS SF100store_sales(one 17.2 GB file, same-region S3, g7e.8xlarge):SUM(ss_ext_sales_price)1.1 s; before, the scan was rejected, or took 270 s with file-scan repartitioning off.[s3]table returns (endpoint,region,path_style,unsigned, default credential chain), and thes3-parquet-e2etool covers one object, a multi-object prefix and a byte-range split.Read-only Iceberg
algeon-iceberg, on iceberg-rust pinned to5b82ab99(the revisionapache/datafusion-icebergpins). It does not depend oniceberg-datafusion.DataSourceExec, and fills the footer cache for native lowering.unsupported_table_featurecode and areasonfact, in every execution mode, with no CPU fallback. This covers delete files, field-id or name-mapping mismatches, absent required or identity-partition columns, encrypted or non-Parquet files, several buckets, other location schemes, FileIO storage properties that disagree with[s3], and promoted column types.[[iceberg.catalogs]]config, analgeon-servericebergfeature shipped in the CPU image, and theiceberg-local-e2etool (RustFS, iceberg-rest-fixture, moto as Glue).aws-lc-rsbackend next toring, and rustls then selects no default provider. The server now installsringas the process provider before tonic builds its TLS acceptor.Review fixes (
68ef7e3fb)iceberg_column_type_mismatch.Validation
algeon-iceberg(CPU and GPU);server_tests_gpu; bench config tests.--all-features -D warnings), nightly fmt, the public API ledger check, the workspace publication check, the prose check and the website build pass. The full pre-merge gate was not run.s3-parquet-e2epasses for librarynative_requiredandfunctions_onlysessions and a server[s3]session.ListingTableover the same files.iceberg-local-e2epasses for REST and Glue (moto), including the delete-file rejection.Not in this PR:
🤖 Generated with Claude Code