// 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()); }
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); }
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); }
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); }
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); }
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); }
public TSqlParserListenerExtended(FrostIDDLStatement statement, string input) { _ddlStatement = statement; _input = input; }