A variation of ExecutionPlan designed for serialization, where the forkStack
contains only ForkId values instead of full Fork objects, and the output
property is omitted entirely. This design minimizes redundancy and reduces
the size of Snapshot objects, making them more efficient to store and transmit.
The reason for this is that Fork contains {forkId, output}, and we don't want
to repeat large output objects in a Snapshot when various forkStack arrays
can reference the same output object. The Snapshot uniques output objects in
its mvcc field, and forkId can be used as a key to retrieve the corresponding
output for the original Fork, thereby avoiding repeated output objects in the
forkStack.
This type is derived from ExecutionPlan by omitting the forkStack and output
properties and replacing forkStack with a simplified version.
The stack of fork identifiers associated with this execution plan.
Simplified to contain only ForkId values instead of full Fork objects
to make Snapshot objects much smaller in some cases.
A variation of
ExecutionPlan
designed for serialization, where theforkStack
contains onlyForkId
values instead of fullFork
objects, and theoutput
property is omitted entirely. This design minimizes redundancy and reduces the size of Snapshot objects, making them more efficient to store and transmit.The reason for this is that
Fork
contains{forkId, output}
, and we don't want to repeat large output objects in a Snapshot when variousforkStack
arrays can reference the same output object. The Snapshot uniques output objects in itsmvcc
field, andforkId
can be used as a key to retrieve the corresponding output for the originalFork
, thereby avoiding repeated output objects in theforkStack
.This type is derived from
ExecutionPlan
by omitting theforkStack
andoutput
properties and replacingforkStack
with a simplified version.