Type system categorization
Avi Kivity edited this page Feb 15, 2018
·
1 revision
Item | Scope | Description | Impact |
---|---|---|---|
atomic_cell | static | Structure of an atomic cell: timestamp, live/dead, tombstone, deletion time, value | Generating accessors for fields |
atomic_cell instance | runtime | Which variant of an atomic_cell is engaged for a particular value? | Storage compression |
underlying type | schema | Comparators, arithmetic, fixed vs. variable size | Accessors, comparators, arithmetic, whether an "empty bit" is needed |
collection vs. atomic | schema | whether to use atomic_cell or something else | Accessors |
static rows, clustering keys | schema | Whether they exist or not | run-time or llvm-time optional<> |
number of columns in row | schema | How many columns were defined in the schema | pre-determination of storage formats |
number of cells in row | runtime | How many cells are actually present | selection of sparse vs. dense storage format |
partition key, clustering key types | schema | What types make up a partition key or clustering key | Generation of comparators, hashers |
value | runtime | Actual value in cell | Whether we can use the small-string optimization or not, indirection |
collection | schema | Types of cells in collection, type of collection | Generation of accessors |
cell count in collection | runtime | Actual cell count in a mutation | Whether to use linear or treelike storage |