![]() |
![]() |
#include <MultiRecordInsertOperation.h>
Public Member Functions | |
void | addBlobData (const std::string &columnName) |
void | addData (const std::string &columnName, const std::type_info &columnType) |
void | addId (const std::string &columnName) |
void | addWhereId (const std::string &columnName) |
coral::AttributeList & | data () |
bool | execute () |
bool | isRequired () |
MultiRecordInsertOperation (const std::string &tableName, coral::ISchema &schema) | |
void | reset () |
InsertCache & | setUp (int rowCacheSize) |
std::string & | whereClause () |
coral::AttributeList & | whereData () |
~MultiRecordInsertOperation () | |
Private Attributes | |
std::vector< InsertCache * > | m_bulkInserts |
InputRelationalData | m_relationalData |
coral::ISchema & | m_schema |
RecordSpec | m_spec |
std::string | m_tableName |
Definition at line 27 of file MultiRecordInsertOperation.h.
ora::MultiRecordInsertOperation::MultiRecordInsertOperation | ( | const std::string & | tableName, |
coral::ISchema & | schema | ||
) |
Definition at line 33 of file MultiRecordInsertOperation.cc.
: m_relationalData(),m_tableName( tableName ),m_schema( schema ),m_bulkInserts(){ }
ora::MultiRecordInsertOperation::~MultiRecordInsertOperation | ( | ) |
Definition at line 38 of file MultiRecordInsertOperation.cc.
{ for( std::vector<InsertCache*>::iterator iB = m_bulkInserts.begin(); iB != m_bulkInserts.end(); ++iB ){ delete *iB; } }
void ora::MultiRecordInsertOperation::addBlobData | ( | const std::string & | columnName | ) | [virtual] |
Implements ora::IRelationalData.
Definition at line 61 of file MultiRecordInsertOperation.cc.
{ m_relationalData.addBlobData( columnName ); m_spec.add( columnName, typeid(coral::Blob) ); }
void ora::MultiRecordInsertOperation::addData | ( | const std::string & | columnName, |
const std::type_info & | columnType | ||
) | [virtual] |
Implements ora::IRelationalData.
Definition at line 55 of file MultiRecordInsertOperation.cc.
{ m_relationalData.addData( columnName, columnType ); m_spec.add( columnName, columnType ); }
void ora::MultiRecordInsertOperation::addId | ( | const std::string & | columnName | ) | [virtual] |
Implements ora::IRelationalData.
Definition at line 50 of file MultiRecordInsertOperation.cc.
{ m_relationalData.addId( columnName ); m_spec.add( columnName, typeid(int) ); }
void ora::MultiRecordInsertOperation::addWhereId | ( | const std::string & | columnName | ) | [virtual] |
Implements ora::IRelationalData.
Definition at line 66 of file MultiRecordInsertOperation.cc.
{ m_relationalData.addWhereId( columnName ); }
coral::AttributeList & ora::MultiRecordInsertOperation::data | ( | ) | [virtual] |
Implements ora::IRelationalData.
Definition at line 70 of file MultiRecordInsertOperation.cc.
{ return m_relationalData.data(); }
bool ora::MultiRecordInsertOperation::execute | ( | ) | [virtual] |
Implements ora::IRelationalOperation.
Definition at line 87 of file MultiRecordInsertOperation.cc.
References i, INSERTCACHESIZE, and asciidump::table.
{ for( std::vector<InsertCache*>::iterator iB = m_bulkInserts.begin(); iB != m_bulkInserts.end(); ++iB ){ coral::ITable& table = m_schema.tableHandle( m_tableName ); std::auto_ptr<coral::IBulkOperation> bulkExecute( table.dataEditor().bulkInsert( m_relationalData.data(), (*iB)->records().size() ) ); unsigned int i=0; for( std::vector<Record*>::const_iterator iR = (*iB)->records().begin(); iR != (*iB)->records().end(); ++iR ){ i++; newAttributeListFromRecord( m_relationalData.data(), *(*iR) ); bulkExecute->processNextIteration(); if( i== INSERTCACHESIZE ){ bulkExecute->flush(); i = 0; } } bulkExecute->flush(); delete *iB; } m_bulkInserts.clear(); return true; }
bool ora::MultiRecordInsertOperation::isRequired | ( | ) | [virtual] |
Implements ora::IRelationalOperation.
Definition at line 83 of file MultiRecordInsertOperation.cc.
{ return false; }
void ora::MultiRecordInsertOperation::reset | ( | void | ) | [virtual] |
Implements ora::IRelationalOperation.
Definition at line 110 of file MultiRecordInsertOperation.cc.
{ for( std::vector<InsertCache*>::iterator iB = m_bulkInserts.begin(); iB != m_bulkInserts.end(); ++iB ){ delete *iB; } m_bulkInserts.clear(); }
ora::InsertCache & ora::MultiRecordInsertOperation::setUp | ( | int | rowCacheSize | ) |
Definition at line 45 of file MultiRecordInsertOperation.cc.
{ m_bulkInserts.push_back( new InsertCache( m_spec, m_relationalData.data() ) ); return *m_bulkInserts.back(); }
std::string & ora::MultiRecordInsertOperation::whereClause | ( | ) | [virtual] |
Implements ora::IRelationalData.
Definition at line 78 of file MultiRecordInsertOperation.cc.
{ return m_relationalData.whereClause(); }
coral::AttributeList & ora::MultiRecordInsertOperation::whereData | ( | ) | [virtual] |
Implements ora::IRelationalData.
Definition at line 74 of file MultiRecordInsertOperation.cc.
{ return m_relationalData.whereData(); }
std::vector<InsertCache*> ora::MultiRecordInsertOperation::m_bulkInserts [private] |
Definition at line 51 of file MultiRecordInsertOperation.h.
Definition at line 47 of file MultiRecordInsertOperation.h.
coral::ISchema& ora::MultiRecordInsertOperation::m_schema [private] |
Definition at line 50 of file MultiRecordInsertOperation.h.
Definition at line 48 of file MultiRecordInsertOperation.h.
std::string ora::MultiRecordInsertOperation::m_tableName [private] |
Definition at line 49 of file MultiRecordInsertOperation.h.