TDbiResultSetAgg Class Reference

ResultAgg is a concrete sub-class of TDbiResultSet. More...

#include <TDbiResultSetAgg.hxx>

Inheritance diagram for TDbiResultSetAgg:
Inheritance graph
[legend]
Collaboration diagram for TDbiResultSetAgg:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 TDbiResultSetAgg (const string &tableName="Unknown", const TDbiTableRow *tableRow=0, TDbiCache *cache=0, const TDbiValidityRecBuilder *vrecBuilder=0, const TDbiDBProxy *proxy=0, const string &sqlQualifiers="")
virtual ~TDbiResultSetAgg ()
virtual TDbiResultKeyCreateKey () const
virtual UInt_t GetNumAggregates () const
virtual UInt_t GetNumRows () const
virtual const TDbiTableRowGetTableRow (UInt_t row) const
virtual const TDbiValidityRecGetValidityRec (const TDbiTableRow *row=0) const
virtual Bool_t Satisfies (const string &sqlQualifiers)
 Purpose: Return true if result satisfies extended context query.
virtual void Streamer (TDbiBinaryFile &bf)
virtual Bool_t CanReuse () const
virtual Bool_t CanSave () const
virtual void Connect () const
virtual void Disconnect () const
const TDbiExceptionLogGetExceptionLog () const
Int_t GetID () const
virtual const TDbiResultKeyGetKey () const
virtual UInt_t GetNumClients () const
const string & GetSqlQualifiers () const
virtual const TDbiTableRowGetTableRowByIndex (UInt_t index) const
virtual const TDbiValidityRecGetValidityRecGlobal () const
Bool_t IsExtendedContext () const
virtual Bool_t Owns (const TDbiTableRow *) const
Bool_t ResultsFromDb () const
virtual const string & TableName () const
void CaptureExceptionLog (UInt_t startFrom)
virtual Bool_t CanDelete (const TDbiResultSet *res=0)
 Return true if no clients and unlikely to be reused.
virtual Bool_t Satisfies (const TVldContext &vc, const TDbi::Task &task)
virtual Bool_t Satisfies (const TDbiValidityRec &, const string &="")
virtual void GenerateKey ()
 Key handling.
virtual void SetCanReuse (Bool_t reuse)

Protected Member Functions

void SetResultsFromDb ()
void BuildLookUpTable () const
Bool_t LookUpBuilt () const
virtual void SetTableName (const string &tableName)
virtual void SetValidityRec (const TDbiValidityRec &vRec)

Private Attributes

std::vector< const
TDbiResultSet * > 
fResults
std::vector< const TDbiTableRow * > fRowKeys
 Look-up: Row no. -> TableRow.
UInt_t fSize
 Current set size.

Detailed Description

ResultAgg is a concrete sub-class of TDbiResultSet.

Concept ResultAgg is a concrete sub-class of TDbiResultSet that represents a single database query for either:-

1) A specific context with aggregated data (i.e. rows with AggNo != -1)

or:-

2) Any extended context query, even if that only produces a single row of unaggregated data.

The table is indexed using the index returned by TDbiTableRow::GetIndex which can be overridden by concrete subclasses.

Purpose To present the user with a single logical table even though the component parts may held in multiple TDbiResultSets and be loaded by separate I/O operations.

Contact: A.Finch@lancaster.ac.uk

Definition at line 50 of file TDbiResultSetAgg.hxx.


Constructor & Destructor Documentation

TDbiResultSetAgg::TDbiResultSetAgg ( const string &  tableName = "Unknown",
const TDbiTableRow tableRow = 0,
TDbiCache cache = 0,
const TDbiValidityRecBuilder vrecBuilder = 0,
const TDbiDBProxy proxy = 0,
const string &  sqlQualifiers = "" 
)
TDbiResultSetAgg::~TDbiResultSetAgg (  )  [virtual]
   
     Purpose: Destructor
   
     Arguments:
       None.
   
     Return:    n/a
   
     Contact:   N. West
   
     Specification:-
     =============
   
     o  Destroy ResultAgg and disconnect all associated TDbiResultSets,
   

