diff --git a/core/error.rs b/core/error.rs index cf59ff5f9..70274b24e 100644 --- a/core/error.rs +++ b/core/error.rs @@ -39,13 +39,13 @@ pub enum LimboError { #[macro_export] macro_rules! bail_parse_error { ($($arg:tt)*) => { - return Err(crate::error::LimboError::ParseError(format!($($arg)*))) + return Err($crate::error::LimboError::ParseError(format!($($arg)*))) }; } #[macro_export] macro_rules! bail_corrupt_error { ($($arg:tt)*) => { - return Err(crate::error::LimboError::Corrupt(format!($($arg)*))) + return Err($crate::error::LimboError::Corrupt(format!($($arg)*))) }; } diff --git a/core/io/darwin.rs b/core/io/darwin.rs index c2ec6345d..1f95cffcc 100644 --- a/core/io/darwin.rs +++ b/core/io/darwin.rs @@ -67,7 +67,7 @@ impl IO for DarwinIO { match cf { CompletionCallback::Read(ref file, ref c, pos) => { let mut file = file.borrow_mut(); - let c: &Completion = &c; + let c: &Completion = c; let r = match c { Completion::Read(r) => r, Completion::Write(_) => unreachable!(), diff --git a/core/storage/btree.rs b/core/storage/btree.rs index b5118d706..e1fe41990 100644 --- a/core/storage/btree.rs +++ b/core/storage/btree.rs @@ -376,7 +376,7 @@ impl BTreeCursor { let buf: &mut [u8] = buf_ref.as_mut_slice(); // copy data - buf[pc as usize..pc as usize + payload.len()].copy_from_slice(&payload); + buf[pc as usize..pc as usize + payload.len()].copy_from_slice(payload); // memmove(pIns+2, pIns, 2*(pPage->nCell - i)); let (pointer_area_pc_by_idx, _) = page.cell_get_raw_pointer_region(); let pointer_area_pc_by_idx = pointer_area_pc_by_idx + (2 * cell_idx); @@ -575,9 +575,8 @@ impl BTreeCursor { fn read_page_sync(&mut self, page_idx: usize) -> Rc> { loop { let page_ref = self.pager.read_page(page_idx); - match page_ref { - Ok(p) => return p, - Err(_) => {} + if let Ok(p) = page_ref { + return p; } } } @@ -646,7 +645,7 @@ impl BTreeCursor { let usable_space = (db_header.page_size - db_header.unused_space as u16) as usize; assert!(top + amount <= usable_space); - return top as u16; + top as u16 } fn defragment_page(&self, page: &PageContent, db_header: Ref) { @@ -795,8 +794,8 @@ impl BTreeCursor { // return SQLITE_CORRUPT_PAGE(pPage); // } // don't count header and cell pointers? - nfree = nfree - first_cell as usize; - return nfree as u16; + nfree -= first_cell as usize; + nfree as u16 } } @@ -809,7 +808,7 @@ fn find_free_cell(page_ref: &PageContent, db_header: Ref, amount let buf = buf_ref.as_slice(); let usable_space = (db_header.page_size - db_header.unused_space as u16) as usize; - let maxpc = (usable_space - amount); + let maxpc = usable_space - amount; let mut found = false; while pc <= maxpc { let next = u16::from_be_bytes(buf[pc..pc + 2].try_into().unwrap()); diff --git a/core/storage/database.rs b/core/storage/database.rs index 92c71dde5..16da1ed3f 100644 --- a/core/storage/database.rs +++ b/core/storage/database.rs @@ -30,8 +30,8 @@ impl DatabaseStorage for FileStorage { }; let size = r.buf().len(); assert!(page_idx > 0); - if size < 512 || size > 65536 || size & (size - 1) != 0 { - return Err(LimboError::NotADB.into()); + if !(512..=65536).contains(&size) || size & (size - 1) != 0 { + return Err(LimboError::NotADB); } let pos = (page_idx - 1) * size; self.file.pread(pos, c)?; diff --git a/core/storage/pager.rs b/core/storage/pager.rs index 023bfb1aa..972eb6aa5 100644 --- a/core/storage/pager.rs +++ b/core/storage/pager.rs @@ -115,7 +115,7 @@ struct DumbLruPageCache { impl DumbLruPageCache { pub fn new(capacity: usize) -> Self { Self { - capacity: capacity, + capacity, map: RefCell::new(HashMap::new()), head: RefCell::new(None), tail: RefCell::new(None), @@ -125,7 +125,7 @@ impl DumbLruPageCache { pub fn insert(&mut self, key: usize, value: Rc>) { self.delete(key); let mut entry = Box::new(PageCacheEntry { - key: key, + key, next: None, prev: None, page: value, @@ -156,22 +156,17 @@ impl DumbLruPageCache { fn get_ptr(&mut self, key: usize) -> Option> { let m = self.map.borrow_mut(); let ptr = m.get(&key); - match ptr { - Some(v) => Some(*v), - None => None, - } + ptr.copied() } pub fn get(&mut self, key: &usize) -> Option>> { let ptr = self.get_ptr(*key); - if ptr.is_none() { - return None; - } + ptr?; let ptr = unsafe { ptr.unwrap().as_mut() }; let page = ptr.page.clone(); self.detach(ptr); self.touch(ptr); - return Some(page); + Some(page) } pub fn resize(&mut self, capacity: usize) { @@ -385,7 +380,7 @@ impl Pager { */ pub fn allocate_page(&self) -> Result>> { let header = &self.db_header; - let mut header = RefCell::borrow_mut(&header); + let mut header = RefCell::borrow_mut(header); header.database_size += 1; { // update database size diff --git a/core/storage/sqlite3_ondisk.rs b/core/storage/sqlite3_ondisk.rs index 885c8cd90..c1beac2ec 100644 --- a/core/storage/sqlite3_ondisk.rs +++ b/core/storage/sqlite3_ondisk.rs @@ -827,7 +827,7 @@ pub fn write_varint(buf: &mut [u8], value: u64) -> usize { for i in 0..n { buf[i] = encoded[n - 1 - i]; } - return n; + n } pub fn begin_read_wal_header(io: &Box) -> Result>> { diff --git a/core/translate/expr.rs b/core/translate/expr.rs index 49dec6b55..10217f9a0 100644 --- a/core/translate/expr.rs +++ b/core/translate/expr.rs @@ -195,9 +195,8 @@ pub fn translate_expr( for arg in args { let reg = program.alloc_register(); let _ = translate_expr(program, select, arg, reg, cursor_hint)?; - match arg { - ast::Expr::Literal(_) => program.mark_last_insn_constant(), - _ => {} + if let ast::Expr::Literal(_) = arg { + program.mark_last_insn_constant() } } program.emit_insn(Insn::Function { @@ -269,7 +268,7 @@ pub fn translate_expr( } } program.emit_insn(Insn::Function { - start_reg: start_reg, + start_reg, dest: target_register, func: ScalarFunc::Date, }); @@ -293,7 +292,7 @@ pub fn translate_expr( } } program.emit_insn(Insn::Function { - start_reg: start_reg, + start_reg, dest: target_register, func: ScalarFunc::Time, }); @@ -334,7 +333,7 @@ pub fn translate_expr( } ScalarFunc::Min => { let args = if let Some(args) = args { - if args.len() < 1 { + if args.is_empty() { crate::bail_parse_error!( "min function with less than one argument" ); @@ -346,9 +345,8 @@ pub fn translate_expr( for arg in args { let reg = program.alloc_register(); let _ = translate_expr(program, select, arg, reg, cursor_hint)?; - match arg { - ast::Expr::Literal(_) => program.mark_last_insn_constant(), - _ => {} + if let ast::Expr::Literal(_) = arg { + program.mark_last_insn_constant() } } @@ -361,7 +359,7 @@ pub fn translate_expr( } ScalarFunc::Max => { let args = if let Some(args) = args { - if args.len() < 1 { + if args.is_empty() { crate::bail_parse_error!( "max function with less than one argument" ); @@ -373,9 +371,8 @@ pub fn translate_expr( for arg in args { let reg = program.alloc_register(); let _ = translate_expr(program, select, arg, reg, cursor_hint)?; - match arg { - ast::Expr::Literal(_) => program.mark_last_insn_constant(), - _ => {} + if let ast::Expr::Literal(_) = arg { + program.mark_last_insn_constant() } } diff --git a/core/translate/insert.rs b/core/translate/insert.rs index a4949f00c..38affd594 100644 --- a/core/translate/insert.rs +++ b/core/translate/insert.rs @@ -172,9 +172,7 @@ pub fn translate_insert( record_reg: record_register, flag: 0, }); - program.emit_insn(Insn::InsertAwait { - cursor_id: cursor_id, - }); + program.emit_insn(Insn::InsertAwait { cursor_id }); } program.emit_insn(Insn::Goto { diff --git a/core/translate/select.rs b/core/translate/select.rs index 44079de70..6ad74977b 100644 --- a/core/translate/select.rs +++ b/core/translate/select.rs @@ -50,10 +50,8 @@ impl SrcTable<'_> { { if *join_type == JoinType::LEFT | JoinType::OUTER { true - } else if *join_type == JoinType::RIGHT | JoinType::OUTER { - true } else { - false + *join_type == JoinType::RIGHT | JoinType::OUTER } } else { false diff --git a/core/translate/where_clause.rs b/core/translate/where_clause.rs index d52b44073..5de13bc12 100644 --- a/core/translate/where_clause.rs +++ b/core/translate/where_clause.rs @@ -374,14 +374,12 @@ fn translate_condition_expr( let lhs_reg = program.alloc_register(); let rhs_reg = program.alloc_register(); let _ = translate_expr(program, Some(select), lhs, lhs_reg, cursor_hint); - match lhs.as_ref() { - ast::Expr::Literal(_) => program.mark_last_insn_constant(), - _ => {} + if let ast::Expr::Literal(_) = lhs.as_ref() { + program.mark_last_insn_constant() } let _ = translate_expr(program, Some(select), rhs, rhs_reg, cursor_hint); - match rhs.as_ref() { - ast::Expr::Literal(_) => program.mark_last_insn_constant(), - _ => {} + if let ast::Expr::Literal(_) = rhs.as_ref() { + program.mark_last_insn_constant() } match op { ast::Operator::Greater => { @@ -757,26 +755,24 @@ fn translate_condition_expr( condition_metadata.jump_target_when_false, ); } + } else if condition_metadata.jump_if_condition_is_true { + program.emit_insn_with_label_dependency( + Insn::IfNot { + reg: cur_reg, + target_pc: condition_metadata.jump_target_when_true, + null_reg: cur_reg, + }, + condition_metadata.jump_target_when_true, + ); } else { - if condition_metadata.jump_if_condition_is_true { - program.emit_insn_with_label_dependency( - Insn::IfNot { - reg: cur_reg, - target_pc: condition_metadata.jump_target_when_true, - null_reg: cur_reg, - }, - condition_metadata.jump_target_when_true, - ); - } else { - program.emit_insn_with_label_dependency( - Insn::If { - reg: cur_reg, - target_pc: condition_metadata.jump_target_when_false, - null_reg: cur_reg, - }, - condition_metadata.jump_target_when_false, - ); - } + program.emit_insn_with_label_dependency( + Insn::If { + reg: cur_reg, + target_pc: condition_metadata.jump_target_when_false, + null_reg: cur_reg, + }, + condition_metadata.jump_target_when_false, + ); } } _ => todo!("op {:?} not implemented", expr), diff --git a/core/types.rs b/core/types.rs index c94f6fb1f..cc0165a61 100644 --- a/core/types.rs +++ b/core/types.rs @@ -352,7 +352,7 @@ impl OwnedRecord { } assert!(header_size <= 126); header_bytes_buf.extend(std::iter::repeat(0).take(9)); - let n = write_varint(&mut header_bytes_buf.as_mut_slice(), header_size as u64); + let n = write_varint(header_bytes_buf.as_mut_slice(), header_size as u64); header_bytes_buf.truncate(n); buf.splice(initial_i..initial_i, header_bytes_buf.iter().cloned()); } diff --git a/core/vdbe/datetime.rs b/core/vdbe/datetime.rs index 2e414ced5..30cc3d8ff 100644 --- a/core/vdbe/datetime.rs +++ b/core/vdbe/datetime.rs @@ -111,7 +111,7 @@ fn get_date_time_from_time_value_integer(value: i64) -> Option { } fn get_date_time_from_time_value_float(value: f64) -> Option { - if value.is_infinite() || value.is_nan() || value < 0.0 || value >= 5373484.5 { + if value.is_infinite() || value.is_nan() || !(0.0..5373484.5).contains(&value) { return None; } match julian_day_converter::julian_day_to_datetime(value) { diff --git a/core/vdbe/explain.rs b/core/vdbe/explain.rs index a05eb9f58..53020cd3c 100644 --- a/core/vdbe/explain.rs +++ b/core/vdbe/explain.rs @@ -686,6 +686,6 @@ pub fn insn_to_str( p3, p4.to_string(), p5, - manual_comment.map_or(format!("{}", comment), |mc| format!("{}; {}", comment, mc)) + manual_comment.map_or(comment.to_string(), |mc| format!("{}; {}", comment, mc)) ) } diff --git a/core/vdbe/mod.rs b/core/vdbe/mod.rs index 8f807d030..38bf513cc 100644 --- a/core/vdbe/mod.rs +++ b/core/vdbe/mod.rs @@ -439,7 +439,7 @@ impl Program { (OwnedValue::Float(lhs), OwnedValue::Float(rhs)) => { state.registers[dest] = OwnedValue::Float(lhs + rhs); } - ((OwnedValue::Null, _) | (_, OwnedValue::Null)) => { + (OwnedValue::Null, _) | (_, OwnedValue::Null) => { state.registers[dest] = OwnedValue::Null; } _ => {