Beispiel #1
0
        public static QsiExpressionNode VisitCident(CidentContext context)
        {
            var node = new QsiColumnExpressionNode();

            node.Column.SetValue(TableVisitor.VisitCident(context));

            CqlTree.PutContextSpan(node, context);

            return(node);
        }
Beispiel #2
0
        public static QsiViewDefinitionNode VisitCreateMaterializedViewStatement(CreateMaterializedViewStatementContext context)
        {
            var node = new QsiViewDefinitionNode
            {
                Identifier = context.cf.id
            };

            node.Source.SetValue(TableVisitor.VisitCommonSelectStatement(new CommonSelectStatementContext(context)));

            CqlTree.PutContextSpan(node, context);

            return(node);
        }
Beispiel #3
0
        public static QsiActionNode VisitInsertStatement(InsertStatementContext context)
        {
            var node = new CqlDataInsertActionNode();
            UsingClauseContext usingClause;
            bool ifNotExists;

            node.Target.SetValue(TableVisitor.VisitColumnFamilyName(context.cf));

            if (context.st1 != null)
            {
                node.Columns = context.st1.cidentList().list
                               .Select(i => new QsiQualifiedIdentifier(i))
                               .ToArray();

                var rowNode = new QsiRowValueExpressionNode();
                rowNode.ColumnValues.AddRange(context.st1._values.Select(ExpressionVisitor.VisitTerm));
                // TODO: CqlTree.PutContextSpan(rowNode, context.st1...);

                node.Values.Add(rowNode);

                ifNotExists = context.st1.ifNotExists;
                usingClause = context.st1.usingClause();
            }
            else
            {
                var jsonValue = context.st2.jsonValue().s.raw;
                (QsiQualifiedIdentifier[] columns, var row) = JsonToRowValue(jsonValue);

                node.Columns = columns;
                node.Values.Add(row);
                node.DefaultValue = context.st2.defaultValue;

                ifNotExists = context.st2.ifNotExists;
                usingClause = context.st2.usingClause();
            }

            node.ConflictBehavior = ifNotExists ? QsiDataConflictBehavior.None : QsiDataConflictBehavior.Update;

            if (usingClause != null)
            {
                node.Usings.SetValue(ExpressionVisitor.VisitUsingClause(context.st2.usingClause()));
            }

            CqlTree.PutContextSpan(node, context);

            return(node);
        }
Beispiel #4
0
 public static QsiExpressionNode VisitUnaliasedSelector(UnaliasedSelectorContext context)
 {
     return(ConvertToExpression(TableVisitor.VisitUnaliasedSelector(context)));
 }
Beispiel #5
0
 public static QsiExpressionNode VisitSelectionGroupWithoutField(SelectionGroupWithoutFieldContext context)
 {
     return(ConvertToExpression(TableVisitor.VisitSelectionGroupWithoutField(context)));
 }