CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MultiRecordInsertOperation.cc
Go to the documentation of this file.
3 #include "RecordManip.h"
4 // externals
5 #include "CoralBase/Blob.h"
6 #include "RelationalAccess/ISchema.h"
7 #include "RelationalAccess/ITable.h"
8 #include "RelationalAccess/ITableDataEditor.h"
9 #include "RelationalAccess/IBulkOperation.h"
10 
12  const coral::AttributeList& data ):
13  m_spec(spec),m_records(),m_data( data ){
14 }
15 
17  for(std::vector<Record*>::const_iterator iR = m_records.begin();
18  iR != m_records.end(); ++iR ){
19  delete *iR;
20  }
21 }
22 
24  Record* rec = new Record(m_spec);
25  newRecordFromAttributeList(*rec, m_data );
26  m_records.push_back( rec );
27 }
28 
29 const std::vector<ora::Record*>& ora::InsertCache::records() const {
30  return m_records;
31 }
32 
34  coral::ISchema& schema ):
35  m_relationalData(),m_tableName( tableName ),m_schema( schema ),m_bulkInserts(){
36 }
37 
39  for( std::vector<InsertCache*>::iterator iB = m_bulkInserts.begin();
40  iB != m_bulkInserts.end(); ++iB ){
41  delete *iB;
42  }
43 }
44 
46  m_bulkInserts.push_back( new InsertCache( m_spec, m_relationalData.data() ) );
47  return *m_bulkInserts.back();
48 }
49 
50 int ora::MultiRecordInsertOperation::addId( const std::string& columnName ){
51  m_spec.add( columnName, typeid(int) );
52  return m_relationalData.addId( columnName );
53 }
54 
55 int ora::MultiRecordInsertOperation::addData( const std::string& columnName,
56  const std::type_info& columnType ){
57  m_spec.add( columnName, columnType );
58  return m_relationalData.addData( columnName, columnType );
59 }
60 
61 int ora::MultiRecordInsertOperation::addBlobData(const std::string& columnName){
62  m_spec.add( columnName, typeid(coral::Blob) );
63  return m_relationalData.addBlobData( columnName );
64 }
65 
66 int ora::MultiRecordInsertOperation::addWhereId( const std::string& columnName ){
67  return m_relationalData.addWhereId( columnName );
68 }
69 
70 coral::AttributeList& ora::MultiRecordInsertOperation::data(){
71  return m_relationalData.data();
72 }
73 
75  return m_relationalData.whereData();
76 }
77 
79  return m_relationalData.whereClause();
80 }
81 
82 bool
84  return false;
85 }
86 
88  for( std::vector<InsertCache*>::iterator iB = m_bulkInserts.begin();
89  iB != m_bulkInserts.end(); ++iB ){
90  coral::ITable& table = m_schema.tableHandle( m_tableName );
91  std::auto_ptr<coral::IBulkOperation> bulkExecute( table.dataEditor().bulkInsert( m_relationalData.data(), (*iB)->records().size() ) );
92  unsigned int i=0;
93  for( std::vector<Record*>::const_iterator iR = (*iB)->records().begin();
94  iR != (*iB)->records().end(); ++iR ){
95  i++;
96  newAttributeListFromRecord( m_relationalData.data(), *(*iR) );
97  bulkExecute->processNextIteration();
98  if( i== INSERTCACHESIZE ){
99  bulkExecute->flush();
100  i = 0;
101  }
102  }
103  bulkExecute->flush();
104  delete *iB;
105  }
106  m_bulkInserts.clear();
107  return true;
108 }
109 
111  for( std::vector<InsertCache*>::iterator iB = m_bulkInserts.begin();
112  iB != m_bulkInserts.end(); ++iB ){
113  delete *iB;
114  }
115  m_bulkInserts.clear();
116 }
117 
list table
Definition: asciidump.py:386
int i
Definition: DBlmapReader.cc:9
int addWhereId(const std::string &columnName)
InsertCache(const RecordSpec &m_spec, const coral::AttributeList &data)
MultiRecordInsertOperation(const std::string &tableName, coral::ISchema &schema)
int addData(const std::string &columnName, const std::type_info &columnType)
const std::vector< Record * > & records() const
#define INSERTCACHESIZE
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
int addBlobData(const std::string &columnName)
InsertCache & setUp(int rowCacheSize)
int addId(const std::string &columnName)