mirror of
https://github.com/pocoproject/poco.git
synced 2024-12-13 10:32:57 +01:00
fix(Data): Make SQLParser internal
This commit is contained in:
parent
55fc2d0111
commit
0088334536
@ -24,7 +24,6 @@
|
||||
#include "Poco/Data/Range.h"
|
||||
#include "Poco/Data/Bulk.h"
|
||||
#include "Poco/Data/Row.h"
|
||||
#include "SQLParser.h"
|
||||
#include "Poco/Data/SimpleRowFormatter.h"
|
||||
#include "Poco/SharedPtr.h"
|
||||
#include "Poco/Mutex.h"
|
||||
@ -35,9 +34,14 @@
|
||||
#include <algorithm>
|
||||
|
||||
|
||||
namespace hsql {
|
||||
class SQLParserResult;
|
||||
}
|
||||
|
||||
namespace Poco {
|
||||
namespace Data {
|
||||
|
||||
namespace Parser = hsql; // namespace Poco::Data::Parser
|
||||
|
||||
class AbstractBinding;
|
||||
class AbstractExtraction;
|
||||
@ -537,10 +541,10 @@ private:
|
||||
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
|
||||
bool isType(Parser::StatementType type) const;
|
||||
bool isType(unsigned int type) const;
|
||||
/// Returns true if the statement is of the argument type.
|
||||
|
||||
bool hasType(Parser::StatementType type) const;
|
||||
bool hasType(unsigned int type) const;
|
||||
/// Returns true if the statement is of the argument type.
|
||||
|
||||
Poco::SharedPtr<Parser::SQLParserResult> _pParseResult;
|
||||
@ -568,113 +572,6 @@ inline std::size_t Statement::subTotalRowCount(int dataSet) const
|
||||
}
|
||||
|
||||
|
||||
inline const std::string& Statement::parseError()
|
||||
{
|
||||
#ifdef POCO_DATA_NO_SQL_PARSER
|
||||
static std::string empty;
|
||||
return empty;
|
||||
#else
|
||||
return _parseError;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
inline Optional<bool> Statement::isSelect() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return isType(Parser::StatementType::kStmtSelect);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
inline Optional<bool> Statement::isInsert() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return isType(Parser::StatementType::kStmtInsert);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
inline Optional<bool> Statement::isUpdate() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return isType(Parser::StatementType::kStmtUpdate);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
inline Optional<bool> Statement::isDelete() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return isType(Parser::StatementType::kStmtDelete);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
inline Optional<bool> Statement::hasSelect() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return hasType(Parser::StatementType::kStmtSelect);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
inline Optional<bool> Statement::hasInsert() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return hasType(Parser::StatementType::kStmtInsert);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
inline Optional<bool> Statement::hasUpdate() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return hasType(Parser::StatementType::kStmtUpdate);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
inline Optional<bool> Statement::hasDelete() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return hasType(Parser::StatementType::kStmtDelete);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
namespace Keywords {
|
||||
|
||||
|
||||
|
@ -12,6 +12,7 @@
|
||||
//
|
||||
|
||||
|
||||
#include "SQLParser.h"
|
||||
#include "Poco/Data/Statement.h"
|
||||
#include "Poco/Data/DataException.h"
|
||||
#include "Poco/Data/Extraction.h"
|
||||
@ -193,14 +194,15 @@ Optional<bool> Statement::parse()
|
||||
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
|
||||
bool Statement::isType(Parser::StatementType type) const
|
||||
bool Statement::isType(unsigned int type) const
|
||||
{
|
||||
const auto st = static_cast<Parser::StatementType>(type);
|
||||
std::size_t sz = _pParseResult->size();
|
||||
if (sz)
|
||||
{
|
||||
for (int i = 0; i < sz; ++i)
|
||||
{
|
||||
if (_pParseResult->getStatement(i)->type() != type)
|
||||
if (_pParseResult->getStatement(i)->type() != st)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@ -209,19 +211,128 @@ bool Statement::isType(Parser::StatementType type) const
|
||||
}
|
||||
|
||||
|
||||
bool Statement::hasType(Parser::StatementType type) const
|
||||
bool Statement::hasType(unsigned int type) const
|
||||
{
|
||||
const auto st = static_cast<Parser::StatementType>(type);
|
||||
for (int i = 0; i < _pParseResult->size(); ++i)
|
||||
{
|
||||
if (_pParseResult->getStatement(i)->type() == type)
|
||||
if (_pParseResult->getStatement(i)->type() == st)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
#endif // POCO_DATA_NO_SQL_PARSER
|
||||
|
||||
|
||||
const std::string& Statement::parseError()
|
||||
{
|
||||
#ifdef POCO_DATA_NO_SQL_PARSER
|
||||
static std::string empty;
|
||||
return empty;
|
||||
#else
|
||||
return _parseError;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Optional<bool> Statement::isSelect() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return isType(Parser::StatementType::kStmtSelect);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Optional<bool> Statement::isInsert() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return isType(Parser::StatementType::kStmtInsert);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Optional<bool> Statement::isUpdate() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return isType(Parser::StatementType::kStmtUpdate);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Optional<bool> Statement::isDelete() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return isType(Parser::StatementType::kStmtDelete);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Optional<bool> Statement::hasSelect() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return hasType(Parser::StatementType::kStmtSelect);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Optional<bool> Statement::hasInsert() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return hasType(Parser::StatementType::kStmtInsert);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Optional<bool> Statement::hasUpdate() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return hasType(Parser::StatementType::kStmtUpdate);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Optional<bool> Statement::hasDelete() const
|
||||
{
|
||||
#ifndef POCO_DATA_NO_SQL_PARSER
|
||||
if (_pImpl->session().shouldParse())
|
||||
return hasType(Parser::StatementType::kStmtDelete);
|
||||
else return Optional<bool>();
|
||||
#else
|
||||
return Optional<bool>();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void Statement::formatQuery()
|
||||
{
|
||||
if (_arguments.size())
|
||||
|
Loading…
Reference in New Issue
Block a user