private static void parserTester(string input) { Console.WriteLine("{0}", input); try { AzSQLParseTree parseTree = AzSQL.ParseAzSQL(input); Console.WriteLine("{0}", parseTree.filterCondition.ToString()); } catch (AzSQLParseException ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Syntax Eror at line {0}, position {1}: {2}", ex.line, ex.charPosition, ex.Message); Console.ResetColor(); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Exception {0}: {1}", ex.GetType().FullName, ex.Message); Console.ResetColor(); } finally { Console.WriteLine("----------------------"); Console.WriteLine(); } }
internal static AzSQLParseTree ParseAzSQL(string input) { AntlrInputStream stream = new AntlrInputStream(input); ITokenSource lexer = new AzSQLLexer(stream); ITokenStream tokens = new CommonTokenStream(lexer); AzSQLParser parser = new AzSQLParser(tokens); parser.BuildParseTree = true; parser.RemoveErrorListeners(); parser.AddErrorListener(new ParsingErrorListener()); IParseTree tree = parser.stat(); MyVisitor visitor = new MyVisitor(); AzSQLParseTree parseTree = visitor.Visit(tree); return(parseTree); }
public static IEnumerable <DynamicTableEntity> RunQuery(AzSQLParseTree parseTree, StorageCredentials creds) { // We dont handle table exceptions here - let them bubble up for the caller to see the exception CloudStorageAccount storageAccount = new CloudStorageAccount(creds, true); CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); CloudTable table = tableClient.GetTableReference(parseTree.tablename); TableQuery query = new TableQuery(); if (parseTree.hasFilterCondition) { query.FilterString = parseTree.filterCondition.ToString(); } if (!parseTree.allcolumns) { query.SelectColumns = parseTree.columns; } IEnumerable <DynamicTableEntity> results = table.ExecuteQuery(query); return(results); }
public static IEnumerable <DynamicTableEntity> RunQuery(string sqlQuery, StorageCredentials creds) { AzSQLParseTree parseTree = ParseAzSQL(sqlQuery); return(AzTableQuery.RunQuery(parseTree, creds)); }