218 "unstable_input":
sprintf(
"if this is set to True then a slower insert method will be used that verifies each input row; if False an optimized insert method is used (additionally bulk inserts are possible) but all input hashes must have the same keys in the same order; default: %y",
OptionDefaults.unstable_input),
219 "insert_block":
sprintf(
"the row block size used when bulk DML / batch inserts are used; default: %y",
OptionDefaults.insert_block),
220 "rowcode":
"a closure or call reference taking a single hash argument representing the row values inserted plus any output values generated in the insert (such as sequence values, for example)",
225 "unstable_input":
False,
226 "insert_block": 1000,
585 private error(
string fmt);
589 private error2(
string ex,
string fmt);
890 list mapBulk(
int size);
901 "table":
"(required) the AbstractTable object for the source of the data",
902 "sh":
"(optional) an SqlUtil select hash",
903 "select_block" :
sprintf(
"the row block size used when bulk DML / batch inserts are used; default: %y",
OptionDefaults.select_block),
908 "select_block": 1000,
955 abstract private initOptions(reference opts);
958 abstract private initStatement();
1055 static *
hash getStaticInputRecord(AbstractTable
table, *
hash select_hash, *reference sql);
1062 private initOptions(reference opts);
1071 AbstractDatasource m_ds;
1120 private initStatement();
1124 private initOptions(reference opts);
string sprintf(string fmt,...)
string getTableName()
returns the table name
private init(hash mapv, *hash opts)
common constructor initialization
*hash queueData(hash rec, *hash crec)
inserts a row (or a set of rows, in case a hash of lists is passed) into the block buffer based on a ...
provides a hash iterator based on a InboundTableMapper object and an iterator input source; for each ...
Definition: TableMapper.qm.dox.h:653
int commit_limit
row commit limit (<= 0 for no commits)
Definition: TableMapper.qm.dox.h:665
private setup(hash mapv, *hash opts)
private hash flushIntern()
flushes queued data to the database
*list getReturning()
returns a list argument for the SqlUtil "returning" option, if applicable
private error2(string ex, string fmt)
prepends the datasource description to the error description and calls Mapper::error2() ...
Mapper::Mapper m_mapper
data mapper
Definition: TableMapper.qm.dox.h:825
provides an outbound data mapper to a Table with SqlUtil select hash as a asource ...
Definition: TableMapper.qm.dox.h:997
destructor()
throws an exception if there is data pending in the block cache
hash hbuf
buffer for bulk inserts
Definition: TableMapper.qm.dox.h:257
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) ...
provides an outbound data mapper to a raw SQL statement
Definition: TableMapper.qm.dox.h:1067
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:671
*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:224
private *hash queueDataIntern(hash rec)
inserts a row into the block buffer based on a mapped input record; does not commit the transaction ...
bool has_returning
if the AbstractTable object supports the "returning" clause
Definition: TableMapper.qm.dox.h:239
Qore::SQL::AbstractDatasource getDatasource()
returns the AbstractDatasource object associated with this object
const OptionKeys
option keys for this object
Definition: TableMapper.qm.dox.h:217
private checkMapField(string k, reference fh)
perform per-field pre-processing on the passed map in the constructor
deprecated hash insertRowNoCommit(hash rec)
Plain alias to insertRow(). Obsolete. Do not use.
SqlUtil::AbstractTable getTable()
returns the underlying SqlUtil::AbstractTable object
private error(string fmt)
prepends the datasource description to the error string and calls Mapper::error() ...
nothing commit()
flushes any queued data and commits the transaction
SqlUtil::AbstractDatabase db
the target Database object in case sequence value need to be acquired
Definition: TableMapper.qm.dox.h:236
bool unstable_input
"unstable input" option for non-optimized inserts (~33% performance reduction in insert speed) ...
Definition: TableMapper.qm.dox.h:248
maps from source to target tables with exactly the same structure
Definition: TableMapper.qm.dox.h:594
the TableMapper namespace contains all the definitions in the TableMapper module
Definition: TableMapper.qm.dox.h:210
provides an abstract base for all SQL based outbound mappers
Definition: TableMapper.qm.dox.h:895
list ret_args
"returning" arguments for sequences
Definition: TableMapper.qm.dox.h:242
provides a hash iterator based on a mapper object and an SQLStatement or SqlUtil select hash ...
Definition: TableMapper.qm.dox.h:816
provides an inbound data mapper to a Table target
Definition: TableMapper.qm.dox.h:212
discard()
discards any buffered batched data; this method should be called after using the batch APIs (queueDat...
hash insertRow(hash rec)
inserts a row into the target table based on a mapped input record; does not commit the transaction ...
TableMapper::InboundTableMapper mapc
data mapper
Definition: TableMapper.qm.dox.h:662
list out_args
extra arguments for sequence output binds
Definition: TableMapper.qm.dox.h:245
int insert_block
bulk insert block size
Definition: TableMapper.qm.dox.h:254
SQLStatement stmt
statement for inserts
Definition: TableMapper.qm.dox.h:251
SqlUtil::AbstractTable table
the target table object
Definition: TableMapper.qm.dox.h:233
logOutput(hash h)
ignore logging from Mapper since we may have to log sequence values; output logged manually in insert...
private mapFieldType(string key, hash m, reference v, hash rec)
performs type handling
*code rowcode
per-row Closures or Call References for batch inserts
Definition: TableMapper.qm.dox.h:260
setRowCode(*code rowc)
sets a closure or call reference that will be called when data has been sent to the database and all ...