Definition at line 245 of file TDbiResultSetAgg.cxx.

References fResults, and SK_DBI_Trace.

00245                                     {
00246 
00247 
00248 //  Program Notes:-
00249 //  =============
00250 
00251 //  None.
00252 
00253 
00254   SK_DBI_Trace( "Destroying TDbiResultSetAgg."  << "  ");
00255 
00256   for ( ConstResultItr_t itr = fResults.begin();
00257         itr != fResults.end();
00258         ++itr) if ( *itr ) (*itr)->Disconnect();
00259 
00260 }


Member Function Documentation

void TDbiResultSet::BuildLookUpTable (  )  const [protected, inherited]

Definition at line 133 of file TDbiResultSet.cxx.

References TDbiResultSet::fIndexKeys, TDbiTableRow::GetAggregateNo(), TDbiTableRow::GetIndex(), TDbiResultSet::GetNumRows(), TDbiTableRow::GetOwner(), TDbiValidityRec::GetSeqNo(), TDbiResultSet::GetTableRow(), TDbiResultSet::GetTableRowByIndex(), TDbiResultSet::GetValidityRec(), TDbiResultSet::IsExtendedContext(), SK_DBI_Severe, SK_DBI_Verbose, and TDbiResultSet::TableName().

Referenced by TDbiResultSetNonAgg::GetTableRowByIndex(), and TDbiResultSetNonAgg::Streamer().

00133                                            {
00134 //
00135 //
00136 //  Purpose:  Build look-up Natural Index -> TableRow.
00137 //
00138 //  Contact:   N. West
00139 //
00140 //  Program Notes:-
00141 //  =============
00142 //
00143 //  This member function assumes that the sub-class can support
00144 //  the GetTableRow(...) and GetNumRows methods so take care if
00145 //  called in the sub-class ctor.
00146 
00147 //  Extended Context serach can produce duplicates.
00148   Bool_t duplicatesOK = this->IsExtendedContext();
00149 
00150   SK_DBI_Verbose( "Building look-uptable. Allow duplicates: "
00151                             << duplicatesOK << "  ");
00152 
00153   for ( Int_t rowNo = this->GetNumRows()-1;
00154         rowNo >= 0;
00155         --rowNo ) {
00156     const TDbiTableRow* row  = this->GetTableRow(rowNo);
00157     UInt_t index            = row->GetIndex(rowNo);
00158 //  Ensure we use this class's GetTableRowByIndex, the method is
00159 //  virtual but if the subclass has called this method then it must
00160 //  be the right one to use. [Actually TDbiResultSetAgg overrides
00161 //  GetTableRowByIndex, but only to make building lazy].
00162     const TDbiTableRow* row2 = this->TDbiResultSet::GetTableRowByIndex(index);
00163 
00164     SK_DBI_Verbose(  "Look-up. Row no " << rowNo
00165           << " index " << index
00166           << " row,row2 " << (void*) row << "," << (void*) row2 << "  ");
00167 
00168     if ( row2 != 0 && row2 != row && ! duplicatesOK ) {
00169       std::ostringstream msg;
00170       msg << "Duplicated row natural index: " << index
00171           << " Found at row " <<  rowNo
00172           << " of table " <<  this->TableName()
00173           << ":-\n     index of agg " <<  row->GetAggregateNo();
00174       if ( row->GetOwner() ) msg << "(SEQNO " << row->GetOwner()->GetValidityRec(row).GetSeqNo() << ")";
00175       msg << " matches agg " <<  row2->GetAggregateNo();
00176       if ( row2->GetOwner() ) msg << "(SEQNO " << row2->GetOwner()->GetValidityRec(row2).GetSeqNo() << ")";
00177          SK_DBI_Severe( msg.str() << "  ");
00178    }
00179 
00180     else  fIndexKeys[index] = row;
00181   }
00182 
00183 }

Here is the call graph for this function:

Here is the caller graph for this function:

Bool_t TDbiResultSet::CanDelete ( const TDbiResultSet res = 0  )  [virtual, inherited]

