#include #include #include #include #include #include #include #include #include #include using namespace DB; int main(int argc, const char **) { if (argc > 1) { std::cerr << "No arguments needed. Reads query from input until EOF" << std::endl; return 1; } std::istreambuf_iterator begin(std::cin), end; std::string query(begin, end); { std::vector queries; splitMultipartQuery(query, queries, 10000000, 10000); for (const auto & q : queries) { std::cout << std::endl << "Query:" << std::endl; std::cout << q << std::endl; ParserQuery parser(q.data() + q.size()); ASTPtr orig_ast = parseQuery(parser, q, 10000000, 10000); std::cout << std::endl << "New AST:" << std::endl; auto new_ast = parseQuery(q); new_ast->dump(); auto old_ast = new_ast->convertToOld(); if (orig_ast) { std::cout << std::endl << "Original AST:" << std::endl; WriteBufferFromOStream buf(std::cout, 1); orig_ast->dumpTree(buf); std::cout << std::endl << "Original query:" << std::endl; orig_ast->format({buf, false}); std::cout << std::endl; } if (old_ast) { std::cout << std::endl << "Converted AST:" << std::endl; WriteBufferFromOStream buf(std::cout, 1); old_ast->dumpTree(buf); std::cout << std::endl << "Converted query:" << std::endl; old_ast->format({buf, false}); std::cout << std::endl; } } } }