mirror of
https://github.com/pocoproject/poco.git
synced 2025-03-31 16:04:27 +02: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
|
||||||
#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
|
#endif // SQLite_SQLite_INCLUDED
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "Poco/Data/SQLite/SQLite.h"
|
#include "Poco/Data/SQLite/SQLite.h"
|
||||||
|
#include "Poco/Data/SQLite/Utility.h"
|
||||||
#include "Poco/Data/SQLite/Connector.h"
|
#include "Poco/Data/SQLite/Connector.h"
|
||||||
#include "Poco/Data/SQLite/Binder.h"
|
#include "Poco/Data/SQLite/Binder.h"
|
||||||
#include "Poco/Data/AbstractSessionImpl.h"
|
#include "Poco/Data/AbstractSessionImpl.h"
|
||||||
@ -119,6 +120,7 @@ public:
|
|||||||
|
|
||||||
void setTransactionType(TransactionType transactionType);
|
void setTransactionType(TransactionType transactionType);
|
||||||
/// Sets begin transaction type for the session.
|
/// Sets begin transaction type for the session.
|
||||||
|
|
||||||
TransactionType getTransactionType() const;
|
TransactionType getTransactionType() const;
|
||||||
/// Returns begin transaction type.
|
/// Returns begin transaction type.
|
||||||
|
|
||||||
|
@ -43,6 +43,17 @@ class SQLite_API Utility
|
|||||||
/// Various utility functions for SQLite.
|
/// Various utility functions for SQLite.
|
||||||
{
|
{
|
||||||
public:
|
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_DATE_FORMAT;
|
||||||
static const std::string SQLITE_TIME_FORMAT;
|
static const std::string SQLITE_TIME_FORMAT;
|
||||||
typedef std::map<std::string, MetaColumn::ColumnDataType> TypeMap;
|
typedef std::map<std::string, MetaColumn::ColumnDataType> TypeMap;
|
||||||
@ -210,6 +221,9 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
using TransactionType = Utility::TransactionType;
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// inlines
|
// inlines
|
||||||
//
|
//
|
||||||
|
@ -38,7 +38,7 @@ namespace Poco {
|
|||||||
namespace Data {
|
namespace Data {
|
||||||
namespace SQLite {
|
namespace SQLite {
|
||||||
|
|
||||||
const std::string TRANSACTION_TYPE_PROPERTY_KEY = "transactionType";
|
|
||||||
const std::string SessionImpl::DEFERRED_BEGIN_TRANSACTION("BEGIN DEFERRED");
|
const std::string SessionImpl::DEFERRED_BEGIN_TRANSACTION("BEGIN DEFERRED");
|
||||||
const std::string SessionImpl::EXCLUSIVE_BEGIN_TRANSACTION("BEGIN EXCLUSIVE");
|
const std::string SessionImpl::EXCLUSIVE_BEGIN_TRANSACTION("BEGIN EXCLUSIVE");
|
||||||
const std::string SessionImpl::IMMEDIATE_BEGIN_TRANSACTION("BEGIN IMMEDIATE");
|
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::autoCommit,
|
||||||
&SessionImpl::isAutoCommit);
|
&SessionImpl::isAutoCommit);
|
||||||
addProperty("connectionTimeout", &SessionImpl::setConnectionTimeout, &SessionImpl::getConnectionTimeout);
|
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 {
|
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_SINGLE = SQLITE_CONFIG_SINGLETHREAD;
|
||||||
const int Utility::THREAD_MODE_MULTI = SQLITE_CONFIG_MULTITHREAD;
|
const int Utility::THREAD_MODE_MULTI = SQLITE_CONFIG_MULTITHREAD;
|
||||||
const int Utility::THREAD_MODE_SERIAL = SQLITE_CONFIG_SERIALIZED;
|
const int Utility::THREAD_MODE_SERIAL = SQLITE_CONFIG_SERIALIZED;
|
||||||
|
@ -3205,7 +3205,8 @@ void SQLiteTest::testTransaction()
|
|||||||
std::string result;
|
std::string result;
|
||||||
|
|
||||||
session.setTransactionIsolation(Session::TRANSACTION_READ_COMMITTED);
|
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);
|
Transaction trans(session);
|
||||||
assertTrue (trans.isActive());
|
assertTrue (trans.isActive());
|
||||||
@ -3227,7 +3228,8 @@ void SQLiteTest::testTransaction()
|
|||||||
session << "SELECT count(*) FROM Person", into(count), now;
|
session << "SELECT count(*) FROM Person", into(count), now;
|
||||||
assertTrue (0 == count);
|
assertTrue (0 == count);
|
||||||
assertTrue (!session.isTransaction());
|
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);
|
Transaction trans(session);
|
||||||
session << "INSERT INTO Person VALUES (?,?,?,?)", use(lastNames), use(firstNames), use(addresses), use(ages), now;
|
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;
|
using namespace Poco::Data::SQLite;
|
||||||
|
|
||||||
Session tmp(Connector::KEY, "dummy.db");
|
Session tmp(Connector::KEY, "dummy.db");
|
||||||
tmp.setProperty(TRANSACTION_TYPE_PROPERTY_KEY, TransactionType::EXCLUSIVE);
|
tmp.setProperty(Utility::TRANSACTION_TYPE_PROPERTY_KEY, TransactionType::EXCLUSIVE);
|
||||||
Poco::Any property = tmp.getProperty(TRANSACTION_TYPE_PROPERTY_KEY);
|
Poco::Any property = tmp.getProperty(Utility::TRANSACTION_TYPE_PROPERTY_KEY);
|
||||||
TransactionType value = Poco::RefAnyCast<TransactionType>(property);
|
TransactionType value = Poco::RefAnyCast<TransactionType>(property);
|
||||||
assertTrue(value == TransactionType::EXCLUSIVE);
|
assertTrue(value == TransactionType::EXCLUSIVE);
|
||||||
} catch (Poco::Exception&) {}
|
} catch (Poco::Exception&) {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user