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 
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 
105 
108 
111 
113  *code info_log;
114 
116  int row_count = 0;
117 
119  string opname;
120 
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:
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 
346 
347 
349  int getRowCount();
350 
351 
353 protected:
354  abstract flushImpl();
355 public:
356  };
357 };
hash cval
"constant" row values; must be equal in all calls to queueData
Definition: AbstractBulkOperation.qc.dox.h:107
*code info_log
an optional info logging callback; must accept a sprintf()-style format specifier and optional argume...
Definition: AbstractBulkOperation.qc.dox.h:113
SqlUtil::AbstractTable getTable()
returns the underlying SqlUtil::AbstractTable object
Qore::SQL::AbstractDatasource getDatasource()
returns the AbstractDatasource object associated with this object
abstract flushImpl()
flushes queued data to the database
queueData(hash data)
queues row data in the block buffer; the block buffer is flushed to the DB if the buffer size reaches...
discard()
discards any buffered batched data; this method should be called before destroying the object if an e...
setupInitialRow(hash row)
sets up the block buffer given the initial template row for inserting
int row_count
row count
Definition: AbstractBulkOperation.qc.dox.h:116
const OptionKeys
option keys for this object
Definition: AbstractBulkOperation.qc.dox.h:89
Qore AbstractBulkOperation class definition.
Definition: AbstractBulkOperation.qc.dox.h:34
string getTableName()
returns the table name
flushIntern()
flushes queued data to the database
list< auto > list(...)
nothing rollback()
discards any queued data and rolls back the transaction
constructor(string name, SqlUtil::Table target, *hash opts)
creates the object from the supplied arguments
int getRowCount()
returns the affected row count
string opname
operation name
Definition: AbstractBulkOperation.qc.dox.h:119
setupInitialRowColumns(hash row)
sets up the block buffer given the initial template hash of lists for inserting
nothing commit()
flushes any queued data and commits the transaction
hash< auto > hash(object obj)
SqlUtil::AbstractTable table
the target table object
Definition: AbstractBulkOperation.qc.dox.h:98
destructor()
throws an exception if there is data pending in the internal row data cache; make sure to call flush(...
const OptionDefaults
default option values
Definition: AbstractBulkOperation.qc.dox.h:93
list cval_keys
"constant" row value keys
Definition: AbstractBulkOperation.qc.dox.h:110
flush()
flushes any remaining batched data to the database; this method should always be called before commit...
base class for bulk DML operations
Definition: AbstractBulkOperation.qc.dox.h:85
list ret_args
list of "returning" columns
Definition: AbstractBulkOperation.qc.dox.h:122
int size()
returns the current size of the cache as a number of rows
hash hbuf
buffer for bulk operations
Definition: AbstractBulkOperation.qc.dox.h:104
init(*hash opts)
common constructor initialization
softint block_size
bulk operation block size
Definition: AbstractBulkOperation.qc.dox.h:101