Example #1
0
        public override AlgebraNode VisitIndexSpoolAlgebraNode(IndexSpoolAlgebraNode node)
        {
            IndexSpoolIterator indexSpoolIterator = new IndexSpoolIterator();

            indexSpoolIterator.RowBuffer   = new object[node.OutputList.Length];
            indexSpoolIterator.Input       = ConvertAlgebraNode(node.Input);
            indexSpoolIterator.InputOutput = GetIteratorOutput(0, node.Input.OutputList, node.OutputList);
            indexSpoolIterator.IndexEntry  = GetIteratorInput(node.Input.OutputList, new RowBufferEntry[] { node.IndexEntry })[0];

            BoundRowBufferEntrySet boundRowBufferEntrySet = new BoundRowBufferEntrySet(indexSpoolIterator.Input.RowBuffer, node.Input.OutputList);

            indexSpoolIterator.ProbeExpression = CreateRuntimeExpression(node.ProbeExpression, boundRowBufferEntrySet);

            SetLastIterator(node, indexSpoolIterator);

            return(node);
        }
Example #2
0
		public override AlgebraNode VisitIndexSpoolAlgebraNode(IndexSpoolAlgebraNode node)
		{
			IndexSpoolIterator indexSpoolIterator = new IndexSpoolIterator();
			indexSpoolIterator.RowBuffer = new object[node.OutputList.Length];
			indexSpoolIterator.Input = ConvertAlgebraNode(node.Input);
			indexSpoolIterator.InputOutput = GetIteratorOutput(0, node.Input.OutputList, node.OutputList);
			indexSpoolIterator.IndexEntry = GetIteratorInput(node.Input.OutputList, new RowBufferEntry[] { node.IndexEntry })[0];

			BoundRowBufferEntrySet boundRowBufferEntrySet = new BoundRowBufferEntrySet(indexSpoolIterator.Input.RowBuffer, node.Input.OutputList);
			indexSpoolIterator.ProbeExpression = CreateRuntimeExpression(node.ProbeExpression, boundRowBufferEntrySet);

			SetLastIterator(node, indexSpoolIterator);

			return node;
		}