Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Header;
  2. Nullmap;
  3. Offset table;
  4. Value area.

Header

...

It contains only flags in 1 byte.

...

Size = 1 << (flags & 0b11)

NOTE: By the way, the last option works fine for C++ and possibly other languages but for Java it will be hard to support, so it might be excluded.

...

Nullmap is a bitset that contains `N` N bits, occupies ` (N + 7) / 8` 8 bytes, where `N` is the number of columns in the schema.

In the bitset every bit set to `1` means that the respective field is NULL.

Offset Table

The number of elements in the table is equal to the number of columns in the schema.

The size of table elements might be 1, 2, 4, or 8 bytes depending on the header flags.

Each element in the table specifies where the corresponding field ends. Or in other words, for each given field the table stores the offset where the next field starts. The last element in the table specifies the end of the last field and at the same time the end of the whole value area and consequently the end of the entire tuple.

The offset is measured relative to the start of the value area.

The start of the first element is implied and is always equal to zero.

Value area.

Contains data for each tuple field one after another as described above.

Field Values

Reference Links

1. IEP-54: Schema-first Approach

...