ClickHouse/dbms/src/Interpreters/InterpreterQuery.cpp

51 lines
1.4 KiB
C++
Raw Normal View History

2011-10-30 11:30:52 +00:00
#include <DB/Parsers/ASTInsertQuery.h>
#include <DB/Parsers/ASTSelectQuery.h>
#include <DB/Parsers/ASTCreateQuery.h>
2011-11-05 23:31:19 +00:00
#include <DB/Parsers/ASTDropQuery.h>
2011-10-30 11:30:52 +00:00
#include <DB/Interpreters/InterpreterSelectQuery.h>
#include <DB/Interpreters/InterpreterInsertQuery.h>
#include <DB/Interpreters/InterpreterCreateQuery.h>
2011-11-05 23:31:19 +00:00
#include <DB/Interpreters/InterpreterDropQuery.h>
2011-10-30 11:30:52 +00:00
#include <DB/Interpreters/InterpreterQuery.h>
namespace DB
{
2012-03-05 00:09:41 +00:00
InterpreterQuery::InterpreterQuery(ASTPtr query_ptr_, Context & context_)
: query_ptr(query_ptr_), context(context_)
2011-10-30 11:30:52 +00:00
{
}
2012-01-09 19:20:48 +00:00
void InterpreterQuery::execute(WriteBuffer & ostr, ReadBuffer * remaining_data_istr, BlockInputStreamPtr & query_plan)
2011-10-30 11:30:52 +00:00
{
if (dynamic_cast<ASTSelectQuery *>(&*query_ptr))
{
2012-03-05 00:09:41 +00:00
InterpreterSelectQuery interpreter(query_ptr, context);
2011-10-30 11:30:52 +00:00
query_plan = interpreter.executeAndFormat(ostr);
}
else if (dynamic_cast<ASTInsertQuery *>(&*query_ptr))
{
2012-03-05 00:09:41 +00:00
InterpreterInsertQuery interpreter(query_ptr, context);
2011-10-30 11:30:52 +00:00
interpreter.execute(remaining_data_istr);
}
else if (dynamic_cast<ASTCreateQuery *>(&*query_ptr))
{
2012-03-05 00:09:41 +00:00
InterpreterCreateQuery interpreter(query_ptr, context);
2011-11-01 15:16:04 +00:00
interpreter.execute();
2011-10-30 11:30:52 +00:00
}
2011-11-05 23:31:19 +00:00
else if (dynamic_cast<ASTDropQuery *>(&*query_ptr))
{
InterpreterDropQuery interpreter(query_ptr, context);
interpreter.execute();
}
2011-10-30 11:30:52 +00:00
else
throw Exception("Unknown type of query: " + query_ptr->getID(), ErrorCodes::UNKNOWN_TYPE_OF_QUERY);
}
}