Refresh path arrayness after sampling CE and check it before estimating NDV

XMLWordPrintableJSON

    • 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.

            Assignee:
            Unassigned
            Reporter:
            Evan Bergeron
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: