Esempio n. 1
0
 private void HandleSelectStatementDistinct(SelectStatement selectStatement, KoraliumParser.Select_statementContext context)
 {
     if (context.DISTINCT() != null)
     {
         selectStatement.Distinct = true;
     }
 }
Esempio n. 2
0
        public override object VisitSelect_statement([NotNull] KoraliumParser.Select_statementContext context)
        {
            SelectStatement selectStatement = new SelectStatement();

            HandleSelectStatementSelectExpressions(selectStatement, context);
            HandleSelectStatementFromClause(selectStatement, context);
            HandleSelectStatementWhereClause(selectStatement, context);
            HandleSelectStatementGroupByClause(selectStatement, context);
            HandleSelectStatementHavingClause(selectStatement, context);
            HandleSelectStatementOrderByClause(selectStatement, context);
            HandleSelectStatementLimitOffset(selectStatement, context);
            HandleSelectStatementDistinct(selectStatement, context);

            return(selectStatement);
        }
 /// <summary>
 /// Exit a parse tree produced by <see cref="KoraliumParser.select_statement"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitSelect_statement([NotNull] KoraliumParser.Select_statementContext context)
 {
 }
Esempio n. 4
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="KoraliumParser.select_statement"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitSelect_statement([NotNull] KoraliumParser.Select_statementContext context)
 {
     return(VisitChildren(context));
 }
Esempio n. 5
0
        private void HandleSelectStatementWhereClause(SelectStatement selectStatement, KoraliumParser.Select_statementContext context)
        {
            var whereClauseNode = context.where_clause();

            if (whereClauseNode != null)
            {
                var whereClause = Visit(whereClauseNode) as WhereClause;

                if (whereClause == null)
                {
                    throw new SqlParserException("Could not parse where clause");
                }

                selectStatement.WhereClause = whereClause;
            }
        }
Esempio n. 6
0
        private void HandleSelectStatementFromClause(SelectStatement selectStatement, KoraliumParser.Select_statementContext context)
        {
            var fromClauseNode = context.from_clause();

            if (fromClauseNode != null)
            {
                var fromClause = Visit(fromClauseNode) as FromClause;

                if (fromClause == null)
                {
                    throw new SqlParserException("Could not parse from clause");
                }
                selectStatement.FromClause = fromClause;
            }
        }
Esempio n. 7
0
        private void HandleSelectStatementSelectExpressions(SelectStatement selectStatement, KoraliumParser.Select_statementContext context)
        {
            var selectExpressions = context.select_expression();

            if (selectExpressions != null)
            {
                foreach (var selectExpressionNode in selectExpressions)
                {
                    var selectExpression = Visit(selectExpressionNode) as SelectExpression;
                    if (selectExpression == null)
                    {
                        throw new SqlParserException("Could not parse select statement");
                    }
                    selectStatement.SelectElements.Add(selectExpression);
                }
            }
        }
Esempio n. 8
0
        private void HandleSelectStatementLimitOffset(SelectStatement selectStatement, KoraliumParser.Select_statementContext context)
        {
            if (context.limit != null || context.offset != null)
            {
                OffsetLimitClause offsetLimitClause = new OffsetLimitClause();
                if (context.limit != null)
                {
                    var limit = Visit(context.limit) as ScalarExpression;

                    if (limit == null)
                    {
                        throw new SqlParserException("Could not parse limit");
                    }
                    offsetLimitClause.Limit = limit;
                }
                if (context.offset != null)
                {
                    var offset = Visit(context.offset) as ScalarExpression;

                    if (offset == null)
                    {
                        throw new SqlParserException("Could not parse offset");
                    }
                    offsetLimitClause.Offset = offset;
                }
                selectStatement.OffsetLimitClause = offsetLimitClause;
            }
        }
Esempio n. 9
0
        private void HandleSelectStatementOrderByClause(SelectStatement selectStatement, KoraliumParser.Select_statementContext context)
        {
            var orderByNode = context.order_by_clause();

            if (orderByNode != null)
            {
                var orderByClause = Visit(orderByNode) as OrderByClause;

                if (orderByClause == null)
                {
                    throw new SqlParserException("Could not parse order by clause");
                }
                selectStatement.OrderByClause = orderByClause;
            }
        }
Esempio n. 10
0
        private void HandleSelectStatementHavingClause(SelectStatement selectStatement, KoraliumParser.Select_statementContext context)
        {
            var havingNode = context.having_clause();

            if (havingNode != null)
            {
                var havingClause = Visit(havingNode) as HavingClause;

                if (havingClause == null)
                {
                    throw new SqlParserException("Could not parse having clause");
                }
                selectStatement.HavingClause = havingClause;
            }
        }
Esempio n. 11
0
        private void HandleSelectStatementGroupByClause(SelectStatement selectStatement, KoraliumParser.Select_statementContext context)
        {
            var groupByNode = context.groupby_clause();

            if (groupByNode != null)
            {
                var groupByClause = Visit(groupByNode) as GroupByClause;

                if (groupByClause == null)
                {
                    throw new SqlParserException("Could not parse group by clause");
                }
                selectStatement.GroupByClause = groupByClause;
            }
        }