CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
ora::MultiRecordInsertOperation Class Reference

#include <MultiRecordInsertOperation.h>

Inheritance diagram for ora::MultiRecordInsertOperation:
ora::IRelationalData ora::IRelationalOperation

Public Member Functions

int addBlobData (const std::string &columnName)
 
int addData (const std::string &columnName, const std::type_info &columnType)
 
int addId (const std::string &columnName)
 
int addWhereId (const std::string &columnName)
 
coral::AttributeList & data ()
 
bool execute ()
 
bool isRequired ()
 
 MultiRecordInsertOperation (const std::string &tableName, coral::ISchema &schema)
 
void reset ()
 
InsertCachesetUp (int rowCacheSize)
 
std::string & whereClause ()
 
coral::AttributeList & whereData ()
 
 ~MultiRecordInsertOperation ()
 
- Public Member Functions inherited from ora::IRelationalData
virtual ~IRelationalData ()
 
- Public Member Functions inherited from ora::IRelationalOperation
virtual ~IRelationalOperation ()
 

Private Attributes

std::vector< InsertCache * > m_bulkInserts
 
InputRelationalData m_relationalData
 
coral::ISchema & m_schema
 
RecordSpec m_spec
 
std::string m_tableName
 

Detailed Description

Definition at line 27 of file MultiRecordInsertOperation.h.

Constructor & Destructor Documentation

ora::MultiRecordInsertOperation::MultiRecordInsertOperation ( const std::string &  tableName,
coral::ISchema &  schema 
)
ora::MultiRecordInsertOperation::~MultiRecordInsertOperation ( )

Definition at line 38 of file MultiRecordInsertOperation.cc.

38  {
39  for( std::vector<InsertCache*>::iterator iB = m_bulkInserts.begin();
40  iB != m_bulkInserts.end(); ++iB ){
41  delete *iB;
42  }
43 }
std::vector< InsertCache * > m_bulkInserts

Member Function Documentation

int ora::MultiRecordInsertOperation::addBlobData ( const std::string &  columnName)
virtual

Implements ora::IRelationalData.

Definition at line 61 of file MultiRecordInsertOperation.cc.

61  {
62  m_spec.add( columnName, typeid(coral::Blob) );
63  return m_relationalData.addBlobData( columnName );
64 }
int addBlobData(const std::string &columnName)
size_t add(std::string const &name, std::type_info const &type)
Definition: Record.cc:37
int ora::MultiRecordInsertOperation::addData ( const std::string &  columnName,
const std::type_info &  columnType 
)
virtual

Implements ora::IRelationalData.

Definition at line 55 of file MultiRecordInsertOperation.cc.

56  {
57  m_spec.add( columnName, columnType );
58  return m_relationalData.addData( columnName, columnType );
59 }
int addData(const std::string &columnName, const std::type_info &columnType)
size_t add(std::string const &name, std::type_info const &type)
Definition: Record.cc:37
int ora::MultiRecordInsertOperation::addId ( const std::string &  columnName)
virtual

Implements ora::IRelationalData.

Definition at line 50 of file MultiRecordInsertOperation.cc.

50  {
51  m_spec.add( columnName, typeid(int) );
52  return m_relationalData.addId( columnName );
53 }
size_t add(std::string const &name, std::type_info const &type)
Definition: Record.cc:37
int addId(const std::string &columnName)
int ora::MultiRecordInsertOperation::addWhereId ( const std::string &  columnName)
virtual

Implements ora::IRelationalData.

Definition at line 66 of file MultiRecordInsertOperation.cc.

66  {
67  return m_relationalData.addWhereId( columnName );
68 }
int addWhereId(const std::string &columnName)
coral::AttributeList & ora::MultiRecordInsertOperation::data ( )
virtual

Implements ora::IRelationalData.

Definition at line 70 of file MultiRecordInsertOperation.cc.

70  {
71  return m_relationalData.data();
72 }
coral::AttributeList & data()
bool ora::MultiRecordInsertOperation::execute ( )
virtual

Implements ora::IRelationalOperation.

Definition at line 87 of file MultiRecordInsertOperation.cc.

References i, INSERTCACHESIZE, and asciidump::table.

87  {
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 }
list table
Definition: asciidump.py:386
int i
Definition: DBlmapReader.cc:9
coral::AttributeList & data()
#define INSERTCACHESIZE
std::vector< InsertCache * > m_bulkInserts
bool ora::MultiRecordInsertOperation::isRequired ( )
virtual

Implements ora::IRelationalOperation.

Definition at line 83 of file MultiRecordInsertOperation.cc.

83  {
84  return false;
85 }
void ora::MultiRecordInsertOperation::reset ( void  )
virtual

Implements ora::IRelationalOperation.

Definition at line 110 of file MultiRecordInsertOperation.cc.

Referenced by MatrixReader.MatrixReader::__init__(), and MatrixReader.MatrixReader::showRaw().

110  {
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 }
std::vector< InsertCache * > m_bulkInserts
ora::InsertCache & ora::MultiRecordInsertOperation::setUp ( int  rowCacheSize)

Definition at line 45 of file MultiRecordInsertOperation.cc.

45  {
46  m_bulkInserts.push_back( new InsertCache( m_spec, m_relationalData.data() ) );
47  return *m_bulkInserts.back();
48 }
coral::AttributeList & data()
std::vector< InsertCache * > m_bulkInserts
std::string & ora::MultiRecordInsertOperation::whereClause ( )
virtual

Implements ora::IRelationalData.

Definition at line 78 of file MultiRecordInsertOperation.cc.

78  {
80 }
coral::AttributeList & ora::MultiRecordInsertOperation::whereData ( )
virtual

Implements ora::IRelationalData.

Definition at line 74 of file MultiRecordInsertOperation.cc.

74  {
75  return m_relationalData.whereData();
76 }
coral::AttributeList & whereData()

Member Data Documentation

std::vector<InsertCache*> ora::MultiRecordInsertOperation::m_bulkInserts
private

Definition at line 51 of file MultiRecordInsertOperation.h.

InputRelationalData ora::MultiRecordInsertOperation::m_relationalData
private

Definition at line 47 of file MultiRecordInsertOperation.h.

coral::ISchema& ora::MultiRecordInsertOperation::m_schema
private

Definition at line 50 of file MultiRecordInsertOperation.h.

RecordSpec ora::MultiRecordInsertOperation::m_spec
private

Definition at line 48 of file MultiRecordInsertOperation.h.

std::string ora::MultiRecordInsertOperation::m_tableName
private

Definition at line 49 of file MultiRecordInsertOperation.h.