pub struct StoredPart {
pub stripe: usize,
pub part: usize,
pub row: usize,
pub rows: usize,
pub encoding: String,
pub bytes: u64,
pub page: u64,
pub offset: u64,
pub low: Option<Value>,
pub high: Option<Value>,
pub nulls: Option<usize>,
}Expand description
How one part of one column is stored, which is one row of pragma_storage_info.
Everything here is read off the file rather than worked out from the schema, because the whole question this answers is what the encoder chose, and the encoder chooses per part. Two files holding the same rows in a different order give different answers and that difference is the reason to ask.
The encoding costs a read of the column’s page, so this is not free the way Layout is. It is
one read per column per stripe rather than one per part, because a part is a few kilobytes out
of a page that is a quarter of a megabyte.
Fields§
§stripe: usizeWhich stripe the part belongs to.
part: usizeWhich part of that stripe it is, counting from zero inside the stripe.
row: usizeThe table wide row number the part starts at.
rows: usizeHow many rows it holds.
encoding: StringWhat the encoder made of it, as a line of text like DICT(PACKED, PACKED).
bytes: u64The stored bytes of the part, which is what it costs in the file.
page: u64Where in the file the column page holding this part starts.
offset: u64Where in that page the part starts.
low: Option<Value>The smallest value the part holds, when the stored ranges say.
high: Option<Value>The largest, same.
nulls: Option<usize>How many of its rows are null, when the stored ranges say.