1 #ifndef DBAPI_DRIVER___PUBLIC__HPP
2 #define DBAPI_DRIVER___PUBLIC__HPP
40 #if defined(_MSC_VER) && _MSC_VER < 1920
42 #pragma warning(disable : 4996)
100 unsigned int batch_size);
128 bool discard_results =
true);
154 void SetDatabaseName(
const string& name);
189 virtual const string&
UserName()
const;
196 virtual const string&
Password()
const;
221 unsigned int GetReuseCount()
const;
228 virtual const string&
PoolName()
const;
288 virtual bool Abort();
299 virtual bool Close(
void);
317 virtual void SetCancelTimeout(
size_t nof_secs);
331 size_t GetCancelTimeout(
void)
const;
336 virtual string GetDriverName(
void)
const;
340 return m_HasTransaction;
348 #ifndef NCBI_UNDEPRECATE__DBAPI_OLD_CONNECTION
356 #ifndef NCBI_UNDEPRECATE__DBAPI_OLD_CONNECTION
361 return RPC(rpc_name);
364 #ifndef NCBI_UNDEPRECATE__DBAPI_OLD_CONNECTION
372 #ifndef NCBI_UNDEPRECATE__DBAPI_OLD_CONNECTION
378 unsigned int batch_size)
383 void FinishOpening(
void);
401 bool x_IsAlive(
void);
421 virtual const CDBParams& GetDefineParams(
void)
const;
429 virtual unsigned int NofItems()
const;
439 virtual const char* ItemName(
unsigned int item_num)
const;
449 virtual size_t ItemMaxSize(
unsigned int item_num)
const;
459 virtual EDB_Type ItemDataType(
unsigned int item_num)
const;
467 virtual bool Fetch();
475 virtual int CurrentItemNo()
const;
482 virtual int GetColumnNum(
void)
const;
552 virtual bool SkipItem();
597 #ifndef NCBI_UNDEPRECATE__DBAPI_OLD_LANGCMD
600 virtual bool More(
const string& query_text);
604 virtual CDBParams& GetDefineParams(
void);
627 virtual bool Cancel();
634 virtual bool HasMoreResults()
const;
637 virtual bool HasFailed()
const;
642 virtual int RowCount()
const;
647 virtual void DumpResults();
679 virtual CDBParams& GetDefineParams(
void);
685 bool out_param =
false
688 GetBindParams().
Bind(name,
value, out_param);
696 bool out_param =
false
699 GetBindParams().
Set(name,
value, out_param);
710 virtual bool Cancel();
721 virtual bool HasMoreResults()
const;
724 virtual bool HasFailed()
const;
729 virtual int RowCount()
const;
734 virtual void DumpResults();
742 virtual const string& GetProcName(
void)
const;
789 void AddHint(EBCP_Hints hint,
unsigned int value = 0);
802 virtual bool SendRow();
806 virtual bool CompleteBatch();
809 virtual bool Cancel();
813 virtual bool CompleteBCP();
845 virtual CDBParams& GetDefineParams(
void);
861 virtual bool Update(
const string&
table_name,
const string& upd_query);
868 virtual bool UpdateBlob(
unsigned int item_num,
CDB_Stream& data,
893 bool discard_results =
true);
897 virtual bool Delete(
const string&
table_name);
902 virtual int RowCount()
const;
906 virtual bool Close();
938 virtual size_t SendChunk(
const void* data,
size_t size);
939 virtual bool Cancel(
void);
943 virtual bool HasMoreResults()
const;
948 virtual void DumpResults();
981 const string& column_name,
982 const string& search_conditions,
983 ETDescriptorType column_type =
eUnknown,
987 virtual int DescriptorType(
void)
const;
1002 m_ColumnType =
type;
1006 return m_HasLegacyType;
1009 m_HasLegacyType =
state;
1040 void ReleaseConn(
void);
1116 #define DBAPI_TRANSACTION(connection) \
1117 for(ncbi::CAutoTrans auto_trans(ncbi::DBAPI_MakeTrans(connection)); \
1118 auto_trans.Continue(); \
1119 auto_trans.Finish())
1127 #if defined(_MSC_VER) && _MSC_VER < 1920
1128 #pragma warning(pop)
Helper class to allow safe initialization from higher-layer objects.
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
virtual const string & ServerName(void) const =0
virtual Uint4 Host(void) const =0
virtual Uint2 Port(void) const =0
I_LangCmd:: I_RPCCmd:: I_BCPInCmd:: I_CursorCmd:: I_SendDataCmd::
ETriState
Enumeration to represent a tristate value.
@ eTriState_Unknown
The value is indeterminate.
@ eNoOwnership
No ownership is assumed.
virtual bool IsAlive(void)=0
Check out if connection is alive.
virtual const string & PoolName(void) const =0
Find out which connection pool this connection belongs to.
virtual CDBParams & Set(const CDBParamVariant ¶m, CDB_Object *value, bool out_param=false)
This method stores copy of data.
virtual CDB_SendDataCmd * SendDataCmd(I_BlobDescriptor &desc, size_t data_size, bool log_it=true, bool discard_results=true)=0
Create send-data command.
virtual CDB_CursorCmd * Cursor(const string &cursor_name, const string &query, unsigned int batch_size)=0
Cursor.
virtual CDB_RPCCmd * RPC(const string &rpc_name)=0
Remote procedure call.
virtual bool SendData(I_BlobDescriptor &desc, CDB_Stream &lob, bool log_it=true)=0
Shortcut to send text and image to the server without using the "Send-data" command (SendDataCmd)
virtual CDB_BCPInCmd * BCPIn(const string &table_name)=0
"Bulk copy in" command
virtual const string & DatabaseName(void) const =0
Get the database name.
virtual bool Close(void)=0
Close an open connection.
virtual size_t GetTimeout(void) const =0
Get connection timeout.
virtual CDB_LangCmd * LangCmd(const string &lang_query)=0
These methods: LangCmd(), RPC(), BCPIn(), Cursor() and SendDataCmd() create and return a "command" ob...
virtual I_DriverContext * Context(void) const =0
Get pointer to the driver context.
virtual bool Refresh(void)=0
Reset the connection to the "ready" state (cancel all active commands)
virtual I_DriverContext::TConnectionMode ConnectMode(void) const =0
Get the bitmask for the connection mode (BCP, secure login, ...)
virtual void SetTimeout(size_t nof_secs)=0
Set connection timeout.
virtual CDBParams & Bind(const CDBParamVariant ¶m, CDB_Object *value, bool out_param=false)
This method stores pointer to data.
virtual I_ConnectionExtra & GetExtraFeatures(void)=0
Get interface for extra features that could be implemented in the driver.
virtual void PopMsgHandler(CDB_UserHandler *h)=0
Remove the message handler (and all above it) from the stack.
virtual const string & Password(void) const =0
Get the password.
virtual CDB_ResultProcessor * SetResultProcessor(CDB_ResultProcessor *rp)=0
Set new result-processor.
virtual void PushMsgHandler(CDB_UserHandler *h, EOwnership ownership=eNoOwnership)=0
Put the message handler into message handler stack.
virtual bool IsReusable(void) const =0
Check if this connection is a reusable one.
virtual const string & UserName(void) const =0
Get the user user.
impl::CResult * GetIResultPtr(void) const
CDB_LangCmd * LangCmd(const string &lang_query, unsigned int)
CAutoTrans(const CSubject &subject)
bool SetParam(const string &name, CDB_Object *value, bool out_param=false)
const string & SearchConditions() const
void SetHasLegacyType(ETriState state)
bool SetParam(const string &name, CDB_Object *value)
CAutoTrans & operator=(const CAutoTrans &)
void SetTableName(const string &name)
ETriState m_HasLegacyType
impl::CConnection * m_ConnImpl
NCBI_DECLARE_INTERFACE_VERSION(I_DriverContext, "xdbapi", 14, 0, 0)
impl::CResult * m_ResImpl
CDB_CursorCmd * Cursor(const string &cursor_name, const string &query, unsigned int, unsigned int batch_size)
impl::CResult & GetIResult(void) const
impl::CSendDataCmd * m_CmdImpl
impl::CBaseCmd * m_CmdImpl
CAutoTrans(const CAutoTrans &)
bool BindParam(const string &name, CDB_Object *value)
ETDescriptorType m_ColumnType
CDB_ResultProcessor(const CDB_ResultProcessor &)
CDB_CursorCmd * Cursor(const string &cursor_name, const string &query)
string m_SearchConditions
CSubject(CDB_Connection &connection)
CDB_Result(const CDB_Result &)
CDB_ResultProcessor * m_Next
CDB_ResultProcessor * m_Prev
impl::CBaseCmd * m_CmdImpl
CDB_BlobDescriptor CDB_ITDescriptor
impl::CBaseCmd * m_CmdImpl
CAutoTrans::CSubject DBAPI_MakeTrans(CDB_Connection &connection)
CDB_RPCCmd(const CDB_RPCCmd &)
CDB_BCPInCmd * BCPIn(const string &table_name, unsigned int)
bool Continue(void) const
CDB_LangCmd(const CDB_LangCmd &)
ETriState GetHasLegacyType(void) const
CDB_BCPInCmd(const CDB_BCPInCmd &)
CDB_Connection(const CDB_Connection &)
ETDescriptorType GetColumnType(void) const
void SetColumnName(const string &name)
CDB_Connection & m_Connection
EBCP_Hints
Type of hint that can be set.
CDB_RPCCmd * RPC(const string &rpc_name, unsigned int)
void SetSearchConditions(const string &cond)
CDB_SendDataCmd(const CDB_CursorCmd &)
impl::CBaseCmd * m_CmdImpl
void BeginTransaction(void)
bool BindParam(const string &name, CDB_Object *value, bool out_param=false)
const string & ColumnName() const
CDB_CursorCmd(const CDB_CursorCmd &)
bool HasTransaction(void) const
void SetColumnType(ETDescriptorType type)
bool BindParam(const string &name, CDB_Object *value)
const string & TableName() const
NCBI_XNCBI_EXPORT void Abort(void)
Smart abort function.
uint32_t Uint4
4-byte (32-bit) unsigned integer
uint16_t Uint2
2-byte (16-bit) unsigned integer
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
enum ENcbiOwnership EOwnership
Ownership relations between objects.
#define NCBI_DBAPIDRIVER_EXPORT
const struct ncbi::grid::netcache::search::fields::SIZE size
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
static const char table_name[]
static pcre_uint8 * buffer
Plugin manager (using class factory paradigm).