Create a single IFRContext per query and pass as shared pointer

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Query Integration
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      Today, we don't create the IFRContext until the ExpressionContext is built (here in the run_agg path, for example), and child ExpressionContexts (for sub-pipelines) get a copy of the IFRContext, meaning it's possible a child pipeline can see a different view than the parent pipeline of flags checked after that copy.

      Our IFR flag for the $vectorSearch extension needs to be checked during parsing. We will move creation of the IFRContext to the very top of the run_agg/cluster_agg path so that it can be available for any work done to prepare for and execute an aggregate command. 

      We also want to do our best to use a consistent (single) IFRContext across query processing, including across child pipelines. We'll make changes to pass the IFRContext as a shared_ptr and remove the copy that's performed for child ExpressionContexts. When we build any the expression context, we will pass the pointer to the existing IFRContext.

            Assignee:
            Daniel Segel
            Reporter:
            Will Buerger
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: