| Qore BulkSqlUtil Module Reference 1.3

AbstractBulkOperation.qc.dox.h
1 // -*- mode: c++; indent-tabs-mode: nil -*-
3
4 /* AbstractBulkOperation.qc Copyright 2015 - 2017 Qore Technologies, s.r.o.
5
6 Permission is hereby granted, free of charge, to any person obtaining a
7 copy of this software and associated documentation files (the "Software"),
8 to deal in the Software without restriction, including without limitation
9 the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 and/or sell copies of the Software, and to permit persons to whom the
11 Software is furnished to do so, subject to the following conditions:
12
13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software.
15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 DEALINGS IN THE SOFTWARE.
23 */
24
25 // minimum required Qore version
26
27 // require type definitions everywhere
28
29 // enable all warnings
30
31 // assume local scope for variables, do not use "$" signs
32
34 namespace BulkSqlUtil {
36
85 class AbstractBulkOperation {
86
87 public:
89 const OptionKeys = ...;
90
91
93 const OptionDefaults = ...;
94
95
96 protected:
98 SqlUtil::AbstractTable table;
99
101 softint block_size;
102
104 hash hbuf;
105
107 hash cval;
108
110 list cval_keys;
111
113 *code info_log;
114
116 int row_count = 0;
117
119 string opname;
120
122 list ret_args = ();
123
124 public:
125
127
133 constructor(string name, SqlUtil::Table target, *hash opts);
134
135
137
143 constructor(string name, SqlUtil::AbstractTable target, *hash opts);
144
145
147
149 destructor();
150
151
153
187 queueData(hash data);
188
189
191
225 queueData(list l);
226
227
229
233 int size();
234
235
237 protected:
238 init(*hash opts);
239 public:
240
241
243 protected:
244 setupInitialRowColumns(hash row);
245 public:
246
247
249 protected:
250 setupInitialRow(hash row);
251 public:
252
253
255
285 flush();
286
287
289 protected:
290 flushIntern();
291 public:
292
293
295
325 discard();
326
327
329 nothing commit();
330
331
333 nothing rollback();
334
335
337 string getTableName();
338
339
341 SqlUtil::AbstractTable getTable();
342
343
345 Qore::SQL::AbstractDatasource getDatasource();
346
347
349 int getRowCount();
350
351
353 protected:
354 abstract flushImpl();
355 public:
356 };
357 };
BulkSqlUtil::AbstractBulkOperation::cval
hash cval
"constant" row values; must be equal in all calls to queueData
Definition: AbstractBulkOperation.qc.dox.h:107
BulkSqlUtil::AbstractBulkOperation::info_log
*code info_log
an optional info logging callback; must accept a sprintf()-style format specifier and optional argume...
Definition: AbstractBulkOperation.qc.dox.h:113
BulkSqlUtil::AbstractBulkOperation::getTable
SqlUtil::AbstractTable getTable()
returns the underlying SqlUtil::AbstractTable object
BulkSqlUtil::AbstractBulkOperation::getDatasource
Qore::SQL::AbstractDatasource getDatasource()
returns the AbstractDatasource object associated with this object
BulkSqlUtil::AbstractBulkOperation::flushImpl
abstract flushImpl()
flushes queued data to the database
BulkSqlUtil::AbstractBulkOperation::queueData
queueData(hash data)
queues row data in the block buffer; the block buffer is flushed to the DB if the buffer size reaches...
BulkSqlUtil::AbstractBulkOperation::discard
discard()
discards any buffered batched data; this method should be called before destroying the object if an e...
BulkSqlUtil::AbstractBulkOperation::setupInitialRow
setupInitialRow(hash row)
sets up the block buffer given the initial template row for inserting
BulkSqlUtil::AbstractBulkOperation::row_count
int row_count
row count
Definition: AbstractBulkOperation.qc.dox.h:116
BulkSqlUtil::AbstractBulkOperation::OptionKeys
const OptionKeys
option keys for this object
Definition: AbstractBulkOperation.qc.dox.h:89
BulkSqlUtil
Qore AbstractBulkOperation class definition.
Definition: AbstractBulkOperation.qc.dox.h:34
Qore::SQL::AbstractDatasource
BulkSqlUtil::AbstractBulkOperation::getTableName
string getTableName()
returns the table name
BulkSqlUtil::AbstractBulkOperation::flushIntern
flushIntern()
flushes queued data to the database
list
list< auto > list(...)
BulkSqlUtil::AbstractBulkOperation::rollback
nothing rollback()
discards any queued data and rolls back the transaction
BulkSqlUtil::AbstractBulkOperation::constructor
constructor(string name, SqlUtil::Table target, *hash opts)
creates the object from the supplied arguments
BulkSqlUtil::AbstractBulkOperation::getRowCount
int getRowCount()
returns the affected row count
BulkSqlUtil::AbstractBulkOperation::opname
string opname
operation name
Definition: AbstractBulkOperation.qc.dox.h:119
BulkSqlUtil::AbstractBulkOperation::setupInitialRowColumns
setupInitialRowColumns(hash row)
sets up the block buffer given the initial template hash of lists for inserting
BulkSqlUtil::AbstractBulkOperation::commit
nothing commit()
flushes any queued data and commits the transaction
hash
hash< auto > hash(object obj)
BulkSqlUtil::AbstractBulkOperation::table
SqlUtil::AbstractTable table
the target table object
Definition: AbstractBulkOperation.qc.dox.h:98
BulkSqlUtil::AbstractBulkOperation::destructor
destructor()
throws an exception if there is data pending in the internal row data cache; make sure to call flush(...
BulkSqlUtil::AbstractBulkOperation::OptionDefaults
const OptionDefaults
default option values
Definition: AbstractBulkOperation.qc.dox.h:93
BulkSqlUtil::AbstractBulkOperation::cval_keys
list cval_keys
"constant" row value keys
Definition: AbstractBulkOperation.qc.dox.h:110
BulkSqlUtil::AbstractBulkOperation::flush
flush()
flushes any remaining batched data to the database; this method should always be called before commit...
BulkSqlUtil::AbstractBulkOperation
base class for bulk DML operations
Definition: AbstractBulkOperation.qc.dox.h:85
BulkSqlUtil::AbstractBulkOperation::ret_args
list ret_args
list of "returning" columns
Definition: AbstractBulkOperation.qc.dox.h:122
BulkSqlUtil::AbstractBulkOperation::size
int size()
returns the current size of the cache as a number of rows
BulkSqlUtil::AbstractBulkOperation::hbuf
hash hbuf
buffer for bulk operations
Definition: AbstractBulkOperation.qc.dox.h:104
BulkSqlUtil::AbstractBulkOperation::init
init(*hash opts)
common constructor initialization
BulkSqlUtil::AbstractBulkOperation::block_size
softint block_size
bulk operation block size
Definition: AbstractBulkOperation.qc.dox.h:101