Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
 public static Bamboo.Query.Table Evaluate(object query, Bamboo.Query.Database database)
 {
     Bamboo.Query.Table              T    = new Bamboo.Query.Table(GetColumns(query));
     Bamboo.Query.Planning.Node      plan = Bamboo.Query.Planning.Planner.Plan(query, database);
     Bamboo.Query.Iterators.Iterator R    = plan.CreateIterator();
     R.Open();
     System.Collections.IList r;
     while ((r = R.GetNext()) != null)
     {
         T.AddRow(r);
     }
     R.Close();
     return(T);
 }
Exemplo n.º 4
0
        public OrderByNode(Bamboo.Query.Planning.Node node, Bamboo.Query.Query.OrderByClause orderBy)
        {
            this._node        = node;
            this._expressions = orderBy.Expressions;

            System.Collections.ArrayList columns = new System.Collections.ArrayList(this._expressions.Count);
            this._ascendingOrder = new bool[this._expressions.Count];
            for (int i = 0; i < this._expressions.Count; i++)
            {
                Bamboo.Query.Query.OrderByExpression orderByExpression = (Bamboo.Query.Query.OrderByExpression) this._expressions[i];
                this._ascendingOrder[i] = orderByExpression.Ascending;
                columns.Add(orderByExpression.Column);
            }

            this._indexes = GetIndexes(columns, this._node.ColumnCoordinates);
        }
Exemplo n.º 5
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;
        }
Exemplo n.º 6
0
 public UnionNode(Bamboo.Query.Planning.Node leftNode, Bamboo.Query.Planning.Node rightNode)
 {
     this._leftNode  = leftNode;
     this._rightNode = rightNode;
 }
Exemplo n.º 7
0
 public WhereNode(Bamboo.Query.Planning.Node node, Bamboo.Query.Query.WhereClause whereClause)
 {
     this._node      = node;
     this._predicate = whereClause.Predicate;
 }