plusplusjiajia opened a new pull request, #828:
URL: https://github.com/apache/iceberg-cpp/pull/828
Follow-up to #719: replaces the temporary warehouse-based FileIO detection
with a scheme-based `ResolvingFileIO`, mirroring Java.
### Why
The FileIO impl was picked from `DetectBuiltinFileIO(warehouse)`, so any
non-`s3://` warehouse resolved to `arrow-fs-local` and binding vended
credentials failed with `Configured FileIO does not support vended storage
credentials`. Credential-vending catalogs typically use a logical warehouse
identifier (bucket ARN / catalog name), not a storage URI, so the feature
only worked when `warehouse` was literally `s3://…`.
### What
1. **`ResolvingFileIO` (core)** — picks the impl per file-path scheme
(`s3`/`s3a`/`s3n`/`oss` → `arrow-fs-s3`; `file`/no scheme → local; else
`NotSupported`), lazily loaded via `FileIORegistry` and cached; forwards
the full credential list to impls that support it (Java
`ResolvingFileIO` semantics). Registered as `resolving-file-io`.
2. **REST default** — `MakeCatalogFileIO` defaults to `resolving-file-io`
when `io-impl` is unset (Java `DEFAULT_FILE_IO_IMPL` likewise); the
warehouse detection and the `io-impl`-vs-warehouse check are removed.
Explicit `io-impl` is honored as before.
3. **`ArrowS3FileIO`** — `SetStorageCredentials` skips non-S3 credential
prefixes instead of rejecting the set (Java `S3FileIO` filters by
`"s3"`);
servers may vend credentials for several storage systems at once.
--
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]