One of the first things we need to do is to have a representation of the plan cache key and value used for the sbe::PlanCache. This task should accomplish the following:
- Introduce a stub sbe::PlanCacheKey type. It can be a very simple placeholder like it is in the prototype branch.
- Introduce the sbe::CachedSbePlan type. This is a struct-like type which holds the SBE plan stage tree as well as the PlanStageData.
- Add the ability to clone the PlanStageData. We will need to be able to clone this object both when creating a new SBE plan cache entry, and when recovering an SBE plan from the cache.
Adding the ServiceContext decoration can be done under a separate ticket.