diff --git a/Cargo.lock b/Cargo.lock index edbf583c..f1e45def 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3141,8 +3141,8 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] name = "fsst" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow-array", "rand 0.9.2", @@ -4478,8 +4478,8 @@ dependencies = [ [[package]] name = "lance" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow", "arrow-arith", @@ -4544,13 +4544,14 @@ dependencies = [ [[package]] name = "lance-arrow" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow-array", "arrow-buffer", "arrow-cast", "arrow-data", + "arrow-ord", "arrow-schema", "arrow-select", "bytes", @@ -4563,8 +4564,8 @@ dependencies = [ [[package]] name = "lance-bitpacking" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrayref", "paste", @@ -4573,8 +4574,8 @@ dependencies = [ [[package]] name = "lance-core" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow-array", "arrow-buffer", @@ -4587,6 +4588,7 @@ dependencies = [ "datafusion-sql", "deepsize", "futures", + "itertools 0.13.0", "lance-arrow", "libc", "log", @@ -4610,8 +4612,8 @@ dependencies = [ [[package]] name = "lance-datafusion" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow", "arrow-array", @@ -4641,8 +4643,8 @@ dependencies = [ [[package]] name = "lance-datagen" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow", "arrow-array", @@ -4653,14 +4655,15 @@ dependencies = [ "half", "hex", "rand 0.9.2", + "rand_distr 0.5.1", "rand_xoshiro", "random_word 0.5.2", ] [[package]] name = "lance-encoding" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow-arith", "arrow-array", @@ -4697,8 +4700,8 @@ dependencies = [ [[package]] name = "lance-file" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow-arith", "arrow-array", @@ -4730,8 +4733,8 @@ dependencies = [ [[package]] name = "lance-geo" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "datafusion", "geo-types", @@ -4742,8 +4745,8 @@ dependencies = [ [[package]] name = "lance-index" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow", "arrow-arith", @@ -4789,6 +4792,7 @@ dependencies = [ "prost-types", "rand 0.9.2", "rand_distr 0.5.1", + "rangemap", "rayon", "roaring", "serde", @@ -4804,8 +4808,8 @@ dependencies = [ [[package]] name = "lance-io" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow", "arrow-arith", @@ -4845,8 +4849,8 @@ dependencies = [ [[package]] name = "lance-linalg" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow-array", "arrow-buffer", @@ -4862,8 +4866,8 @@ dependencies = [ [[package]] name = "lance-namespace" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow", "async-trait", @@ -4875,8 +4879,8 @@ dependencies = [ [[package]] name = "lance-namespace-impls" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow", "arrow-ipc", @@ -4905,9 +4909,9 @@ dependencies = [ [[package]] name = "lance-namespace-reqwest-client" -version = "0.0.18" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea349999bcda4eea53fc05d334b3775ec314761e6a706555c777d7a29b18d19" +checksum = "00a21b43fe2a373896727b97927adedd2683d2907683f294f62cf8815fbf6a01" dependencies = [ "reqwest", "serde", @@ -4918,8 +4922,8 @@ dependencies = [ [[package]] name = "lance-table" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow", "arrow-array", @@ -4958,8 +4962,8 @@ dependencies = [ [[package]] name = "lance-testing" -version = "1.0.1-beta.1" -source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0" +version = "2.0.0-beta.4" +source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc" dependencies = [ "arrow-array", "arrow-schema", diff --git a/Cargo.toml b/Cargo.toml index 0334bd1e..c82f1e3d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,20 +15,20 @@ categories = ["database-implementations"] rust-version = "1.78.0" [workspace.dependencies] -lance = { "version" = "=1.0.1-beta.1", default-features = false, "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" } -lance-core = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" } -lance-datagen = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" } -lance-file = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" } -lance-io = { "version" = "=1.0.1-beta.1", default-features = false, "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" } -lance-index = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" } -lance-linalg = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" } -lance-namespace = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" } -lance-namespace-impls = { "version" = "=1.0.1-beta.1", default-features = false, "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" } -lance-table = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" } -lance-testing = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" } -lance-datafusion = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" } -lance-encoding = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" } -lance-arrow = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" } +lance = { "version" = "=2.0.0-beta.4", default-features = false, "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" } +lance-core = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" } +lance-datagen = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" } +lance-file = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" } +lance-io = { "version" = "=2.0.0-beta.4", default-features = false, "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" } +lance-index = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" } +lance-linalg = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" } +lance-namespace = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" } +lance-namespace-impls = { "version" = "=2.0.0-beta.4", default-features = false, "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" } +lance-table = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" } +lance-testing = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" } +lance-datafusion = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" } +lance-encoding = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" } +lance-arrow = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" } ahash = "0.8" # Note that this one does not include pyarrow arrow = { version = "56.2", optional = false } diff --git a/python/src/connection.rs b/python/src/connection.rs index 92b77f55..357042fc 100644 --- a/python/src/connection.rs +++ b/python/src/connection.rs @@ -325,12 +325,12 @@ impl Connection { let inner = self_.get_inner()?.clone(); let py = self_.py(); future_into_py(py, async move { - use lance_namespace::models::{create_namespace_request, CreateNamespaceRequest}; - let mode_enum = mode.and_then(|m| match m.to_lowercase().as_str() { - "create" => Some(create_namespace_request::Mode::Create), - "exist_ok" => Some(create_namespace_request::Mode::ExistOk), - "overwrite" => Some(create_namespace_request::Mode::Overwrite), - _ => None, + use lance_namespace::models::CreateNamespaceRequest; + let mode_enum = mode.map(|m| match m.to_lowercase().as_str() { + "create" => "Create".to_string(), + "exist_ok" => "ExistOk".to_string(), + "overwrite" => "Overwrite".to_string(), + _ => m, }); let request = CreateNamespaceRequest { id: if namespace.is_empty() { @@ -360,16 +360,16 @@ impl Connection { let inner = self_.get_inner()?.clone(); let py = self_.py(); future_into_py(py, async move { - use lance_namespace::models::{drop_namespace_request, DropNamespaceRequest}; - let mode_enum = mode.and_then(|m| match m.to_uppercase().as_str() { - "SKIP" => Some(drop_namespace_request::Mode::Skip), - "FAIL" => Some(drop_namespace_request::Mode::Fail), - _ => None, + use lance_namespace::models::DropNamespaceRequest; + let mode_enum = mode.map(|m| match m.to_uppercase().as_str() { + "SKIP" => "Skip".to_string(), + "FAIL" => "Fail".to_string(), + _ => m, }); - let behavior_enum = behavior.and_then(|b| match b.to_uppercase().as_str() { - "RESTRICT" => Some(drop_namespace_request::Behavior::Restrict), - "CASCADE" => Some(drop_namespace_request::Behavior::Cascade), - _ => None, + let behavior_enum = behavior.map(|b| match b.to_uppercase().as_str() { + "RESTRICT" => "Restrict".to_string(), + "CASCADE" => "Cascade".to_string(), + _ => b, }); let request = DropNamespaceRequest { id: if namespace.is_empty() { diff --git a/rust/lancedb/src/database/namespace.rs b/rust/lancedb/src/database/namespace.rs index 6f05a057..4043819b 100644 --- a/rust/lancedb/src/database/namespace.rs +++ b/rust/lancedb/src/database/namespace.rs @@ -154,6 +154,7 @@ impl Database for LanceNamespaceDatabase { let describe_request = DescribeTableRequest { id: Some(table_id.clone()), version: None, + with_table_uri: None, }; let describe_result = self.namespace.describe_table(describe_request).await; diff --git a/rust/lancedb/src/table.rs b/rust/lancedb/src/table.rs index 9f8d16b5..aa0513f7 100644 --- a/rust/lancedb/src/table.rs +++ b/rust/lancedb/src/table.rs @@ -42,8 +42,8 @@ use lance_index::DatasetIndexExt; use lance_index::IndexType; use lance_io::object_store::LanceNamespaceStorageOptionsProvider; use lance_namespace::models::{ - QueryTableRequest as NsQueryTableRequest, QueryTableRequestFullTextQuery, - QueryTableRequestVector, StringFtsQuery, + QueryTableRequest as NsQueryTableRequest, QueryTableRequestColumns, + QueryTableRequestFullTextQuery, QueryTableRequestVector, StringFtsQuery, }; use lance_namespace::LanceNamespace; use lance_table::format::Manifest; @@ -2348,7 +2348,10 @@ impl NativeTable { // Convert select to columns list let columns = match &vq.base.select { Select::All => None, - Select::Columns(cols) => Some(cols.clone()), + Select::Columns(cols) => Some(Box::new(QueryTableRequestColumns { + column_names: Some(cols.clone()), + column_aliases: None, + })), Select::Dynamic(_) => { return Err(Error::NotSupported { message: @@ -2421,7 +2424,10 @@ impl NativeTable { let columns = match &q.select { Select::All => None, - Select::Columns(cols) => Some(cols.clone()), + Select::Columns(cols) => Some(Box::new(QueryTableRequestColumns { + column_names: Some(cols.clone()), + column_aliases: None, + })), Select::Dynamic(_) => { return Err(Error::NotSupported { message: "Dynamic columns are not supported for server-side query" @@ -5146,7 +5152,13 @@ mod tests { assert_eq!(ns_request.k, 10); assert_eq!(ns_request.offset, Some(5)); assert_eq!(ns_request.filter, Some("id > 0".to_string())); - assert_eq!(ns_request.columns, Some(vec!["id".to_string()])); + assert_eq!( + ns_request + .columns + .as_ref() + .and_then(|c| c.column_names.clone()), + Some(vec!["id".to_string()]) + ); assert_eq!(ns_request.vector_column, Some("vector".to_string())); assert_eq!(ns_request.distance_type, Some("l2".to_string())); assert!(ns_request.vector.single_vector.is_some()); @@ -5187,7 +5199,13 @@ mod tests { assert_eq!(ns_request.k, 20); assert_eq!(ns_request.offset, Some(5)); assert_eq!(ns_request.filter, Some("id > 5".to_string())); - assert_eq!(ns_request.columns, Some(vec!["id".to_string()])); + assert_eq!( + ns_request + .columns + .as_ref() + .and_then(|c| c.column_names.clone()), + Some(vec!["id".to_string()]) + ); assert_eq!(ns_request.with_row_id, Some(true)); assert_eq!(ns_request.bypass_vector_index, Some(true)); assert!(ns_request.vector_column.is_none()); // No vector column for plain queries diff --git a/rust/lancedb/src/table/dataset.rs b/rust/lancedb/src/table/dataset.rs index ea173429..50f6b647 100644 --- a/rust/lancedb/src/table/dataset.rs +++ b/rust/lancedb/src/table/dataset.rs @@ -100,7 +100,8 @@ impl DatasetRef { let should_checkout = match &target_ref { refs::Ref::Version(_, Some(target_ver)) => version != target_ver, refs::Ref::Version(_, None) => true, // No specific version, always checkout - refs::Ref::Tag(_) => true, // Always checkout for tags + refs::Ref::VersionNumber(target_ver) => version != target_ver, + refs::Ref::Tag(_) => true, // Always checkout for tags }; if should_checkout {