Return true if no clients and unlikely to be reused.

Definition at line 187 of file TDbiResultSet.cxx.

References TDbiResultSet::CanReuse(), TDbiResultSet::GetNumClients(), TDbiResultSet::GetValidityRec(), and TDbiResultSet::SetCanReuse().

Referenced by TDbiCache::Purge().

00187                                                         {
00188 //
00189 //
00190 //  Purpose:  See if suitable for deleting.
00191 //
00192 //  Arguments:
00193 //    res          in    A TDbiResultSet that is currently used.
00194 //                       Optional: default = 0.
00195 
00196 //  If the query would be satisfied apart from the date, then
00197 //  assume we have moved out of the validity window, never
00198 //  to return!
00199 
00200   if (     res
00201         && this->CanReuse()
00202         && this->GetValidityRec().HasExpired(res->GetValidityRec())
00203      )  this->SetCanReuse(kFALSE);
00204 
00205   return ! this->GetNumClients() && ! this->CanReuse();
00206 }

Here is the call graph for this function:

Here is the caller graph for this function:

virtual Bool_t TDbiResultSet::CanReuse (  )  const [inline, virtual, inherited]

Definition at line 62 of file TDbiResultSet.hxx.

References TDbiResultSet::fCanReuse.

Referenced by TDbiResultSet::CanDelete(), TDbiResultSetNonAgg::Satisfies(), Satisfies(), and TDbiResultSet::Satisfies().

00062 { return fCanReuse; }

Here is the caller graph for this function:

virtual Bool_t TDbiResultSet::CanSave (  )  const [inline, virtual, inherited]

Definition at line 63 of file TDbiResultSet.hxx.

Referenced by TDbiTableProxy::SaveToL2Cache().

00063 { return kTRUE; }

Here is the caller graph for this function:

void TDbiResultSet::CaptureExceptionLog ( UInt_t  startFrom  )  [inherited]

Definition at line 210 of file TDbiResultSet.cxx.

References TDbiExceptionLog::Clear(), TDbiExceptionLog::Copy(), TDbiResultSet::fExceptionLog, and TDbiExceptionLog::GetGELog().

Referenced by TDbiTableProxy::Query().

00210                                                         {
00211 //
00212 //
00213 //  Purpose: Capture Exception Log from latest entries in Global Exception Log.
00214 
00215   fExceptionLog.Clear();
00216   TDbiExceptionLog::GetGELog().Copy(fExceptionLog,startFrom);
00217 
00218 }

Here is the call graph for this function:

Here is the caller graph for this function:

virtual void TDbiResultSet::Connect (  )  const [inline, virtual, inherited]

Definition at line 64 of file TDbiResultSet.hxx.

References TDbiResultSet::fNumClients.

00064 { ++fNumClients; }

TDbiResultKey * TDbiResultSetAgg::CreateKey (  )  const [virtual]

Purpose: Create a key that corresponds to this result. Caller must take ownership.

Implements TDbiResultSet.

Definition at line 267 of file TDbiResultSetAgg.cxx.

References TDbiResultKey::AddVRecKey(), TDbiResultSet::CreateKey(), fResults, TDbiValidityRec::GetCreationDate(), TDbiValidityRec::GetSeqNo(), and TDbiResultSet::GetValidityRec().

00267                                                  {
00268 
00269   TDbiResultKey* key = 0;
00270   for ( ConstResultItr_t itr = fResults.begin();
00271         itr != fResults.end();
00272         ++itr ) {
00273     const TDbiResultSet* result = *itr;
00274     if ( result ) {
00275       // Create key from first result.
00276       if ( ! key ) key = result->CreateKey();
00277       // Extend key from the remainder.
00278       else {
00279         const TDbiValidityRec& vrec = result->GetValidityRec();
00280         key->AddVRecKey(vrec.GetSeqNo(),vrec.GetCreationDate());
00281       }
00282     }
00283   }
00284 
00285 // Should not have an empty set, but just in case.
00286   if ( ! key ) key = new TDbiResultKey();
00287 
00288   return key;
00289 
00290 }

