Ejemplo n.º 1
0
        protected override ISqlNode OnChildNode(ISqlNode node)
        {
            if (node.NodeName == "sql_query_expression") {
                QueryExpression = node as SqlQueryExpressionNode;
            } else if (node.NodeName == "order_opt") {
                GetOrderBy(node);
            }

            return base.OnChildNode(node);
        }
Ejemplo n.º 2
0
        /// <inheritdoc/>
        protected override ISqlNode OnChildNode(ISqlNode node)
        {
            if (node is SqlQueryExpressionNode) {
                Query = (SqlQueryExpressionNode)node;
            } else if (node.NodeName == "select_as_opt") {
                Alias = (IdentifierNode)node.ChildNodes.FirstOrDefault();
            }

            return base.OnChildNode(node);
        }
Ejemplo n.º 3
0
 public virtual void VisitQueryExpression(SqlQueryExpressionNode node)
 {
 }
Ejemplo n.º 4
0
        private IEnumerable<SelectColumn> GetSelectColumns(SqlQueryExpressionNode node)
        {
            if (node.IsAll) {
                return new[] {new SelectColumn(SqlExpression.Reference(new ObjectName("*")))};
            }

            var items = new List<SelectColumn>();
            foreach (var item in node.SelectItems) {
                SqlExpression exp;
                if (item.Name != null) {
                    exp = SqlExpression.Reference(ObjectName.Parse(item.Name.Name));
                } else if (item.Expression != null) {
                    exp = Build(item.Expression);
                } else {
                    throw new InvalidOperationException();
                }

                string alias = null;
                if (item.Alias != null)
                    alias = item.Alias.Text;

                items.Add(new SelectColumn(exp, alias));
            }

            return items.ToArray();
        }
Ejemplo n.º 5
0
        public override void VisitQueryExpression(SqlQueryExpressionNode node)
        {
            var selectColumns = GetSelectColumns(node);
            var exp = new SqlQueryExpression(selectColumns);

            if (node.FromClause != null) {
                SetFromClause(exp.FromClause, node.FromClause);
            }

            if (node.WhereExpression != null) {
                exp.WhereExpression = Build(node.WhereExpression);
            }

            if (node.GroupBy != null) {
                var groupBy = new List<SqlExpression>();
                if (node.GroupBy.GroupExpressions != null)
                    groupBy.AddRange(node.GroupBy.GroupExpressions.Select(Build));

                exp.GroupBy = groupBy.ToList();

                var having = node.GroupBy.HavingExpression;
                if (having != null)
                    exp.HavingExpression = Build(having);

            }

            if (node.Composite != null) {
                var compositeExp = Build(node.Composite.QueryExpression);
                exp.NextComposite = compositeExp as SqlQueryExpression;
                exp.IsCompositeAll = node.Composite.IsAll;
                exp.CompositeFunction = GetCompositeFunction(node.Composite.CompositeFunction);
            }

            outputExpression = exp;
        }