database name --- db-engine build level table name char[64] table name ---- fileheapname char[256] name for fileheap file attributes uint16 # attributes (recordsize) uint32 size of (fixed records, in bytes) attribute tablename char[64] table name FK(table.name) name char[64] attribute name basictype char[32] basic type name (s/uint8/16/32, char, varchar, binary, decimal) (length) uint32 maximum size of attribute --- basictype_i uint16 basic type binary coded (1..~13) attr_index uint16 index(order) of attribute --- MinMin binary[64] lowest possible minimum value MaxMin binary[64] highest possible minimum value MinMax binary[64] lowest possible maximum value MaxMax binary[64] highest possible maximum value Median binary[64] median value candidatekey tablename char[64] table name FK(table.name) keyname char[64] key name candidatekeyattribute tablename char[64] table name FK(candidatekey.tablename) keyname char[64] key name attrname char[64] attribute name FK(attribute.name) sequence name char[64] sequence name current_value uint32 current value of sequence min uint32 min value max uint32 max value wrap bool wrap around? --- index tablename char[64] table name type uint16 (sequential, lookup, secondary, kd) fileheapname1 char[256] name of fileheap containing index fileheapname2 char[256] indexattribute name char[64] name of index attr_order uint16 order of index attribute in index attrname char[64] attribute name lookup indexes: extendible hashing fixedfileheap (fileheapname1) containing array of recids varfileheap contains records: next_recid attr[] (binary) secondary indexes: varfileheap (2 attrs) attr1value1 ---> attr2value1 ---> recidblock1 | | | V V V attr1value2 attr2value2 recidblock2 | V attr1value3 kd index: varfileheap parent_recid recid index_index key less_recid equal_recid greater_recid equal_final