Beispiel #1
0
        public static QsiTableNode VisitCommonSelectStatement(CommonSelectStatementContext context)
        {
            var node = new CqlDerivedTableNode
            {
                IsJson         = context.IsJson,
                IsDistinct     = context.IsDistinct,
                AllowFiltering = context.AllowFiltering
            };

            node.Columns.SetValue(VisitSelectors(context.Selectors));
            node.Source.SetValue(VisitColumnFamilyName(context.FromSource));

            if (context.WhereClause != null)
            {
                var whereContext = new ParserRuleContextWrapper <WhereClauseContext>
                                   (
                    context.WhereClause,
                    context.WhereStart,
                    context.WhereClause.Stop
                                   );

                node.Where.SetValue(ExpressionVisitor.CreateWhere(whereContext));
            }

            if (!ListUtility.IsNullOrEmpty(context.GroupByClauses))
            {
                var groupingContext = new ParserRuleContextWrapper <GroupByClauseContext[]>
                                      (
                    context.GroupByClauses,
                    context.GroupByStart,
                    context.GroupByClauses[^ 1].Stop
Beispiel #2
0
        public static QsiLimitExpressionNode CreateLimit(ParserRuleContextWrapper <IntValueContext> context)
        {
            var node = new QsiLimitExpressionNode();

            node.Limit.SetValue(VisitIntValue(context.Value));
            CqlTree.PutContextSpan(node, context);

            return(node);
        }
Beispiel #3
0
        public static QsiMultipleOrderExpressionNode CreateOrder(ParserRuleContextWrapper <OrderByClauseContext[]> context)
        {
            var node = new QsiMultipleOrderExpressionNode();

            node.Orders.AddRange(context.Value.Select(VisitOrderByClause));
            CqlTree.PutContextSpan(node, context);

            return(node);
        }
Beispiel #4
0
        public static QsiGroupingExpressionNode CreateGrouping(ParserRuleContextWrapper <GroupByClauseContext[]> context)
        {
            var node = new QsiGroupingExpressionNode();

            node.Items.AddRange(context.Value.Select(VisitGroupByClause));
            CqlTree.PutContextSpan(node, context);

            return(node);
        }
Beispiel #5
0
        public static QsiWhereExpressionNode CreateWhere(ParserRuleContextWrapper <WhereClauseContext> context)
        {
            var whereNode = new QsiWhereExpressionNode();

            var exprNode = CreateChainedBinaryExpression(
                "AND",
                context.Value.relationOrExpression(),
                VisitRelationOrExpression);

            whereNode.Expression.SetValue(exprNode);
            CqlTree.PutContextSpan(whereNode, context);

            return(whereNode);
        }