public GroupByNode(Bamboo.Query.Planning.Node node, System.Collections.IList groupBy, System.Collections.IList select) { this._node = node; int[] indexes = GetIndexes(groupBy, this._node.ColumnCoordinates); Bamboo.Query.Aggregators.Aggregator[] aggregators = GetAggregators(select); this._indexes = indexes; this._aggregators = aggregators; ColumnCoordinate[] columnCoordinates = new ColumnCoordinate[groupBy.Count + aggregators.Length]; int i; for (i = 0; i < groupBy.Count; i++) { Bamboo.Query.Query.Column column = (Bamboo.Query.Query.Column)groupBy[i]; columnCoordinates[i] = new ColumnCoordinate(column.Identifier, i); } foreach (Bamboo.Query.Query.Column column in select) { if (column.Identifier.IndexOf("(") != -1) { string identifier = column.Identifier; string function = identifier.Substring(0, identifier.IndexOf("(")); int start = identifier.IndexOf("(") + 1; string columnIdentifier = identifier.Substring(start, identifier.Length - (start + 1)); columnCoordinates[i] = new ColumnCoordinate(function + "(" + columnIdentifier + ")", i); i++; } } this._columnCoordinates = columnCoordinates; }
public SelectNode(Bamboo.Query.Planning.Node node, System.Collections.IList select) { this._node = node; this._indexes = GetIndexes(select, this._node.ColumnCoordinates); ColumnCoordinate[] columnCoordinates = new ColumnCoordinate[select.Count]; for (int i = 0; i < columnCoordinates.Length; i++) { Bamboo.Query.Query.Column column = (Bamboo.Query.Query.Column)select[i]; columnCoordinates[i] = new ColumnCoordinate(column.Identifier, i); } this._columnCoordinates = columnCoordinates; }
public TableScanNode(string tableName, Bamboo.Query.Table table) { if (table == null) { throw new System.Exception("Table is not defined: " + tableName); } this._table = table; ColumnCoordinate[] columnCoordinates = new ColumnCoordinate[this._table.Columns.Count]; for (int i = 0; i < columnCoordinates.Length; i++) { columnCoordinates[i] = new ColumnCoordinate(tableName + "." + ((Bamboo.Query.Column) this._table.Columns[i]).Name, i); } this._columnCoordinates = columnCoordinates; }
public JoinNode(Bamboo.Query.Planning.Node leftNode, Bamboo.Query.Planning.Node rightNode, Bamboo.Query.Query.Column leftColumn, Bamboo.Query.Query.Column rightColumn) { this._leftNode = leftNode; this._rightNode = rightNode; this._leftRowIndex = GetIndex(leftColumn, this._leftNode.ColumnCoordinates); this._rightRowIndex = GetIndex(rightColumn, this._rightNode.ColumnCoordinates); System.Collections.IEnumerable leftNodeColumnCoordinates = this._leftNode.ColumnCoordinates; System.Collections.IEnumerable rightNodeColumnCoordinates = this._rightNode.ColumnCoordinates; int length = 0; foreach (ColumnCoordinate columnCoordinate in leftNodeColumnCoordinates) { object ignore = columnCoordinate; length++; } foreach (ColumnCoordinate columnCoordinate in rightNodeColumnCoordinates) { object ignore = columnCoordinate; length++; } ColumnCoordinate[] columnCoordinates = new ColumnCoordinate[length]; int i = 0; foreach (ColumnCoordinate columnCoordinate in leftNodeColumnCoordinates) { columnCoordinates[i] = new ColumnCoordinate(columnCoordinate.Name, i); i++; } foreach (ColumnCoordinate columnCoordinate in rightNodeColumnCoordinates) { columnCoordinates[i] = new ColumnCoordinate(columnCoordinate.Name, i); i++; } this._columnCoordinates = columnCoordinates; }