data fixes (getters constness, string any handling)

This commit is contained in:
Alex Fabijanic 2018-05-07 15:23:19 +00:00
parent fa042447a4
commit 55e56b668d
20 changed files with 672 additions and 358 deletions

View File

@ -30,5 +30,3 @@ vc.project.prebuild.release_static_md = xcopy /y ${openssl}\\build\\win${bits}\\
vc.project.prebuild.release_static_mt = xcopy /y ${openssl}\\build\\win${bits}\\lib\\release\\*.lib ..\\lib${dirbits}\\* 1>nul\nexit 0
vc.solution.create = true
vc.solution.include = testsuite\\TestSuite
vc.solution.create = true
vc.solution.include = testsuite\\TestSuite

File diff suppressed because it is too large Load Diff

View File

@ -71,7 +71,7 @@ public:
Binder(const StatementHandle& rStmt,
std::size_t maxFieldSize,
ParameterBinding dataBinding = PB_IMMEDIATE,
TypeInfo* pDataTypes = 0);
const TypeInfo* pDataTypes = 0);
/// Creates the Binder.
~Binder();

View File

@ -30,6 +30,7 @@ namespace Poco {
namespace Data {
namespace ODBC {
class SessionImpl;
class ODBC_API ConnectionHandle
/// ODBC connection handle class
@ -60,6 +61,8 @@ private:
const EnvironmentHandle* _pEnvironment;
SQLHDBC _hdbc;
bool _ownsEnvironment;
friend class Poco::Data::ODBC::SessionImpl;
};

View File

@ -70,7 +70,7 @@ public:
~SessionImpl();
/// Destroys the SessionImpl.
Poco::Data::StatementImpl* createStatementImpl();
Poco::SharedPtr<Poco::Data::StatementImpl> createStatementImpl();
/// Returns an ODBC StatementImpl
void open(const std::string& connect = "");
@ -79,13 +79,13 @@ public:
void close();
/// Closes the connection
bool isConnected();
bool isConnected() const;
/// Returns true if session is connected
void setConnectionTimeout(std::size_t timeout);
/// Sets the session connection timeout value.
std::size_t getConnectionTimeout();
std::size_t getConnectionTimeout() const;
/// Returns the session connection timeout value.
void begin();
@ -97,61 +97,61 @@ public:
void rollback();
/// Aborts a transaction
bool isTransaction();
bool isTransaction() const;
/// Returns true iff a transaction is in progress.
const std::string& connectorName() const;
/// Returns the name of the connector.
bool canTransact();
bool canTransact() const;
/// Returns true if connection is transaction-capable.
void setTransactionIsolation(Poco::UInt32 ti);
/// Sets the transaction isolation level.
Poco::UInt32 getTransactionIsolation();
Poco::UInt32 getTransactionIsolation() const;
/// Returns the transaction isolation level.
bool hasTransactionIsolation(Poco::UInt32);
bool hasTransactionIsolation(Poco::UInt32) const;
/// Returns true iff the transaction isolation level corresponding
/// to the supplied bitmask is supported.
bool isTransactionIsolation(Poco::UInt32);
bool isTransactionIsolation(Poco::UInt32) const;
/// Returns true iff the transaction isolation level corresponds
/// to the supplied bitmask.
void autoCommit(const std::string&, bool val);
/// Sets autocommit property for the session.
bool isAutoCommit(const std::string& name="");
bool isAutoCommit(const std::string& name="") const;
/// Returns autocommit property value.
void autoBind(const std::string&, bool val);
/// Sets automatic binding for the session.
bool isAutoBind(const std::string& name="");
bool isAutoBind(const std::string& name="") const;
/// Returns true if binding is automatic for this session.
void autoExtract(const std::string&, bool val);
/// Sets automatic extraction for the session.
bool isAutoExtract(const std::string& name="");
bool isAutoExtract(const std::string& name="") const;
/// Returns true if extraction is automatic for this session.
void setMaxFieldSize(const std::string& rName, const Poco::Any& rValue);
/// Sets the max field size (the default used when column size is unknown).
Poco::Any getMaxFieldSize(const std::string& rName="");
Poco::Any getMaxFieldSize(const std::string& rName="") const;
/// Returns the max field size (the default used when column size is unknown).
int maxStatementLength();
int maxStatementLength() const;
/// Returns maximum length of SQL statement allowed by driver.
void setQueryTimeout(const std::string&, const Poco::Any& value);
/// Sets the timeout (in seconds) for queries.
/// Value must be of type int.
Poco::Any getQueryTimeout(const std::string&);
Poco::Any getQueryTimeout(const std::string&) const;
/// Returns the timeout (in seconds) for queries,
/// or -1 if no timeout has been set.
@ -162,7 +162,7 @@ public:
const ConnectionHandle& dbc() const;
/// Returns the connection handle.
Poco::Any dataTypeInfo(const std::string& rName="");
Poco::Any dataTypeInfo(const std::string& rName="") const;
/// Returns the data types information.
private:
@ -171,19 +171,23 @@ private:
static const int FUNCTIONS = SQL_API_ODBC3_ALL_FUNCTIONS_SIZE;
void checkError(SQLRETURN rc, const std::string& msg="");
void checkError(SQLRETURN rc, const std::string& msg="") const;
Poco::UInt32 getDefaultTransactionIsolation();
Poco::UInt32 getDefaultTransactionIsolation() const;
Poco::UInt32 transactionIsolation(SQLULEN isolation);
static Poco::UInt32 transactionIsolation(SQLULEN isolation);
void setTransactionIsolationImpl(Poco::UInt32 ti) const;
/// Sets the transaction isolation level.
/// Called internally from getTransactionIsolation()
std::string _connector;
const ConnectionHandle _db;
mutable ConnectionHandle _db;
Poco::Any _maxFieldSize;
bool _autoBind;
bool _autoExtract;
TypeInfo _dataTypes;
char _canTransact;
mutable char _canTransact;
bool _inTransaction;
int _queryTimeout;
Poco::FastMutex _mutex;
@ -193,7 +197,7 @@ private:
///
/// inlines
///
inline void SessionImpl::checkError(SQLRETURN rc, const std::string& msg)
inline void SessionImpl::checkError(SQLRETURN rc, const std::string& msg) const
{
if (Utility::isError(rc))
throw ConnectionException(_db, msg);
@ -212,7 +216,7 @@ inline void SessionImpl::setMaxFieldSize(const std::string& rName, const Poco::A
}
inline Poco::Any SessionImpl::getMaxFieldSize(const std::string& rName)
inline Poco::Any SessionImpl::getMaxFieldSize(const std::string& rName) const
{
return _maxFieldSize;
}
@ -224,7 +228,7 @@ inline void SessionImpl::setDataTypeInfo(const std::string& rName, const Poco::A
}
inline Poco::Any SessionImpl::dataTypeInfo(const std::string& rName)
inline Poco::Any SessionImpl::dataTypeInfo(const std::string& rName) const
{
return &_dataTypes;
}
@ -236,7 +240,7 @@ inline void SessionImpl::autoBind(const std::string&, bool val)
}
inline bool SessionImpl::isAutoBind(const std::string& name)
inline bool SessionImpl::isAutoBind(const std::string& name) const
{
return _autoBind;
}
@ -248,7 +252,7 @@ inline void SessionImpl::autoExtract(const std::string&, bool val)
}
inline bool SessionImpl::isAutoExtract(const std::string& name)
inline bool SessionImpl::isAutoExtract(const std::string& name) const
{
return _autoExtract;
}
@ -260,7 +264,7 @@ inline const std::string& SessionImpl::connectorName() const
}
inline bool SessionImpl::isTransactionIsolation(Poco::UInt32 ti)
inline bool SessionImpl::isTransactionIsolation(Poco::UInt32 ti) const
{
return 0 != (ti & getTransactionIsolation());
}
@ -272,7 +276,7 @@ inline void SessionImpl::setQueryTimeout(const std::string&, const Poco::Any& va
}
inline Poco::Any SessionImpl::getQueryTimeout(const std::string&)
inline Poco::Any SessionImpl::getQueryTimeout(const std::string&) const
{
return _queryTimeout;
}

