This is an automated email from the ASF dual-hosted git repository.

xuanwo pushed a commit to branch registry-more
in repository https://gitbox.apache.org/repos/asf/opendal.git

commit 9a125b294facc2efe89e6d528c74c78637fa0dcb
Merge: e71fc6983 dbc5e2532
Author: Xuanwo <[email protected]>
AuthorDate: Tue Oct 14 16:18:37 2025 +0800

    Merge remote-tracking branch 'origin/main' into registry-more
    
    Signed-off-by: Xuanwo <[email protected]>

 .github/actions/fuzz_test/action.yaml              |    4 +-
 .github/dependabot.yml                             |    9 +
 .github/workflows/ci_bin_oay.yml                   |    4 +-
 .github/workflows/ci_bin_ofs.yml                   |    2 +-
 .github/workflows/ci_bin_oli.yml                   |    2 +-
 .github/workflows/ci_bindings_c.yml                |    2 +-
 .github/workflows/ci_bindings_cpp.yml              |    2 +-
 .github/workflows/ci_bindings_d.yml                |    2 +-
 .github/workflows/ci_bindings_dart.yml             |    2 +-
 .github/workflows/ci_bindings_dotnet.yml           |    4 +-
 .github/workflows/ci_bindings_go.yml               |    4 +-
 .github/workflows/ci_bindings_haskell.yml          |    4 +-
 .github/workflows/ci_bindings_java.yml             |    8 +-
 .github/workflows/ci_bindings_lua.yml              |    2 +-
 .github/workflows/ci_bindings_nodejs.yml           |    4 +-
 .github/workflows/ci_bindings_ocaml.yml            |    2 +-
 .github/workflows/ci_bindings_php.yml              |    2 +-
 .github/workflows/ci_bindings_python.yml           |    2 +-
 .github/workflows/ci_bindings_ruby.yml             |    2 +-
 .github/workflows/ci_bindings_swift.yml            |    2 +-
 .github/workflows/ci_bindings_zig.yml              |    2 +-
 .github/workflows/ci_check.yml                     |   18 +-
 .github/workflows/ci_core.yml                      |   36 +-
 .github/workflows/ci_integration_cloud_filter.yml  |    2 +-
 .github/workflows/ci_integration_dav_server.yml    |    2 +-
 .github/workflows/ci_integration_fuse3.yml         |    2 +-
 .github/workflows/ci_integration_object_store.yml  |    2 +-
 .github/workflows/ci_integration_parquet.yml       |    2 +-
 .github/workflows/ci_integration_spring.yml        |    4 +-
 .github/workflows/ci_integration_unftp_sbe.yml     |    2 +-
 .github/workflows/ci_integration_virtiofs.yml      |    2 +-
 .github/workflows/ci_odev.yml                      |    4 +-
 .github/workflows/ci_weekly_update.yml             |    6 +-
 .github/workflows/docs.yml                         |   82 +-
 .github/workflows/release_dart.yml                 |    6 +-
 .github/workflows/release_java.yml                 |   22 +-
 .github/workflows/release_nodejs.yml               |   10 +-
 .github/workflows/release_python.yml               |    6 +-
 .github/workflows/release_ruby.yml                 |   77 +-
 .github/workflows/release_rust.yml                 |    8 +-
 .github/workflows/service_test_ghac.yml            |    4 +-
 .github/workflows/test_behavior.yml                |    2 +-
 .github/workflows/test_behavior_bin_ofs.yml        |    2 +-
 .github/workflows/test_behavior_binding_c.yml      |    2 +-
 .github/workflows/test_behavior_binding_cpp.yml    |    2 +-
 .github/workflows/test_behavior_binding_go.yml     |    8 +-
 .github/workflows/test_behavior_binding_java.yml   |    2 +-
 .github/workflows/test_behavior_binding_nodejs.yml |    4 +-
 .github/workflows/test_behavior_binding_python.yml |    4 +-
 .github/workflows/test_behavior_core.yml           |    2 +-
 .../test_behavior_integration_cloud_filter.yml     |    2 +-
 .../test_behavior_integration_object_store.yml     |    2 +-
 .github/workflows/test_edge.yml                    |    8 +-
 .github/workflows/test_fuzz.yml                    |   10 +-
 CLAUDE.md                                          |    2 +-
 CONTRIBUTING.md                                    |    2 +-
 bin/oay/Cargo.lock                                 |  369 ++--
 bin/oay/Cargo.toml                                 |   11 +-
 bin/oay/README.md                                  |    2 +
 bin/oay/src/bin/oay.rs                             |    6 +-
 bin/oay/src/bin/webdav.rs                          |    6 +-
 bin/oay/src/services/s3/service.rs                 |    8 +-
 bin/oay/src/services/webdav/service.rs             |    4 +-
 bin/ofs/Cargo.lock                                 |  953 +++++++----
 bin/ofs/Cargo.toml                                 |    8 +-
 bin/ofs/README.md                                  |    2 +
 bin/ofs/src/main.rs                                |    6 +-
 bin/ofs/tests/common/mod.rs                        |    4 +-
 bin/oli/Cargo.lock                                 |  109 +-
 bin/oli/Cargo.toml                                 |    6 +-
 bin/oli/README.md                                  |    2 +
 bin/oli/src/bin/oli.rs                             |    2 +-
 bin/oli/src/commands/bench/suite.rs                |    2 +-
 bin/oli/src/config/mod.rs                          |   24 +-
 bin/oli/tests/integration/test_utils.rs            |    4 +
 bindings/c/Cargo.toml                              |    4 +-
 bindings/c/include/opendal.h                       |    7 +-
 bindings/c/src/entry.rs                            |    8 +-
 bindings/c/src/error.rs                            |    6 +-
 bindings/c/src/lib.rs                              |    2 +
 bindings/c/src/lister.rs                           |    8 +-
 bindings/c/src/metadata.rs                         |   10 +-
 bindings/c/src/operator.rs                         |   12 +-
 bindings/c/src/operator_info.rs                    |    8 +-
 bindings/c/src/reader.rs                           |   12 +-
 bindings/c/src/types.rs                            |   24 +-
 bindings/c/src/writer.rs                           |   24 +-
 bindings/cpp/Cargo.toml                            |   13 +-
 bindings/cpp/src/lib.rs                            |   12 +-
 bindings/cpp/src/types.rs                          |    5 +-
 bindings/dart/rust/Cargo.toml                      |    2 +-
 bindings/dart/rust/src/api/opendal_api.rs          |    2 +-
 bindings/dart/rust/src/frb_generated.rs            |    6 +-
 bindings/dotnet/Cargo.toml                         |    4 +-
 bindings/dotnet/src/lib.rs                         |   25 +-
 bindings/haskell/Cargo.toml                        |    5 +-
 bindings/haskell/src/lib.rs                        |  852 +++++-----
 bindings/haskell/src/logger.rs                     |    2 +-
 bindings/haskell/src/result.rs                     |    2 +-
 bindings/haskell/src/types.rs                      |   13 +-
 bindings/java/Cargo.toml                           |    9 +-
 bindings/java/src/async_operator.rs                |   61 +-
 bindings/java/src/convert.rs                       |   25 +-
 bindings/java/src/error.rs                         |    2 +-
 bindings/java/src/executor.rs                      |   26 +-
 bindings/java/src/layer.rs                         |    8 +-
 bindings/java/src/lib.rs                           |   14 +-
 bindings/java/src/operator.rs                      |   59 +-
 bindings/java/src/operator_input_stream.rs         |   18 +-
 bindings/java/src/operator_output_stream.rs        |   16 +-
 bindings/java/src/utility.rs                       |    6 +-
 bindings/lua/Cargo.toml                            |    4 +-
 bindings/lua/src/lib.rs                            |    2 +-
 bindings/nodejs/Cargo.toml                         |    4 +-
 bindings/nodejs/src/lib.rs                         |    2 +-
 bindings/nodejs/src/options.rs                     |   14 +-
 bindings/ocaml/Cargo.toml                          |    4 +-
 bindings/ocaml/src/operator/metadata.rs            |    5 +-
 bindings/php/Cargo.toml                            |    4 +-
 bindings/python/Cargo.toml                         |   10 +-
 bindings/python/src/file.rs                        |   12 +-
 bindings/python/src/lister.rs                      |    8 +-
 bindings/python/src/metadata.rs                    |    9 +-
 bindings/python/src/operator.rs                    |   10 +-
 bindings/python/src/options.rs                     |   22 +-
 bindings/python/src/utils.rs                       |   22 +-
 bindings/ruby/.gitignore                           |    2 +
 bindings/ruby/Cargo.toml                           |    9 +-
 bindings/ruby/README.md                            |    6 +-
 bindings/ruby/Rakefile                             |   60 +-
 bindings/ruby/lib/opendal_ruby/metadata.rb         |    2 +-
 bindings/ruby/opendal.gemspec                      |   50 +-
 bindings/ruby/src/capability.rs                    |    4 +-
 bindings/ruby/src/io.rs                            |    8 +-
 bindings/ruby/src/lib.rs                           |    7 +-
 bindings/ruby/src/lister.rs                        |    4 +-
 bindings/ruby/src/metadata.rs                      |    6 +-
 bindings/ruby/src/middlewares.rs                   |   37 +-
 bindings/ruby/src/operator.rs                      |    8 +-
 bindings/ruby/src/operator_info.rs                 |    4 +-
 bindings/ruby/test/blocking_op_test.rb             |    2 +-
 bindings/ruby/test/metadata_test.rb                |   78 +
 bindings/ruby/test/middlewares_test.rb             |    8 +-
 core/Cargo.lock                                    |  575 ++++---
 core/Cargo.toml                                    |   43 +-
 core/benches/ops/read.rs                           |    4 +-
 core/benches/ops/write.rs                          |    4 +-
 core/benches/types/buffer.rs                       |   14 +-
 core/benches/types/tasks.rs                        |    2 +-
 core/benches/vs_fs/Cargo.toml                      |    4 +-
 core/benches/vs_fs/src/main.rs                     |    2 +-
 core/benches/vs_s3/Cargo.toml                      |    6 +-
 core/benches/vs_s3/src/main.rs                     |    2 +-
 core/edge/file_write_on_full_disk/src/main.rs      |    2 +-
 .../src/main.rs                                    |    2 +-
 core/edge/s3_read_on_wasm/src/lib.rs               |    2 +-
 core/fuzz/Cargo.toml                               |    6 +-
 core/src/layers/correctness_check.rs               |    4 +-
 core/src/layers/fastmetrics.rs                     |    2 +-
 core/src/layers/immutable_index.rs                 |    4 +-
 core/src/layers/logging.rs                         |    2 +-
 core/src/layers/metrics.rs                         |    2 +-
 core/src/layers/mime_guess.rs                      |    4 +-
 core/src/layers/observe/metrics.rs                 |   50 +-
 core/src/layers/observe/mod.rs                     |   10 +-
 core/src/layers/otelmetrics.rs                     |    2 +-
 core/src/layers/oteltrace.rs                       |    4 +-
 core/src/layers/prometheus.rs                      |    4 +-
 core/src/layers/retry.rs                           |    2 +-
 core/src/layers/throttle.rs                        |   14 +-
 core/src/layers/timeout.rs                         |    2 +-
 core/src/layers/tracing.rs                         |    2 +-
 core/src/lib.rs                                    |    7 +-
 core/src/raw/accessor.rs                           |   10 +-
 core/src/raw/adapters/kv/api.rs                    |    3 +-
 core/src/raw/adapters/typed_kv/api.rs              |   15 +-
 core/src/raw/azure.rs                              |    4 +-
 core/src/raw/chrono_util.rs                        |  109 --
 core/src/raw/futures_util.rs                       |    2 +-
 core/src/raw/http_util/client.rs                   |    2 +-
 core/src/raw/http_util/error.rs                    |    2 +-
 core/src/raw/http_util/header.rs                   |   16 +-
 core/src/raw/http_util/mod.rs                      |    8 +-
 core/src/raw/http_util/multipart.rs                |    8 +-
 core/src/raw/http_util/uri.rs                      |    4 +-
 core/src/raw/mod.rs                                |    4 +-
 core/src/raw/oio/write/block_write.rs              |    4 +-
 core/src/raw/oio/write/multipart_write.rs          |    4 +-
 core/src/raw/oio/write/position_write.rs           |    4 +-
 core/src/raw/ops.rs                                |   32 +-
 core/src/raw/rps.rs                                |    4 +-
 core/src/raw/serde_util.rs                         |    6 +-
 core/src/raw/std_io_util.rs                        |    2 +-
 core/src/raw/tests/mod.rs                          |    2 +-
 core/src/raw/tests/read.rs                         |    7 +-
 core/src/raw/tests/write.rs                        |    2 +-
 core/src/raw/time.rs                               |  261 +++
 core/src/services/aliyun_drive/backend.rs          |   21 +-
 core/src/services/aliyun_drive/core.rs             |   10 +-
 core/src/services/aliyun_drive/lister.rs           |   22 +-
 core/src/services/alluxio/backend.rs               |    2 +-
 core/src/services/alluxio/core.rs                  |    2 +-
 core/src/services/alluxio/lister.rs                |    4 +-
 core/src/services/azblob/backend.rs                |    5 +-
 core/src/services/azblob/core.rs                   |   20 +-
 core/src/services/azblob/lister.rs                 |    2 +-
 core/src/services/azblob/writer.rs                 |    2 +-
 core/src/services/azdls/backend.rs                 |    2 +-
 core/src/services/azdls/core.rs                    |    8 +-
 core/src/services/azdls/lister.rs                  |    2 +-
 core/src/services/azfile/backend.rs                |    2 +-
 core/src/services/azfile/core.rs                   |    8 +-
 core/src/services/azfile/lister.rs                 |    4 +-
 core/src/services/b2/backend.rs                    |    5 +-
 core/src/services/b2/core.rs                       |   15 +-
 core/src/services/b2/lister.rs                     |    2 +-
 core/src/services/cacache/backend.rs               |   17 +-
 core/src/services/cloudflare_kv/backend.rs         |   23 +-
 core/src/services/cloudflare_kv/core.rs            |   10 +-
 core/src/services/cloudflare_kv/delete.rs          |    2 +-
 core/src/services/cloudflare_kv/lister.rs          |    2 +-
 core/src/services/cloudflare_kv/writer.rs          |    8 +-
 core/src/services/compfs/backend.rs                |    6 +-
 core/src/services/compfs/core.rs                   |    2 +-
 core/src/services/compfs/reader.rs                 |    2 +-
 core/src/services/cos/backend.rs                   |    1 +
 core/src/services/cos/core.rs                      |   14 +-
 core/src/services/cos/lister.rs                    |   12 +-
 core/src/services/d1/backend.rs                    |    4 +-
 core/src/services/dashmap/backend.rs               |    2 +-
 core/src/services/dashmap/delete.rs                |    2 +-
 core/src/services/dashmap/writer.rs                |    4 +-
 core/src/services/dbfs/backend.rs                  |    4 +-
 core/src/services/dbfs/core.rs                     |    4 +-
 core/src/services/dbfs/lister.rs                   |    8 +-
 core/src/services/dropbox/backend.rs               |    2 +-
 core/src/services/dropbox/builder.rs               |   11 +-
 core/src/services/dropbox/core.rs                  |   32 +-
 core/src/services/dropbox/lister.rs                |    2 +-
 core/src/services/etcd/backend.rs                  |    4 +-
 core/src/services/foundationdb/backend.rs          |    8 +-
 core/src/services/fs/backend.rs                    |    4 +-
 core/src/services/fs/core.rs                       |   17 +-
 core/src/services/fs/lister.rs                     |    2 +-
 core/src/services/fs/writer.rs                     |    8 +-
 core/src/services/ftp/backend.rs                   |    8 +-
 core/src/services/ftp/core.rs                      |    4 +-
 core/src/services/ftp/delete.rs                    |    2 +-
 core/src/services/ftp/lister.rs                    |    2 +-
 core/src/services/gcs/backend.rs                   |    1 +
 core/src/services/gcs/core.rs                      |   19 +-
 core/src/services/gcs/lister.rs                    |    2 +-
 core/src/services/gcs/uri.rs                       |    2 +-
 core/src/services/gdrive/backend.rs                |   10 +-
 core/src/services/gdrive/builder.rs                |   18 +-
 core/src/services/gdrive/core.rs                   |   26 +-
 core/src/services/ghac/backend.rs                  |    4 +-
 core/src/services/ghac/core.rs                     |    8 +-
 core/src/services/github/backend.rs                |    2 +-
 core/src/services/github/core.rs                   |    8 +-
 core/src/services/gridfs/backend.rs                |    4 +-
 core/src/services/gridfs/core.rs                   |    4 +-
 core/src/services/hdfs/backend.rs                  |    8 +-
 core/src/services/hdfs/lister.rs                   |    4 +-
 core/src/services/hdfs_native/backend.rs           |    9 +-
 core/src/services/hdfs_native/lister.rs            |   10 +-
 core/src/services/hdfs_native/reader.rs            |    2 +-
 core/src/services/http/backend.rs                  |    6 +-
 core/src/services/http/core.rs                     |    4 +-
 core/src/services/huggingface/backend.rs           |    6 +-
 core/src/services/huggingface/core.rs              |    2 +-
 core/src/services/huggingface/lister.rs            |    2 +-
 core/src/services/ipfs/backend.rs                  |    2 +-
 core/src/services/ipmfs/builder.rs                 |    2 +-
 core/src/services/ipmfs/lister.rs                  |    2 +-
 core/src/services/koofr/backend.rs                 |    4 +-
 core/src/services/koofr/core.rs                    |    4 +-
 core/src/services/koofr/lister.rs                  |    6 +-
 core/src/services/lakefs/backend.rs                |    6 +-
 core/src/services/lakefs/core.rs                   |    2 +-
 core/src/services/lakefs/lister.rs                 |    7 +-
 core/src/services/memory/backend.rs                |    5 +-
 core/src/services/mini_moka/backend.rs             |    2 +-
 core/src/services/mini_moka/writer.rs              |    5 +-
 core/src/services/moka/backend.rs                  |    2 +-
 core/src/services/mongodb/backend.rs               |    8 +-
 core/src/services/monoiofs/backend.rs              |   14 +-
 core/src/services/monoiofs/core.rs                 |    4 +-
 core/src/services/monoiofs/reader.rs               |    6 +-
 core/src/services/monoiofs/writer.rs               |   14 +-
 core/src/services/mysql/backend.rs                 |    6 +-
 core/src/services/obs/backend.rs                   |   11 +-
 core/src/services/obs/core.rs                      |    4 +-
 core/src/services/obs/lister.rs                    |    2 +-
 core/src/services/onedrive/builder.rs              |   22 +-
 core/src/services/onedrive/core.rs                 |   21 +-
 core/src/services/onedrive/graph_model.rs          |    2 +-
 core/src/services/onedrive/lister.rs               |    5 +-
 core/src/services/onedrive/writer.rs               |    4 +-
 core/src/services/opfs/backend.rs                  |    2 +-
 core/src/services/opfs/utils.rs                    |    4 +-
 core/src/services/oss/backend.rs                   |    1 +
 core/src/services/oss/core.rs                      |   20 +-
 core/src/services/oss/lister.rs                    |   10 +-
 core/src/services/pcloud/backend.rs                |    4 +-
 core/src/services/pcloud/core.rs                   |    8 +-
 core/src/services/pcloud/delete.rs                 |    2 +-
 core/src/services/pcloud/writer.rs                 |    2 +-
 core/src/services/persy/backend.rs                 |    6 +-
 core/src/services/postgresql/backend.rs            |    6 +-
 core/src/services/redb/backend.rs                  |    6 +-
 core/src/services/redis/backend.rs                 |    6 +-
 core/src/services/redis/core.rs                    |    8 +-
 core/src/services/rocksdb/backend.rs               |    2 +-
 core/src/services/s3/backend.rs                    |    8 +-
 core/src/services/s3/core.rs                       |   32 +-
 core/src/services/s3/error.rs                      |   11 +-
 core/src/services/s3/lister.rs                     |   17 +-
 core/src/services/s3/writer.rs                     |    2 +-
 core/src/services/seafile/backend.rs               |    6 +-
 core/src/services/seafile/core.rs                  |    6 +-
 core/src/services/seafile/lister.rs                |    2 +-
 core/src/services/sftp/backend.rs                  |    2 +-
 core/src/services/sftp/error.rs                    |    2 +-
 core/src/services/sftp/lister.rs                   |    2 +-
 core/src/services/sftp/utils.rs                    |    5 +-
 core/src/services/sled/backend.rs                  |    6 +-
 core/src/services/sqlite/backend.rs                |    4 +-
 core/src/services/surrealdb/backend.rs             |   17 +-
 core/src/services/swift/backend.rs                 |    2 +-
 core/src/services/swift/core.rs                    |    2 +-
 core/src/services/swift/lister.rs                  |    2 +-
 core/src/services/tikv/backend.rs                  |    6 +-
 core/src/services/upyun/backend.rs                 |    1 +
 core/src/services/upyun/core.rs                    |    6 +-
 core/src/services/upyun/lister.rs                  |    6 +-
 core/src/services/upyun/writer.rs                  |    2 +-
 core/src/services/vercel_artifacts/builder.rs      |    2 +-
 core/src/services/vercel_artifacts/core.rs         |    2 +-
 core/src/services/vercel_blob/backend.rs           |    4 +-
 core/src/services/vercel_blob/core.rs              |    6 +-
 core/src/services/vercel_blob/delete.rs            |    2 +-
 core/src/services/vercel_blob/lister.rs            |    4 +-
 core/src/services/webdav/backend.rs                |    2 +-
 core/src/services/webdav/core.rs                   |    4 +-
 core/src/services/webhdfs/backend.rs               |    4 +-
 core/src/services/webhdfs/core.rs                  |    4 +-
 core/src/services/webhdfs/error.rs                 |    2 +-
 core/src/services/webhdfs/lister.rs                |    4 +-
 core/src/services/yandex_disk/backend.rs           |    2 +-
 core/src/services/yandex_disk/core.rs              |    6 +-
 core/src/services/yandex_disk/lister.rs            |    4 +-
 core/src/types/builder.rs                          |    2 +-
 core/src/types/context/write.rs                    |    2 +-
 core/src/types/delete/futures_delete_sink.rs       |    2 +-
 core/src/types/delete/input.rs                     |    2 +-
 core/src/types/execute/api.rs                      |    2 +-
 core/src/types/execute/executors/tokio_executor.rs |    2 +-
 core/src/types/list.rs                             |    4 +-
 core/src/types/metadata.rs                         |   13 +-
 core/src/types/operator/builder.rs                 |    2 +-
 core/src/types/operator/mod.rs                     |    2 +-
 core/src/types/operator/operator_futures.rs        |   45 +-
 core/src/types/options.rs                          |   18 +-
 core/src/types/read/buffer_stream.rs               |    2 +-
 core/src/types/read/futures_async_reader.rs        |    2 +-
 core/src/types/read/futures_bytes_stream.rs        |    2 +-
 core/src/types/read/reader.rs                      |    4 +-
 core/src/types/write/buffer_sink.rs                |    4 +-
 core/src/types/write/futures_async_writer.rs       |    2 +-
 core/src/types/write/writer.rs                     |    4 +-
 core/tests/behavior/async_delete.rs                |    4 +-
 core/tests/behavior/async_list.rs                  |    2 +-
 core/tests/behavior/async_read.rs                  |   20 +-
 core/tests/behavior/async_stat.rs                  |    4 +-
 core/tests/behavior/async_write.rs                 |   10 +-
 core/tests/behavior/main.rs                        |    5 +-
 dev/Cargo.toml                                     |    4 +-
 dev/src/generate/java.rs                           |    4 +-
 dev/src/generate/parser.rs                         |    4 +-
 dev/src/generate/python.rs                         |    4 +-
 dev/src/release/mod.rs                             |    2 +-
 integrations/cloud_filter/Cargo.toml               |    4 +-
 integrations/cloud_filter/examples/readonly.rs     |    2 +-
 integrations/cloud_filter/src/lib.rs               |    8 +-
 .../cloud_filter/tests/behavior/fetch_data.rs      |    2 +-
 .../tests/behavior/fetch_placeholder.rs            |    2 +-
 integrations/cloud_filter/tests/behavior/main.rs   |    2 +-
 integrations/dav-server/Cargo.toml                 |    4 +-
 integrations/dav-server/src/dir.rs                 |    4 +-
 integrations/dav-server/src/metadata.rs            |    7 +-
 integrations/dav-server/tests/test.rs              |    2 +-
 integrations/fuse3/Cargo.toml                      |    4 +-
 integrations/fuse3/src/file_system.rs              |   11 +-
 integrations/object_store/Cargo.toml               |    7 +-
 integrations/object_store/examples/basic.rs        |    2 +-
 integrations/object_store/examples/datafusion.rs   |    2 +-
 integrations/object_store/src/amazon_s3.rs         |    4 +-
 integrations/object_store/src/lib.rs               |   12 +
 integrations/object_store/src/service/core.rs      |   16 +-
 integrations/object_store/src/service/deleter.rs   |    2 +-
 integrations/object_store/src/service/lister.rs    |    2 +-
 integrations/object_store/src/service/mod.rs       |    8 +-
 integrations/object_store/src/service/reader.rs    |    4 +-
 integrations/object_store/src/service/writer.rs    |    2 +-
 integrations/object_store/src/store.rs             |   54 +-
 integrations/object_store/src/utils.rs             |    6 +-
 integrations/object_store/tests/behavior/delete.rs |    2 +-
 integrations/object_store/tests/behavior/utils.rs  |    2 +-
 integrations/parquet/Cargo.toml                    |    4 +-
 integrations/parquet/examples/async_reader.rs      |    2 +-
 integrations/parquet/examples/async_writer.rs      |    4 +-
 integrations/parquet/src/async_reader.rs           |   10 +-
 integrations/parquet/src/async_writer.rs           |    4 +-
 integrations/unftp-sbe/Cargo.toml                  |    4 +-
 integrations/unftp-sbe/src/lib.rs                  |   20 +-
 integrations/virtiofs/Cargo.toml                   |    4 +-
 integrations/virtiofs/src/buffer.rs                |    2 +-
 integrations/virtiofs/src/virtiofs.rs              |    4 +-
 integrations/virtiofs/src/virtiofs_util.rs         |    6 +-
 rustfmt.toml                                       |    2 +-
 website/DEPENDENCIES.node.csv                      |   12 +-
 website/docs/02-vision.md                          |    4 +-
 website/docusaurus.config.js                       |   18 +-
 website/package.json                               |   17 +-
 website/pnpm-lock.yaml                             | 1786 +++++++++++---------
 426 files changed, 4674 insertions(+), 3560 deletions(-)

