Skip to content

Commit e2b336d

Browse files
Merge pull request #274 from Tcode-Motion/optimize-sqlite-query-5241949040631126530
⚡ [Optimize database query allocations in sqlite]
2 parents f46ecc9 + 8379b47 commit e2b336d

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

‎stdlib/src/sqlite.rs‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,15 @@ impl StdlibRegistry {
181181
.collect();
182182

183183
let mut rows = Vec::new();
184+
185+
let mut template = IndexMap::with_capacity(col_count);
186+
for name in &col_names {
187+
template.insert(name.clone(), RuntimeValue::Null);
188+
}
189+
184190
let row_iter = stmt
185191
.query_map(rusqlite::params_from_iter(params), |row| {
186-
let mut map = IndexMap::with_capacity(col_count);
192+
let mut map = template.clone();
187193
for i in 0..col_count {
188194
let val = row.get_ref_unwrap(i);
189195
let rt_val = match val {
@@ -207,7 +213,9 @@ impl StdlibRegistry {
207213
)
208214
}
209215
};
210-
map.insert(col_names[i].clone(), rt_val);
216+
if let Some((_, v)) = map.get_index_mut(i) {
217+
*v = rt_val;
218+
}
211219
}
212220
Ok(map)
213221
})

0 commit comments

Comments
 (0)