View File

@ -29,7 +29,7 @@ namespace ODBC {
Binder::Binder(const StatementHandle& rStmt,
std::size_t maxFieldSize,
Binder::ParameterBinding dataBinding,
TypeInfo* pDataTypes):
const TypeInfo* pDataTypes):
_rStmt(rStmt),
_paramBinding(dataBinding),
_pTypeInfo(pDataTypes),

View File

@ -68,7 +68,24 @@ bool Extractor::extractBoundImpl<UTF16String>(std::size_t pos, UTF16String& val)
typedef UTF16String::value_type CharT;
if (isNull(pos)) return false;
std::size_t dataSize = _pPreparator->actualDataSize(pos);
CharT* sp = AnyCast<CharT*>(_pPreparator->at(pos));
//CharT* sp = AnyCast<CharT*>(_pPreparator->at(pos));
CharT* sp = 0;
UTF16String us;
const type_info& ti = _pPreparator->at(pos).type();
if (ti == typeid(CharT*))
{
sp = AnyCast<CharT*>(_pPreparator->at(pos));
}
else if (ti == typeid(char*))
{
std::string s(AnyCast<char*>(_pPreparator->at(pos)));
Poco::UnicodeConverter::convert(s, us);
sp = const_cast<CharT*>(us.c_str());
}
else
{
throw Poco::Data::ExtractException("Unsupported string type: " + std::string(ti.name()));
}
std::size_t len = Poco::UnicodeConverter::UTFStrlen(sp);
if (len < dataSize) dataSize = len;
checkDataSize(dataSize);

