18 using System.Collections.Generic;
21 namespace Deveel.Data.Sql.Tables {
32 : base(new[] {left, right}) {
33 leftRowCount = left.RowCount;
34 rightRowCount = right.RowCount;
44 leftSet = !leftIsSimpleEnum ? left.Select(x => x.RowId.RowNumber).ToList() : null;
45 rightSet = !rightIsSimpleEnum ? right.Select(x => x.RowId.RowNumber).ToList() : null;
48 public override int RowCount {
51 return leftRowCount * rightRowCount;
59 return leftSet[rowIndex];
63 if (rightIsSimpleEnum)
66 return rightSet[rowIndex];
70 var rowList = rowSet.ToList();
71 bool pickRightTable = (tableNum == 1);
72 for (
int n = rowList.Count - 1; n >= 0; --n) {
77 parentRow = GetRightRowIndex(aa % rightRowCount);
79 parentRow = GetLeftRowIndex(aa / rightRowCount);
81 rowList[n] = parentRow;
84 return rowList.ToArray();
Defines the contract to access the data contained into a table of a database.
readonly int rightRowCount
readonly IList< int > rightSet
int GetRightRowIndex(int rowIndex)
int GetLeftRowIndex(int rowIndex)
NaturallyJoinedTable(ITable left, ITable right)
readonly bool rightIsSimpleEnum
override IEnumerable< int > ResolveRowsForTable(IEnumerable< int > rowSet, int tableNum)