From a8ae71f7805136175e76343692f8c0b7eee3db6f 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 | 5 +++++ src/indexer/segment_updater.rs | 9 +-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bitpacker/Cargo.toml b/bitpacker/Cargo.toml index 104f5f805..e116e3b6d 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 d270647a9..b3fb672ed 100644 --- a/bitpacker/src/bitpacker.rs +++ b/bitpacker/src/bitpacker.rs @@ -113,6 +113,11 @@ 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 0128ab7bb..34c15fdb7 100644 --- a/src/indexer/segment_updater.rs +++ b/src/indexer/segment_updater.rs @@ -261,7 +261,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, @@ -302,7 +301,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, @@ -408,7 +406,6 @@ impl SegmentUpdater { }; // TODO add context to the error. save_metas(&index_meta, directory.box_clone().borrow_mut())?; - self.store_meta(&index_meta); } Ok(()) } @@ -449,12 +446,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 {