View File

@ -86,11 +86,11 @@ void ODBCStatementImpl::compileImpl()
Binder::ParameterBinding bind = session().getFeature("autoBind") ?
Binder::PB_IMMEDIATE : Binder::PB_AT_EXEC;
TypeInfo* pDT = 0;
const TypeInfo* pDT = 0;
try
{
Poco::Any dti = session().getProperty("dataTypeInfo");
pDT = AnyCast<TypeInfo*>(dti);
pDT = AnyCast<const TypeInfo*>(dti);
}
catch (NotSupportedException&)
{

View File

@ -85,7 +85,7 @@ SessionImpl::~SessionImpl()
}
Poco::Data::StatementImpl* SessionImpl::createStatementImpl()
Poco::Data::StatementImpl::Ptr SessionImpl::createStatementImpl()
{
return new ODBCStatementImpl(*this);
}
@ -164,7 +164,7 @@ void SessionImpl::open(const std::string& connect)
}
bool SessionImpl::isConnected()
bool SessionImpl::isConnected() const
{
SQLULEN value = 0;
@ -189,7 +189,7 @@ void SessionImpl::setConnectionTimeout(std::size_t timeout)
}
std::size_t SessionImpl::getConnectionTimeout()
std::size_t SessionImpl::getConnectionTimeout() const
{
SQLULEN value = 0;
@ -203,7 +203,7 @@ std::size_t SessionImpl::getConnectionTimeout()
}
bool SessionImpl::canTransact()
bool SessionImpl::canTransact() const
{
if (ODBC_TXN_CAPABILITY_UNKNOWN == _canTransact)
{
@ -221,6 +221,12 @@ bool SessionImpl::canTransact()
void SessionImpl::setTransactionIsolation(Poco::UInt32 ti)
{
setTransactionIsolationImpl(ti);
}
void SessionImpl::setTransactionIsolationImpl(Poco::UInt32 ti) const
{
#if POCO_PTR_IS_64_BIT
Poco::UInt64 isolation = 0;
@ -244,7 +250,7 @@ void SessionImpl::setTransactionIsolation(Poco::UInt32 ti)
}
Poco::UInt32 SessionImpl::getTransactionIsolation()
Poco::UInt32 SessionImpl::getTransactionIsolation() const
{
SQLULEN isolation = 0;
checkError(SQLGetConnectAttr(_db, SQL_ATTR_TXN_ISOLATION,
@ -256,20 +262,20 @@ Poco::UInt32 SessionImpl::getTransactionIsolation()
}
bool SessionImpl::hasTransactionIsolation(Poco::UInt32 ti)
bool SessionImpl::hasTransactionIsolation(Poco::UInt32 ti) const
{
if (isTransaction()) throw InvalidAccessException();
bool retval = true;
Poco::UInt32 old = getTransactionIsolation();
try { setTransactionIsolation(ti); }
try { setTransactionIsolationImpl(ti); }
catch (Poco::Exception&) { retval = false; }
setTransactionIsolation(old);
setTransactionIsolationImpl(old);
return retval;
}
Poco::UInt32 SessionImpl::getDefaultTransactionIsolation()
Poco::UInt32 SessionImpl::getDefaultTransactionIsolation() const
{
SQLUINTEGER isolation = 0;
checkError(SQLGetInfo(_db, SQL_DEFAULT_TXN_ISOLATION,
@ -317,7 +323,7 @@ void SessionImpl::autoCommit(const std::string&, bool val)
}
bool SessionImpl::isAutoCommit(const std::string&)
bool SessionImpl::isAutoCommit(const std::string&) const
{
SQLULEN value = 0;
@ -331,7 +337,7 @@ bool SessionImpl::isAutoCommit(const std::string&)
}
bool SessionImpl::isTransaction()
bool SessionImpl::isTransaction() const
{
if (!canTransact()) return false;
@ -397,7 +403,7 @@ void SessionImpl::close()
}
int SessionImpl::maxStatementLength()
int SessionImpl::maxStatementLength() const
{
SQLUINTEGER info;
SQLRETURN rc = 0;

View File

@ -41,11 +41,11 @@ using Poco::DynamicAny;
using Poco::DateTime;
#define ORACLE_ODBC_DRIVER "Oracle in OraDB12Home1"
#define ORACLE_ODBC_DRIVER "Oracle in XE"
#define ORACLE_DSN "PocoDataOracleTest"
#define ORACLE_SERVER POCO_ODBC_TEST_DATABASE_SERVER
#define ORACLE_PORT "1521"
#define ORACLE_SID "ORCL"
#define ORACLE_SID "XE"
#define ORACLE_UID "poco"
#define ORACLE_PWD "poco"

View File

@ -48,7 +48,7 @@ public:
~SessionImpl();
/// Destroys the SessionImpl.
Poco::Data::StatementImpl* createStatementImpl();
Poco::SharedPtr<Poco::Data::StatementImpl> createStatementImpl();
/// Returns an SQLite StatementImpl.
void open(const std::string& connect = "");
@ -68,14 +68,14 @@ public:
void close();
/// Closes the session.
bool isConnected();
bool isConnected() const;
/// Returns true if connected, false otherwise.
void setConnectionTimeout(std::size_t timeout);
/// Sets the session connection timeout value.
/// Timeout value is in seconds.
std::size_t getConnectionTimeout();
std::size_t getConnectionTimeout() const;
/// Returns the session connection timeout value.
/// Timeout value is in seconds.
@ -88,30 +88,30 @@ public:
void rollback();
/// Aborts a transaction.
bool canTransact();
bool canTransact() const;
/// Returns true if session has transaction capabilities.
bool isTransaction();
bool isTransaction() const;
/// Returns true iff a transaction is a transaction is in progress, false otherwise.
void setTransactionIsolation(Poco::UInt32 ti);
/// Sets the transaction isolation level.
Poco::UInt32 getTransactionIsolation();
Poco::UInt32 getTransactionIsolation() const;
/// Returns the transaction isolation level.
bool hasTransactionIsolation(Poco::UInt32 ti);
bool hasTransactionIsolation(Poco::UInt32 ti) const;
/// Returns true iff the transaction isolation level corresponding
/// to the supplied bitmask is supported.
bool isTransactionIsolation(Poco::UInt32 ti);
bool isTransactionIsolation(Poco::UInt32 ti) const;
/// Returns true iff the transaction isolation level corresponds
/// to the supplied bitmask.
void autoCommit(const std::string&, bool val);
/// Sets autocommit property for the session.
bool isAutoCommit(const std::string& name="");
bool isAutoCommit(const std::string& name="") const;
/// Returns autocommit property value.
const std::string& connectorName() const;
@ -119,7 +119,7 @@ public:
protected:
void setConnectionTimeout(const std::string& prop, const Poco::Any& value);
Poco::Any getConnectionTimeout(const std::string& prop);
Poco::Any getConnectionTimeout(const std::string& prop) const;
private:
std::string _connector;
@ -127,6 +127,7 @@ private:
bool _connected;
bool _isTransaction;
int _timeout;
mutable
Poco::Mutex _mutex;
static const std::string DEFERRED_BEGIN_TRANSACTION;
@ -138,13 +139,13 @@ private:
//
// inlines
//
inline bool SessionImpl::canTransact()
inline bool SessionImpl::canTransact() const
{
return true;
}
inline bool SessionImpl::isTransaction()
inline bool SessionImpl::isTransaction() const
{
return _isTransaction;
}
@ -156,7 +157,7 @@ inline const std::string& SessionImpl::connectorName() const
}
inline std::size_t SessionImpl::getConnectionTimeout()
inline std::size_t SessionImpl::getConnectionTimeout() const
{
return static_cast<std::size_t>(_timeout/1000);
}

View File

@ -74,7 +74,7 @@ SessionImpl::~SessionImpl()
}
Poco::Data::StatementImpl* SessionImpl::createStatementImpl()
Poco::Data::StatementImpl::Ptr SessionImpl::createStatementImpl()
{
poco_check_ptr (_pDB);
return new SQLiteStatementImpl(*this, _pDB);
@ -118,20 +118,20 @@ void SessionImpl::setTransactionIsolation(Poco::UInt32 ti)
}
Poco::UInt32 SessionImpl::getTransactionIsolation()
Poco::UInt32 SessionImpl::getTransactionIsolation() const
{
return Session::TRANSACTION_READ_COMMITTED;
}
bool SessionImpl::hasTransactionIsolation(Poco::UInt32 ti)
bool SessionImpl::hasTransactionIsolation(Poco::UInt32 ti) const
{
if (ti == Session::TRANSACTION_READ_COMMITTED) return true;
return false;
}
bool SessionImpl::isTransactionIsolation(Poco::UInt32 ti)
bool SessionImpl::isTransactionIsolation(Poco::UInt32 ti) const
{
if (ti == Session::TRANSACTION_READ_COMMITTED) return true;
return false;
@ -182,7 +182,7 @@ void SessionImpl::close()
{
if (_pDB)
{
sqlite3_close(_pDB);
sqlite3_close_v2(_pDB);
_pDB = 0;
}
@ -190,7 +190,7 @@ void SessionImpl::close()
}
bool SessionImpl::isConnected()
bool SessionImpl::isConnected() const
{
return _connected;
}
@ -211,7 +211,7 @@ void SessionImpl::setConnectionTimeout(const std::string& prop, const Poco::Any&
}
Poco::Any SessionImpl::getConnectionTimeout(const std::string& prop)
Poco::Any SessionImpl::getConnectionTimeout(const std::string& prop) const
{
return Poco::Any(_timeout/1000);
}
@ -227,7 +227,7 @@ void SessionImpl::autoCommit(const std::string&, bool)
}
bool SessionImpl::isAutoCommit(const std::string&)
bool SessionImpl::isAutoCommit(const std::string&) const
{
Poco::Mutex::ScopedLock l(_mutex);
return (0 != sqlite3_get_autocommit(_pDB));

View File

@ -41,13 +41,13 @@ public:
typedef void (C::*FeatureSetter)(const std::string&, bool);
/// The setter method for a feature.
typedef bool (C::*FeatureGetter)(const std::string&);
typedef bool (C::*FeatureGetter)(const std::string&) const;
/// The getter method for a feature.
typedef void (C::*PropertySetter)(const std::string&, const Poco::Any&);
/// The setter method for a property.
typedef Poco::Any (C::*PropertyGetter)(const std::string&);
typedef Poco::Any (C::*PropertyGetter)(const std::string&) const;
/// The getter method for a property.
AbstractSessionImpl(const std::string& connectionString,
@ -187,7 +187,7 @@ public:
_storage = Poco::RefAnyCast<std::string>(value);
}
Poco::Any getStorage(const std::string& name="")
Poco::Any getStorage(const std::string& name="") const
/// Returns the storage type
{
return _storage;
@ -199,7 +199,7 @@ public:
_handle = handle;
}
Poco::Any getHandle(const std::string& name="")
Poco::Any getHandle(const std::string& name="") const
/// Returns the native session handle.
{
return _handle;
@ -211,7 +211,7 @@ public:
_bulk = bulk;
}
bool getBulk(const std::string& name="")
bool getBulk(const std::string& name="") const
/// Returns the execution type
{
return _bulk;
@ -229,7 +229,7 @@ public:
_emptyStringIsNull = emptyStringIsNull;
}
bool getEmptyStringIsNull(const std::string& name="")
bool getEmptyStringIsNull(const std::string& name="") const
/// Returns the setting for the behavior regarding empty variable
/// length strings. See setEmptyStringIsNull(const std::string&, bool)
/// and this class documentation for feature rationale and details.
@ -250,7 +250,7 @@ public:
_forceEmptyString = forceEmptyString;
}
bool getForceEmptyString(const std::string& name="")
bool getForceEmptyString(const std::string& name="") const
/// Returns the setting for the behavior regarding empty variable
/// length strings. See setForceEmptyString(const std::string&, bool)
/// and this class documentation for feature rationale and details.

View File

@ -21,6 +21,7 @@
#include "Poco/Data/Data.h"
#include "Poco/Data/SessionImpl.h"
#include "Poco/Data/PooledSessionHolder.h"
#include "Poco/Data/StatementImpl.h"
#include "Poco/AutoPtr.h"
@ -43,22 +44,21 @@ public:
~PooledSessionImpl();
/// Destroys the PooledSessionImpl.
// SessionImpl
StatementImpl* createStatementImpl();
StatementImpl::Ptr createStatementImpl();
void begin();
void commit();
void rollback();
void open(const std::string& connect = "");
void close();
bool isConnected();
bool isConnected() const;
void setConnectionTimeout(std::size_t timeout);
std::size_t getConnectionTimeout();
bool canTransact();
bool isTransaction();
std::size_t getConnectionTimeout() const;
bool canTransact() const;
bool isTransaction()const ;
void setTransactionIsolation(Poco::UInt32);
Poco::UInt32 getTransactionIsolation();
bool hasTransactionIsolation(Poco::UInt32);
bool isTransactionIsolation(Poco::UInt32);
Poco::UInt32 getTransactionIsolation() const;
bool hasTransactionIsolation(Poco::UInt32) const;
bool isTransactionIsolation(Poco::UInt32) const;
const std::string& connectorName() const;
void setFeature(const std::string& name, bool state);
bool getFeature(const std::string& name);

View File

@ -23,6 +23,7 @@
#include "Poco/Data/Statement.h"
#include "Poco/Data/StatementCreator.h"
#include "Poco/Data/Binding.h"
#include "Poco/SharedPtr.h"
#include "Poco/AutoPtr.h"
#include "Poco/Any.h"
#include <algorithm>
@ -191,7 +192,7 @@ public:
return _statementCreator << t;
}
StatementImpl* createStatementImpl();
SharedPtr<StatementImpl> createStatementImpl();
/// Creates a StatementImpl.
void open(const std::string& connect = "");
@ -313,7 +314,7 @@ private:
//
// inlines
//
inline StatementImpl* Session::createStatementImpl()
inline SharedPtr<StatementImpl> Session::createStatementImpl()
{
return _pImpl->createStatementImpl();
}

View File

@ -22,6 +22,8 @@
#include "Poco/RefCountedObject.h"
#include "Poco/String.h"
#include "Poco/Format.h"
#include "Poco/SharedPtr.h"
#include "Poco/AutoPtr.h"
#include "Poco/Any.h"
@ -37,6 +39,8 @@ class Data_API SessionImpl: public Poco::RefCountedObject
/// SessionImpl objects are noncopyable.
{
public:
typedef Poco::AutoPtr<SessionImpl> Ptr;
static const std::size_t LOGIN_TIMEOUT_INFINITE = 0;
/// Infinite connection/login timeout.
@ -56,7 +60,7 @@ public:
virtual ~SessionImpl();
/// Destroys the SessionImpl.
virtual StatementImpl* createStatementImpl() = 0;
virtual Poco::SharedPtr<StatementImpl> createStatementImpl() = 0;
/// Creates a StatementImpl.
virtual void open(const std::string& connectionString = "") = 0;
@ -70,7 +74,7 @@ public:
virtual void close() = 0;
/// Closes the connection.
virtual bool isConnected() = 0;
virtual bool isConnected() const = 0;
/// Returns true if session is connected, false otherwise.
void setLoginTimeout(std::size_t timeout);
@ -82,7 +86,7 @@ public:
virtual void setConnectionTimeout(std::size_t timeout) = 0;
/// Sets the session connection timeout value.
virtual std::size_t getConnectionTimeout() = 0;
virtual std::size_t getConnectionTimeout() const = 0;
/// Returns the session connection timeout value.
void reconnect();
@ -97,23 +101,23 @@ public:
virtual void rollback() = 0;
/// Aborts a transaction.
virtual bool canTransact() = 0;
virtual bool canTransact() const = 0;
/// Returns true if session has transaction capabilities.
virtual bool isTransaction() = 0;
virtual bool isTransaction() const = 0;
/// Returns true iff a transaction is a transaction is in progress, false otherwise.
virtual void setTransactionIsolation(Poco::UInt32) = 0;
/// Sets the transaction isolation level.
virtual Poco::UInt32 getTransactionIsolation() = 0;
virtual Poco::UInt32 getTransactionIsolation() const = 0;
/// Returns the transaction isolation level.
virtual bool hasTransactionIsolation(Poco::UInt32) = 0;
virtual bool hasTransactionIsolation(Poco::UInt32) const = 0;
/// Returns true iff the transaction isolation level corresponding
/// to the supplied bitmask is supported.
virtual bool isTransactionIsolation(Poco::UInt32) = 0;
virtual bool isTransactionIsolation(Poco::UInt32) const = 0;
/// Returns true iff the transaction isolation level corresponds
/// to the supplied bitmask.

View File

@ -42,7 +42,7 @@ PooledSessionImpl::~PooledSessionImpl()
}
StatementImpl* PooledSessionImpl::createStatementImpl()
StatementImpl::Ptr PooledSessionImpl::createStatementImpl()
{
return access()->createStatementImpl();
}
@ -60,7 +60,7 @@ void PooledSessionImpl::commit()
}
bool PooledSessionImpl::isConnected()
bool PooledSessionImpl::isConnected() const
{
return access()->isConnected();
}
@ -72,19 +72,19 @@ void PooledSessionImpl::setConnectionTimeout(std::size_t timeout)
}
std::size_t PooledSessionImpl::getConnectionTimeout()
std::size_t PooledSessionImpl::getConnectionTimeout() const
{
return access()->getConnectionTimeout();
}
bool PooledSessionImpl::canTransact()
bool PooledSessionImpl::canTransact() const
{
return access()->canTransact();
}
bool PooledSessionImpl::isTransaction()
bool PooledSessionImpl::isTransaction() const
{
return access()->isTransaction();
}
@ -96,19 +96,19 @@ void PooledSessionImpl::setTransactionIsolation(Poco::UInt32 ti)
}
Poco::UInt32 PooledSessionImpl::getTransactionIsolation()
Poco::UInt32 PooledSessionImpl::getTransactionIsolation() const
{
return access()->getTransactionIsolation();
}
bool PooledSessionImpl::hasTransactionIsolation(Poco::UInt32 ti)
bool PooledSessionImpl::hasTransactionIsolation(Poco::UInt32 ti) const
{
return access()->hasTransactionIsolation(ti);
}
bool PooledSessionImpl::isTransactionIsolation(Poco::UInt32 ti)
bool PooledSessionImpl::isTransactionIsolation(Poco::UInt32 ti) const
{
return access()->isTransactionIsolation(ti);
}

View File

@ -50,7 +50,7 @@ void SessionImpl::close()
}
bool SessionImpl::isConnected()
bool SessionImpl::isConnected() const
{
return _connected;
}
@ -61,13 +61,13 @@ void SessionImpl::setConnectionTimeout(std::size_t timeout)
}
std::size_t SessionImpl::getConnectionTimeout()
std::size_t SessionImpl::getConnectionTimeout() const
{
return 0;
}
Poco::Data::StatementImpl* SessionImpl::createStatementImpl()
StatementImpl::Ptr SessionImpl::createStatementImpl()
{
return new TestStatementImpl(*this);
}
@ -88,13 +88,13 @@ void SessionImpl::rollback()
}
bool SessionImpl::canTransact()
bool SessionImpl::canTransact() const
{
return false;
}
bool SessionImpl::isTransaction()
bool SessionImpl::isTransaction() const
{
return false;
}
@ -105,19 +105,19 @@ void SessionImpl::setTransactionIsolation(Poco::UInt32)
}
Poco::UInt32 SessionImpl::getTransactionIsolation()
Poco::UInt32 SessionImpl::getTransactionIsolation() const
{
return 0;
}
bool SessionImpl::hasTransactionIsolation(Poco::UInt32)
bool SessionImpl::hasTransactionIsolation(Poco::UInt32) const
{
return false;
}
bool SessionImpl::isTransactionIsolation(Poco::UInt32)
bool SessionImpl::isTransactionIsolation(Poco::UInt32) const
{
return false;
}
@ -129,7 +129,7 @@ const std::string& SessionImpl::connectorName() const
}
bool SessionImpl::getConnected(const std::string& name)
bool SessionImpl::getConnected(const std::string& name) const
{
return _connected;
}
@ -147,7 +147,7 @@ void SessionImpl::setF(const std::string& name, bool value)
}
bool SessionImpl::getF(const std::string& name)
bool SessionImpl::getF(const std::string& name) const
{
return _f;
}
@ -159,7 +159,7 @@ void SessionImpl::setP(const std::string& name, const Poco::Any& value)
}
Poco::Any SessionImpl::getP(const std::string& name)
Poco::Any SessionImpl::getP(const std::string& name) const
{
return _p;
}