Here is the call graph for this function:

virtual void TDbiResultSet::Disconnect (  )  const [inline, virtual, inherited]

Definition at line 66 of file TDbiResultSet.hxx.

References TDbiResultSet::fNumClients.

00066 { --fNumClients; }

void TDbiResultSet::GenerateKey (  )  [virtual, inherited]

Key handling.

Definition at line 222 of file TDbiResultSet.cxx.

References TDbiResultSet::CreateKey(), TDbiResultSet::fKey, and TDbiResultSet::GetNumRows().

Referenced by TDbiCache::Adopt().

00222                                 {
00223 //
00224 //
00225 //  Purpose: Create key if set not empty and not already done.
00226 
00227   if ( fKey || this->GetNumRows() == 0) return;
00228   fKey = this->CreateKey();
00229 
00230 }

Here is the call graph for this function:

Here is the caller graph for this function:

const TDbiExceptionLog& TDbiResultSet::GetExceptionLog (  )  const [inline, inherited]

Definition at line 67 of file TDbiResultSet.hxx.

References TDbiResultSet::fExceptionLog.

00067 { return fExceptionLog; }

Int_t TDbiResultSet::GetID (  )  const [inline, inherited]

Definition at line 68 of file TDbiResultSet.hxx.

References TDbiResultSet::fID.

00068 { return fID; }

const TDbiResultKey * TDbiResultSet::GetKey (  )  const [virtual, inherited]

Definition at line 234 of file TDbiResultSet.cxx.

References TDbiResultSet::fKey, and TDbiResultKey::GetEmptyKey().

Referenced by TDbiCache::Adopt().

00234                                                  {
00235 
00236 //  Purpose:  Get the associated TDbiResultKey, or an empty one if none exists.
00237 
00238   return fKey ? fKey : TDbiResultKey::GetEmptyKey();
00239 
00240 }

Here is the call graph for this function:

Here is the caller graph for this function:

virtual UInt_t TDbiResultSetAgg::GetNumAggregates (  )  const [inline, virtual]

Implements TDbiResultSet.

Definition at line 71 of file TDbiResultSetAgg.hxx.

References fResults.

00071                                                         {
00072                                           return 1 + fResults.size(); };

virtual UInt_t TDbiResultSet::GetNumClients (  )  const [inline, virtual, inherited]

Definition at line 71 of file TDbiResultSet.hxx.

References TDbiResultSet::fNumClients.

Referenced by TDbiResultSet::CanDelete(), TDbiCache::Purge(), and TDbiResultSet::Satisfies().

00071                                                      {
00072                                                    return fNumClients; }

Here is the caller graph for this function:

virtual UInt_t TDbiResultSetAgg::GetNumRows (  )  const [inline, virtual]

Implements TDbiResultSet.

Definition at line 73 of file TDbiResultSetAgg.hxx.

References fSize.

00073                                                   {
00074                                                   return fSize; }

const string& TDbiResultSet::GetSqlQualifiers (  )  const [inline, inherited]

Definition at line 74 of file TDbiResultSet.hxx.

References TDbiResultSet::fSqlQualifiers.

Referenced by TDbiResultSet::IsExtendedContext(), TDbiResultSetNonAgg::Satisfies(), and Satisfies().

00074 { return fSqlQualifiers; }

Here is the caller graph for this function:

const TDbiTableRow * TDbiResultSetAgg::GetTableRow ( UInt_t  row  )  const [virtual]
   
     Purpose:  Return TableRow from last query.
   
     Arguments:
       row         in    Required row.
   
     Return:    TableRow ptr, or =0 if no row.
   

Implements TDbiResultSet.

Definition at line 301 of file TDbiResultSetAgg.cxx.

References fRowKeys.

00301                                                                   {
00302 
00303 //  Contact:   N. West
00304 
00305 //  Program Notes:-
00306 //  =============
00307 
00308 //  None.
00309 
00310   return  ( row >= fRowKeys.size() ) ? 0 : fRowKeys[row];
00311 
00312 }

