コード例 #1
0
ファイル: GroupByNode.cs プロジェクト: mstanford/water
        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;
        }
コード例 #2
0
ファイル: SelectNode.cs プロジェクト: mstanford/water
        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;
        }
コード例 #3
0
ファイル: TableScanNode.cs プロジェクト: mstanford/water
        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;
        }
コード例 #4
0
        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;
        }