Exemplo n.º 1
0
    // end delete functions

    // create table functions
    public override void EnterCreate_table([NotNull] TSqlParser.Create_tableContext context)
    {
        base.EnterCreate_table(context);
        var createTable = new CreateTableStatement();

        createTable.RawStatement = context.GetText();
        _ddlStatement            = createTable;
        Debug.WriteLine(context.GetText());
    }
Exemplo n.º 2
0
        public QueryPlan GeneratePlan(FrostIDDLStatement statement, string databaseName)
        {
            QueryPlan plan = GeneratePlan(statement);

            if (statement is CreateDatabaseStatement)
            {
                plan.DatabaseName = (statement as CreateDatabaseStatement).DatabaseName;
            }
            else
            {
                plan.DatabaseName = databaseName;
            }

            return(plan);
        }
Exemplo n.º 3
0
        private FrostIDDLStatement GetDDLStatementType(string input)
        {
            FrostIDDLStatement result = null;

            if (input.Contains(QueryKeywords.CREATE_TABLE))
            {
                result = new CreateTableStatement();
            }

            if (input.Contains(QueryKeywords.CREATE_DATABASE))
            {
                result = new CreateDatabaseStatement();
            }

            return(result);
        }
Exemplo n.º 4
0
        public QueryPlan GeneratePlan(FrostIDDLStatement statement)
        {
            var plan = new QueryPlan();

            if (statement is CreateTableStatement)
            {
                plan = new CreateTableQueryPlanGenerator(_process).GeneratePlan((statement as CreateTableStatement));
            }

            if (statement is CreateDatabaseStatement)
            {
                plan = new CreateDatabaseQueryPlanGenerator(_process).GeneratePlan((statement as CreateDatabaseStatement));
            }

            return(plan);
        }
Exemplo n.º 5
0
        public QueryPlan GetPlan(string input)
        {
            var plan              = new QueryPlan();
            var items             = input.Split(';');
            var databaseStatement = string.Empty;
            var commandStatement  = string.Empty;

            if (items.Count() > 0)
            {
                databaseStatement = items[0];
                commandStatement  = items[1];
            }

            var databaseName = GetDatabaseName(databaseStatement);

            if (IsDDLStatment(input))
            {
                FrostIDDLStatement statement = GetDDLStatement(commandStatement, databaseName);

                if (string.IsNullOrEmpty(statement.DatabaseName))
                {
                    statement.DatabaseName = databaseName;
                }
                else
                {
                    databaseName = statement.DatabaseName;
                }
                plan = _planGenerator.GeneratePlan(statement, databaseName);
            }
            else
            {
                FrostIDMLStatement statement = GetDMLStatement(commandStatement, databaseName);
                statement.DatabaseName = databaseName;
                if (!statement.IsValid)
                {
                    var step = new SearchStep();
                    step.IsValid = false;
                    plan.Steps.Add(step);
                }
                else
                {
                    plan = _planGenerator.GeneratePlan(statement, databaseName);
                }
            }

            return(plan);
        }
Exemplo n.º 6
0
        private FrostIDDLStatement GetDDLStatement(string input, string databaseName)
        {
            FrostIDDLStatement         result = null;
            TSqlParserListenerExtended loader;
            var sqlStatement = string.Empty;

            if (HasParticipant(input))
            {
                sqlStatement = RemoveParticipantKeyword(input);
            }
            else
            {
                sqlStatement = input;
            }

            AntlrInputStream  inputStream = new AntlrInputStream(sqlStatement);
            TSqlLexer         lexer       = new TSqlLexer(inputStream);
            CommonTokenStream tokens      = new CommonTokenStream(lexer);
            TSqlParser        parser      = new TSqlParser(tokens);
            var             parseTree     = parser.ddl_clause();
            ParseTreeWalker walker        = new ParseTreeWalker();

            loader             = new TSqlParserListenerExtended(GetDDLStatementType(sqlStatement), sqlStatement);
            loader.TokenStream = tokens;
            walker.Walk(loader, parseTree);

            if (loader.IsStatementCreateTable())
            {
                result = loader.GetStatementAsCreateTable();
            }

            if (loader.IsStatementCreateDatabase())
            {
                result = loader.GetStatementAsCreateDatabase();
            }

            return(result);
        }
Exemplo n.º 7
0
 public TSqlParserListenerExtended(FrostIDDLStatement statement, string input)
 {
     _ddlStatement = statement;
     _input        = input;
 }