const TDbiTableRow * TDbiResultSet::GetTableRowByIndex ( UInt_t  index  )  const [virtual, inherited]

Reimplemented in TDbiResultSetNonAgg.

Definition at line 244 of file TDbiResultSet.cxx.

References TDbiResultSet::fIndexKeys.

Referenced by TDbiResultSet::BuildLookUpTable().

00244                                                                         {
00245 //
00246 //
00247 //  Purpose:  Return row corresponding to Natural Index (or 0 if none)
00248 //
00249 //  Contact:   N. West
00250 //
00251 
00252 // Use Find rather than operator[] to avoid creating entry
00253 // if index missing
00254   IndexToRow_t::const_iterator idx = fIndexKeys.find(index);
00255   return ( idx == fIndexKeys.end() ) ? 0 : (*idx).second;
00256 
00257 }

Here is the caller graph for this function:

const TDbiValidityRec & TDbiResultSetAgg::GetValidityRec ( const TDbiTableRow row = 0  )  const [virtual]
   
     Purpose:  Get TDbiValidityRec associated with table or row.
   
     Arguments:
       row          in    The table row
                          or null (default) to get table TDbiValidityRec
     Program Notes:-
     =============
   
     The TDbiValidityRec for the in-memory table is effectively an
     AND of the TDbiValidityRecs of the individual rows.
   
   

Reimplemented from TDbiResultSet.

Definition at line 329 of file TDbiResultSetAgg.cxx.

References TDbiTableRow::GetOwner(), and TDbiResultSet::GetValidityRecGlobal().

00330                                                                  {
00331 
00332 //  Contact:   N. West
00333 //
00334 
00335 
00336  if ( ! row ) return this->GetValidityRecGlobal();
00337  TDbiResultSet* owner = row->GetOwner();
00338  return owner ? owner->GetValidityRecGlobal() : this->GetValidityRecGlobal();
00339 
00340 }

Here is the call graph for this function:

virtual const TDbiValidityRec& TDbiResultSet::GetValidityRecGlobal (  )  const [inline, virtual, inherited]

Definition at line 80 of file TDbiResultSet.hxx.

References TDbiResultSet::fEffVRec.

Referenced by TDbiCache::Adopt(), GetValidityRec(), TDbiResultSet::GetValidityRec(), and Streamer().

00080                                                              {
00081                                                       return fEffVRec; }

Here is the caller graph for this function:

Bool_t TDbiResultSet::IsExtendedContext (  )  const [inline, inherited]

Definition at line 82 of file TDbiResultSet.hxx.

References TDbiResultSet::GetSqlQualifiers().

Referenced by TDbiResultSet::BuildLookUpTable(), and TDbiResultSet::Satisfies().

00082                                                          {
00083                                        return this->GetSqlQualifiers() != ""; }

Here is the call graph for this function:

Here is the caller graph for this function:

Bool_t TDbiResultSet::LookUpBuilt (  )  const [inline, protected, inherited]

Definition at line 116 of file TDbiResultSet.hxx.

References TDbiResultSet::fIndexKeys.

Referenced by TDbiResultSetNonAgg::GetTableRowByIndex().

00116 { return fIndexKeys.size() > 0; }

Here is the caller graph for this function:

virtual Bool_t TDbiResultSet::Owns ( const TDbiTableRow  )  const [inline, virtual, inherited]

Reimplemented in TDbiResultSetNonAgg.

Definition at line 84 of file TDbiResultSet.hxx.

00084 { return kFALSE; }

Bool_t TDbiResultSet::ResultsFromDb (  )  const [inline, inherited]

Definition at line 85 of file TDbiResultSet.hxx.

References TDbiResultSet::fResultsFromDb.

Referenced by TDbiTableProxy::SaveToL2Cache().

00085 { return fResultsFromDb; }

Here is the caller graph for this function:

virtual Bool_t TDbiResultSet::Satisfies ( const TDbiValidityRec ,
const string &  = "" 
) [inline, virtual, inherited]

Reimplemented in TDbiResultSetNonAgg.

