-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Critical - P2
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Query Optimization
-
None
-
None
-
None
-
None
-
None
-
None
-
None
NDV dispatches based on arrayness information. Today, it checks a multikey boolean that is populated before sampling CE. This means if multikeyness changes during sampling, the boolean is stale.
Because the NDV path arrayness assumptions are made after sampling CE, this means the yield/restore path does not invalidate on multikeyness metadata changes.
By the time sampling CE finishes, path arrayness information on SamplingEstimatorImpl may be stale. This can cause downstream problems such as SERVER-129716.
The recommended approach here, which is open for discussion, is to refresh path arrayness information after sampling CE. This means any later optimizations that operate on the sample will receive up-to-date path arrayness information at the point which sampling CE finished.
An alternative approach could be to eagerly populate arrayness assumptions prior to sampling.
In the longer term, we may consider an approach that draws arrayness assumptions directly from the sample, rather than relying on collection metadata.
- is related to
-
SERVER-129716 Multikey transition race during CBR sampling results in tassert
-
- Closed
-