Use VersionedCollapsingMergeTree when you need collapsing with out-of-order inserts. The version column ensures correct collapse ordering regardless of insertion order:
import { OlapTable, ClickHouseEngines, Int8 } from "@514labs/moose-lib"; interface ExampleSchema { id: Key<string>; value: float; timestamp: datetime; sign: Int8; // Required: 1 = state row, -1 = cancel row version: number; // Required: version for ordering state changes} // Track user state with versioned collapsingconst exampleTable = new OlapTable<ExampleSchema>("versioned_collapsing_merge_tree_table", { engine: ClickHouseEngines.VersionedCollapsingMergeTree, orderByFields: ["id"], sign: "sign", ver: "version"});CollapsingMergeTree: Requires strictly consecutive insertion order. Use when you control insertion order (e.g., single writer).
VersionedCollapsingMergeTree: Uses a version column to handle out-of-order inserts. Use when multiple threads/sources insert data or order isn't guaranteed.
Both engines require the sign column to be type.
Int8For more details, see the ClickHouse documentation on CollapsingMergeTree and VersionedCollapsingMergeTree.