CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/CondCore/ORA/src/MultiRecordSelectOperation.h

Go to the documentation of this file.
00001 #ifndef INCLUDE_ORA_MULTIRECORDSELECTOPERATION_H
00002 #define INCLUDE_ORA_MULTIRECORDSELECTOPERATION_H
00003 
00004 #include "CondCore/ORA/interface/Record.h"
00005 #include "RelationalOperation.h"
00006 #include "MultiIndexDataTrie.h"
00007 
00008 namespace ora {
00009 
00010   class MultiRecordSelectOperation : public IRelationalData {
00011     public:
00012     MultiRecordSelectOperation( const std::string& tableName, coral::ISchema& schema );
00013     ~MultiRecordSelectOperation();
00014 
00015     void addOrderId(const std::string& columnName); 
00016     void selectRow( const std::vector<int>& selection );
00017     size_t selectionSize( const std::vector<int>& selection, size_t numberOfIndexes );
00018     void clear();
00019     void execute();
00020 
00021     public:
00022     void addId(const std::string& columnName);
00023 
00024     void addData(const std::string& columnName, const std::type_info& columnType );
00025 
00026     void addBlobData(const std::string& columnName);
00027 
00028     //void addMetadata( const std::string& columnName, const std::type_info& columnType );
00029 
00030     void addWhereId( const std::string& columnName );
00031 
00032     coral::AttributeList& data();
00033     coral::AttributeList& whereData();
00034     std::string& whereClause();
00035     
00036     private:
00037     SelectOperation m_query;
00038     std::vector<std::string> m_idCols;
00039     MultiIndexDataTrie m_cache;
00040     RecordSpec m_spec;
00041     std::auto_ptr<coral::AttributeList> m_row;
00042     
00043   };
00044   
00045 }
00046 
00047 #endif