diff --git a/Cargo.lock b/Cargo.lock index 4e8187cd..4e452a72 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3044,8 +3044,8 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] name = "fsst" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow-array", "rand 0.9.2", @@ -4229,8 +4229,8 @@ dependencies = [ [[package]] name = "lance" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow", "arrow-arith", @@ -4293,8 +4293,8 @@ dependencies = [ [[package]] name = "lance-arrow" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow-array", "arrow-buffer", @@ -4312,8 +4312,8 @@ dependencies = [ [[package]] name = "lance-bitpacking" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrayref", "paste", @@ -4322,8 +4322,8 @@ dependencies = [ [[package]] name = "lance-core" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow-array", "arrow-buffer", @@ -4359,8 +4359,8 @@ dependencies = [ [[package]] name = "lance-datafusion" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow", "arrow-array", @@ -4389,8 +4389,8 @@ dependencies = [ [[package]] name = "lance-datagen" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow", "arrow-array", @@ -4407,8 +4407,8 @@ dependencies = [ [[package]] name = "lance-encoding" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow-arith", "arrow-array", @@ -4445,8 +4445,8 @@ dependencies = [ [[package]] name = "lance-file" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow-arith", "arrow-array", @@ -4479,8 +4479,8 @@ dependencies = [ [[package]] name = "lance-index" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow", "arrow-arith", @@ -4542,8 +4542,8 @@ dependencies = [ [[package]] name = "lance-io" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow", "arrow-arith", @@ -4583,8 +4583,8 @@ dependencies = [ [[package]] name = "lance-linalg" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow-array", "arrow-buffer", @@ -4607,8 +4607,8 @@ dependencies = [ [[package]] name = "lance-namespace" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow", "async-trait", @@ -4620,8 +4620,8 @@ dependencies = [ [[package]] name = "lance-namespace-impls" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow", "arrow-ipc", @@ -4630,8 +4630,9 @@ dependencies = [ "bytes", "lance", "lance-core", + "lance-io", "lance-namespace", - "opendal", + "object_store", "reqwest", "serde_json", "snafu", @@ -4653,8 +4654,8 @@ dependencies = [ [[package]] name = "lance-table" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow", "arrow-array", @@ -4692,8 +4693,8 @@ dependencies = [ [[package]] name = "lance-testing" -version = "0.38.3-beta.9" -source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.9#5f603515786cdc3b5aadb3313131bf686d5e932b" +version = "0.38.3-beta.11" +source = "git+https://github.com/lancedb/lance.git?tag=v0.38.3-beta.11#db497cb2373156679aa0d6a1f2087880a8579bc6" dependencies = [ "arrow-array", "arrow-schema", @@ -5181,12 +5182,9 @@ dependencies = [ [[package]] name = "mock_instant" -version = "0.3.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9366861eb2a2c436c20b12c8dbec5f798cea6b47ad99216be0282942e2c81ea0" -dependencies = [ - "once_cell", -] +checksum = "dce6dd36094cac388f119d2e9dc82dc730ef91c32a6222170d630e5414b956e6" [[package]] name = "moka" diff --git a/Cargo.toml b/Cargo.toml index 5152f340..827436d1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,20 +15,20 @@ categories = ["database-implementations"] rust-version = "1.78.0" [workspace.dependencies] -lance = { "version" = "=0.38.3-beta.9", default-features = false, "tag" = "v0.38.3-beta.9", "git" = "https://github.com/lancedb/lance.git" } -lance-core = { "version" = "=0.38.3-beta.9", "tag" = "v0.38.3-beta.9", "git" = "https://github.com/lancedb/lance.git" } -lance-datagen = { "version" = "=0.38.3-beta.9", "tag" = "v0.38.3-beta.9", "git" = "https://github.com/lancedb/lance.git" } -lance-file = { "version" = "=0.38.3-beta.9", "tag" = "v0.38.3-beta.9", "git" = "https://github.com/lancedb/lance.git" } -lance-io = { "version" = "=0.38.3-beta.9", default-features = false, "tag" = "v0.38.3-beta.9", "git" = "https://github.com/lancedb/lance.git" } -lance-index = { "version" = "=0.38.3-beta.9", "tag" = "v0.38.3-beta.9", "git" = "https://github.com/lancedb/lance.git" } -lance-linalg = { "version" = "=0.38.3-beta.9", "tag" = "v0.38.3-beta.9", "git" = "https://github.com/lancedb/lance.git" } -lance-namespace = { "version" = "=0.38.3-beta.9", "tag" = "v0.38.3-beta.9", "git" = "https://github.com/lancedb/lance.git" } -lance-namespace-impls = { "version" = "=0.38.3-beta.9", "tag" = "v0.38.3-beta.9", "git" = "https://github.com/lancedb/lance.git" } -lance-table = { "version" = "=0.38.3-beta.9", "tag" = "v0.38.3-beta.9", "git" = "https://github.com/lancedb/lance.git" } -lance-testing = { "version" = "=0.38.3-beta.9", "tag" = "v0.38.3-beta.9", "git" = "https://github.com/lancedb/lance.git" } -lance-datafusion = { "version" = "=0.38.3-beta.9", "tag" = "v0.38.3-beta.9", "git" = "https://github.com/lancedb/lance.git" } -lance-encoding = { "version" = "=0.38.3-beta.9", "tag" = "v0.38.3-beta.9", "git" = "https://github.com/lancedb/lance.git" } -lance-arrow = { "version" = "=0.38.3-beta.9", "tag" = "v0.38.3-beta.9", "git" = "https://github.com/lancedb/lance.git" } +lance = { "version" = "=0.38.3-beta.11", default-features = false, "tag" = "v0.38.3-beta.11", "git" = "https://github.com/lancedb/lance.git" } +lance-core = { "version" = "=0.38.3-beta.11", "tag" = "v0.38.3-beta.11", "git" = "https://github.com/lancedb/lance.git" } +lance-datagen = { "version" = "=0.38.3-beta.11", "tag" = "v0.38.3-beta.11", "git" = "https://github.com/lancedb/lance.git" } +lance-file = { "version" = "=0.38.3-beta.11", "tag" = "v0.38.3-beta.11", "git" = "https://github.com/lancedb/lance.git" } +lance-io = { "version" = "=0.38.3-beta.11", default-features = false, "tag" = "v0.38.3-beta.11", "git" = "https://github.com/lancedb/lance.git" } +lance-index = { "version" = "=0.38.3-beta.11", "tag" = "v0.38.3-beta.11", "git" = "https://github.com/lancedb/lance.git" } +lance-linalg = { "version" = "=0.38.3-beta.11", "tag" = "v0.38.3-beta.11", "git" = "https://github.com/lancedb/lance.git" } +lance-namespace = { "version" = "=0.38.3-beta.11", "tag" = "v0.38.3-beta.11", "git" = "https://github.com/lancedb/lance.git" } +lance-namespace-impls = { "version" = "=0.38.3-beta.11", "features" = ["dir-aws", "dir-gcp", "dir-azure", "dir-oss", "rest"], "tag" = "v0.38.3-beta.11", "git" = "https://github.com/lancedb/lance.git" } +lance-table = { "version" = "=0.38.3-beta.11", "tag" = "v0.38.3-beta.11", "git" = "https://github.com/lancedb/lance.git" } +lance-testing = { "version" = "=0.38.3-beta.11", "tag" = "v0.38.3-beta.11", "git" = "https://github.com/lancedb/lance.git" } +lance-datafusion = { "version" = "=0.38.3-beta.11", "tag" = "v0.38.3-beta.11", "git" = "https://github.com/lancedb/lance.git" } +lance-encoding = { "version" = "=0.38.3-beta.11", "tag" = "v0.38.3-beta.11", "git" = "https://github.com/lancedb/lance.git" } +lance-arrow = { "version" = "=0.38.3-beta.11", "tag" = "v0.38.3-beta.11", "git" = "https://github.com/lancedb/lance.git" } ahash = "0.8" # Note that this one does not include pyarrow arrow = { version = "56.2", optional = false } @@ -65,4 +65,4 @@ semver = "1.0.25" crunchy = "0.2.4" chrono = "0.4" # Workaround for: https://github.com/Lokathor/bytemuck/issues/306 -bytemuck_derive = ">=1.8.1, <1.9.0" \ No newline at end of file +bytemuck_derive = ">=1.8.1, <1.9.0" diff --git a/python/python/tests/test_namespace.py b/python/python/tests/test_namespace.py index c5ebecfc..f7bb83c1 100644 --- a/python/python/tests/test_namespace.py +++ b/python/python/tests/test_namespace.py @@ -59,6 +59,14 @@ class TempNamespace(LanceNamespace): root ] # Reference to shared namespaces + def namespace_id(self) -> str: + """Return a human-readable unique identifier for this namespace instance. + + Returns: + A unique identifier string based on the root directory + """ + return f"TempNamespace {{ root: '{self.config.root}' }}" + def list_tables(self, request: ListTablesRequest) -> ListTablesResponse: """List all tables in the namespace.""" if not request.id: diff --git a/rust/lancedb/Cargo.toml b/rust/lancedb/Cargo.toml index 98bf3e19..ab5328ab 100644 --- a/rust/lancedb/Cargo.toml +++ b/rust/lancedb/Cargo.toml @@ -44,7 +44,7 @@ lance-testing = { workspace = true } lance-encoding = { workspace = true } lance-arrow = { workspace = true } lance-namespace = { workspace = true } -lance-namespace-impls = { workspace = true, features = ["dir", "rest"] } +lance-namespace-impls = { workspace = true } moka = { workspace = true } pin-project = { workspace = true } tokio = { version = "1.23", features = ["rt-multi-thread"] } diff --git a/rust/lancedb/src/database/namespace.rs b/rust/lancedb/src/database/namespace.rs index e8c5c3a5..ac1ee897 100644 --- a/rust/lancedb/src/database/namespace.rs +++ b/rust/lancedb/src/database/namespace.rs @@ -14,7 +14,7 @@ use lance_namespace::{ }, LanceNamespace, }; -use lance_namespace_impls::connect::connect as connect_namespace; +use lance_namespace_impls::ConnectBuilder; use crate::database::listing::ListingDatabase; use crate::error::{Error, Result}; @@ -48,11 +48,16 @@ impl LanceNamespaceDatabase { read_consistency_interval: Option, session: Option>, ) -> Result { - let namespace = connect_namespace(ns_impl, ns_properties.clone()) - .await - .map_err(|e| Error::InvalidInput { - message: format!("Failed to connect to namespace: {:?}", e), - })?; + let mut builder = ConnectBuilder::new(ns_impl); + for (key, value) in ns_properties.clone() { + builder = builder.property(key, value); + } + if let Some(ref sess) = session { + builder = builder.session(sess.clone()); + } + let namespace = builder.connect().await.map_err(|e| Error::InvalidInput { + message: format!("Failed to connect to namespace: {:?}", e), + })?; Ok(Self { namespace,