liurenjie1024 commented on issue #1314: URL: https://github.com/apache/iceberg-rust/issues/1314#issuecomment-2892773303
Hi, sorry for being late for this party, and thanks @tustvold for the summary of the discussions. > 1. Should implementations pass around Arc<dyn FileIO or something else - https://github.com/apache/iceberg-rust/issues/172#issuecomment-2473145048 https://github.com/apache/iceberg-rust/issues/172#issuecomment-2473675530 While we could abstract out underlying implementation using different providers/implemtations, I still recommend wrapping it in a struct when passing around in the crate. This helps to eliminate limitations of object safety in rust. > 2. How important is preserving compatibility with iceberg-java - https://github.com/apache/iceberg-rust/issues/172#issuecomment-2473277943 https://github.com/apache/iceberg-rust/issues/172#issuecomment-2474390321 I believe it's important to keep the abstractions/functionality required by java api, such as InputFile/OutputFile/delete, as these are required by other components. But it doesn't have be exactly same as, and should be idiomatic for rust developers. > 3. Can we make breaking changes to iceberg-rust - https://github.com/apache/iceberg-rust/issues/172#issuecomment-2481267603 I think it's fine to make breaking changes if we can't avoid. > 4. How should the interface differ from ObjectStore - https://github.com/apache/iceberg-rust/issues/172#issuecomment-2473365948 The reason we should keep `FileIO` trait rather than using `ObjectStore` trait directly is that we need to keep consistent as much as java implementation(reference implementation). For example, java's `FileIO` has following extensions recently: https://github.com/apache/iceberg/blob/f06c4f7dfc98cc944a0e1d3a7b38ade0aaa52ce3/api/src/main/java/org/apache/iceberg/io/SupportsPrefixOperations.java#L25 https://github.com/apache/iceberg/blob/f06c4f7dfc98cc944a0e1d3a7b38ade0aaa52ce3/api/src/main/java/org/apache/iceberg/io/SupportsBulkOperations.java#L21 https://github.com/apache/iceberg/blob/50d310aef17908f03f595d520cd751527483752a/api/src/main/java/org/apache/iceberg/encryption/EncryptingFileIO.java#L37 https://github.com/apache/iceberg/blob/e9364faabcc67eef6c61af2ecdf7bcf9a3fef602/api/src/main/java/org/apache/iceberg/io/SupportsRecoveryOperations.java#L27 https://github.com/apache/iceberg/blob/817dc35a924b403716d2eb899aba46f3398a5ca9/core/src/main/java/org/apache/iceberg/io/SupportsStorageCredentials.java#L27 I believe keeping a `FileIO` trait rather than using `object_store` would make evolving easier. -- 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: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org