delete_commit_file.md

July 29, 2022 · View on GitHub

A delete commit file has name <timestamped_name>.del and is located here:

my_array                              # array folder
   |_ ....
   |_ __commits                       # array commits folder
         |_ <timestamped_name>.del    # delete commit file
         |_ ...

<timestamped_name> has format __t1_t2_uuid_v, where:

  • t1 and t2 are timestamps in milliseconds elapsed since 1970-01-01 00:00:00 +0000 (UTC)
  • uuid is a unique identifier
  • v is the format version

There may be multiple such files in the array commits folder. Each delete commit file contains a tile with a serialized delete condition, which is a tree of nodes. Each node can be a value node or expression node. Expression nodes have the following on disk format:

FieldTypeDescription
Node typeuint8_t0 for expression node
Combination opuint8_tAND(0), OR(1), NOT(2)
Num childrenuint64_t[]Number of child nodes
Children 1NODEchildren 1
Children NNODEChildren N

Value nodes have the following on disk format:

FieldTypeDescription
Node typeuint8_t1 for value node
Opuint8_tLT(0), LE(1), GT(2), GE(3), EQ(4), NE(5)
Field name sizeuint32_tSize of the field name
Field name valueuint8_t[]Field name value
Value sizeuint64_tValue size
Value contentuint8_t[]Value