Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@ Planned Release Schedule

| Approximate Date | Version | Notes | Ticket |
|------------------|----------|--------------------------------|:-------------------------------------------------------------------|
| July 2025 | `0.12.3` | Minor, NO breaking API changes | [#428](https://github.com/apache/arrow-rs-object-store/issues/428) |
| Sep 2025 | `0.12.4` | Minor, NO breaking API changes | [#498](https://github.com/apache/arrow-rs-object-store/issues/489) |
| Nov 2025 | `0.13.0` | Major, breaking API changes | [#367](https://github.com/apache/arrow-rs-object-store/issues/367) |
| TBD | `0.13.1` | Minor, NO breaking API changes | [#393](https://github.com/apache/arrow-rs-object-store/issues/393) |
| Dec 2025 | `0.13.0` | Major, breaking API changes | [#367](https://github.com/apache/arrow-rs-object-store/issues/367) |
| Dec 2025 | `0.12.5` | Minor, NO breaking API changes | [#582](https://github.com/apache/arrow-rs-object-store/issues/582) |
| Feb 2026 | `0.13.1` | Minor, NO breaking API changes | [#393](https://github.com/apache/arrow-rs-object-store/issues/393) |
27 changes: 27 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -694,6 +694,33 @@ pub type MultipartId = String;
///
/// To automatically detect this issue, use
/// [`#[deny(clippy::missing_trait_methods)]`](https://rust-lang.github.io/rust-clippy/master/index.html#missing_trait_methods).
///
/// # Upgrade Guide for 0.13.0
///
/// Upgrading to object_store 0.13.0 from an earlier version typically involves:
///
/// 1. Add a `use` for [`ObjectStoreExt`] to solve the error
///
/// ```text
/// error[E0599]: no method named `put` found for reference `&dyn object_store::ObjectStore` in the current scope
/// --> datafusion/datasource/src/url.rs:993:14
/// ```
///
/// 2. Remove any (now) redundant implementations (such as `ObjectStore::put`) from any
/// `ObjectStore` implementations to resolve the error
///
/// ```text
/// error[E0407]: method `put` is not a member of trait `ObjectStore`
/// --> datafusion/datasource/src/url.rs:1103:9
/// |
/// ```
///
/// 3. Convert `ObjectStore::delete` to [`ObjectStore::delete_stream`] (see documentation
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we direct users to delete_stream and copy_opts and not ObjectStoreExt?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was meant for people who have implemented ObjectStore (not people who are calling)

What has happened is they now need to implement ObjectStore::delete_stream

The documentation on ObjectStore::delete_stream tries to explain what happened (and tries to explain how to port the code)

/// Note: Before version 0.13, `delete_stream` has a default implementation
/// that deletes each object with up to 10 concurrent requests. This default
/// behavior has been removed, and each implementation must now provide its
/// own `delete_stream` implementation explicitly. The following example
/// shows how to implement `delete_stream` to get the previous default
/// behavior.

/// on that method for details and examples)
///
/// 4. Combine `ObjectStore::copy` and `ObjectStore::copy_if_not_exists` implementations into
/// [`ObjectStore::copy_opts`] (see documentation on that method for details and examples)
///
#[async_trait]
pub trait ObjectStore: std::fmt::Display + Send + Sync + Debug + 'static {
/// Save the provided `payload` to `location` with the given options
Expand Down