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
ExecutionPlandesigned for serialization, where theforkStackcontains onlyForkIdvalues instead of fullForkobjects, and theoutputproperty 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
Forkcontains{forkId, output}, and we don't want to repeat large output objects in a Snapshot when variousforkStackarrays can reference the same output object. The Snapshot uniques output objects in itsmvccfield, andforkIdcan 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
ExecutionPlanby omitting theforkStackandoutputproperties and replacingforkStackwith a simplified version.