This method is similar to statement_execute but is asynchronous as it method returns immediately with a task ID.
It's up to the caller to use async_fetch_result regularly to check if the statement's execution is finished.
It is possible to call the method several times to request several statements to be executed asynchronously, the statements will be executed in the order in which they were requested.
The parameters, if present, are copied and can be discarded or modified before the statement is actually executed. The stmt
object is not copied but simply referenced (for performance reasons), and if it is modified before it is actually executed, then its
execution will not occur. It is however safe to call unref on it if it's not needed anymore.
The execution failure of any statement has no impact on the execution of other statements except for example if the connection has a transaction started and the failure invalidates the transaction (as decided by the database server).
Note that for asynchronous calls to succeed, it is gererally necessary to specify the THREAD_ISOLATED flag when opening the connection to be sure it is opened in a separate thread in which asynchronous calls are made (failing to use this flag make the asynchronous call dependant on the database provider implementation and at the moment none support this feature).
this | |
stmt |
a Statement object |
model_usage |
in the case where |
col_types |
an array of GType to request each returned DataModel's column's GType, terminated with the G_TYPE_NONE |
need_last_insert_row |
TRUE if the values of the last interted row must be computed |
params |
a Set object (which can be obtained using
get_parameters), or |
a task ID, or 0 if an error occurred (not an error regarding |