diff --git a/integrations/object_store/Cargo.toml b/integrations/object_store/Cargo.toml index dcccf2b43ef8..e7065e14ca49 100644 --- a/integrations/object_store/Cargo.toml +++ b/integrations/object_store/Cargo.toml @@ -40,6 +40,7 @@ opendal = { version = "0.47.0", path = "../../core" } pin-project = "1.1" send_wrapper = { version = "0.6", features = ["futures"], optional = true } tokio = { version = "1", default-features = false } +flagset = "0.4" [dev-dependencies] opendal = { version = "0.47.0", path = "../../core", features = [ diff --git a/integrations/object_store/src/store.rs b/integrations/object_store/src/store.rs index cbfc1b984530..84029646c50e 100644 --- a/integrations/object_store/src/store.rs +++ b/integrations/object_store/src/store.rs @@ -101,6 +101,16 @@ impl OpendalStore { pub fn new(op: Operator) -> Self { Self { inner: op } } + + /// The metakey that requested by object_store, should align with its meta. + #[inline] + fn metakey() -> flagset::FlagSet { + Metakey::Mode + | Metakey::LastModified + | Metakey::ContentLength + | Metakey::Etag + | Metakey::Version + } } impl Debug for OpendalStore { @@ -293,7 +303,7 @@ impl ObjectStore for OpendalStore { let stream = self .inner .lister_with(&path) - .metakey(Metakey::ContentLength | Metakey::LastModified) + .metakey(Self::metakey()) .recursive(true) .await .map_err(|err| format_object_store_error(err, &path))?; @@ -323,7 +333,7 @@ impl ObjectStore for OpendalStore { self.inner .lister_with(&path) .start_after(offset.as_ref()) - .metakey(Metakey::ContentLength | Metakey::LastModified) + .metakey(Self::metakey()) .recursive(true) .into_future() .into_send() @@ -335,7 +345,7 @@ impl ObjectStore for OpendalStore { } else { self.inner .lister_with(&path) - .metakey(Metakey::ContentLength | Metakey::LastModified) + .metakey(Self::metakey()) .recursive(true) .into_future() .into_send() @@ -357,7 +367,7 @@ impl ObjectStore for OpendalStore { let mut stream = self .inner .lister_with(&path) - .metakey(Metakey::Mode | Metakey::ContentLength | Metakey::LastModified) + .metakey(Self::metakey()) .into_future() .into_send() .await