Deveel.Data.Sql.Query.QueryExpressionFrom.FindExpression C# (CSharp) Method

FindExpression() public method

public FindExpression ( ObjectName alias ) : SqlExpression
alias ObjectName
return SqlExpression
        public SqlExpression FindExpression(ObjectName alias)
        {
            if (alias == null)
                throw new ArgumentNullException("alias");

            if (alias.Parent != null)
                return null;

            var aliasName = alias.Name;

            int matchCount = 0;
            SqlExpression expToRetun = null;
            foreach (var reference in expressionReferences) {
                if (matchCount > 1)
                    throw new AmbiguousMatchException(String.Format("Alias '{0}' resolves to multiple expressions in the plan", alias));

                if (CompareStrings(reference.Alias, aliasName)) {
                    expToRetun = reference.Expression;
                    matchCount++;
                }
            }

            return expToRetun;
        }

Usage Example

Ejemplo n.º 1
0
        private int ResolveGroupBy(SqlQueryExpression queryExpression, QueryExpressionFrom queryFrom, IRequest context, out ObjectName[] columnNames, out IList <SqlExpression> expressions)
        {
            var groupBy = queryExpression.GroupBy == null
                                ? new List <SqlExpression>(0)
                                : queryExpression.GroupBy.ToList();
            var groupBySize = groupBy.Count;

            expressions = new List <SqlExpression>();
            columnNames = new ObjectName[groupBySize];

            for (int i = 0; i < groupBySize; i++)
            {
                var expression = groupBy[i];

                // Prepare the group by expression
                expression = expression.Prepare(queryFrom.ExpressionPreparer);

                var columnName = expression.AsReferenceName();
                if (columnName != null)
                {
                    expression = queryFrom.FindExpression(columnName);
                }

                if (expression != null)
                {
                    if (expression.HasAggregate(context))
                    {
                        throw new InvalidOperationException(String.Format("Aggregate expression '{0}' is not allowed in a GROUP BY clause", expression));
                    }

                    expressions.Add(expression);
                    columnName = new ObjectName(FunctionTableName, String.Format("#GROUPBY-{0}", expressions.Count - 1));
                }

                columnNames[i] = columnName;
            }

            return(groupBySize);
        }
All Usage Examples Of Deveel.Data.Sql.Query.QueryExpressionFrom::FindExpression