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
public static QsiLimitExpressionNode CreateLimit(ParserRuleContextWrapper <IntValueContext> context) { var node = new QsiLimitExpressionNode(); node.Limit.SetValue(VisitIntValue(context.Value)); CqlTree.PutContextSpan(node, context); return(node); }
public static QsiMultipleOrderExpressionNode CreateOrder(ParserRuleContextWrapper <OrderByClauseContext[]> context) { var node = new QsiMultipleOrderExpressionNode(); node.Orders.AddRange(context.Value.Select(VisitOrderByClause)); CqlTree.PutContextSpan(node, context); return(node); }
public static QsiGroupingExpressionNode CreateGrouping(ParserRuleContextWrapper <GroupByClauseContext[]> context) { var node = new QsiGroupingExpressionNode(); node.Items.AddRange(context.Value.Select(VisitGroupByClause)); CqlTree.PutContextSpan(node, context); return(node); }
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); }