@@ -78,10 +78,13 @@ bool Connection::throwQueryError(game_state& gs, mariadb::connection_ref connect
7878 return false ; // error was not handled and we threw it
7979}
8080
81- GameDataDBAsyncResult* Connection::pushAsyncQuery (game_state& gs, mariadb::connection_ref connection, auto_array<game_value> boundValues, r_string queryString ) {
81+ GameDataDBAsyncResult* Connection::pushAsyncQuery (game_state& gs, mariadb::connection_ref connection, ref<GameDataDBQuery> query ) {
8282 auto gd_res = new GameDataDBAsyncResult ();
8383 gd_res->data = std::make_shared<GameDataDBAsyncResult::dataT>();
8484
85+ auto_array<game_value> boundValues = query->boundValues ;
86+ r_string queryString = query->getQueryString ();
87+ gd_res->data ->statementName = query->isConfigQuery ? query->queryString : r_string{};
8588
8689 // If we give them to task, it will destruct the array after task is done, and may call dealloc int he pool allocator
8790 std::vector<
@@ -209,6 +212,7 @@ class callstack_item_WaitForQueryResult : public vm_context::callstack_item {
209212 // push result onto stack.
210213 auto gd_res = new GameDataDBResult ();
211214 gd_res->res = res->data ->res ;
215+ gd_res->statementName = res->data ->statementName ;
212216 s->get_vm_context ()->scriptStack [_stackEndAtStart] = game_value (gd_res);
213217 d1 = 2 ; // done
214218 // #TODO fix this. Cannot currently because task wants invoker lock, which it won't get while we freeze the game here
@@ -268,6 +272,7 @@ game_value Connection::cmd_execute(game_state& gs, game_value_parameter con, gam
268272
269273 auto gd_res = new GameDataDBResult ();
270274 gd_res->res = res;
275+ gd_res->statementName = query->isConfigQuery ? query->queryString : r_string{};
271276 return gd_res;
272277 } catch (mariadb::exception::connection& x) {
273278 throwQueryError (gs, session, static_cast <size_t >(x.error_id ()), static_cast <r_string>(x.what ()), query->getQueryString ());
@@ -281,7 +286,7 @@ game_value Connection::cmd_execute(game_state& gs, game_value_parameter con, gam
281286
282287 auto & cs = gs.get_vm_context ()->callstack ;
283288
284- auto gd_res = pushAsyncQuery (gs, session, query-> boundValues , query-> getQueryString () );
289+ auto gd_res = pushAsyncQuery (gs, session, query);
285290
286291 auto newItem = new callstack_item_WaitForQueryResult (gd_res);
287292 newItem->_parent = cs.back ();
@@ -300,7 +305,7 @@ game_value Connection::cmd_executeAsync(game_state& gs, game_value_parameter con
300305 auto session = con.get_as <GameDataDBConnection>()->session ;
301306 auto query = qu.get_as <GameDataDBQuery>();
302307
303- auto gd_res = pushAsyncQuery (gs, session, query-> boundValues , query-> getQueryString () );
308+ auto gd_res = pushAsyncQuery (gs, session, query);
304309 Threading::get ().pushAsyncWork (gd_res);
305310 __itt_task_end (domainConnection);
306311 return gd_res;
0 commit comments