Add which columns are indexable to store header

This commit is contained in:
Yuriy Dupyn 2024-02-04 19:00:50 +01:00
parent 4c0f91ad33
commit f2c17d2e66
5 changed files with 100 additions and 46 deletions

View file

@ -59,12 +59,17 @@ impl <T>Store<T> {
DirBuilder::new()
.create(path_to_table).await?;
let header = StoreHeader {
table_folder: table_folder.to_string(),
number_of_columns,
deleted_count: 0,
total_count: 0,
primary_column,
let header = {
let mut indexed_columns = vec![false; number_of_columns];
indexed_columns[primary_column as usize] = true;
StoreHeader {
table_folder: table_folder.to_string(),
number_of_columns,
deleted_count: 0,
total_count: 0,
primary_column,
indexed_columns,
}
};
// We don't need the file right now. Only cursors will later open it.
@ -117,9 +122,16 @@ impl <T>Store<T> {
// Unfortunately we can't yet use store.read_bytes, since it can't be created without the
// header.
let mut header_bytes = StoreHeader::decode_buffer();
file.read_exact(&mut header_bytes).await?;
let header = StoreHeader::decode(table_folder, &mut header_bytes).await?;
let header = {
let mut fixed_header_bytes = StoreHeader::buffer_for_fixed_decoding();
file.read_exact(&mut fixed_header_bytes).await?;
let fixed_header = StoreHeader::decode_fixed(table_folder, &fixed_header_bytes).await?;
// decode the indexes
let mut rest_bytes: Vec<u8> = StoreHeader::buffer_for_rest_decoding(&fixed_header);
file.read_exact(&mut rest_bytes).await?;
StoreHeader::decode_rest(fixed_header, &rest_bytes).await?
};
// let primary_index: Index<T, FilePosition> = Index::connect(