From 7e96a42f2340bb5ad075e012054101b96adba8c6 Mon Sep 17 00:00:00 2001 From: ChilePiquin Date: Fri, 28 Aug 2026 22:03:02 -0700 Subject: [PATCH] feat: allow explicit index builder uuid --- rust/lancedb/src/index.rs | 8 ++++++++ rust/lancedb/src/table/create_index.rs | 3 +++ 2 files changed, 11 insertions(+) diff --git a/rust/lancedb/src/index.rs b/rust/lancedb/src/index.rs index c693dc056..8017c5ebe 100644 --- a/rust/lancedb/src/index.rs +++ b/rust/lancedb/src/index.rs @@ -189,6 +189,7 @@ pub struct IndexBuilder { pub(crate) index: Index, pub(crate) columns: Vec, pub(crate) replace: bool, + pub(crate) index_uuid: Option, pub(crate) wait_timeout: Option, pub(crate) train: bool, pub(crate) name: Option, @@ -201,6 +202,7 @@ impl IndexBuilder { index, columns, replace: true, + index_uuid: None, train: true, wait_timeout: None, name: None, @@ -217,6 +219,12 @@ impl IndexBuilder { self } + /// Use a caller-selected UUID for the created index. + pub fn index_uuid(mut self, uuid: uuid::Uuid) -> Self { + self.index_uuid = Some(uuid); + self + } + /// The name of the index. If not set, a default name will be generated. /// /// # Examples diff --git a/rust/lancedb/src/table/create_index.rs b/rust/lancedb/src/table/create_index.rs index c7d6b5675..b47ebf6f6 100644 --- a/rust/lancedb/src/table/create_index.rs +++ b/rust/lancedb/src/table/create_index.rs @@ -156,6 +156,9 @@ impl NativeTable { .train(opts.train) .replace(opts.replace); + if let Some(index_uuid) = opts.index_uuid { + builder = builder.index_uuid(index_uuid); + } if let Some(name) = opts.name { builder = builder.name(name); }