Definition at line 101 of file TDbiResultSet.hxx.

00102                                                  {return kFALSE;}

Bool_t TDbiResultSet::Satisfies ( const TVldContext vc,
const TDbi::Task task 
) [virtual, inherited]

All TDbiResultSet classes can satisfy this type of primary query so impliment here.

Definition at line 261 of file TDbiResultSet.cxx.

References TDbiResultSet::CanReuse(), TDbiResultSet::GetNumClients(), TDbiResultSet::GetValidityRec(), TDbiValidityRec::HasExpired(), TDbiValidityRec::IsCompatible(), TDbiResultSet::IsExtendedContext(), TDbiResultSet::SetCanReuse(), and SK_DBI_Debug.

Referenced by TDbiCache::Search().

00262                                                   {
00263 //
00264 //
00265 //  Purpose:  Check to see if this Result satisfies specific context query.
00266 //
00267 //  Arguments:
00268 //    vc           in    Context of query
00269 //    task         in    Task of query
00270 //
00271 //  Return:    kTRUE if can satisfy query.
00272 //
00273 //  Contact:   N. West
00274 //
00275 //  Program Notes:-
00276 //  =============
00277 
00278 //  If it cannot satisfy the query in a way that suggests
00279 //  that its unlikely that it will satisfy future queries
00280 //  then mark as cannot reuse so that it becomes eligible
00281 //  for purging.
00282 
00283 // Extended Context queries cannot satisfy specific context queries.
00284 
00285   Bool_t isExtendedContext = this->IsExtendedContext();
00286   Bool_t canReuse          = this->CanReuse();
00287   Bool_t isCompatible      = this->GetValidityRec().IsCompatible(vc,task);
00288   Bool_t hasExpired        = this->GetValidityRec().HasExpired(vc,task);
00289   UInt_t numClients        = this->GetNumClients();
00290   SK_DBI_Debug(  "    Checking result with TDbiValidityRec:- \n      " << this->GetValidityRec()
00291     << "  With extended context: " << isExtendedContext
00292     << " CanReuse: " << canReuse
00293     << " Is Compatible: " << isCompatible
00294     << " HasExpired: " <<  hasExpired
00295     << " number of clients: " << numClients
00296     << "  ");
00297 
00298   if ( isExtendedContext ) return kFALSE;
00299 
00300   if ( canReuse && isCompatible )  return kTRUE;
00301 
00302 //  If the query would be satisfied apart from the date, then
00303 //  assume we have moved out of the validity window, never
00304 //  to return!
00305 
00306   if ( canReuse && hasExpired && numClients == 0 )  {
00307     SK_DBI_Debug( "    Marking result as not reusable" << "  ");
00308    this-> SetCanReuse(kFALSE);
00309   }
00310 
00311   return kFALSE;
00312 
00313 }

Here is the call graph for this function:

Here is the caller graph for this function:

Bool_t TDbiResultSetAgg::Satisfies ( const string &  sqlQualifiers  )  [virtual]

Purpose: Return true if result satisfies extended context query.

Reimplemented from TDbiResultSet.

Definition at line 343 of file TDbiResultSetAgg.cxx.

References TDbiResultSet::CanReuse(), TDbiResultSet::GetSqlQualifiers(), and SK_DBI_Debug.

00343                                                                {
00344 //
00345 //
00346 
00347 //
00348 
00349   SK_DBI_Debug(  "Trying to satisfy: SQL: " << sqlQualifiers
00350     << "\n with CanReuse: " << this->CanReuse()
00351     << " sqlQualifiers: " << this->GetSqlQualifiers()
00352     << "  ");
00353  return    this->CanReuse()
00354         && this->GetSqlQualifiers() == sqlQualifiers;
00355 }

Here is the call graph for this function:

virtual void TDbiResultSet::SetCanReuse ( Bool_t  reuse  )  [inline, virtual, inherited]

Definition at line 108 of file TDbiResultSet.hxx.

References TDbiResultSet::fCanReuse.

Referenced by TDbiResultSet::CanDelete(), TDbiTableProxy::Query(), and TDbiResultSet::Satisfies().

