| 7305 | } |
| 7306 | |
| 7307 | void *exec_trigger(char *spname) |
| 7308 | { |
| 7309 | char sql[128]; |
| 7310 | snprintf(sql, sizeof(sql), "exec procedure %s()", spname); |
| 7311 | |
| 7312 | struct sqlclntstate clnt; |
| 7313 | start_internal_sql_clnt(&clnt); |
| 7314 | clnt.dbtran.mode = TRANLEVEL_SOSQL; |
| 7315 | clnt.sql = sql; |
| 7316 | clnt.dbtran.trans_has_sp = 1; |
| 7317 | |
| 7318 | thread_memcreate(128 * 1024); |
| 7319 | struct sqlthdstate thd = {0}; |
| 7320 | sqlengine_thd_start(NULL, &thd, THRTYPE_TRIGGER); |
| 7321 | thrman_set_subtype(thd.thr_self, THRSUBTYPE_LUA_SQL); |
| 7322 | thd.sqlthd->clnt = &clnt; |
| 7323 | clnt.thd = &thd; |
| 7324 | setup_clnt_for_sp(&clnt); |
| 7325 | |
| 7326 | get_curtran(thedb->bdb_env, &clnt); |
| 7327 | |
| 7328 | char *err = NULL; |
| 7329 | int rc = exec_procedure_int(&thd, &clnt, &err, 1); |
| 7330 | ctrace("trigger:%s rc:%d err:%s\n", spname, rc, err); |
| 7331 | ctrace("trigger:%s stopped running\n", spname); |
| 7332 | free(err); |
| 7333 | close_sp(&clnt); |
| 7334 | |
| 7335 | put_curtran(thedb->bdb_env, &clnt); |
| 7336 | |
| 7337 | end_internal_sql_clnt(&clnt); |
| 7338 | thd.sqlthd->clnt = NULL; |
| 7339 | sqlengine_thd_end(NULL, &thd); |
| 7340 | thread_memdestroy(); |
| 7341 | return NULL; |
| 7342 | } |
| 7343 | |
| 7344 | void exec_thread(struct sqlthdstate *thd, struct sqlclntstate *clnt) |
| 7345 | { |
no test coverage detected