Exemple #1
0
        internal void Next(Sink sink)
        {
            int c = 0;

            if (_valuesFromA != null && _valuesFromB != null)
            {
                checkArgument(_valuesFromA.Length == _valuesFromB.Length, "Expected index and txState values to have same dimensions, but got %d values from index and %d from txState", _valuesFromB.Length, _valuesFromA.Length);

                for (int i = 0; c == 0 && i < _valuesFromA.Length; i++)
                {
                    c = Values.COMPARATOR.Compare(_valuesFromA[i], _valuesFromB[i]);
                }
            }

            if (_nextFromB == -1 || Integer.signum(c) == _indexOrder)
            {
                sink.AcceptSortedMergeJoin(_nextFromA, _valuesFromA);
                _nextFromA   = -1;
                _valuesFromA = null;
            }
            else
            {
                sink.AcceptSortedMergeJoin(_nextFromB, _valuesFromB);
                _nextFromB   = -1;
                _valuesFromB = null;
            }
        }