public static void InitializeSubselects( StatementContextRuntimeServices svc, Attribute[] annotations, IDictionary<int, SubSelectFactory> subselects) { EventTableFactoryFactoryContext tableFactoryContext = new ProxyEventTableFactoryFactoryContext( () => svc.EventTableIndexService, () => svc.RuntimeSettingsService, () => annotations); SubSelectStrategyFactoryContext context = new ProxySubSelectStrategyFactoryContext( () => svc.EventTableIndexService, () => tableFactoryContext); foreach (var subselect in subselects) { subselect.Value.Ready(context, false); } }
public void Ready(StatementContextRuntimeServices services) { var hasContext = false; for (var i = 0; i < Processors.Length; i++) { hasContext |= Processors[i].ContextName != null; } if (ContextName == null) { if (Processors.Length == 1) { if (!hasContext) { SelectExec = FAFQueryMethodSelectExecNoContextNoJoin.INSTANCE; } else { SelectExec = FAFQueryMethodSelectExecSomeContextNoJoin.INSTANCE; } } else { if (!hasContext) { SelectExec = FAFQueryMethodSelectExecNoContextJoin.INSTANCE; } else { SelectExec = FAFQueryMethodSelectExecSomeContextJoin.INSTANCE; } } } else { if (Processors.Length != 1) { throw new UnsupportedOperationException("Context name is not supported in a join"); } if (!hasContext) { throw new UnsupportedOperationException("Query target is unpartitioned"); } SelectExec = FAFQueryMethodSelectExecGivenContextNoJoin.INSTANCE; } if (!Subselects.IsEmpty()) { FAFQueryMethodUtil.InitializeSubselects(services, Annotations, Subselects); } }