m_FetchDirection(eForward),
169m_FirstFetched(
false),
172m_MultiFetchMode(eFetchAll),
173m_LastMultiFetchSuccess(
false)
192m_FetchDirection(eForward),
193m_FirstFetched(
false),
196m_MultiFetchMode(eFetchAll),
197m_LastMultiFetchSuccess(
false)
252}
catch(exception& ) {
267 if(cond_from ==
eGT|| cond_from ==
eGE) {
268 if(cond_to ==
eGT|| cond_to ==
eGE) {
273 if(cond_from ==
eLT|| cond_from ==
eLE) {
274 if(cond_to ==
eLT|| cond_to ==
eLE) {
280 if(cond_from ==
eEQ) {
285 if(cond_from ==
eLast) {
290 BDB_THROW(eIdxSearch,
"Cursor search 'FROM' parameter must be set");
294 BDB_THROW(eIdxSearch,
"Cursor search 'TO' parameter cannot be EQ");
325 BDB_THROW(eInvalidValue,
"Attempt to use invalid cursor");
328 BDB_THROW(eInvalidOperation,
"Cannot update multi-fetch cursor");
339 BDB_THROW(eInvalidValue,
"Attempt to use invalid cursor");
342 BDB_THROW(eInvalidOperation,
"Cannot update multi-fetch cursor");
352 BDB_THROW(eInvalidOperation,
"Cannot update multi-fetch cursor");
361 BDB_THROW(eInvalidValue,
"Try to use invalid cursor");
365 if(
interr =
m_DBC->c_count(
m_DBC, &ret, 0) )
366 BDB_ERRNO_THROW(err,
"Failed to count duplicate entries for cursor");
426 switch( cond_from ) {
443 BDB_THROW(eIdxSearch,
"Invalid FROM condition type");
454 boolmultirow_only =
false;
458multirow_only =
false;
537 buf, buf_size, allow_realloc);
546 buf, buf_size, allow_realloc);
555 buf, buf_size, allow_realloc);
564 buf, buf_size, allow_realloc);
647 unsigned intflag = 0;
674 boolmultirow_only =
false;
678multirow_only =
false;
747 buf, buf_size, allow_realloc);
static unsigned int s_FDir2DBFlag(CBDB_FileCursor::EFetchDirection fdir)
Berkeley BDB file cursor.
Wrapper around Berkeley DB environment structure.
BDB Data Field Buffer manager class.
File cursor condition handle.
BDB environment object a collection including support for some or all of caching, locking,...
Internal class used by CBDB_FileCursor to represent search condition criteries.
const CBDB_FC_Condition & operator=(const CBDB_FC_Condition &)
CBDB_BufferManager m_Buf
Field buffer.
unsigned int IncFieldsAssigned()
+1 increment of number of assigned fields.
CBDB_FC_Condition(const CBDB_BufferManager &key_buf, CBDB_FileCursor &cursor)
Constructor. key_buf - key buffer of the main table.
bool IsComplete() const
Return TRUE if all search criteria fileds have been assigned.
unsigned int GetFieldsAssigned() const
Get number of fields assigned to condition.
CBDB_FileCursor & m_Cursor
Reference on parent cursor.
const CBDB_BufferManager & GetBuffer() const
Get field buffer reference (const)
IBDB_FieldConvert & GetUnassignedField()
Return next unassigned field.
CBDB_BufferManager & GetBuffer()
Get field buffer reference (non-const)
unsigned int m_FieldsAssigned
Number of fields assigned (for multi-segment) prefix searches.
const CBDB_BufferManager & m_KeyBuf
Reference on "parent file" key buffer.
void InitUnassignedFields(EIncompleteVal incv)
Set incomplete (non assigned) fields to min(max) possible values.
void ResetUnassigned()
Set number of assigned fields to zero.
CBDB_FC_Condition(const CBDB_FC_Condition &)
Berkeley DB file cursor class.
Multirow buffer for reading many rows in one call.
Reallocable memory buffer (no memory copy overhead) Mimics vector<>, without the overhead of explicit...
BDB Data Field conversion interface definition.
void x_FetchFirst_Prolog(unsigned int &flag)
IBDB_FieldConvert & GetFieldConvert(CBDB_BufferManager &buf, unsigned int n)
Return next field's IBDB_FieldConvert interface (hidden cast to non-public parent class)
CBDB_ConditionHandle & operator<<(int val)
size_t GetLastDataLen() const
Get BLOB length from last cursor read.
bool m_FirstFetched
Flag if FetchFirst is already been done.
unsigned long TRecordCount
const void * GetLastMultiFetchData() const
Get data pointer from last fetch (only when in multifetch mode)
TRecordCount KeyDupCount() const
void SetCondition(ECondition cond_from, ECondition cond_to=eNotSet)
Set search condition(type of interval)
bool TestTo() const
Test "TO" search criteria. Return "true" if current value satisfies it.
EBDB_ErrCode FetchFirst()
bool m_LastMultiFetchSuccess
when true, last multifetch was successfull
CBDB_FC_Condition & m_Condition
EBDB_ErrCode Update(CBDB_File::EAfterWrite write_flag=CBDB_File::eDiscardData)
unsigned int m_FetchFlags
Type of locking (conventional or RMW)
EBDB_ErrCode UpdateBlob(const void *data, size_t size, CBDB_File::EAfterWrite write_flag=CBDB_File::eDiscardData)
ECondition m_CondTo
To condition proxy-object.
CBDB_Transaction * GetBDBTransaction()
Get current transaction.
ECursorUpdateType
Type of locking when fetching records.
size_t GetLastMultiFetchDataLen() const
Get data length from last fetch (only when in multifetch mode)
bool IsOpen() const
TRUE when cursor open.
EBDB_ErrCode ReadCursor(DBC *dbc, unsigned int bdb_flag)
Read DB cursor.
void ReOpen(CBDB_Transaction *trans)
Reopen cursor after Close.
EMultiFetchMode
Fetch mode regulates multi-row fetches eFetchAll (default mode) when buffer ends, cursor automaticall...
CBDB_Env * GetEnv()
Get pointer on file environment Return NULL if no environment has been set.
void InitMultiFetch(size_t buffer_size, EMultiFetchMode mfm=eFetchAll)
Init multi-row fetch.
EBDB_ErrCode DeleteCursor(DBC *dbc, EIgnoreError)
Delete DB cursor.
CBDB_MultiRowBuffer * m_MultiRowBuf
Buffer class for multiple fetch.
EBDB_ErrCode WriteCursor(DBC *dbc, unsigned int bdb_flag, EAfterWrite write_flag)
Write DB cursor.
DBC * CreateCursor(CBDB_Transaction *trans=0, unsigned int flags=0) const
Create DB cursor.
void Close()
Close underlying cursor.
EReallocMode
BLOB read mode, controld data buffer reallocation when there is not enough space in buffer.
EFetchDirection m_FetchDirection
Fetch direction (forward/backward)
EMultiFetchMode m_MultiFetchMode
Multifetch control mode.
CBDB_File & m_Dbf
Reference on the "mother" file.
const void * GetLastDataPtr() const
Get data buffer pointer from last cursor read.
EBDB_ErrCode
BDB Return codes.
void ResetFirstFetched()
Set m_FirstFetched field to FALSE.
CBDB_FileCursor(CBDB_File &dbf, ECursorUpdateType utype=eReadUpdate)
EBDB_ErrCode Fetch(EFetchDirection fdir=eDefault)
Fetch record.
ECondition m_CondFrom
From condition proxy-object.
CBDB_ConditionHandle From
CBDB_ConditionHandle(CBDB_FC_Condition &cond)
unique_ptr< CBDB_BufferManager > m_KeyBuf
DBC * m_DBC
Berkeley DB DBC thing.
EBDB_ErrCode Delete(CBDB_File::EIgnoreError on_error=CBDB_File::eThrowOnError)
@ eReadModifyUpdate
Use DB_RMW (write locking) on fetch.
void SetMinVal(unsigned int idx_from, unsigned int idx_to)
Set minimum possible value to buffer fields from 'idx_from' to 'idx_to'.
virtual void SetString(const char *)
unsigned int FieldCount() const
Return number of fields attached using function Bind.
void Construct()
Create internal data buffer, assign places in this buffer to the fields.
virtual void SetStdString(const string &)
virtual void SetDouble(double)
virtual void SetFloat(float)
void DuplicateStructureFrom(const CBDB_BufferManager &buf_mgr)
Duplicate (dynamic allocation is used) all fields from 'buf_mgr' and bind them to the this buffer man...
virtual void SetUint(unsigned)
void SetMaxVal(unsigned int idx_from, unsigned int idx_to)
Set maximum possible value to buffer fields from 'idx_from' to 'idx_to'.
void DeleteFields(CBDB_BufferManager &buf)
#define BDB_ERRNO_THROW(errnum, message)
#define BDB_THROW(errcode, message)
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
const struct ncbi::grid::netcache::search::fields::SIZE size
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4