Skip to content

Commit 2b72b9a

Browse files
morgandoakshatsikarwar
authored andcommitted
Don't run recover_ddlk_sp in unprotected mode
Signed-off-by: mdouglas47 <mdouglas47@bloomberg.net>
1 parent 1ec53ca commit 2b72b9a

1 file changed

Lines changed: 13 additions & 4 deletions

File tree

lua/sp.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

40164025
static 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

Comments
 (0)