@@ -4012,6 +4012,15 @@ static void setup_clnt_for_sp(struct sqlclntstate *clnt)
40124012 clnt -> dohsql_disable = 1 ;
40134013}
40144014
4015+ static void reset_clnt_after_sp (struct sqlclntstate * clnt ,
4016+ const int saved_dohsql_disable ,
4017+ const int saved_osql_max_trans )
4018+ {
4019+ clnt -> recover_ddlk = NULL ;
4020+ clnt -> recover_ddlk_fail = NULL ;
4021+ clnt -> dohsql_disable = saved_dohsql_disable ;
4022+ clnt -> osql_max_trans = saved_osql_max_trans ;
4023+ }
40154024
40164025static int db_udf_error (Lua L )
40174026{
@@ -7427,6 +7436,9 @@ void *exec_trigger(char *spname)
74277436 ctrace ("trigger:%s rc:%d err:%s\n" , spname , rc , err );
74287437 ctrace ("trigger:%s stopped running\n" , spname );
74297438 free (err );
7439+ reset_clnt_after_sp (& clnt ,
7440+ clnt .osql_max_trans /* don't care if changed. keep current value */ ,
7441+ clnt .dohsql_disable /* ^ */ );
74307442 close_sp (& clnt );
74317443
74327444 put_curtran (thedb -> bdb_env , & clnt );
@@ -7459,10 +7471,7 @@ int exec_procedure(struct sqlthdstate *thd, struct sqlclntstate *clnt, char **er
74597471 int dohsql_disable = clnt -> dohsql_disable ;
74607472 setup_clnt_for_sp (clnt );
74617473 int rc = exec_procedure_int (thd , clnt , err , 0 );
7462- clnt -> osql_max_trans = osql_max_trans ;
7463- clnt -> recover_ddlk = NULL ;
7464- clnt -> recover_ddlk_fail = NULL ;
7465- clnt -> dohsql_disable = dohsql_disable ;
7474+ reset_clnt_after_sp (clnt , dohsql_disable , osql_max_trans );
74667475 if (clnt -> sp ) {
74677476 reset_sp (clnt -> sp );
74687477 }
0 commit comments