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"
12 const coral::AttributeList&
data ):
13 m_spec(spec),m_records(),m_data( data ){
17 for(std::vector<Record*>::const_iterator iR = m_records.begin();
18 iR != m_records.end(); ++iR ){
25 newRecordFromAttributeList(*rec, m_data );
26 m_records.push_back( rec );
35 m_relationalData(),m_tableName( tableName ),m_schema( schema ),m_bulkInserts(){
39 for( std::vector<InsertCache*>::iterator iB = m_bulkInserts.begin();
40 iB != m_bulkInserts.end(); ++iB ){
46 m_bulkInserts.push_back(
new InsertCache( m_spec, m_relationalData.data() ) );
47 return *m_bulkInserts.back();
51 m_spec.add( columnName,
typeid(
int) );
52 return m_relationalData.addId( columnName );
56 const std::type_info& columnType ){
57 m_spec.add( columnName, columnType );
58 return m_relationalData.addData( columnName, columnType );
62 m_spec.add( columnName,
typeid(coral::Blob) );
63 return m_relationalData.addBlobData( columnName );
67 return m_relationalData.addWhereId( columnName );
71 return m_relationalData.data();
75 return m_relationalData.whereData();
79 return m_relationalData.whereClause();
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() ) );
93 for( std::vector<Record*>::const_iterator iR = (*iB)->records().begin();
94 iR != (*iB)->records().end(); ++iR ){
96 newAttributeListFromRecord( m_relationalData.data(), *(*iR) );
97 bulkExecute->processNextIteration();
103 bulkExecute->flush();
106 m_bulkInserts.clear();
111 for( std::vector<InsertCache*>::iterator iB = m_bulkInserts.begin();
112 iB != m_bulkInserts.end(); ++iB ){
115 m_bulkInserts.clear();
coral::AttributeList & whereData()
int addWhereId(const std::string &columnName)
coral::AttributeList & data()
InsertCache(const RecordSpec &m_spec, const coral::AttributeList &data)
void processNextIteration()
std::string & whereClause()
MultiRecordInsertOperation(const std::string &tableName, coral::ISchema &schema)
int addData(const std::string &columnName, const std::type_info &columnType)
~MultiRecordInsertOperation()
const std::vector< Record * > & records() const
char data[epos_bytes_allocation]
int addBlobData(const std::string &columnName)
InsertCache & setUp(int rowCacheSize)
int addId(const std::string &columnName)