@@ -5,6 +5,7 @@ use super::filewriter::{build_binary_writer, Writer};
55use super :: record:: Record ;
66use crate :: record:: RecordAddress ;
77use crate :: table:: PageDirectory ;
8+ use log:: info;
89use serde:: { Deserialize , Serialize } ;
910use std:: collections:: HashSet ;
1011use std:: sync:: { Arc , Mutex } ;
@@ -47,6 +48,8 @@ impl PageRange {
4748
4849 /// Merge the two containers in a separate thread
4950 pub fn merge ( & mut self , page_directory : Arc < Mutex < PageDirectory > > ) {
51+ info ! ( "Starting merge!" ) ;
52+
5053 // println!("Merge: Pre-starting merge operation in a separate thread");
5154
5255 let base_container = self . base_container . clone ( ) ;
@@ -106,7 +109,7 @@ impl PageRange {
106109 let base_rid_address = tail_record. base_rid ( ) ;
107110 let base_rid = {
108111 // println!("Thread: Locking base_rid_address.page for base_rid");
109- let base_rid_page = base_rid_address. page . clone ( ) ;
112+ let base_rid_page = base_rid_address. page ;
110113 let page_guard = base_rid_page. lock ( ) . unwrap ( ) ;
111114 let brid = page_guard. data [ base_rid_address. offset as usize ] ;
112115 // println!("Thread: Retrieved base_rid: {}", brid);
@@ -177,7 +180,7 @@ impl PageRange {
177180
178181 for i in 0 ..tail_record. columns ( ) . len ( ) {
179182 // println!("Thread: Processing column {} for tail_record with base_rid: {}", i, base_rid);
180- let tail_col_page = tail_record. columns ( ) [ i] . page . clone ( ) ;
183+ let tail_col_page = & tail_record. columns ( ) [ i] . page ;
181184 let col_value = {
182185 let col_guard = tail_col_page. lock ( ) . unwrap ( ) ;
183186 let val = col_guard. data [ tail_record. columns ( ) [ i] . offset as usize ] ;
@@ -222,11 +225,11 @@ impl PageRange {
222225 for record in new_records {
223226 // println!("Main: Processing record with rid: {}", record.rid);
224227 let mut pd_guard = page_directory. lock ( ) . unwrap ( ) ;
225- let current_record = pd_guard. directory . get ( & record. rid ) . unwrap ( ) . clone ( ) ;
228+ let current_record = pd_guard. directory . get ( & record. rid ) . unwrap ( ) ;
226229
227230 let current_indir_val = {
228231 // println!("Main: Locking current_record.indirection().page for record {}", record.rid);
229- let indirection_page = current_record. indirection ( ) . page . clone ( ) ;
232+ let indirection_page = current_record. indirection ( ) . page ;
230233 let indir_guard = indirection_page. lock ( ) . unwrap ( ) ;
231234 let val = indir_guard. data [ current_record. indirection ( ) . offset as usize ] ;
232235 // println!("Main: Current indirection value for record {} is {}", record.rid, val);
@@ -235,14 +238,16 @@ impl PageRange {
235238
236239 if current_indir_val > self . base_container . tail_page_sequence {
237240 // println!("Main: Updating record {} indirection with value {}", record.rid, current_indir_val);
238- let record_indirection_page = record. indirection ( ) . page . clone ( ) ;
241+ let record_indirection_page = record. indirection ( ) . page ;
239242 let mut rec_indir_guard = record_indirection_page. lock ( ) . unwrap ( ) ;
240243 rec_indir_guard. data [ record. indirection ( ) . offset as usize ] = current_indir_val;
241244 }
242245 let rid = record. rid ;
243246 pd_guard. directory . insert ( rid, record) ;
244247 // println!("Main: Inserted record {} into page_directory", rid);
245248 }
249+
250+ info ! ( "Merge finished!" ) ;
246251 }
247252
248253 pub fn save_state ( & self ) {
0 commit comments