View File

@ -15,6 +15,7 @@
#include "Poco/Data/AbstractSessionImpl.h"
#include "Poco/Data/StatementImpl.h"
#include "Poco/SharedPtr.h"
#include "Binder.h"
@ -35,7 +36,7 @@ public:
~SessionImpl();
/// Destroys the SessionImpl.
Poco::Data::StatementImpl* createStatementImpl();
StatementImpl::Ptr createStatementImpl();
/// Returns an test StatementImpl.
void open(const std::string& connectionString = "");
@ -44,14 +45,14 @@ public:
void close();
/// Closes the session.
bool isConnected();
bool isConnected() const;
/// Returns true if session is connected to the database,
/// false otherwise.
void setConnectionTimeout(std::size_t timeout);
/// Sets the session connection timeout value.
std::size_t getConnectionTimeout();
std::size_t getConnectionTimeout() const;
/// Returns the session connection timeout value.
void begin();
@ -63,23 +64,23 @@ public:
void rollback();
/// Aborts a transaction.
bool canTransact();
bool canTransact() const;
/// Returns true if session has transaction capabilities.
bool isTransaction();
bool isTransaction() const;
/// Returns true iff a transaction is a transaction is in progress, false otherwise.
void setTransactionIsolation(Poco::UInt32);
/// Sets the transaction isolation level.
Poco::UInt32 getTransactionIsolation();
Poco::UInt32 getTransactionIsolation() const;
/// Returns the transaction isolation level.
bool hasTransactionIsolation(Poco::UInt32);
bool hasTransactionIsolation(Poco::UInt32) const;
/// Returns true iff the transaction isolation level corresponding
/// to the supplied bitmask is supported.
bool isTransactionIsolation(Poco::UInt32);
bool isTransactionIsolation(Poco::UInt32) const;
/// Returns true iff the transaction isolation level corresponds
/// to the supplied bitmask.
@ -87,15 +88,15 @@ public:
/// Returns the name of the connector.
void setConnected(const std::string& name, bool value);
bool getConnected(const std::string& name);
bool getConnected(const std::string& name) const;
/// Sets/gets the connected property.
/// This is normally done by implementation
/// when a database connection loss is detected.
void setF(const std::string& name, bool value);
bool getF(const std::string& name);
bool getF(const std::string& name) const;
void setP(const std::string& name, const Poco::Any& value);
Poco::Any getP(const std::string& name);
Poco::Any getP(const std::string& name) const;
private:
bool _f;

