Qore DataProvider Module Reference 3.3.0
Loading...
Searching...
No Matches
DataProvider::AbstractDataProviderBulkOperation Class Reference

Abstract bulk data operation class. More...

#include <AbstractDataProviderBulkOperation.qc.dox.h>

Inheritance diagram for DataProvider::AbstractDataProviderBulkOperation:
[legend]

Public Member Methods

 commit ()
 Commits data written to the data provider.
 
 constructor (AbstractDataProvider provider, string opname, int block_size=DefaultBlockSize)
 Creates the object.
 
 discard ()
 Discards any buffered batched data.
 
 flush ()
 Flushes any remaining batched data to the provider.
 
int getRecordCount ()
 Returns the record count.
 
 queueData (hash< auto > recs)
 Queues data in the buffer.
 
 queueData (list< hash< auto > > recs)
 Queues data in the buffer.
 
 rollback ()
 Rolls back data written to the data provider.
 

Public Attributes

const DefaultBlockSize = 1000
 Default record block size for bulk operations.
 

Private Member Methods

abstract flushImpl ()
 flushes queued data to the database
 
 flushIntern ()
 Flushes queued data to the provider.
 
 setupInitialRecord (hash< auto > recs)
 sets up the block buffer given the initial template hash of lists for inserting
 

Private Attributes

int block_size
 Block size.
 
hash< auto > buf
 Record buffer.
 
hash< auto > cval
 "constant" record values; must be equal in all calls to queueData
 
list< string > cval_keys
 "constant" record value keys
 
string opname
 The operation name.
 
AbstractDataProvider provider
 The data provider.
 
int record_count = 0
 record count
 

Detailed Description

Abstract bulk data operation class.

Member Function Documentation

◆ commit()

DataProvider::AbstractDataProviderBulkOperation::commit ( )

Commits data written to the data provider.

Has no effect if the data provider does not support transaction management

◆ discard()

DataProvider::AbstractDataProviderBulkOperation::discard ( )

Discards any buffered batched data.

This method should be called before destroying the object if an error occurs

Example:
# single commit and rollback
on_success prov.commit();
on_error prov.rollback();
{
# each operation needs to be flushed or discarded individually
on_success {
op1.flush();
op2.flush();
}
on_error {
op1.discard();
op2.discard();
}
# data is queued and flushed automatically when the buffer is full
map op1.queueData($1), data1.iterator();
map op2.queueData($1), data2.iterator();
}
Note
  • flush() or discard() needs to be executed individually for each bulk operation object
See also

◆ flush()

DataProvider::AbstractDataProviderBulkOperation::flush ( )

Flushes any remaining batched data to the provider.

This method should always be called before committing the transaction (for data providers that support transaction management) or destroying the object

Example:
# single commit and rollback
on_success prov.commit();
on_error prov.rollback();
{
# each operation needs to be flushed or discarded individually
on_success {
op1.flush();
op2.flush();
}
on_error {
op1.discard();
op2.discard();
}
# data is queued and flushed automatically when the buffer is full
map op1.queueData($1), data1.iterator();
map op2.queueData($1), data2.iterator();
}
Note
  • flush() or discard() needs to be executed individually for each bulk operation object
See also

◆ rollback()

DataProvider::AbstractDataProviderBulkOperation::rollback ( )

Rolls back data written to the data provider.

Has no effect if the data provider does not support transaction management