268 "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),
269 "insert_block":
sprintf(
"the row block size used when bulk DML / batch inserts/upserts are used; default: %y",
OptionDefaults.insert_block),
270 "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)",
271 "upsert":
"if True then data will be upserted instead of inserted",
272 "upsert_strategy":
"the upsert strategy code to use; implies 'upsert'",
277 "unstable_input":
False,
278 "insert_block": 1000,
693 deprecated
static nothing
addBatchToBatch(reference<hash> hb, reference x1,
hash batch, *reference x2);
813 error2(
string ex,
string fmt);
1196 list mapBulk(
int size);
1265 "table":
"(required) the AbstractTable object for the source of the data",
1266 "sh":
"(optional) an SqlUtil select hash",
1267 "select_block" :
sprintf(
"the row block size used when bulk DML / batch inserts are used; default: %y",
OptionDefaults.select_block),
1272 "select_block": 1000,
1279 SQLStatement m_stmt;
1321 abstract initOptions(reference<hash> opts);
1327 abstract initStatement();
1367 *
list getDataRows();
1431 static *
hash getStaticInputRecord(AbstractTable
table, *
hash select_hash, *reference<string> sql, *
hash input);
1440 initOptions(reference<hash> opts);
1450 AbstractDatasource m_ds;
1508 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:881
Qore::SQL::SQLStatement stmt
statement for inserts/upserts
Definition: TableMapper.qm.dox.h:303
int commit_limit
row commit limit (<= 0 for no commits)
Definition: TableMapper.qm.dox.h:893
*list getReturning()
returns a list argument for the SqlUtil "returning" option, if applicable
Mapper::Mapper m_mapper
data mapper
Definition: TableMapper.qm.dox.h:1121
*int upsert_strategy
upsert strategy option
Definition: TableMapper.qm.dox.h:323
provides an outbound data mapper to a Table with SqlUtil select hash as a asource ...
Definition: TableMapper.qm.dox.h:1373
destructor()
throws an exception if there is data pending in the block cache
hash hbuf
buffer for bulk DML
Definition: TableMapper.qm.dox.h:309
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)
provides an outbound data mapper to a raw SQL statement
Definition: TableMapper.qm.dox.h:1446
nothing rollback()
discards any queued data and rolls back the transaction
checkMapField(string k, reference< auto > fh)
perform per-field pre-processing on the passed map in the constructor
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:899
*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:276
*hash flushIntern(bool force_flush)
bool has_returning
if the AbstractTable object supports the "returning" clause
Definition: TableMapper.qm.dox.h:291
Qore::SQL::AbstractDatasource getDatasource()
returns the AbstractDatasource object associated with this object
const OptionKeys
option keys for this object
Definition: TableMapper.qm.dox.h:267
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:320
init(hash mapv, *hash opts)
common constructor initialization
*code upsert_code
closure used for upserting
Definition: TableMapper.qm.dox.h:326
nothing commit()
flushes any queued data and commits the transaction
hash record2Batch(hash h)
mapFieldType(string key, hash m, reference< auto > v, hash rec)
performs type handling
SqlUtil::AbstractDatabase db
the target Database object in case sequence value need to be acquired
Definition: TableMapper.qm.dox.h:288
bool unstable_input
"unstable input" option for non-optimized inserts/upserts (~33% performance reduction in insert/upser...
Definition: TableMapper.qm.dox.h:300
maps from source to target tables with exactly the same structure
Definition: TableMapper.qm.dox.h:819
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:260
provides an abstract base for all SQL based outbound mappers
Definition: TableMapper.qm.dox.h:1259
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:294
provides a hash iterator based on a mapper object and an SQLStatement or SqlUtil select hash ...
Definition: TableMapper.qm.dox.h:1112
provides an inbound data mapper to a Table target
Definition: TableMapper.qm.dox.h:262
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:890
list out_args
extra arguments for sequence output binds
Definition: TableMapper.qm.dox.h:297
int insert_block
bulk DML block size (also valid for upserts despite the name)
Definition: TableMapper.qm.dox.h:306
SqlUtil::AbstractTable table
the target table object
Definition: TableMapper.qm.dox.h:285
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:317
setRowCode(*code rowc)
sets a closure or call reference that will be called when data has been sent to the database and all ...