From b04f3d167b76725d76b843e19df992efac38390b Mon Sep 17 00:00:00 2001 From: Yuriy Dupyn <2153100+omedusyo@users.noreply.github.com> Date: Mon, 8 Jan 2024 14:24:30 +0100 Subject: [PATCH] Return reference in index_column.get() --- minisql/src/internals/column_index.rs | 7 ++----- minisql/src/internals/table.rs | 4 ++-- minisql/src/interpreter.rs | 3 ++- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/minisql/src/internals/column_index.rs b/minisql/src/internals/column_index.rs index f6c2a43..cdd331d 100644 --- a/minisql/src/internals/column_index.rs +++ b/minisql/src/internals/column_index.rs @@ -12,11 +12,8 @@ impl ColumnIndex { Self { index } } - pub fn get(&self, value: &IndexableValue) -> HashSet { - match self.index.get(value) { - Some(set) => set.clone(), - None => HashSet::new(), - } + pub fn get(&self, value: &IndexableValue) -> Option<&HashSet> { + self.index.get(value) } pub fn add(&mut self, value: IndexableValue, id: Uuid) { diff --git a/minisql/src/internals/table.rs b/minisql/src/internals/table.rs index 6728a5d..d4210b8 100644 --- a/minisql/src/internals/table.rs +++ b/minisql/src/internals/table.rs @@ -218,8 +218,8 @@ impl Table { } else { match self.indexes.get(&column_position) { Some(index) => { - let ids = index.get(value); - Ok(Some(ids)) + let ids = index.get(value).cloned(); + Ok(ids) } None => Ok(None), } diff --git a/minisql/src/interpreter.rs b/minisql/src/interpreter.rs index 2ee109d..4bd3f35 100644 --- a/minisql/src/interpreter.rs +++ b/minisql/src/interpreter.rs @@ -148,6 +148,7 @@ trait SqlResponseConsumer { #[cfg(test)] mod tests { use super::*; + use std::collections::HashSet; fn users_schema() -> TableSchema { let id: ColumnPosition = 0; @@ -505,7 +506,7 @@ mod tests { let plato_id = 0; let aristotle_id = 1; - let plato_ids = index.get(&String("Plato".to_string())); + let plato_ids = index.get(&String("Plato".to_string())).cloned().unwrap_or(HashSet::new()); assert!(plato_ids.contains(&plato_id)); assert!(!plato_ids.contains(&aristotle_id)); assert!(plato_ids.len() == 1);