50 #define NCBI_USE_ERRCODE_X Dbapi_ObjImpls
61 : m_ds(ds), m_connection(0), m_connCounter(1), m_connUsed(
false),
62 m_modeMask(0), m_forceSingle(
false), m_multiExH(0),
63 m_msgToEx(
false), m_ownership(ownership)
65 _TRACE(
"Default connection " << (
void *)
this <<
" created...");
70 : m_ds(ds), m_connection(
conn), m_connCounter(-1), m_connUsed(
false),
71 m_modeMask(0), m_forceSingle(
false), m_multiExH(0),
74 _TRACE(
"Auxiliary connection " << (
void *)
this <<
" created...");
112 const string& password,
113 const string& server,
145 const string& password,
146 const string& server,
168 _TRACE(
"Auxiliary connection " << (
void*)
this <<
" is being deleted...");
170 _TRACE(
"Default connection " << (
void*)
this <<
" is being deleted...");
222 def_params.
SetParam(
"do_not_dispatch",
"true");
223 def_params.
SetParam(
"do_not_read_conf",
"true");
240 <<
" cloned, new CDB_Connection: " << (
void*)tmp_conn);
275 conn->x_SendXactAbort();
295 <<
", no aux connections necessary, using default...");
337 "CConnection::GetStatement(): Connection taken, cannot use this method"
341 stmt->AddListener(
this);
350 "CConnection::GetCallableStatement(): Connection taken, cannot use this method"
417 stmt->AddListener(
this);
520 _TRACE(
"MsqToEx(): connection " << (
void*)
this
521 <<
": message handler " << (
void*)
GetHandler()
527 _TRACE(
"MsqToEx(): connection " << (
void*)
this
528 <<
": message handler " << (
void*)
GetHandler()
578 static TDbapi_SetXactAbort sx_set_xact_abort;
580 if (sx_set_xact_abort.Get()) {
583 bool is_ms_sql =
false;
588 while (
cmd->HasMoreResults()) {
589 unique_ptr<CDB_Result>
result;
617 unique_ptr<CDB_LangCmd> xact_cmd(
624 xact_cmd->DumpResults();
void RemoveListener(CActiveObject *obj)
void SetIdent(const string &name)
void AddListener(CActiveObject *obj)
void Notify(const CDbapiEvent &e)
CRef< CToMultiExHandler > m_multiExH
virtual string GetErrorInfo()
Returns all error messages as a single string.
virtual void Action(const CDbapiEvent &e)
virtual CDB_MultiEx * GetErrorAsEx()
Returns all error messages as a CDB_MultiEx object.
virtual ICursor * GetCursor(const string &name, const string &sql, int batchSize)
Get cursor object.
CDB_Connection * m_connection
virtual ICallableStatement * PrepareCall(const string &proc)
Get callable statement object for stored procedures.
virtual void SetMode(EConnMode mode)
Set connection mode.
virtual void SetDatabase(const string &name)
Set current database.
virtual ICursor * CreateCursor(const string &name, const string &sql, int batchSize)
Get cursor object.
virtual void Abort()
Abort connection.
virtual void MsgToEx(bool v)
If enabled, redirects all error messages to CDB_MultiEx object (see below).
virtual ICallableStatement * GetCallableStatement(const string &proc)
Get callable statement object for stored procedures.
virtual IConnection * CloneConnection(EOwnership ownership)
Clone existing connection.
virtual IDataSource * GetDataSource()
Get parent datasource object.
virtual unsigned int GetModeMask()
Get mode mask.
void SetDbName(const string &name, CDB_Connection *conn=0)
virtual IBulkInsert * CreateBulkInsert(const string &table_name)
Create bulk insert object.
virtual void Close()
Close connecti.
virtual IStatement * GetStatement()
Get statement object for regular SQL queries.
CDB_Connection * CloneCDB_Conn()
CConnection * GetAuxConn()
virtual void SetTimeout(size_t nof_secs)
Set connection timeout.
virtual void ResetMode(EConnMode mode)
Reset connection mode.
virtual void ForceSingle(bool enable)
Force single connection mode, default false.
virtual IBulkInsert * GetBulkInsert(const string &table_name)
Create bulk insert object.
virtual IStatement * CreateStatement()
Get statement object for regular SQL queries.
CConnection(CDataSource *ds, EOwnership ownership)
virtual void ConnectValidated(IConnValidator &validator, const string &user, const string &password, const string &server, const string &database=kEmptyStr)
Connect to a database using connect validator.
virtual string GetDatabase()
Get current database.
virtual CDB_Connection * GetCDB_Connection()
Returns the internal driver connection object.
virtual void SetCancelTimeout(size_t nof_secs)
Set timeout for command cancellation and connection closing.
virtual bool IsAlive()
Check if the connection is alive.
virtual void Connect(const string &user, const string &password, const string &server, const string &database=kEmptyStr)
Connect to a database.
void x_SendXactAbort(void)
class CToMultiExHandler * GetHandler()
Class has deliberately obscure name to not mix it with CBulkInsert in SDBAPI and to avoid direct usag...
void SetConnValidator(const CRef< IConnValidator > &validator)
void SetDatabaseName(const string &name)
void SetParam(const string &key, const string &value)
virtual I_DriverContext * GetDriverContext()
Returns the pointer to the general driver interface.
CActiveObject * GetSource() const
CNcbiOstrstreamToString class helps convert CNcbiOstrstream to a string Sample usage:
CDB_MultiEx * GetMultiEx()
NCBI_PARAM_DECL(bool, dbapi, set_xact_abort)
NCBI_PARAM_DEF_EX(bool, dbapi, set_xact_abort, true, eParam_NoThread, NULL)
typedef NCBI_PARAM_TYPE(dbapi, set_xact_abort) TDbapi_SetXactAbort
static CS_CONNECTION * conn
#define CHECK_NCBI_DBAPI(failed, message)
std::ofstream out("events_result.xml")
main entry point for tests
@ eNoOwnership
No ownership is assumed.
EConnMode
Which connection mode.
int GetDBErrCode(void) const
virtual bool HandleIt(CDB_Exception *ex)
Handle the exceptions resulting from a native API call, one-by-one.
virtual unsigned int GetTimeout(void) const =0
Get connection timeout.
virtual CDB_Connection * MakeConnection(const CDBConnParams ¶ms)=0
Create connection object using Load Balancer / connection factory.
virtual void SetCancelTimeout(size_t nof_secs)
Set timeout for command cancellation and connection closing.
virtual bool IsAlive()
Check out if connection is alive.
virtual bool Abort()
Abort the connection.
void SetDatabaseName(const string &name)
Set database name.
virtual CDB_LangCmd * LangCmd(const string &lang_query)
Make language command.
virtual void PushMsgHandler(CDB_UserHandler *h, EOwnership ownership=eNoOwnership)
Put the message handler into message handler stack.
virtual const string & DatabaseName(void) const
Get the database name.
virtual void PopMsgHandler(CDB_UserHandler *h)
Remove the message handler (and all above it) from the stack.
virtual void SetTimeout(size_t nof_secs)
Set connection timeout.
#define NCBI_CATCH_ALL_X(err_subcode, message)
TObjectType * GetPointerOrNull(void) THROWS_NONE
Get pointer value.
bool Empty(void) const THROWS_NONE
Check if CRef is empty – not pointing to any object, which means having a null value.
@ eParam_NoThread
Do not use per-thread values.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static SIZE_TYPE Find(const CTempString str, const CTempString pattern, ECase use_case=eCase, EDirection direction=eForwardSearch, SIZE_TYPE occurrence=0)
Find the pattern in the string.
@ eNocase
Case insensitive compare.
enum ENcbiOwnership EOwnership
Ownership relations between objects.
Definition of all error codes used in dbapi libraries (dbapi_driver.lib and others).
use only n Cassandra database for the lookups</td > n</tr > n< tr > n< td > yes</td > n< td > do not use tables BIOSEQ_INFO and BLOB_PROP in the Cassandra database
constexpr bool empty(list< Ts... >) noexcept
static const char table_name[]