1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
#include "queryexecutorparsequery.h"
#include "db/queryexecutor.h"
#include "parser/parser.h"
#include <QDebug>
QueryExecutorParseQuery::QueryExecutorParseQuery(const QString& name)
: QueryExecutorStep()
{
setObjectName(name);
}
QueryExecutorParseQuery::~QueryExecutorParseQuery()
{
if (parser)
delete parser;
}
bool QueryExecutorParseQuery::exec()
{
// Prepare parser
if (parser)
delete parser;
parser = new Parser();
// Do parsing
context->parsedQueries.clear();
parser->parse(context->processedQuery);
if (parser->getErrors().size() > 0)
{
qWarning() << "QueryExecutorParseQuery:" << parser->getErrorString() << "\n"
<< "Query parsed:" << context->processedQuery;
return false;
}
if (parser->getQueries().size() == 0)
{
qWarning() << "No queries parsed in QueryExecutorParseQuery step.";
return false;
}
context->parsedQueries = parser->getQueries();
// We never want the semicolon in last query, because the query could be wrapped with a SELECT
context->parsedQueries.last()->tokens.trimRight(Token::OPERATOR, ";");
return true;
}
|