mirror of
https://github.com/pocoproject/poco.git
synced 2025-03-25 00:02:13 +01:00
fix(SQLite): windows build (global var does not link) #3018
This commit is contained in:
parent
1a662a113c
commit
d93a1885a1
@ -58,23 +58,5 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//
|
||||
// SQLite Transaction type
|
||||
//
|
||||
|
||||
namespace Poco {
|
||||
namespace Data {
|
||||
namespace SQLite {
|
||||
|
||||
extern const std::string TRANSACTION_TYPE_PROPERTY_KEY;
|
||||
|
||||
enum class TransactionType
|
||||
{
|
||||
DEFERRED,
|
||||
EXCLUSIVE,
|
||||
IMMEDIATE
|
||||
};
|
||||
|
||||
} } } // namespace Poco::Data::SQLite
|
||||
|
||||
#endif // SQLite_SQLite_INCLUDED
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
|
||||
#include "Poco/Data/SQLite/SQLite.h"
|
||||
#include "Poco/Data/SQLite/Utility.h"
|
||||
#include "Poco/Data/SQLite/Connector.h"
|
||||
#include "Poco/Data/SQLite/Binder.h"
|
||||
#include "Poco/Data/AbstractSessionImpl.h"
|
||||
@ -119,6 +120,7 @@ public:
|
||||
|
||||
void setTransactionType(TransactionType transactionType);
|
||||
/// Sets begin transaction type for the session.
|
||||
|
||||
TransactionType getTransactionType() const;
|
||||
/// Returns begin transaction type.
|
||||
|
||||
|
@ -43,6 +43,17 @@ class SQLite_API Utility
|
||||
/// Various utility functions for SQLite.
|
||||
{
|
||||
public:
|
||||
|
||||
// SQLite Transaction type
|
||||
static const std::string TRANSACTION_TYPE_PROPERTY_KEY;
|
||||
|
||||
enum class TransactionType
|
||||
{
|
||||
DEFERRED,
|
||||
EXCLUSIVE,
|
||||
IMMEDIATE
|
||||
};
|
||||
|
||||
static const std::string SQLITE_DATE_FORMAT;
|
||||
static const std::string SQLITE_TIME_FORMAT;
|
||||
typedef std::map<std::string, MetaColumn::ColumnDataType> TypeMap;
|
||||
@ -210,6 +221,9 @@ private:
|
||||
};
|
||||
|
||||
|
||||
using TransactionType = Utility::TransactionType;
|
||||
|
||||
|
||||
//
|
||||
// inlines
|
||||
//
|
||||
|
@ -38,7 +38,7 @@ namespace Poco {
|
||||
namespace Data {
|
||||
namespace SQLite {
|
||||
|
||||
const std::string TRANSACTION_TYPE_PROPERTY_KEY = "transactionType";
|
||||
|
||||
const std::string SessionImpl::DEFERRED_BEGIN_TRANSACTION("BEGIN DEFERRED");
|
||||
const std::string SessionImpl::EXCLUSIVE_BEGIN_TRANSACTION("BEGIN EXCLUSIVE");
|
||||
const std::string SessionImpl::IMMEDIATE_BEGIN_TRANSACTION("BEGIN IMMEDIATE");
|
||||
@ -61,7 +61,7 @@ SessionImpl::SessionImpl(const std::string& fileName, std::size_t loginTimeout):
|
||||
&SessionImpl::autoCommit,
|
||||
&SessionImpl::isAutoCommit);
|
||||
addProperty("connectionTimeout", &SessionImpl::setConnectionTimeout, &SessionImpl::getConnectionTimeout);
|
||||
addProperty(TRANSACTION_TYPE_PROPERTY_KEY, &SessionImpl::setTransactionType, &SessionImpl::getTransactionType);
|
||||
addProperty(Utility::TRANSACTION_TYPE_PROPERTY_KEY, &SessionImpl::setTransactionType, &SessionImpl::getTransactionType);
|
||||
}
|
||||
|
||||
|
||||
|
@ -37,6 +37,8 @@ namespace Data {
|
||||
namespace SQLite {
|
||||
|
||||
|
||||
const std::string Utility::TRANSACTION_TYPE_PROPERTY_KEY = "transactionType";
|
||||
|
||||
const int Utility::THREAD_MODE_SINGLE = SQLITE_CONFIG_SINGLETHREAD;
|
||||
const int Utility::THREAD_MODE_MULTI = SQLITE_CONFIG_MULTITHREAD;
|
||||
const int Utility::THREAD_MODE_SERIAL = SQLITE_CONFIG_SERIALIZED;
|
||||
|
@ -3205,7 +3205,8 @@ void SQLiteTest::testTransaction()
|
||||
std::string result;
|
||||
|
||||
session.setTransactionIsolation(Session::TRANSACTION_READ_COMMITTED);
|
||||
session.setProperty(Poco::Data::SQLite::TRANSACTION_TYPE_PROPERTY_KEY, Poco::Data::SQLite::TransactionType::EXCLUSIVE);
|
||||
session.setProperty(Poco::Data::SQLite::Utility::TRANSACTION_TYPE_PROPERTY_KEY,
|
||||
Poco::Data::SQLite::TransactionType::EXCLUSIVE);
|
||||
{
|
||||
Transaction trans(session);
|
||||
assertTrue (trans.isActive());
|
||||
@ -3227,7 +3228,8 @@ void SQLiteTest::testTransaction()
|
||||
session << "SELECT count(*) FROM Person", into(count), now;
|
||||
assertTrue (0 == count);
|
||||
assertTrue (!session.isTransaction());
|
||||
session.setProperty(Poco::Data::SQLite::TRANSACTION_TYPE_PROPERTY_KEY, Poco::Data::SQLite::TransactionType::IMMEDIATE);
|
||||
session.setProperty(Utility::TRANSACTION_TYPE_PROPERTY_KEY,
|
||||
Poco::Data::SQLite::TransactionType::IMMEDIATE);
|
||||
{
|
||||
Transaction trans(session);
|
||||
session << "INSERT INTO Person VALUES (?,?,?,?)", use(lastNames), use(firstNames), use(addresses), use(ages), now;
|
||||
@ -3442,8 +3444,8 @@ void SQLiteTest::testTransactionTypeProperty()
|
||||
using namespace Poco::Data::SQLite;
|
||||
|
||||
Session tmp(Connector::KEY, "dummy.db");
|
||||
tmp.setProperty(TRANSACTION_TYPE_PROPERTY_KEY, TransactionType::EXCLUSIVE);
|
||||
Poco::Any property = tmp.getProperty(TRANSACTION_TYPE_PROPERTY_KEY);
|
||||
tmp.setProperty(Utility::TRANSACTION_TYPE_PROPERTY_KEY, TransactionType::EXCLUSIVE);
|
||||
Poco::Any property = tmp.getProperty(Utility::TRANSACTION_TYPE_PROPERTY_KEY);
|
||||
TransactionType value = Poco::RefAnyCast<TransactionType>(property);
|
||||
assertTrue(value == TransactionType::EXCLUSIVE);
|
||||
} catch (Poco::Exception&) {}
|
||||
|
Loading…
x
Reference in New Issue
Block a user