Skip to content

Commit 0510c55

Browse files
committed
Set correct identity before run_statement
Signed-off-by: mohitkhullar <mkhullar1@bloomberg.net>
1 parent d40a4b0 commit 0510c55

2 files changed

Lines changed: 17 additions & 9 deletions

File tree

db/fdb_fend.c

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4293,6 +4293,15 @@ void fdb_free_tran(sqlclntstate *clnt, fdb_tran_t *tran)
42934293

42944294
extern char gbl_dbname[];
42954295

4296+
void fdb_client_set_identityBlob(sqlclntstate *clnt, cdb2_hndl_tp *hndl)
4297+
{
4298+
extern void *(*externalComdb2getAuthIdBlob)(void *ID);
4299+
if (gbl_fdb_auth_enabled && externalComdb2getAuthIdBlob &&
4300+
((clnt->authdata = get_authdata(clnt)) != NULL)) {
4301+
cdb2_setIdentityBlob(hndl, externalComdb2getAuthIdBlob(clnt->authdata));
4302+
}
4303+
}
4304+
42964305
int fdb_trans_commit(sqlclntstate *clnt, enum trans_clntcomm sideeffects)
42974306
{
42984307
fdb_distributed_tran_t *dtran = clnt->dbtran.dtran;
@@ -4340,6 +4349,7 @@ int fdb_trans_commit(sqlclntstate *clnt, enum trans_clntcomm sideeffects)
43404349
if (tran->nwrites) {
43414350
/* handle is only created upon first remote write to this fdb */
43424351
assert(tran->fcon.hndl);
4352+
fdb_client_set_identityBlob(clnt, tran->fcon.hndl);
43434353
rc = cdb2_run_statement(tran->fcon.hndl, "commit");
43444354
} else {
43454355
rc = 0;
@@ -4461,6 +4471,7 @@ int fdb_trans_rollback(sqlclntstate *clnt)
44614471
if (tran->nwrites) {
44624472
/* handle is only created upon first remote write to this fdb */
44634473
assert(tran->fcon.hndl);
4474+
fdb_client_set_identityBlob(clnt, tran->fcon.hndl);
44644475
rc = cdb2_run_statement(tran->fcon.hndl, "rollback");
44654476
} else {
44664477
rc = 0;
@@ -5748,12 +5759,7 @@ static int _fdb_client_set_options(sqlclntstate *clnt,
57485759
if (clnt->prepare_only) {
57495760
SET_STR("PREPARE_ONLY", "ON");
57505761
}
5751-
5752-
extern void *(*externalComdb2getAuthIdBlob)(void *ID);
5753-
if (gbl_fdb_auth_enabled && externalComdb2getAuthIdBlob &&
5754-
((clnt->authdata = get_authdata(clnt)) != NULL)) {
5755-
cdb2_setIdentityBlob(hndl, externalComdb2getAuthIdBlob(clnt->authdata));
5756-
}
5762+
fdb_client_set_identityBlob(clnt, hndl);
57575763

57585764
return 0;
57595765
}

db/fdb_push.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,8 @@ static int forward_extra_set_commands(cdb2_hndl_tp *hndl, int n_sets, const char
308308
return 0;
309309
}
310310

311+
void fdb_client_set_identityBlob(sqlclntstate *clnt, cdb2_hndl_tp *hndl);
312+
311313
static cdb2_hndl_tp *_hndl_open_int(sqlclntstate *clnt, const char *class,
312314
int flags, struct errstat *err,
313315
int n_sets, const char **sets)
@@ -354,9 +356,7 @@ static cdb2_hndl_tp *_hndl_open_int(sqlclntstate *clnt, const char *class,
354356
}
355357
}
356358

357-
if (gbl_fdb_auth_enabled && externalComdb2getAuthIdBlob &&
358-
((clnt->authdata = get_authdata(clnt)) != NULL))
359-
cdb2_setIdentityBlob(hndl, externalComdb2getAuthIdBlob(clnt->authdata));
359+
fdb_client_set_identityBlob(clnt, hndl);
360360

361361
return hndl;
362362
}
@@ -615,6 +615,8 @@ int handle_fdb_push_write(sqlclntstate *clnt, struct errstat *err,
615615
}
616616
hndl = tran->fcon.hndl;
617617

618+
fdb_client_set_identityBlob(clnt, hndl);
619+
618620
/* run the statement */
619621
rc = _run_statement(clnt, hndl, err);
620622
if (rc != CDB2_OK) {

0 commit comments

Comments
 (0)