265 "unstable_input":
sprintf(
"if this is set to True then a slower insert/upsert method will be used that verifies each input row; if False an optimized insert/upsert method is used (additionally bulk inserts/upserts are possible) but all input hashes must have the same keys in the same order; default: %y",
OptionDefaults.unstable_input),
266 "insert_block":
sprintf(
"the row block size used when bulk DML / batch inserts/upserts are used; default: %y",
OptionDefaults.insert_block),
267 "rowcode":
"a closure or call reference taking a single hash argument representing the row values inserted/upserted plus any output values generated in inserts (such as sequence values, for example)",
268 "upsert":
"if True then data will be upserted instead of inserted",
269 "upsert_strategy":
"the upsert strategy code to use; implies 'upsert'",
274 "unstable_input":
False,
275 "insert_block": 1000,
690 deprecated
static nothing
addBatchToBatch(reference<hash> hb, reference x1,
hash batch, *reference x2);
810 error2(
string ex,
string fmt);
1193 list mapBulk(
int size);
1262 "table":
"(required) the AbstractTable object for the source of the data",
1263 "sh":
"(optional) an SqlUtil select hash",
1264 "select_block" :
sprintf(
"the row block size used when bulk DML / batch inserts are used; default: %y",
OptionDefaults.select_block),
1269 "select_block": 1000,
1276 SQLStatement m_stmt;
1318 abstract initOptions(reference<hash> opts);
1324 abstract initStatement();
1364 *
list getDataRows();
1428 static *
hash getStaticInputRecord(AbstractTable
table, *
hash select_hash, *reference<string> sql);
1437 initOptions(reference<hash> opts);
1447 AbstractDatasource m_ds;
1505 initOptions(reference<hash> opts);
auto getRuntime(string key)
string sprintf(string fmt,...)
string getTableName()
returns the table name
*hash queueData(hash rec, *hash crec)
inserts/upserts a row (or a set of rows, in case a hash of lists is passed) into the block buffer bas...
provides a hash iterator based on a InboundTableMapper object and an iterator input source; for each ...
Definition: TableMapper.qm.dox.h:878
Qore::SQL::SQLStatement stmt
statement for inserts/upserts
Definition: TableMapper.qm.dox.h:300
int commit_limit
row commit limit (<= 0 for no commits)
Definition: TableMapper.qm.dox.h:890
*list getReturning()
returns a list argument for the SqlUtil "returning" option, if applicable
Mapper::Mapper m_mapper
data mapper
Definition: TableMapper.qm.dox.h:1118
*int upsert_strategy
upsert strategy option
Definition: TableMapper.qm.dox.h:320
provides an outbound data mapper to a Table with SqlUtil select hash as a asource ...
Definition: TableMapper.qm.dox.h:1370
destructor()
throws an exception if there is data pending in the block cache
hash hbuf
buffer for bulk DML
Definition: TableMapper.qm.dox.h:306
hash validKeys()
returns a list of valid field keys for this class (can be overridden in subclasses) ...
hash optionKeys()
returns a list of valid constructor options for this class (can be overridden in subclasses) ...
static nothing addBatchToBatch(reference< hash > hb, hash batch)
checkMapField(string k, reference< hash > fh)
perform per-field pre-processing on the passed map in the constructor
provides an outbound data mapper to a raw SQL statement
Definition: TableMapper.qm.dox.h:1443
nothing rollback()
discards any queued data and rolls back the transaction
hash validTypes()
returns a list of valid field types for this class (can be overridden in subclasses) ...
hash val
a copy of the last hash value mapped
Definition: TableMapper.qm.dox.h:896
mapFieldType(string key, hash m, reference< int > v, hash rec)
performs type handling
*hash flush()
flushes any remaining batched data to the database; this method should always be called before commit...
const OptionDefaults
default option values
Definition: TableMapper.qm.dox.h:273
*hash flushIntern(bool force_flush)
bool has_returning
if the AbstractTable object supports the "returning" clause
Definition: TableMapper.qm.dox.h:288
Qore::SQL::AbstractDatasource getDatasource()
returns the AbstractDatasource object associated with this object
const OptionKeys
option keys for this object
Definition: TableMapper.qm.dox.h:264
deprecated hash insertRowNoCommit(hash rec)
Plain alias to insertRow(). Obsolete. Do not use.
setup(hash mapv, *hash opts)
SqlUtil::AbstractTable getTable()
returns the underlying SqlUtil::AbstractTable object
*int getRecListSize(hash rec)
*hash queueDataIntern(hash rec)
inserts a row into the block buffer based on a mapped input record; does not commit the transaction ...
bool upsert
upsert flag
Definition: TableMapper.qm.dox.h:317
init(hash mapv, *hash opts)
common constructor initialization
*code upsert_code
closure used for upserting
Definition: TableMapper.qm.dox.h:323
nothing commit()
flushes any queued data and commits the transaction
hash record2Batch(hash h)
SqlUtil::AbstractDatabase db
the target Database object in case sequence value need to be acquired
Definition: TableMapper.qm.dox.h:285
bool unstable_input
"unstable input" option for non-optimized inserts/upserts (~33% performance reduction in insert/upser...
Definition: TableMapper.qm.dox.h:297
maps from source to target tables with exactly the same structure
Definition: TableMapper.qm.dox.h:816
setRuntime(string key, auto value)
error(string fmt)
prepends the datasource description to the error string and calls Mapper::error() ...
the TableMapper namespace contains all the definitions in the TableMapper module
Definition: TableMapper.qm.dox.h:257
provides an abstract base for all SQL based outbound mappers
Definition: TableMapper.qm.dox.h:1256
error2(string ex, string fmt)
prepends the datasource description to the error description and calls Mapper::error2() ...
list ret_args
"returning" arguments for sequences
Definition: TableMapper.qm.dox.h:291
provides a hash iterator based on a mapper object and an SQLStatement or SqlUtil select hash ...
Definition: TableMapper.qm.dox.h:1109
provides an inbound data mapper to a Table target
Definition: TableMapper.qm.dox.h:259
discard()
discards any buffered batched data; this method should be called after using the batch APIs (queueDat...
replaceRuntime(*hash runtime)
hash insertRow(hash rec)
inserts or upserts a row into the target table based on a mapped input record; does not commit the tr...
TableMapper::InboundTableMapper mapc
data mapper
Definition: TableMapper.qm.dox.h:887
list out_args
extra arguments for sequence output binds
Definition: TableMapper.qm.dox.h:294
int insert_block
bulk DML block size (also valid for upserts despite the name)
Definition: TableMapper.qm.dox.h:303
SqlUtil::AbstractTable table
the target table object
Definition: TableMapper.qm.dox.h:282
TableMapper::InboundTableMapperIterator iterator(Qore::AbstractIterator i)
returns an iterator for the current object
logOutput(hash h)
ignore logging from Mapper since we may have to log sequence values; output logged manually in insert...
*code rowcode
per-row Closures or Call References for batch inserts/upserts
Definition: TableMapper.qm.dox.h:314
setRowCode(*code rowc)
sets a closure or call reference that will be called when data has been sent to the database and all ...