From 67ea8e53a88f69ea5be45e6b0e67c9f5b43fd0fc Mon Sep 17 00:00:00 2001 From: Ming Ying Date: Fri, 6 Dec 2024 11:26:58 -0500 Subject: [PATCH] quickwit compiles --- bitpacker/Cargo.toml | 6 ++++-- bitpacker/src/bitpacker.rs | 10 ++++++++++ src/indexer/segment_updater.rs | 9 +-------- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/bitpacker/Cargo.toml b/bitpacker/Cargo.toml index 3b2a3e15e..99fc67081 100644 --- a/bitpacker/Cargo.toml +++ b/bitpacker/Cargo.toml @@ -11,11 +11,13 @@ keywords = [] documentation = "https://docs.rs/tantivy-bitpacker/latest/tantivy_bitpacker" homepage = "https://github.com/quickwit-oss/tantivy" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[features] +default = ["pg17"] +pg17 = ["pgrx/pg17"] [dependencies] bitpacking = { version = "0.9.2", default-features = false, features = ["bitpacker1x"] } +pgrx = "0.12.7" [dev-dependencies] rand = "0.8" diff --git a/bitpacker/src/bitpacker.rs b/bitpacker/src/bitpacker.rs index 1efd2755e..7a4c48020 100644 --- a/bitpacker/src/bitpacker.rs +++ b/bitpacker/src/bitpacker.rs @@ -113,6 +113,16 @@ impl BitUnpacker { #[inline(never)] fn get_slow_path(&self, addr: usize, bit_shift: u32, data: &[u8]) -> u64 { let mut bytes: [u8; 8] = [0u8; 8]; + + if addr > data.len() { + eprintln!( + "addr: {}, data.len(): {} tid: {}", + addr, + data.len(), + unsafe { pgrx::pg_sys::GetCurrentTransactionId() } + ); + } + let available_bytes = data.len() - addr; // This function is meant to only be called if we did not have 8 bytes to load. debug_assert!(available_bytes < 8); diff --git a/src/indexer/segment_updater.rs b/src/indexer/segment_updater.rs index 875913d83..9ecc80523 100644 --- a/src/indexer/segment_updater.rs +++ b/src/indexer/segment_updater.rs @@ -264,7 +264,6 @@ pub(crate) struct InnerSegmentUpdater { // // This should be up to date as all update happen through // the unique active `SegmentUpdater`. - active_index_meta: RwLock>, pool: ThreadPool, merge_thread_pool: ThreadPool, @@ -314,7 +313,6 @@ impl SegmentUpdater { })?; let index_meta = index.load_metas()?; Ok(SegmentUpdater(Arc::new(InnerSegmentUpdater { - active_index_meta: RwLock::new(Arc::new(index_meta)), pool, merge_thread_pool, index, @@ -420,7 +418,6 @@ impl SegmentUpdater { }; // TODO add context to the error. save_metas(&index_meta, directory.box_clone().borrow_mut())?; - self.store_meta(&index_meta); } Ok(()) } @@ -461,12 +458,8 @@ impl SegmentUpdater { }) } - fn store_meta(&self, index_meta: &IndexMeta) { - *self.active_index_meta.write().unwrap() = Arc::new(index_meta.clone()); - } - fn load_meta(&self) -> Arc { - self.active_index_meta.read().unwrap().clone() + Arc::new(self.index.load_metas().expect("Failed to load meta")) } pub(crate) fn make_merge_operation(&self, segment_ids: &[SegmentId]) -> MergeOperation {