Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
            }
        }