00108 { fCanReuse = reuse ; }

Here is the caller graph for this function:

void TDbiResultSet::SetResultsFromDb (  )  [inline, protected, inherited]

Definition at line 111 of file TDbiResultSet.hxx.

References TDbiResultSet::fResultsFromDb.

00111 { fResultsFromDb = kTRUE; }

virtual void TDbiResultSet::SetTableName ( const string &  tableName  )  [inline, protected, virtual, inherited]

Definition at line 120 of file TDbiResultSet.hxx.

References TDbiResultSet::fTableName.

00120                                                      {
00121                                                fTableName = tableName; }

virtual void TDbiResultSet::SetValidityRec ( const TDbiValidityRec vRec  )  [inline, protected, virtual, inherited]

Definition at line 122 of file TDbiResultSet.hxx.

References TDbiResultSet::fEffVRec.

00122                                                            {
00123                                                       fEffVRec = vRec; }

void TDbiResultSetAgg::Streamer ( TDbiBinaryFile bf  )  [virtual]

Purpose: I/O to binary file

Reimplemented from TDbiResultSet.

Definition at line 362 of file TDbiResultSetAgg.cxx.

References fResults, TDbiResultSet::GetValidityRecGlobal(), and TDbiValidityRec::IsGap().

00362                                                   {
00363 
00364 //  Specification:-
00365 //  =============
00366 
00367 //  Output constituent non-gap TDbiResultSetNonAgg objects.
00368 
00369   vector<const TDbiResultSet*>::const_iterator itr = fResults.begin();
00370   vector<const TDbiResultSet*>::const_iterator end = fResults.end();
00371 
00372   UInt_t numNonAgg = 0;
00373   for (; itr != end; ++itr) {
00374     const TDbiResultSetNonAgg* rna = dynamic_cast<const TDbiResultSetNonAgg*>(*itr);
00375     if ( rna && ! rna->GetValidityRecGlobal().IsGap() ) ++numNonAgg;
00376   }
00377   bf << numNonAgg;
00378 
00379 
00380   for (itr = fResults.begin(); itr != end; ++itr) {
00381     const TDbiResultSetNonAgg* rna = dynamic_cast<const TDbiResultSetNonAgg*>(*itr);
00382     if ( rna && ! rna->GetValidityRecGlobal().IsGap() ) bf << *rna;
00383   }
00384 }

Here is the call graph for this function:

virtual const string& TDbiResultSet::TableName (  )  const [inline, virtual, inherited]

Definition at line 86 of file TDbiResultSet.hxx.

References TDbiResultSet::fTableName.

Referenced by TDbiCache::Adopt(), TDbiResultSet::BuildLookUpTable(), TDbiResultSetNonAgg::CreateKey(), TDbiValRecSet::GetTableName(), and TDbiCache::Purge().

00086 { return fTableName; }

Here is the caller graph for this function:


Member Data Documentation

std::vector<const TDbiResultSet*> TDbiResultSetAgg::fResults [private]

Array of TDbiResultSets (vector<TDbiResultSet*>). The array index is NOT the aggregate number; it simply matches the rows are supplied by the TDbiValidityRecBuilder with first row of TDbiValidityRecBuilder excluded i.e. row n of builder creates a TDbiResultSet pointed to by fResults[n-1];

Definition at line 94 of file TDbiResultSetAgg.hxx.

Referenced by CreateKey(), GetNumAggregates(), Streamer(), and ~TDbiResultSetAgg().

std::vector<const TDbiTableRow*> TDbiResultSetAgg::fRowKeys [private]

Look-up: Row no. -> TableRow.

Definition at line 97 of file TDbiResultSetAgg.hxx.

Referenced by GetTableRow().

UInt_t TDbiResultSetAgg::fSize [private]

Current set size.

Definition at line 100 of file TDbiResultSetAgg.hxx.

Referenced by GetNumRows().


The documentation for this class was generated from the following files:

Generated on 11 Aug 2013 for SKDatabase by  doxygen 1.6.1