![]() |
![]() |
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