diff --cc core/src/services/fs/backend.rs
index 156c4006d,a42b551c0..01b9cbe63
--- a/core/src/services/fs/backend.rs
+++ b/core/src/services/fs/backend.rs
@@@ -26,24 -28,32 +27,24 @@@ use super::lister::FsLister
  use super::reader::FsReader;
  use super::writer::FsWriter;
  use super::writer::FsWriters;
- use super::FS_SCHEME;
  use crate::raw::*;
  use crate::services::FsConfig;
 +use crate::types::OperatorUri;
  use crate::*;
 -use http::Uri;
 -use percent_encoding::percent_decode_str;
  impl Configurator for FsConfig {
      type Builder = FsBuilder;
+ 
 -    fn from_uri(uri: &Uri, options: &HashMap<String, String>) -> Result<Self> 
{
 -        let mut map = options.clone();
 -
 -        if !map.contains_key("root") {
 -            let path = percent_decode_str(uri.path()).decode_utf8_lossy();
 -            if path.is_empty() || path == "/" {
 -                return Err(Error::new(
 -                    ErrorKind::ConfigInvalid,
 -                    "fs uri requires absolute path",
 -                ));
 -            }
 -            if !path.starts_with('/') {
 -                return Err(Error::new(
 -                    ErrorKind::ConfigInvalid,
 -                    "fs uri root must be absolute",
 -                ));
 -            }
 -            map.insert("root".to_string(), path.to_string());
 +    fn from_uri(uri: &OperatorUri) -> Result<Self> {
 +        let mut map = uri.options().clone();
 +
 +        if let Some(value) = match (uri.name(), uri.root()) {
 +            (Some(name), Some(rest)) if !rest.is_empty() => 
Some(format!("/{}/{}", name, rest)),
 +            (Some(name), _) => Some(format!("/{}", name)),
 +            (None, Some(rest)) if !rest.is_empty() => Some(format!("/{}", 
rest)),
 +            (None, Some(rest)) => Some(rest.to_string()),
 +            _ => None,
 +        } {
 +            map.insert("root".to_string(), value);
          }
  
          Self::from_iter(map)
diff --cc core/src/types/builder.rs
index 2ebe36144,c91363ed7..903459775
--- a/core/src/types/builder.rs
+++ b/core/src/types/builder.rs
@@@ -15,13 -15,14 +15,13 @@@
  // specific language governing permissions and limitations
  // under the License.
  
 -use std::collections::HashMap;
  use std::fmt::Debug;
  
- use serde::de::DeserializeOwned;
 -use http::Uri;
  use serde::Serialize;
+ use serde::de::DeserializeOwned;
  
  use crate::raw::*;
 +use crate::types::OperatorUri;
  use crate::*;
  
  /// Builder is used to set up underlying services.
diff --cc core/src/types/operator/mod.rs
index 87b27f21a,c42f6d281..3de1ea7c1
--- a/core/src/types/operator/mod.rs
+++ b/core/src/types/operator/mod.rs
@@@ -30,7 -30,4 +30,7 @@@ pub use info::OperatorInfo
  pub mod operator_futures;
  
  mod registry;
- pub use registry::{OperatorFactory, OperatorRegistry, 
DEFAULT_OPERATOR_REGISTRY};
+ pub use registry::{DEFAULT_OPERATOR_REGISTRY, OperatorFactory, 
OperatorRegistry};
 +
 +mod uri;
 +pub use uri::{IntoOperatorUri, OperatorUri};

Reply via email to