Beispiel #1
0
        public static QsiTableNode VisitDmlStatement(DmlStatementContext context)
        {
            if (context.selectStatement() != null)
            {
                return(VisitSelectStatement(context.selectStatement()));
            }

            return(null);
        }
Beispiel #2
0
        public List <Statement> ParseDmlStatement(DmlStatementContext node)
        {
            List <Statement> statements = new List <Statement>();

            foreach (var child in node.children)
            {
                if (child is InsertStatementContext insert)
                {
                    InsertStatement statement = this.ParseInsertStatement(insert);

                    statements.Add(statement);
                }
                else if (child is DeleteStatementContext delete)
                {
                    statements.AddRange(this.ParseDeleteStatement(delete));
                }
                else if (child is UpdateStatementContext update)
                {
                    statements.Add(this.ParseUpdateStatement(update));
                }
                else if (child is SimpleSelectContext selectContext)
                {
                    SelectStatement statement = this.ParseSelectStatement(selectContext);

                    statements.Add(statement);
                }
                else if (child is CallStatementContext call)
                {
                    statements.Add(this.ParseCallStatement(call));
                }
                else if (child is UnionSelectContext union)
                {
                    statements.Add(this.ParseUnionSelect(union));
                }
            }

            return(statements);
        }
Beispiel #3
0
        public static IQueryPlanner VisitDmlStatementContext(DmlStatementContext context)
        {
            if (context.children.Count == 0)
            {
                return(null);
            }

            switch (context.children[0])
            {
            case SelectStatementContext selectStatementContext:
                return(new SelectPlanner(VisitSelectStatement(selectStatementContext)));

            case InsertStatementContext insertStatementContext:
                return(new InsertPlanner(VisitInsertStatement(insertStatementContext)));

            case UpdateStatementContext updateStatementContext:
                return(new UpdatePlanner(VisitUpdateStatement(updateStatementContext)));

            case DeleteStatementContext deleteStatementContext:
                return(new DeletePlanner(VisitDeleteStatement(deleteStatementContext)));
            }

            return(VisitorHelper.ThrowNotSupportedContext <IQueryPlanner>((ParserRuleContext)context.children[0]));
        }