View File

@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Foundation", "Foundation_x64_vs90.vcproj", "{B01196CC-B693-4548-8464-2FF60499E73F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs90.vcproj", "{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs90.vcproj", "{F1EE93DF-347F-4CB3-B191-C4E63F38E972}"
ProjectSection(ProjectDependencies) = postProject
{B01196CC-B693-4548-8464-2FF60499E73F} = {B01196CC-B693-4548-8464-2FF60499E73F}
EndProjectSection
@ -10,49 +10,49 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug_shared|x64 = debug_shared|x64
release_shared|x64 = release_shared|x64
debug_static_mt|x64 = debug_static_mt|x64
release_static_mt|x64 = release_static_mt|x64
debug_static_md|x64 = debug_static_md|x64
debug_static_mt|x64 = debug_static_mt|x64
release_shared|x64 = release_shared|x64
release_static_md|x64 = release_static_md|x64
release_static_mt|x64 = release_static_mt|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B01196CC-B693-4548-8464-2FF60499E73F}.debug_shared|x64.ActiveCfg = debug_shared|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.debug_shared|x64.Build.0 = debug_shared|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.debug_shared|x64.Deploy.0 = debug_shared|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_shared|x64.ActiveCfg = release_shared|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_shared|x64.Build.0 = release_shared|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_shared|x64.Deploy.0 = release_shared|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_static_mt|x64.Build.0 = release_static_mt|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.debug_static_md|x64.Build.0 = debug_static_md|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_shared|x64.ActiveCfg = release_shared|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_shared|x64.Build.0 = release_shared|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_shared|x64.Deploy.0 = release_shared|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_static_md|x64.ActiveCfg = release_static_md|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_static_md|x64.Build.0 = release_static_md|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_static_md|x64.Deploy.0 = release_static_md|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_shared|x64.ActiveCfg = debug_shared|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_shared|x64.Build.0 = debug_shared|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_shared|x64.Deploy.0 = debug_shared|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_shared|x64.ActiveCfg = release_shared|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_shared|x64.Build.0 = release_shared|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_shared|x64.Deploy.0 = release_shared|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_static_mt|x64.Build.0 = release_static_mt|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_static_md|x64.Build.0 = debug_static_md|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_static_md|x64.ActiveCfg = release_static_md|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_static_md|x64.Build.0 = release_static_md|x64
{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_static_md|x64.Deploy.0 = release_static_md|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_static_mt|x64.Build.0 = release_static_mt|x64
{B01196CC-B693-4548-8464-2FF60499E73F}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_shared|x64.ActiveCfg = debug_shared|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_shared|x64.Build.0 = debug_shared|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_shared|x64.Deploy.0 = debug_shared|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_static_md|x64.Build.0 = debug_static_md|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_shared|x64.ActiveCfg = release_shared|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_shared|x64.Build.0 = release_shared|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_shared|x64.Deploy.0 = release_shared|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_static_md|x64.ActiveCfg = release_static_md|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_static_md|x64.Build.0 = release_static_md|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_static_md|x64.Deploy.0 = release_static_md|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_static_mt|x64.Build.0 = release_static_mt|x64
{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE